The TELEMAC-MASCARET system  trunk
calcmn.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE calcmn
3 ! *****************
4 !
5 !
6 !***********************************************************************
7 ! ARTEMIS V6P1 21/08/2010
8 !***********************************************************************
9 !
10 !brief COMPUTES APPROXIMATE VALUES FOR THE MOMENTUMS M0, M1,
11 !+ M2 OF THE WAVE SPECTRUM TO CALCULATE THE MEAN PERIOD
12 !+ AND DIRECTION.
13 !+
14 !+ (DEFINITIONS IN THE LIST OF PARAMETERS ESTABLISHED
15 !+ BY THE IAHR)
16 !
17 !history J-M HERVOUET (LNH)
18 !+
19 !+
20 !+ LINKED TO BIEF 5.0
21 !
22 !history D. AELBRECHT (LNH)
23 !+ 04/06/1999
24 !+ V5P1
25 !+
26 !
27 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
28 !+ 13/07/2010
29 !+ V6P0
30 !+ Translation of French comments within the FORTRAN sources into
31 !+ English comments
32 !
33 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
34 !+ 21/08/2010
35 !+ V6P0
36 !+ Creation of DOXYGEN tags for automated documentation and
37 !+ cross-referencing of the FORTRAN sources
38 !
39 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41 !
42  USE bief
45 !
47  IMPLICIT NONE
48 !
49  DOUBLE PRECISION FREQ, FREQ2, PONDER
50 !
51  INTRINSIC sqrt, atan2, mod, abs, cos, sin
52 !
53 !-----------------------------------------------------------------------
54 !
55 ! STRUCTURES
56 !
57 !-----------------------------------------------------------------------
58 !
59  freq = 1.d0/per
60  freq2 = freq * freq
61 ! PONDER = 1.D0/DBLE(NDALE*NPALE)
62  ponder= 1d0
63 !
64 !=======================================================================
65 ! M1 = INTEGRAL OF ( F * S(F) * DF )
66 !=======================================================================
67 !
68  CALL os('X=YZ ', x=t1 , y=hho , z=hho)
69  CALL os('X=CY ', x=t2, y=t1, c=freq)
70  CALL os('X=CX ', x=t2, c=ponder)
71  CALL os('X=X+Y ', x=t01, y=t2)
72 !
73 !=======================================================================
74 ! M2 = INTEGRAL OF ( F**2 * S(F) * DF )
75 !=======================================================================
76 !
77  CALL os( 'X=CY ', x=t2, y=t1 , c=freq2 )
78  CALL os( 'X=CX ', x=t2, c=ponder )
79  CALL os( 'X=X+Y ', x=t02, y=t2)
80 !
81 !=======================================================================
82 ! MT1 = INTEGRAL OF ( T * S(F) * DF )
83 !=======================================================================
84 !
85  CALL os( 'X=CY ', x=t2 , y=t1 , c=per )
86  CALL os( 'X=CX ', x=t2 , c=ponder )
87  CALL os( 'X=X+Y ', x=tm , y=t2)
88 !
89 !=======================================================================
90 ! MCOS = INTEGRAL OF ( COS(INCI) * S(F) * DF )
91 !=======================================================================
92 !
93  CALL os( 'X=COS(Y)', x=t2 , y=inci)
94  CALL os( 'X=CXY ', x=t2 , y=t1 , c=ponder )
95  CALL os( 'X=X+Y ', x=mcos, y=t2 )
96 !
97 !=======================================================================
98 ! MSIN = INTEGRAL OF ( SIN(INCI) * S(F) * DF )
99 !=======================================================================
100 !
101  CALL os('X=SIN(Y)', x=t2 , y=inci)
102  CALL os('X=CXY ', x=t2 , y=t1 , c=ponder )
103  CALL os('X=X+Y ', x=msin, y=t2)
104 !
105  RETURN
106  END
type(bief_obj), target msin
double precision, dimension(:), pointer y
subroutine calcmn
Definition: calcmn.f:4
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
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