The TELEMAC-MASCARET system  trunk
spejon.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE spejon
3 ! *****************
4 !
5  &( spec , nf , al , fp , gamma , sigmaa, sigmab,
6  & fpmin )
7 !
8 !***********************************************************************
9 ! TOMAWAC V6P1 28/06/2011
10 !***********************************************************************
11 !
12 !brief COMPUTES A JONSWAP FREQUENCY SPECTRUM BASED
13 !+ ON A SERIES OF FREQUENCIES.
14 !
15 !history M. BENOIT (EDF/DER/LNH)
16 !+ 15/11/95
17 !+ V1P0
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 !| FP |-->| JONSWAP SPECTRUM PEAK FREQUENCY
40 !| FPMIN |-->| MINIMUM PEAK FREQUENCY VALUE
41 !| FREQ |-->| DISCRETIZED FREQUENCIES
42 !| GAMMA |-->| JONSWAP SPECTRUM PEAK FACTOR
43 !| GRAVIT |-->| GRAVITY ACCELERATION
44 !| NF |-->| NUMBER OF FREQUENCIES
45 !| SIGMAA |-->| VALUE OF SIGMA FOR JONSWAP SPECTRUM (F<FP)
46 !| SIGMAB |-->| VALUE OF SIGMA FOR JONSWAP SPECTRUM (F>FP)
47 !| SPEC |<--| JONSWAP VARIANCE DENSITY FREQUENCY SPECTRUM
48 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49 !
51  USE interface_tomawac, ex_spejon => spejon
52  IMPLICIT NONE
53 !
54 !.....VARIABLES IN ARGUMENT
55 ! """"""""""""""""""""
56  INTEGER, INTENT(IN) :: NF
57  DOUBLE PRECISION, INTENT(IN) :: SIGMAA, SIGMAB, GAMMA, FPMIN
58  DOUBLE PRECISION, INTENT(IN) :: FP , AL
59  DOUBLE PRECISION, INTENT(INOUT) :: SPEC(nf)
60 !
61 !.....LOCAL VARIABLES
62 ! """""""""""""""""
63  INTEGER JF
64  DOUBLE PRECISION COEF , ARG1 , ARG2 , ARG3 , SIG , FF
65 !
66 !
67  IF(fp.GT.fpmin) THEN
68  coef=al*gravit**2/deupi**4
69  DO jf=1,nf
70  ff=freq(jf)
71  IF(ff.LT.fp) THEN
72  sig=sigmaa
73  ELSE
74  sig=sigmab
75  ENDIF
76  arg1=0.5d0*((ff-fp)/(sig*fp))**2
77  IF (arg1.LT.99.d0) THEN
78  arg1=gamma**exp(-arg1)
79  ELSE
80  arg1=1.d0
81  ENDIF
82  arg2=1.25d0*(fp/ff)**4
83  IF (arg2.LT.99.d0) THEN
84  arg2=exp(-arg2)
85  ELSE
86  arg2=0.d0
87  ENDIF
88  arg3=coef/ff**5
89  spec(jf)=arg1*arg2*arg3
90  IF (spec(jf).LT.e2fmin) spec(jf)=0.d0
91  ENDDO ! JF
92  ELSE
93  DO jf=1,nf
94  spec(jf)=0.d0
95  ENDDO ! JF
96  ENDIF
97 !
98  RETURN
99  END
double precision, dimension(:), pointer freq
subroutine spejon(SPEC, NF, AL, FP, GAMMA, SIGMAA, SIGMAB, FPMIN)
Definition: spejon.f:8