The TELEMAC-MASCARET system  trunk
cflpsi.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE cflpsi
3 ! *****************
4 !
5  &(sygma,u,v,dt,ielm,mesh,msk,maskel)
6 !
7 !***********************************************************************
8 ! BIEF V7P0 21/08/2010
9 !***********************************************************************
10 !
11 !brief COMPUTES THE COURANT NUMBER AT EACH POINT OF THE MESH
12 !+ AND FOR EACH TIMESTEP.
13 !
14 !warning THE COORDINATES ARE HERE GIVEN BY ELEMENTS
15 !
16 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
17 !+ 13/07/2010
18 !+ V6P0
19 !+ Translation of French comments within the FORTRAN sources into
20 !+ English comments
21 !
22 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
23 !+ 21/08/2010
24 !+ V6P0
25 !+ Creation of DOXYGEN tags for automated documentation and
26 !+ cross-referencing of the FORTRAN sources
27 !
28 !history J-M HERVOUET (EDF LAB, LNHE)
29 !+ 07/05/2014
30 !+ V7P0
31 !+ Correction in //, SYGMA was not assembled.
32 !
33 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
34 !| DT |-->| TIME STEP.
35 !| IELM |-->| TYPE OF ELEMENT.
36 !| MASKEL |-->| MASKING OF ELEMENTS
37 !| | | =1. : NORMAL =0. : MASKED ELEMENT
38 !| MESH |-->| MESH STRUCTURE
39 !| MSK |-->| IF YES, THERE IS MASKED ELEMENTS.
40 !| SYGMA |<--| COURANT NUMBER.
41 !| U |-->| VELOCITY ALONG X.
42 !| V |-->| VELOCITY ALONG Y.
43 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44 !
45  USE bief, ex_cflpsi => cflpsi
46 !
48  IMPLICIT NONE
49 !
50 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
51 !
52  TYPE(bief_obj) , INTENT(INOUT) :: SYGMA
53  TYPE(bief_obj) , INTENT(IN) :: U,V,MASKEL
54  DOUBLE PRECISION, INTENT(IN) :: DT
55  INTEGER , INTENT(IN) :: IELM
56  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
57  LOGICAL , INTENT(IN) :: MSK
58 !
59 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
60 !
61 ! MASS OF THE BASES IN BIEF WORKING ARRAY
62 !
63  CALL vector(mesh%T,'=','MASBAS ',
64  & ielm,1.d0,u,u,u,u,u,u,mesh,msk,maskel)
65 !
66  IF(ncsize.GT.1) CALL parcom(mesh%T,2,mesh)
67 !
68  CALL cpstvc(mesh%T,sygma)
69 !
70 !-----------------------------------------------------------------------
71 !
72 ! P1 TRIANGLES
73 !
74  IF(ielm.EQ.11) THEN
75 !
76  CALL cflp11(u%R,v%R,mesh%XEL%R,mesh%YEL%R,
77  & mesh%IKLE%I,mesh%NELEM,mesh%NELMAX,mesh%W%R)
78 !
79 !-----------------------------------------------------------------------
80 !
81 ! QUASI-BUBBLE TRIANGLES
82 !
83  ELSEIF(ielm.EQ.12) THEN
84 !
85  CALL cflp12(u%R,v%R,mesh%XEL%R,mesh%YEL%R,
86  & mesh%IKLE%I,mesh%NELEM,mesh%NELMAX,mesh%W%R)
87 !
88 !-----------------------------------------------------------------------
89 !
90  ELSE
91 !
92  WRITE(lu,101) ielm
93 101 FORMAT(1x,'CFLPSI: IELM = ',1i6,' CASE NOT IMPLEMENTED.')
94  CALL plante(1)
95  stop
96 !
97  ENDIF
98 !
99 ! ASSEMBLES THE LIJ
100 !
101  CALL assvec(sygma%R,mesh%IKLE%I,bief_nbpts(ielm,mesh),
102  & mesh%NELEM,mesh%NELMAX,
103  & mesh%W%R,.true.,mesh%LV,msk,maskel%R,
104  & bief_nbpel(ielm,mesh))
105  IF(ncsize.GT.1) CALL parcom(sygma,2,mesh)
106 !
107 !-----------------------------------------------------------------------
108 !
109 ! FINAL RESULT, DIVIDES BY THE MASS OF THE BASES
110 !
111  CALL os('X=CY/Z ', x=sygma, y=sygma, z=mesh%T, c=dt,
112  & iopt=2, infini=0.d0, zero=1.d-6)
113 !
114 !-----------------------------------------------------------------------
115 !
116  RETURN
117  END
integer function bief_nbpts(IELM, MESH)
Definition: bief_nbpts.f:7
integer function bief_nbpel(IELM, MESH)
Definition: bief_nbpel.f:7
subroutine cflp11(U, V, X, Y, IKLE, NELEM, NELMAX, W1)
Definition: cflp11.f:7
subroutine assvec(X, IKLE, NPOIN, NELEM, NELMAX, W, INIT, LV, MSK, MASKEL, NDP, ERRX)
Definition: assvec.f:7
subroutine cflpsi(SYGMA, U, V, DT, IELM, MESH, MSK, MASKEL)
Definition: cflpsi.f:7
subroutine cflp12(U, V, X, Y, IKLE, NELEM, NELMAX, W1)
Definition: cflp12.f:7
subroutine cpstvc(X, Y)
Definition: cpstvc.f:7
subroutine vector(VEC, OP, FORMUL, IELM1, XMUL, F, G, H, U, V, W, MESH, MSK, MASKEL, LEGO, ASSPAR)
Definition: vector.f:7
subroutine os(OP, X, Y, Z, C, IOPT, INFINI, ZERO)
Definition: os.f:7
subroutine parcom(X, ICOM, MESH)
Definition: parcom.f:7
Definition: bief.f:3