The TELEMAC-MASCARET system  trunk
perale.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE perale
3 ! *****************
4 !
5  &(pale,gamma,perpic,npale,pmin,pmax)
6 !
7 !***********************************************************************
8 ! ARTEMIS V6P3 21/08/2010
9 !***********************************************************************
10 !
11 !brief DISCRETISES AN ENERGY SPECTRUM IN NPALE BANDS
12 !+ OF EQUAL ENERGY. THE RESULT IS A LIST OF
13 !+ PERIODS CORRESPONDING TO EACH BAND.
14 !
15 !history J-M HERVOUET (LNH)
16 !+
17 !+
18 !+ LINKED TO BIEF 5.0
19 !
20 !history D. AELBRECHT (LNH)
21 !+ 02/06/1999
22 !+ V5P1
23 !+
24 !
25 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
26 !+ 13/07/2010
27 !+ V6P0
28 !+ Translation of French comments within the FORTRAN sources into
29 !+ English comments
30 !
31 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
32 !+ 21/08/2010
33 !+ V6P0
34 !+ Creation of DOXYGEN tags for automated documentation and
35 !+ cross-referencing of the FORTRAN sources
36 !
37 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
38 !| GAMMA |-->| COEFFICIENT IN THE SPECTRUM FORMULA
39 !| NPALE |-->| NUMBER OF DISCRETISATION PERIOD
40 !| PALE |<--| PERIODS FOR SPECTRUM DISCRETISATION
41 !| PERPIC |-->| PEAK PERIOD FOR SPECTRUM
42 !| PMAX |-->| MAXIMUM FREQUENCY FOR SPECTRUM
43 !| PMIN |-->| MINIMUM FREQUENCY FOR SPECTRUM
44 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45 !
46  USE interface_artemis, ONLY: spe
47  USE bief
48 !
49  USE declarations_artemis, ONLY: fp,gam,delta
51  IMPLICIT NONE
52 !
53  INTEGER NPALE,NPAS,I,K
54 !
55  DOUBLE PRECISION PALE(npale)
56  DOUBLE PRECISION PERPIC,GAMMA ,SUMB ,SUMICI ,DF ,VAR
57  DOUBLE PRECISION PMIN ,PMAX ,FMIN ,FMAX
58  DOUBLE PRECISION B ,B1 ,B2
59 !
60  INTRINSIC log,float
61 !
62 !-----------------------------------------------------------------------
63 !
64 ! PEAK FREQUENCY
65  fp = 1.d0 / perpic
66  fmin = 1.d0 / pmax
67  fmax = 1.d0 / pmin
68  IF (fmax.GE.99.d0) THEN
69  fmax = 2.5d0 * fp
70  ENDIF
71 !
72 ! GAMMA IS IN THE COMMON STATEMENT OF FUNCTION SPE (CANNOT BE
73 ! CALLED GAMMA BECAUSE IT IS AN ARGUMENT OF THIS SUBROUTINE)
74  gam = gamma
75 !
76 !-----------------------------------------------------------------------
77 !
78  IF (gamma.GT.0.99d0 .AND. gamma.LT.1.01d0) THEN
79 !
80 !
81 ! PIERSON-MOSKOWITZ SPECTRUM
82 ! ----------------------------
83 !
84  b1 = exp(-1.25d0 * (fp/fmax)**4)
85  b2 = exp(-1.25d0 * (fp/fmin)**4)
86  b = b1 - b2
87  DO i=1,npale
88  pale(npale-i+1) = perpic *
89  & (-0.8d0*log( b2 + b*float(2*i-1)/float(2*npale) ))**(0.25d0)
90  ENDDO
91 !
92  ELSE
93 !
94 !
95 ! JONSWAP SPECTRUM
96 ! ------------------
97 !
98 ! THE FREQUENCIES LIMITING THE SPECTRUM TO THE LEFT AND RIGHT
99 ! ARE GIVEN BY KEYWORDS IN THE ARGUMENTS
100 !
101  IF (fmax.LE.fp) THEN
102  fmax = 2.5d0 * fp
103  WRITE(lu,110) fmax
104  110 FORMAT(/,1x,'(PERALE) : FMAX < FP ??? =>',1x,
105  & 'CORRECTION : FMAX =',1x,f5.3,' HZ',/)
106  ENDIF
107 !
108 ! NUMBER OF INTEGRATION INTERVALS FOR THE TRAPEZOIDS METHOD
109 !
110  npas = 2000*npale
111 !
112 ! WIDTH OF AN INTEGRATION INTERVAL
113 !
114  df = (fmax-fmin)/float(npas)
115 !
116 ! COEFFICIENT FOR THE FUNCTION OF THE SPECTRUM (COMPUTED HERE
117 ! SO THAT IT'S NOT RECOMPUTED WHEN CALLS SPE)
118 !
119  delta = 0.0624d0 * fp**4 /
120  & ( 0.230d0 + 0.0336d0*gam - 0.185d0 / (1.9d0+gam) )
121 !
122 ! SURFACE OF THE SPECTRUM (TRAPEZOIDS METHOD)
123 !
124  sumb = (spe(fmin) + spe(fmax))/2.d0
125  DO i = 2,npas-1
126  sumb = sumb + spe(fmin+float(i)*df)
127  ENDDO
128 !
129 ! DIVIDES THE SPECTRUM INTO 2*NPALE BANDS OF EQUAL ENERGY
130 !
131  sumb = sumb/float(2*npale)
132 !
133 ! IDENTIFIES THE FREQUENCIES EVERY (2*I-1)*SUMB (I=1,NPALE)
134 !
135  sumici = spe(fmin)/2.d0
136  i = 1
137  DO k=1,npas
138  var = spe(fmin+df*float(k))
139  sumici = sumici + var/2.d0
140  IF (sumici.GT.sumb*float(2*i-1)) THEN
141  pale(npale-i+1) = 1.d0 / ( fmin + df*(float(k)-0.5d0) )
142  i = i + 1
143  IF (i.GT.npale) RETURN
144  ENDIF
145  sumici = sumici + var/2.d0
146  ENDDO
147 !
148 !
149  ENDIF
150 !
151 !-----------------------------------------------------------------------
152 !
153  RETURN
154  END
double precision function spe(F)
Definition: spe.f:7
subroutine perale(PALE, GAMMA, PERPIC, NPALE, PMIN, PMAX)
Definition: perale.f:7
Definition: bief.f:3