The TELEMAC-MASCARET system  trunk
wipj.f
Go to the documentation of this file.
1 !#######################################################################
2  SUBROUTINE wipj ( WIP, FS, NPOIN2, XK, WIPDX, WIPDY,NDIRE,NF)
3 ! Calculating the wave induced pressure and gradients
4 ! WIP = Wave Induced Pressure
5 !
6 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
7 !| FS |-->| VARIANCE DENSITY DIRECTIONAL SPECTRUM
8 !| NF |-->| NUMBER OF FREQUENCIES
9 !| NDIRE |-->| NUMBER OF DIRECTIONS
10 !| NPOIN2 |-->| NUMBER OF POINTS IN 2D MESH
11 !| WIP |<--| WAVE INDUCED PRESSURE
12 !| WIPDX |<--| DERIVATIVE OF WIP ALONG X
13 !| WIPDY |<--| DERIVATIVE OF WIP ALONG Y
14 !| XK |-->| DISCRETIZED WAVE NUMBER
15 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16  USE bief
18  & ,ielm2,t1,t3,t4, depth, deupi
19  USE interface_tomawac, ex_wipj => wipj
20 
21  IMPLICIT NONE
22 
23 !.....VARIABLES IN ARGUMENT
24 ! """"""""""""""""""""
25 
26  INTEGER, INTENT(IN) :: NPOIN2,NDIRE,NF
27  DOUBLE PRECISION, INTENT(IN) :: FS(npoin2,ndire,nf)
28  DOUBLE PRECISION, INTENT(IN) :: XK(npoin2,nf)
29  DOUBLE PRECISION, INTENT(INOUT) :: WIP(npoin2)
30  DOUBLE PRECISION, INTENT(INOUT) :: WIPDX(npoin2)
31  DOUBLE PRECISION, INTENT(INOUT) :: WIPDY(npoin2)
32 !.....LOCAL VARIABLES
33 ! """""""""""""""""
34  INTEGER JP , JF , IP
35  DOUBLE PRECISION DTETAR, COEF, C
36 
37  dtetar=deupi/dble(ndire)
38  DO ip=1,npoin2
39  wip(ip) = 0.d0
40  ENDDO
41 
42  DO jf=1,nf
43  coef=gravit*dfreq(jf)*dtetar
44  DO jp=1,ndire
45  DO ip=1,npoin2
46  wip(ip)=wip(ip)+((xk(ip,jf)*fs(ip,jp,jf))
47  & /(sinh(2.d0*(xk(ip,jf)*depth(ip)))))*coef
48  ENDDO
49  ENDDO
50  ENDDO
51 
52 !.....DERIVATIVE IN X
53  CALL ov('X=Y ',t4,wip,t3,c,npoin2)
54 
55  CALL vector
56  & (st1,'=','GRADF X',ielm2,1.d0,st4,
57  & st3,st3,st3,st3,st3,mesh,.false.,st3,asspar=.true.)
58 
59  CALL vector
60  & (st3,'=','GRADF X',ielm2,1.d0,mesh%X,
61  & st1,st1,st1,st1,st1,mesh,.false.,st1,asspar=.true.)
62 
63 ! IF(NCSIZE.GE.1) THEN
64 ! CALL PARCOM(ST1,2,MESH)
65 ! CALL PARCOM(ST3,2,MESH)
66 ! ENDIF
67  CALL ov('X=Y/Z ',wipdx,t1,t3,c,npoin2)
68 
69 !.....DERIVATIVE IN Y
70  CALL ov('X=Y ',t4,wip,t3,c,npoin2)
71  CALL vector
72  & (st1,'=','GRADF Y',ielm2,1.d0,st4,
73  & st3,st3,st3,st3,st3,mesh,.false.,st3,asspar=.true.)
74 !
75  CALL vector
76  & (st3,'=','GRADF Y',ielm2,1.d0,mesh%Y,
77  & st1,st1,st1,st1,st1,mesh,.false.,st1,asspar=.true.)
78 
79 !AQUI FAZEMOS A MÉDIA dos grads no volume.
80 
81  CALL ov('X=Y/Z ',wipdy,t1,t3,c,npoin2)
82 
83 !AQUI TEMOS AS DERIVADAS EM X E Y DO WAVE INDUCED PRESSURE
84 
85  RETURN
86  END
87 
subroutine ov(OP, X, Y, Z, C, DIM1)
Definition: ov.f:7
double precision, dimension(:), pointer dfreq
type(bief_obj), target st4
subroutine wipj(WIP, FS, NPOIN2, XK, WIPDX, WIPDY, NDIRE, NF)
Definition: wipj.f:4
type(bief_obj), target st3
type(bief_obj), target st1
subroutine vector(VEC, OP, FORMUL, IELM1, XMUL, F, G, H, U, V, W, MESH, MSK, MASKEL, LEGO, ASSPAR)
Definition: vector.f:7
type(bief_mesh), target mesh
Definition: bief.f:3