The TELEMAC-MASCARET system  trunk
qwind3.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE qwind3
3 ! *****************
4 !
5  &( tstot , tsder , f , xk , usold , usnew , twold , twnew ,
6  & nf , ndire , npoin2, betan , betao , dirn , diro )
7 !
8 !**********************************************************************
9 ! TOMAWAC V6P1 27/06/2011
10 !**********************************************************************
11 !
12 !brief COMPUTES THE CONTRIBUTION OF THE WAVE GENERATION
13 !+ (BY WIND) SOURCE TERM BASED ON THE YAN PARAMETRISATION
14 !+ (1987) AND USING THE COEFFICIENTS PROPOSED BY WESTHUYSEN
15 !+ ET AL. (2007)
16 !
17 !reference YAN (1987) : AN IMPROVED WIND INPUT SOURCE TERM FOR
18 !+ THIRD GENERATION OCEAN WAVE MODELLING, REP NO 87-8,
19 !+ ROYAL DUTCH METEOR. INST., 20 PP.
20 !
21 !reference WESTHUYSEN ET AL. (2007) : NONLINEAR SATURATION-BASED
22 !+ WHITECAPPING DISSIPATION IN SWAN FOR DEEP AND SHALLOW
23 !+ WATER, COASTAL ENG., VOL 54, 151-170.
24 !
25 !history E. GAGNAIRE-RENOU (EDF/LNHE)
26 !+ 09/2010
27 !+ V6P0
28 !+
29 !
30 !history G.MATTAROLO (EDF - LNHE)
31 !+ 27/06/2011
32 !+ V6P1
33 !+ Translation of French names of the variables in argument
34 !
35 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
36 !| BETAN |<--| WORK TABLE
37 !| BETAO |<--| WORK TABLE
38 !| DIRN |<--| WORK TABLE
39 !| DIRO |<--| WORK TABLE
40 !| F |-->| DIRECTIONAL SPECTRUM
41 !| FREQ |-->| DISCRETIZED FREQUENCIES
42 !| NF |-->| NUMBER OF FREQUENCIES
43 !| NDIRE |-->| NUMBER OF DIRECTIONS
44 !| NPOIN2 |-->| NUMBER OF POINTS IN 2D MESH
45 !| TETA |-->| DISCRETIZED DIRECTIONS
46 !| TSDER |<->| DERIVED PART OF THE SOURCE TERM CONTRIBUTION
47 !| TSTOT |<->| TOTAL PART OF THE SOURCE TERM CONTRIBUTION
48 !| TWNEW |-->| WIND DIRECTION AT TIME N+1
49 !| TWOLD |-->| WIND DIRECTION AT TIME N
50 !| USNEW |-->| FRICTION VELOCITY AT TIME N+1
51 !| USOLD |-->| FRICTION VELOCITY AT TIME N
52 !| XK |-->| DISCRETIZED WAVE NUMBER
53 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~!
54 ! APPELS : - PROGRAMME(S) APPELANT : SEMIMP
55 ! ******** - PROGRAMME(S) APPELE(S) : -
56 !
57 !**********************************************************************
58 !
60  & coefwd, coefwe, coefwf, coefwh
61 !FROM TOMAWAC MODULE
62 ! CIMPLI IMPLICITATION COEFFICIENT FOR SOURCE TERMS
63 ! COEFWD COEFFICIENT D OF YAN WIND GENERATION MODEL
64 ! COEFWE COEFFICIENT E OF YAN WIND GENERATION MODEL
65 ! COEFWF COEFFICIENT F OF YAN WIND GENERATION MODEL
66 ! COEFWH COEFFICIENT H OF YAN WIND GENERATION MODEL
67 !
68  USE interface_tomawac, ex_qwind3 => qwind3
69  IMPLICIT NONE
70 !
71 !.....VARIABLES IN ARGUMENT
72 ! """"""""""""""""""""
73  INTEGER, INTENT(IN) :: NF , NDIRE , NPOIN2
74  DOUBLE PRECISION, INTENT(IN) :: TWOLD(npoin2), TWNEW(npoin2)
75  DOUBLE PRECISION, INTENT(IN) :: USOLD(npoin2), USNEW(npoin2)
76  DOUBLE PRECISION, INTENT(IN) :: F(npoin2,ndire,nf),XK(npoin2,nf)
77  DOUBLE PRECISION, INTENT(INOUT):: DIRO(npoin2) , DIRN(npoin2)
78  DOUBLE PRECISION, INTENT(INOUT):: BETAN(npoin2), BETAO(npoin2)
79  DOUBLE PRECISION, INTENT(INOUT):: TSTOT(npoin2,ndire,nf)
80  DOUBLE PRECISION, INTENT(INOUT):: TSDER(npoin2,ndire,nf)
81 !
82 !.....LOCAL VARIABLES
83 ! """""""""""""""""
84  INTEGER JP , IFF , IP
85  DOUBLE PRECISION DIREC , CONST
86  DOUBLE PRECISION INTERO, INTERN , CPHAS , DIMPLI
87 !
88 !
89  dimpli= 1.0d0-cimpli
90 !
91 !
92 !.....LOOP ON THE DISCRETISED DIRECTIONS
93 ! """"""""""""""""""""""""""""""""""""""""""""
94  DO jp=1,ndire
95 !
96 !.......PRECOMPUTES THE DIRECTIONAL DEPENDENCES
97 ! """"""""""""""""""""""""""""""""""""""""""""""
98  direc=teta(jp)
99  DO ip=1,npoin2
100  diro(ip)=cos(direc-twold(ip))
101  dirn(ip)=cos(direc-twnew(ip))
102  ENDDO
103 !
104 !.......LOOP ON THE DISCRETISED FREQUENCIES
105 ! """"""""""""""""""""""""""""""""""""""""""""
106  DO iff = 1,nf
107  const=deupi*freq(iff)
108 !
109 !.........COMPUTES THE PROPORTIONALITY COEFFICIENTS BETA
110 ! """"""""""""""""""""""""""""""""""""""""""""""""
111  DO ip = 1,npoin2
112  cphas = const / xk(ip,iff)
113  intero=usold(ip)/cphas
114  betao(ip)=(coefwd*intero**2*diro(ip)+coefwe*intero*diro(ip)
115  & +coefwf*diro(ip)+coefwh)*const
116  intern=usnew(ip)/cphas
117  betan(ip)=(coefwd*intern**2*dirn(ip)+coefwe*intern*dirn(ip)
118  & +coefwf*dirn(ip)+coefwh)*const
119  ENDDO
120 !
121 !.........TAKES INTO ACCOUNT THE SOURCE TERM
122 ! """"""""""""""""""""""""""""""""
123  DO ip = 1,npoin2
124  tstot(ip,jp,iff) = tstot(ip,jp,iff)
125  & + max((dimpli*betao(ip)+cimpli*betan(ip))*f(ip,jp,iff)
126  & ,0.d0)
127  tsder(ip,jp,iff) = tsder(ip,jp,iff) + max(betan(ip),0.d0)
128  ENDDO
129 !
130  ENDDO
131 !
132  ENDDO
133 !
134  RETURN
135  END
136 
double precision, dimension(:), pointer freq
double precision, dimension(:), pointer teta
subroutine qwind3(TSTOT, TSDER, F, XK, USOLD, USNEW, TWOLD, TWNEW, NF, NDIRE, NPOIN2, BETAN, BETAO, DIRN, DIRO)
Definition: qwind3.f:8