The TELEMAC-MASCARET system  trunk
couple.f
Go to the documentation of this file.
1 ! ***************
2  FUNCTION couple
3 ! ***************
4 !
5  &( xk1 , yk1 , xk2 , yk2 , xk3 , yk3 , xk4 , yk4 )
6 !
7 !***********************************************************************
8 ! TOMAWAC V6P1 14/06/2011
9 !***********************************************************************
10 !
11 !brief FUNCTION CALLED BY PRENL3
12 !+ IT COMPUTES THE COUPLING COEFFICIENT FOR THE NON-LINEAR
13 !+ INTERACTION TERM.
14 !
15 !history E. GAGNAIRE-RENOU
16 !+ 04/2011
17 !+ V6P1
18 !+ CREATED
19 !
20 !history G.MATTAROLO (EDF - LNHE)
21 !+ 14/06/2011
22 !+ V6P1
23 !+ Translation of French names of the variables in argument
24 !
25 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
26 !| XK1, YK1 |-->| COUPLING COEFFICIENT FOR QNL4 (GQM METHOD)
27 !| XK2, YK2 |-->| COUPLING COEFFICIENT FOR QNL4 (GQM METHOD)
28 !| XK3, YK3 |-->| COUPLING COEFFICIENT FOR QNL4 (GQM METHOD)
29 !| XK4, YK4 |-->| COUPLING COEFFICIENT FOR QNL4 (GQM METHOD)
30 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
31 !
32  USE interface_tomawac, ex_couple => couple
33  USE declarations_tomawac, ONLY : pi, gravit
34  IMPLICIT NONE
35 !
36 !.....VARIABLES IN ARGUMENT
37 ! """""""""""""""""""""
38  DOUBLE PRECISION, INTENT(IN) :: XK1 , YK1 , XK2 , YK2
39  DOUBLE PRECISION, INTENT(IN) :: XK3 , YK3 , XK4 , YK4
40  DOUBLE PRECISION COUPLE
41 !
42 !.....LOCAL VARIABLES
43 ! """"""""""""""""""
44  DOUBLE PRECISION RK1 , RK2 , RK3 , RK4 , WK1 , WK2
45  DOUBLE PRECISION WK3 , WK4 , S12 , S13 , S14 , S23
46  DOUBLE PRECISION S24 , S34 , W1P2 , Q12 , W1M3 , Q13
47  DOUBLE PRECISION W1M4 , Q14 , DDD , COEF , DENO13, NUME13
48  DOUBLE PRECISION DENO14, NUME14, ZERO
49 !
50  coef=pi*gravit*gravit/4.d0
51  zero=1.d-10
52 !
53  rk1=sqrt(xk1*xk1+yk1*yk1)
54  rk2=sqrt(xk2*xk2+yk2*yk2)
55  rk3=sqrt(xk3*xk3+yk3*yk3)
56  rk4=sqrt(xk4*xk4+yk4*yk4)
57 !
58  wk1=sqrt(rk1)
59  wk2=sqrt(rk2)
60  wk3=sqrt(rk3)
61  wk4=sqrt(rk4)
62 !
63  s12=xk1*xk2+yk1*yk2
64  s13=xk1*xk3+yk1*yk3
65  s14=xk1*xk4+yk1*yk4
66  s23=xk2*xk3+yk2*yk3
67  s24=xk2*xk4+yk2*yk4
68  s34=xk3*xk4+yk3*yk4
69 !
70  w1p2=sqrt((xk1+xk2)*(xk1+xk2)+(yk1+yk2)*(yk1+yk2))
71  w1m3=sqrt((xk1-xk3)*(xk1-xk3)+(yk1-yk3)*(yk1-yk3))
72  w1m4=sqrt((xk1-xk4)*(xk1-xk4)+(yk1-yk4)*(yk1-yk4))
73  q12=(wk1+wk2)*(wk1+wk2)
74  q13=(wk1-wk3)*(wk1-wk3)
75  q14=(wk1-wk4)*(wk1-wk4)
76 !
77 !.....COMPUTES THE D COEFFICIENT OF WEBB (1978)
78 ! """"""""""""""""""""""""""""""""""""""
79  ddd=2.00d0*q12*(rk1*rk2-s12)*(rk3*rk4-s34)/(w1p2-q12)
80  & +0.50d0*(s12*s34+s13*s24+s14*s23)
81  & +0.25d0*(s13+s24)*q13*q13
82  & -0.25d0*(s12+s34)*q12*q12
83  & +0.25d0*(s14+s23)*q14*q14
84  & +2.50d0*rk1*rk2*rk3*rk4
85  & +q12*q13*q14*(rk1+rk2+rk3+rk4)
86  deno13=w1m3-q13
87  nume13=2.00d0*q13*(rk1*rk3+s13)*(rk2*rk4+s24)
88  IF (abs(deno13).LT.zero) THEN
89  IF (abs(nume13).LT.zero) THEN
90  WRITE(*,*) 'WARNING DANS COUPLE : (1-3) ON A : 0/0 !'
91  ELSE
92  WRITE(*,*) 'WARNING DANS COUPLE : (1-3) ON A : INFINI !'
93  ENDIF
94  WRITE(*,*) 'TERME (1-3) NON PRIS EN COMPTE DANS LE CALCUL.'
95  ELSE
96  ddd=ddd+nume13/deno13
97  ENDIF
98  deno14=w1m4-q14
99  nume14=2.00d0*q14*(rk1*rk4+s14)*(rk2*rk3+s23)
100  IF (abs(deno14).LT.zero) THEN
101  IF (abs(nume14).LT.zero) THEN
102  WRITE(*,*) 'WARNING DANS COUPLE : (1-4) ON A : 0/0 !'
103  ELSE
104  WRITE(*,*) 'WARNING DANS COUPLE : (1-4) ON A : INFINI !'
105  ENDIF
106  WRITE(*,*) 'TERME (1-4) NON PRIS EN COMPTE DANS LE CALCUL.'
107  ELSE
108  ddd=ddd+nume14/deno14
109  ENDIF
110 !
111 !.....COMPUTES THE COUPLING COEFFICIENT FOR SPECTRAL DENSITIES EXPRESSED
112 !.....IN TERMS OF VARIANCE (NOT IN TERMS OF ENERGY)
113 ! """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
114  couple=coef*ddd*ddd/(wk1*wk2*wk3*wk4)
115 !
116  RETURN
117  END
double precision function couple(XK1, YK1, XK2, YK2, XK3, YK3, XK4, YK4)
Definition: couple.f:7