--- DarthVader/OrbitalInfo/src/igrf_sub.for 2014/10/31 14:02:53 1.11 +++ DarthVader/OrbitalInfo/src/igrf_sub.for 2015/01/19 12:32:13 1.12 @@ -1,42 +1,4 @@ -c subroutine igrf_sub(xlat,xlong,year,height, -c & xl,icode,dip,dec) -c---------------------------------------------------------------- -c INPUT: -c xlat geodatic latitude in degrees -c xlong geodatic longitude in degrees -c year decimal year (year+month/12.0-0.5 or year+day-of-year/365 -c or 366 if leap year) -c height height in km -c OUTPUT: -c xl L value -c icode =1 L is correct; =2 L is not correct; -c =3 an approximation is used -c dip geomagnetic inclination in degrees -c dec geomagnetic declination in degress -c---------------------------------------------------------------- -c -c REAL LATI,LONGI -c COMMON/GENER/ UMR,ERA,AQUAD,BQUAD -c SAVE /GENER/ -C -c CALL INITIZE -c ibbb=0 -c ALOG2=ALOG(2.) -c ISTART=1 -c lati=xlat -c longi=xlong -c -C----------------CALCULATE PROFILES----------------------------------- -c -c CALL FELDCOF(YEAR,DIMO) -c CALL FELDG(LATI,LONGI,HEIGHT,BNORTH,BEAST,BDOWN,BABS) -c CALL SHELLG(LATI,LONGI,HEIGHT,DIMO,XL,ICODE,BAB1) -c DIP=ASIN(BDOWN/BABS)/UMR -c DEC=ASIN(BEAST/SQRT(BEAST*BEAST+BNORTH*BNORTH))/UMR -c RETURN -c END -c -c +C C SHELLIG.FOR, Version 2.0, January 1992 C C 11/01/91-DKB- SHELLG: lowest starting point for B0 search is 2 @@ -586,61 +548,22 @@ C----------------------------------------------------------------------- CHARACTER*258 FIL1, FIL2 CHARACTER*258 FILMOD -C ### FILMOD, DTEMOD arrays +1 -c DIMENSION GH1(144),GH2(120),GHA(144),FILMOD(14),DTEMOD(14) - DIMENSION GH1(196),GH2(196),GHA(196),FILMOD(3),DTEMOD(3) + DIMENSION GH1(196),GH2(196),GHA(196),FILMOD(2) DOUBLE PRECISION X,F0,F - INTEGER L1,L2,L3 + INTEGER L1,L2,I1 INTEGER NMAX REAL TIME - CHARACTER *258 P1,P2,P3 - COMMON/PPATH/ L1,L2,L3,P1, P2, P3 + CHARACTER *258 P1,P2 + COMMON/PPATH/ I1,L1,L2,P1,P2 SAVE/PPATH/ COMMON/MODEL/ GH1,NMAX,TIME,FIL1 SAVE/MODEL/ COMMON/GENER/ UMR,ERAD,AQUAD,BQUAD SAVE/GENER/ -C ### updated to 2005 -C CHARACTER COEFPATH*80, COEF1*80, COEF2*80, COEF3*80 - -c COEFPATH = 'OrbitalInfo/src/' -c COEF1 = 'dgrf00.dat' -c COEF2 = 'igrf05.dat' -c COEF3 = 'igrf05s.dat' -c COEF1 = COEFPATH(1:16)//COEF1 -c COEF2 = COEFPATH(1:16)//COEF2 -c COEF3 = COEFPATH(1:16)//COEF3 -c FILMOD(1) = COEF1 -c FILMOD(2) = COEF2 -c FILMOD(3) = COEF3 c print *, "qui" FILMOD(1) = P1(1:L1) FILMOD(2) = P2(1:L2) - FILMOD(3) = P3(1:L3) c print *, "qua" -c FILMOD(1) = 'OrbitalInfo/src/dgrf00.dat' -c FILMOD(2) = 'OrbitalInfo/src/igrf05.dat' -c FILMOD(3) = 'OrbitalInfo/src/igrf05s.dat' -c WRITE(*,*) FILMOD(1) -c WRITE(*,*) FILMOD(2) -c WRITE(*,*) FILMOD(3) -c DATA FILMOD / 'dgrf00.dat', 'igrf05.dat', 'igrf05s.dat'/ - DATA DTEMOD / 2005., 2010., 2015./ -c -c DATA FILMOD /'dgrf45.dat', 'dgrf50.dat', -c 1 'dgrf55.dat', 'dgrf60.dat', 'dgrf65.dat', -c 2 'dgrf70.dat', 'dgrf75.dat', 'dgrf80.dat', -c 3 'dgrf85.dat', 'dgrf90.dat', 'dgrf95.dat', -c 4 'dgrf00.dat','igrf05.dat','igrf05s.dat'/ -c DATA DTEMOD / 1945., 1950., 1955., 1960., 1965., 1970., -c 1 1975., 1980., 1985., 1990., 1995., 2000.,2005.,2010./ -C -C ### numye = numye + 1 ; is number of years represented by IGRF -C -c NUMYE=13 - NUMYE=2 -c print *, "quo" - C C IS=0 FOR SCHMIDT NORMALIZATION IS=1 GAUSS NORMALIZATION C IU IS INPUT UNIT NUMBER FOR IGRF COEFFICIENT SETS @@ -650,14 +573,13 @@ C-- DETERMINE IGRF-YEARS FOR INPUT-YEAR TIME = YEAR IYEA = INT(YEAR/5.)*5 -c L = (IYEA - 1945)/5 + 1 - L = (IYEA - 2000)/5 + 1 - IF(L.LT.1) L=1 - IF(L.GT.NUMYE) L=NUMYE - DTE1 = DTEMOD(L) - FIL1 = FILMOD(L) - DTE2 = DTEMOD(L+1) - FIL2 = FILMOD(L+1) + L = IYEA + 5 +C + DTE1 = REAL(IYEA) + FIL1 = FILMOD(1) + DTE2 = REAL(L) + FIL2 = FILMOD(2) +c print *,'IYEA ',IYEA,' L ',L c WRITE(*,*) FIL1 c WRITE(*,*) FIL2 c print *, "que" @@ -669,7 +591,7 @@ IF (IER .NE. 0) STOP c print *, "quj" C-- DETERMINE IGRF COEFFICIENTS FOR YEAR - IF (L .LE. NUMYE-1) THEN + IF (I1.EQ.0) THEN CALL INTERSHC (YEAR, DTE1, NMAX1, GH1, DTE2, 1 NMAX2, GH2, NMAX, GHA) ELSE @@ -937,7 +859,7 @@ END C C - SUBROUTINE INITIZE(TP1,TL1,TP2,TL2,TP3,TL3) + SUBROUTINE INITIZE(ISSEC,TP1,TL1,TP2,TL2) C---------------------------------------------------------------- C Initializes the parameters in COMMON/GENER/ C @@ -952,22 +874,22 @@ C ERA, EREQU and ERPOL as recommended by the INTERNATIONAL C ASTRONOMICAL UNION . C----------------------------------------------------------------- - INTEGER TL1,TL2,TL3 - CHARACTER (len=*) :: TP1,TP2,TP3 - INTEGER L1,L2,L3 - CHARACTER *258 P1,P2,P3 - COMMON/PPATH/ L1,L2,L3,P1, P2, P3 + INTEGER TL1,TL2,ISSEC + CHARACTER (len=*) :: TP1,TP2 + INTEGER L1,L2 + CHARACTER *258 P1,P2 + COMMON/PPATH/ I1,L1,L2,P1,P2 SAVE/PPATH/ COMMON/GENER/UMR,ERA,AQUAD,BQUAD SAVE/GENER/ + I1 = ISSEC L1 = TL1 L2 = TL2 - L3 = TL3 + P1 = TP1(1:L1) P2 = TP2(1:L2) - P3 = TP3(1:L3) ERA=6371.2 EREQU=6378.16