C PROGRAM IGRF13 C C As imported by Bill Rideout from http://www.ngdc.noaa.gov/IAGA/vmod/igrf13.f C on Sep 9, 2020 for use in Madrigal 3.2 release. C C $Id: igrf13.f 7349 2021-03-31 15:12:33Z brideout $ C C Bill Rideout editted out main program; commented out 2025-2030 warning C C This is a program for synthesising geomagnetic field values from the C International Geomagnetic Reference Field series of models as agreed c in December 2019 by IAGA Working Group V-MOD. C It is the 13th generation IGRF, ie the 12th revision. C The main-field models for 1900.0, 1905.0,..1940.0 and 2020.0 are C non-definitive, those for 1945.0, 1950.0,...2015.0 are definitive and C the secular-variation model for 2020.0 to 2025.0 is non-definitive. C C Main-field models are to degree and order 10 (ie 120 coefficients) C for 1900.0-1995.0 and to 13 (ie 195 coefficients) for 2000.0 onwards. C The predictive secular-variation model is to degree and order 8 (ie 80 C coefficients). C C Options include values at different locations at different C times (spot), values at same location at one year intervals C (time series), grid of values at one time (grid); geodetic or C geocentric coordinates, latitude & longitude entered as decimal C degrees or degrees & minutes (not in grid), choice of main field C or secular variation or both (grid only). C Recent history of code: c Aug 2003: c Adapted from 8th generation version to include new maximum degree for c main-field models for 2000.0 and onwards and use WGS84 spheroid instead c of International Astronomical Union 1966 spheroid as recommended by IAGA c in July 2003. Reference radius remains as 6371.2 km - it is NOT the mean c radius (= 6371.0 km) but 6371.2 km is what is used in determining the c coefficients. c Dec 2004: c Adapted for 10th generation c Jul 2005: c 1995.0 coefficients as published in igrf9coeffs.xls and igrf10coeffs.xls c now used in code - (Kimmo Korhonen spotted 1 nT difference in 11 coefficients) c Dec 2009: c Adapted for 11th generation c Dec 2014: c Adapted for 12th generation c Dec 2019 (W. Brown, BGS): c Adapted for 13th generation c Feb 2020 (W. Brown, BGS): c Correction of coefficient rounding for 2020 and 2020 SV values c C SUBROUTINE DMDDEC (I,M,X) IMPLICIT DOUBLE PRECISION (A-H,O-Z) DE = I EM = M IF (I.LT.0) EM = -EM X = DE + EM/60.0 RETURN END C SUBROUTINE DDECDM (X,I,M) IMPLICIT DOUBLE PRECISION (A-H,O-Z) SIG = SIGN(1.1D0,X) DR = ABS(X) I = INT(DR) T = I M = NINT(60.*(DR - T)) IF (M.EQ.60) THEN M = 0 I = I + 1 ENDIF ISIG = INT(SIG) IF (I.NE.0) THEN I = I * ISIG ELSE IF (M.NE.0) M = M * ISIG ENDIF RETURN END subroutine igrf13syn (isv,date,itype,alt,colat,elong,x,y,z,f) c c This is a synthesis routine for the 13th generation IGRF as agreed c in December 2019 by IAGA Working Group V-MOD. It is valid 1900.0 to c 2025.0 inclusive. Values for dates from 1945.0 to 2015.0 inclusive are c definitive, otherwise they are non-definitive. c INPUT c isv = 0 if main-field values are required c isv = 1 if secular variation values are required c date = year A.D. Must be greater than or equal to 1900.0 and c less than or equal to 2030.0. Warning message is given c for dates greater than 2025.0. Must be double precision. c itype = 1 if geodetic (spheroid) c itype = 2 if geocentric (sphere) c alt = height in km above sea level if itype = 1 c = distance from centre of Earth in km if itype = 2 (>3485 km) c colat = colatitude (0-180) c elong = east-longitude (0-360) c alt, colat and elong must be double precision. c OUTPUT c x = north component (nT) if isv = 0, nT/year if isv = 1 c y = east component (nT) if isv = 0, nT/year if isv = 1 c z = vertical component (nT) if isv = 0, nT/year if isv = 1 c f = total intensity (nT) if isv = 0, rubbish if isv = 1 c c To get the other geomagnetic elements (D, I, H and secular c variations dD, dH, dI and dF) use routines ptoc and ptocsv. c c Adapted from 8th generation version to include new maximum degree for c main-field models for 2000.0 and onwards and use WGS84 spheroid instead c of International Astronomical Union 1966 spheroid as recommended by IAGA c in July 2003. Reference radius remains as 6371.2 km - it is NOT the mean c radius (= 6371.0 km) but 6371.2 km is what is used in determining the c coefficients. Adaptation by Susan Macmillan, August 2003 (for c 9th generation), December 2004, December 2009 & December 2014; c by William Brown, December 2019, February 2020. c c Coefficients at 1995.0 incorrectly rounded (rounded up instead of c to even) included as these are the coefficients published in Excel c spreadsheet July 2005. c implicit double precision (a-h,o-z) dimension gh(3645),g0(120),g1(120),g2(120),g3(120),g4(120), 1 g5(120),g6(120),g7(120),g8(120),g9(120),ga(120), 2 gb(120),gc(120),gd(120),ge(120),gf(120),gg(120), 3 gi(120),gj(120),gk(195),gl(195),gm(195),gp(195), 4 gq(195),gr(195),gs(195), 5 p(105),q(105),cl(13),sl(13) equivalence (g0,gh(1)),(g1,gh(121)),(g2,gh(241)),(g3,gh(361)), 1 (g4,gh(481)),(g5,gh(601)),(g6,gh(721)),(g7,gh(841)), 2 (g8,gh(961)),(g9,gh(1081)),(ga,gh(1201)), 3 (gb,gh(1321)),(gc,gh(1441)),(gd,gh(1561)), 4 (ge,gh(1681)),(gf,gh(1801)),(gg,gh(1921)), 5 (gi,gh(2041)),(gj,gh(2161)),(gk,gh(2281)), 6 (gl,gh(2476)),(gm,gh(2671)),(gp,gh(2866)), 7 (gq,gh(3061)),(gr,gh(3256)),(gs,gh(3451)) c data g0/ -31543.,-2298., 5922., -677., 2905.,-1061., 924., 1121., 1900 1 1022.,-1469., -330., 1256., 3., 572., 523., 876., 1900 2 628., 195., 660., -69., -361., -210., 134., -75., 1900 3 -184., 328., -210., 264., 53., 5., -33., -86., 1900 4 -124., -16., 3., 63., 61., -9., -11., 83., 1900 5 -217., 2., -58., -35., 59., 36., -90., -69., 1900 6 70., -55., -45., 0., -13., 34., -10., -41., 1900 7 -1., -21., 28., 18., -12., 6., -22., 11., 1900 8 8., 8., -4., -14., -9., 7., 1., -13., 1900 9 2., 5., -9., 16., 5., -5., 8., -18., 1900 a 8., 10., -20., 1., 14., -11., 5., 12., 1900 b -3., 1., -2., -2., 8., 2., 10., -1., 1900 c -2., -1., 2., -3., -4., 2., 2., 1., 1900 d -5., 2., -2., 6., 6., -4., 4., 0., 1900 e 0., -2., 2., 4., 2., 0., 0., -6./ 1900 data g1/ -31464.,-2298., 5909., -728., 2928.,-1086., 1041., 1065., 1905 1 1037.,-1494., -357., 1239., 34., 635., 480., 880., 1905 2 643., 203., 653., -77., -380., -201., 146., -65., 1905 3 -192., 328., -193., 259., 56., -1., -32., -93., 1905 4 -125., -26., 11., 62., 60., -7., -11., 86., 1905 5 -221., 4., -57., -32., 57., 32., -92., -67., 1905 6 70., -54., -46., 0., -14., 33., -11., -41., 1905 7 0., -20., 28., 18., -12., 6., -22., 11., 1905 8 8., 8., -4., -15., -9., 7., 1., -13., 1905 9 2., 5., -8., 16., 5., -5., 8., -18., 1905 a 8., 10., -20., 1., 14., -11., 5., 12., 1905 b -3., 1., -2., -2., 8., 2., 10., 0., 1905 c -2., -1., 2., -3., -4., 2., 2., 1., 1905 d -5., 2., -2., 6., 6., -4., 4., 0., 1905 e 0., -2., 2., 4., 2., 0., 0., -6./ 1905 data g2/ -31354.,-2297., 5898., -769., 2948.,-1128., 1176., 1000., 1910 1 1058.,-1524., -389., 1223., 62., 705., 425., 884., 1910 2 660., 211., 644., -90., -400., -189., 160., -55., 1910 3 -201., 327., -172., 253., 57., -9., -33., -102., 1910 4 -126., -38., 21., 62., 58., -5., -11., 89., 1910 5 -224., 5., -54., -29., 54., 28., -95., -65., 1910 6 71., -54., -47., 1., -14., 32., -12., -40., 1910 7 1., -19., 28., 18., -13., 6., -22., 11., 1910 8 8., 8., -4., -15., -9., 6., 1., -13., 1910 9 2., 5., -8., 16., 5., -5., 8., -18., 1910 a 8., 10., -20., 1., 14., -11., 5., 12., 1910 b -3., 1., -2., -2., 8., 2., 10., 0., 1910 c -2., -1., 2., -3., -4., 2., 2., 1., 1910 d -5., 2., -2., 6., 6., -4., 4., 0., 1910 e 0., -2., 2., 4., 2., 0., 0., -6./ 1910 data g3/ -31212.,-2306., 5875., -802., 2956.,-1191., 1309., 917., 1915 1 1084.,-1559., -421., 1212., 84., 778., 360., 887., 1915 2 678., 218., 631., -109., -416., -173., 178., -51., 1915 3 -211., 327., -148., 245., 58., -16., -34., -111., 1915 4 -126., -51., 32., 61., 57., -2., -10., 93., 1915 5 -228., 8., -51., -26., 49., 23., -98., -62., 1915 6 72., -54., -48., 2., -14., 31., -12., -38., 1915 7 2., -18., 28., 19., -15., 6., -22., 11., 1915 8 8., 8., -4., -15., -9., 6., 2., -13., 1915 9 3., 5., -8., 16., 6., -5., 8., -18., 1915 a 8., 10., -20., 1., 14., -11., 5., 12., 1915 b -3., 1., -2., -2., 8., 2., 10., 0., 1915 c -2., -1., 2., -3., -4., 2., 2., 1., 1915 d -5., 2., -2., 6., 6., -4., 4., 0., 1915 e 0., -2., 1., 4., 2., 0., 0., -6./ 1915 data g4/ -31060.,-2317., 5845., -839., 2959.,-1259., 1407., 823., 1920 1 1111.,-1600., -445., 1205., 103., 839., 293., 889., 1920 2 695., 220., 616., -134., -424., -153., 199., -57., 1920 3 -221., 326., -122., 236., 58., -23., -38., -119., 1920 4 -125., -62., 43., 61., 55., 0., -10., 96., 1920 5 -233., 11., -46., -22., 44., 18., -101., -57., 1920 6 73., -54., -49., 2., -14., 29., -13., -37., 1920 7 4., -16., 28., 19., -16., 6., -22., 11., 1920 8 7., 8., -3., -15., -9., 6., 2., -14., 1920 9 4., 5., -7., 17., 6., -5., 8., -19., 1920 a 8., 10., -20., 1., 14., -11., 5., 12., 1920 b -3., 1., -2., -2., 9., 2., 10., 0., 1920 c -2., -1., 2., -3., -4., 2., 2., 1., 1920 d -5., 2., -2., 6., 6., -4., 4., 0., 1920 e 0., -2., 1., 4., 3., 0., 0., -6./ 1920 data g5/ -30926.,-2318., 5817., -893., 2969.,-1334., 1471., 728., 1925 1 1140.,-1645., -462., 1202., 119., 881., 229., 891., 1925 2 711., 216., 601., -163., -426., -130., 217., -70., 1925 3 -230., 326., -96., 226., 58., -28., -44., -125., 1925 4 -122., -69., 51., 61., 54., 3., -9., 99., 1925 5 -238., 14., -40., -18., 39., 13., -103., -52., 1925 6 73., -54., -50., 3., -14., 27., -14., -35., 1925 7 5., -14., 29., 19., -17., 6., -21., 11., 1925 8 7., 8., -3., -15., -9., 6., 2., -14., 1925 9 4., 5., -7., 17., 7., -5., 8., -19., 1925 a 8., 10., -20., 1., 14., -11., 5., 12., 1925 b -3., 1., -2., -2., 9., 2., 10., 0., 1925 c -2., -1., 2., -3., -4., 2., 2., 1., 1925 d -5., 2., -2., 6., 6., -4., 4., 0., 1925 e 0., -2., 1., 4., 3., 0., 0., -6./ 1925 data g6/ -30805.,-2316., 5808., -951., 2980.,-1424., 1517., 644., 1930 1 1172.,-1692., -480., 1205., 133., 907., 166., 896., 1930 2 727., 205., 584., -195., -422., -109., 234., -90., 1930 3 -237., 327., -72., 218., 60., -32., -53., -131., 1930 4 -118., -74., 58., 60., 53., 4., -9., 102., 1930 5 -242., 19., -32., -16., 32., 8., -104., -46., 1930 6 74., -54., -51., 4., -15., 25., -14., -34., 1930 7 6., -12., 29., 18., -18., 6., -20., 11., 1930 8 7., 8., -3., -15., -9., 5., 2., -14., 1930 9 5., 5., -6., 18., 8., -5., 8., -19., 1930 a 8., 10., -20., 1., 14., -12., 5., 12., 1930 b -3., 1., -2., -2., 9., 3., 10., 0., 1930 c -2., -2., 2., -3., -4., 2., 2., 1., 1930 d -5., 2., -2., 6., 6., -4., 4., 0., 1930 e 0., -2., 1., 4., 3., 0., 0., -6./ 1930 data g7/ -30715.,-2306., 5812.,-1018., 2984.,-1520., 1550., 586., 1935 1 1206.,-1740., -494., 1215., 146., 918., 101., 903., 1935 2 744., 188., 565., -226., -415., -90., 249., -114., 1935 3 -241., 329., -51., 211., 64., -33., -64., -136., 1935 4 -115., -76., 64., 59., 53., 4., -8., 104., 1935 5 -246., 25., -25., -15., 25., 4., -106., -40., 1935 6 74., -53., -52., 4., -17., 23., -14., -33., 1935 7 7., -11., 29., 18., -19., 6., -19., 11., 1935 8 7., 8., -3., -15., -9., 5., 1., -15., 1935 9 6., 5., -6., 18., 8., -5., 7., -19., 1935 a 8., 10., -20., 1., 15., -12., 5., 11., 1935 b -3., 1., -3., -2., 9., 3., 11., 0., 1935 c -2., -2., 2., -3., -4., 2., 2., 1., 1935 d -5., 2., -2., 6., 6., -4., 4., 0., 1935 e 0., -1., 2., 4., 3., 0., 0., -6./ 1935 data g8/ -30654.,-2292., 5821.,-1106., 2981.,-1614., 1566., 528., 1940 1 1240.,-1790., -499., 1232., 163., 916., 43., 914., 1940 2 762., 169., 550., -252., -405., -72., 265., -141., 1940 3 -241., 334., -33., 208., 71., -33., -75., -141., 1940 4 -113., -76., 69., 57., 54., 4., -7., 105., 1940 5 -249., 33., -18., -15., 18., 0., -107., -33., 1940 6 74., -53., -52., 4., -18., 20., -14., -31., 1940 7 7., -9., 29., 17., -20., 5., -19., 11., 1940 8 7., 8., -3., -14., -10., 5., 1., -15., 1940 9 6., 5., -5., 19., 9., -5., 7., -19., 1940 a 8., 10., -21., 1., 15., -12., 5., 11., 1940 b -3., 1., -3., -2., 9., 3., 11., 1., 1940 c -2., -2., 2., -3., -4., 2., 2., 1., 1940 d -5., 2., -2., 6., 6., -4., 4., 0., 1940 e 0., -1., 2., 4., 3., 0., 0., -6./ 1940 data g9/ -30594.,-2285., 5810.,-1244., 2990.,-1702., 1578., 477., 1945 1 1282.,-1834., -499., 1255., 186., 913., -11., 944., 1945 2 776., 144., 544., -276., -421., -55., 304., -178., 1945 3 -253., 346., -12., 194., 95., -20., -67., -142., 1945 4 -119., -82., 82., 59., 57., 6., 6., 100., 1945 5 -246., 16., -25., -9., 21., -16., -104., -39., 1945 6 70., -40., -45., 0., -18., 0., 2., -29., 1945 7 6., -10., 28., 15., -17., 29., -22., 13., 1945 8 7., 12., -8., -21., -5., -12., 9., -7., 1945 9 7., 2., -10., 18., 7., 3., 2., -11., 1945 a 5., -21., -27., 1., 17., -11., 29., 3., 1945 b -9., 16., 4., -3., 9., -4., 6., -3., 1945 c 1., -4., 8., -3., 11., 5., 1., 1., 1945 d 2., -20., -5., -1., -1., -6., 8., 6., 1945 e -1., -4., -3., -2., 5., 0., -2., -2./ 1945 data ga/ -30554.,-2250., 5815.,-1341., 2998.,-1810., 1576., 381., 1950 1 1297.,-1889., -476., 1274., 206., 896., -46., 954., 1950 2 792., 136., 528., -278., -408., -37., 303., -210., 1950 3 -240., 349., 3., 211., 103., -20., -87., -147., 1950 4 -122., -76., 80., 54., 57., -1., 4., 99., 1950 5 -247., 33., -16., -12., 12., -12., -105., -30., 1950 6 65., -55., -35., 2., -17., 1., 0., -40., 1950 7 10., -7., 36., 5., -18., 19., -16., 22., 1950 8 15., 5., -4., -22., -1., 0., 11., -21., 1950 9 15., -8., -13., 17., 5., -4., -1., -17., 1950 a 3., -7., -24., -1., 19., -25., 12., 10., 1950 b 2., 5., 2., -5., 8., -2., 8., 3., 1950 c -11., 8., -7., -8., 4., 13., -1., -2., 1950 d 13., -10., -4., 2., 4., -3., 12., 6., 1950 e 3., -3., 2., 6., 10., 11., 3., 8./ 1950 data gb/ -30500.,-2215., 5820.,-1440., 3003.,-1898., 1581., 291., 1955 1 1302.,-1944., -462., 1288., 216., 882., -83., 958., 1955 2 796., 133., 510., -274., -397., -23., 290., -230., 1955 3 -229., 360., 15., 230., 110., -23., -98., -152., 1955 4 -121., -69., 78., 47., 57., -9., 3., 96., 1955 5 -247., 48., -8., -16., 7., -12., -107., -24., 1955 6 65., -56., -50., 2., -24., 10., -4., -32., 1955 7 8., -11., 28., 9., -20., 18., -18., 11., 1955 8 9., 10., -6., -15., -14., 5., 6., -23., 1955 9 10., 3., -7., 23., 6., -4., 9., -13., 1955 a 4., 9., -11., -4., 12., -5., 7., 2., 1955 b 6., 4., -2., 1., 10., 2., 7., 2., 1955 c -6., 5., 5., -3., -5., -4., -1., 0., 1955 d 2., -8., -3., -2., 7., -4., 4., 1., 1955 e -2., -3., 6., 7., -2., -1., 0., -3./ 1955 data gc/ -30421.,-2169., 5791.,-1555., 3002.,-1967., 1590., 206., 1960 1 1302.,-1992., -414., 1289., 224., 878., -130., 957., 1960 2 800., 135., 504., -278., -394., 3., 269., -255., 1960 3 -222., 362., 16., 242., 125., -26., -117., -156., 1960 4 -114., -63., 81., 46., 58., -10., 1., 99., 1960 5 -237., 60., -1., -20., -2., -11., -113., -17., 1960 6 67., -56., -55., 5., -28., 15., -6., -32., 1960 7 7., -7., 23., 17., -18., 8., -17., 15., 1960 8 6., 11., -4., -14., -11., 7., 2., -18., 1960 9 10., 4., -5., 23., 10., 1., 8., -20., 1960 a 4., 6., -18., 0., 12., -9., 2., 1., 1960 b 0., 4., -3., -1., 9., -2., 8., 3., 1960 c 0., -1., 5., 1., -3., 4., 4., 1., 1960 d 0., 0., -1., 2., 4., -5., 6., 1., 1960 e 1., -1., -1., 6., 2., 0., 0., -7./ 1960 data gd/ -30334.,-2119., 5776.,-1662., 2997.,-2016., 1594., 114., 1965 1 1297.,-2038., -404., 1292., 240., 856., -165., 957., 1965 2 804., 148., 479., -269., -390., 13., 252., -269., 1965 3 -219., 358., 19., 254., 128., -31., -126., -157., 1965 4 -97., -62., 81., 45., 61., -11., 8., 100., 1965 5 -228., 68., 4., -32., 1., -8., -111., -7., 1965 6 75., -57., -61., 4., -27., 13., -2., -26., 1965 7 6., -6., 26., 13., -23., 1., -12., 13., 1965 8 5., 7., -4., -12., -14., 9., 0., -16., 1965 9 8., 4., -1., 24., 11., -3., 4., -17., 1965 a 8., 10., -22., 2., 15., -13., 7., 10., 1965 b -4., -1., -5., -1., 10., 5., 10., 1., 1965 c -4., -2., 1., -2., -3., 2., 2., 1., 1965 d -5., 2., -2., 6., 4., -4., 4., 0., 1965 e 0., -2., 2., 3., 2., 0., 0., -6./ 1965 data ge/ -30220.,-2068., 5737.,-1781., 3000.,-2047., 1611., 25., 1970 1 1287.,-2091., -366., 1278., 251., 838., -196., 952., 1970 2 800., 167., 461., -266., -395., 26., 234., -279., 1970 3 -216., 359., 26., 262., 139., -42., -139., -160., 1970 4 -91., -56., 83., 43., 64., -12., 15., 100., 1970 5 -212., 72., 2., -37., 3., -6., -112., 1., 1970 6 72., -57., -70., 1., -27., 14., -4., -22., 1970 7 8., -2., 23., 13., -23., -2., -11., 14., 1970 8 6., 7., -2., -15., -13., 6., -3., -17., 1970 9 5., 6., 0., 21., 11., -6., 3., -16., 1970 a 8., 10., -21., 2., 16., -12., 6., 10., 1970 b -4., -1., -5., 0., 10., 3., 11., 1., 1970 c -2., -1., 1., -3., -3., 1., 2., 1., 1970 d -5., 3., -1., 4., 6., -4., 4., 0., 1970 e 1., -1., 0., 3., 3., 1., -1., -4./ 1970 data gf/ -30100.,-2013., 5675.,-1902., 3010.,-2067., 1632., -68., 1975 1 1276.,-2144., -333., 1260., 262., 830., -223., 946., 1975 2 791., 191., 438., -265., -405., 39., 216., -288., 1975 3 -218., 356., 31., 264., 148., -59., -152., -159., 1975 4 -83., -49., 88., 45., 66., -13., 28., 99., 1975 5 -198., 75., 1., -41., 6., -4., -111., 11., 1975 6 71., -56., -77., 1., -26., 16., -5., -14., 1975 7 10., 0., 22., 12., -23., -5., -12., 14., 1975 8 6., 6., -1., -16., -12., 4., -8., -19., 1975 9 4., 6., 0., 18., 10., -10., 1., -17., 1975 a 7., 10., -21., 2., 16., -12., 7., 10., 1975 b -4., -1., -5., -1., 10., 4., 11., 1., 1975 c -3., -2., 1., -3., -3., 1., 2., 1., 1975 d -5., 3., -2., 4., 5., -4., 4., -1., 1975 e 1., -1., 0., 3., 3., 1., -1., -5./ 1975 data gg/ -29992.,-1956., 5604.,-1997., 3027.,-2129., 1663., -200., 1980 1 1281.,-2180., -336., 1251., 271., 833., -252., 938., 1980 2 782., 212., 398., -257., -419., 53., 199., -297., 1980 3 -218., 357., 46., 261., 150., -74., -151., -162., 1980 4 -78., -48., 92., 48., 66., -15., 42., 93., 1980 5 -192., 71., 4., -43., 14., -2., -108., 17., 1980 6 72., -59., -82., 2., -27., 21., -5., -12., 1980 7 16., 1., 18., 11., -23., -2., -10., 18., 1980 8 6., 7., 0., -18., -11., 4., -7., -22., 1980 9 4., 9., 3., 16., 6., -13., -1., -15., 1980 a 5., 10., -21., 1., 16., -12., 9., 9., 1980 b -5., -3., -6., -1., 9., 7., 10., 2., 1980 c -6., -5., 2., -4., -4., 1., 2., 0., 1980 d -5., 3., -2., 6., 5., -4., 3., 0., 1980 e 1., -1., 2., 4., 3., 0., 0., -6./ 1980 data gi/ -29873.,-1905., 5500.,-2072., 3044.,-2197., 1687., -306., 1985 1 1296.,-2208., -310., 1247., 284., 829., -297., 936., 1985 2 780., 232., 361., -249., -424., 69., 170., -297., 1985 3 -214., 355., 47., 253., 150., -93., -154., -164., 1985 4 -75., -46., 95., 53., 65., -16., 51., 88., 1985 5 -185., 69., 4., -48., 16., -1., -102., 21., 1985 6 74., -62., -83., 3., -27., 24., -2., -6., 1985 7 20., 4., 17., 10., -23., 0., -7., 21., 1985 8 6., 8., 0., -19., -11., 5., -9., -23., 1985 9 4., 11., 4., 14., 4., -15., -4., -11., 1985 a 5., 10., -21., 1., 15., -12., 9., 9., 1985 b -6., -3., -6., -1., 9., 7., 9., 1., 1985 c -7., -5., 2., -4., -4., 1., 3., 0., 1985 d -5., 3., -2., 6., 5., -4., 3., 0., 1985 e 1., -1., 2., 4., 3., 0., 0., -6./ 1985 data gj/ -29775.,-1848., 5406.,-2131., 3059.,-2279., 1686., -373., 1990 1 1314.,-2239., -284., 1248., 293., 802., -352., 939., 1990 2 780., 247., 325., -240., -423., 84., 141., -299., 1990 3 -214., 353., 46., 245., 154., -109., -153., -165., 1990 4 -69., -36., 97., 61., 65., -16., 59., 82., 1990 5 -178., 69., 3., -52., 18., 1., -96., 24., 1990 6 77., -64., -80., 2., -26., 26., 0., -1., 1990 7 21., 5., 17., 9., -23., 0., -4., 23., 1990 8 5., 10., -1., -19., -10., 6., -12., -22., 1990 9 3., 12., 4., 12., 2., -16., -6., -10., 1990 a 4., 9., -20., 1., 15., -12., 11., 9., 1990 b -7., -4., -7., -2., 9., 7., 8., 1., 1990 c -7., -6., 2., -3., -4., 2., 2., 1., 1990 d -5., 3., -2., 6., 4., -4., 3., 0., 1990 e 1., -2., 3., 3., 3., -1., 0., -6./ 1990 data gk/ -29692.,-1784., 5306.,-2200., 3070.,-2366., 1681., -413., 1995 1 1335.,-2267., -262., 1249., 302., 759., -427., 940., 1995 2 780., 262., 290., -236., -418., 97., 122., -306., 1995 3 -214., 352., 46., 235., 165., -118., -143., -166., 1995 4 -55., -17., 107., 68., 67., -17., 68., 72., 1995 5 -170., 67., -1., -58., 19., 1., -93., 36., 1995 6 77., -72., -69., 1., -25., 28., 4., 5., 1995 7 24., 4., 17., 8., -24., -2., -6., 25., 1995 8 6., 11., -6., -21., -9., 8., -14., -23., 1995 9 9., 15., 6., 11., -5., -16., -7., -4., 1995 a 4., 9., -20., 3., 15., -10., 12., 8., 1995 b -6., -8., -8., -1., 8., 10., 5., -2., 1995 c -8., -8., 3., -3., -6., 1., 2., 0., 1995 d -4., 4., -1., 5., 4., -5., 2., -1., 1995 e 2., -2., 5., 1., 1., -2., 0., -7., 1995 f 75*0./ 1995 data gl/ -29619.4,-1728.2, 5186.1,-2267.7, 3068.4,-2481.6, 1670.9, 2000 1 -458.0, 1339.6,-2288.0, -227.6, 1252.1, 293.4, 714.5, 2000 2 -491.1, 932.3, 786.8, 272.6, 250.0, -231.9, -403.0, 2000 3 119.8, 111.3, -303.8, -218.8, 351.4, 43.8, 222.3, 2000 4 171.9, -130.4, -133.1, -168.6, -39.3, -12.9, 106.3, 2000 5 72.3, 68.2, -17.4, 74.2, 63.7, -160.9, 65.1, 2000 6 -5.9, -61.2, 16.9, 0.7, -90.4, 43.8, 79.0, 2000 7 -74.0, -64.6, 0.0, -24.2, 33.3, 6.2, 9.1, 2000 8 24.0, 6.9, 14.8, 7.3, -25.4, -1.2, -5.8, 2000 9 24.4, 6.6, 11.9, -9.2, -21.5, -7.9, 8.5, 2000 a -16.6, -21.5, 9.1, 15.5, 7.0, 8.9, -7.9, 2000 b -14.9, -7.0, -2.1, 5.0, 9.4, -19.7, 3.0, 2000 c 13.4, -8.4, 12.5, 6.3, -6.2, -8.9, -8.4, 2000 d -1.5, 8.4, 9.3, 3.8, -4.3, -8.2, -8.2, 2000 e 4.8, -2.6, -6.0, 1.7, 1.7, 0.0, -3.1, 2000 f 4.0, -0.5, 4.9, 3.7, -5.9, 1.0, -1.2, 2000 g 2.0, -2.9, 4.2, 0.2, 0.3, -2.2, -1.1, 2000 h -7.4, 2.7, -1.7, 0.1, -1.9, 1.3, 1.5, 2000 i -0.9, -0.1, -2.6, 0.1, 0.9, -0.7, -0.7, 2000 j 0.7, -2.8, 1.7, -0.9, 0.1, -1.2, 1.2, 2000 k -1.9, 4.0, -0.9, -2.2, -0.3, -0.4, 0.2, 2000 l 0.3, 0.9, 2.5, -0.2, -2.6, 0.9, 0.7, 2000 m -0.5, 0.3, 0.3, 0.0, -0.3, 0.0, -0.4, 2000 n 0.3, -0.1, -0.9, -0.2, -0.4, -0.4, 0.8, 2000 o -0.2, -0.9, -0.9, 0.3, 0.2, 0.1, 1.8, 2000 p -0.4, -0.4, 1.3, -1.0, -0.4, -0.1, 0.7, 2000 q 0.7, -0.4, 0.3, 0.3, 0.6, -0.1, 0.3, 2000 r 0.4, -0.2, 0.0, -0.5, 0.1, -0.9/ 2000 data gm/-29554.63,-1669.05, 5077.99,-2337.24, 3047.69,-2594.50, 2005 1 1657.76, -515.43, 1336.30,-2305.83, -198.86, 1246.39, 2005 2 269.72, 672.51, -524.72, 920.55, 797.96, 282.07, 2005 3 210.65, -225.23, -379.86, 145.15, 100.00, -305.36, 2005 4 -227.00, 354.41, 42.72, 208.95, 180.25, -136.54, 2005 5 -123.45, -168.05, -19.57, -13.55, 103.85, 73.60, 2005 6 69.56, -20.33, 76.74, 54.75, -151.34, 63.63, 2005 7 -14.58, -63.53, 14.58, 0.24, -86.36, 50.94, 2005 8 79.88, -74.46, -61.14, -1.65, -22.57, 38.73, 2005 9 6.82, 12.30, 25.35, 9.37, 10.93, 5.42, 2005 a -26.32, 1.94, -4.64, 24.80, 7.62, 11.20, 2005 b -11.73, -20.88, -6.88, 9.83, -18.11, -19.71, 2005 c 10.17, 16.22, 9.36, 7.61, -11.25, -12.76, 2005 d -4.87, -0.06, 5.58, 9.76, -20.11, 3.58, 2005 e 12.69, -6.94, 12.67, 5.01, -6.72, -10.76, 2005 f -8.16, -1.25, 8.10, 8.76, 2.92, -6.66, 2005 g -7.73, -9.22, 6.01, -2.17, -6.12, 2.19, 2005 h 1.42, 0.10, -2.35, 4.46, -0.15, 4.76, 2005 i 3.06, -6.58, 0.29, -1.01, 2.06, -3.47, 2005 j 3.77, -0.86, -0.21, -2.31, -2.09, -7.93, 2005 k 2.95, -1.60, 0.26, -1.88, 1.44, 1.44, 2005 l -0.77, -0.31, -2.27, 0.29, 0.90, -0.79, 2005 m -0.58, 0.53, -2.69, 1.80, -1.08, 0.16, 2005 n -1.58, 0.96, -1.90, 3.99, -1.39, -2.15, 2005 o -0.29, -0.55, 0.21, 0.23, 0.89, 2.38, 2005 p -0.38, -2.63, 0.96, 0.61, -0.30, 0.40, 2005 q 0.46, 0.01, -0.35, 0.02, -0.36, 0.28, 2005 r 0.08, -0.87, -0.49, -0.34, -0.08, 0.88, 2005 s -0.16, -0.88, -0.76, 0.30, 0.33, 0.28, 2005 t 1.72, -0.43, -0.54, 1.18, -1.07, -0.37, 2005 u -0.04, 0.75, 0.63, -0.26, 0.21, 0.35, 2005 v 0.53, -0.05, 0.38, 0.41, -0.22, -0.10, 2005 w -0.57, -0.18, -0.82/ 2005 data gp/-29496.57,-1586.42, 4944.26,-2396.06, 3026.34,-2708.54, 2010 1 1668.17, -575.73, 1339.85,-2326.54, -160.40, 1232.10, 2010 2 251.75, 633.73, -537.03, 912.66, 808.97, 286.48, 2010 3 166.58, -211.03, -356.83, 164.46, 89.40, -309.72, 2010 4 -230.87, 357.29, 44.58, 200.26, 189.01, -141.05, 2010 5 -118.06, -163.17, -0.01, -8.03, 101.04, 72.78, 2010 6 68.69, -20.90, 75.92, 44.18, -141.40, 61.54, 2010 7 -22.83, -66.26, 13.10, 3.02, -78.09, 55.40, 2010 8 80.44, -75.00, -57.80, -4.55, -21.20, 45.24, 2010 9 6.54, 14.00, 24.96, 10.46, 7.03, 1.64, 2010 a -27.61, 4.92, -3.28, 24.41, 8.21, 10.84, 2010 b -14.50, -20.03, -5.59, 11.83, -19.34, -17.41, 2010 c 11.61, 16.71, 10.85, 6.96, -14.05, -10.74, 2010 d -3.54, 1.64, 5.50, 9.45, -20.54, 3.45, 2010 e 11.51, -5.27, 12.75, 3.13, -7.14, -12.38, 2010 f -7.42, -0.76, 7.97, 8.43, 2.14, -8.42, 2010 g -6.08, -10.08, 7.01, -1.94, -6.24, 2.73, 2010 h 0.89, -0.10, -1.07, 4.71, -0.16, 4.44, 2010 i 2.45, -7.22, -0.33, -0.96, 2.13, -3.95, 2010 j 3.09, -1.99, -1.03, -1.97, -2.80, -8.31, 2010 k 3.05, -1.48, 0.13, -2.03, 1.67, 1.65, 2010 l -0.66, -0.51, -1.76, 0.54, 0.85, -0.79, 2010 m -0.39, 0.37, -2.51, 1.79, -1.27, 0.12, 2010 n -2.11, 0.75, -1.94, 3.75, -1.86, -2.12, 2010 o -0.21, -0.87, 0.30, 0.27, 1.04, 2.13, 2010 p -0.63, -2.49, 0.95, 0.49, -0.11, 0.59, 2010 q 0.52, 0.00, -0.39, 0.13, -0.37, 0.27, 2010 r 0.21, -0.86, -0.77, -0.23, 0.04, 0.87, 2010 s -0.09, -0.89, -0.87, 0.31, 0.30, 0.42, 2010 t 1.66, -0.45, -0.59, 1.08, -1.14, -0.31, 2010 u -0.07, 0.78, 0.54, -0.18, 0.10, 0.38, 2010 v 0.49, 0.02, 0.44, 0.42, -0.25, -0.26, 2010 w -0.53, -0.26, -0.79/ 2010 data gq/-29441.46,-1501.77, 4795.99,-2445.88, 3012.20,-2845.41, 2015 1 1676.35, -642.17, 1350.33,-2352.26, -115.29, 1225.85, 2015 2 245.04, 581.69, -538.70, 907.42, 813.68, 283.54, 2015 3 120.49, -188.43, -334.85, 180.95, 70.38, -329.23, 2015 4 -232.91, 360.14, 46.98, 192.35, 196.98, -140.94, 2015 5 -119.14, -157.40, 15.98, 4.30, 100.12, 69.55, 2015 6 67.57, -20.61, 72.79, 33.30, -129.85, 58.74, 2015 7 -28.93, -66.64, 13.14, 7.35, -70.85, 62.41, 2015 8 81.29, -75.99, -54.27, -6.79, -19.53, 51.82, 2015 9 5.59, 15.07, 24.45, 9.32, 3.27, -2.88, 2015 a -27.50, 6.61, -2.32, 23.98, 8.89, 10.04, 2015 b -16.78, -18.26, -3.16, 13.18, -20.56, -14.60, 2015 c 13.33, 16.16, 11.76, 5.69, -15.98, -9.10, 2015 d -2.02, 2.26, 5.33, 8.83, -21.77, 3.02, 2015 e 10.76, -3.22, 11.74, 0.67, -6.74, -13.20, 2015 f -6.88, -0.10, 7.79, 8.68, 1.04, -9.06, 2015 g -3.89, -10.54, 8.44, -2.01, -6.26, 3.28, 2015 h 0.17, -0.40, 0.55, 4.55, -0.55, 4.40, 2015 i 1.70, -7.92, -0.67, -0.61, 2.13, -4.16, 2015 j 2.33, -2.85, -1.80, -1.12, -3.59, -8.72, 2015 k 3.00, -1.40, 0.00, -2.30, 2.11, 2.08, 2015 l -0.60, -0.79, -1.05, 0.58, 0.76, -0.70, 2015 m -0.20, 0.14, -2.12, 1.70, -1.44, -0.22, 2015 n -2.57, 0.44, -2.01, 3.49, -2.34, -2.09, 2015 o -0.16, -1.08, 0.46, 0.37, 1.23, 1.75, 2015 p -0.89, -2.19, 0.85, 0.27, 0.10, 0.72, 2015 q 0.54, -0.09, -0.37, 0.29, -0.43, 0.23, 2015 r 0.22, -0.89, -0.94, -0.16, -0.03, 0.72, 2015 s -0.02, -0.92, -0.88, 0.42, 0.49, 0.63, 2015 t 1.56, -0.42, -0.50, 0.96, -1.24, -0.19, 2015 u -0.10, 0.81, 0.42, -0.13, -0.04, 0.38, 2015 v 0.48, 0.08, 0.48, 0.46, -0.30, -0.35, 2015 w -0.43, -0.36, -0.71/ 2015 data gr/ -29404.8, -1450.9, 4652.5, -2499.6, 2982.0, -2991.6, 2020 1 1677.0, -734.6, 1363.2, -2381.2, -82.1, 1236.2, 2020 2 241.9, 525.7, -543.4, 903.0, 809.5, 281.9, 2020 3 86.3, -158.4, -309.4, 199.7, 48.0, -349.7, 2020 4 -234.3, 363.2, 47.7, 187.8, 208.3, -140.7, 2020 5 -121.2, -151.2, 32.3, 13.5, 98.9, 66.0, 2020 6 65.5, -19.1, 72.9, 25.1, -121.5, 52.8, 2020 7 -36.2, -64.5, 13.5, 8.9, -64.7, 68.1, 2020 8 80.6, -76.7, -51.5, -8.2, -16.9, 56.5, 2020 9 2.2, 15.8, 23.5, 6.4, -2.2, -7.2, 2020 a -27.2, 9.8, -1.8, 23.7, 9.7, 8.4, 2020 b -17.6, -15.3, -0.5, 12.8, -21.1, -11.7, 2020 c 15.3, 14.9, 13.7, 3.6, -16.5, -6.9, 2020 d -0.3, 2.8, 5.0, 8.4, -23.4, 2.9, 2020 e 11.0, -1.5, 9.8, -1.1, -5.1, -13.2, 2020 f -6.3, 1.1, 7.8, 8.8, 0.4, -9.3, 2020 g -1.4, -11.9, 9.6, -1.9, -6.2, 3.4, 2020 h -0.1, -0.2, 1.7, 3.6, -0.9, 4.8, 2020 i 0.7, -8.6, -0.9, -0.1, 1.9, -4.3, 2020 j 1.4, -3.4, -2.4, -0.1, -3.8, -8.8, 2020 k 3.0, -1.4, 0.0, -2.5, 2.5, 2.3, 2020 l -0.6, -0.9, -0.4, 0.3, 0.6, -0.7, 2020 m -0.2, -0.1, -1.7, 1.4, -1.6, -0.6, 2020 n -3.0, 0.2, -2.0, 3.1, -2.6, -2.0, 2020 o -0.1, -1.2, 0.5, 0.5, 1.3, 1.4, 2020 p -1.2, -1.8, 0.7, 0.1, 0.3, 0.8, 2020 q 0.5, -0.2, -0.3, 0.6, -0.5, 0.2, 2020 r 0.1, -0.9, -1.1, 0.0, -0.3, 0.5, 2020 s 0.1, -0.9, -0.9, 0.5, 0.6, 0.7, 2020 t 1.4, -0.3, -0.4, 0.8, -1.3, 0.0, 2020 u -0.1, 0.8, 0.3, 0.0, -0.1, 0.4, 2020 v 0.5, 0.1, 0.5, 0.5, -0.4, -0.5, 2020 w -0.4, -0.4, -0.6/ 2020 data gs/ 5.7, 7.4, -25.9, -11.0, -7.0, -30.2, 2022 1 -2.1, -22.4, 2.2, -5.9, 6.0, 3.1, 2022 2 -1.1, -12.0, 0.5, -1.2, -1.6, -0.1, 2022 3 -5.9, 6.5, 5.2, 3.6, -5.1, -5.0, 2022 4 -0.3, 0.5, 0.0, -0.6, 2.5, 0.2, 2022 5 -0.6, 1.3, 3.0, 0.9, 0.3, -0.5, 2022 6 -0.3, 0.0, 0.4, -1.6, 1.3, -1.3, 2022 7 -1.4, 0.8, 0.0, 0.0, 0.9, 1.0, 2022 8 -0.1, -0.2, 0.6, 0.0, 0.6, 0.7, 2022 9 -0.8, 0.1, -0.2, -0.5, -1.1, -0.8, 2022 a 0.1, 0.8, 0.3, 0.0, 0.1, -0.2, 2022 b -0.1, 0.6, 0.4, -0.2, -0.1, 0.5, 2022 c 0.4, -0.3, 0.3, -0.4, -0.1, 0.5, 2022 d 0.4, 0.0, 115*0.0/ 2022 c c set initial values c x = 0.0 y = 0.0 z = 0.0 if (date.lt.1900.0.or.date.gt.2030.0) go to 11 C if (date.gt.2025.0) write (6,960) date C 960 format (/' This version of the IGRF is intended for use up', C 1 ' to 2025.0.'/' values for',f9.3,' will be computed', C 2 ' but may be of reduced accuracy'/) if (date.ge.2020.0) go to 1 t = 0.2*(date - 1900.0) ll = t one = ll t = t - one c c SH models before 1995.0 are only to degree 10 c if (date.lt.1995.0) then nmx = 10 nc = nmx*(nmx+2) ll = nc*ll kmx = (nmx+1)*(nmx+2)/2 else nmx = 13 nc = nmx*(nmx+2) ll = 0.2*(date - 1995.0) c c 19 is the number of SH models that extend to degree 10 c ll = 120*19 + nc*ll kmx = (nmx+1)*(nmx+2)/2 endif tc = 1.0 - t if (isv.eq.1) then tc = -0.2 t = 0.2 end if go to 2 c 1 t = date - 2020.0 tc = 1.0 if (isv.eq.1) then t = 1.0 tc = 0.0 end if c c pointer for last coefficient in pen-ultimate set of MF coefficients... c ll = 3255 nmx = 13 nc = nmx*(nmx+2) kmx = (nmx+1)*(nmx+2)/2 2 r = alt one = colat*0.017453292 ct = cos(one) st = sin(one) one = elong*0.017453292 cl(1) = cos(one) sl(1) = sin(one) cd = 1.0 sd = 0.0 l = 1 m = 1 n = 0 if (itype.eq.2) go to 3 c c conversion from geodetic to geocentric coordinates c (using the WGS84 spheroid) c a2 = 40680631.6 b2 = 40408296.0 one = a2*st*st two = b2*ct*ct three = one + two rho = sqrt(three) r = sqrt(alt*(alt + 2.0*rho) + (a2*one + b2*two)/three) cd = (alt + rho)/r sd = (a2 - b2)/rho*ct*st/r one = ct ct = ct*cd - st*sd st = st*cd + one*sd c 3 ratio = 6371.2/r rr = ratio*ratio c c computation of Schmidt quasi-normal coefficients p and x(=q) c p(1) = 1.0 p(3) = st q(1) = 0.0 q(3) = ct do 10 k=2,kmx if (n.ge.m) go to 4 m = 0 n = n + 1 rr = rr*ratio fn = n gn = n - 1 4 fm = m if (m.ne.n) go to 5 if (k.eq.3) go to 6 one = sqrt(1.0 - 0.5/fm) j = k - n - 1 p(k) = one*st*p(j) q(k) = one*(st*q(j) + ct*p(j)) cl(m) = cl(m-1)*cl(1) - sl(m-1)*sl(1) sl(m) = sl(m-1)*cl(1) + cl(m-1)*sl(1) go to 6 5 gmm = m*m one = sqrt(fn*fn - gmm) two = sqrt(gn*gn - gmm)/one three = (fn + gn)/one i = k - n j = i - n + 1 p(k) = three*ct*p(i) - two*p(j) q(k) = three*(ct*q(i) - st*p(i)) - two*q(j) c c synthesis of x, y and z in geocentric coordinates c 6 lm = ll + l one = (tc*gh(lm) + t*gh(lm+nc))*rr if (m.eq.0) go to 9 two = (tc*gh(lm+1) + t*gh(lm+nc+1))*rr three = one*cl(m) + two*sl(m) x = x + three*q(k) z = z - (fn + 1.0)*three*p(k) if (st.eq.0.0) go to 7 y = y + (one*sl(m) - two*cl(m))*fm*p(k)/st go to 8 7 y = y + (one*sl(m) - two*cl(m))*q(k)*ct 8 l = l + 2 go to 10 9 x = x + one*q(k) z = z - (fn + 1.0)*one*p(k) l = l + 1 m = m + 1 10 continue c c conversion to coordinate system specified by itype c one = x x = x*cd + z*sd z = z*cd - one*sd f = sqrt(x*x + y*y + z*z) c return c c error return if date out of bounds c 11 f = 1.0d8 write (6,961) date 961 format (/' This subroutine will not work with a date of', 1 f9.3,'. Date must be in the range 1900.0.ge.date', 2 '.le.2030.0. On return f = 1.0d8., x = y = z = 0.') return end