The TELEMAC-MASCARET system  trunk
tsloc.f
Go to the documentation of this file.
1 ! *******************************
2  DOUBLE PRECISION FUNCTION tsloc
3 ! *******************************
4 !
5  & (year,month,day,hour,minu,sec,at)
6 !
7 !***********************************************************************
8 ! BIEF V6P2 21/08/2010
9 !***********************************************************************
10 !
11 !brief COMPUTES THE LOCAL SIDEREAL TIME IN RADIAN FOR
12 !+ THE GIVEN DATE IN UNIVERSAL TIME.
13 !code
14 !+ IN THIS FUNCTION, THE COMPUTATION TIME MUST BE SPLIT IN:
15 !+
16 !+ - TIME UNTIL 0:00 OF THE SAME DAY,
17 !+ - TIME LEFT UNTIL THE PRECISE DATE IN SECONDS.
18 !+
19 !+ THIS REQUIRES A COMBINATION BETWEEN THE STARTING DATE
20 !+ AND THE COMPUTING TIME AT:
21 !+
22 !+ COMPUTES THE TIME IN JULIAN CENTURY AT 0:00 OF THE SAME DAY
23 !+
24 !+ AT1 : NUMBER OF DAYS IN SECONDS TO ADD TO THE REFERENCE
25 !+ DATE (YEAR, MONTH, DAY) TO GET TO THE COMPUTATION
26 !+ DATE AT TIME (0H, 0MIN, 0SEC).
27 !+ ATR : NUMBER OF SECONDS BETWEEN THE DATE REPRESENTED BY AT1
28 !+ AND THE EXACT COMPUTATION DATE. ATR ACTUALLY CORRESPONDS
29 !+ TO TU EXPRESSED IN SECONDS.
30 !
31 !history E. DAVID (LHF)
32 !+ 02/06/08
33 !+ V5P9
34 !+
35 !
36 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
37 !+ 13/07/2010
38 !+ V6P0
39 !+ Translation of French comments within the FORTRAN sources into
40 !+ English comments
41 !
42 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
43 !+ 21/08/2010
44 !+ V6P0
45 !+ Creation of DOXYGEN tags for automated documentation and
46 !+ cross-referencing of the FORTRAN sources
47 !
48 !history U.H.MERKEL
49 !+ 21/08/2010
50 !+ V6P2
51 !+ Min renamed minute due to NAG COMPILER issues
52 !
53 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54 !| AT |-->| TIME IN SECONDS
55 !| DAY |-->| DAY
56 !| HOUR |-->| HOUR IN UNIVERSAL TIME
57 !| MINUTE |-->| MINUTE IN UNIVERSAL TIME
58 !| MONTH |-->| MONTH
59 !| SEC |-->| SECOND IN UNIVERSAL TIME
60 !| YEAR |-->| YEAR
61 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
62 !
63  USE bief, ex_tsloc => tsloc
64 !
66  IMPLICIT NONE
67 !
68 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
69 !
70  INTEGER, INTENT(IN) :: MONTH,DAY,HOUR,MINU,SEC
71  INTEGER, INTENT(INOUT) :: YEAR
72  DOUBLE PRECISION, INTENT(IN) :: AT
73 !
74 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
75 !
76  DOUBLE PRECISION T,TETA,TETA0,UT
77  DOUBLE PRECISION AT1,ATR
78 !
79  INTRINSIC acos,int
80 !
81 !-----------------------------------------------------------------------
82 !
83  atr = at + ( hour * 60.d0 + minu ) * 60.d0 + sec
84  at1 = int( atr / ( 24.d0 * 3600.d0 ) ) * ( 24.d0 * 3600.d0 )
85  atr = atr - at1
86  t = jultim(year,month,day,0,0,0,at1)
87 !
88 ! COMPUTES THE SIDEREAL TIME WRT GREENWICH AT 0:00 (IN HOURS)
89 !
90  teta0 = 6.6460656d0 + 2400.051262d0 * t + 0.00002581d0 * t**2
91 !
92 ! COMPUTES THE SIDEREAL TIME WRT GREENWICH AT TU
93 !
94  ut = atr / 3600.d0
95  teta = teta0 + ut*1.002737908d0
96 !
97 ! COMPUTES THE LOCAL SIDEREAL TIME IN RADIANS WITHOUT TAKING LONGITUDE
98 ! INTO ACCOUNT
99 !
100  tsloc = teta * acos(-1.d0) / 12.d0
101 !
102 !-----------------------------------------------------------------------
103 !
104  RETURN
105  END
double precision function tsloc(YEAR, MONTH, DAY, HOUR, MINU, SEC, AT)
Definition: tsloc.f:7
double precision function jultim(YEAR, MONTH, DAY, HOUR, MINU, SEC, AT)
Definition: jultim.f:7
Definition: bief.f:3