The TELEMAC-MASCARET system  trunk
tracvf.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE tracvf
3 ! *****************
4 !
5  &(f,fscexp,fxmat,fxmatpar,
6  & volu2d,unsv2d,ddt,fxbor,fbor,smh,yasmh,
7  & t1,t2,t4,t5,t7,t8,
8  & mesh,limtra,kdir,kddl,optsou,iopt2,flbortra,msk,dt,rain,pluie,
9  & train,massou,mass_balance)
10 !
11 !***********************************************************************
12 ! BIEF V7P1
13 !***********************************************************************
14 !
15 !brief COMPUTES THE TRACER FOR FINITE VOLUME SCHEME.
16 !+ TO COMPLETE.
17 !
18 !history C-T PHAM (LNHE)
19 !+ 06/02/09
20 !+ V6P0
21 !+
22 !
23 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
24 !+ 13/07/2010
25 !+ V6P0
26 !+ Translation of French comments within the FORTRAN sources into
27 !+ English comments
28 !
29 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
30 !+ 21/08/2010
31 !+ V6P0
32 !+ Creation of DOXYGEN tags for automated documentation and
33 !+ cross-referencing of the FORTRAN sources
34 !
35 !history J-M HERVOUET (LNHE)
36 !+ 24/02/2012
37 !+ V6P2
38 !+ Rain and evaporation added (after initiative by O. Boutron, from
39 !+ Tour du Valat, and O. Bertrand, Artelia group)
40 !
41 !history J-M HERVOUET (LNHE)
42 !+ 08/06/2015
43 !+ V7P1
44 !+ Now mass balance done on request.
45 !
46 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
47 !| DDT |-->| SUB TIME-STEP
48 !| DT |-->| TIME-STEP
49 !| F |<--| VALUES OF F AT TIME N+1.
50 !| FBOR |-->| VALUES OF F AT THE PRESCRIBED BOUNDARIES
51 !| FLBORTRA |<->| FLUX OF TRACER AT THE BOUNDARIES
52 !| FSCEXP |-->| EXPLICIT SOURCE TERM FOR F
53 !| FXBOR |-->| FLUXES ON BOUNDARIES
54 !| FXMAT |-->| FLUXES (NON ASSEMBLED IN PARALLEL)
55 !| FXMATPAR |-->| FLUXES (ASSEMBLED IN PARALLEL)
56 !| H |-->| WATER DEPTH AT TIME N+1
57 !| HN |-->| WATER DEPTH AT TIME N
58 !| IOPT2 |-->| 0 : UCONV OBEYS CONTINUITY EQUATION
59 !| | | 1 : UCONV DOES NOT OBEY CONTINUITY EQUATION
60 !| KDDL |-->| CONVENTION FOR DEGREE OF FREEDOM
61 !| KDIR |-->| CONVENTION FOR DIRICHLET POINT
62 !| LIMTRA |-->| TECHNICAL BOUNDARY CONDITIONS FOR TRACERS
63 !| MASS_BALANCE |-->| IF YES, ALL TERMS FOR MASS BALANCE
64 !| | | WILL BE COMPUTED
65 !| MASSOU |-->| MASS ADDED BY SOURCE TERM
66 !| MESH |-->| MESH STRUCTURE
67 !| MSK |-->| IF YES, MASKING OF DRY ELEMENTS
68 !| OPTSOU |-->| TYPE OF SOURCES
69 !| | | 1: NORMAL
70 !| | | 2: DIRAC
71 !| PLUIE |-->| RAIN OR EVAPORATION IN M/S, IN BIEF_OBJ STRUCTURE
72 !| RAIN |-->| IF YES: RAIN OR EVAPORATION
73 !| SMH |-->| SOURCE TERM IN CONTINUITY EQUATION
74 !| T1 |<->| BIEF_OBJ STRUCTURE USED AS WORK ARRAY
75 !| T2 |<->| BIEF_OBJ STRUCTURE USED AS WORK ARRAY
76 !| T4 |<->| BIEF_OBJ STRUCTURE USED AS WORK ARRAY
77 !| T5 |<->| BIEF_OBJ STRUCTURE USED AS WORK ARRAY
78 !| T6 |<->| BIEF_OBJ STRUCTURE USED AS WORK ARRAY
79 !| T7 |<->| BIEF_OBJ STRUCTURE USED AS WORK ARRAY
80 !| T8 |<->| BIEF_OBJ STRUCTURE USED AS WORK ARRAY
81 !| TRAIN |-->| VALUE OF TRACER IN RAIN
82 !| UNSV2D |-->| INVERSE OF INTEGRALS OF TEST FUNCTIONS
83 !| YASMH |-->| IF YES, SMH MUST BE TAKEN INTO ACCOUNT
84 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
85 !
86  USE bief, ex_tracvf => tracvf
87 !
89  IMPLICIT NONE
90 !
91 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
92 !
93  INTEGER, INTENT(IN) :: KDIR,KDDL,OPTSOU,LIMTRA(*)
94  INTEGER, INTENT(IN) :: IOPT2
95  DOUBLE PRECISION, INTENT(IN) :: DDT,DT,TRAIN
96  DOUBLE PRECISION, INTENT(INOUT) :: MASSOU
97  TYPE(bief_obj), INTENT(INOUT) :: F,T1,T2,T4,T5,T7,T8,FLBORTRA
98  TYPE(bief_obj), INTENT(IN) :: SMH,FBOR,FSCEXP
99  TYPE(bief_obj), INTENT(IN) :: FXBOR,UNSV2D,VOLU2D,PLUIE
100  DOUBLE PRECISION, INTENT(IN) :: FXMAT(*),FXMATPAR(*)
101  TYPE(bief_mesh), INTENT(INOUT) :: MESH
102  LOGICAL, INTENT(IN) :: YASMH,MSK,RAIN,MASS_BALANCE
103 !
104 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
105 !
106 !
107 !-----------------------------------------------------------------------
108 !
109  IF(iopt2.EQ.0) THEN
110 !
111 !-----------------------------------------------------------------------
112 !
113 ! CASE WHERE THE ADVECTION FIELD SATISFIES THE CONTINUITY EQUATION
114 ! (THE DEPTH COULD BE COMPUTED BY INTERPOLATION IN TIME)
115 !
116 ! T4 WILL TAKE THE SUCCESSIVE VALUES OF F (INITIALISED IN CVTRVF)
117 !
118  CALL tvf(f%R,t4%R,t5%R,fxmat,fxmatpar,volu2d%R,unsv2d%R,ddt,
119  & fxbor%R,t7%R,t8,fbor%R,smh%R,yasmh,fscexp%R,
120  & mesh%NSEG,mesh%NPOIN,mesh%NPTFR,
121  & mesh%GLOSEG%I,mesh%GLOSEG%DIM1,
122  & mesh%NBOR%I,limtra,kdir,kddl,
123  & optsou,t5%R,iopt2,flbortra%R,ddt/dt,mesh,rain,pluie%R,
124  & train,massou,mass_balance)
125 !
126 !-----------------------------------------------------------------------
127 !
128 ! CASE WHERE THE ADVECTION FIELD DOES NOT SATISFY THE CONTINUITY EQUATION
129 !
130  ELSEIF(iopt2.EQ.1) THEN
131 !
132 ! T1 WILL TAKE THE SUCCESSIVE VALUES OF HN COMPUTED WITH CONTINUITY
133 ! T2 WILL TAKE THE SUCCESSIVE VALUES OF H COMPUTED WITH CONTINUITY
134 ! T4 WILL TAKE THE SUCCESSIVE VALUES OF F
135 ! T5 WILL TAKE THE SUCCESSIVE VALUES OF TRUE DEPTH
136 !
137 ! H2 DEPTH BY CONTINUITY EQUATION
138 !
139  CALL hvf(t2%R,t1%R,fxmat,unsv2d%R,ddt,t7%R,smh%R,
140  & yasmh,mesh%NSEG,mesh%NPOIN,mesh%NPTFR,
141  & mesh%GLOSEG%I,mesh%GLOSEG%DIM1,mesh%NBOR%I,optsou,
142  & t8,mesh,msk,rain,pluie%R)
143 !
144  CALL tvf(f%R,t4%R,t2%R,fxmat,fxmatpar,volu2d%R,unsv2d%R,ddt,
145  & fxbor%R,t7%R,t8,fbor%R,smh%R,yasmh,fscexp%R,
146  & mesh%NSEG,mesh%NPOIN,mesh%NPTFR,
147  & mesh%GLOSEG%I,mesh%GLOSEG%DIM1,
148  & mesh%NBOR%I,limtra,kdir,kddl,
149  & optsou,t5%R,iopt2,flbortra%R,ddt/dt,mesh,rain,pluie%R,
150  & train,massou,mass_balance)
151 !
152 !-----------------------------------------------------------------------
153 !
154  ELSE
155  WRITE(lu,*) 'TRACVF: UNKNOWN OPTION'
156  CALL plante(1)
157  stop
158  ENDIF
159 !
160 !-----------------------------------------------------------------------
161 !
162  RETURN
163  END
164 
subroutine mass_balance(DT, NPTFR, ENTET, NSICLA, NUMLIQ, NFRLIQ, FLBCLA, LT, NIT, NPOIN, VOLU2D, CHARR, SUSP, EVCL_MB, EVCL_MS, MASSTOT, MASS0TOT)
Definition: mass_balance.f:9
subroutine tracvf(F, FSCEXP, FXMAT, FXMATPAR, VOLU2D, UNSV2D, DDT, FXBOR, FBOR, SMH, YASMH, T1, T2, T4, T5, T7, T8, MESH, LIMTRA, KDIR, KDDL, OPTSOU, IOPT2, FLBORTRA, MSK, DT, RAIN, PLUIE, TRAIN, MASSOU, MASS_BALANCE)
Definition: tracvf.f:11
subroutine hvf(H, HN, FXMAT, UNSV2D, DT, FXBOR, SMH, YASMH, NSEG, NPOIN, NPTFR, GLOSEG, SIZGLO, NBOR, OPTSOU, T7, MESH, MSK, RAIN, PLUIE)
Definition: hvf.f:8
subroutine tvf(F, FC, H, FXMAT, FXMATPAR, VOLU2D, UNSV2D, DT, FXBOR, FXBORPAR, T7, FBOR, SMH, YASMH, FSCEXP, NSEG, NPOIN, NPTFR, GLOSEG, SIZGLO, NBOR, LIMTRA, KDIR, KDDL, OPTSOU, HLIN, IOPT2, FLBORTRA, SURNIT, MESH, RAIN, PLUIE, TRAIN, MASSOU, MASS_BALANCE)
Definition: tvf.f:11
Definition: bief.f:3