The TELEMAC-MASCARET system  trunk
moudiss2.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE moudiss2
3 ! *****************
4  & (fwx, fwy, npoin2, xk, ndire, fs,nf, taux1, f_int)
5 ! SURFACE STRESS DUE TO WIND INPUT ENERGY AND WHITECAPPING
6 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7 !| FS |-->| VARIANCE DENSITY DIRECTIONAL SPECTRUM
8 !| FWX |<--| SURFACE STRESS DUE TO WIND ALONG X
9 !| FWY |<--| SURFACE STRESS DUE TO WIND ALONG Y
10 !| NF |-->| NUMBER OF FREQUENCIES
11 !| NDIRE |-->| NUMBER OF DIRECTIONS
12 !| NPOIN2 |-->| NUMBER OF POINTS IN 2D MESH
13 !| XK |-->| DISCRETIZED WAVE NUMBER
14 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
15 
17  & deupi, cmout3,cmout4, cmout5, cmout6, varian, fmoy, xkmoy,
18  & depth, usold, proinf, gravit
19 !
20  IMPLICIT NONE
21 !
22  INTEGER, INTENT(IN) :: NPOIN2, NDIRE,NF
23  DOUBLE PRECISION, INTENT(IN) :: FS(npoin2,ndire,nf)
24  DOUBLE PRECISION, INTENT(IN) :: XK(npoin2,nf)
25  DOUBLE PRECISION, INTENT(INOUT) :: FWX(npoin2), FWY(npoin2)
26  DOUBLE PRECISION, INTENT(INOUT) :: F_INT(npoin2),TAUX1(npoin2)
27 !
28  DOUBLE PRECISION DTETAR, SIGMA, AUX, BETAMOU, AUX1
29  DOUBLE PRECISION W, SURDEUPIFREQ, SQBSCMOUT4, SURCMOUT4
30  DOUBLE PRECISION PO, P0O, KD, DEUKD
31  DOUBLE PRECISION CG1, CPHAS, C3, C2, C1, BETAO, BETA, B
32  INTEGER IP, JF, JP
33  dtetar=deupi/dble(ndire)
34  c1 = - cmout5*deupi**9/gravit**4
35  c2 = - cmout5*deupi
36  w = 25.d0
37  surcmout4 = 1.d0/cmout4
38  IF (proinf) THEN
39  ! DEEP WATER CASE, ARRAY DEPENDING ONLY ON THE SPATIAL MESH NODE
40  DO ip = 1,npoin2
41  taux1(ip) = c1 * varian(ip)**2 * fmoy(ip)**9
42  ENDDO
43  ELSE
44 ! FINITE DEPTH CASE
45  DO ip=1,npoin2
46  taux1(ip) = c2 * varian(ip)**2 * fmoy(ip) * xkmoy(ip)**4
47  ENDDO
48  ENDIF
49  DO jf=1,nf
50  sigma=deupi*freq(jf)
51  surdeupifreq=1.d0/(deupi*freq(jf))
52  aux1=dfreq(jf)*dtetar
53  DO ip=1,npoin2
54  f_int(ip)=fs(ip,1,jf)
55  ENDDO
56  DO jp=2,ndire
57  DO ip=1,npoin2
58  f_int(ip)=f_int(ip)+fs(ip,jp,jf)
59  ENDDO
60  ENDDO
61  DO ip=1,npoin2
62  f_int(ip)=f_int(ip)*dtetar
63  ENDDO
64  !
65  IF(proinf) THEN
66 !
67  DO ip = 1,npoin2
68 !
69  cphas = xk(ip,jf)*surdeupifreq
70  p0o = 3.d0+tanh(w*(usold(ip)*cphas-0.1d0))
71  cg1 = 0.5d0*gravit*surdeupifreq
72  b = cg1*f_int(ip)*xk(ip,jf)**3
73  sqbscmout4=sqrt(b*surcmout4)
74 ! COMPUTES THE BREAK/NON-BREAK TRANSITION
75  po = 0.5d0*(1.d0+tanh(10.d0*(sqbscmout4-1.d0)))
76 ! COMPUTES THE BREAK BETA
77  c3 = -cmout3*sqrt(gravit*xk(ip,jf))
78  betao = c3*sqbscmout4**p0o
79  betamou = beta+po*(betao-beta)
80 
81  DO jp=1,ndire
82  fwx(ip)=fwx(ip)+((xk(ip,jf)/sigma)*sintet(jp)
83  & *betamou*fs(ip,jp,jf))*aux1
84  fwy(ip)=fwy(ip)+((xk(ip,jf)/sigma)*costet(jp)
85  & *betamou*fs(ip,jp,jf))*aux1
86  ENDDO
87  ENDDO
88  ELSE
89 ! FINITE WATER DEPTH (USES K).
90  DO ip=1,npoin2
91  cphas = xk(ip,jf)*surdeupifreq
92  kd=min(xk(ip,jf)*depth(ip),350.d0)
93  deukd=kd+kd
94  cg1=( 0.5d0+xk(ip,jf)*depth(ip)/sinh(deukd) )/cphas
95  b = cg1*f_int(ip)*xk(ip,jf)**3
96  sqbscmout4=sqrt(b*surcmout4)
97 ! COMPUTES THE BREAK BETA
98  c3=-cmout3*sqrt(gravit*xk(ip,jf))
99  aux=tanh(kd)
100  p0o=3.d0+tanh(w*(usold(ip)*cphas-0.1d0))
101  betao=c3*sqbscmout4**p0o*aux**((2.d0-p0o)*0.25d0)
102 ! COMPUTES THE NON-BREAK BETA
103  aux = xk(ip,jf) / xkmoy(ip)
104 ! COMPUTES THE TOTAL BETA
105  beta=taux1(ip)*aux*(1.d0-cmout6+cmout6*aux)
106 ! COMPUTES THE BREAK/NON-BREAK TRANSITION
107  po = 0.5d0*(1.d0+tanh(10.d0*(sqbscmout4-1.d0)))
108  betamou=beta+po*(betao-beta)
109 
110  DO jp=1,ndire
111  fwx(ip)=fwx(ip)+((xk(ip,jf)/sigma)*sintet(jp)
112  & *betamou*fs(ip,jp,jf))*aux1
113  fwy(ip)=fwy(ip)+((xk(ip,jf)/sigma)*costet(jp)
114  & *betamou*fs(ip,jp,jf))*aux1
115  ENDDO
116  ENDDO
117  ENDIF
118  ENDDO
119  RETURN
120  END
double precision, dimension(:), pointer sintet
double precision, dimension(:), pointer freq
double precision, dimension(:), pointer dfreq
double precision, dimension(:), pointer costet
subroutine moudiss2(FWX, FWY, NPOIN2, XK, NDIRE, FS, NF, TAUX1, F_INT)
Definition: moudiss2.f:6