SUBROUTINE TDFRPH (IDOOD,FREQ,PHASE) *+ * - - - - - - - - - - - * T D F R P H * - - - - - - - - - - - * * This routine is part of the International Earth Rotation and * Reference Systems Service (IERS) Conventions software collection. * * This subroutine returns the frequency and phase of a tidal * constituent when its Doodson number is given as input. * * In general, Class 1, 2, and 3 models represent physical effects that * act on geodetic parameters while canonical models provide lower-level * representations or basic computations that are used by Class 1, 2, or * 3 models. * * Status: Class 1 model * * Class 1 models are those recommended to be used a priori in the * reduction of raw space geodetic data in order to determine * geodetic parameter estimates. * Class 2 models are those that eliminate an observational * singularity and are purely conventional in nature. * Class 3 models are those that are not required as either Class * 1 or 2. * Canonical models are accepted as is and cannot be classified as * a Class 1, 2, or 3 model. * * Given: * idood i Doodson number of a tidal constituent * * Returned: * freq d Frequency of a tidal constituent * phase d Phase of a tidal constituent (Note 1) * * Notes: * * 1) The phases must be decreased by 90 degrees if the sum of the order * and the species number is odd (as for the 2nd degree diurnals, and * 3rd degree low frequency and semidiurnals). * * These phases may need further adjustment to allow for the spherical * harmonic normalization used; e.g. for that used for the potential * by Cartwright and Tayler, 180 degrees must be added for (species, * order) = (1,2), (1,3), or (3,3). * * Called: * TOYMD Converts year-day of year to year-month-day format * LEAP Returns true if a given year is a leap year * JULDAT Converts Gregorian date to Julian date * ETUTC Returns difference of Epheremis Time (ET) and * Coordinated Universal Time (UTC) * * Test case: * given input: For June 25, 2009 (DOY = 176) 0 Hr 0 Min, 0 Sec, M2 tide * INTEGER ITM = / 2009, 176, 0, 0, 0 / * INTEGER IDOOD = / 2, 0, 0, 0, 0, 0 / * * expected output: FREQ = 1.93227361605688D0 * PHASE = 303.343338720297D0 * * Test case: * given input: For June 25, 2009 (DOY = 176) 12 Hr 1 Min, 45 Sec, M2 tide * INTEGER ITM = / 2009, 176, 12, 1, 45 / * INTEGER IDOOD = / 2, 0, 0, 0, 0, 0 / * * expected output: FREQ = 1.93227361605689D0 * PHASE = 291.997959322689D0 * * References: * * Petit, G. and Luzum, B. (eds.), IERS Conventions (2010), * IERS Technical Note No. 36, BKG (2010) * * Revisions: * 2009 June 15 B.E.Stetzler Initial changes to code * 2009 August 19 B.E.Stetzler Capitalized all variables for FORTRAN * 77 compatibility * 2010 March 19 B.E.Stetzler Provided test case * 2013 September 11 MSC Fix error in test case. * 2015 April 29 M.A. Davis Corrected error in seconds per day in * variable DAYFR (from 84600.0D0 to * 86400.0D0) * 2015 May 21 M.A. Davis Clarified, corrected existing test case * Added new test case for non-zero hhmmss *----------------------------------------------------------------------- IMPLICIT NONE SAVE ITMSAVE,D,DD INTEGER I,IDOOD,INITIAL,ITM,ITM2,ITMSAVE,JD,JULDAT,LEAP DOUBLE PRECISION YEAR,DELTA,FREQ,PHASE, . D,DAYFR,DD,DJD,F1,F2,F3,F4,F5, . FD1,FD2,FD3,FD4,FD5,T DIMENSION IDOOD(6),ITM2(6),ITMSAVE(5),D(6),DD(6) * Common block 'date' stores time information in Universal Time (UT) COMMON/DATE/ITM(5) DATA ITMSAVE/5*0/ *------------------------------------------------------------------------ * Test to see if time has changed; if so, set the phases and frequencies * for each of the Doodson arguments *------------------------------------------------------------------------ INITIAL=0 DO I=1,5 IF(ITM(I).NE.ITMSAVE(I)) INITIAL=1 ENDDO IF(INITIAL.EQ.1) THEN DO I=1,5 ITMSAVE(I) = ITM(I) ENDDO * Convert times to Julian days (UT) then to Julian centuries from J2000.0 * (ET) CALL TOYMD(ITM,ITM2) JD = JULDAT(ITM2) DAYFR= ITM(3)/24.0D0 + ITM(4)/1440.0D0 + ITM(5)/86400.0D0 YEAR=ITM(1)+(ITM(2)+DAYFR)/(365.0D0+LEAP(ITM(1))) CALL ETUTC(YEAR,DELTA) DJD= JD - 0.5D0 + DAYFR T = (DJD - 2451545.0D0 + DELTA/86400.0D0)/36525.0D0 * IERS expressions for the Delaunay arguments, in degrees F1 = 134.9634025100D0 + . T*( 477198.8675605000D0 + . T*( 0.0088553333D0 + . T*( 0.0000143431D0 + . T*( -0.0000000680D0 )))) F2 = 357.5291091806D0 + . T*( 35999.0502911389D0 + . T*( -0.0001536667D0 + . T*( 0.0000000378D0 + . T*( -0.0000000032D0 )))) F3 = 93.2720906200D0 + . T*( 483202.0174577222D0 + . T*( -0.0035420000D0 + . T*( -0.0000002881D0 + . T*( 0.0000000012D0 )))) F4 = 297.8501954694D0 + . T*( 445267.1114469445D0 + . T*( -0.0017696111D0 + . T*( 0.0000018314D0 + . T*( -0.0000000088D0 )))) F5 = 125.0445550100D0 + . T*( -1934.1362619722D0 + . T*( 0.0020756111D0 + . T*( 0.0000021394D0 + . T*( -0.0000000165D0 )))) * Convert to Doodson (Darwin) variables D(1) = 360.0D0*DAYFR - F4 D(2) = F3 + F5 D(3) = D(2) - F4 D(4) = D(2) - F1 D(5) = -F5 D(6) = D(3) - F2 * Find frequencies of Delauney variables (in cycles/day), and from these * the same for the Doodson arguments FD1 = 0.0362916471D0 + 0.0000000013D0*T FD2 = 0.0027377786D0 FD3 = 0.0367481951D0 - 0.0000000005D0*T FD4 = 0.0338631920D0 - 0.0000000003D0*T FD5 = -0.0001470938D0 + 0.0000000003D0*T DD(1) = 1.0D0 - FD4 DD(2) = FD3 + FD5 DD(3) = DD(2) - FD4 DD(4) = DD(2) - FD1 DD(5) = -FD5 DD(6) = DD(3) - FD2 ENDIF * End of intialization (likely to be called only once) * Compute phase and frequency of the given tidal constituent FREQ=0.0D0 PHASE=0.0D0 DO I = 1,6 FREQ = FREQ + IDOOD(I)*DD(I) PHASE = PHASE + IDOOD(I)*D(I) ENDDO * Adjust phases so that they fall in the positive range 0 to 360 PHASE = DMOD(PHASE,360.0D0) IF(PHASE.LT.0.0D0) PHASE = PHASE + 360.0D0 RETURN * Finished. *+---------------------------------------------------------------------- * * Copyright (C) 2008 * IERS Conventions Center * * ================================== * IERS Conventions Software License * ================================== * * NOTICE TO USER: * * BY USING THIS SOFTWARE YOU ACCEPT THE FOLLOWING TERMS AND CONDITIONS * WHICH APPLY TO ITS USE. * * 1. The Software is provided by the IERS Conventions Center ("the * Center"). * * 2. Permission is granted to anyone to use the Software for any * purpose, including commercial applications, free of charge, * subject to the conditions and restrictions listed below. * * 3. You (the user) may adapt the Software and its algorithms for your * own purposes and you may distribute the resulting "derived work" * to others, provided that the derived work complies with the * following requirements: * * a) Your work shall be clearly identified so that it cannot be * mistaken for IERS Conventions software and that it has been * neither distributed by nor endorsed by the Center. * * b) Your work (including source code) must contain descriptions of * how the derived work is based upon and/or differs from the * original Software. * * c) The name(s) of all modified routine(s) that you distribute * shall be changed. * * d) The origin of the IERS Conventions components of your derived * work must not be misrepresented; you must not claim that you * wrote the original Software. * * e) The source code must be included for all routine(s) that you * distribute. This notice must be reproduced intact in any * source distribution. * * 4. In any published work produced by the user and which includes * results achieved by using the Software, you shall acknowledge * that the Software was used in obtaining those results. * * 5. The Software is provided to the user "as is" and the Center makes * no warranty as to its use or performance. The Center does not * and cannot warrant the performance or results which the user may * obtain by using the Software. The Center makes no warranties, * express or implied, as to non-infringement of third party rights, * merchantability, or fitness for any particular purpose. In no * event will the Center be liable to the user for any consequential, * incidental, or special damages, including any lost profits or lost * savings, even if a Center representative has been advised of such * damages, or for any claim by any third party. * * Correspondence concerning IERS Conventions software should be * addressed as follows: * * Gerard Petit * Internet email: gpetit[at]bipm.org * Postal address: IERS Conventions Center * Time, frequency and gravimetry section, BIPM * Pavillon de Breteuil * 92312 Sevres FRANCE * * or * * Brian Luzum * Internet email: brian.luzum[at]usno.navy.mil * Postal address: IERS Conventions Center * Earth Orientation Department * 3450 Massachusetts Ave, NW * Washington, DC 20392 * * *----------------------------------------------------------------------- END