The TELEMAC-MASCARET system  trunk
calctm.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE calctm
3 ! *****************
4 !
5 !
6 !***********************************************************************
7 ! ARTEMIS V7P3 Aug 2017
8 !***********************************************************************
9 !
10 !brief COMPUTES VARIOUS ESTIMATES OF THE MEAN WAVE
11 !+ PERIOD :
12 !+ T01 = M0/M1;
13 !+ T02 = SQRT(M0/M2);
14 !+ TM.
15 !+
16 !+ (DEFINITIONS IN THE LIST OF PARAMETERS ESTABLISHED
17 !+ BY THE IAHR)
18 !
19 !history J-M HERVOUET (LNH)
20 !+
21 !+
22 !+ LINKED TO BIEF 5.0
23 !
24 !history D. AELBRECHT (LNH)
25 !+ 04/06/1999
26 !+ V5P1
27 !+
28 !
29 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
30 !+ 13/07/2010
31 !+ V6P0
32 !+ Translation of French comments within the FORTRAN sources into
33 !+ English comments
34 !
35 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
36 !+ 21/08/2010
37 !+ V6P0
38 !+ Creation of DOXYGEN tags for automated documentation and
39 !+ cross-referencing of the FORTRAN sources
40 !
41 !history C.PEYRARD (LNHE)
42 !+ 06/2014
43 !+ V7P0
44 !+ Modification of PONDER (done in artemis.f now)
45 !
46 !history N.DURAND (HRW)
47 !+ August 2017
48 !+ V7P3
49 !+ Removed unnecessary references to PI and RADDEG
50 !
51 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
52 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53 !
54  USE bief
57 !
59  IMPLICIT NONE
60 !
61  DOUBLE PRECISION PONDER
62 !
63 ! INTRINSIC SQRT, ATAN2, MOD, ABS, COS, SIN
64 !
65 !-----------------------------------------------------------------------
66 !
67 ! STRUCTURES
68 !
69 !
70 !-----------------------------------------------------------------------
71 !
72  ponder = 1.d0
73 !
74 !=======================================================================
75 ! COMPUTES M0 MOMENTUM AND STORES IT IN T2
76 !=======================================================================
77 !
78  CALL os('X=YZ ', x=t1 , y=hho , z=hho)
79  CALL os('X=CX ', x=t1 , c=ponder)
80  CALL os('X=Y+Z ', x=t2 , y=hale , z=t1)
81 !
82 !=======================================================================
83 ! T01 = M0 / M1 (adverage period from adverae frequency)
84 !=======================================================================
85 !
86  CALL os('X=Y ', x=t3 , y=t01)
87  CALL os('X=Y/Z ', x=t01, y=t2, z=t3)
88 !
89 !=======================================================================
90 ! T02 = SQRT( M0 / M2 ) (~ 0 - crossing period Tz)
91 !=======================================================================
92 !
93  CALL os('X=Y ', x=t3 , y=t02)
94  CALL os('X=Y/Z ', x=t1 , y=t2, z=t3)
95  CALL os('X=SQR(Y)', x=t02, y=t1)
96 !
97 !=======================================================================
98 ! TM = MT1 / M0 (adverage period)
99 !=======================================================================
100 !
101  CALL os('X=Y ', x=t3 , y=tm)
102  CALL os('X=Y/Z ', x=tm , y=t3 , z=t2)
103 !
104 !
105 !=======================================================================
106 ! MEAN DIRECTION: INCI
107 !=======================================================================
108 !
109  CALL os('X=A(Y,Z)', x=inci, y=msin, z=mcos)
110 !
111  RETURN
112  END
type(bief_obj), target hale
subroutine calctm
Definition: calctm.f:4
type(bief_obj), target msin
double precision, dimension(:), pointer y
type(bief_obj), target hho
type(bief_obj), target t01
type(bief_obj), pointer t2
type(bief_obj), target t02
type(bief_obj), target inci
type(bief_obj), target mcos
double precision, dimension(:), pointer x
type(bief_obj), pointer t3
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
type(bief_obj), pointer t1
type(bief_obj), target c
type(bief_obj), target tm
Definition: bief.f:3