The TELEMAC-MASCARET system  trunk
iniphy.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE iniphy
3 ! *****************
4 !
5  &( xk , cg , b , npoin2, nf )
6 !
7 !***********************************************************************
8 ! TOMAWAC V6P1 20/06/2011
9 !***********************************************************************
10 !
11 !brief COMPUTES THE WAVE PARAMETERS THAT ARE TIME-INDEPENDENT
12 !+ (WAVE NUMBER, GROUP VELOCITY,...).
13 !
14 !note ALL THE DIRECTIONS ARE IN RADIAN AND IN THE RANGE [0 ; 2PI].
15 !
16 !history M. BENOIT (EDF/DER/LNH)
17 !+ 07/02/95
18 !+ V1P0
19 !+
20 !
21 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
22 !+ 13/07/2010
23 !+ V6P0
24 !+ Translation of French comments within the FORTRAN sources into
25 !+ English comments
26 !
27 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
28 !+ 21/08/2010
29 !+ V6P0
30 !+ Creation of DOXYGEN tags for automated documentation and
31 !+ cross-referencing of the FORTRAN sources
32 !
33 !history G.MATTAROLO (EDF - LNHE)
34 !+ 20/06/2011
35 !+ V6P1
36 !+ Translation of French names of the variables in argument
37 !
38 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
39 !| B |<--| JACOBIAN TO TRANSFORM N(KX,KY) INTO F(FR,TETA)
40 !| CG |<--| DISCRETIZED GROUP VELOCITY
41 !| COSPHI |-->| COSINE OF THE LATITUDES OF THE POINTS 2D
42 !| DEPTH |-->| WATER DEPTH
43 !| FREQ |-->| DISCRETIZED FREQUENCIES
44 !| NF |-->| NUMBER OF FREQUENCIES
45 !| NPOIN2 |-->| NUMBER OF POINTS IN 2D MESH
46 !| PROINF |-->| LOGICAL INDICATING INFINITE DEPTH ASSUMPTION
47 !| SPHE |-->| LOGICAL INDICATING SPHERICAL COORD ASSUMPTION
48 !| XK |<--| DISCRETIZED WAVE NUMBER
49 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50 !
52  & cosf, proinf, sphe
53 !
54  USE interface_tomawac, ex_iniphy => iniphy
55  IMPLICIT NONE
56 !
57 !.....VARIABLES IN ARGUMENT
58 ! """"""""""""""""""""
59  INTEGER, INTENT(IN) :: NF , NPOIN2
60  DOUBLE PRECISION, INTENT(INOUT) :: B(npoin2,nf) , XK(npoin2,nf)
61  DOUBLE PRECISION, INTENT(INOUT) :: CG(npoin2,nf)
62 !
63 !.....LOCAL VARIABLES
64 ! """""""""""""""""
65  INTEGER IP , JF
66  DOUBLE PRECISION DEUPI2,DPDSUG,AUX2,AUX1,AUX3,DEUKD
67 !
68  deupi2=deupi**2
69  dpdsug=deupi2/gravit
70 !
71  IF (proinf) THEN
72 ! +----------------------+
73 !.............................. ! INFINITE WATER DEPTH !
74 ! +----------------------+
75  DO jf=1,nf
76  aux1=dpdsug*(freq(jf))**2
77  aux3=0.5d0*gravit/(deupi*freq(jf))
78  DO ip=1,npoin2
79  xk(ip,jf)=aux1
80  cg(ip,jf)=aux3
81  ENDDO ! IP
82  ENDDO ! JF
83  ELSE
84 ! +--------------------+
85 !.............................. ! FINITE WATER DEPTH !
86 ! +--------------------+
87  DO jf=1,nf
88  aux2=deupi*freq(jf)
89  DO ip=1,npoin2
90  CALL wnscou(aux1,freq(jf),depth(ip))
91  deukd=2.d0*aux1*depth(ip)
92  IF (deukd.GT.7.d2) THEN
93  aux3=0.5d0*aux2/aux1
94  ELSE
95  aux3=0.5d0*(1.d0+deukd/sinh(deukd))*aux2/aux1
96  ENDIF
97  xk(ip,jf)=aux1
98  cg(ip,jf)=aux3
99  ENDDO ! IP
100  ENDDO ! JF
101  ENDIF
102 !
103 !
104 !.....COMPUTES B TO GO FROM (KX, KY) TO (FR, TETA)
105 ! ===================================================
106  IF (.NOT.sphe) THEN
107 ! +-----------------------------+
108 !.............................. ! CARTESIAN COORDINATE SYSTEM !
109 ! +-----------------------------+
110  DO jf=1,nf
111  aux1=deupi2*freq(jf)
112  DO ip=1,npoin2
113  b(ip,jf)= cg(ip,jf)/(aux1*xk(ip,jf))
114  ENDDO ! IP
115  ENDDO ! JF
116 !
117  ELSE
118 ! +-----------------------------+
119 !.............................. ! SPHERICAL COORDINATE SYSTEM !
120 ! +-----------------------------+
121  DO jf=1,nf
122  aux1=deupi2*freq(jf)*r2
123  DO ip=1,npoin2
124  b(ip,jf)= cg(ip,jf)/(aux1*xk(ip,jf)*cosf(ip))
125  ENDDO ! IP
126  ENDDO ! JF
127  ENDIF
128 !
129  RETURN
130  END
double precision, dimension(:), pointer depth
double precision, dimension(:), pointer freq
subroutine iniphy(XK, CG, B, NPOIN2, NF)
Definition: iniphy.f:7
subroutine wnscou(CK2, FREQ, DEPTH)
Definition: wnscou.f:7