|
|
c@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
|
|
c
|
|
|
C Downloaded from ftp://hanna.ccmc.gsfc.nasa.gov/pub/modelweb/magnetospheric/tsyganenko
|
|
|
C by B. Rideout on Mar. 29, 2013.
|
|
|
C The following changes were made from imported version:
|
|
|
C
|
|
|
C 1. ran script modifyFortran.py to remove
|
|
|
C to avoid conflicts with geo-cgm
|
|
|
C 2. remake_file script (nag_apt + tcl) run
|
|
|
C 3. All print statements commented out
|
|
|
C 4. Some _08 methods renamed to drop _08 due to compiling issues with double underscores
|
|
|
C 5. added common block br_err to signal errors back to trace subroutine
|
|
|
c
|
|
|
c ##########################################################################
|
|
|
c # #
|
|
|
c # GEOPACK-2008 #
|
|
|
c # (MAIN SET OF FORTRAN CODES) #
|
|
|
c # (IGRF-11 coefficients added on Nov 30, 2010) #
|
|
|
c ##########################################################################
|
|
|
C
|
|
|
c
|
|
|
cThis collection of subroutines is a result of several upgrades of the original package
|
|
|
c written by N. A. Tsyganenko in 1978-1979.
|
|
|
c
|
|
|
c PREFATORY NOTE TO THE VERSION OF FEBRUARY 8, 2008:
|
|
|
c
|
|
|
cTo avoid inappropriate use of obsolete subroutines from earlier versions, a suffix 08 was
|
|
|
c added to the name of each subroutine in this release.
|
|
|
c
|
|
|
cA possibility has been added in this version to calculate vector components in the
|
|
|
c"Geocentric Solar Wind" (GSW) coordinate system, which, to our knowledge, was first
|
|
|
cintroduced by Hones et al., Planet. Space Sci., v.34, p.889, 1986 (aka GSWM, see Appendix,
|
|
|
cTsyganenko et al., JGRA, v.103(A4), p.6827, 1998). The GSW system is analogous to the
|
|
|
cstandard GSM, except that its X-axis is antiparallel to the currently observed solar wind
|
|
|
cflow vector, rather than aligned with the Earth-Sun line. The orientation of axes in the
|
|
|
cGSW system can be uniquely defined by specifying three components (VGSEX,VGSEY,VGSEZ) of
|
|
|
cthe solar wind velocity, and in the case of a strictly radial anti-sunward flow (VGSEY=
|
|
|
cVGSEZ=0) the GSW system becomes identical to the standard GSM, which fact was used here
|
|
|
cto minimize the number of subroutines in the package. To that end, instead of the special
|
|
|
ccase of the GSM coordinates, this version uses a more general GSW system, and three more
|
|
|
cinput parameters are added in the subroutine TS_RECALC_08, the observed values (VGSEX,VGSEY,
|
|
|
cVGSEZ) of the solar wind velocity. Invoking TS_RECALC_08 with VGSEY=VGSEZ=0 restores the
|
|
|
cstandard (sunward) orientation of the X axis, which allows one to easily convert vectors
|
|
|
cbetween GSW and GSM, as well as to/from other standard and commonly used systems. For more
|
|
|
c details, see the documentation file GEOPACK-2008.DOC.
|
|
|
c
|
|
|
cAnother modification allows users to have more control over the procedure of field line
|
|
|
cmapping using the subroutine TRACE. To that end, three new input parameters were added
|
|
|
cin that subroutine, allowing one to set (i) an upper limit, DSMAX, on the automatically
|
|
|
cadjusted step size, (ii) a permissible step error, ERR, and (iii) maximal length, LMAX,
|
|
|
cof arrays where field line point coordinates are stored. Minor changes were also made in
|
|
|
cthe tracing subroutine, to make it more compact and easier for understanding, and to
|
|
|
cprevent the algorithm from making uncontrollable large number of multiple loops in some
|
|
|
c cases with plasmoid-like field structures.
|
|
|
c
|
|
|
COne more subroutine, named GEODGEO_08, was added to the package, allowing one to convert
|
|
|
cgeodetic coordinates of a point in space (altitude above the Earth's WGS84 ellipsoid and
|
|
|
cgeodetic latitude) to geocentric radial distance and colatitude, and vice versa.
|
|
|
c
|
|
|
CFor a complete list of modifications made earlier in previous versions, see the
|
|
|
c documentation file GEOPACK-2008.DOC.
|
|
|
c
|
|
|
c----------------------------------------------------------------------------------
|
|
|
c
|
|
|
SUBROUTINE IGRF_GSW_08(XGSW,YGSW,ZGSW,HXGSW,HYGSW,HZGSW)
|
|
|
c
|
|
|
CCALCULATES COMPONENTS OF THE MAIN (INTERNAL) TS_GEOMAGNETIC FIELD IN THE GEOCENTRIC SOLAR-WIND
|
|
|
C(GSW) COORDINATE SYSTEM, USING IAGA INTERNATIONAL TS_GEOMAGNETIC REFERENCE MODEL COEFFICIENTS
|
|
|
C(e.g., http://www.ngdc.noaa.gov/IAGA/vmod/igrf.html, revised 22 March, 2005)
|
|
|
c
|
|
|
CTHE GSW SYSTEM IS ESSENTIALLY SIMILAR TO THE STANDARD GSM (THE TWO SYSTEMS BECOME IDENTICAL
|
|
|
CTO EACH OTHER IN THE CASE OF STRICTLY ANTI-TS_SUNWARD SOLAR WIND FLOW). FOR A DETAILED
|
|
|
C DEFINITION, SEE INTRODUCTORY COMMENTS FOR THE SUBROUTINE GSWGSE .
|
|
|
C
|
|
|
CBEFORE THE FIRST CALL OF THIS SUBROUTINE, OR, IF THE DATE/TIME (IYEAR,IDAY,IHOUR,MIN,ISEC),
|
|
|
COR THE SOLAR WIND VELOCITY COMPONENTS (VGSEX,VGSEY,VGSEZ) HAVE CHANGED, THE MODEL COEFFICIENTS
|
|
|
cAND GEO-GSW ROTATION MATRIX ELEMENTS SHOULD BE UPDATED BY CALLING THE SUBROUTINE TS_RECALC_08.
|
|
|
C
|
|
|
C -----INPUT PARAMETERS:
|
|
|
C
|
|
|
CXGSW,YGSW,ZGSW - CARTESIAN GEOCENTRIC SOLAR-WIND COORDINATES (IN UNITS RE=6371.2 KM)
|
|
|
C
|
|
|
C -----OUTPUT PARAMETERS:
|
|
|
C
|
|
|
CHXGSW,HYGSW,HZGSW - CARTESIAN GEOCENTRIC SOLAR-WIND COMPONENTS OF THE MAIN TS_GEOMAGNETIC
|
|
|
C FIELD IN NANOTESLA
|
|
|
C
|
|
|
C LAST MODIFICATION: FEB 07, 2008.
|
|
|
C THIS VERSION OF THE CODE ACCEPTS DATES FROM 1965 THROUGH 2015.
|
|
|
c
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C
|
|
|
C
|
|
|
|
|
|
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION HXGSW,HYGSW,HZGSW,XGSW,YGSW,ZGSW
|
|
|
DOUBLE PRECISION XGEO,YGEO,ZGEO,R,THETA,PHI,COLAT,ELONG
|
|
|
DOUBLE PRECISION BN,BE,BZ,B
|
|
|
C .. common block added by B. Rideout to get date from RECALC_08
|
|
|
COMMON /BR_FYEAR/FYEAR
|
|
|
DOUBLE PRECISION FYEAR
|
|
|
C ..
|
|
|
C Rewritten by Bill Rideout. Now calls call igrf13.f methods
|
|
|
C
|
|
|
C convert to position to X,Y,Z
|
|
|
CALL GEOGSW(XGEO,YGEO,ZGEO,XGSW,YGSW,ZGSW,-1)
|
|
|
C convert to spherical position
|
|
|
CALL TS_SPHCAR_08(R,THETA,PHI,XGEO,YGEO,ZGEO,-1)
|
|
|
C convert to R, COLAT, ELONG
|
|
|
R = R * 6378.1
|
|
|
COLAT = THETA * 57.295779
|
|
|
ELONG = PHI * 57.295779
|
|
|
C call igrf
|
|
|
CALL igrf13syn(0,FYEAR,2,R,COLAT,ELONG,BN,BE,BZ,B)
|
|
|
BZ = -1.0 * BZ
|
|
|
C convert to X,Y,Z coordinates
|
|
|
CALL TS_BSPCAR_08(THETA,PHI,BZ,-1.0*BN,BE,XGEO,YGEO,ZGEO)
|
|
|
CALL GEOGSW(XGEO,YGEO,ZGEO,HXGSW,HYGSW,HZGSW,1)
|
|
|
RETURN
|
|
|
END
|
|
|
C
|
|
|
c==========================================================================================
|
|
|
c
|
|
|
SUBROUTINE IGRF_GEO_08(R,THETA,PHI,BR,BTHETA,BPHI)
|
|
|
c
|
|
|
CCALCULATES COMPONENTS OF THE MAIN (INTERNAL) TS_GEOMAGNETIC FIELD IN THE SPHERICAL GEOGRAPHIC
|
|
|
C(GEOCENTRIC) COORDINATE SYSTEM, USING IAGA INTERNATIONAL TS_GEOMAGNETIC REFERENCE MODEL
|
|
|
CCOEFFICIENTS (e.g., http://www.ngdc.noaa.gov/IAGA/vmod/igrf.html, revised: 22 March, 2005)
|
|
|
C
|
|
|
CBEFORE THE FIRST CALL OF THIS SUBROUTINE, OR IF THE DATE (IYEAR AND IDAY) WAS CHANGED,
|
|
|
CTHE MODEL COEFFICIENTS SHOULD BE UPDATED BY CALLING THE SUBROUTINE TS_RECALC_08
|
|
|
C
|
|
|
C -----INPUT PARAMETERS:
|
|
|
C
|
|
|
C R, THETA, PHI - SPHERICAL GEOGRAPHIC (GEOCENTRIC) COORDINATES:
|
|
|
CRADIAL DISTANCE R IN UNITS RE=6371.2 KM, COLATITUDE THETA AND LONGITUDE PHI IN RADIANS
|
|
|
C
|
|
|
C -----OUTPUT PARAMETERS:
|
|
|
C
|
|
|
CBR, BTHETA, BPHI - SPHERICAL COMPONENTS OF THE MAIN TS_GEOMAGNETIC FIELD IN NANOTESLA
|
|
|
C (POSITIVE BR OUTWARD, BTHETA SOUTHWARD, BPHI EASTWARD)
|
|
|
C
|
|
|
C LAST MODIFICATION: MAY 4, 2005.
|
|
|
C THIS VERSION OF THE CODE ACCEPTS DATES FROM 1965 THROUGH 2015.
|
|
|
c
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C
|
|
|
C
|
|
|
|
|
|
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION BPHI,BR,BTHETA,PHI,R,THETA
|
|
|
C ..
|
|
|
C .. Local Scalars ..
|
|
|
DOUBLE PRECISION AN,BBF,BBR,BBT,BI,C,CF,D,D2,DP,E,HH,P,P2,PM,PP,Q,
|
|
|
* QQ,S,SF,W,X,XK,Y,Z
|
|
|
INTEGER IRP3,K,M,MM,MN,N,NM
|
|
|
C ..
|
|
|
C .. Local Arrays ..
|
|
|
DOUBLE PRECISION A(14),B(14)
|
|
|
C ..
|
|
|
C .. Intrinsic Functions ..
|
|
|
INTRINSIC COS,SIN
|
|
|
C ..
|
|
|
C .. Common blocks ..
|
|
|
COMMON /GEOPACK2/G,H,REC
|
|
|
DOUBLE PRECISION G(105),H(105),REC(105)
|
|
|
C ..
|
|
|
C = COS(THETA)
|
|
|
S = SIN(THETA)
|
|
|
CF = COS(PHI)
|
|
|
SF = SIN(PHI)
|
|
|
C
|
|
|
PP = 1.D0/R
|
|
|
P = PP
|
|
|
C
|
|
|
CIN THIS NEW VERSION, THE OPTIMAL VALUE OF THE PARAMETER NM (MAXIMAL ORDER OF THE SPHERICAL
|
|
|
CHARMONIC EXPANSION) IS NOT USER-PRESCRIBED, BUT CALCULATED INSIDE THE SUBROUTINE, BASED
|
|
|
C ON THE VALUE OF THE RADIAL DISTANCE R:
|
|
|
C
|
|
|
IRP3 = R + 2
|
|
|
NM = 3 + 30/IRP3
|
|
|
IF (NM.GT.13) NM = 13
|
|
|
|
|
|
K = NM + 1
|
|
|
DO 10 N = 1,K
|
|
|
P = P*PP
|
|
|
A(N) = P
|
|
|
B(N) = P*N
|
|
|
10 CONTINUE
|
|
|
|
|
|
P = 1.D0
|
|
|
D = 0.D0
|
|
|
BBR = 0.D0
|
|
|
BBT = 0.D0
|
|
|
BBF = 0.D0
|
|
|
|
|
|
DO 60 M = 1,K
|
|
|
IF (M.EQ.1) GO TO 20
|
|
|
MM = M - 1
|
|
|
W = X
|
|
|
X = W*CF + Y*SF
|
|
|
Y = Y*CF - W*SF
|
|
|
GO TO 30
|
|
|
20 X = 0.D0
|
|
|
Y = 1.D0
|
|
|
30 Q = P
|
|
|
Z = D
|
|
|
BI = 0.D0
|
|
|
P2 = 0.D0
|
|
|
D2 = 0.D0
|
|
|
DO 50 N = M,K
|
|
|
AN = A(N)
|
|
|
MN = N*(N-1)/2 + M
|
|
|
E = G(MN)
|
|
|
HH = H(MN)
|
|
|
W = E*Y + HH*X
|
|
|
BBR = BBR + B(N)*W*Q
|
|
|
BBT = BBT - AN*W*Z
|
|
|
IF (M.EQ.1) GO TO 40
|
|
|
QQ = Q
|
|
|
IF (S.LT.1.D-5) QQ = Z
|
|
|
BI = BI + AN*(E*X-HH*Y)*QQ
|
|
|
40 XK = REC(MN)
|
|
|
DP = C*Z - S*Q - XK*D2
|
|
|
PM = C*Q - XK*P2
|
|
|
D2 = Z
|
|
|
P2 = Q
|
|
|
Z = DP
|
|
|
Q = PM
|
|
|
50 CONTINUE
|
|
|
D = S*D + C*P
|
|
|
P = S*P
|
|
|
IF (M.EQ.1) GO TO 60
|
|
|
BI = BI*MM
|
|
|
BBF = BBF + BI
|
|
|
60 CONTINUE
|
|
|
C
|
|
|
BR = BBR
|
|
|
BTHETA = BBT
|
|
|
IF (S.LT.1.D-5) GO TO 70
|
|
|
BPHI = BBF/S
|
|
|
RETURN
|
|
|
70 IF (C.LT.0.D0) BBF = -BBF
|
|
|
BPHI = BBF
|
|
|
|
|
|
RETURN
|
|
|
END
|
|
|
C
|
|
|
c==========================================================================================
|
|
|
c
|
|
|
SUBROUTINE DIP_08(XGSW,YGSW,ZGSW,BXGSW,BYGSW,BZGSW)
|
|
|
C
|
|
|
CCALCULATES GSW (GEOCENTRIC SOLAR-WIND) COMPONENTS OF GEODIPOLE FIELD WITH THE DIPOLE MOMENT
|
|
|
CCORRESPONDING TO THE EPOCH, SPECIFIED BY CALLING SUBROUTINE TS_RECALC_08 (SHOULD BE
|
|
|
CINVOKED BEFORE THE FIRST USE OF THIS ONE, OR IF THE DATE/TIME, AND/OR THE OBSERVED
|
|
|
C SOLAR WIND DIRECTION, HAVE CHANGED.
|
|
|
C
|
|
|
CTHE GSW COORDINATE SYSTEM IS ESSENTIALLY SIMILAR TO THE STANDARD GSM (THE TWO SYSTEMS BECOME
|
|
|
CIDENTICAL TO EACH OTHER IN THE CASE OF STRICTLY RADIAL ANTI-TS_SUNWARD SOLAR WIND FLOW). ITS
|
|
|
CDETAILED DEFINITION IS GIVEN IN INTRODUCTORY COMMENTS FOR THE SUBROUTINE GSWGSE .
|
|
|
|
|
|
C--INPUT PARAMETERS: XGSW,YGSW,ZGSW - GSW COORDINATES IN RE (1 RE = 6371.2 km)
|
|
|
C
|
|
|
C--OUTPUT PARAMETERS: BXGSW,BYGSW,BZGSW - FIELD COMPONENTS IN GSW SYSTEM, IN NANOTESLA.
|
|
|
C
|
|
|
C LAST MODIFICATION: JAN 28, 2008.
|
|
|
C
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION BXGSW,BYGSW,BZGSW,XGSW,YGSW,ZGSW
|
|
|
C ..
|
|
|
C .. Local Scalars ..
|
|
|
DOUBLE PRECISION DIPMOM,P,Q,T,U,V
|
|
|
C ..
|
|
|
C .. Intrinsic Functions ..
|
|
|
INTRINSIC SQRT
|
|
|
C ..
|
|
|
C .. Common blocks ..
|
|
|
COMMON /GEOPACK1/AA,SPS,CPS,BB
|
|
|
COMMON /GEOPACK2/G,H,REC
|
|
|
DOUBLE PRECISION CPS,SPS
|
|
|
DOUBLE PRECISION AA(10),BB(22),G(105),H(105),REC(105)
|
|
|
C ..
|
|
|
DIPMOM = SQRT(G(2)**2+G(3)**2+H(3)**2)
|
|
|
C
|
|
|
P = XGSW**2
|
|
|
U = ZGSW**2
|
|
|
V = 3.D0*ZGSW*XGSW
|
|
|
T = YGSW**2
|
|
|
Q = DIPMOM/SQRT(P+T+U)**5
|
|
|
BXGSW = Q*((T+U-2.D0*P)*SPS-V*CPS)
|
|
|
BYGSW = -3.D0*YGSW*Q*(XGSW*SPS+ZGSW*CPS)
|
|
|
BZGSW = Q*((P+T-2.D0*U)*CPS-V*SPS)
|
|
|
RETURN
|
|
|
END
|
|
|
|
|
|
C *******************************************************************
|
|
|
c
|
|
|
SUBROUTINE TS_SUN_08(IYEAR,IDAY,IHOUR,MIN,ISEC,GST,SLONG,SRASN,
|
|
|
* SDEC)
|
|
|
C *PT*WARNING* Already double-precision
|
|
|
C
|
|
|
C CALCULATES FOUR QUANTITIES NECESSARY FOR COORDINATE TRANSFORMATIONS
|
|
|
CWHICH DEPEND ON TS_SUN POSITION (AND, HENCE, ON UNIVERSAL TIME AND SEASON)
|
|
|
C
|
|
|
C ------- INPUT PARAMETERS:
|
|
|
CIYR,IDAY,IHOUR,MIN,ISEC - YEAR, DAY, AND UNIVERSAL TIME IN HOURS, MINUTES,
|
|
|
C AND SECONDS (IDAY=1 CORRESPONDS TO JANUARY 1).
|
|
|
C
|
|
|
C ------- OUTPUT PARAMETERS:
|
|
|
C GST - GREENWICH MEAN SIDEREAL TIME, SLONG - LONGITUDE ALONG ECLIPTIC
|
|
|
C SRASN - RIGHT ASCENSION, SDEC - DECLINATION OF THE TS_SUN (RADIANS)
|
|
|
C ORIGINAL VERSION OF THIS SUBROUTINE HAS BEEN COMPILED FROM:
|
|
|
C RUSSELL, C.T., COSMIC ELECTRODYNAMICS, 1971, V.2, PP.184-196.
|
|
|
C
|
|
|
C LAST MODIFICATION: MARCH 31, 2003 (ONLY SOME NOTATION CHANGES)
|
|
|
C
|
|
|
C ORIGINAL VERSION WRITTEN BY: Gilbert D. Mead
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION GST,SDEC,SLONG,SRASN
|
|
|
INTEGER IDAY,IHOUR,ISEC,IYEAR,MIN
|
|
|
C ..
|
|
|
C .. Local Scalars ..
|
|
|
DOUBLE PRECISION COSD,DJ,FDAY,G,OBLIQ,RAD,SC,SIND,SLP,SOB,T,VL
|
|
|
C ..
|
|
|
C .. External Functions ..
|
|
|
C DOUBLE PRECISION DFLOAT
|
|
|
C EXTERNAL DFLOAT
|
|
|
C ..
|
|
|
C .. Intrinsic Functions ..
|
|
|
INTRINSIC ATAN,ATAN2,COS,DMOD,SIN,SQRT
|
|
|
C ..
|
|
|
C .. Data statements ..
|
|
|
DATA RAD/57.295779513D0/
|
|
|
C ..
|
|
|
C
|
|
|
IF (IYEAR.LT.1901 .OR. IYEAR.GT.2099) RETURN
|
|
|
C *PT*WARNING* Constant already double-precision
|
|
|
FDAY = DBLE(IHOUR*3600+MIN*60+ISEC)/86400.D0
|
|
|
C *PT*WARNING* Constant already double-precision
|
|
|
DJ = 365*(IYEAR-1900) + (IYEAR-1901)/4 + IDAY - 0.5D0 + FDAY
|
|
|
T = DJ/36525.D0
|
|
|
C *PT*WARNING* Constant already double-precision
|
|
|
VL = DMOD(279.696678D0+0.9856473354D0*DJ,360.D0)
|
|
|
C *PT*WARNING* Constant already double-precision
|
|
|
GST = DMOD(279.690983D0+.9856473354D0*DJ+360.D0*FDAY+180.D0,
|
|
|
* 360.D0)/RAD
|
|
|
C *PT*WARNING* Constant already double-precision
|
|
|
G = DMOD(358.475845D0+0.985600267D0*DJ,360.D0)/RAD
|
|
|
SLONG = (VL+(1.91946D0-0.004789D0*T)*SIN(G)+
|
|
|
* 0.020094D0*SIN(2.D0*G))/RAD
|
|
|
IF (SLONG.GT.6.2831853D0) SLONG = SLONG - 6.2831853D0
|
|
|
IF (SLONG.LT.0.D0) SLONG = SLONG + 6.2831853D0
|
|
|
OBLIQ = (23.45229D0-0.0130125D0*T)/RAD
|
|
|
SOB = SIN(OBLIQ)
|
|
|
SLP = SLONG - 9.924D-5
|
|
|
C
|
|
|
C THE LAST CONSTANT IS A CORRECTION FOR THE ANGULAR ABERRATION DUE TO
|
|
|
C EARTH'S ORBITAL MOTION
|
|
|
C
|
|
|
SIND = SOB*SIN(SLP)
|
|
|
COSD = SQRT(1.D0-SIND**2)
|
|
|
SC = SIND/COSD
|
|
|
SDEC = ATAN(SC)
|
|
|
SRASN = 3.141592654D0 - ATAN2(COS(OBLIQ)/SOB*SC,-COS(SLP)/COSD)
|
|
|
RETURN
|
|
|
END
|
|
|
C
|
|
|
C================================================================================
|
|
|
c
|
|
|
SUBROUTINE TS_SPHCAR_08(R,THETA,PHI,X,Y,Z,J)
|
|
|
C
|
|
|
C CONVERTS SPHERICAL COORDS INTO CARTESIAN ONES AND VICE VERSA
|
|
|
C (THETA AND PHI IN RADIANS).
|
|
|
C
|
|
|
C J>0 J<0
|
|
|
C -----INPUT: J,R,THETA,PHI J,X,Y,Z
|
|
|
C ----OUTPUT: X,Y,Z R,THETA,PHI
|
|
|
C
|
|
|
C NOTE: AT THE POLES (X=0 AND Y=0) WE ASSUME PHI=0 WHEN CONVERTING
|
|
|
C FROM CARTESIAN TO SPHERICAL COORDS (I.E., FOR J<0)
|
|
|
C
|
|
|
C LAST MOFIFICATION: APRIL 1, 2003 (ONLY SOME NOTATION CHANGES AND MORE
|
|
|
C COMMENTS ADDED)
|
|
|
C
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION PHI,R,THETA,X,Y,Z
|
|
|
INTEGER J
|
|
|
C ..
|
|
|
C .. Local Scalars ..
|
|
|
DOUBLE PRECISION SQ
|
|
|
C ..
|
|
|
C .. Intrinsic Functions ..
|
|
|
INTRINSIC ATAN2,COS,SIN,SQRT
|
|
|
C ..
|
|
|
IF (J.GT.0) GO TO 30
|
|
|
SQ = X**2 + Y**2
|
|
|
R = SQRT(SQ+Z**2)
|
|
|
IF (SQ.NE.0.D0) GO TO 20
|
|
|
PHI = 0.D0
|
|
|
IF (Z.LT.0.D0) GO TO 10
|
|
|
THETA = 0.D0
|
|
|
RETURN
|
|
|
10 THETA = 3.141592654D0
|
|
|
RETURN
|
|
|
20 SQ = SQRT(SQ)
|
|
|
PHI = ATAN2(Y,X)
|
|
|
THETA = ATAN2(SQ,Z)
|
|
|
IF (PHI.LT.0.D0) PHI = PHI + 6.28318531D0
|
|
|
RETURN
|
|
|
30 SQ = R*SIN(THETA)
|
|
|
X = SQ*COS(PHI)
|
|
|
Y = SQ*SIN(PHI)
|
|
|
Z = R*COS(THETA)
|
|
|
RETURN
|
|
|
END
|
|
|
C
|
|
|
C===========================================================================
|
|
|
c
|
|
|
SUBROUTINE TS_BSPCAR_08(THETA,PHI,BR,BTHETA,BPHI,BX,BY,BZ)
|
|
|
C
|
|
|
C CALCULATES CARTESIAN FIELD COMPONENTS FROM LOCAL SPHERICAL ONES
|
|
|
C
|
|
|
C -----INPUT: THETA,PHI - SPHERICAL ANGLES OF THE POINT IN RADIANS
|
|
|
C BR,BTHETA,BPHI - LOCAL SPHERICAL COMPONENTS OF THE FIELD
|
|
|
C -----OUTPUT: BX,BY,BZ - CARTESIAN COMPONENTS OF THE FIELD
|
|
|
C
|
|
|
C LAST MOFIFICATION: APRIL 1, 2003 (ONLY SOME NOTATION CHANGES)
|
|
|
C
|
|
|
C WRITTEN BY: N. A. TSYGANENKO
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION BPHI,BR,BTHETA,BX,BY,BZ,PHI,THETA
|
|
|
C ..
|
|
|
C .. Local Scalars ..
|
|
|
DOUBLE PRECISION BE,C,CF,S,SF
|
|
|
C ..
|
|
|
C .. Intrinsic Functions ..
|
|
|
INTRINSIC COS,SIN
|
|
|
C ..
|
|
|
S = SIN(THETA)
|
|
|
C = COS(THETA)
|
|
|
SF = SIN(PHI)
|
|
|
CF = COS(PHI)
|
|
|
BE = BR*S + BTHETA*C
|
|
|
BX = BE*CF - BPHI*SF
|
|
|
BY = BE*SF + BPHI*CF
|
|
|
BZ = BR*C - BTHETA*S
|
|
|
RETURN
|
|
|
END
|
|
|
c
|
|
|
C==============================================================================
|
|
|
C
|
|
|
SUBROUTINE BCARSP_08(X,Y,Z,BX,BY,BZ,BR,BTHETA,BPHI)
|
|
|
C
|
|
|
CALCULATES LOCAL SPHERICAL FIELD COMPONENTS FROM THOSE IN CARTESIAN SYSTEM
|
|
|
C
|
|
|
C -----INPUT: X,Y,Z - CARTESIAN COMPONENTS OF THE POSITION VECTOR
|
|
|
C BX,BY,BZ - CARTESIAN COMPONENTS OF THE FIELD VECTOR
|
|
|
C-----OUTPUT: BR,BTHETA,BPHI - LOCAL SPHERICAL COMPONENTS OF THE FIELD VECTOR
|
|
|
C
|
|
|
C NOTE: AT THE POLES (THETA=0 OR THETA=PI) WE ASSUME PHI=0,
|
|
|
C AND HENCE BTHETA=BX, BPHI=BY
|
|
|
C
|
|
|
C WRITTEN AND ADDED TO THIS PACKAGE: APRIL 1, 2003,
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION BPHI,BR,BTHETA,BX,BY,BZ,X,Y,Z
|
|
|
C ..
|
|
|
C .. Local Scalars ..
|
|
|
DOUBLE PRECISION CPHI,CT,R,RHO,RHO2,SPHI,ST
|
|
|
C ..
|
|
|
C .. Intrinsic Functions ..
|
|
|
INTRINSIC SQRT
|
|
|
C ..
|
|
|
RHO2 = X**2 + Y**2
|
|
|
R = SQRT(RHO2+Z**2)
|
|
|
RHO = SQRT(RHO2)
|
|
|
|
|
|
IF (RHO.NE.0.D0) THEN
|
|
|
CPHI = X/RHO
|
|
|
SPHI = Y/RHO
|
|
|
ELSE
|
|
|
CPHI = 1.D0
|
|
|
SPHI = 0.D0
|
|
|
END IF
|
|
|
|
|
|
CT = Z/R
|
|
|
ST = RHO/R
|
|
|
|
|
|
BR = (X*BX+Y*BY+Z*BZ)/R
|
|
|
BTHETA = (BX*CPHI+BY*SPHI)*CT - BZ*ST
|
|
|
BPHI = BY*CPHI - BX*SPHI
|
|
|
|
|
|
RETURN
|
|
|
END
|
|
|
C
|
|
|
c=====================================================================================
|
|
|
C
|
|
|
SUBROUTINE TS_RECALC_08(IYEAR,IDAY,IHOUR,MIN,ISEC,VGSEX,VGSEY,
|
|
|
* VGSEZ)
|
|
|
C
|
|
|
C1. PREPARES ELEMENTS OF ROTATION MATRICES FOR TRANSFORMATIONS OF VECTORS BETWEEN
|
|
|
C SEVERAL COORDINATE SYSTEMS, MOST FREQUENTLY USED IN SPACE PHYSICS.
|
|
|
C
|
|
|
C2. PREPARES COEFFICIENTS USED IN THE CALCULATION OF THE MAIN TS_GEOMAGNETIC FIELD
|
|
|
C (IGRF MODEL)
|
|
|
C
|
|
|
CTHIS SUBROUTINE SHOULD BE INVOKED BEFORE USING THE FOLLOWING SUBROUTINES:
|
|
|
CIGRF_GEO_08, IGRF_GSW_08, DIP_08, TS_GEOMAG_08, GEOGSW, MAGSW_08, SMGSW_08, GSWGSE,
|
|
|
c GEIGEO_08, TRACE, STEP_08, RHAND_08.
|
|
|
C
|
|
|
CTHERE IS NO NEED TO REPEATEDLY INVOKE TS_RECALC_08, IF MULTIPLE CALCULATIONS ARE MADE
|
|
|
C FOR THE SAME DATE/TIME AND SOLAR WIND FLOW DIRECTION.
|
|
|
C
|
|
|
C -----INPUT PARAMETERS:
|
|
|
C
|
|
|
C IYEAR - YEAR NUMBER (FOUR DIGITS)
|
|
|
C IDAY - DAY OF YEAR (DAY 1 = JAN 1)
|
|
|
C IHOUR - HOUR OF DAY (00 TO 23)
|
|
|
C MIN - MINUTE OF HOUR (00 TO 59)
|
|
|
C ISEC - SECONDS OF MINUTE (00 TO 59)
|
|
|
CVGSEX,VGSEY,VGSEZ - GSE (GEOCENTRIC SOLAR-ECLIPTIC) COMPONENTS OF THE OBSERVED
|
|
|
C SOLAR WIND FLOW VELOCITY (IN KM/S)
|
|
|
C
|
|
|
CIMPORTANT: IF ONLY QUESTIONABLE INFORMATION (OR NO INFORMATION AT ALL) IS AVAILABLE
|
|
|
C ON THE SOLAR WIND SPEED, OR, IF THE STANDARD GSM AND/OR SM COORDINATES ARE
|
|
|
C INTENDED TO BE USED, THEN SET VGSEX=-400.0 AND VGSEY=VGSEZ=0. IN THIS CASE,
|
|
|
C THE GSW COORDINATE SYSTEM BECOMES IDENTICAL TO THE STANDARD GSM.
|
|
|
C
|
|
|
C IF ONLY SCALAR SPEED V OF THE SOLAR WIND IS KNOWN, THEN SETTING
|
|
|
C VGSEX=-V, VGSEY=29.78, VGSEZ=0.0 WILL TAKE INTO ACCOUNT THE ~4 degs
|
|
|
C ABERRATION OF THE MAGNETOSPHERE DUE TO EARTH'S ORBITAL MOTION
|
|
|
C
|
|
|
C IF ALL THREE GSE COMPONENTS OF THE SOLAR WIND VELOCITY ARE AVAILABLE,
|
|
|
C PLEASE NOTE THAT IN SOME SOLAR WIND DATABASES THE ABERRATION EFFECT
|
|
|
C HAS ALREADY BEEN TAKEN INTO ACCOUNT BY SUBTRACTING 29.78 KM/S FROM VYGSE;
|
|
|
C IN THAT CASE, THE UNABERRATED (OBSERVED) VYGSE VALUES SHOULD BE RESTORED
|
|
|
C BY ADDING BACK THE 29.78 KM/S CORRECTION. WHETHER OR NOT TO DO THAT, MUST
|
|
|
C BE EITHER VERIFIED WITH THE DATA ORIGINATOR OR DETERMINED BY AVERAGING
|
|
|
C VGSEY OVER A SUFFICIENTLY LONG TIME INTERVAL.
|
|
|
C
|
|
|
C -----OUTPUT PARAMETERS: NONE (ALL OUTPUT QUANTITIES ARE PLACED
|
|
|
C INTO THE COMMON BLOCKS /GEOPACK1/ AND /GEOPACK2/)
|
|
|
C
|
|
|
C OTHER SUBROUTINES CALLED BY THIS ONE: TS_SUN_08
|
|
|
C
|
|
|
C AUTHOR: N.A. TSYGANENKO
|
|
|
C DATE: DEC.1, 1991
|
|
|
C
|
|
|
C REVISION OF NOVEMBER 30, 2010:
|
|
|
C
|
|
|
CThe table of IGRF coefficients was extended to include those for the epoch 2010
|
|
|
c (for details, see http://www.ngdc.noaa.gov/IAGA/vmod/igrf.html)
|
|
|
C
|
|
|
CREVISION OF NOVEMBER 15, 2007: ADDED THE POSSIBILITY TO TAKE INTO ACCOUNT THE OBSERVED
|
|
|
CDEFLECTION OF THE SOLAR WIND FLOW FROM STRICTLY RADIAL DIRECTION. TO THAT END, THREE
|
|
|
CGSE COMPONENTS OF THE SOLAR WIND VELOCITY WERE ADDED TO THE INPUT PARAMETERS.
|
|
|
C
|
|
|
c CORRECTION OF MAY 9, 2006: INTERPOLATION OF THE COEFFICIENTS (BETWEEN
|
|
|
C LABELS 50 AND 105) IS NOW MADE THROUGH THE LAST ELEMENT OF THE ARRAYS
|
|
|
C G(105) AND H(105) (PREVIOUSLY MADE ONLY THROUGH N=66, WHICH IN SOME
|
|
|
C CASES CAUSED RUNTIME ERRORS)
|
|
|
c
|
|
|
C REVISION OF MAY 3, 2005:
|
|
|
CThe table of IGRF coefficients was extended to include those for the epoch 2005
|
|
|
c the maximal order of spherical harmonics was also increased up to 13
|
|
|
c (for details, see http://www.ngdc.noaa.gov/IAGA/vmod/igrf.html)
|
|
|
c
|
|
|
C REVISION OF APRIL 3, 2003:
|
|
|
cThe code now includes preparation of the model coefficients for the subroutines
|
|
|
cIGRF_08 and TS_GEOMAG_08. This eliminates the need for the SAVE statements, used
|
|
|
cin the old versions, making the codes easier and more compiler-independent.
|
|
|
C
|
|
|
C
|
|
|
C
|
|
|
CTHE COMMON BLOCK /GEOPACK1/ CONTAINS ELEMENTS OF THE ROTATION MATRICES AND OTHER
|
|
|
CPARAMETERS RELATED TO THE COORDINATE TRANSFORMATIONS PERFORMED BY THIS PACKAGE
|
|
|
C
|
|
|
C
|
|
|
CTHE COMMON BLOCK /GEOPACK2/ CONTAINS COEFFICIENTS OF THE IGRF FIELD MODEL, CALCULATED
|
|
|
CFOR A GIVEN YEAR AND DAY FROM THEIR STANDARD EPOCH VALUES. THE ARRAY REC CONTAINS
|
|
|
CCOEFFICIENTS USED IN THE RECURSION RELATIONS FOR LEGENDRE ASSOCIATE POLYNOMIALS.
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION VGSEX,VGSEY,VGSEZ
|
|
|
INTEGER IDAY,IHOUR,ISEC,IYEAR,MIN
|
|
|
C ..
|
|
|
C .. Local Scalars ..
|
|
|
DOUBLE PRECISION AA,DIP1,DIP2,DIP3,DJ,DT,DX1,DX2,DX3,DY1,DY2,DY3,
|
|
|
* DZ1,DZ2,DZ3,EXMAGX,EXMAGY,EXMAGZ,EYMAGX,EYMAGY,
|
|
|
* F1,F2,GST,G_10,G_11,H_11,OBLIQ,P,S,S1,S2,S3,SDEC,
|
|
|
* SLONG,SQ,SQQ,SQR,SRASN,T,V,X1,X2,X3,Y,Y1,Y2,Y3,
|
|
|
* Z1,Z2,Z3
|
|
|
INTEGER ISW,IY,M,MN,MNN,N,N2
|
|
|
C ..
|
|
|
C .. Local Arrays ..
|
|
|
DOUBLE PRECISION DG10(45),DH10(45),G00(105),G05(105),G10(105),
|
|
|
* G65(105),G70(105),G75(105),G80(105),G85(105),
|
|
|
* G90(105),G95(105),H00(105),H05(105),H10(105),
|
|
|
* H65(105),H70(105),H75(105),H80(105),H85(105),
|
|
|
* H90(105),H95(105)
|
|
|
C ..
|
|
|
C .. External Subroutines ..
|
|
|
EXTERNAL TS_SUN_08
|
|
|
C ..
|
|
|
C .. Intrinsic Functions ..
|
|
|
INTRINSIC ASIN,COS,DBLE,SIN,SQRT
|
|
|
C ..
|
|
|
C .. Common blocks ..
|
|
|
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,
|
|
|
* E11,E21,E31,E12,E22,E32,E13,E23,E33
|
|
|
COMMON /GEOPACK2/G,H,REC
|
|
|
DOUBLE PRECISION A11,A12,A13,A21,A22,A23,A31,A32,A33,CFI,CGST,CL0,
|
|
|
* CPS,CT0,CTCL,CTSL,DS3,E11,E12,E13,E21,E22,E23,
|
|
|
* E31,E32,E33,PSI,SFI,SGST,SL0,SPS,ST0,STCL,STSL
|
|
|
DOUBLE PRECISION G(105),H(105),REC(105)
|
|
|
C added by B. Rideout to allow time to be passed to my igrf call
|
|
|
COMMON /BR_FYEAR/FYEAR
|
|
|
DOUBLE PRECISION FYEAR
|
|
|
C ..
|
|
|
C .. Save statement ..
|
|
|
SAVE ISW
|
|
|
C ..
|
|
|
C .. Data statements ..
|
|
|
C
|
|
|
c
|
|
|
c
|
|
|
c
|
|
|
c
|
|
|
c
|
|
|
c
|
|
|
C
|
|
|
C
|
|
|
C
|
|
|
C
|
|
|
C
|
|
|
C
|
|
|
C
|
|
|
C
|
|
|
C
|
|
|
C
|
|
|
C
|
|
|
DATA ISW/0/
|
|
|
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,
|
|
|
* -228.D0,4.D0,1.D0,-111.D0,75.D0,-57.D0,4.D0,13.D0,-26.D0,
|
|
|
* -6.D0,13.D0,1.D0,13.D0,5.D0,-4.D0,-14.D0,0.D0,8.D0,-1.D0,
|
|
|
* 11.D0,4.D0,8.D0,10.D0,2.D0,-13.D0,10.D0,-1.D0,-1.D0,5.D0,
|
|
|
* 1.D0,-2.D0,-2.D0,-3.D0,2.D0,-5.D0,-2.D0,4.D0,4.D0,0.D0,2.D0,
|
|
|
* 2.D0,0.D0,39*0.D0/
|
|
|
DATA H65/0.D0,0.D0,5776.D0,0.D0,-2016.D0,114.D0,0.D0,-404.D0,
|
|
|
* 240.D0,-165.D0,0.D0,148.D0,-269.D0,13.D0,-269.D0,0.D0,19.D0,
|
|
|
* 128.D0,-126.D0,-97.D0,81.D0,0.D0,-11.D0,100.D0,68.D0,-32.D0,
|
|
|
* -8.D0,-7.D0,0.D0,-61.D0,-27.D0,-2.D0,6.D0,26.D0,-23.D0,
|
|
|
* -12.D0,0.D0,7.D0,-12.D0,9.D0,-16.D0,4.D0,24.D0,-3.D0,-17.D0,
|
|
|
* 0.D0,-22.D0,15.D0,7.D0,-4.D0,-5.D0,10.D0,10.D0,-4.D0,1.D0,
|
|
|
* 0.D0,2.D0,1.D0,2.D0,6.D0,-4.D0,0.D0,-2.D0,3.D0,0.D0,-6.D0,
|
|
|
* 39*0.D0/
|
|
|
DATA G70/0.D0,-30220.D0,-2068.D0,-1781.D0,3000.D0,1611.D0,1287.D0,
|
|
|
* -2091.D0,1278.D0,838.D0,952.D0,800.D0,461.D0,-395.D0,234.D0,
|
|
|
* -216.D0,359.D0,262.D0,-42.D0,-160.D0,-56.D0,43.D0,64.D0,
|
|
|
* 15.D0,-212.D0,2.D0,3.D0,-112.D0,72.D0,-57.D0,1.D0,14.D0,
|
|
|
* -22.D0,-2.D0,13.D0,-2.D0,14.D0,6.D0,-2.D0,-13.D0,-3.D0,5.D0,
|
|
|
* 0.D0,11.D0,3.D0,8.D0,10.D0,2.D0,-12.D0,10.D0,-1.D0,0.D0,3.D0,
|
|
|
* 1.D0,-1.D0,-3.D0,-3.D0,2.D0,-5.D0,-1.D0,6.D0,4.D0,1.D0,0.D0,
|
|
|
* 3.D0,-1.D0,39*0.D0/
|
|
|
DATA H70/0.D0,0.D0,5737.D0,0.D0,-2047.D0,25.D0,0.D0,-366.D0,
|
|
|
* 251.D0,-196.D0,0.D0,167.D0,-266.D0,26.D0,-279.D0,0.D0,26.D0,
|
|
|
* 139.D0,-139.D0,-91.D0,83.D0,0.D0,-12.D0,100.D0,72.D0,-37.D0,
|
|
|
* -6.D0,1.D0,0.D0,-70.D0,-27.D0,-4.D0,8.D0,23.D0,-23.D0,-11.D0,
|
|
|
* 0.D0,7.D0,-15.D0,6.D0,-17.D0,6.D0,21.D0,-6.D0,-16.D0,0.D0,
|
|
|
* -21.D0,16.D0,6.D0,-4.D0,-5.D0,10.D0,11.D0,-2.D0,1.D0,0.D0,
|
|
|
* 1.D0,1.D0,3.D0,4.D0,-4.D0,0.D0,-1.D0,3.D0,1.D0,-4.D0,39*0.D0/
|
|
|
DATA G75/0.D0,-30100.D0,-2013.D0,-1902.D0,3010.D0,1632.D0,1276.D0,
|
|
|
* -2144.D0,1260.D0,830.D0,946.D0,791.D0,438.D0,-405.D0,216.D0,
|
|
|
* -218.D0,356.D0,264.D0,-59.D0,-159.D0,-49.D0,45.D0,66.D0,
|
|
|
* 28.D0,-198.D0,1.D0,6.D0,-111.D0,71.D0,-56.D0,1.D0,16.D0,
|
|
|
* -14.D0,0.D0,12.D0,-5.D0,14.D0,6.D0,-1.D0,-12.D0,-8.D0,4.D0,
|
|
|
* 0.D0,10.D0,1.D0,7.D0,10.D0,2.D0,-12.D0,10.D0,-1.D0,-1.D0,
|
|
|
* 4.D0,1.D0,-2.D0,-3.D0,-3.D0,2.D0,-5.D0,-2.D0,5.D0,4.D0,1.D0,
|
|
|
* 0.D0,3.D0,-1.D0,39*0.D0/
|
|
|
DATA H75/0.D0,0.D0,5675.D0,0.D0,-2067.D0,-68.D0,0.D0,-333.D0,
|
|
|
* 262.D0,-223.D0,0.D0,191.D0,-265.D0,39.D0,-288.D0,0.D0,31.D0,
|
|
|
* 148.D0,-152.D0,-83.D0,88.D0,0.D0,-13.D0,99.D0,75.D0,-41.D0,
|
|
|
* -4.D0,11.D0,0.D0,-77.D0,-26.D0,-5.D0,10.D0,22.D0,-23.D0,
|
|
|
* -12.D0,0.D0,6.D0,-16.D0,4.D0,-19.D0,6.D0,18.D0,-10.D0,-17.D0,
|
|
|
* 0.D0,-21.D0,16.D0,7.D0,-4.D0,-5.D0,10.D0,11.D0,-3.D0,1.D0,
|
|
|
* 0.D0,1.D0,1.D0,3.D0,4.D0,-4.D0,-1.D0,-1.D0,3.D0,1.D0,-5.D0,
|
|
|
* 39*0.D0/
|
|
|
DATA G80/0.D0,-29992.D0,-1956.D0,-1997.D0,3027.D0,1663.D0,1281.D0,
|
|
|
* -2180.D0,1251.D0,833.D0,938.D0,782.D0,398.D0,-419.D0,199.D0,
|
|
|
* -218.D0,357.D0,261.D0,-74.D0,-162.D0,-48.D0,48.D0,66.D0,
|
|
|
* 42.D0,-192.D0,4.D0,14.D0,-108.D0,72.D0,-59.D0,2.D0,21.D0,
|
|
|
* -12.D0,1.D0,11.D0,-2.D0,18.D0,6.D0,0.D0,-11.D0,-7.D0,4.D0,
|
|
|
* 3.D0,6.D0,-1.D0,5.D0,10.D0,1.D0,-12.D0,9.D0,-3.D0,-1.D0,7.D0,
|
|
|
* 2.D0,-5.D0,-4.D0,-4.D0,2.D0,-5.D0,-2.D0,5.D0,3.D0,1.D0,2.D0,
|
|
|
* 3.D0,0.D0,39*0.D0/
|
|
|
DATA H80/0.D0,0.D0,5604.D0,0.D0,-2129.D0,-200.D0,0.D0,-336.D0,
|
|
|
* 271.D0,-252.D0,0.D0,212.D0,-257.D0,53.D0,-297.D0,0.D0,46.D0,
|
|
|
* 150.D0,-151.D0,-78.D0,92.D0,0.D0,-15.D0,93.D0,71.D0,-43.D0,
|
|
|
* -2.D0,17.D0,0.D0,-82.D0,-27.D0,-5.D0,16.D0,18.D0,-23.D0,
|
|
|
* -10.D0,0.D0,7.D0,-18.D0,4.D0,-22.D0,9.D0,16.D0,-13.D0,-15.D0,
|
|
|
* 0.D0,-21.D0,16.D0,9.D0,-5.D0,-6.D0,9.D0,10.D0,-6.D0,2.D0,
|
|
|
* 0.D0,1.D0,0.D0,3.D0,6.D0,-4.D0,0.D0,-1.D0,4.D0,0.D0,-6.D0,
|
|
|
* 39*0.D0/
|
|
|
DATA G85/0.D0,-29873.D0,-1905.D0,-2072.D0,3044.D0,1687.D0,1296.D0,
|
|
|
* -2208.D0,1247.D0,829.D0,936.D0,780.D0,361.D0,-424.D0,170.D0,
|
|
|
* -214.D0,355.D0,253.D0,-93.D0,-164.D0,-46.D0,53.D0,65.D0,
|
|
|
* 51.D0,-185.D0,4.D0,16.D0,-102.D0,74.D0,-62.D0,3.D0,24.D0,
|
|
|
* -6.D0,4.D0,10.D0,0.D0,21.D0,6.D0,0.D0,-11.D0,-9.D0,4.D0,4.D0,
|
|
|
* 4.D0,-4.D0,5.D0,10.D0,1.D0,-12.D0,9.D0,-3.D0,-1.D0,7.D0,1.D0,
|
|
|
* -5.D0,-4.D0,-4.D0,3.D0,-5.D0,-2.D0,5.D0,3.D0,1.D0,2.D0,3.D0,
|
|
|
* 0.D0,39*0.D0/
|
|
|
DATA H85/0.D0,0.D0,5500.D0,0.D0,-2197.D0,-306.D0,0.D0,-310.D0,
|
|
|
* 284.D0,-297.D0,0.D0,232.D0,-249.D0,69.D0,-297.D0,0.D0,47.D0,
|
|
|
* 150.D0,-154.D0,-75.D0,95.D0,0.D0,-16.D0,88.D0,69.D0,-48.D0,
|
|
|
* -1.D0,21.D0,0.D0,-83.D0,-27.D0,-2.D0,20.D0,17.D0,-23.D0,
|
|
|
* -7.D0,0.D0,8.D0,-19.D0,5.D0,-23.D0,11.D0,14.D0,-15.D0,-11.D0,
|
|
|
* 0.D0,-21.D0,15.D0,9.D0,-6.D0,-6.D0,9.D0,9.D0,-7.D0,2.D0,0.D0,
|
|
|
* 1.D0,0.D0,3.D0,6.D0,-4.D0,0.D0,-1.D0,4.D0,0.D0,-6.D0,39*0.D0/
|
|
|
DATA G90/0.D0,-29775.D0,-1848.D0,-2131.D0,3059.D0,1686.D0,1314.D0,
|
|
|
* -2239.D0,1248.D0,802.D0,939.D0,780.D0,325.D0,-423.D0,141.D0,
|
|
|
* -214.D0,353.D0,245.D0,-109.D0,-165.D0,-36.D0,61.D0,65.D0,
|
|
|
* 59.D0,-178.D0,3.D0,18.D0,-96.D0,77.D0,-64.D0,2.D0,26.D0,
|
|
|
* -1.D0,5.D0,9.D0,0.D0,23.D0,5.D0,-1.D0,-10.D0,-12.D0,3.D0,
|
|
|
* 4.D0,2.D0,-6.D0,4.D0,9.D0,1.D0,-12.D0,9.D0,-4.D0,-2.D0,7.D0,
|
|
|
* 1.D0,-6.D0,-3.D0,-4.D0,2.D0,-5.D0,-2.D0,4.D0,3.D0,1.D0,3.D0,
|
|
|
* 3.D0,0.D0,39*0.D0/
|
|
|
DATA H90/0.D0,0.D0,5406.D0,0.D0,-2279.D0,-373.D0,0.D0,-284.D0,
|
|
|
* 293.D0,-352.D0,0.D0,247.D0,-240.D0,84.D0,-299.D0,0.D0,46.D0,
|
|
|
* 154.D0,-153.D0,-69.D0,97.D0,0.D0,-16.D0,82.D0,69.D0,-52.D0,
|
|
|
* 1.D0,24.D0,0.D0,-80.D0,-26.D0,0.D0,21.D0,17.D0,-23.D0,-4.D0,
|
|
|
* 0.D0,10.D0,-19.D0,6.D0,-22.D0,12.D0,12.D0,-16.D0,-10.D0,0.D0,
|
|
|
* -20.D0,15.D0,11.D0,-7.D0,-7.D0,9.D0,8.D0,-7.D0,2.D0,0.D0,
|
|
|
* 2.D0,1.D0,3.D0,6.D0,-4.D0,0.D0,-2.D0,3.D0,-1.D0,-6.D0,
|
|
|
* 39*0.D0/
|
|
|
DATA G95/0.D0,-29692.D0,-1784.D0,-2200.D0,3070.D0,1681.D0,1335.D0,
|
|
|
* -2267.D0,1249.D0,759.D0,940.D0,780.D0,290.D0,-418.D0,122.D0,
|
|
|
* -214.D0,352.D0,235.D0,-118.D0,-166.D0,-17.D0,68.D0,67.D0,
|
|
|
* 68.D0,-170.D0,-1.D0,19.D0,-93.D0,77.D0,-72.D0,1.D0,28.D0,
|
|
|
* 5.D0,4.D0,8.D0,-2.D0,25.D0,6.D0,-6.D0,-9.D0,-14.D0,9.D0,6.D0,
|
|
|
* -5.D0,-7.D0,4.D0,9.D0,3.D0,-10.D0,8.D0,-8.D0,-1.D0,10.D0,
|
|
|
* -2.D0,-8.D0,-3.D0,-6.D0,2.D0,-4.D0,-1.D0,4.D0,2.D0,2.D0,5.D0,
|
|
|
* 1.D0,0.D0,39*0.D0/
|
|
|
DATA H95/0.D0,0.D0,5306.D0,0.D0,-2366.D0,-413.D0,0.D0,-262.D0,
|
|
|
* 302.D0,-427.D0,0.D0,262.D0,-236.D0,97.D0,-306.D0,0.D0,46.D0,
|
|
|
* 165.D0,-143.D0,-55.D0,107.D0,0.D0,-17.D0,72.D0,67.D0,-58.D0,
|
|
|
* 1.D0,36.D0,0.D0,-69.D0,-25.D0,4.D0,24.D0,17.D0,-24.D0,-6.D0,
|
|
|
* 0.D0,11.D0,-21.D0,8.D0,-23.D0,15.D0,11.D0,-16.D0,-4.D0,0.D0,
|
|
|
* -20.D0,15.D0,12.D0,-6.D0,-8.D0,8.D0,5.D0,-8.D0,3.D0,0.D0,
|
|
|
* 1.D0,0.D0,4.D0,5.D0,-5.D0,-1.D0,-2.D0,1.D0,-2.D0,-7.D0,
|
|
|
* 39*0.D0/
|
|
|
DATA G00/0.D0,-29619.4D0,-1728.2D0,-2267.7D0,3068.4D0,1670.9D0,
|
|
|
* 1339.6D0,-2288.D0,1252.1D0,714.5D0,932.3D0,786.8D0,250.D0,
|
|
|
* -403.D0,111.3D0,-218.8D0,351.4D0,222.3D0,-130.4D0,-168.6D0,
|
|
|
* -12.9D0,72.3D0,68.2D0,74.2D0,-160.9D0,-5.9D0,16.9D0,-90.4D0,
|
|
|
* 79.0D0,-74.0D0,0.D0,33.3D0,9.1D0,6.9D0,7.3D0,-1.2D0,24.4D0,
|
|
|
* 6.6D0,-9.2D0,-7.9D0,-16.6D0,9.1D0,7.0D0,-7.9D0,-7.D0,5.D0,
|
|
|
* 9.4D0,3.D0,-8.4D0,6.3D0,-8.9D0,-1.5D0,9.3D0,-4.3D0,-8.2D0,
|
|
|
* -2.6D0,-6.D0,1.7D0,-3.1D0,-0.5D0,3.7D0,1.D0,2.D0,4.2D0,0.3D0,
|
|
|
* -1.1D0,2.7D0,-1.7D0,-1.9D0,1.5D0,-0.1D0,0.1D0,-0.7D0,0.7D0,
|
|
|
* 1.7D0,0.1D0,1.2D0,4.0D0,-2.2D0,-0.3D0,0.2D0,0.9D0,-0.2D0,
|
|
|
* 0.9D0,-0.5D0,0.3D0,-0.3D0,-0.4D0,-0.1D0,-0.2D0,-0.4D0,-0.2D0,
|
|
|
* -0.9D0,0.3D0,0.1D0,-0.4D0,1.3D0,-0.4D0,0.7D0,-0.4D0,0.3D0,
|
|
|
* -0.1D0,0.4D0,0.D0,0.1D0/
|
|
|
DATA H00/0.D0,0.D0,5186.1D0,0.D0,-2481.6D0,-458.0D0,0.D0,-227.6D0,
|
|
|
* 293.4D0,-491.1D0,0.D0,272.6D0,-231.9D0,119.8D0,-303.8D0,0.D0,
|
|
|
* 43.8D0,171.9D0,-133.1D0,-39.3D0,106.3D0,0.D0,-17.4D0,63.7D0,
|
|
|
* 65.1D0,-61.2D0,0.7D0,43.8D0,0.D0,-64.6D0,-24.2D0,6.2D0,24.D0,
|
|
|
* 14.8D0,-25.4D0,-5.8D0,0.0D0,11.9D0,-21.5D0,8.5D0,-21.5D0,
|
|
|
* 15.5D0,8.9D0,-14.9D0,-2.1D0,0.0D0,-19.7D0,13.4D0,12.5D0,
|
|
|
* -6.2D0,-8.4D0,8.4D0,3.8D0,-8.2D0,4.8D0,0.0D0,1.7D0,0.0D0,
|
|
|
* 4.0D0,4.9D0,-5.9D0,-1.2D0,-2.9D0,0.2D0,-2.2D0,-7.4D0,0.0D0,
|
|
|
* 0.1D0,1.3D0,-0.9D0,-2.6D0,0.9D0,-0.7D0,-2.8D0,-0.9D0,-1.2D0,
|
|
|
* -1.9D0,-0.9D0,0.0D0,-0.4D0,0.3D0,2.5D0,-2.6D0,0.7D0,0.3D0,
|
|
|
* 0.0D0,0.0D0,0.3D0,-0.9D0,-0.4D0,0.8D0,0.0D0,-0.9D0,0.2D0,
|
|
|
* 1.8D0,-0.4D0,-1.0D0,-0.1D0,0.7D0,0.3D0,0.6D0,0.3D0,-0.2D0,
|
|
|
* -0.5D0,-0.9D0/
|
|
|
DATA G05/0.D0,-29554.6D0,-1669.0D0,-2337.2D0,3047.7D0,1657.8D0,
|
|
|
* 1336.3D0,-2305.8D0,1246.4D0,672.5D0,920.6D0,798.0D0,210.7D0,
|
|
|
* -379.9D0,100.0D0,-227.0D0,354.4D0,208.9D0,-136.5D0,-168.1D0,
|
|
|
* -13.6D0,73.6D0,69.6D0,76.7D0,-151.3D0,-14.6D0,14.6D0,-86.4D0,
|
|
|
* 79.9D0,-74.5D0,-1.7D0,38.7D0,12.3D0,9.4D0,5.4D0,1.9D0,24.8D0,
|
|
|
* 7.6D0,-11.7D0,-6.9D0,-18.1D0,10.2D0,9.4D0,-11.3D0,-4.9D0,
|
|
|
* 5.6D0,9.8D0,3.6D0,-6.9D0,5.0D0,-10.8D0,-1.3D0,8.8D0,-6.7D0,
|
|
|
* -9.2D0,-2.2D0,-6.1D0,1.4D0,-2.4D0,-0.2D0,3.1D0,0.3D0,2.1D0,
|
|
|
* 3.8D0,-0.2D0,-2.1D0,2.9D0,-1.6D0,-1.9D0,1.4D0,-0.3D0,0.3D0,
|
|
|
* -0.8D0,0.5D0,1.8D0,0.2D0,1.0D0,4.0D0,-2.2D0,-0.3D0,0.2D0,
|
|
|
* 0.9D0,-0.4D0,1.0D0,-0.3D0,0.5D0,-0.4D0,-0.4D0,0.1D0,-0.5D0,
|
|
|
* -0.1D0,-0.2D0,-0.9D0,0.3D0,0.3D0,-0.4D0,1.2D0,-0.4D0,0.8D0,
|
|
|
* -0.3D0,0.4D0,-0.1D0,0.4D0,-0.1D0,-0.2D0/
|
|
|
DATA H05/0.D0,0.0D0,5078.0D0,0.0D0,-2594.5D0,-515.4D0,0.0D0,
|
|
|
* -198.9D0,269.7D0,-524.7D0,0.0D0,282.1D0,-225.2D0,145.2D0,
|
|
|
* -305.4D0,0.0D0,42.7D0,180.3D0,-123.5D0,-19.6D0,103.9D0,0.0D0,
|
|
|
* -20.3D0,54.8D0,63.6D0,-63.5D0,0.2D0,50.9D0,0.0D0,-61.1D0,
|
|
|
* -22.6D0,6.8D0,25.4D0,10.9D0,-26.3D0,-4.6D0,0.0D0,11.2D0,
|
|
|
* -20.9D0,9.8D0,-19.7D0,16.2D0,7.6D0,-12.8D0,-0.1D0,0.0D0,
|
|
|
* -20.1D0,12.7D0,12.7D0,-6.7D0,-8.2D0,8.1D0,2.9D0,-7.7D0,6.0D0,
|
|
|
* 0.0D0,2.2D0,0.1D0,4.5D0,4.8D0,-6.7D0,-1.0D0,-3.5D0,-0.9D0,
|
|
|
* -2.3D0,-7.9D0,0.0D0,0.3D0,1.4D0,-0.8D0,-2.3D0,0.9D0,-0.6D0,
|
|
|
* -2.7D0,-1.1D0,-1.6D0,-1.9D0,-1.4D0,0.0D0,-0.6D0,0.2D0,2.4D0,
|
|
|
* -2.6D0,0.6D0,0.4D0,0.0D0,0.0D0,0.3D0,-0.9D0,-0.3D0,0.9D0,
|
|
|
* 0.0D0,-0.8D0,0.3D0,1.7D0,-0.5D0,-1.1D0,0.0D0,0.6D0,0.2D0,
|
|
|
* 0.5D0,0.4D0,-0.2D0,-0.6D0,-0.9D0/
|
|
|
DATA G10/0.D0,-29496.5D0,-1585.9D0,-2396.6D0,3026.0D0,1668.6D0,
|
|
|
* 1339.7D0,-2326.3D0,1231.7D0,634.2D0,912.6D0,809.0D0,166.6D0,
|
|
|
* -357.1D0,89.7D0,-231.1D0,357.2D0,200.3D0,-141.2D0,-163.1D0,
|
|
|
* -7.7D0,72.8D0,68.6D0,76.0D0,-141.4D0,-22.9D0,13.1D0,-77.9D0,
|
|
|
* 80.4D0,-75.0D0,-4.7D0,45.3D0,14.0D0,10.4D0,1.6D0,4.9D0,
|
|
|
* 24.3D0,8.2D0,-14.5D0,-5.7D0,-19.3D0,11.6D0,10.9D0,-14.1D0,
|
|
|
* -3.7D0,5.4D0,9.4D0,3.4D0,-5.3D0,3.1D0,-12.4D0,-0.8D0,8.4D0,
|
|
|
* -8.4D0,-10.1D0,-2.0D0,-6.3D0,0.9D0,-1.1D0,-0.2D0,2.5D0,
|
|
|
* -0.3D0,2.2D0,3.1D0,-1.0D0,-2.8D0,3.0D0,-1.5D0,-2.1D0,1.6D0,
|
|
|
* -0.5D0,0.5D0,-0.8D0,0.4D0,1.8D0,0.2D0,0.8D0,3.8D0,-2.1D0,
|
|
|
* -0.2D0,0.3D0,1.0D0,-0.7D0,0.9D0,-0.1D0,0.5D0,-0.4D0,-0.4D0,
|
|
|
* 0.2D0,-0.8D0,0.0D0,-0.2D0,-0.9D0,0.3D0,0.4D0,-0.4D0,1.1D0,
|
|
|
* -0.3D0,0.8D0,-0.2D0,0.4D0,0.0D0,0.4D0,-0.3D0,-0.3D0/
|
|
|
DATA H10/0.0D0,0.0D0,4945.1D0,0.0D0,-2707.7D0,-575.4D0,0.0D0,
|
|
|
* -160.5D0,251.7D0,-536.8D0,0.0D0,286.4D0,-211.2D0,164.4D0,
|
|
|
* -309.2D0,0.0D0,44.7D0,188.9D0,-118.1D0,0.1D0,100.9D0,0.0D0,
|
|
|
* -20.8D0,44.2D0,61.5D0,-66.3D0,3.1D0,54.9D0,0.0D0,-57.8D0,
|
|
|
* -21.2D0,6.6D0,24.9D0,7.0D0,-27.7D0,-3.4D0,0.0D0,10.9D0,
|
|
|
* -20.0D0,11.9D0,-17.4D0,16.7D0,7.1D0,-10.8D0,1.7D0,0.0D0,
|
|
|
* -20.5D0,11.6D0,12.8D0,-7.2D0,-7.4D0,8.0D0,2.2D0,-6.1D0,7.0D0,
|
|
|
* 0.0D0,2.8D0,-0.1D0,4.7D0,4.4D0,-7.2D0,-1.0D0,-4.0D0,-2.0D0,
|
|
|
* -2.0D0,-8.3D0,0.0D0,0.1D0,1.7D0,-0.6D0,-1.8D0,0.9D0,-0.4D0,
|
|
|
* -2.5D0,-1.3D0,-2.1D0,-1.9D0,-1.8D0,0.0D0,-0.8D0,0.3D0,2.2D0,
|
|
|
* -2.5D0,0.5D0,0.6D0,0.0D0,0.1D0,0.3D0,-0.9D0,-0.2D0,0.8D0,
|
|
|
* 0.0D0,-0.8D0,0.3D0,1.7D0,-0.6D0,-1.2D0,-0.1D0,0.5D0,0.1D0,
|
|
|
* 0.5D0,0.4D0,-0.2D0,-0.5D0,-0.8D0/
|
|
|
DATA DG10/0.0D0,11.4D0,16.7D0,-11.3D0,-3.9D0,2.7D0,1.3D0,-3.9D0,
|
|
|
* -2.9D0,-8.1D0,-1.4D0,2.0D0,-8.9D0,4.4D0,-2.3D0,-0.5D0,0.5D0,
|
|
|
* -1.5D0,-0.7D0,1.3D0,1.4D0,-0.3D0,-0.3D0,-0.3D0,1.9D0,-1.6D0,
|
|
|
* -0.2D0,1.8D0,0.2D0,-0.1D0,-0.6D0,1.4D0,0.3D0,0.1D0,-0.8D0,
|
|
|
* 0.4D0,-0.1D0,0.1D0,-0.5D0,0.3D0,-0.3D0,0.3D0,0.2D0,-0.5D0,
|
|
|
* 0.2D0/
|
|
|
DATA DH10/0.0D0,0.0D0,-28.8D0,0.0D0,-23.0D0,-12.9D0,0.0D0,8.6D0,
|
|
|
* -2.9D0,-2.1D0,0.0D0,0.4D0,3.2D0,3.6D0,-0.8D0,0.0D0,0.5D0,
|
|
|
* 1.5D0,0.9D0,3.7D0,-0.6D0,0.0D0,-0.1D0,-2.1D0,-0.4D0,-0.5D0,
|
|
|
* 0.8D0,0.5D0,0.0D0,0.6D0,0.3D0,-0.2D0,-0.1D0,-0.8D0,-0.3D0,
|
|
|
* 0.2D0,0.0D0,0.0D0,0.2D0,0.5D0,0.4D0,0.1D0,-0.1D0,0.4D0,0.4D0/
|
|
|
C ..
|
|
|
C
|
|
|
IF (VGSEY.EQ.0.D0 .AND. VGSEZ.EQ.0.D0 .AND. ISW.NE.1) THEN
|
|
|
C PRINT *, ''
|
|
|
C PRINT *,
|
|
|
C *' TS_RECALC_08: RADIAL SOLAR WIND --> GSW SYSTEM IDENTICAL HERE'
|
|
|
C PRINT *,
|
|
|
C *' TO STANDARD GSM (I.E., XGSW AXIS COINCIDES WITH EARTH-TS_SUN LINE)'
|
|
|
C PRINT *, ''
|
|
|
ISW = 1
|
|
|
END IF
|
|
|
|
|
|
IF ((VGSEY.NE.0.D0.OR.VGSEZ.NE.0.D0) .AND. ISW.NE.2) THEN
|
|
|
C PRINT *, ''
|
|
|
C PRINT *,
|
|
|
C *' WARNING: NON-RADIAL SOLAR WIND FLOW SPECIFIED IN TS_RECALC_08;'
|
|
|
C PRINT *,
|
|
|
C *' HENCE XGSW AXIS IS ASSUMED ORIENTED ANTIPARALLEL TO V_SW VECTOR'
|
|
|
C PRINT *, ''
|
|
|
ISW = 2
|
|
|
END IF
|
|
|
C
|
|
|
IY = IYEAR
|
|
|
FYEAR = DBLE(IYEAR) + (IDAY-1)/366.0
|
|
|
C
|
|
|
CWE ARE RESTRICTED BY THE INTERVAL 1965-2010, FOR WHICH THE IGRF COEFFICIENTS
|
|
|
cARE KNOWN; IF IYEAR IS OUTSIDE THIS INTERVAL, THEN THE SUBROUTINE USES THE
|
|
|
C NEAREST LIMITING VALUE AND PRINTS A WARNING:
|
|
|
C
|
|
|
IF (IY.LT.1965) THEN
|
|
|
IY = 1965
|
|
|
C WRITE (*,FMT=9000) IYEAR,IY
|
|
|
END IF
|
|
|
|
|
|
IF (IY.GT.2015) THEN
|
|
|
IY = 2015
|
|
|
C WRITE (*,FMT=9000) IYEAR,IY
|
|
|
END IF
|
|
|
|
|
|
C
|
|
|
CCALCULATE THE ARRAY REC, CONTAINING COEFFICIENTS FOR THE RECURSION RELATIONS,
|
|
|
CUSED IN THE IGRF SUBROUTINE FOR CALCULATING THE ASSOCIATE LEGENDRE POLYNOMIALS
|
|
|
C AND THEIR DERIVATIVES:
|
|
|
c
|
|
|
DO 20 N = 1,14
|
|
|
N2 = 2*N - 1
|
|
|
N2 = N2*(N2-2)
|
|
|
DO 10 M = 1,N
|
|
|
MN = N*(N-1)/2 + M
|
|
|
REC(MN) = DBLE((N-M)*(N+M-2))/DBLE(N2)
|
|
|
10 CONTINUE
|
|
|
20 CONTINUE
|
|
|
C
|
|
|
IF (IY.LT.1970) GO TO 40
|
|
|
IF (IY.LT.1975) GO TO 60
|
|
|
IF (IY.LT.1980) GO TO 80
|
|
|
IF (IY.LT.1985) GO TO 100
|
|
|
IF (IY.LT.1990) GO TO 120
|
|
|
IF (IY.LT.1995) GO TO 140
|
|
|
IF (IY.LT.2000) GO TO 160
|
|
|
IF (IY.LT.2005) GO TO 180
|
|
|
IF (IY.LT.2010) GO TO 200
|
|
|
C
|
|
|
C EXTRAPOLATE BEYOND 2010:
|
|
|
C
|
|
|
DT = DBLE(IY) + DBLE(IDAY-1)/365.25D0 - 2010.D0
|
|
|
DO 30 N = 1,105
|
|
|
G(N) = G10(N)
|
|
|
H(N) = H10(N)
|
|
|
IF (N.GT.45) GO TO 30
|
|
|
G(N) = G(N) + DG10(N)*DT
|
|
|
H(N) = H(N) + DH10(N)*DT
|
|
|
30 CONTINUE
|
|
|
GO TO 220
|
|
|
C
|
|
|
C INTERPOLATE BETWEEEN 1965 - 1970:
|
|
|
C
|
|
|
40 F2 = (DBLE(IY)+DBLE(IDAY-1)/365.25D0-1965)/5.D0
|
|
|
F1 = 1.D0 - F2
|
|
|
DO 50 N = 1,105
|
|
|
G(N) = G65(N)*F1 + G70(N)*F2
|
|
|
H(N) = H65(N)*F1 + H70(N)*F2
|
|
|
50 CONTINUE
|
|
|
GO TO 220
|
|
|
C
|
|
|
C INTERPOLATE BETWEEN 1970 - 1975:
|
|
|
C
|
|
|
60 F2 = (DBLE(IY)+DBLE(IDAY-1)/365.25D0-1970)/5.D0
|
|
|
F1 = 1.D0 - F2
|
|
|
DO 70 N = 1,105
|
|
|
G(N) = G70(N)*F1 + G75(N)*F2
|
|
|
H(N) = H70(N)*F1 + H75(N)*F2
|
|
|
70 CONTINUE
|
|
|
GO TO 220
|
|
|
C
|
|
|
C INTERPOLATE BETWEEN 1975 - 1980:
|
|
|
C
|
|
|
80 F2 = (DBLE(IY)+DBLE(IDAY-1)/365.25D0-1975)/5.D0
|
|
|
F1 = 1.D0 - F2
|
|
|
DO 90 N = 1,105
|
|
|
G(N) = G75(N)*F1 + G80(N)*F2
|
|
|
H(N) = H75(N)*F1 + H80(N)*F2
|
|
|
90 CONTINUE
|
|
|
GO TO 220
|
|
|
C
|
|
|
C INTERPOLATE BETWEEN 1980 - 1985:
|
|
|
C
|
|
|
100 F2 = (DBLE(IY)+DBLE(IDAY-1)/365.25D0-1980)/5.D0
|
|
|
F1 = 1.D0 - F2
|
|
|
DO 110 N = 1,105
|
|
|
G(N) = G80(N)*F1 + G85(N)*F2
|
|
|
H(N) = H80(N)*F1 + H85(N)*F2
|
|
|
110 CONTINUE
|
|
|
GO TO 220
|
|
|
C
|
|
|
C INTERPOLATE BETWEEN 1985 - 1990:
|
|
|
C
|
|
|
120 F2 = (DBLE(IY)+DBLE(IDAY-1)/365.25D0-1985)/5.D0
|
|
|
F1 = 1.D0 - F2
|
|
|
DO 130 N = 1,105
|
|
|
G(N) = G85(N)*F1 + G90(N)*F2
|
|
|
H(N) = H85(N)*F1 + H90(N)*F2
|
|
|
130 CONTINUE
|
|
|
GO TO 220
|
|
|
C
|
|
|
C INTERPOLATE BETWEEN 1990 - 1995:
|
|
|
C
|
|
|
140 F2 = (DBLE(IY)+DBLE(IDAY-1)/365.25D0-1990)/5.D0
|
|
|
F1 = 1.D0 - F2
|
|
|
DO 150 N = 1,105
|
|
|
G(N) = G90(N)*F1 + G95(N)*F2
|
|
|
H(N) = H90(N)*F1 + H95(N)*F2
|
|
|
150 CONTINUE
|
|
|
GO TO 220
|
|
|
C
|
|
|
C INTERPOLATE BETWEEN 1995 - 2000:
|
|
|
C
|
|
|
160 F2 = (DBLE(IY)+DBLE(IDAY-1)/365.25D0-1995)/5.D0
|
|
|
F1 = 1.D0 - F2
|
|
|
DO 170 N = 1,105
|
|
|
G(N) = G95(N)*F1 + G00(N)*F2
|
|
|
H(N) = H95(N)*F1 + H00(N)*F2
|
|
|
170 CONTINUE
|
|
|
GO TO 220
|
|
|
C
|
|
|
C INTERPOLATE BETWEEN 2000 - 2005:
|
|
|
C
|
|
|
180 F2 = (DBLE(IY)+DBLE(IDAY-1)/365.25D0-2000)/5.D0
|
|
|
F1 = 1.D0 - F2
|
|
|
DO 190 N = 1,105
|
|
|
G(N) = G00(N)*F1 + G05(N)*F2
|
|
|
H(N) = H00(N)*F1 + H05(N)*F2
|
|
|
190 CONTINUE
|
|
|
GO TO 220
|
|
|
C
|
|
|
C INTERPOLATE BETWEEN 2005 - 2010:
|
|
|
C
|
|
|
200 F2 = (DBLE(IY)+DBLE(IDAY-1)/365.25D0-2005)/5.D0
|
|
|
F1 = 1.D0 - F2
|
|
|
DO 210 N = 1,105
|
|
|
G(N) = G05(N)*F1 + G10(N)*F2
|
|
|
H(N) = H05(N)*F1 + H10(N)*F2
|
|
|
210 CONTINUE
|
|
|
GO TO 220
|
|
|
C
|
|
|
C COEFFICIENTS FOR A GIVEN YEAR HAVE BEEN CALCULATED; NOW MULTIPLY
|
|
|
C THEM BY SCHMIDT NORMALIZATION FACTORS:
|
|
|
C
|
|
|
220 S = 1.D0
|
|
|
DO 240 N = 2,14
|
|
|
MN = N*(N-1)/2 + 1
|
|
|
S = S*DBLE(2*N-3)/DBLE(N-1)
|
|
|
G(MN) = G(MN)*S
|
|
|
H(MN) = H(MN)*S
|
|
|
P = S
|
|
|
DO 230 M = 2,N
|
|
|
AA = 1.D0
|
|
|
IF (M.EQ.2) AA = 2.D0
|
|
|
P = P*SQRT(AA*DBLE(N-M+1)/DBLE(N+M-2))
|
|
|
MNN = MN + M - 1
|
|
|
G(MNN) = G(MNN)*P
|
|
|
H(MNN) = H(MNN)*P
|
|
|
230 CONTINUE
|
|
|
240 CONTINUE
|
|
|
|
|
|
G_10 = -G(2)
|
|
|
G_11 = G(3)
|
|
|
H_11 = H(3)
|
|
|
C
|
|
|
CNOW CALCULATE GEO COMPONENTS OF THE UNIT VECTOR EzMAG, PARALLEL TO GEODIPOLE AXIS:
|
|
|
C SIN(TETA0)*COS(LAMBDA0), SIN(TETA0)*SIN(LAMBDA0), AND COS(TETA0)
|
|
|
C ST0 * CL0 ST0 * SL0 CT0
|
|
|
C
|
|
|
SQ = G_11**2 + H_11**2
|
|
|
SQQ = SQRT(SQ)
|
|
|
SQR = SQRT(G_10**2+SQ)
|
|
|
SL0 = -H_11/SQQ
|
|
|
CL0 = -G_11/SQQ
|
|
|
ST0 = SQQ/SQR
|
|
|
CT0 = G_10/SQR
|
|
|
STCL = ST0*CL0
|
|
|
STSL = ST0*SL0
|
|
|
CTSL = CT0*SL0
|
|
|
CTCL = CT0*CL0
|
|
|
C
|
|
|
C NOW CALCULATE GEI COMPONENTS (S1,S2,S3) OF THE UNIT VECTOR S = EX_GSE
|
|
|
C POINTING FROM THE EARTH'S CENTER TO TS_SUN
|
|
|
C
|
|
|
CALL TS_SUN_08(IY,IDAY,IHOUR,MIN,ISEC,GST,SLONG,SRASN,SDEC)
|
|
|
C
|
|
|
S1 = COS(SRASN)*COS(SDEC)
|
|
|
S2 = SIN(SRASN)*COS(SDEC)
|
|
|
S3 = SIN(SDEC)
|
|
|
C
|
|
|
C NOW CALCULATE GEI COMPONENTS (DZ1,DZ2,DZ3) OF THE UNIT VECTOR EZGSE
|
|
|
C POINTING NORTHWARD AND ORTHOGONAL TO THE ECLIPTIC PLANE, AS
|
|
|
C (0,-SIN(OBLIQ),COS(OBLIQ)). FOR THE EPOCH 1978, OBLIQ = 23.44214 DEGS.
|
|
|
C HERE WE USE A MORE ACCURATE TIME-DEPENDENT VALUE, DETERMINED AS:
|
|
|
C
|
|
|
DJ = DBLE(365*(IY-1900)+(IY-1901)/4+IDAY) - 0.5D0 +
|
|
|
* DBLE(IHOUR*3600+MIN*60+ISEC)/86400.D0
|
|
|
T = DJ/36525.D0
|
|
|
OBLIQ = (23.45229D0-0.0130125D0*T)/57.2957795D0
|
|
|
DZ1 = 0.D0
|
|
|
DZ2 = -SIN(OBLIQ)
|
|
|
DZ3 = COS(OBLIQ)
|
|
|
C
|
|
|
C NOW WE 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
|
|
|
DY1 = DZ2*S3 - DZ3*S2
|
|
|
DY2 = DZ3*S1 - DZ1*S3
|
|
|
DY3 = DZ1*S2 - DZ2*S1
|
|
|
C
|
|
|
CNOW LET'S CALCULATE GEI COMPONENTS OF THE UNIT VECTOR X = EXGSW, DIRECTED ANTIPARALLEL
|
|
|
CTO THE OBSERVED SOLAR WIND FLOW. FIRST, CALCULATE ITS COMPONENTS IN GSE:
|
|
|
C
|
|
|
V = SQRT(VGSEX**2+VGSEY**2+VGSEZ**2)
|
|
|
DX1 = -VGSEX/V
|
|
|
DX2 = -VGSEY/V
|
|
|
DX3 = -VGSEZ/V
|
|
|
C
|
|
|
C THEN IN GEI:
|
|
|
C
|
|
|
X1 = DX1*S1 + DX2*DY1 + DX3*DZ1
|
|
|
X2 = DX1*S2 + DX2*DY2 + DX3*DZ2
|
|
|
X3 = DX1*S3 + DX2*DY3 + DX3*DZ3
|
|
|
C
|
|
|
CNOW CALCULATE GEI COMPONENTS (DIP1,DIP2,DIP3) OF THE UNIT VECTOR DIP = EZ_SM = EZ_MAG,
|
|
|
C ALIGNED WITH THE GEODIPOLE AND POINTING NORTHWARD FROM ECLIPTIC PLANE:
|
|
|
C
|
|
|
CGST = COS(GST)
|
|
|
SGST = SIN(GST)
|
|
|
C
|
|
|
DIP1 = STCL*CGST - STSL*SGST
|
|
|
DIP2 = STCL*SGST + STSL*CGST
|
|
|
DIP3 = CT0
|
|
|
C
|
|
|
CTHIS ALLOWS US TO CALCULATE GEI COMPONENTS OF THE UNIT VECTOR Y = EYGSW
|
|
|
CBY TAKING THE VECTOR PRODUCT DIP x X AND NORMALIZING IT TO UNIT LENGTH:
|
|
|
C
|
|
|
Y1 = DIP2*X3 - DIP3*X2
|
|
|
Y2 = DIP3*X1 - DIP1*X3
|
|
|
Y3 = DIP1*X2 - DIP2*X1
|
|
|
Y = SQRT(Y1*Y1+Y2*Y2+Y3*Y3)
|
|
|
Y1 = Y1/Y
|
|
|
Y2 = Y2/Y
|
|
|
Y3 = Y3/Y
|
|
|
C
|
|
|
CAND GEI COMPONENTS OF THE UNIT VECTOR Z = EZGSW = EXGSW x EYGSW = X x Y:
|
|
|
C
|
|
|
Z1 = X2*Y3 - X3*Y2
|
|
|
Z2 = X3*Y1 - X1*Y3
|
|
|
Z3 = X1*Y2 - X2*Y1
|
|
|
C
|
|
|
C ELEMENTS OF THE MATRIX GSE TO GSW ARE THE SCALAR PRODUCTS:
|
|
|
C
|
|
|
C E11=(EXGSE,EXGSW) E12=(EXGSE,EYGSW) E13=(EXGSE,EZGSW)
|
|
|
C E21=(EYGSE,EXGSW) E22=(EYGSE,EYGSW) E23=(EYGSE,EZGSW)
|
|
|
C E31=(EZGSE,EXGSW) E32=(EZGSE,EYGSW) E33=(EZGSE,EZGSW)
|
|
|
C
|
|
|
E11 = S1*X1 + S2*X2 + S3*X3
|
|
|
E12 = S1*Y1 + S2*Y2 + S3*Y3
|
|
|
E13 = S1*Z1 + S2*Z2 + S3*Z3
|
|
|
E21 = DY1*X1 + DY2*X2 + DY3*X3
|
|
|
E22 = DY1*Y1 + DY2*Y2 + DY3*Y3
|
|
|
E23 = DY1*Z1 + DY2*Z2 + DY3*Z3
|
|
|
E31 = DZ1*X1 + DZ2*X2 + DZ3*X3
|
|
|
E32 = DZ1*Y1 + DZ2*Y2 + DZ3*Y3
|
|
|
E33 = DZ1*Z1 + DZ2*Z2 + DZ3*Z3
|
|
|
C
|
|
|
C GEODIPOLE TILT ANGLE IN THE GSW SYSTEM: PSI=ARCSIN(DIP,EXGSW)
|
|
|
C
|
|
|
SPS = DIP1*X1 + DIP2*X2 + DIP3*X3
|
|
|
CPS = SQRT(1.D0-SPS**2)
|
|
|
PSI = ASIN(SPS)
|
|
|
C
|
|
|
C ELEMENTS OF THE MATRIX GEO TO GSW ARE THE SCALAR PRODUCTS:
|
|
|
C
|
|
|
C A11=(EXGEO,EXGSW), A12=(EYGEO,EXGSW), A13=(EZGEO,EXGSW),
|
|
|
C A21=(EXGEO,EYGSW), A22=(EYGEO,EYGSW), A23=(EZGEO,EYGSW),
|
|
|
C A31=(EXGEO,EZGSW), A32=(EYGEO,EZGSW), A33=(EZGEO,EZGSW),
|
|
|
C
|
|
|
C ALL THE UNIT VECTORS IN BRACKETS ARE ALREADY DEFINED IN GEI:
|
|
|
C
|
|
|
C EXGEO=(CGST,SGST,0), EYGEO=(-SGST,CGST,0), EZGEO=(0,0,1)
|
|
|
C EXGSW=(X1,X2,X3), EYGSW=(Y1,Y2,Y3), EZGSW=(Z1,Z2,Z3)
|
|
|
C AND THEREFORE:
|
|
|
C
|
|
|
A11 = X1*CGST + X2*SGST
|
|
|
A12 = -X1*SGST + X2*CGST
|
|
|
A13 = X3
|
|
|
A21 = Y1*CGST + Y2*SGST
|
|
|
A22 = -Y1*SGST + Y2*CGST
|
|
|
A23 = Y3
|
|
|
A31 = Z1*CGST + Z2*SGST
|
|
|
A32 = -Z1*SGST + Z2*CGST
|
|
|
A33 = Z3
|
|
|
C
|
|
|
CNOW CALCULATE ELEMENTS OF THE MATRIX MAG TO SM (ONE ROTATION ABOUT THE GEODIPOLE AXIS);
|
|
|
CTHEY ARE FOUND AS THE SCALAR PRODUCTS: CFI=GM22=(EYSM,EYMAG)=(EYGSW,EYMAG),
|
|
|
C SFI=GM23=(EYSM,EXMAG)=(EYGSW,EXMAG),
|
|
|
C DERIVED AS FOLLOWS:
|
|
|
C
|
|
|
CIN GEO, THE VECTORS EXMAG AND EYMAG HAVE THE COMPONENTS (CT0*CL0,CT0*SL0,-ST0)
|
|
|
C AND (-SL0,CL0,0), RESPECTIVELY. HENCE, IN GEI THEIR COMPONENTS ARE:
|
|
|
C EXMAG: CT0*CL0*COS(GST)-CT0*SL0*SIN(GST)
|
|
|
C CT0*CL0*SIN(GST)+CT0*SL0*COS(GST)
|
|
|
C -ST0
|
|
|
C EYMAG: -SL0*COS(GST)-CL0*SIN(GST)
|
|
|
C -SL0*SIN(GST)+CL0*COS(GST)
|
|
|
C 0
|
|
|
CNOW, NOTE THAT GEI COMPONENTS OF EYSM=EYGSW WERE FOUND ABOVE AS Y1, Y2, AND Y3,
|
|
|
C AND WE ONLY HAVE TO COMBINE THESE QUANTITIES INTO SCALAR PRODUCTS:
|
|
|
C
|
|
|
EXMAGX = CT0*(CL0*CGST-SL0*SGST)
|
|
|
EXMAGY = CT0*(CL0*SGST+SL0*CGST)
|
|
|
EXMAGZ = -ST0
|
|
|
EYMAGX = -(SL0*CGST+CL0*SGST)
|
|
|
EYMAGY = -(SL0*SGST-CL0*CGST)
|
|
|
CFI = Y1*EYMAGX + Y2*EYMAGY
|
|
|
SFI = Y1*EXMAGX + Y2*EXMAGY + Y3*EXMAGZ
|
|
|
C
|
|
|
9000 FORMAT (/,/,1X,
|
|
|
* '****TS_RECALC WARNS: YEAR IS OUT OF INTERVAL 1965-2015: IYEAR='
|
|
|
* ,I4,/,6X,'CALCULATIONS WILL BE DONE FOR IYEAR=',I4,/)
|
|
|
RETURN
|
|
|
END
|
|
|
c
|
|
|
c==================================================================================
|
|
|
|
|
|
SUBROUTINE GSWGSE(XGSW,YGSW,ZGSW,XGSE,YGSE,ZGSE,J)
|
|
|
C
|
|
|
CTHIS SUBROUTINE TRANSFORMS COMPONENTS OF ANY VECTOR BETWEEN THE STANDARD GSE
|
|
|
CCOORDINATE SYSTEM AND THE GEOCENTRIC SOLAR-WIND (GSW, aka GSWM), DEFINED AS FOLLOWS
|
|
|
C(HONES ET AL., PLANET.SPACE SCI., V.34, P.889, 1986; TSYGANENKO ET AL., JGRA,
|
|
|
C V.103(A4), P.6827, 1998):
|
|
|
C
|
|
|
CIN THE GSW SYSTEM, X AXIS IS ANTIPARALLEL TO THE OBSERVED DIRECTION OF THE SOLAR WIND FLOW.
|
|
|
CTWO OTHER AXES, Y AND Z, ARE DEFINED IN THE SAME WAY AS FOR THE STANDARD GSM, THAT IS,
|
|
|
CZ AXIS ORTHOGONAL TO X AXIS, POINTS NORTHWARD, AND LIES IN THE PLANE DEFINED BY THE X-
|
|
|
C AND GEODIPOLE AXIS. THE Y AXIS COMPLETES THE RIGHT-HANDED SYSTEM.
|
|
|
C
|
|
|
C THE GSW SYSTEM BECOMES IDENTICAL TO THE STANDARD GSM IN THE CASE OF
|
|
|
C A STRICTLY RADIAL SOLAR WIND FLOW.
|
|
|
C
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C ADDED TO 2008 VERSION OF GEOPACK: JAN 27, 2008.
|
|
|
C
|
|
|
C J>0 J<0
|
|
|
C -----INPUT: J,XGSW,YGSW,ZGSW J,XGSE,YGSE,ZGSE
|
|
|
C -----OUTPUT: XGSE,YGSE,ZGSE XGSW,YGSW,ZGSW
|
|
|
C
|
|
|
C IMPORTANT THINGS TO REMEMBER:
|
|
|
C
|
|
|
C(1) BEFORE CALLING GSWGSE, BE SURE TO INVOKE SUBROUTINE TS_RECALC_08, IN ORDER
|
|
|
C TO DEFINE ALL NECESSARY ELEMENTS OF TRANSFORMATION MATRICES
|
|
|
C
|
|
|
C(2) IN THE ABSENCE OF INFORMATION ON THE SOLAR WIND DIRECTION, E.G., WITH ONLY SCALAR
|
|
|
C SPEED V KNOWN, THIS SUBROUTINE CAN BE USED TO CONVERT VECTORS TO ABERRATED
|
|
|
C COORDINATE SYSTEM, TAKING INTO ACCOUNT EARTH'S ORBITAL SPEED OF 29 KM/S.
|
|
|
C TO DO THAT, SPECIFY THE LAST 3 PARAMETERS IN TS_RECALC_08 AS FOLLOWS:
|
|
|
C VGSEX=-V, VGSEY=29.0, VGSEZ=0.0.
|
|
|
C
|
|
|
C IT SHOULD ALSO BE KEPT IN MIND THAT IN SOME SOLAR WIND DATABASES THE ABERRATION
|
|
|
C EFFECT HAS ALREADY BEEN TAKEN INTO ACCOUNT BY SUBTRACTING 29 KM/S FROM VYGSE;
|
|
|
C IN THAT CASE, THE ORIGINAL VYGSE VALUES SHOULD BE RESTORED BY ADDING BACK THE
|
|
|
C 29 KM/S CORRECTION. WHETHER OR NOT TO DO THAT, MUST BE VERIFIED WITH THE DATA
|
|
|
C ORIGINATOR (OR CAN BE DETERMINED BY CALCULATING THE AVERAGE VGSEY OVER
|
|
|
C A SUFFICIENTLY LONG TIME INTERVAL)
|
|
|
C
|
|
|
C(3) IF NO INFORMATION IS AVAILABLE ON THE SOLAR WIND SPEED, THEN SET VGSEX=-400.0
|
|
|
c AND VGSEY=VGSEZ=0. IN THAT CASE, THE GSW COORDINATE SYSTEM BECOMES
|
|
|
c IDENTICAL TO THE STANDARD ONE.
|
|
|
C
|
|
|
C
|
|
|
C DIRECT TRANSFORMATION:
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION XGSE,XGSW,YGSE,YGSW,ZGSE,ZGSW
|
|
|
INTEGER J
|
|
|
C ..
|
|
|
C .. Common blocks ..
|
|
|
COMMON /GEOPACK1/AAA,E11,E21,E31,E12,E22,E32,E13,E23,E33
|
|
|
DOUBLE PRECISION E11,E12,E13,E21,E22,E23,E31,E32,E33
|
|
|
DOUBLE PRECISION AAA(25)
|
|
|
C ..
|
|
|
IF (J.GT.0) THEN
|
|
|
XGSE = XGSW*E11 + YGSW*E12 + ZGSW*E13
|
|
|
YGSE = XGSW*E21 + YGSW*E22 + ZGSW*E23
|
|
|
ZGSE = XGSW*E31 + YGSW*E32 + ZGSW*E33
|
|
|
END IF
|
|
|
C
|
|
|
C INVERSE TRANSFORMATION: CARRIED OUT USING THE TRANSPOSED MATRIX:
|
|
|
C
|
|
|
IF (J.LT.0) THEN
|
|
|
XGSW = XGSE*E11 + YGSE*E21 + ZGSE*E31
|
|
|
YGSW = XGSE*E12 + YGSE*E22 + ZGSE*E32
|
|
|
ZGSW = XGSE*E13 + YGSE*E23 + ZGSE*E33
|
|
|
END IF
|
|
|
C
|
|
|
RETURN
|
|
|
END
|
|
|
C
|
|
|
C========================================================================================
|
|
|
C
|
|
|
SUBROUTINE TS_GEOMAG_08(XGEO,YGEO,ZGEO,XMAG,YMAG,ZMAG,J)
|
|
|
C
|
|
|
C CONVERTS GEOGRAPHIC (GEO) TO DIPOLE (MAG) COORDINATES OR VICE VERSA.
|
|
|
C
|
|
|
C J>0 J<0
|
|
|
C -----INPUT: J,XGEO,YGEO,ZGEO J,XMAG,YMAG,ZMAG
|
|
|
C -----OUTPUT: XMAG,YMAG,ZMAG XGEO,YGEO,ZGEO
|
|
|
C
|
|
|
CATTENTION: SUBROUTINE TS_RECALC_08 MUST BE INVOKED BEFORE TS_GEOMAG_08 IN TWO CASES:
|
|
|
C /A/ BEFORE THE FIRST TRANSFORMATION OF COORDINATES
|
|
|
C /B/ IF THE VALUES OF IYEAR AND/OR IDAY HAVE BEEN CHANGED
|
|
|
C
|
|
|
C NO INFORMATION IS REQUIRED HERE ON THE SOLAR WIND VELOCITY, SO ONE
|
|
|
C CAN SET VGSEX=-400.0, VGSEY=0.0, VGSEZ=0.0 IN TS_RECALC_08.
|
|
|
C
|
|
|
C LAST MOFIFICATION: JAN 28, 2008
|
|
|
C
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C
|
|
|
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION XGEO,XMAG,YGEO,YMAG,ZGEO,ZMAG
|
|
|
INTEGER J
|
|
|
C ..
|
|
|
C .. Common blocks ..
|
|
|
COMMON /GEOPACK1/ST0,CT0,SL0,CL0,CTCL,STCL,CTSL,STSL,AB
|
|
|
DOUBLE PRECISION CL0,CT0,CTCL,CTSL,SL0,ST0,STCL,STSL
|
|
|
DOUBLE PRECISION AB(26)
|
|
|
C ..
|
|
|
IF (J.GT.0) THEN
|
|
|
XMAG = XGEO*CTCL + YGEO*CTSL - ZGEO*ST0
|
|
|
YMAG = YGEO*CL0 - XGEO*SL0
|
|
|
ZMAG = XGEO*STCL + YGEO*STSL + ZGEO*CT0
|
|
|
ELSE
|
|
|
XGEO = XMAG*CTCL - YMAG*SL0 + ZMAG*STCL
|
|
|
YGEO = XMAG*CTSL + YMAG*CL0 + ZMAG*STSL
|
|
|
ZGEO = ZMAG*CT0 - XMAG*ST0
|
|
|
END IF
|
|
|
|
|
|
RETURN
|
|
|
END
|
|
|
c
|
|
|
c=========================================================================================
|
|
|
c
|
|
|
SUBROUTINE GEIGEO_08(XGEI,YGEI,ZGEI,XGEO,YGEO,ZGEO,J)
|
|
|
C
|
|
|
C CONVERTS EQUATORIAL INERTIAL (GEI) TO GEOGRAPHICAL (GEO) COORDS
|
|
|
C OR VICE VERSA.
|
|
|
C J>0 J<0
|
|
|
C ----INPUT: J,XGEI,YGEI,ZGEI J,XGEO,YGEO,ZGEO
|
|
|
C ----OUTPUT: XGEO,YGEO,ZGEO XGEI,YGEI,ZGEI
|
|
|
C
|
|
|
CATTENTION: SUBROUTINE TS_RECALC_08 MUST BE INVOKED BEFORE GEIGEO_08 IN TWO CASES:
|
|
|
C /A/ BEFORE THE FIRST TRANSFORMATION OF COORDINATES
|
|
|
C/B/ IF THE CURRENT VALUES OF IYEAR,IDAY,IHOUR,MIN,ISEC HAVE BEEN CHANGED
|
|
|
C
|
|
|
C NO INFORMATION IS REQUIRED HERE ON THE SOLAR WIND VELOCITY, SO ONE
|
|
|
C CAN SET VGSEX=-400.0, VGSEY=0.0, VGSEZ=0.0 IN TS_RECALC_08.
|
|
|
C
|
|
|
C LAST MODIFICATION: JAN 28, 2008
|
|
|
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION XGEI,XGEO,YGEI,YGEO,ZGEI,ZGEO
|
|
|
INTEGER J
|
|
|
C ..
|
|
|
C .. Common blocks ..
|
|
|
COMMON /GEOPACK1/A,CGST,SGST,B
|
|
|
DOUBLE PRECISION CGST,SGST
|
|
|
DOUBLE PRECISION A(13),B(19)
|
|
|
C ..
|
|
|
IF (J.GT.0) THEN
|
|
|
XGEO = XGEI*CGST + YGEI*SGST
|
|
|
YGEO = YGEI*CGST - XGEI*SGST
|
|
|
ZGEO = ZGEI
|
|
|
ELSE
|
|
|
XGEI = XGEO*CGST - YGEO*SGST
|
|
|
YGEI = YGEO*CGST + XGEO*SGST
|
|
|
ZGEI = ZGEO
|
|
|
END IF
|
|
|
|
|
|
RETURN
|
|
|
END
|
|
|
C
|
|
|
C=======================================================================================
|
|
|
C
|
|
|
SUBROUTINE TS_MAGSM_08(XMAG,YMAG,ZMAG,XSM,YSM,ZSM,J)
|
|
|
C
|
|
|
C CONVERTS DIPOLE (MAG) TO SOLAR MAGNETIC (SM) COORDINATES OR VICE VERSA
|
|
|
C
|
|
|
C J>0 J<0
|
|
|
C ----INPUT: J,XMAG,YMAG,ZMAG J,XSM,YSM,ZSM
|
|
|
C ----OUTPUT: XSM,YSM,ZSM XMAG,YMAG,ZMAG
|
|
|
C
|
|
|
CATTENTION: SUBROUTINE TS_RECALC_08 MUST BE INVOKED BEFORE TS_MAGSM_08 IN THREE CASES:
|
|
|
C /A/ BEFORE THE FIRST TRANSFORMATION OF COORDINATES, OR
|
|
|
C /B/ IF THE VALUES OF IYEAR,IDAY,IHOUR,MIN,ISEC HAVE CHANGED, AND/OR
|
|
|
C/C/ IF THE VALUES OF COMPONENTS OF THE SOLAR WIND FLOW VELOCITY HAVE CHANGED
|
|
|
C
|
|
|
C IMPORTANT NOTE:
|
|
|
C
|
|
|
C A NON-STANDARD DEFINITION IS IMPLIED HERE FOR THE SOLAR MAGNETIC COORDINATE
|
|
|
C SYSTEM: IT IS ASSUMED THAT THE XSM AXIS LIES IN THE PLANE DEFINED BY THE
|
|
|
C GEODIPOLE AXIS AND THE OBSERVED VECTOR OF THE SOLAR WIND FLOW (RATHER THAN
|
|
|
C THE EARTH-TS_SUN LINE). IN ORDER TO CONVERT MAG COORDINATES TO AND FROM THE
|
|
|
C STANDARD SM COORDINATES, INVOKE TS_RECALC_08 WITH VGSEX=-400.0, VGSEY=0.0, VGSEZ=0.0
|
|
|
C
|
|
|
C LAST MODIFICATION: FEB 07, 2008
|
|
|
C
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION XMAG,XSM,YMAG,YSM,ZMAG,ZSM
|
|
|
INTEGER J
|
|
|
C ..
|
|
|
C .. Common blocks ..
|
|
|
COMMON /GEOPACK1/A,SFI,CFI,B
|
|
|
DOUBLE PRECISION CFI,SFI
|
|
|
DOUBLE PRECISION A(8),B(24)
|
|
|
C ..
|
|
|
IF (J.GT.0) THEN
|
|
|
XSM = XMAG*CFI - YMAG*SFI
|
|
|
YSM = XMAG*SFI + YMAG*CFI
|
|
|
ZSM = ZMAG
|
|
|
ELSE
|
|
|
XMAG = XSM*CFI + YSM*SFI
|
|
|
YMAG = YSM*CFI - XSM*SFI
|
|
|
ZMAG = ZSM
|
|
|
END IF
|
|
|
|
|
|
RETURN
|
|
|
END
|
|
|
C
|
|
|
C=====================================================================================
|
|
|
C
|
|
|
SUBROUTINE SMGSW_08(XSM,YSM,ZSM,XGSW,YGSW,ZGSW,J)
|
|
|
C
|
|
|
CCONVERTS SOLAR MAGNETIC (SM) TO GEOCENTRIC SOLAR-WIND (GSW) COORDINATES OR VICE VERSA.
|
|
|
C
|
|
|
C J>0 J<0
|
|
|
C -----INPUT: J,XSM,YSM,ZSM J,XGSW,YGSW,ZGSW
|
|
|
C ----OUTPUT: XGSW,YGSW,ZGSW XSM,YSM,ZSM
|
|
|
C
|
|
|
CATTENTION: SUBROUTINE TS_RECALC_08 MUST BE INVOKED BEFORE SMGSW_08 IN THREE CASES:
|
|
|
C /A/ BEFORE THE FIRST TRANSFORMATION OF COORDINATES
|
|
|
C /B/ IF THE VALUES OF IYEAR,IDAY,IHOUR,MIN,ISEC HAVE BEEN CHANGED
|
|
|
C/C/ IF THE VALUES OF COMPONENTS OF THE SOLAR WIND FLOW VELOCITY HAVE CHANGED
|
|
|
C
|
|
|
C IMPORTANT NOTE:
|
|
|
C
|
|
|
C A NON-STANDARD DEFINITION IS IMPLIED HERE FOR THE SOLAR MAGNETIC (SM) COORDINATE
|
|
|
C SYSTEM: IT IS ASSUMED THAT THE XSM AXIS LIES IN THE PLANE DEFINED BY THE
|
|
|
C GEODIPOLE AXIS AND THE OBSERVED VECTOR OF THE SOLAR WIND FLOW (RATHER THAN
|
|
|
C THE EARTH-TS_SUN LINE). IN ORDER TO CONVERT MAG COORDINATES TO AND FROM THE
|
|
|
C STANDARD SM COORDINATES, INVOKE TS_RECALC_08 WITH VGSEX=-400.0, VGSEY=0.0, VGSEZ=0.0
|
|
|
C
|
|
|
C LAST MODIFICATION: FEB 07, 2008
|
|
|
C
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C
|
|
|
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION XGSW,XSM,YGSW,YSM,ZGSW,ZSM
|
|
|
INTEGER J
|
|
|
C ..
|
|
|
C .. Common blocks ..
|
|
|
COMMON /GEOPACK1/A,SPS,CPS,B
|
|
|
DOUBLE PRECISION CPS,SPS
|
|
|
DOUBLE PRECISION A(10),B(22)
|
|
|
C ..
|
|
|
IF (J.GT.0) THEN
|
|
|
XGSW = XSM*CPS + ZSM*SPS
|
|
|
YGSW = YSM
|
|
|
ZGSW = ZSM*CPS - XSM*SPS
|
|
|
ELSE
|
|
|
XSM = XGSW*CPS - ZGSW*SPS
|
|
|
YSM = YGSW
|
|
|
ZSM = XGSW*SPS + ZGSW*CPS
|
|
|
END IF
|
|
|
|
|
|
RETURN
|
|
|
END
|
|
|
C
|
|
|
C==========================================================================================
|
|
|
C
|
|
|
SUBROUTINE GEOGSW(XGEO,YGEO,ZGEO,XGSW,YGSW,ZGSW,J)
|
|
|
C
|
|
|
CCONVERTS GEOGRAPHIC (GEO) TO GEOCENTRIC SOLAR-WIND (GSW) COORDINATES OR VICE VERSA.
|
|
|
C
|
|
|
C J>0 J<0
|
|
|
C ----- INPUT: J,XGEO,YGEO,ZGEO J,XGSW,YGSW,ZGSW
|
|
|
C ---- OUTPUT: XGSW,YGSW,ZGSW XGEO,YGEO,ZGEO
|
|
|
C
|
|
|
CATTENTION: SUBROUTINE TS_RECALC_08 MUST BE INVOKED BEFORE GEOGSW IN THREE CASES:
|
|
|
C /A/ BEFORE THE FIRST TRANSFORMATION OF COORDINATES, OR
|
|
|
C /B/ IF THE VALUES OF IYEAR,IDAY,IHOUR,MIN,ISEC HAVE CHANGED, AND/OR
|
|
|
C/C/ IF THE VALUES OF COMPONENTS OF THE SOLAR WIND FLOW VELOCITY HAVE CHANGED
|
|
|
C
|
|
|
CNOTE: THIS SUBROUTINE CONVERTS GEO VECTORS TO AND FROM THE SOLAR-WIND GSW COORDINATE
|
|
|
C SYSTEM, TAKING INTO ACCOUNT POSSIBLE DEFLECTIONS OF THE SOLAR WIND DIRECTION FROM
|
|
|
C STRICTLY RADIAL. BEFORE CONVERTING TO/FROM STANDARD GSM COORDINATES, INVOKE TS_RECALC_08
|
|
|
C WITH VGSEX=-400.0 and VGSEY=0.0, VGSEZ=0.0
|
|
|
C
|
|
|
C LAST MODIFICATION: FEB 07, 2008
|
|
|
C
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION XGEO,XGSW,YGEO,YGSW,ZGEO,ZGSW
|
|
|
INTEGER J
|
|
|
C ..
|
|
|
C .. Common blocks ..
|
|
|
COMMON /GEOPACK1/AA,A11,A21,A31,A12,A22,A32,A13,A23,A33,B
|
|
|
DOUBLE PRECISION A11,A12,A13,A21,A22,A23,A31,A32,A33
|
|
|
DOUBLE PRECISION AA(16),B(9)
|
|
|
C ..
|
|
|
IF (J.GT.0) THEN
|
|
|
XGSW = A11*XGEO + A12*YGEO + A13*ZGEO
|
|
|
YGSW = A21*XGEO + A22*YGEO + A23*ZGEO
|
|
|
ZGSW = A31*XGEO + A32*YGEO + A33*ZGEO
|
|
|
ELSE
|
|
|
XGEO = A11*XGSW + A21*YGSW + A31*ZGSW
|
|
|
YGEO = A12*XGSW + A22*YGSW + A32*ZGSW
|
|
|
ZGEO = A13*XGSW + A23*YGSW + A33*ZGSW
|
|
|
END IF
|
|
|
|
|
|
RETURN
|
|
|
END
|
|
|
C
|
|
|
C=====================================================================================
|
|
|
C
|
|
|
SUBROUTINE GEODGEO_08(H,XMU,R,THETA,J)
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION H,R,THETA,XMU
|
|
|
INTEGER J
|
|
|
C ..
|
|
|
C .. Local Scalars ..
|
|
|
DOUBLE PRECISION ARG,BETA,COSFIMS,COSLAM,COSXMU,DEN,DPHI,PHI,PHI1,
|
|
|
* RR,RS,R_EQ,SINLAM,SINXMU,SP,TOL,X,XMUS,Z
|
|
|
INTEGER N
|
|
|
C ..
|
|
|
C .. Intrinsic Functions ..
|
|
|
INTRINSIC ABS,ACOS,ASIN,COS,SIN,SQRT
|
|
|
C ..
|
|
|
C .. Data statements ..
|
|
|
C
|
|
|
CTHIS SUBROUTINE (1) CONVERTS VERTICAL LOCAL HEIGHT (ALTITUDE) H AND GEODETIC
|
|
|
CLATITUDE XMU INTO GEOCENTRIC COORDINATES R AND THETA (GEOCENTRIC RADIAL
|
|
|
CDISTANCE AND COLATITUDE, RESPECTIVELY; ALSO KNOWN AS ECEF COORDINATES),
|
|
|
CAS WELL AS (2) PERFORMS THE INVERSE TRANSFORMATION FROM {R,THETA} TO {H,XMU}.
|
|
|
C
|
|
|
CTHE SUBROUTINE USES WORLD GEODETIC SYSTEM WGS84 PARAMETERS FOR THE EARTH'S
|
|
|
CELLIPSOID. THE ANGULAR QUANTITIES (GEO COLATITUDE THETA AND GEODETIC LATITUDE
|
|
|
CXMU) ARE IN RADIANS, AND THE DISTANCES (GEOCENTRIC RADIUS R AND ALTITUDE H
|
|
|
C ABOVE THE EARTH'S ELLIPSOID) ARE IN KILOMETERS.
|
|
|
C
|
|
|
CIF J>0, THE TRANSFORMATION IS MADE FROM GEODETIC TO GEOCENTRIC COORDINATES
|
|
|
C USING SIMPLE DIRECT EQUATIONS.
|
|
|
CIF J<0, THE INVERSE TRANSFORMATION FROM GEOCENTRIC TO GEODETIC COORDINATES
|
|
|
C IS MADE BY MEANS OF A FAST ITERATIVE ALGORITHM.
|
|
|
C
|
|
|
c-------------------------------------------------------------------------------
|
|
|
C J>0 | J<0
|
|
|
c-------------------------------------------|-----------------------------------
|
|
|
C--INPUT: J H XMU | J R THETA
|
|
|
c flag altitude (km) geodetic | flag geocentric spherical
|
|
|
c latitude | distance (km) colatitude
|
|
|
c (radians) | (radians)
|
|
|
c-------------------------------------------|-----------------------------------
|
|
|
c |
|
|
|
C----OUTPUT: R THETA | H XMU
|
|
|
C geocentric spherical | altitude (km) geodetic
|
|
|
C distance (km) colatitude | latitude
|
|
|
C (radians) | (radians)
|
|
|
C-------------------------------------------------------------------------------
|
|
|
C
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
c DATE: DEC 5, 2007
|
|
|
C
|
|
|
c
|
|
|
c R_EQ is the semi-major axis of the Earth's ellipsoid, and BETA is its
|
|
|
c second eccentricity squared
|
|
|
c
|
|
|
DATA R_EQ,BETA/6378.137D0,6.73949674228D-3/
|
|
|
DATA TOL/1.D-6/
|
|
|
C ..
|
|
|
c
|
|
|
c Direct transformation (GEOD=>GEO):
|
|
|
c
|
|
|
IF (J.GT.0) THEN
|
|
|
COSXMU = COS(XMU)
|
|
|
SINXMU = SIN(XMU)
|
|
|
DEN = SQRT(COSXMU**2+(SINXMU/(1.0D0+BETA))**2)
|
|
|
COSLAM = COSXMU/DEN
|
|
|
SINLAM = SINXMU/(DEN*(1.0D0+BETA))
|
|
|
RS = R_EQ/SQRT(1.0D0+BETA*SINLAM**2)
|
|
|
X = RS*COSLAM + H*COSXMU
|
|
|
Z = RS*SINLAM + H*SINXMU
|
|
|
R = SQRT(X**2+Z**2)
|
|
|
THETA = ACOS(Z/R)
|
|
|
END IF
|
|
|
|
|
|
c
|
|
|
c Inverse transformation (GEO=>GEOD):
|
|
|
c
|
|
|
IF (J.LT.0) THEN
|
|
|
N = 0
|
|
|
PHI = 1.570796327D0 - THETA
|
|
|
PHI1 = PHI
|
|
|
10 SP = SIN(PHI1)
|
|
|
C *PT*WARNING* Constant already double-precision
|
|
|
ARG = SP*(1.0D0+BETA)/SQRT(1.0D0+BETA*(2.0D0+BETA)*SP**2)
|
|
|
XMUS = ASIN(ARG)
|
|
|
RS = R_EQ/SQRT(1.0D0+BETA*SIN(PHI1)**2)
|
|
|
COSFIMS = COS(PHI1-XMUS)
|
|
|
H = SQRT((RS*COSFIMS)**2+R**2-RS**2) - RS*COSFIMS
|
|
|
Z = RS*SIN(PHI1) + H*SIN(XMUS)
|
|
|
X = RS*COS(PHI1) + H*COS(XMUS)
|
|
|
RR = SQRT(X**2+Z**2)
|
|
|
DPHI = ASIN(Z/RR) - PHI
|
|
|
PHI1 = PHI1 - DPHI
|
|
|
N = N + 1
|
|
|
IF (ABS(DPHI).GT.TOL .AND. N.LT.100) GO TO 10
|
|
|
XMU = XMUS
|
|
|
END IF
|
|
|
|
|
|
RETURN
|
|
|
END
|
|
|
C
|
|
|
C=====================================================================================
|
|
|
C
|
|
|
SUBROUTINE RHAND_08(X,Y,Z,R1,R2,R3,IOPT,PARMOD,EXNAME,INNAME)
|
|
|
C
|
|
|
CCALCULATES THE COMPONENTS OF THE RIGHT HAND SIDE VECTOR IN THE TS_GEOMAGNETIC FIELD
|
|
|
C LINE EQUATION (a subsidiary subroutine for the subroutine STEP_08)
|
|
|
C
|
|
|
C LAST MODIFICATION: FEB 07, 2008
|
|
|
C
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C
|
|
|
C
|
|
|
CEXNAME AND INNAME ARE NAMES OF SUBROUTINES FOR THE EXTERNAL AND INTERNAL
|
|
|
C PARTS OF THE TOTAL FIELD, E.G., T96_01 AND IGRF_GSW_08
|
|
|
C
|
|
|
C common block added by B. Rideout to signal error
|
|
|
COMMON /BR_ERR/IERR
|
|
|
INTEGER IERR
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION R1,R2,R3,X,Y,Z
|
|
|
INTEGER IOPT
|
|
|
C ..
|
|
|
C .. Array Arguments ..
|
|
|
DOUBLE PRECISION PARMOD(10)
|
|
|
C ..
|
|
|
C .. Subroutine Arguments ..
|
|
|
EXTERNAL EXNAME,INNAME
|
|
|
C ..
|
|
|
C .. Local Scalars ..
|
|
|
DOUBLE PRECISION B,BX,BXGSW,BY,BYGSW,BZ,BZGSW,HXGSW,HYGSW,HZGSW
|
|
|
C ..
|
|
|
C .. Intrinsic Functions ..
|
|
|
INTRINSIC SQRT
|
|
|
C ..
|
|
|
C .. Common blocks ..
|
|
|
COMMON /GEOPACK1/A,DS3,BB,PSI,CC
|
|
|
DOUBLE PRECISION DS3,PSI
|
|
|
DOUBLE PRECISION A(12),BB(2),CC(18)
|
|
|
C ..
|
|
|
CALL EXNAME(IOPT,PARMOD,PSI,X,Y,Z,BXGSW,BYGSW,BZGSW)
|
|
|
C error check added by brideout
|
|
|
IF (IERR .EQ. 1) THEN
|
|
|
RETURN
|
|
|
END IF
|
|
|
CALL INNAME(X,Y,Z,HXGSW,HYGSW,HZGSW)
|
|
|
|
|
|
BX = BXGSW + HXGSW
|
|
|
BY = BYGSW + HYGSW
|
|
|
BZ = BZGSW + HZGSW
|
|
|
B = DS3/SQRT(BX**2+BY**2+BZ**2)
|
|
|
R1 = BX*B
|
|
|
R2 = BY*B
|
|
|
R3 = BZ*B
|
|
|
RETURN
|
|
|
END
|
|
|
C
|
|
|
C===================================================================================
|
|
|
C
|
|
|
SUBROUTINE STEP_08(X,Y,Z,DS,DSMAX,ERRIN,IOPT,PARMOD,EXNAME,INNAME)
|
|
|
C
|
|
|
CRE-CALCULATES THE INPUT VALUES {X,Y,Z} (IN GSW COORDINATES) FOR ANY POINT ON A FIELD LINE,
|
|
|
CBY MAKING A STEP ALONG THAT LINE USING RUNGE-KUTTA-MERSON ALGORITHM (G.N. Lance, Numerical
|
|
|
C methods for high-speed computers, Iliffe & Sons, London 1960.)
|
|
|
CDS IS A PRESCRIBED VALUE OF THE CURRENT STEP SIZE, DSMAX IS ITS UPPER LIMIT.
|
|
|
CERRIN IS A PERMISSIBLE ERROR (ITS OPTIMAL VALUE SPECIFIED IN THE S/R TRACE)
|
|
|
CIF THE ACTUAL ERROR (ERRCUR) AT THE CURRENT STEP IS LARGER THAN ERRIN, THE STEP IS REJECTED,
|
|
|
C AND THE CALCULATION IS REPEATED ANEW WITH HALVED STEPSIZE DS.
|
|
|
CIF ERRCUR IS SMALLER THAN ERRIN, THE STEP IS ACCEPTED, AND THE CURRENT VALUE OF DS IS RETAINE
|
|
|
C D
|
|
|
C FOR THE NEXT STEP.
|
|
|
CIF ERRCUR IS SMALLER THAN 0.04*ERRIN, THE STEP IS ACCEPTED, AND THE VALUE OF DS FOR THE NEXT
|
|
|
C STEP
|
|
|
C IS INCREASED BY THE FACTOR 1.5, BUT NOT LARGER THAN DSMAX.
|
|
|
CIOPT IS A FLAG, RESERVED FOR SPECIFYNG A VERSION OF THE EXTERNAL FIELD MODEL EXNAME.
|
|
|
C ARRAY PARMOD(10) CONTAINS INPUT PARAMETERS FOR THE MODEL EXNAME.
|
|
|
C EXNAME IS THE NAME OF THE SUBROUTINE FOR THE EXTERNAL FIELD MODEL.
|
|
|
CINNAME IS THE NAME OF THE SUBROUTINE FOR THE INTERNAL FIELD MODEL (EITHER DIP_08 OR IGRF_GSW_08
|
|
|
C )
|
|
|
C
|
|
|
CALL THE ABOVE PARAMETERS ARE INPUT ONES; OUTPUT IS THE TS_RECALCULATED VALUES OF X,Y,Z
|
|
|
C
|
|
|
C LAST MODIFICATION: APR 21, 2008 (SEE ERRATA AS OF THIS DATE)
|
|
|
C
|
|
|
C common block added by B. Rideout to signal error
|
|
|
COMMON /BR_ERR/IERR
|
|
|
INTEGER IERR
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION DS,DSMAX,ERRIN,X,Y,Z
|
|
|
INTEGER IOPT
|
|
|
C ..
|
|
|
C .. Array Arguments ..
|
|
|
DOUBLE PRECISION PARMOD(10)
|
|
|
C ..
|
|
|
C .. Subroutine Arguments ..
|
|
|
EXTERNAL EXNAME,INNAME
|
|
|
C ..
|
|
|
C .. Local Scalars ..
|
|
|
DOUBLE PRECISION ERRCUR,R11,R12,R13,R21,R22,R23,R31,R32,R33,R41,
|
|
|
* R42,R43,R51,R52,R53
|
|
|
C ..
|
|
|
C .. External Subroutines ..
|
|
|
EXTERNAL RHAND_08
|
|
|
C ..
|
|
|
C .. Intrinsic Functions ..
|
|
|
INTRINSIC ABS,SIGN
|
|
|
C ..
|
|
|
C .. Common blocks ..
|
|
|
COMMON /GEOPACK1/A,DS3,B
|
|
|
DOUBLE PRECISION DS3
|
|
|
DOUBLE PRECISION A(12),B(21)
|
|
|
C ..
|
|
|
10 DS3 = -DS/3.D0
|
|
|
CALL RHAND_08(X,Y,Z,R11,R12,R13,IOPT,PARMOD,EXNAME,INNAME)
|
|
|
C error check added by brideout
|
|
|
IF (IERR .EQ. 1) THEN
|
|
|
RETURN
|
|
|
END IF
|
|
|
CALL RHAND_08(X+R11,Y+R12,Z+R13,R21,R22,R23,IOPT,PARMOD,EXNAME,
|
|
|
* INNAME)
|
|
|
C error check added by brideout
|
|
|
IF (IERR .EQ. 1) THEN
|
|
|
RETURN
|
|
|
END IF
|
|
|
CALL RHAND_08(X+.5D0*(R11+R21),Y+.5D0*(R12+R22),Z+.5D0*(R13+R23),
|
|
|
* R31,R32,R33,IOPT,PARMOD,EXNAME,INNAME)
|
|
|
C error check added by brideout
|
|
|
IF (IERR .EQ. 1) THEN
|
|
|
RETURN
|
|
|
END IF
|
|
|
CALL RHAND_08(X+.375D0*(R11+3.D0*R31),Y+.375D0*(R12+3.D0*R32),
|
|
|
* Z+.375D0*(R13+3.D0*R33),R41,R42,R43,IOPT,PARMOD,
|
|
|
* EXNAME,INNAME)
|
|
|
C error check added by brideout
|
|
|
IF (IERR .EQ. 1) THEN
|
|
|
RETURN
|
|
|
END IF
|
|
|
CALL RHAND_08(X+1.5D0*(R11-3.D0*R31+4.D0*R41),
|
|
|
* Y+1.5D0*(R12-3.D0*R32+4.D0*R42),
|
|
|
* Z+1.5D0*(R13-3.D0*R33+4.D0*R43),R51,R52,R53,IOPT,
|
|
|
* PARMOD,EXNAME,INNAME)
|
|
|
C error check added by brideout
|
|
|
IF (IERR .EQ. 1) THEN
|
|
|
RETURN
|
|
|
END IF
|
|
|
ERRCUR = ABS(R11-4.5D0*R31+4.D0*R41-.5D0*R51) +
|
|
|
* ABS(R12-4.5D0*R32+4.D0*R42-.5D0*R52) +
|
|
|
* ABS(R13-4.5D0*R33+4.D0*R43-.5D0*R53)
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C
|
|
|
|
|
|
C
|
|
|
IF (ERRCUR.GT.ERRIN) THEN
|
|
|
DS = DS*.5D0
|
|
|
GO TO 10
|
|
|
END IF
|
|
|
C READY FOR MAKING THE STEP, BUT CHECK THE ACCURACY; IF INSUFFICIENT,
|
|
|
C REPEAT THE STEP WITH HALVED STEPSIZE:
|
|
|
C
|
|
|
C
|
|
|
IF (ABS(DS).GT.DSMAX) THEN
|
|
|
DS = SIGN(DSMAX,DS)
|
|
|
GO TO 10
|
|
|
END IF
|
|
|
C ACCURACY IS ACCEPTABLE, BUT CHECK IF THE STEPSIZE IS NOT TOO LARGE;
|
|
|
C OTHERWISE REPEAT THE STEP WITH DS=DSMAX
|
|
|
C
|
|
|
20 X = X + .5D0*(R11+4.D0*R41+R51)
|
|
|
Y = Y + .5D0*(R12+4.D0*R42+R52)
|
|
|
Z = Z + .5D0*(R13+4.D0*R43+R53)
|
|
|
C
|
|
|
C MAKING THE STEP:
|
|
|
C
|
|
|
C
|
|
|
IF (ERRCUR.LT.ERRIN*.04D0 .AND. DS.LT.DSMAX/1.5D0) DS = DS*1.5D0
|
|
|
RETURN
|
|
|
END
|
|
|
CIF THE ACTUAL ERROR IS TOO SMALL (LESS THAN 4% OF ERRIN) AND DS SMALLER
|
|
|
C THAN DSMAX/1.5, THEN WE INCREASE THE STEPSIZE FOR THE NEXT STEP BY 50%
|
|
|
C
|
|
|
SUBROUTINE TRACE(XI,YI,ZI,DIR,DSMAX,ERR,RLIM,R0,IOPT,PARMOD,
|
|
|
* EXNAME,INNAME,XF,YF,ZF,XX,YY,ZZ,L,LMAX)
|
|
|
C
|
|
|
C==============================================================================
|
|
|
C
|
|
|
C
|
|
|
C TRACES A FIELD LINE FROM AN ARBITRARY POINT OF SPACE TO THE EARTH'S
|
|
|
C SURFACE OR TO A MODEL LIMITING BOUNDARY.
|
|
|
C
|
|
|
C THIS SUBROUTINE ALLOWS TWO OPTIONS:
|
|
|
C
|
|
|
C(1) IF INNAME=IGRF_GSW_08, THEN THE IGRF MODEL WILL BE USED FOR CALCULATING
|
|
|
C CONTRIBUTION FROM EARTH'S INTERNAL SOURCES. IN THIS CASE, SUBROUTINE
|
|
|
C TS_RECALC_08 MUST BE CALLED BEFORE USING TRACE, WITH PROPERLY SPECIFIED DATE,
|
|
|
C UNIVERSAL TIME, AND SOLAR WIND VELOCITY COMPONENTS, TO CALCULATE IN ADVANCE
|
|
|
C ALL QUANTITIES NEEDED FOR THE MAIN FIELD MODEL AND FOR TRANSFORMATIONS
|
|
|
C BETWEEN INVOLVED COORDINATE SYSTEMS.
|
|
|
C
|
|
|
C(2) IF INNAME=DIP_08, THEN A PURE DIPOLE FIELD WILL BE USED INSTEAD OF THE IGRF MODEL.
|
|
|
C IN THIS CASE, THE SUBROUTINE TS_RECALC_08 MUST ALSO BE CALLED BEFORE TRACE.
|
|
|
C HERE ONE CAN CHOOSE EITHER TO
|
|
|
C (a) CALCULATE DIPOLE TILT ANGLE BASED ON DATE, TIME, AND SOLAR WIND DIRECTION,
|
|
|
COR (b) EXPLICITLY SPECIFY THAT ANGLE, WITHOUT ANY REFERENCE TO DATE/UT/SOLAR WIND.
|
|
|
C IN THE LAST CASE (b), THE SINE (SPS) AND COSINE (CPS) OF THE DIPOLE TILT
|
|
|
C ANGLE MUST BE SPECIFIED IN ADVANCE (BUT AFTER HAVING CALLED TS_RECALC_08) AND FORWARDED
|
|
|
C IN THE COMMON BLOCK /GEOPACK1/ (IN ITS 11th AND 12th ELEMENTS, RESPECTIVELY).
|
|
|
C IN THIS CASE THE ROLE OF THE SUBROUTINE TS_RECALC_08 IS REDUCED TO ONLY CALCULATING
|
|
|
C THE COMPONENTS OF THE EARTH'S DIPOLE MOMENT.
|
|
|
C
|
|
|
C ------------- INPUT PARAMETERS:
|
|
|
C
|
|
|
CXI,YI,ZI - GSW COORDS OF THE FIELD LINE STARTING POINT (IN EARTH RADII, 1 RE = 6371.2 km),
|
|
|
C
|
|
|
CDIR - SIGN OF THE TRACING DIRECTION: IF DIR=1.0 THEN THE TRACING IS MADE ANTIPARALLEL
|
|
|
CTO THE TOTAL FIELD VECTOR (E.G., FROM NORTHERN TO SOUTHERN CONJUGATE POINT);
|
|
|
CIF DIR=-1.0 THEN THE TRACING PROCEEDS IN THE OPPOSITE DIRECTION, THAT IS, PARALLEL TO
|
|
|
C THE TOTAL FIELD VECTOR.
|
|
|
C
|
|
|
CDSMAX - UPPER LIMIT ON THE STEPSIZE (SETS A DESIRED MAXIMAL SPACING BETWEEN
|
|
|
C THE FIELD LINE POINTS)
|
|
|
C
|
|
|
CERR - PERMISSIBLE STEP ERROR. A REASONABLE ESTIMATE PROVIDING A SUFFICIENT ACCURACY FOR MOST
|
|
|
C APPLICATIONS IS ERR=0.0001. SMALLER/LARGER VALUES WILL RESULT IN LARGER/SMALLER NUMBER
|
|
|
C OF STEPS AND, HENCE, OF OUTPUT FIELD LINE POINTS. NOTE THAT USING MUCH SMALLER VALUES
|
|
|
C OF ERR MAY REQUIRE USING A DOUBLE PRECISION VERSION OF THE ENTIRE PACKAGE.
|
|
|
C
|
|
|
CR0 - RADIUS OF A SPHERE (IN RE), DEFINING THE INNER BOUNDARY OF THE TRACING REGION
|
|
|
C (USUALLY, EARTH'S SURFACE OR THE IONOSPHERE, WHERE R0~1.0)
|
|
|
C IF THE FIELD LINE REACHES THAT SPHERE FROM OUTSIDE, ITS INBOUND TRACING IS
|
|
|
C TERMINATED AND THE CROSSING POINT COORDINATES XF,YF,ZF ARE CALCULATED.
|
|
|
C
|
|
|
CRLIM - RADIUS OF A SPHERE (IN RE), DEFINING THE OUTER BOUNDARY OF THE TRACING REGION;
|
|
|
C IF THE FIELD LINE REACHES THAT BOUNDARY FROM INSIDE, ITS OUTBOUND TRACING IS
|
|
|
C TERMINATED AND THE CROSSING POINT COORDINATES XF,YF,ZF ARE CALCULATED.
|
|
|
C
|
|
|
CIOPT - A MODEL INDEX; CAN BE USED FOR SPECIFYING A VERSION OF THE EXTERNAL FIELD
|
|
|
C MODEL (E.G., A NUMBER OF THE KP-INDEX INTERVAL). ALTERNATIVELY, ONE CAN USE THE ARRAY
|
|
|
C PARMOD FOR THAT PURPOSE (SEE BELOW); IN THAT CASE IOPT IS JUST A DUMMY PARAMETER.
|
|
|
C
|
|
|
CPARMOD - A 10-ELEMENT ARRAY CONTAINING INPUT PARAMETERS NEEDED FOR A UNIQUE
|
|
|
C SPECIFICATION OF THE EXTERNAL FIELD MODEL. THE CONCRETE MEANING OF THE COMPONENTS
|
|
|
C OF PARMOD DEPENDS ON A SPECIFIC VERSION OF THAT MODEL.
|
|
|
C
|
|
|
CEXNAME - NAME OF A SUBROUTINE PROVIDING COMPONENTS OF THE EXTERNAL MAGNETIC FIELD
|
|
|
C (E.G., T89, OR T96_01, ETC.).
|
|
|
CINNAME - NAME OF A SUBROUTINE PROVIDING COMPONENTS OF THE INTERNAL MAGNETIC FIELD
|
|
|
C (EITHER DIP_08 OR IGRF_GSW_08).
|
|
|
C
|
|
|
CLMAX - MAXIMAL LENGTH OF THE ARRAYS XX,YY,ZZ, IN WHICH COORDINATES OF THE FIELD
|
|
|
C LINE POINTS ARE STORED. LMAX SHOULD BE SET EQUAL TO THE ACTUAL LENGTH OF
|
|
|
C THE ARRAYS, DEFINED IN THE MAIN PROGRAM AS ACTUAL ARGUMENTS OF THIS SUBROUTINE.
|
|
|
C
|
|
|
C -------------- OUTPUT PARAMETERS:
|
|
|
C
|
|
|
C XF,YF,ZF - GSW COORDINATES OF THE ENDPOINT OF THE TRACED FIELD LINE.
|
|
|
CXX,YY,ZZ - ARRAYS OF LENGTH LMAX, CONTAINING COORDINATES OF THE FIELD LINE POINTS.
|
|
|
C L - ACTUAL NUMBER OF FIELD LINE POINTS, GENERATED BY THIS SUBROUTINE.
|
|
|
C
|
|
|
C ----------------------------------------------------------
|
|
|
C
|
|
|
C LAST MODIFICATION: JAN 30, 2008.
|
|
|
C
|
|
|
C common block added by B. Rideout to signal error
|
|
|
COMMON /BR_ERR/IERR
|
|
|
INTEGER IERR
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION DIR,DSMAX,ERR,R0,RLIM,XF,XI,YF,YI,ZF,ZI
|
|
|
INTEGER IOPT,L,LMAX
|
|
|
C ..
|
|
|
C .. Array Arguments ..
|
|
|
DOUBLE PRECISION PARMOD(10),XX(LMAX),YY(LMAX),ZZ(LMAX)
|
|
|
C ..
|
|
|
C .. Subroutine Arguments ..
|
|
|
EXTERNAL EXNAME,INNAME
|
|
|
C ..
|
|
|
C .. Local Scalars ..
|
|
|
DOUBLE PRECISION AD,AL,DR,DRP,DS,FC,R,R1,R2,R3,RR,RYZ,X,XR,Y,YR,Z,
|
|
|
* ZR
|
|
|
INTEGER NREV
|
|
|
C ..
|
|
|
C .. External Subroutines ..
|
|
|
EXTERNAL RHAND_08,STEP_08
|
|
|
C ..
|
|
|
C .. Intrinsic Functions ..
|
|
|
INTRINSIC SQRT
|
|
|
C ..
|
|
|
C .. Common blocks ..
|
|
|
COMMON /GEOPACK1/AA,DD,BB
|
|
|
DOUBLE PRECISION DD
|
|
|
DOUBLE PRECISION AA(12),BB(21)
|
|
|
C ..
|
|
|
L = 0
|
|
|
NREV = 0
|
|
|
DD = DIR
|
|
|
C AUTHOR: N. A. TSYGANENKO
|
|
|
C
|
|
|
C
|
|
|
DS = 0.5D0*DIR
|
|
|
X = XI
|
|
|
Y = YI
|
|
|
Z = ZI
|
|
|
C initialize error flag
|
|
|
IERR = 0
|
|
|
C
|
|
|
C INITIALIZE THE STEP SIZE AND STARTING PONT:
|
|
|
C
|
|
|
c
|
|
|
chere we call RHAND_08 just to find out the sign of the radial component of the field
|
|
|
CALL RHAND_08(X,Y,Z,R1,R2,R3,IOPT,PARMOD,EXNAME,INNAME)
|
|
|
C error check added by brideout
|
|
|
IF (IERR .EQ. 1) THEN
|
|
|
L = 999
|
|
|
RETURN
|
|
|
END IF
|
|
|
AD = 0.01D0
|
|
|
IF (X*R1+Y*R2+Z*R3.LT.0.D0) AD = -0.01D0
|
|
|
cvector, and to determine the initial direction of the tracing (i.e., either away
|
|
|
c or towards Earth):
|
|
|
c
|
|
|
C
|
|
|
c |AD|=0.01 and its sign follows the rule:
|
|
|
c(1) if DIR=1 (tracing antiparallel to B vector) then the sign of AD is the same as of Br
|
|
|
RR = SQRT(X**2+Y**2+Z**2) + AD
|
|
|
c(2) if DIR=-1 (tracing parallel to B vector) then the sign of AD is opposite to that of Br
|
|
|
10 L = L + 1
|
|
|
IF (L.GT.LMAX) GO TO 40
|
|
|
XX(L) = X
|
|
|
YY(L) = Y
|
|
|
ZZ(L) = Z
|
|
|
RYZ = Y**2 + Z**2
|
|
|
R2 = X**2 + RYZ
|
|
|
R = SQRT(R2)
|
|
|
cAD is defined in order to initialize the value of RR (radial distance at previous step):
|
|
|
|
|
|
c
|
|
|
C
|
|
|
ccheck if the line hit the outer tracing boundary; if yes, then terminate
|
|
|
cthe tracing (label 8). The outer boundary is assumed reached, when the line
|
|
|
IF (R.GT.RLIM .OR. RYZ.GT.1600.D0 .OR. X.GT.20.D0) GO TO 50
|
|
|
ccrosses any of the 3 surfaces: (1) a sphere R=RLIM, (2) a cylinder of radius 40Re,
|
|
|
c coaxial with the XGSW axis, (3) the plane X=20Re:
|
|
|
|
|
|
c
|
|
|
IF (R.LT.R0 .AND. RR.GT.R) GO TO 30
|
|
|
ccheck whether or not the inner tracing boundary was crossed from outside,
|
|
|
cif yes, then calculate the footpoint position by interpolation (go to label 6):
|
|
|
c
|
|
|
IF (R.GE.RR .OR. R.GE.3.D0) GO TO 20
|
|
|
|
|
|
ccheck if we are moving outward, or R is still larger than 3Re; if yes, proceed further:
|
|
|
c
|
|
|
c
|
|
|
cnow we entered inside the sphere R=3: to avoid too large steps (and hence
|
|
|
FC = 0.2D0
|
|
|
IF (R-R0.LT.0.05D0) FC = 0.05D0
|
|
|
AL = FC*(R-R0+0.2D0)
|
|
|
DS = DIR*AL
|
|
|
cinaccurate interpolated position of the footpoint), enforce the progressively
|
|
|
20 XR = X
|
|
|
YR = Y
|
|
|
ZR = Z
|
|
|
c smaller stepsize values as we approach the inner boundary R=R0:
|
|
|
DRP = R - RR
|
|
|
RR = R
|
|
|
c
|
|
|
CALL STEP_08(X,Y,Z,DS,DSMAX,ERR,IOPT,PARMOD,EXNAME,INNAME)
|
|
|
C error check added by brideout
|
|
|
IF (IERR .EQ. 1) THEN
|
|
|
L = 999
|
|
|
RETURN
|
|
|
END IF
|
|
|
c
|
|
|
c
|
|
|
c
|
|
|
c
|
|
|
R = SQRT(X**2+Y**2+Z**2)
|
|
|
DR = R - RR
|
|
|
IF (DRP*DR.LT.0.D0) NREV = NREV + 1
|
|
|
IF (NREV.GT.2) GO TO 50
|
|
|
Ccheck the total number NREV of changes in the tracing radial direction; (NREV.GT.2) means
|
|
|
GO TO 10
|
|
|
cthat the line started making multiple loops, in which case we stop the process:
|
|
|
C
|
|
|
C
|
|
|
c
|
|
|
30 R1 = (R0-R)/(RR-R)
|
|
|
X = X - (X-XR)*R1
|
|
|
Y = Y - (Y-YR)*R1
|
|
|
Z = Z - (Z-ZR)*R1
|
|
|
GO TO 50
|
|
|
C 40 WRITE (*,FMT=9000)
|
|
|
L = LMAX
|
|
|
40 L = LMAX
|
|
|
50 XF = X
|
|
|
YF = Y
|
|
|
ZF = Z
|
|
|
cfind the footpoint position by interpolating between the current and previous
|
|
|
c field line points:
|
|
|
c
|
|
|
C
|
|
|
Creplace the coordinates of the last (L-th) point in the XX,YY,ZZ arrays
|
|
|
XX(L) = XF
|
|
|
YY(L) = YF
|
|
|
ZZ(L) = ZF
|
|
|
Cso that they correspond to the estimated footpoint position {XF,YF,ZF},
|
|
|
RETURN
|
|
|
9000 FORMAT (/,/,1X,'**** COMPUTATIONS IN THE SUBROUTINE TRACE ARE',
|
|
|
* ' TERMINATED: THE NUMBER OF POINTS EXCEEDED LMAX ****',/,/)
|
|
|
END
|
|
|
c satisfying: sqrt(XF**2+YF**2+ZF**2}=R0
|
|
|
C
|
|
|
C
|
|
|
SUBROUTINE SHUETAL_MGNP_08(XN_PD,VEL,BZIMF,XGSW,YGSW,ZGSW,XMGNP,
|
|
|
* YMGNP,ZMGNP,DIST,ID)
|
|
|
c
|
|
|
C====================================================================================
|
|
|
C
|
|
|
C
|
|
|
CFOR ANY POINT OF SPACE WITH COORDINATES (XGSW,YGSW,ZGSW) AND SPECIFIED CONDITIONS
|
|
|
C IN THE INCOMING SOLAR WIND, THIS SUBROUTINE:
|
|
|
C
|
|
|
C(1) DETERMINES IF THE POINT (XGSW,YGSW,ZGSW) LIES INSIDE OR OUTSIDE THE
|
|
|
C MODEL MAGNETOPAUSE OF SHUE ET AL. (JGR-A, V.103, P. 17691, 1998).
|
|
|
C
|
|
|
C(2) CALCULATES THE GSW POSITION OF A POINT {XMGNP,YMGNP,ZMGNP}, LYING AT THE MODEL
|
|
|
C MAGNETOPAUSE AND ASYMPTOTICALLY TENDING TO THE NEAREST BOUNDARY POINT WITH
|
|
|
C RESPECT TO THE OBSERVATION POINT {XGSW,YGSW,ZGSW}, AS IT APPROACHES THE MAGNETO-
|
|
|
C PAUSE.
|
|
|
C
|
|
|
CINPUT: XN_PD - EITHER SOLAR WIND PROTON NUMBER DENSITY (PER C.C.) (IF VEL>0)
|
|
|
C OR THE SOLAR WIND RAM PRESSURE IN NANOPASCALS (IF VEL<0)
|
|
|
C BZIMF - IMF BZ IN NANOTESLAS
|
|
|
C
|
|
|
C VEL - EITHER SOLAR WIND VELOCITY (KM/SEC)
|
|
|
C OR ANY NEGATIVE NUMBER, WHICH INDICATES THAT XN_PD STANDS
|
|
|
C FOR THE SOLAR WIND PRESSURE, RATHER THAN FOR THE DENSITY
|
|
|
C
|
|
|
C XGSW,YGSW,ZGSW - GSW POSITION OF THE OBSERVATION POINT IN EARTH RADII
|
|
|
C
|
|
|
C OUTPUT: XMGNP,YMGNP,ZMGNP - GSW POSITION OF THE BOUNDARY POINT
|
|
|
C DIST - DISTANCE (IN RE) BETWEEN THE OBSERVATION POINT (XGSW,YGSW,ZGSW)
|
|
|
C AND THE MODEL NAGNETOPAUSE
|
|
|
C ID - POSITION FLAG: ID=+1 (-1) MEANS THAT THE OBSERVATION POINT
|
|
|
C LIES INSIDE (OUTSIDE) OF THE MODEL MAGNETOPAUSE, RESPECTIVELY.
|
|
|
C
|
|
|
C OTHER SUBROUTINES USED: T96_MGNP_08
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION BZIMF,DIST,VEL,XGSW,XMGNP,XN_PD,YGSW,YMGNP,ZGSW,
|
|
|
* ZMGNP
|
|
|
INTEGER ID
|
|
|
C ..
|
|
|
C .. Local Scalars ..
|
|
|
DOUBLE PRECISION ALPHA,CT,DR,DS,DT,F,GRADF,GRADF_R,GRADF_T,P,PHI,
|
|
|
* R,R0,RHO,RHO2,RM,ST,T,XMT96,YMT96,ZMT96
|
|
|
INTEGER ID96,NIT
|
|
|
C ..
|
|
|
C .. External Subroutines ..
|
|
|
EXTERNAL T96_MGNP_08
|
|
|
C ..
|
|
|
C .. Intrinsic Functions ..
|
|
|
INTRINSIC ATAN2,COS,DLOG,SIN,SQRT,TANH
|
|
|
C ..
|
|
|
IF (VEL.LT.0.D0) THEN
|
|
|
P = XN_PD
|
|
|
ELSE
|
|
|
P = 1.94D-6*XN_PD*VEL**2
|
|
|
END IF
|
|
|
c AUTHOR: N.A. TSYGANENKO,
|
|
|
C DATE: APRIL 4, 2003.
|
|
|
C
|
|
|
|
|
|
c
|
|
|
cDEFINE THE ANGLE PHI, MEASURED DUSKWARD FROM THE NOON-MIDNIGHT MERIDIAN PLANE;
|
|
|
IF (YGSW.NE.0.D0 .OR. ZGSW.NE.0.D0) THEN
|
|
|
PHI = ATAN2(YGSW,ZGSW)
|
|
|
ELSE
|
|
|
PHI = 0.D0
|
|
|
END IF
|
|
|
CIF THE OBSERVATION POINT LIES ON THE X AXIS, THE ANGLE PHI CANNOT BE UNIQUELY
|
|
|
C DEFINED, AND WE SET IT AT ZERO:
|
|
|
c
|
|
|
C
|
|
|
ID = -1
|
|
|
R0 = (10.22D0+1.29D0*TANH(0.184D0*(BZIMF+8.14D0)))*
|
|
|
* P**(-.15151515D0)
|
|
|
ALPHA = (0.58D0-0.007D0*BZIMF)*(1.D0+0.024D0*DLOG(P))
|
|
|
R = SQRT(XGSW**2+YGSW**2+ZGSW**2)
|
|
|
RM = R0*(2.D0/(1.D0+XGSW/R))**ALPHA
|
|
|
IF (R.LE.RM) ID = +1
|
|
|
CFIRST, FIND OUT IF THE OBSERVATION POINT LIES INSIDE THE SHUE ET AL BDRY
|
|
|
C AND SET THE VALUE OF THE ID FLAG:
|
|
|
C
|
|
|
C
|
|
|
C NOW, FIND THE CORRESPONDING T96 MAGNETOPAUSE POSITION, TO BE USED AS
|
|
|
CALL T96_MGNP_08(P,-1.D0,XGSW,YGSW,ZGSW,XMT96,YMT96,ZMT96,DIST,
|
|
|
* ID96)
|
|
|
C A STARTING APPROXIMATION IN THE SEARCH OF A CORRESPONDING SHUE ET AL.
|
|
|
RHO2 = YMT96**2 + ZMT96**2
|
|
|
R = SQRT(RHO2+XMT96**2)
|
|
|
ST = SQRT(RHO2)/R
|
|
|
CT = XMT96/R
|
|
|
C BOUNDARY POINT:
|
|
|
C
|
|
|
C
|
|
|
C
|
|
|
NIT = 0
|
|
|
C NOW, USE NEWTON'S ITERATIVE METHOD TO FIND THE NEAREST POINT AT THE
|
|
|
10 T = ATAN2(ST,CT)
|
|
|
RM = R0*(2.D0/(1.D0+CT))**ALPHA
|
|
|
C SHUE ET AL.'S BOUNDARY:
|
|
|
F = R - RM
|
|
|
GRADF_R = 1.D0
|
|
|
GRADF_T = -ALPHA/R*RM*ST/(1.D0+CT)
|
|
|
GRADF = SQRT(GRADF_R**2+GRADF_T**2)
|
|
|
C
|
|
|
DR = -F/GRADF**2
|
|
|
DT = DR/R*GRADF_T
|
|
|
|
|
|
R = R + DR
|
|
|
T = T + DT
|
|
|
ST = SIN(T)
|
|
|
CT = COS(T)
|
|
|
|
|
|
DS = SQRT(DR**2+(R*DT)**2)
|
|
|
|
|
|
NIT = NIT + 1
|
|
|
|
|
|
C IF (NIT.GT.1000) THEN
|
|
|
C PRINT *,
|
|
|
C * ' BOUNDARY POINT COULD NOT BE FOUND; ITERATIONS DO NOT CONVERGE'
|
|
|
C END IF
|
|
|
|
|
|
IF (DS.GT.1.D-4) GO TO 10
|
|
|
|
|
|
XMGNP = R*COS(T)
|
|
|
RHO = R*SIN(T)
|
|
|
|
|
|
YMGNP = RHO*SIN(PHI)
|
|
|
ZMGNP = RHO*COS(PHI)
|
|
|
|
|
|
DIST = SQRT((XGSW-XMGNP)**2+(YGSW-YMGNP)**2+(ZGSW-ZMGNP)**2)
|
|
|
|
|
|
RETURN
|
|
|
END
|
|
|
|
|
|
|
|
|
|
|
|
SUBROUTINE T96_MGNP_08(XN_PD,VEL,XGSW,YGSW,ZGSW,XMGNP,YMGNP,ZMGNP,
|
|
|
* DIST,ID)
|
|
|
C
|
|
|
C=======================================================================================
|
|
|
C
|
|
|
C
|
|
|
CFOR ANY POINT OF SPACE WITH GIVEN COORDINATES (XGSW,YGSW,ZGSW), THIS SUBROUTINE DEFINES
|
|
|
CTHE POSITION OF A POINT (XMGNP,YMGNP,ZMGNP) AT THE T96 MODEL MAGNETOPAUSE WITH THE
|
|
|
CSAME VALUE OF THE ELLIPSOIDAL TAU-COORDINATE, AND THE DISTANCE BETWEEN THEM. THIS IS
|
|
|
CNOT THE SHORTEST DISTANCE D_MIN TO THE BOUNDARY, BUT DIST ASYMPTOTICALLY TENDS TO D_MIN,
|
|
|
C AS THE OBSERVATION POINT GETS CLOSER TO THE MAGNETOPAUSE.
|
|
|
C
|
|
|
CINPUT: XN_PD - EITHER SOLAR WIND PROTON NUMBER DENSITY (PER C.C.) (IF VEL>0)
|
|
|
C OR THE SOLAR WIND RAM PRESSURE IN NANOPASCALS (IF VEL<0)
|
|
|
C VEL - EITHER SOLAR WIND VELOCITY (KM/SEC)
|
|
|
C OR ANY NEGATIVE NUMBER, WHICH INDICATES THAT XN_PD STANDS
|
|
|
C FOR THE SOLAR WIND PRESSURE, RATHER THAN FOR THE DENSITY
|
|
|
C
|
|
|
C XGSW,YGSW,ZGSW - COORDINATES OF THE OBSERVATION POINT IN EARTH RADII
|
|
|
C
|
|
|
COUTPUT: XMGNP,YMGNP,ZMGNP - GSW POSITION OF THE BOUNDARY POINT, HAVING THE SAME
|
|
|
C VALUE OF TAU-COORDINATE AS THE OBSERVATION POINT (XGSW,YGSW,ZGSW)
|
|
|
C DIST - THE DISTANCE BETWEEN THE TWO POINTS, IN RE,
|
|
|
C ID - POSITION FLAG; ID=+1 (-1) MEANS THAT THE POINT (XGSW,YGSW,ZGSW)
|
|
|
C LIES INSIDE (OUTSIDE) THE MODEL MAGNETOPAUSE, RESPECTIVELY.
|
|
|
C
|
|
|
C THE PRESSURE-DEPENDENT MAGNETOPAUSE IS THAT USED IN THE T96_01 MODEL
|
|
|
C (TSYGANENKO, JGR, V.100, P.5599, 1995; ESA SP-389, P.181, OCT. 1996)
|
|
|
C
|
|
|
c AUTHOR: N.A. TSYGANENKO
|
|
|
C DATE: AUG.1, 1995, REVISED APRIL 3, 2003.
|
|
|
C
|
|
|
C
|
|
|
C .. Scalar Arguments ..
|
|
|
DOUBLE PRECISION DIST,VEL,XGSW,XMGNP,XN_PD,YGSW,YMGNP,ZGSW,ZMGNP
|
|
|
INTEGER ID
|
|
|
C ..
|
|
|
C .. Local Scalars ..
|
|
|
DOUBLE PRECISION A,A0,ARG,PD,PHI,RAT,RAT16,RHO,RHOMGNP,S0,S00,
|
|
|
* SIGMA,SQ1,SQ2,TAU,X0,X00,XDZT,XKSI,XM
|
|
|
C ..
|
|
|
C .. Intrinsic Functions ..
|
|
|
INTRINSIC ATAN2,COS,SIN,SQRT
|
|
|
C ..
|
|
|
IF (VEL.LT.0.D0) THEN
|
|
|
PD = XN_PD
|
|
|
ELSE
|
|
|
PD = 1.94D-6*XN_PD*VEL**2
|
|
|
CDEFINE SOLAR WIND DYNAMIC PRESSURE (NANOPASCALS, ASSUMING 4% OF ALPHA-PARTICLES),
|
|
|
END IF
|
|
|
C IF NOT EXPLICITLY SPECIFIED IN THE INPUT:
|
|
|
|
|
|
C
|
|
|
RAT = PD/2.0D0
|
|
|
RAT16 = RAT**0.14D0
|
|
|
C
|
|
|
C RATIO OF PD TO THE AVERAGE PRESSURE, ASSUMED EQUAL TO 2 nPa:
|
|
|
|
|
|
|
|
|
C(THE POWER INDEX 0.14 IN THE SCALING FACTOR IS THE BEST-FIT VALUE OBTAINED FROM DATA
|
|
|
C AND USED IN THE T96_01 VERSION)
|
|
|
A0 = 70.D0
|
|
|
S00 = 1.08D0
|
|
|
X00 = 5.48D0
|
|
|
C
|
|
|
C VALUES OF THE MAGNETOPAUSE PARAMETERS FOR PD = 2 nPa:
|
|
|
C
|
|
|
A = A0/RAT16
|
|
|
S0 = S00
|
|
|
X0 = X00/RAT16
|
|
|
XM = X0 - A
|
|
|
C
|
|
|
C VALUES OF THE MAGNETOPAUSE PARAMETERS, SCALED BY THE ACTUAL PRESSURE:
|
|
|
C
|
|
|
C
|
|
|
C(XM IS THE X-COORDINATE OF THE "SEAM" BETWEEN THE ELLIPSOID AND THE CYLINDER)
|
|
|
C
|
|
|
C (FOR DETAILS OF THE ELLIPSOIDAL COORDINATES, SEE THE PAPER:
|
|
|
IF (YGSW.NE.0.D0 .OR. ZGSW.NE.0.D0) THEN
|
|
|
PHI = ATAN2(YGSW,ZGSW)
|
|
|
ELSE
|
|
|
PHI = 0.D0
|
|
|
END IF
|
|
|
C N.A.TSYGANENKO, SOLUTION OF CHAPMAN-FERRARO PROBLEM FOR AN
|
|
|
RHO = SQRT(YGSW**2+ZGSW**2)
|
|
|
C ELLIPSOIDAL MAGNETOPAUSE, PLANET.SPACE SCI., V.37, P.1037, 1989).
|
|
|
IF (XGSW.LT.XM) THEN
|
|
|
XMGNP = XGSW
|
|
|
RHOMGNP = A*SQRT(S0**2-1)
|
|
|
YMGNP = RHOMGNP*SIN(PHI)
|
|
|
ZMGNP = RHOMGNP*COS(PHI)
|
|
|
DIST = SQRT((XGSW-XMGNP)**2+(YGSW-YMGNP)**2+(ZGSW-ZMGNP)**2)
|
|
|
IF (RHOMGNP.GT.RHO) ID = +1
|
|
|
IF (RHOMGNP.LE.RHO) ID = -1
|
|
|
RETURN
|
|
|
END IF
|
|
|
C
|
|
|
XKSI = (XGSW-X0)/A + 1.D0
|
|
|
XDZT = RHO/A
|
|
|
SQ1 = SQRT((1.D0+XKSI)**2+XDZT**2)
|
|
|
SQ2 = SQRT((1.D0-XKSI)**2+XDZT**2)
|
|
|
SIGMA = 0.5D0*(SQ1+SQ2)
|
|
|
TAU = 0.5D0*(SQ1-SQ2)
|
|
|
C
|
|
|
C
|
|
|
C
|
|
|
XMGNP = X0 - A*(1.D0-S0*TAU)
|
|
|
ARG = (S0**2-1.D0)*(1.D0-TAU**2)
|
|
|
IF (ARG.LT.0.D0) ARG = 0.D0
|
|
|
RHOMGNP = A*SQRT(ARG)
|
|
|
YMGNP = RHOMGNP*SIN(PHI)
|
|
|
ZMGNP = RHOMGNP*COS(PHI)
|
|
|
C
|
|
|
C NOW CALCULATE (X,Y,Z) FOR THE CLOSEST POINT AT THE MAGNETOPAUSE
|
|
|
C
|
|
|
C
|
|
|
CNOW CALCULATE THE DISTANCE BETWEEN THE POINTS {XGSW,YGSW,ZGSW} AND {XMGNP,YMGNP,ZMGNP}:
|
|
|
DIST = SQRT((XGSW-XMGNP)**2+(YGSW-YMGNP)**2+(ZGSW-ZMGNP)**2)
|
|
|
C(IN GENERAL, THIS IS NOT THE SHORTEST DISTANCE D_MIN, BUT DIST ASYMPTOTICALLY TENDS
|
|
|
IF (SIGMA.GT.S0) ID = -1
|
|
|
IF (SIGMA.LE.S0) ID = +1
|
|
|
C TO D_MIN, AS WE ARE GETTING CLOSER TO THE MAGNETOPAUSE):
|
|
|
RETURN
|
|
|
END
|
|
|
|