The TELEMAC-MASCARET system  trunk
tvf_imp.F
Go to the documentation of this file.
1 ! ******************
2  SUBROUTINE tvf_imp
3 ! ******************
4 !
5  &(f,fc,fxmat,fxmatpar,
6  & dt,fxbor,hnp1mt,fbor,smh,yasmh,fscexp,
7  & nseg,npoin,nptfr,gloseg,sizglo,nbor,limtra,kdir,kddl,optsou,
8  & iopt2,flbortra,surnit,mesh,sf,rain,pluie,train,tetaf,infogt,
9  & volu2d,sm,psiexp,am2,bb,slvpsi,
10  & predictor,corrector,icor,ncor,massou)
11 !
12 !***********************************************************************
13 ! BIEF V7P2
14 !***********************************************************************
15 !
16 !brief Semi-implicit distributive scheme.
17 !
18 !history J-M HERVOUET (EDF LAB, LNHE)
19 !+ 26/06/2015
20 !+ V7P1
21 !+ First version.
22 !
23 !history J-M HERVOUET (EDF LAB, LNHE)
24 !+ 01/09/2015
25 !+ V7P1
26 !+ Optimisation. Matrix simplified into a diagonal except for the last
27 !+ correction. Does not spoil mass conservation and results virtually
28 !+ unchanged.
29 !+ Jacobi solver programmed here, when GMRES or direct solver
30 !+ is not asked.
31 !
32 !history J-M HERVOUET (EDF LAB, LNHE)
33 !+ 30/06/2016
34 !+ V7P2
35 !+ Computing the global extrema for clipping the results that may be
36 !+ out of range due to truncation errors. True errors may be hidden
37 !+ but will be seen with the mass balance.
38 !
39 !history J-M HERVOUET (EDF LAB, LNHE)
40 !+ 30/06/2016
41 !+ V7P2
42 !+ Relaxing the clipping for monotony in case of rain (evaporation
43 !+ may break the monotony).
44 !
45 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46 !| DT |-->| TIME-STEP
47 !| F |<--| VALUES OF F AT TIME N+1 OF SUB-ITERATION
48 !| FBOR |-->| VALUES OF F AT THE PRESCRIBED BOUNDARIES
49 !| FC |-->| VALUES OF F AT TIME N OF SUB-ITERATION
50 !| FLBORTRA |<->| FLUX OF TRACER AT THE BOUNDARIES
51 !| FSCEXP |-->| EXPLICIT SOURCE TERM FOR F
52 !| FXBOR |-->| FLUXES ON BOUNDARIES
53 !| FXMAT |-->| FLUXES (NON ASSEMBLED IN PARALLEL)
54 !| FXMATPAR |-->| FLUXES (ASSEMBLED IN PARALLEL)
55 !| GLOSEG |-->| GLOBAL NUMBER OF THE 2 POINTS OF A SEGMENT.
56 !| ICOR |-->| CURRENT CORRECTION NUMBER
57 !| INFOGT |-->| IF YES, PRINT INFORMATION ON SOLVER
58 !| IOPT2 |-->| 0: CONSERVATIVE ADVECTION FIELD
59 !| | | 1: NON CONSERVATIVE ADVECTION FIELD
60 !| KDDL |-->| CONVENTION FOR DEGREE OF FREEDOM
61 !| KDIR |-->| CONVENTION FOR DIRICHLET POINT
62 !| LIMTRA |-->| TECHNICAL BOUNDARY CONDITIONS FOR TRACERS
63 !| MASSOU |-->| MASS ADDED BY SOURCE TERM
64 !| MESH |-->| MESH STRUCTURE
65 !| NBOR |-->| GLOBAL NUMBER OF BOUNDARY POINTS
66 !| NCOR |-->| TOTAL NUMBER OF CORRECTIONS ASKED
67 !| NPOIN |-->| NUMBER OF POINTS
68 !| NPTFR |-->| NUMBER OF BOUNDARY POINTS
69 !| NSEG |-->| NUMBER OF SEGMENTS
70 !| OPTSOU |-->| TYPE OF SOURCES
71 !| | | 1: NORMAL
72 !| | | 2: DIRAC
73 !| PLUIE |-->| RAIN OR EVAPORATION, IN M/S
74 !| RAIN |-->| IF YES: RAIN OR EVAPORATION
75 !| SF |<->| BIEF_OBJ STRUCTURE OF F
76 !| SIZGLO |-->| FIRST DIMENSION OF GLOSEG
77 !| SMH |-->| SOURCE TERM IN CONTINUITY EQUATION
78 !| SURNIT |-->| SURNIT=1/NIT
79 !| TETAF |-->| IMPLICITATION COEFFICIENT ON F
80 !| HNP1MT |-->| INTERMEDIATE DEPTH H(N+1-TETA)
81 !| TRAIN |-->| VALUE OF TRACER IN RAIN
82 !| VOLU2D |-->| INTEGRALS OF TEST FUNCTIONS, NOT ASSEMBLED IN //
83 !| YASMH |-->| IF YES, SMH MUST BE TAKEN INTO ACCOUNT
84 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
85 !
86  USE bief, ex_tvf_imp => tvf_imp
89 !
90  IMPLICIT NONE
91 !
92 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
93 !
94  INTEGER, INTENT(IN) :: NSEG,NPOIN,NPTFR,KDIR,KDDL
95  INTEGER, INTENT(IN) :: SIZGLO,OPTSOU,IOPT2
96  INTEGER, INTENT(IN) :: ICOR,NCOR
97  INTEGER, INTENT(IN) :: GLOSEG(sizglo,2)
98  INTEGER, INTENT(IN) :: NBOR(nptfr),LIMTRA(nptfr)
99  DOUBLE PRECISION, INTENT(IN) :: DT,SURNIT,TRAIN,TETAF(npoin)
100  DOUBLE PRECISION, INTENT(INOUT) :: FLBORTRA(nptfr),MASSOU
101  DOUBLE PRECISION, INTENT(INOUT) :: F(npoin)
102  DOUBLE PRECISION, INTENT(IN) :: FXBOR(nptfr)
103  DOUBLE PRECISION, INTENT(IN) :: FC(npoin)
104  DOUBLE PRECISION, INTENT(IN) :: HNP1MT(npoin)
105  DOUBLE PRECISION, INTENT(IN) :: SMH(*)
106  DOUBLE PRECISION, INTENT(IN) :: VOLU2D(npoin)
107  DOUBLE PRECISION, INTENT(IN) :: PLUIE(*),PSIEXP(npoin)
108  DOUBLE PRECISION, INTENT(IN) :: FSCEXP(*)
109  DOUBLE PRECISION, INTENT(IN) :: FBOR(nptfr)
110  DOUBLE PRECISION, INTENT(IN) :: FXMAT(nseg),FXMATPAR(nseg)
111  LOGICAL, INTENT(IN) :: YASMH,RAIN,INFOGT
112  LOGICAL, INTENT(IN) :: PREDICTOR,CORRECTOR
113  TYPE(bief_obj), INTENT(INOUT) :: SF,SM,AM2,BB
114  TYPE(bief_mesh), INTENT(INOUT) :: MESH
115  TYPE(slvcfg), INTENT(INOUT) :: SLVPSI
116 !
117 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
118 !
119  INTEGER I,N,I1,I2
120  DOUBLE PRECISION NORMR,NORMB,FMIN,FMAX
121  TYPE(bief_obj), POINTER :: BB1,SURDIAG,R
122 !
123  INTRINSIC sqrt
124 !
125 !-----------------------------------------------------------------------
126 !
127  bb1 =>bb%ADR(1)%P
128  r =>bb%ADR(2)%P
129  surdiag=>bb%ADR(3)%P
130  CALL cpstvc(sf,bb1)
131  CALL cpstvc(sf,r)
132  CALL cpstvc(sf,surdiag)
133 !
134 !-----------------------------------------------------------------------
135 !
136 ! COMPUTING GLOBAL EXTREMA, FOR CLIPPING TRUNCATION ERRORS
137 !
138  fmin=fc(1)
139  fmax=fc(1)
140  DO i=1,npoin
141  fmin=min(fmin,fc(i))
142  fmax=max(fmax,fc(i))
143  ENDDO
144  DO i=1,nptfr
145  IF(limtra(i).EQ.kdir) THEN
146  fmin=min(fmin,fbor(i))
147  fmax=max(fmax,fbor(i))
148  ENDIF
149  ENDDO
150  IF(yasmh) THEN
151  DO i=1,npoin
152  fmin=min(fmin,fscexp(i))
153  fmax=max(fmax,fscexp(i))
154  ENDDO
155  ENDIF
156  IF(rain) THEN
157  fmin=min(fmin,train)
158  fmax=max(fmax,train)
159  ENDIF
160  IF(ncsize.GT.1) THEN
161  fmin=p_min(fmin)
162  fmax=p_max(fmax)
163  ENDIF
164 !
165 !-----------------------------------------------------------------------
166 !
167  IF(predictor) THEN
168 !
169  IF(iopt2.EQ.0) THEN
170 ! CONSERVATIVE ADVECTION FIELD
171  DO i = 1,npoin
172  f(i) = fc(i)
173  ENDDO
174  ELSE
175  WRITE(lu,*) 'TVF_IMP: UNKNOWN OPTION'
176  CALL plante(1)
177  stop
178  ENDIF
179 !
180  ENDIF
181 !
182 ! BUILDING THE MATRIX AND THE RIGHT-HAND SIDE
183 ! THE MATRIX IS NOT DONE WITH A CALL MATRIX
184 ! SO ITS FEATURES HAVE TO BE HARDCODED HERE
185 !
186  am2%X%DIM1=2*nseg
187  am2%X%DIM2=1
188  am2%TYPEXT='Q'
189  am2%TYPDIA='Q'
190  am2%ELMLIN=11
191  am2%ELMCOL=11
192  CALL cpstvc(sf,am2%D)
193 !
194 ! DIAGONAL OF MATRIX
195 !
196  DO i=1,npoin
197  am2%D%R(i)=hnp1mt(i)*volu2d(i)
198  ENDDO
199 !
200 ! RIGHT HAND SIDE
201 !
202 ! TERM FROM THE DERIVATIVE IN TIME
203  IF(predictor) THEN
204  DO i=1,npoin
205  sm%R(i)=am2%D%R(i)*fc(i)
206  ENDDO
207  ELSEIF(corrector) THEN
208 ! THE PREDICTOR IS TAKEN, AT THIS LEVEL IT IS STILL F
209  DO i=1,npoin
210  sm%R(i)=am2%D%R(i)*f(i)
211  ENDDO
212  ELSE
213  WRITE(lu,*) 'TVF_IMP, CHECK ARGUMENTS PREDICTOR, CORRECTOR'
214  CALL plante(1)
215  stop
216  ENDIF
217 !
218 ! IMPLICIT BOUNDARY TERM
219 !
220  DO i=1,nptfr
221  n=nbor(i)
222  IF(limtra(i).EQ.kdir) THEN
223  am2%D%R(n)=am2%D%R(n)-dt*tetaf(n)*fxbor(i)
224  ENDIF
225  ENDDO
226 !
227 ! DIAGONAL AND OFF-DIAGONAL TERMS
228 !
229  IF(icor.LT.ncor) THEN
230 ! SYSTEM SIMPLIFIED, MASS SPOILED, BUT IT WILL BE CORRECTED AFTER
231 ! BY THE LAST CORRECTION
232 ! HERE EXTRA-DIAGONAL TERMS NOT BUILT
233  DO i=1,nseg
234  i1=gloseg(i,1)
235  i2=gloseg(i,2)
236  IF(fxmatpar(i).LT.0.d0) THEN
237  am2%D%R(i1) = am2%D%R(i1) - dt*tetaf(i1)*fxmat(i)
238  ELSE
239  am2%D%R(i2) = am2%D%R(i2) + dt*tetaf(i2)*fxmat(i)
240  ENDIF
241  ENDDO
242  ELSE
243 ! NO SIMPLIFICATION, REAL MATRIX
244  DO i=1,nseg
245  i1=gloseg(i,1)
246  i2=gloseg(i,2)
247  IF(fxmatpar(i).LT.0.d0) THEN
248  am2%D%R(i1) = am2%D%R(i1) - dt*tetaf(i1)*fxmat(i)
249  am2%X%R(i)=dt*tetaf(i2)*fxmat(i)
250  am2%X%R(i+nseg)=0.d0
251  ELSE
252  am2%D%R(i2) = am2%D%R(i2) + dt*tetaf(i2)*fxmat(i)
253  am2%X%R(i)=0.d0
254  am2%X%R(i+nseg)=-dt*tetaf(i1)*fxmat(i)
255  ENDIF
256  ENDDO
257 !
258  ENDIF
259 !
260 ! SOURCES IN CONTINUITY EQUATION (SMH)
261 !
262  IF(yasmh) THEN
263  IF(optsou.EQ.1) THEN
264 ! SEE DIFSOU, FSCEXP CONTAINS THE VALUE OF THE TRACER AT THE SOURCE
265  DO i=1,npoin
266  am2%D%R(i)=am2%D%R(i)
267  & +dt*tetaf(i)*volu2d(i)*max(smh(i),0.d0)
268  sm%R(i)=sm%R(i)+(fscexp(i)-(1.d0-tetaf(i))*fc(i))
269  & *volu2d(i)*dt*max(smh(i),0.d0)
270  ENDDO
271  ELSEIF(optsou.EQ.2) THEN
272  DO i=1,npoin
273  am2%D%R(i)=am2%D%R(i)+dt*tetaf(i)*max(smh(i),0.d0)
274  sm%R(i)=sm%R(i)+(fscexp(i)-(1.d0-tetaf(i))*fc(i))
275  & *dt*max(smh(i),0.d0)
276  ENDDO
277  ENDIF
278  ENDIF
279 !
280 ! TERMES BII * CIN ET BIJ * CJN
281 !
282 ! ASSEMBLED CONTRIBUTION, DONE BY FLUX_EF_VF_3, POSSIBLY
283 ! WITH DERIVATIVE IN TIME.
284  DO i=1,npoin
285  sm%R(i)=sm%R(i)-dt*psiexp(i)
286  ENDDO
287 !
288 ! ADD FLUX ON BOUNDARY AND OTHER TERMS
289 !
290  DO i=1,nptfr
291  IF(limtra(i).EQ.kdir) THEN
292  n=nbor(i)
293  sm%R(n)=sm%R(n)+dt*fxbor(i)*((1.d0-tetaf(n))*fc(n)-fbor(i))
294  ENDIF
295  ENDDO
296 !
297 ! RAIN-EVAPORATION
298 !
299  IF(rain) THEN
300  DO i=1,npoin
301  IF(pluie(i).GT.0.d0) THEN
302 ! REAL RAIN, VALUE IN RAIN CONSIDERED...
303  sm%R(i)=sm%R(i)+dt*volu2d(i)*pluie(i)
304  & *(train-(1.d0-tetaf(i))*fc(i))
305  ELSE
306 ! EVAPORATION, VALUE IN RAIN NOT CONSIDERED...
307  sm%R(i)=sm%R(i)+dt*volu2d(i)*pluie(i)
308  & *( -(1.d0-tetaf(i))*fc(i))
309  ENDIF
310  am2%D%R(i)=am2%D%R(i)+dt*tetaf(i)*volu2d(i)*pluie(i)
311  ENDDO
312  ENDIF
313 !
314 ! TIDAL FLATS
315 !
316  CALL os('X=Y ',x=bb1,y=am2%D)
317  IF(ncsize.GT.1) CALL parcom(bb1,2,mesh)
318  DO i=1,npoin
319 ! SEE PRECD1 EPSILON HERE MUST BE GREATER THAN 1.D-20, OR PRECD1 WILL
320 ! DO THE CLIPPING ITSELF, IN A LESS CONSISTANT WAY
321 ! THE TEST MUST BE DONE ON THE ASSEMBLED DIAGONAL
322  IF(bb1%R(i).LT.1.d-15) THEN
323 ! VOLU2D IS A NON ASSEMBLED COEFFICIENT, ANY SUCH COEFFICIENT WOULD WORK...
324 ! DRY POINT THAT RECEIVES NO WATER, F=FC IS GIVEN AS EQUATION
325  am2%D%R(i)=volu2d(i)
326  sm%R(i) =volu2d(i)*fc(i)
327  ENDIF
328  ENDDO
329 !
330 ! SOLVING THE FINAL LINEAR SYSTEM
331 !
332  IF(icor.LT.ncor) THEN
333 ! HERE ONE ITERATION OF JACOBI, OFF-DIAGONAL TERMS BUILT ON THE SPOT
334  DO i=1,nseg
335  i1=gloseg(i,1)
336  i2=gloseg(i,2)
337  IF(fxmatpar(i).LT.0.d0) THEN
338  sm%R(i1)=sm%R(i1)-dt*tetaf(i2)*fxmat(i)*f(i2)
339  ELSE
340  sm%R(i2)=sm%R(i2)+dt*tetaf(i1)*fxmat(i)*f(i1)
341  ENDIF
342  ENDDO
343  IF(ncsize.GT.1) THEN
344  CALL parcom(am2%D,2,mesh)
345  CALL parcom(sm,2,mesh)
346  ENDIF
347  DO i=1,npoin
348  f(i)=sm%R(i)/am2%D%R(i)
349  ENDDO
350  ELSE
351  IF(slvpsi%SLV.EQ.7.OR.slvpsi%SLV.EQ.8) THEN
352 #if defined COMPAD
353  CALL ad_solve(sf,am2,sm,bb,slvpsi,infogt,mesh,am2)
354 #else
355  CALL solve(sf,am2,sm,bb,slvpsi,infogt,mesh,am2)
356 #endif
357  ELSE
358 ! IF NOT GMRES OR DIRECT, JACOBI SOLUTION
359  n=0
360  CALL os('X=Y ',x=bb1,y=sm)
361  CALL os('X=Y ',x=surdiag,y=am2%D)
362  IF(ncsize.GT.1) THEN
363  CALL parcom(surdiag,2,mesh)
364  CALL parcom(bb1,2,mesh)
365  ENDIF
366  CALL os('X=1/Y ',x=surdiag,y=surdiag)
367  normb=sqrt(p_dots(bb1,bb1,mesh))
368 100 CONTINUE
369  n=n+1
370 ! ONE ITERATION OF JACOBI
371  CALL os('X=Y ',x=bb1,y=sm)
372  DO i=1,nseg
373  i1=gloseg(i,1)
374  i2=gloseg(i,2)
375  IF(fxmatpar(i).LT.0.d0) THEN
376  bb1%R(i1)=bb1%R(i1)-am2%X%R(i )*f(i2)
377  ELSE
378  bb1%R(i2)=bb1%R(i2)-am2%X%R(i+nseg)*f(i1)
379  ENDIF
380  ENDDO
381  IF(ncsize.GT.1) CALL parcom(bb1,2,mesh)
382 ! NEW SOLUTION IN BB1
383  DO i=1,npoin
384  bb1%R(i)=bb1%R(i)*surdiag%R(i)
385  ENDDO
386 ! END OF ONE ITERATION, COMPUTING THE RESIDUAL
387 ! AX-B = (A%D+A%X)X-B = A%X*(NEW F - OLD F)
388  CALL os('X=0 ',x=r)
389  DO i=1,nseg
390  i1=gloseg(i,1)
391  i2=gloseg(i,2)
392  IF(fxmatpar(i).LT.0.d0) THEN
393  r%R(i1)=r%R(i1)-am2%X%R(i )*(f(i2)-bb1%R(i2))
394  ELSE
395  r%R(i2)=r%R(i2)-am2%X%R(i+nseg)*(f(i1)-bb1%R(i1))
396  ENDIF
397  ENDDO
398  IF(ncsize.GT.1) CALL parcom(r,2,mesh)
399  normr=sqrt(p_dots(r,r,mesh))
400 ! COPY OF NEW SOLUTION ON F, WITH CLIPPING WITH GLOBAL EXTREMA
401 ! TO COPE WITH TRUNCATION ERRORS. IF CLIPPING TRUE ERRORS IT
402 ! WILL DO MASS ERRORS
403  IF(rain) THEN
404 ! NO CLIPPING HERE SINCE EVAPORATION MAY BREAK MONOTONY
405  DO i=1,npoin
406  f(i)=bb1%R(i)
407  ENDDO
408  ELSE
409  DO i=1,npoin
410  f(i)=max(min(bb1%R(i),fmax),fmin)
411  ENDDO
412  ENDIF
413  IF(n.LT.slvpsi%NITMAX.AND.normr.GT.slvpsi%EPS*normb) THEN
414  GO TO 100
415  ENDIF
416 ! DONE !
417  IF(infogt) THEN
418  IF(normr.GT.slvpsi%EPS*normb) THEN
419  IF(normb.GT.1.d0) THEN
420  WRITE(lu,*)
421  & 'JACOBI: MAXIMUM ITERATIONS REACHED ',n,
422  & ' ITERATIONS, RELATIVE PRECISION = ',normr/normb
423  ELSE
424  WRITE(lu,*)
425  & 'JACOBI: MAXIMUM ITERATIONS REACHED ',n,
426  & ' ITERATIONS, ABSOLUTE PRECISION = ',normr
427  ENDIF
428  ELSE
429  IF(normb.GT.1.d0) THEN
430  WRITE(lu,*) 'JACOBI:',n,
431  & ' ITERATIONS, RELATIVE PRECISION = ',normr/normb
432  ELSE
433  WRITE(lu,*) 'JACOBI:',n,
434  & ' ITERATIONS, ABSOLUTE PRECISION = ',normr
435  ENDIF
436  ENDIF
437  ENDIF
438  ENDIF
439  ENDIF
440 !
441 ! ON EXITS, EXITING FLUX DEPENDS ON F AND FN AT EVERY SUB-TIME
442 ! STEP, SO IT MUST BE COMPUTED AT THIS LEVEL.
443 ! THE CASE KDIR IS TREATED IN CVTRVF
444 !
445 ! FLUX AND ADDED MASS FOR MASS BALANCE
446 !
447  IF(icor.EQ.ncor) THEN
448 ! BOUNDARIES
449  DO i=1,nptfr
450  IF(limtra(i).EQ.kdir) THEN
451  flbortra(i)=flbortra(i)+fxbor(i)*fbor(i)*surnit
452  ELSEIF(limtra(i).EQ.kddl) THEN
453  n=nbor(i)
454  flbortra(i)=flbortra(i)
455  & +fxbor(i)*(tetaf(n)*f(n)+(1.d0-tetaf(n))*fc(n))*surnit
456  ENDIF
457  ENDDO
458 ! SOURCES
459  IF(yasmh) THEN
460 ! FOR MASS BALANCE
461  IF(optsou.EQ.1) THEN
462  DO i=1,mesh%NPOIN
463  IF(smh(i).GE.0.d0) THEN
464  massou=massou+volu2d(i)*fscexp(i)*dt*smh(i)
465  ELSE
466  massou=massou+volu2d(i)*
467  & (tetaf(i)*f(i)+(1.d0-tetaf(i))*fc(i))*dt*smh(i)
468  ENDIF
469  ENDDO
470  ELSEIF(optsou.EQ.2) THEN
471  DO i=1,mesh%NPOIN
472  IF(smh(i).GE.0.d0) THEN
473  massou=massou+fscexp(i)*dt*smh(i)
474  ELSE
475  massou=massou+
476  & (tetaf(i)*f(i)+(1.d0-tetaf(i))*fc(i))*dt*smh(i)
477  ENDIF
478  ENDDO
479  ENDIF
480  ENDIF
481 ! RAIN
482 ! DONE IN BILANT FOR ALL SCHEMES
483  ENDIF
484 !
485 !-----------------------------------------------------------------------
486 !
487  RETURN
488  END
489 
subroutine ad_solve(X, A, B, TB, CFG, INFOGR, MESH, AUX)
Definition: ad_solve.F:33
subroutine solve(X, A, B, TB, CFG, INFOGR, MESH, AUX)
Definition: solve.f:7
subroutine tvf_imp(F, FC, FXMAT, FXMATPAR, DT, FXBOR, HNP1MT, FBOR, SMH, YASMH, FSCEXP, NSEG, NPOIN, NPTFR, GLOSEG, SIZGLO, NBOR, LIMTRA, KDIR, KDDL, OPTSOU, IOPT2, FLBORTRA, SURNIT, MESH, SF, RAIN, PLUIE, TRAIN, TETAF, INFOGT, VOLU2D, SM, PSIEXP, AM2, BB, SLVPSI, PREDICTOR, CORRECTOR, ICOR, NCOR, MASSOU)
Definition: tvf_imp.F:12
subroutine cpstvc(X, Y)
Definition: cpstvc.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
double precision function p_dots(X, Y, MESH)
Definition: p_dots.f:7
Definition: bief.f:3