The TELEMAC-MASCARET system  trunk
qwind1.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE qwind1
3 ! *****************
4 !
5  &( tstot , tsder , f , xk , usold , usnew , twold , twnew ,
6  & z0old , z0new , nf , ndire , npoin2, told , tnew ,
7  & usn , uso , omnew , omold , betan , betao )
8 !
9 !***********************************************************************
10 ! TOMAWAC V6P1 27/06/2011
11 !***********************************************************************
12 !
13 !brief COMPUTES THE CONTRIBUTION OF THE WAVE GENERATION
14 !+ (BY WIND) SOURCE TERM BASED ON JANSSEN (1989,1991).
15 !
16 !reference JANSSEN P.A.E.M (1989) :
17 !+ "WIND-INDUCED STRESS AND THE DRAG OF AIR
18 !+ FLOW OVER SEA WAVES". JPO, VOL 19, PP 745-754.
19 !reference JANSSEN P.A.E.M (1991) :
20 !+ "QUASI-LINEAR THEORY OF WIND-WAVE GENERATION
21 !+ APPLIED TO WAVE FORECASTING". JPO, VOL 21, PP 1631-1642.
22 !
23 !history P. THELLIER; M. BENOIT (EDF/DER/LNH)
24 !+ 11/04/95
25 !+ V1P0
26 !+
27 !
28 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
29 !+ 13/07/2010
30 !+ V6P0
31 !+ Translation of French comments within the FORTRAN sources into
32 !+ English comments
33 !
34 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
35 !+ 21/08/2010
36 !+ V6P0
37 !+ Creation of DOXYGEN tags for automated documentation and
38 !+ cross-referencing of the FORTRAN sources
39 !
40 !history G.MATTAROLO (EDF - LNHE)
41 !+ 27/06/2011
42 !+ V6P1
43 !+ Translation of French names of the variables in argument
44 !
45 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46 !| BETAM |-->| WIND GENERATION COEFFICIENT
47 !| BETAN |<--| WORK TABLE
48 !| BETAO |<--| WORK TABLE
49 !| CPHAS |<--| WORK TABLE
50 !| F |-->| DIRECTIONAL SPECTRUM
51 !| NF |-->| NUMBER OF FREQUENCIES
52 !| NDIRE |-->| NUMBER OF DIRECTIONS
53 !| NPOIN2 |-->| NUMBER OF POINTS IN 2D MESH
54 !| OMNEW |<--| WORK TABLE
55 !| OMOLD |<--| WORK TABLE
56 !| TNEW |<--| WORK TABLE
57 !| TOLD |<--| WORK TABLE
58 !| TSDER |<->| DERIVED PART OF THE SOURCE TERM CONTRIBUTION
59 !| TSTOT |<->| TOTAL PART OF THE SOURCE TERM CONTRIBUTION
60 !| TWNEW |-->| WIND DIRECTION AT TIME N+1
61 !| TWOLD |-->| WIND DIRECTION AT TIME N
62 !| USN |<--| WORK TABLE
63 !| USNEW |-->| FRICTION VELOCITY AT TIME N+1
64 !| USO |<--| WORK TABLE
65 !| USOLD |-->| FRICTION VELOCITY AT TIME N
66 !| XK |-->| DISCRETIZED WAVE NUMBER
67 !| XKAPPA |-->| VON KARMAN CONSTANT
68 !| Z0NEW |-->| SURFACE ROUGHNESS LENGTH AT TIME N+1
69 !| Z0OLD |-->| SURFACE ROUGHNESS LENGTH AT TIME N
70 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71 !
73  & teta, freq, decal, xkappa,betam, cimpli
74 
75 !
76  USE interface_tomawac, ex_qwind1 => qwind1
77  IMPLICIT NONE
78 !
79 !.....VARIABLES IN ARGUMENT
80 ! """"""""""""""""""""
81  INTEGER, INTENT(IN) :: NF , NDIRE , NPOIN2
82  DOUBLE PRECISION, INTENT(IN) :: F(npoin2,ndire,nf),XK(npoin2,nf)
83  DOUBLE PRECISION, INTENT(IN) :: TWOLD(npoin2), TWNEW(npoin2)
84  DOUBLE PRECISION, INTENT(IN) :: USOLD(npoin2), USNEW(npoin2)
85  DOUBLE PRECISION, INTENT(IN) :: Z0OLD(npoin2), Z0NEW(npoin2)
86  DOUBLE PRECISION, INTENT(INOUT):: TNEW(npoin2,ndire)
87  DOUBLE PRECISION, INTENT(INOUT):: TOLD(npoin2,ndire)
88  DOUBLE PRECISION, INTENT(INOUT):: USO(npoin2),USN(npoin2)
89  DOUBLE PRECISION, INTENT(INOUT):: OMNEW(npoin2),OMOLD(npoin2)
90  DOUBLE PRECISION, INTENT(INOUT):: BETAN(npoin2), BETAO(npoin2)
91  DOUBLE PRECISION, INTENT(INOUT):: TSTOT(npoin2,ndire,nf)
92  DOUBLE PRECISION, INTENT(INOUT):: TSDER(npoin2,ndire,nf)
93 !.....VARIABLES FROM MODULE TOMAWAC
94 ! """"""""""""""""""""
95 ! DECAL SHIFT GROWING CURVE DUE TO WIND
96 ! XKAPPA VON KARMAN CONSTANT
97 ! BETAM WIND GENERATION COEFFICIENT
98 ! CIMPLI IMPLICITATION COEFFICIENT FOR SOURCE TERMS
99 !
100 !.....LOCAL VARIABLES
101 ! """""""""""""""""
102  INTEGER JP , JF , IP
103  DOUBLE PRECISION C1,DIREC,CONST,DIMPLI,XX,ZLOGMU, CPHAS
104 !
105  c1 = deupi * (roair/roeau) * (betam/xkappa**2)
106  dimpli=1.d0-cimpli
107 !
108 !.....COMPUTES (1ST PASS) THE DIRECTIONAL DEPENDENCES
109 ! """"""""""""""""""""""""""""""""""""""""""""""
110  DO jp=1,ndire
111  direc=teta(jp)
112  DO ip=1,npoin2
113  told(ip,jp)=cos(direc-twold(ip))
114  tnew(ip,jp)=cos(direc-twnew(ip))
115  ENDDO
116  ENDDO
117 !
118 !.....LOOP ON THE DISCRETISED FREQUENCIES
119 ! """"""""""""""""""""""""""""""""""""""""""""
120  DO jf=1,nf
121  const=c1*freq(jf)
122 !
123 !.......COMPUTES (1ST PASS) THE FREQUENCIES (OMEGA AND UETOILE/CPHASE)
124 ! """""""""""""""""""""""""""""""""""""""""""""""""
125  DO ip=1,npoin2
126 !.......COMPUTES THE PHASE VELOCITY
127  cphas = deupi * freq(jf) / xk(ip,jf)
128  omold(ip) = gravit * z0old(ip) / cphas**2
129  omnew(ip) = gravit * z0new(ip) / cphas**2
130  uso(ip) = (usold(ip) / cphas) + decal
131  usn(ip) = (usnew(ip) / cphas) + decal
132  ENDDO
133 !
134 !.......LOOP ON THE DISCRETISED DIRECTIONS
135 ! """"""""""""""""""""""""""""""""""""""""""""
136  DO jp=1,ndire
137 !
138  DO ip=1,npoin2
139  betao(ip)=0.d0
140  betan(ip)=0.d0
141  ENDDO
142 !
143 !.........COMPUTES THE SOURCE TERM
144 ! """"""""""""""""""""""
145  DO ip=1,npoin2
146  IF(told(ip,jp).GT.0.01d0) THEN
147  xx = uso(ip) * told(ip,jp)
148  zlogmu = log(omold(ip)) + xkappa/xx
149  IF(zlogmu.LT.0.d0) THEN
150  betao(ip) = const*omold(ip)*exp(xkappa/xx)*
151  & zlogmu**4*xx**2
152  ENDIF
153  ENDIF
154  ENDDO
155  DO ip=1,npoin2
156  IF(tnew(ip,jp).GT.0.01d0) THEN
157  xx = usn(ip) * tnew(ip,jp)
158  zlogmu = log(omnew(ip)) + xkappa/xx
159  IF(zlogmu.LT.0.d0) THEN
160  betan(ip) = const*omnew(ip)*exp(xkappa/xx)*
161  & zlogmu**4*xx**2
162  ENDIF
163  ENDIF
164  ENDDO
165 !
166 !.........TAKES THE SOURCE TERM INTO ACCOUNT
167 ! """"""""""""""""""""""""""""""""
168  DO ip=1,npoin2
169  tstot(ip,jp,jf) = tstot(ip,jp,jf)
170  & + (dimpli*betao(ip)+cimpli*betan(ip)) * f(ip,jp,jf)
171  tsder(ip,jp,jf) = tsder(ip,jp,jf) + betan(ip)
172  ENDDO
173 !
174  ENDDO
175  ENDDO
176 !
177  RETURN
178  END
subroutine qwind1(TSTOT, TSDER, F, XK, USOLD, USNEW, TWOLD, TWNEW, Z0OLD, Z0NEW, NF, NDIRE, NPOIN2, TOLD, TNEW, USN, USO, OMNEW, OMOLD, BETAN, BETAO)
Definition: qwind1.f:9