From 2f821754fbc3819ed7e04a313068ba622c68440e Mon Sep 17 00:00:00 2001 From: "X. N. Chu" Date: Thu, 5 Mar 2026 12:46:48 -0700 Subject: [PATCH 1/4] Update .gitignore and geopack_08.f for IGRF coefficients - Added new entries to .gitignore for local files and test scripts. - Updated IGRF coefficients in geopack_08.f to reflect the latest values as of December 24, 2024, and adjusted the date range for model acceptance to 2030. --- source/geopack_08.f | 254 ++++++++++++++++++++++++++------------------ 1 file changed, 151 insertions(+), 103 deletions(-) diff --git a/source/geopack_08.f b/source/geopack_08.f index d6a30da3..6aa18363 100644 --- a/source/geopack_08.f +++ b/source/geopack_08.f @@ -5,7 +5,7 @@ c # GEOPACK-2008_dp # c # (MAIN SET OF FORTRAN CODES) # c # (double-precision version of 03/21/08) # -C # (IGRF coefficients updated 01/31/15) # +C # (IGRF coefficients updated 12/24/2024) # c ########################################################################## C c @@ -56,7 +56,7 @@ SUBROUTINE IGRF_GSW_08 (XGSW,YGSW,ZGSW,HXGSW,HYGSW,HZGSW) c C CALCULATES COMPONENTS OF THE MAIN (INTERNAL) GEOMAGNETIC FIELD IN THE GEOCENTRIC SOLAR-WIND C (GSW) COORDINATE SYSTEM, USING IAGA INTERNATIONAL GEOMAGNETIC REFERENCE MODEL COEFFICIENTS -C (e.g., http://www.ngdc.noaa.gov/IAGA/vmod/igrf.html, revised 22 March, 2005) +C (e.g., https://www.ngdc.noaa.gov/IAGA/vmod/coeffs/igrf14coeffs.txt, updated 24 December, 2024) c C THE GSW SYSTEM IS ESSENTIALLY SIMILAR TO THE STANDARD GSM (THE TWO SYSTEMS BECOME IDENTICAL C TO EACH OTHER IN THE CASE OF STRICTLY ANTI-SUNWARD SOLAR WIND FLOW). FOR A DETAILED @@ -75,8 +75,8 @@ SUBROUTINE IGRF_GSW_08 (XGSW,YGSW,ZGSW,HXGSW,HYGSW,HZGSW) C HXGSW,HYGSW,HZGSW - CARTESIAN GEOCENTRIC SOLAR-WIND COMPONENTS OF THE MAIN GEOMAGNETIC C FIELD IN NANOTESLA C -C LAST MODIFICATION: MARCH 21, 2008 (DOUBLE-PRECISION VERSION) -C THIS VERSION OF THE CODE ACCEPTS DATES FROM 1965 THROUGH 2015. +C LAST MODIFICATION: DEC 24, 2024 (new IGRF-14 coeffs). +C THIS VERSION OF THE CODE ACCEPTS DATES FROM 1965 THROUGH 2030. c C AUTHOR: N. A. TSYGANENKO C @@ -187,8 +187,8 @@ SUBROUTINE IGRF_GSW_08 (XGSW,YGSW,ZGSW,HXGSW,HYGSW,HZGSW) SUBROUTINE IGRF_GEO_08 (R,THETA,PHI,BR,BTHETA,BPHI) c C CALCULATES COMPONENTS OF THE MAIN (INTERNAL) GEOMAGNETIC FIELD IN THE SPHERICAL GEOGRAPHIC -C (GEOCENTRIC) COORDINATE SYSTEM, USING IAGA INTERNATIONAL GEOMAGNETIC REFERENCE MODEL -C COEFFICIENTS (e.g., http://www.ngdc.noaa.gov/IAGA/vmod/igrf.html, revised: 22 March, 2005) +C (GEOCENTRIC) COORDINATE SYSTEM, USING IAGA INTERNATIONAL GEOMAGNETIC REFERENCE MODEL IGRF-14 +C (see https://www.ngdc.noaa.gov/IAGA/vmod/coeffs/igrf14coeffs.txt) C C BEFORE THE FIRST CALL OF THIS SUBROUTINE, OR IF THE DATE (IYEAR AND IDAY) WAS CHANGED, C THE MODEL COEFFICIENTS SHOULD BE UPDATED BY CALLING THE SUBROUTINE RECALC_08 @@ -203,8 +203,8 @@ SUBROUTINE IGRF_GEO_08 (R,THETA,PHI,BR,BTHETA,BPHI) C BR, BTHETA, BPHI - SPHERICAL COMPONENTS OF THE MAIN GEOMAGNETIC FIELD IN NANOTESLA C (POSITIVE BR OUTWARD, BTHETA SOUTHWARD, BPHI EASTWARD) C -C LAST MODIFICATION: MARCH 21, 2008 (DOUBLE-PRECISION VERSION) -C THIS VERSION OF THE CODE ACCEPTS DATES FROM 1965 THROUGH 2015. +C LAST MODIFICATION: DEC 24, 2024 (new IGRF-14 coeffs). +C THIS VERSION OF THE CODE ACCEPTS DATES FROM 1965 THROUGH 2030. c C AUTHOR: N. A. TSYGANENKO C @@ -542,12 +542,15 @@ SUBROUTINE RECALC_08 (IYEAR,IDAY,IHOUR,MIN,ISEC,VGSEX,VGSEY,VGSEZ) C OTHER SUBROUTINES CALLED BY THIS ONE: SUN_08 C C AUTHOR: N.A. TSYGANENKO -C DATE: DEC.1, 1991 C -C REVISION OF JANUARY 31, 2015: +C ORIGINALLY WRITTEN: DEC.1, 1991 +C +C MOST RECENT REVISION: DECEMBER 24, 2024: C -C The table of IGRF coefficients was extended to include those for the epoch 2015 (igrf-12) -c (for details, see http://www.ngdc.noaa.gov/IAGA/vmod/igrf.html) +C The table of IGRF coefficients was extended to include those for the epoch 2025 (igrf-14) +c (for details, see https://www.ngdc.noaa.gov/IAGA/vmod/coeffs/igrf14coeffs.txt) +C----------------------------------------------------------------------------------- +c EARLIER REVISIONS: C C REVISION OF NOVEMBER 30, 2010: C @@ -574,7 +577,6 @@ SUBROUTINE RECALC_08 (IYEAR,IDAY,IHOUR,MIN,ISEC,VGSEX,VGSEY,VGSEZ) c in the old versions, making the codes easier and more compiler-independent. C IMPLICIT REAL*8 (A-H,O-Z) - SAVE ISW C COMMON /GEOPACK1/ ST0,CT0,SL0,CL0,CTCL,STCL,CTSL,STSL,SFI,CFI, * SPS,CPS,DS3,CGST,SGST,PSI,A11,A21,A31,A12,A22,A32,A13,A23,A33, @@ -592,10 +594,9 @@ SUBROUTINE RECALC_08 (IYEAR,IDAY,IHOUR,MIN,ISEC,VGSEX,VGSEY,VGSEZ) DIMENSION G65(105),H65(105),G70(105),H70(105),G75(105),H75(105), + G80(105),H80(105),G85(105),H85(105),G90(105),H90(105),G95(105), + H95(105),G00(105),H00(105),G05(105),H05(105),G10(105),H10(105), - + G15(105),H15(105),DG15(45),DH15(45) + + G15(105),H15(105),G20(105),H20(105),G25(105),H25(105),DG25(45), + + DH25(45) C - DATA ISW /0/ -c DATA G65/0.D0,-30334.D0,-2119.D0,-1662.D0,2997.D0,1594.D0,1297.D0, *-2038.D0,1292.D0,856.D0,957.D0,804.D0,479.D0,-390.D0,252.D0, *-219.D0,358.D0,254.D0,-31.D0,-157.D0,-62.D0,45.D0,61.D0,8.D0, @@ -829,84 +830,111 @@ SUBROUTINE RECALC_08 (IYEAR,IDAY,IHOUR,MIN,ISEC,VGSEX,VGSEY,VGSEZ) * -0.59D0, -1.14D0, -0.07D0, 0.54D0, 0.10D0, 0.49D0, * 0.44D0, -0.25D0, -0.53D0, -0.79D0/ C - DATA G15/0.D0,-29442.0D0, -1501.0D0, -2445.1D0, 3012.9D0, - * 1676.7D0, 1350.7D0, -2352.3D0, 1225.6D0, 582.0D0,907.6D0, - * 813.7D0, 120.4D0, -334.9D0, 70.4D0, -232.6D0,360.1D0, - * 192.4D0, -140.9D0, -157.5D0, 4.1D0, 70.0D0, 67.7D0, - * 72.7D0, -129.9D0, -28.9D0, 13.2D0, -70.9D0, 81.6D0, - * -76.1D0, -6.8D0, 51.8D0, 15.0D0, 9.4D0, -2.8D0, - * 6.8D0, 24.2D0, 8.8D0, -16.9D0, -3.2D0,-20.6D0, - * 13.4D0, 11.7D0, -15.9D0, -2.0D0, 5.4D0, 8.8D0, - * 3.1D0, -3.3D0, 0.7D0, -13.3D0, -0.1D0, 8.7D0, - * -9.1D0, -10.5D0, -1.9D0, -6.3D0, 0.1D0, 0.5D0, - * -0.5D0, 1.8D0, -0.7D0, 2.1D0, 2.4D0, -1.8D0, - * -3.6D0, 3.1D0, -1.5D0, -2.3D0, 2.0D0, -0.8D0, - * 0.6D0, -0.7D0, 0.2D0, 1.7D0, -0.2D0, 0.4D0, - * 3.5D0, -1.9D0, -0.2D0, 0.4D0, 1.2D0, -0.8D0, - * 0.9D0, 0.1D0, 0.5D0, -0.3D0, -0.4D0, 0.2D0, - * -0.9D0, 0.0D0, 0.0D0, -0.9D0, 0.4D0, 0.5D0, - * -0.5D0, 1.0D0, -0.2D0, 0.8D0, -0.1D0, 0.3D0, - * 0.1D0, 0.5D0, -0.4D0, -0.3D0/ + DATA G15/0.00D0,-29441.46D0,-1501.77D0,-2445.88D0,3012.20D0, + * 1676.35D0,1350.33D0,-2352.26D0,1225.85D0, 581.69D0,907.42D0, + * 813.68D0, 120.49D0,-334.85D0, 70.38D0,-232.91D0,360.14D0, + * 192.35D0,-140.94D0,-157.40D0, 4.30D0, 69.55D0, 67.57D0, + * 72.79D0,-129.85D0, -28.93D0, 13.14D0, -70.85D0, 81.29D0, + * -75.99D0, -6.79D0, 51.82D0, 15.07D0, 9.32D0, -2.88D0, + * 6.61D0, 23.98D0, 8.89D0, -16.78D0, -3.16D0,-20.56D0, + * 13.33D0, 11.76D0, -15.98D0, -2.02D0, 5.33D0, 8.83D0, + * 3.02D0, -3.22D0, 0.67D0, -13.20D0, -0.10D0, 8.68D0, + * -9.06D0, -10.54D0, -2.01D0, -6.26D0, 0.17D0, 0.55D0, + * -0.55D0, 1.70D0, -0.67D0, 2.13D0, 2.33D0, -1.80D0, + * -3.59D0, 3.00D0, -1.40D0, -2.30D0, 2.08D0, -0.79D0, + * 0.58D0, -0.70D0, 0.14D0, 1.70D0, -0.22D0, 0.44D0, + * 3.49D0, -2.09D0, -0.16D0, 0.46D0, 1.23D0, -0.89D0, + * 0.85D0, 0.10D0, 0.54D0, -0.37D0, -0.43D0, 0.22D0, + * -0.94D0, -0.03D0, -0.02D0, -0.92D0, 0.42D0, 0.63D0, + * -0.42D0, 0.96D0, -0.19D0, 0.81D0, -0.13D0, 0.38D0, + * 0.08D0, 0.46D0, -0.35D0, -0.36D0/ c - DATA H15/0.D0, 0.0D0, 4797.1D0, 0.0D0, -2845.6D0,-641.9D0, - * 0.0D0, -115.3D0, 244.9D0, -538.4D0, 0.0D0, 283.3D0, - * -188.7D0, 180.9D0, -329.5D0, 0.0D0, 47.3D0, 197.0D0, - * -119.3D0, 16.0D0, 100.2D0, 0.0D0, -20.8D0, 33.2D0, - * 58.9D0, -66.7D0, 7.3D0, 62.6D0, 0.0D0, -54.1D0, - * -19.5D0, 5.7D0, 24.4D0, 3.4D0, -27.4D0, -2.2D0, - * 0.0D0, 10.1D0, -18.3D0, 13.3D0, -14.6D0, 16.2D0, - * 5.7D0, -9.1D0, 2.1D0, 0.0D0, -21.6D0, 10.8D0, - * 11.8D0, -6.8D0, -6.9D0, 7.8D0, 1.0D0, -4.0D0, - * 8.4D0, 0.0D0, 3.2D0, -0.4D0, 4.6D0, 4.4D0, - * -7.9D0, -0.6D0, -4.2D0, -2.8D0, -1.2D0, -8.7D0, - * 0.0D0, -0.1D0, 2.0D0, -0.7D0, -1.1D0, 0.8D0, - * -0.2D0, -2.2D0, -1.4D0, -2.5D0, -2.0D0, -2.4D0, - * 0.0D0, -1.1D0, 0.4D0, 1.9D0, -2.2D0, 0.3D0, - * 0.7D0, -0.1D0, 0.3D0, 0.2D0, -0.9D0, -0.1D0, - * 0.7D0, 0.0D0, -0.9D0, 0.4D0, 1.6D0, -0.5D0, - * -1.2D0, -0.1D0, 0.4D0, -0.1D0, 0.4D0, 0.5D0, - * -0.3D0, -0.4D0, -0.8D0/ + DATA H15/0.00D0,0.00D0,4795.99D0,0.00D0,-2845.41D0,-642.17D0,0.D0, + *-115.29D0,245.04D0,-538.7D0, 0.0D0, 283.54D0,-188.43D0,180.95D0, + *-329.23D0, 0.0D0, 46.98D0,196.98D0,-119.14D0, 15.98D0,100.12D0, + * 0.00D0,-20.61D0, 33.30D0, 58.74D0, -66.64D0, 7.35D0, 62.41D0, + * 0.00D0,-54.27D0,-19.53D0, 5.59D0, 24.45D0, 3.27D0,-27.50D0, + * -2.32D0, 0.00D0, 10.04D0,-18.26D0, 13.18D0, -14.60D0, 16.16D0, + * 5.69D0, -9.10D0, 2.26D0, 0.00D0, -21.77D0, 10.76D0, 11.74D0, + * -6.74D0, -6.88D0, 7.79D0, 1.04D0, -3.89D0, 8.44D0, 0.00D0, + * 3.28D0, -0.40D0, 4.55D0, 4.40D0, -7.92D0, -0.61D0, -4.16D0, + * -2.85D0, -1.12D0, -8.72D0, 0.00D0, 0.00D0, 2.11D0, -0.60D0, + * -1.05D0, 0.76D0, -0.20D0, -2.12D0, -1.44D0, -2.57D0, -2.01D0, + * -2.34D0, 0.00D0, -1.08D0, 0.37D0, 1.75D0, -2.19D0, 0.27D0, + * 0.72D0, -0.09D0, 0.29D0, 0.23D0, -0.89D0, -0.16D0, 0.72D0, + * 0.00D0, -0.88D0, 0.49D0, 1.56D0, -0.50D0, -1.24D0, -0.10D0, + * 0.42D0, -0.04D0, 0.48D0, 0.48D0, -0.30D0, -0.43D0, -0.71D0/ c - DATA DG15/0.0D0, 10.3D0, 18.1D0, -8.7D0, -3.3D0, 2.1D0, 3.4D0, - * -5.5D0, -0.7D0, -10.1D0, -0.7D0, 0.2D0, -9.1D0, 4.1D0, - * -4.3D0, -0.2D0, 0.5D0, -1.3D0, -0.1D0, 1.4D0, 3.9D0, - * -0.3D0, -0.1D0, -0.7D0, 2.1D0, -1.2D0, 0.3D0, 1.6D0, - * 0.3D0, -0.2D0, -0.5D0, 1.3D0, 0.1D0, -0.6D0,-0.8D0, - * 0.2D0, 0.2D0, 0.0D0, -0.6D0, 0.5D0, -0.2D0, 0.4D0, - * 0.1D0, -0.4D0, 0.3D0/ + DATA G20/0.0D0,-29403.41D0,-1451.37D0,-2499.78D0,2981.96D0, + *1676.85D0,1363.00D0,-2380.80D0,1236.06D0,525.60D0,902.82D0, + *809.47D0,86.18D0,-309.47D0,47.44D0,-234.42D0,363.26D0,187.86D0, + *-140.73D0,-151.16D0,13.98D0,65.97D0,65.56D0,72.96D0,-121.57D0, + *-36.06D0,13.60D0,-64.80D0,80.54D0,-76.63D0,-8.23D0,56.45D0, + *15.80D0,6.30D0,-7.21D0,9.77D0,23.66D0,9.74D0,-17.49D0,-0.49D0, + *-21.07D0,15.28D0,13.65D0,-16.59D0,-0.34D0,5.03D0,8.36D0,2.84D0, + *-1.48D0,-1.14D0,-13.22D0,1.08D0,8.82D0,-9.23D0,-11.86D0,-1.84D0, + *-6.25D0,-0.11D0,1.66D0,-.86D0,0.65D0,-0.88D0,1.88D0,1.44D0, + *-2.38D0,-3.84D0,2.96D0,-1.36D0,-2.51D0,2.31D0,-0.85D0,0.28D0, + *-0.66D0,-0.07D0,1.44D0,-0.59D0,0.18D0,3.09D0,-2.00D0,-0.13D0, + *0.43D0,1.28D0,-1.14D0,0.71D0,0.31D0,0.49D0,-0.26D0,-0.47D0,0.09D0, + *-1.13D0,-0.33D0,0.08D0,-0.93D0,0.53D0,0.72D0,-0.30D0,0.75D0, + *-0.01D0,0.76D0,-0.05D0,0.37D0,0.13D0,0.45D0,-0.46D0,-0.40D0/ c - DATA DH15/0.0D0, 0.0D0, -26.6D0, 0.0D0, -27.4D0,-14.1D0, 0.0D0, - * 8.2D0, -0.4D0, 1.8D0, 0.0D0, -1.3D0, 5.3D0, 2.9D0, - * -5.2D0, 0.0D0, 0.6D0, 1.7D0, -1.2D0, 3.4D0, 0.0D0, - * 0.0D0, 0.0D0, -2.1D0, -0.7D0, 0.2D0, 0.9D0, 1.0D0, - * 0.0D0, 0.8D0, 0.4D0, -0.2D0, -0.3D0, -0.6D0, 0.1D0, - * -0.2D0, 0.0D0, -0.3D0, 0.3D0, 0.1D0, 0.5D0,-0.2D0, - * -0.3D0, 0.3D0, 0.0D0/ -C -C -c IF (VGSEY.EQ.0..AND.VGSEZ.EQ.0..AND.ISW.NE.1) THEN -c PRINT *, '' -c PRINT *, -c *' RECALC_08: RADIAL SOLAR WIND --> GSW SYSTEM IDENTICAL HERE' -c PRINT *, -c *' TO STANDARD GSM (I.E., XGSW AXIS COINCIDES WITH EARTH-SUN LINE)' -c PRINT *, '' -c ISW=1 -c ENDIF + DATA H20/0.0D0,0.0D0,4653.35D0,0.0D0,-2991.72D0,-734.62D0,0.0D0, + *-81.96D0,241.80D0,-542.52D0,0.0D0,282.10D0,-158.5D0,199.75D0, + *-350.3D0,0.0D0,47.52D0,208.36D0,-121.43D0,32.09D0,99.14D0,0.0D0, + *-19.22D0,25.02D0,52.76D0,-64.40D0,8.96D0,68.04D0,0.0D0,-51.5D0, + *-16.85D0,2.36D0,23.56D0,-2.19D0,-27.19D0,-1.90D0,0.0D0,8.43D0, + *-15.23D0,12.83D0,-11.76D0,14.94D0,3.62D0,-6.90D0,2.90D0,0.00D0, + *-23.44D0,11.04D0,9.86D0,-5.13D0,-6.20D0,7.79D0,0.4D0,-1.44D0, + *9.60D0,0.0D0,3.38D0,-0.18D0,3.50D0,4.86D0,-8.62D0,-0.11D0,-4.26D0, + *-3.43D0,-0.10D0,-8.84D0,0.00D0,-0.02D0,2.50D0,-0.55D0,-0.39D0, + *0.62D0,-0.21D0,-1.66D0,-1.60D0,-2.98D0,-1.97D0,-2.51D0,0.00D0, + *-1.15D0,0.52D0,1.37D0,-1.81D0,0.08D0,0.71D0,-0.15D0,0.55D0,0.16D0, + *-0.93D0,-.04D0,0.52D0,0.0D0,-0.88D0,0.64D0,1.40D0,-0.38D0,-1.31D0, + *-0.09D0, 0.29D0,-0.11D0,0.47D0,0.54D0,-0.41D0,-0.36D0,-0.60D0/ +C + DATA G25/0.0D0,-29350.0D0,-1410.3D0,-2556.2D0,2950.9D0,1648.7D0, + *1360.9D0,-2404.2D0,1243.8D0,453.4D0,894.7D0,799.6D0,55.8D0, + *-281.1D0,12.0D0,-232.9D0,369.0D0,187.2D0,-138.7D0,-141.9D0,20.9D0, + *64.3D0,63.8D0,76.7D0,-115.7D0,-40.9D0,14.9D0,-60.8D0,79.6D0, + *-76.9D0,-8.8D0,59.3D0,15.8D0,2.5D0,-11.2D0,14.3D0,23.1D0,10.9D0, + *-17.5D0,2.0D0,-21.8D0,16.9D0,14.9D0,-16.8D0,1.0D0,4.7D0,8.0D0, + *3.0D0,-.2D0,-2.5D0,-13.1D0,2.4D0,8.6D0,-8.7D0,-12.8D0,-1.3D0, + *-6.4D0,0.2D0,2.0D0,-1.0D0,-0.5D0,-0.9D0,1.5D0,0.9D0,-2.6D0,-3.9D0, + *3.0D0,-1.4D0,-2.5D0,2.4D0,-0.6D0,0.0D0,-0.6D0,-0.1D0,1.1D0,-1.0D0, + *-0.1D0,2.6D0,-2.0D0,-0.1D0,0.4D0,1.2D0,-1.2D0,0.6D0,0.5D0,0.5D0, + *-0.1D0,-0.5D0,-0.2D0,-1.2D0,-0.7D0,0.2D0,-0.9D0,0.6D0,0.7D0,-.2D0, + *0.5D0,0.1D0,0.7D0,0.0D0,0.3D0,0.2D0,0.4D0,-0.5D0,-0.4D0/ -c IF ((VGSEY.NE.0.D0.OR.VGSEZ.NE.0.D0).AND.ISW.NE.2) THEN ! CORRECTED DEC.01, 2010 -c PRINT *, '' -c PRINT *, -c *' WARNING: NON-RADIAL SOLAR WIND FLOW SPECIFIED IN RECALC_08;' -c PRINT *, -c *' HENCE XGSW AXIS IS ASSUMED ORIENTED ANTIPARALLEL TO V_SW VECTOR' -c PRINT *, '' -c ISW=2 -c ENDIF + DATA H25/0.0D0,0.0D0,4545.5D0,0.0D0,-3133.6D0,-814.2D0,0.0D0, + *-56.9D0,237.6D0,-549.6D0,0.0D0,278.6D0,-134.0D0,212.0D0,-375.4D0, + *0.0D0,45.3D0,220.0D0,-122.9D0,42.9D0,106.2D0,0.0D0,-18.4D0,16.8D0, + *48.9D0,-59.8D0,10.9D0,72.8D0,0.0D0,-48.9D0,-14.4D0,-1.0D0,23.5D0, + *-7.4D0,-25.1D0,-2.2D0,0.0D0,7.2D0,-12.6D0,11.5D0,-9.7D0,12.7D0, + *0.7D0,-5.2D0,3.9D0,0.0D0,-24.8D0,12.1D0,8.3D0,-3.4D0,-5.3D0,7.2D0, + *-0.6D0,0.8D0,9.8D0,0.0D0,3.3D0,0.1D0,2.5D0,5.4D0,-9.0D0,0.4D0, + *-4.2D0,-3.8D0,0.9D0,-9.0D0,0.0D0,0.0D0,2.8D0,-0.6D0,0.1D0,0.5D0, + *-.3D0,-1.2D0,-1.7D0,-2.9D0,-1.8D0,-2.3D0,0.0D0,-1.2D0,0.6D0,1.0D0, + *-1.5D0,0.0D0,0.6D0,-0.2D0,0.8D0,0.1D0,-0.9D0,0.1D0,0.2D0,0.0D0, + *-0.9D0,0.7D0,1.2D0,-0.3D0,-1.3D0,-0.1D0,0.2D0,-0.2D0,0.5D0,0.6D0, + *-0.6D0,-0.3D0,-0.5D0/ + + DATA DG25/0.0D0,12.6D0,10.0D0,-11.2D0,-5.3D0,-8.3D0,-1.5D0,-4.4D0, + *0.4D0,-15.6D0,-1.7D0,-2.3D0,-5.8D0,5.4D0,-6.8D0,0.6D0,1.3D0,0.0D0, + *0.7D0,2.3D0,1.0D0,-0.2D0,-0.3D0,0.8D0,1.2D0,-0.8D0,0.4D0,0.9D0, + *-0.1D0,-0.1D0,-0.1D0,0.5D0,-0.1D0,-0.8D0,-0.8D0,0.9D0,-0.1D0,.2D0, + *0.0D0,0.4D0,-0.1D0,0.3D0,0.1D0,0.0D0,0.3D0/ +c + DATA DH25/0.0D0,0.0D0,-21.5D0,0.0D0,-27.3D0,-11.1D0,0.0D0,3.8D0, + *-.2D0,-3.9D0,0.0D0,-1.3D0,4.1D0,1.6D0,-4.1D0,0.0D0,-0.5D0,2.1D0, + *0.5D0,1.7D0,1.9D0,0.0D0,0.3D0,-1.6D0,-0.4D0,0.8D0,0.7D0,0.9D0, + *0.0D0,0.6D0,0.5D0,-0.7D0,0.0D0,-0.9D0,0.5D0,-0.3D0,0.0D0,-0.3D0, + *0.4D0,-0.3D0,0.4D0,-0.5D0,-0.6D0,0.3D0,0.2D0/ C IY=IYEAR C -C WE ARE RESTRICTED BY THE INTERVAL 1965-2020, FOR WHICH EITHER THE IGRF/DGRF COEFFICIENTS OR SECULAR VELOCITIES +C WE ARE RESTRICTED BY THE INTERVAL 1965-2030, FOR WHICH EITHER THE IGRF/DGRF COEFFICIENTS OR SECULAR VELOCITIES c ARE KNOWN; IF IYEAR IS OUTSIDE THIS INTERVAL, THEN THE SUBROUTINE USES THE C NEAREST LIMITING VALUE AND PRINTS A WARNING: C @@ -915,8 +943,8 @@ SUBROUTINE RECALC_08 (IYEAR,IDAY,IHOUR,MIN,ISEC,VGSEX,VGSEY,VGSEZ) WRITE (*,10) IYEAR,IY ENDIF - IF(IY.GT.2020) THEN - IY=2020 + IF(IY.GT.2030) THEN + IY=2030 WRITE (*,10) IYEAR,IY ENDIF C @@ -941,16 +969,18 @@ SUBROUTINE RECALC_08 (IYEAR,IDAY,IHOUR,MIN,ISEC,VGSEX,VGSEY,VGSEZ) IF (IY.LT.2005) GOTO 120 !INTERPOLATE BETWEEN 2000 - 2005 IF (IY.LT.2010) GOTO 130 !INTERPOLATE BETWEEN 2005 - 2010 IF (IY.LT.2015) GOTO 140 !INTERPOLATE BETWEEN 2010 - 2015 + IF (IY.LT.2020) GOTO 150 !INTERPOLATE BETWEEN 2015 - 2020 + IF (IY.LT.2025) GOTO 160 !INTERPOLATE BETWEEN 2020 - 2025 C -C EXTRAPOLATE BEYOND 2015: +C EXTRAPOLATE BEYOND 2025: C - DT=DFLOAT(IY)+DFLOAT(IDAY-1)/365.25D0-2015.D0 + DT=DFLOAT(IY)+DFLOAT(IDAY-1)/365.25D0-2025.D0 DO 40 N=1,105 - G(N)=G15(N) - H(N)=H15(N) + G(N)=G25(N) + H(N)=H25(N) IF (N.GT.45) GOTO 40 - G(N)=G(N)+DG15(N)*DT - H(N)=H(N)+DH15(N)*DT + G(N)=G(N)+DG25(N)*DT + H(N)=H(N)+DH25(N)*DT 40 CONTINUE GOTO 300 C @@ -1028,7 +1058,7 @@ SUBROUTINE RECALC_08 (IYEAR,IDAY,IHOUR,MIN,ISEC,VGSEX,VGSEY,VGSEZ) C C INTERPOLATE BETWEEN 2005 - 2010: C -130 F2=(FLOAT(IY)+FLOAT(IDAY-1)/365.25-2005)/5. +130 F2=(DFLOAT(IY)+DFLOAT(IDAY-1)/365.25-2005)/5. F1=1.-F2 DO 135 N=1,105 G(N)=G05(N)*F1+G10(N)*F2 @@ -1044,23 +1074,41 @@ SUBROUTINE RECALC_08 (IYEAR,IDAY,IHOUR,MIN,ISEC,VGSEX,VGSEY,VGSEZ) 145 H(N)=H10(N)*F1+H15(N)*F2 GOTO 300 C +C INTERPOLATE BETWEEN 2015 - 2020: +C +150 F2=(DFLOAT(IY)+DFLOAT(IDAY-1)/365.25D0-2015.D0)/5.D0 + F1=1.-F2 + DO 155 N=1,105 + G(N)=G15(N)*F1+G20(N)*F2 +155 H(N)=H15(N)*F1+H20(N)*F2 + GOTO 300 +C +C INTERPOLATE BETWEEN 2020 - 2025: +C +160 F2=(DFLOAT(IY)+DFLOAT(IDAY-1)/365.25D0-2020.D0)/5.D0 + F1=1.D0-F2 + DO 165 N=1,105 + G(N)=G20(N)*F1+G25(N)*F2 +165 H(N)=H20(N)*F1+H25(N)*F2 + GOTO 300 +c C COEFFICIENTS FOR A GIVEN YEAR HAVE BEEN CALCULATED; NOW MULTIPLY C THEM BY SCHMIDT NORMALIZATION FACTORS: C 300 S=1.D0 - DO 150 N=2,14 + DO 250 N=2,14 MN=N*(N-1)/2+1 S=S*DFLOAT(2*N-3)/DFLOAT(N-1) G(MN)=G(MN)*S H(MN)=H(MN)*S P=S - DO 150 M=2,N + DO 250 M=2,N AA=1.D0 IF (M.EQ.2) AA=2.D0 P=P*DSQRT(AA*DFLOAT(N-M+1)/DFLOAT(N+M-2)) MNN=MN+M-1 G(MNN)=G(MNN)*P -150 H(MNN)=H(MNN)*P +250 H(MNN)=H(MNN)*P G_10=-G(2) G_11= G(3) @@ -1104,7 +1152,7 @@ SUBROUTINE RECALC_08 (IYEAR,IDAY,IHOUR,MIN,ISEC,VGSEX,VGSEY,VGSEZ) DZ2=-DSIN(OBLIQ) DZ3=DCOS(OBLIQ) C -C NOW WE OBTAIN GEI COMPONENTS OF THE UNIT VECTOR EYGSE=(DY1,DY2,DY3), +C NOW OBTAIN GEI COMPONENTS OF THE UNIT VECTOR EYGSE=(DY1,DY2,DY3), C COMPLETING THE RIGHT-HANDED SYSTEM. THEY CAN BE FOUND FROM THE VECTOR C PRODUCT EZGSE x EXGSE = (DZ1,DZ2,DZ3) x (S1,S2,S3): C @@ -1112,7 +1160,7 @@ SUBROUTINE RECALC_08 (IYEAR,IDAY,IHOUR,MIN,ISEC,VGSEX,VGSEY,VGSEZ) DY2=DZ3*S1-DZ1*S3 DY3=DZ1*S2-DZ2*S1 C -C NOW LET'S CALCULATE GEI COMPONENTS OF THE UNIT VECTOR X = EXGSW, DIRECTED ANTIPARALLEL +C NOW CALCULATE GEI COMPONENTS OF THE UNIT VECTOR X = EXGSW, DIRECTED ANTIPARALLEL C TO THE OBSERVED SOLAR WIND FLOW. FIRST, CALCULATE ITS COMPONENTS IN GSE: C V=DSQRT(VGSEX**2+VGSEY**2+VGSEZ**2) @@ -1636,7 +1684,7 @@ SUBROUTINE STEP_08(X,Y,Z,DS,DSMAX,ERRIN,IOPT,PARMOD,EXNAME,INNAME) C C ALL THE ABOVE PARAMETERS ARE INPUT ONES; OUTPUT IS THE RECALCULATED VALUES OF X,Y,Z C -C LAST MODIFICATION: APRIL 21, 2008 (SEE ERRATA AS OF THAT DATE) +C LAST MODIFICATION: APRIL 21, 2008 (SEE ERRATA AS OF THAT DATE) C C AUTHOR: N. A. TSYGANENKO C @@ -2124,4 +2172,4 @@ SUBROUTINE T96_MGNP_08(XN_PD,VEL,XGSW,YGSW,ZGSW,XMGNP,YMGNP,ZMGNP, C C=================================================================================== C -c +c \ No newline at end of file From 9472ae0cfed4fd1c319faf3c0401acdfb9c0ce78 Mon Sep 17 00:00:00 2001 From: "X. N. Chu" Date: Tue, 10 Mar 2026 12:07:00 -0600 Subject: [PATCH 2/4] fix: k_ext=10 calls T01_S instead of T01_01 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The storm-time branch (k_ext=10, Tsyganenko 2001 storm) was silently calling T01_01 (quiet-time model) instead of T01_S (storm-time model). Both share the same subroutine interface so the bug compiled without error but produced incorrect results: T01_01 expects G1 and G2 in PARMOD(5:6), while T01_S expects G2 and G3, which is what the PARMOD assignments at lines 220-221 correctly provide. Also fix comment at line 213: "G1,G2" → "G2,G3". Historical k_ext=10 results will differ after this fix. --- source/init_nouveau.f | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/init_nouveau.f b/source/init_nouveau.f index decd7eba..9aedca56 100644 --- a/source/init_nouveau.f +++ b/source/init_nouveau.f @@ -210,7 +210,7 @@ SUBROUTINE CHAMP(xGEO,BxGEO,Bl,Ifail) endif c c Case for Tsyganenko dynamic mag model 01 storm (use of GSM coordinates) -c inputs is SW pressure, (nPa), DST (nT), ByIMF and BzIMF (nT), G1,G2 +c inputs is SW pressure, (nPa), DST (nT), ByIMF and BzIMF (nT), G2,G3 c if (k_ext .eq. 10) then PARMOD(1)=Pdyn_nPa @@ -224,7 +224,7 @@ SUBROUTINE CHAMP(xGEO,BxGEO,Bl,Ifail) Ifail=-1 RETURN ENDIF - CALL T01_01(PARMOD,xSM(1),xSM(2),xSM(3),BxSM(1),BxSM(2), + CALL T01_S(PARMOD,xSM(1),xSM(2),xSM(3),BxSM(1),BxSM(2), & BxSM(3)) CALL GSM_GEO(BxSM,Bxext) endif From de4e02d880d154e648599012b3215304b0aeedd1 Mon Sep 17 00:00:00 2001 From: "X. N. Chu" Date: Tue, 10 Mar 2026 12:14:00 -0600 Subject: [PATCH 3/4] fix: correct line continuation and indentation in geopack_08.f to resolve Make error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed a Fortran fixed-form formatting issue in the IGRF coefficient DATA statement: replaced `-.04D0` with `-0.04D0`, split an overlong continuation line, and corrected the indentation of the `DATA G25` statement (5→6 spaces) so that the file compiles without errors. --- source/geopack_08.f | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/source/geopack_08.f b/source/geopack_08.f index 6aa18363..8edc5982 100644 --- a/source/geopack_08.f +++ b/source/geopack_08.f @@ -891,10 +891,11 @@ SUBROUTINE RECALC_08 (IYEAR,IDAY,IHOUR,MIN,ISEC,VGSEX,VGSEY,VGSEZ) *-3.43D0,-0.10D0,-8.84D0,0.00D0,-0.02D0,2.50D0,-0.55D0,-0.39D0, *0.62D0,-0.21D0,-1.66D0,-1.60D0,-2.98D0,-1.97D0,-2.51D0,0.00D0, *-1.15D0,0.52D0,1.37D0,-1.81D0,0.08D0,0.71D0,-0.15D0,0.55D0,0.16D0, - *-0.93D0,-.04D0,0.52D0,0.0D0,-0.88D0,0.64D0,1.40D0,-0.38D0,-1.31D0, - *-0.09D0, 0.29D0,-0.11D0,0.47D0,0.54D0,-0.41D0,-0.36D0,-0.60D0/ -C - DATA G25/0.0D0,-29350.0D0,-1410.3D0,-2556.2D0,2950.9D0,1648.7D0, + *-0.93D0,-0.04D0,0.52D0,0.0D0,-0.88D0,0.64D0,1.40D0,-0.38D0,-1.31D0, + *-0.09D0,0.29D0,-0.11D0,0.47D0,0.54D0,-0.41D0,-0.36D0, + *-0.60D0/ +C + DATA G25/0.0D0,-29350.0D0,-1410.3D0,-2556.2D0,2950.9D0,1648.7D0, *1360.9D0,-2404.2D0,1243.8D0,453.4D0,894.7D0,799.6D0,55.8D0, *-281.1D0,12.0D0,-232.9D0,369.0D0,187.2D0,-138.7D0,-141.9D0,20.9D0, *64.3D0,63.8D0,76.7D0,-115.7D0,-40.9D0,14.9D0,-60.8D0,79.6D0, From 7d77277853a8cf879aadb4c599f6dd103e8a9ad7 Mon Sep 17 00:00:00 2001 From: "X. N. Chu" Date: Tue, 10 Mar 2026 14:04:38 -0600 Subject: [PATCH 4/4] fix: remove /rconst/ dependency from T01_S and use self-contained pi/180 conversion T01_S computed ps = tilt * rad, where rad came from the uninitialized /rconst/ common block (only populated by SUBROUTINE INITIZE). When T01_S was called before INITIZE ran, rad = 0, giving ps = 0 (zero tilt) regardless of actual conditions. Replace with the self-contained formula ps = tilt * 4.D0*ATAN(1.D0)/180.d0, consistent with T89, T96, T01, and TS04. Remove the now-unused REAL*8 pi,rad and common /rconst/rad,pi declarations. --- source/t01_s.f | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/source/t01_s.f b/source/t01_s.f index 795d66a2..0fac54a2 100644 --- a/source/t01_s.f +++ b/source/t01_s.f @@ -80,9 +80,6 @@ SUBROUTINE T01_S (PARMOD,X,Y,Z,BX,BY,BZ) ! S - for "storms" * HYIMF,HZIMF,BBX,BBY,BBZ C COMMON /dip_ang/tilt - REAL*8 pi,rad - common /rconst/rad,pi -c DATA A/1.00000D0,-1.19284D0,1.32478D0,0.41388D0,-0.07590D0, *-1.97502D0,5.68628D0,0.00000D0,0.00000D0,0.79889D0,-0.02588D0, *-0.43873D0,0.85784D0,0.06948D0,0.00000D0,0.45972D0,0.17565D0, @@ -93,7 +90,7 @@ SUBROUTINE T01_S (PARMOD,X,Y,Z,BX,BY,BZ) ! S - for "storms" *0.70733D0,0.30588D0,12.18290D0,40.00D0,82.76604D0,27.22990D0, *98.37391D0,14.39243D0,4.80011D0,7.99216D0/ - ps=tilt*rad + ps=tilt*4.D0*ATAN(1.D0)/180.d0 c PDYN=PARMOD(1) DST_AST=PARMOD(2)*0.8D0-13.D0*SQRT(PDYN)