The TELEMAC-MASCARET system  trunk
spetma.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE spetma
3 ! *****************
4 !
5  &( spec , nf , al , fp , gamma , sigmaa, sigmab,
6  & fpmin , depth )
7 !
8 !***********************************************************************
9 ! TOMAWAC V6P1 28/06/2011
10 !***********************************************************************
11 !
12 !brief COMPUTES A TMA FREQUENCY SPECTRUM BASED
13 !+ ON A SERIES OF FREQUENCIES.
14 !
15 !history M. BENOIT (EDF/DER/LNH)
16 !+ 10/01/96
17 !+ V1P1
18 !+
19 !
20 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
21 !+ 13/07/2010
22 !+ V6P0
23 !+ Translation of French comments within the FORTRAN sources into
24 !+ English comments
25 !
26 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
27 !+ 21/08/2010
28 !+ V6P0
29 !+ Creation of DOXYGEN tags for automated documentation and
30 !+ cross-referencing of the FORTRAN sources
31 !
32 !history G.MATTAROLO (EDF - LNHE)
33 !+ 28/06/2011
34 !+ V6P1
35 !+ Translation of French names of the variables in argument
36 !
37 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38 !| AL |-->| PHILLIPS CONSTANT (ALPHA)
39 !| DEPTH |-->| WATER DEPTH
40 !| DEUPI |-->| 2.PI
41 !| FP |-->| JONSWAP SPECTRUM PEAK FREQUENCY
42 !| FPMIN |-->| MINIMUM PEAK FREQUENCY VALUE
43 !| FREQ |-->| DISCRETIZED FREQUENCIES
44 !| GAMMA |-->| JONSWAP SPECTRUM PEAK FACTOR
45 !| GRAVIT |-->| GRAVITY ACCELERATION
46 !| NF |-->| NUMBER OF FREQUENCIES
47 !| SIGMAA |-->| VALUE OF SIGMA FOR JONSWAP SPECTRUM (F<FP)
48 !| SIGMAB |-->| VALUE OF SIGMA FOR JONSWAP SPECTRUM (F>FP)
49 !| SPEC |<--| TMA VARIANCE DENSITY FREQUENCY SPECTRUM
50 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51 !
53  USE interface_tomawac, ex_spetma => spetma
54  IMPLICIT NONE
55 !
56 !.....VARIABLES IN ARGUMENT
57 ! """"""""""""""""""""
58  INTEGER, INTENT(IN) :: NF
59  DOUBLE PRECISION, INTENT(IN) :: SIGMAA, SIGMAB, GAMMA, FPMIN
60  DOUBLE PRECISION, INTENT(IN) :: FP, AL, DEPTH
61  DOUBLE PRECISION, INTENT(INOUT) :: SPEC(nf)
62 !
63 !.....LOCAL VARIABLES
64 ! """""""""""""""""
65  INTEGER JF
66  DOUBLE PRECISION COEF , ARG1 , ARG2 , ARG3 , SIG , FF
67  DOUBLE PRECISION ARG4 , OMEGH
68 !
69 !
70  IF (fp.GT.fpmin) THEN
71  coef=al*gravit**2/deupi**4
72  DO jf=1,nf
73  ff=freq(jf)
74  IF(ff.LT.fp) THEN
75  sig=sigmaa
76  ELSE
77  sig=sigmab
78  ENDIF
79  arg1=0.5d0*((ff-fp)/(sig*fp))**2
80  IF(arg1.LT.99.d0) THEN
81  arg1=gamma**exp(-arg1)
82  ELSE
83  arg1=1.d0
84  ENDIF
85  arg2=1.25d0*(fp/ff)**4
86  IF(arg2.LT.99.d0) THEN
87  arg2=exp(-arg2)
88  ELSE
89  arg2=0.d0
90  ENDIF
91  arg3=coef/ff**5
92  omegh=deupi*ff*sqrt(depth/gravit)
93  IF(omegh.LT.1.d0) THEN
94  arg4=0.5d0*omegh**2
95  ELSEIF(omegh.LT.2.d0) THEN
96  arg4=1.d0-0.5d0*(2.d0-omegh)**2
97  ELSE
98  arg4=1.d0
99  ENDIF
100  spec(jf)=arg1*arg2*arg3*arg4
101  IF(spec(jf).LT.e2fmin) spec(jf)=0.d0
102  ENDDO ! JF
103  ELSE
104  DO jf=1,nf
105  spec(jf)=0.d0
106  ENDDO ! JF
107  ENDIF
108 !
109  RETURN
110  END
double precision, dimension(:), pointer freq
subroutine spetma(SPEC, NF, AL, FP, GAMMA, SIGMAA, SIGMAB, FPMIN, DEPTH)
Definition: spetma.f:8