The TELEMAC-MASCARET system  trunk
bief.f
Go to the documentation of this file.
1 ! ***********
2  MODULE bief
3 ! ***********
4 !
5 !
6 !***********************************************************************
7 ! BIEF VERSION 7.3
8 !***********************************************************************
9 !
10 !brief INTERFACES OF BIEF PUBLIC SUBROUTINES
11 !+
12 !
13 !history J-M HERVOUET (EDF R&D, LNHE)
14 !+ 26/12/2013
15 !+ V7P0
16 !+ All interfaces reactivated. Some were commented to overcome a bug
17 !+ of HP compiler on Linux.
18 !history R.NHEILI (Univerte de Perpignan, DALI)
19 !+ 24/02/2016
20 !+ V7P3
21 !+ ADD INTERFACES
22 !
23 !history A. JOLY (EDF LAB, LNHE)
24 !+ 27/08/2015
25 !+ V7P1
26 !+ Adding vc05aa.
27 !
28 !history J-M HERVOUET (EDF LAB, LNHE)
29 !+ 22/03/2016
30 !+ V7P2
31 !+ All interfaces reactivated. Some were commented to overcome a bug
32 !+ of HP compiler on Linux.
33 !
34 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
35 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
36 !
37  USE bief_def
38  INTERFACE
39 !
40 !------------------------------------------------------------------------
41 !
42 ! DEFINITION OF INTERFACES
43 !
44  SUBROUTINE addblo( BLOC , OBJ )
47  IMPLICIT NONE
48  TYPE(bief_obj), INTENT(INOUT) :: BLOC
49  TYPE(bief_obj), INTENT(IN), TARGET :: OBJ
50  END SUBROUTINE
51 !
52  SUBROUTINE addtracer
53  & (nametrac,mtrac,itrac,add,name1,name2,unit0)
54  INTEGER, INTENT(INOUT):: MTRAC,ITRAC
55  CHARACTER(LEN=32), INTENT(INOUT):: NAMETRAC(*)
56  CHARACTER(LEN=16), INTENT(IN) :: NAME1,NAME2,UNIT0
57  LOGICAL, INTENT(IN) :: ADD
58  END SUBROUTINE
59 !
60  SUBROUTINE allblo( BLO , NOM )
63  IMPLICIT NONE
64  CHARACTER(LEN=6), INTENT(IN) :: NOM
65  TYPE(bief_obj), INTENT(INOUT) :: BLO
66  END SUBROUTINE
67 !
68  SUBROUTINE allblo_in_block( BLO , N , NOMGEN )
71  IMPLICIT NONE
72  TYPE(bief_obj), INTENT(INOUT) :: BLO
73  INTEGER, INTENT(IN) :: N
74  CHARACTER(LEN=6), INTENT(IN) :: NOMGEN
75  END SUBROUTINE
76 !
77  SUBROUTINE bief_allmat(MAT,NOM,IELM1,IELM2,CFG,
78  & TYPDIA,TYPEXT,MESH)
81  IMPLICIT NONE
82  TYPE(bief_obj), INTENT(INOUT) :: MAT
83  INTEGER, INTENT(IN) :: IELM1,IELM2,CFG(2)
84  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
85  CHARACTER(LEN=6), INTENT(IN) :: NOM
86  TYPE(bief_mesh) , INTENT(IN) :: MESH
87  END SUBROUTINE
88 !
89  SUBROUTINE bief_deallobj(OBJ)
92  IMPLICIT NONE
93  TYPE(bief_obj), INTENT(INOUT) :: OBJ
94  END SUBROUTINE
95 !
96  SUBROUTINE bief_deallspec(SPEC,NSPE)
98  IMPLICIT NONE
99  TYPE(spectrum), INTENT(INOUT) :: SPEC
100  INTEGER NSPE
101  END SUBROUTINE
102 !
103  SUBROUTINE bief_allvec(NAT,VEC,NOM,IELM,DIM2,STATUT,MESH)
106  IMPLICIT NONE
107  TYPE(bief_obj) , INTENT(INOUT) :: VEC
108  INTEGER , INTENT(IN) :: NAT,IELM
109  INTEGER , INTENT(IN) :: DIM2,STATUT
110  CHARACTER(LEN=6) , INTENT(IN) :: NOM
111  TYPE(bief_mesh) , INTENT(IN) :: MESH
112  END SUBROUTINE
113 !
114  SUBROUTINE deall_bief()
115 !
117  IMPLICIT NONE
118  END SUBROUTINE
119 
120  SUBROUTINE bief_allvec_in_block(BLO,N,NAT,NOMGEN,IELM,
121  & NDIM,STATUT,MESH)
124  IMPLICIT NONE
125  TYPE(bief_obj), INTENT(INOUT) :: BLO
126  INTEGER, INTENT(IN) :: N,NAT,IELM,NDIM,STATUT
127  CHARACTER(LEN=6), INTENT(IN) :: NOMGEN
128  TYPE(bief_mesh) , INTENT(IN) :: MESH
129  END SUBROUTINE
130 !
131  SUBROUTINE almesh
132  & (mesh,nom,ielm,spheri,cfg,fformat,nfic,equa,refine,nplan,npmax,
133  & nptfrx,nelmax,projection,lati0,longi0,convergence,rlevel)
136  IMPLICIT NONE
137  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
138  INTEGER , INTENT(IN) :: IELM
139  CHARACTER(LEN=8) , INTENT(IN) :: FFORMAT
140  INTEGER , INTENT(IN) :: NFIC
141  LOGICAL , INTENT(IN) :: SPHERI
142  CHARACTER(LEN=6) , INTENT(IN) :: NOM
143  CHARACTER(LEN=20), INTENT(IN) :: EQUA
144  INTEGER , INTENT(INOUT) :: CFG(2)
145  INTEGER , INTENT(IN) :: REFINE
146  INTEGER , INTENT(IN), OPTIONAL :: NPLAN
147  INTEGER , INTENT(IN), OPTIONAL :: NPMAX,RLEVEL
148  INTEGER , INTENT(IN), OPTIONAL :: NPTFRX
149  INTEGER , INTENT(IN), OPTIONAL :: NELMAX
150  INTEGER , INTENT(IN), OPTIONAL :: PROJECTION
151  DOUBLE PRECISION , INTENT(IN), OPTIONAL :: LATI0,LONGI0
152  LOGICAL , INTENT(IN), OPTIONAL :: CONVERGENCE
153  END SUBROUTINE
154 !
155  DOUBLE PRECISION FUNCTION anti_dirac( X,EPS )
156  IMPLICIT NONE
157  DOUBLE PRECISION, INTENT(IN) :: X,EPS
158  END FUNCTION
159 !
160  SUBROUTINE dealmesh (MESH)
163  IMPLICIT NONE
164  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
165  END SUBROUTINE
166 !
167  SUBROUTINE as3_1111_q
168  & (xm,nseg1,xmt,dim1xmt,dim2xmt,nelmax,nelem,stoxmt,
169  & eltseg1,eltseg2,eltseg3,oriseg1,oriseg2,oriseg3)
171  IMPLICIT NONE
172  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG1
173  INTEGER , INTENT(IN) :: DIM1XMT,DIM2XMT,STOXMT
174  INTEGER , INTENT(IN) :: ELTSEG1(nelmax)
175  INTEGER , INTENT(IN) :: ELTSEG2(nelmax)
176  INTEGER , INTENT(IN) :: ELTSEG3(nelmax)
177  INTEGER , INTENT(IN) :: ORISEG1(nelmax)
178  INTEGER , INTENT(IN) :: ORISEG2(nelmax)
179  INTEGER , INTENT(IN) :: ORISEG3(nelmax)
180  DOUBLE PRECISION, INTENT(INOUT) :: XMT(dim1xmt,dim2xmt)
181  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg1,2)
182  END SUBROUTINE
183 !
184  SUBROUTINE as3_1111_s
185  & (xm,nseg1,xmt,nelmax,nelem,eltseg1,eltseg2,eltseg3)
187  IMPLICIT NONE
188  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG1
189  INTEGER , INTENT(IN) :: ELTSEG1(nelmax)
190  INTEGER , INTENT(IN) :: ELTSEG2(nelmax)
191  INTEGER , INTENT(IN) :: ELTSEG3(nelmax)
192  DOUBLE PRECISION, INTENT(INOUT) :: XMT(nelmax,*)
193  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg1)
194  END SUBROUTINE
195 !
196  SUBROUTINE as3_1112
197  & (xm,nseg11,nseg12,xmt,nelmax,nelem,eltseg1,eltseg2,eltseg3,
198  & eltseg4,eltseg5,eltseg6,
199  & oriseg1,oriseg2,oriseg3)
201  IMPLICIT NONE
202  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG11,NSEG12
203  INTEGER , INTENT(IN) :: ELTSEG1(nelmax)
204  INTEGER , INTENT(IN) :: ELTSEG2(nelmax)
205  INTEGER , INTENT(IN) :: ELTSEG3(nelmax)
206  INTEGER , INTENT(IN) :: ELTSEG4(nelmax)
207  INTEGER , INTENT(IN) :: ELTSEG5(nelmax)
208  INTEGER , INTENT(IN) :: ELTSEG6(nelmax)
209  INTEGER , INTENT(IN) :: ORISEG1(nelmax)
210  INTEGER , INTENT(IN) :: ORISEG2(nelmax)
211  INTEGER , INTENT(IN) :: ORISEG3(nelmax)
212  DOUBLE PRECISION, INTENT(IN) :: XMT(nelmax,*)
213  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg11+nseg12)
214  END SUBROUTINE
215 !
216  SUBROUTINE as3_1211
217  & (xm,nseg11,nseg12,xmt,nelmax,nelem,eltseg1,eltseg2,eltseg3,
218  & eltseg4,eltseg5,eltseg6,
219  & oriseg1,oriseg2,oriseg3)
221  IMPLICIT NONE
222  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG11,NSEG12
223  INTEGER , INTENT(IN) :: ELTSEG1(nelmax)
224  INTEGER , INTENT(IN) :: ELTSEG2(nelmax)
225  INTEGER , INTENT(IN) :: ELTSEG3(nelmax)
226  INTEGER , INTENT(IN) :: ELTSEG4(nelmax)
227  INTEGER , INTENT(IN) :: ELTSEG5(nelmax)
228  INTEGER , INTENT(IN) :: ELTSEG6(nelmax)
229  INTEGER , INTENT(IN) :: ORISEG1(nelmax)
230  INTEGER , INTENT(IN) :: ORISEG2(nelmax)
231  INTEGER , INTENT(IN) :: ORISEG3(nelmax)
232  DOUBLE PRECISION, INTENT(IN) :: XMT(nelmax,*)
233  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg11+nseg12)
234  END SUBROUTINE
235 !
236  SUBROUTINE as3_1212_q
237  & (xm,nseg11,nseg12,xmt,nelmax,nelem,eltseg1,eltseg2,eltseg3,
238  & eltseg4,eltseg5,eltseg6,
239  & oriseg1,oriseg2,oriseg3)
241  IMPLICIT NONE
242  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG11,NSEG12
243  INTEGER , INTENT(IN) :: ELTSEG1(nelmax)
244  INTEGER , INTENT(IN) :: ELTSEG2(nelmax)
245  INTEGER , INTENT(IN) :: ELTSEG3(nelmax)
246  INTEGER , INTENT(IN) :: ELTSEG4(nelmax)
247  INTEGER , INTENT(IN) :: ELTSEG5(nelmax)
248  INTEGER , INTENT(IN) :: ELTSEG6(nelmax)
249  INTEGER , INTENT(IN) :: ORISEG1(nelmax)
250  INTEGER , INTENT(IN) :: ORISEG2(nelmax)
251  INTEGER , INTENT(IN) :: ORISEG3(nelmax)
252  DOUBLE PRECISION, INTENT(IN) :: XMT(nelmax,*)
253  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg12*2)
254  END SUBROUTINE
255 !
256  SUBROUTINE as3_1212_s
257  & (xm,nseg11,nseg12,xmt,nelmax,nelem,eltseg1,eltseg2,eltseg3,
258  & eltseg4,eltseg5,eltseg6)
260  IMPLICIT NONE
261  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG11,NSEG12
262  INTEGER , INTENT(IN) :: ELTSEG1(nelmax)
263  INTEGER , INTENT(IN) :: ELTSEG2(nelmax)
264  INTEGER , INTENT(IN) :: ELTSEG3(nelmax)
265  INTEGER , INTENT(IN) :: ELTSEG4(nelmax)
266  INTEGER , INTENT(IN) :: ELTSEG5(nelmax)
267  INTEGER , INTENT(IN) :: ELTSEG6(nelmax)
268  DOUBLE PRECISION, INTENT(INOUT) :: XMT(nelmax,*)
269  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg12)
270  END SUBROUTINE
271 !
272  SUBROUTINE as3_4141_q
273  & (xm,nseg1,xmt,dim1xmt,dim2xmt,stoxmt,
274  & nelmax,nelem,eltseg,oriseg)
276  IMPLICIT NONE
277  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG1
278  INTEGER , INTENT(IN) :: DIM1XMT,DIM2XMT,STOXMT
279  INTEGER , INTENT(IN) :: ELTSEG(nelmax,15)
280  INTEGER , INTENT(IN) :: ORISEG(nelmax,15)
281  DOUBLE PRECISION, INTENT(IN) :: XMT(dim1xmt,dim2xmt)
282  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg1,2)
283  END SUBROUTINE
284 !
285  SUBROUTINE as3_4141_s
286  & (xm,nseg1,xmt,dim1xmt,dim2xmt,stoxmt,nelmax,nelem,eltseg)
288  IMPLICIT NONE
289  INTEGER , INTENT(IN) :: NELMAX,NELEM,NSEG1
290  INTEGER , INTENT(IN) :: DIM1XMT,DIM2XMT,STOXMT
291  INTEGER , INTENT(IN) :: ELTSEG(nelmax,15)
292  DOUBLE PRECISION, INTENT(IN) :: XMT(dim1xmt,dim2xmt)
293  DOUBLE PRECISION, INTENT(INOUT) :: XM(nseg1)
294  END SUBROUTINE
295 !
296  SUBROUTINE asmve1(X, IKLE,W, NPOIN,NELEM,NELMAX,LV)
298  IMPLICIT NONE
299  INTEGER , INTENT(IN) :: NELEM,NELMAX,NPOIN,LV
300  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
301  INTEGER , INTENT(IN) :: IKLE(nelmax)
302  DOUBLE PRECISION, INTENT(IN) :: W(nelmax)
303  END SUBROUTINE
304 !
305  SUBROUTINE asmvec(X, IKLE,NPOIN,NELEM,NELMAX,NDP,W,INIT,LV)
308  IMPLICIT NONE
309  INTEGER , INTENT(IN) ::NELMAX,NPOIN,NELEM,NDP,LV
310  DOUBLE PRECISION, INTENT(INOUT)::X(npoin)
311  INTEGER , INTENT(IN) ::IKLE(nelmax,ndp)
312  DOUBLE PRECISION, INTENT(IN) ::W(nelmax,ndp)
313  LOGICAL , INTENT(IN) ::INIT
314  END SUBROUTINE
315 !
316  SUBROUTINE assex3
317  & (xm,sto,name,ielm1,ielm2,typext,xmt,dim1xmt,dim2xmt,stoxmt,
318  & mesh,nelmax,eltseg,oriseg)
321  IMPLICIT NONE
322  INTEGER , INTENT(INOUT) :: STO
323  CHARACTER(LEN=6), INTENT(IN) :: NAME
324  INTEGER , INTENT(IN) :: IELM1,IELM2,NELMAX
325  INTEGER , INTENT(IN) :: DIM1XMT,DIM2XMT,STOXMT
326  INTEGER , INTENT(IN) :: ELTSEG(nelmax,*)
327  INTEGER , INTENT(IN) :: ORISEG(nelmax,3)
328  CHARACTER(LEN=1), INTENT(IN) :: TYPEXT
329  DOUBLE PRECISION, INTENT(INOUT) :: XMT(dim1xmt,dim2xmt)
330  DOUBLE PRECISION, INTENT(INOUT) :: XM(*)
331  TYPE(bief_mesh) , INTENT(IN) :: MESH
332  END SUBROUTINE
333 !
334  SUBROUTINE assve1(X, IKLE,W, NELEM,NELMAX,LV,MSK,MASKEL)
336  IMPLICIT NONE
337  DOUBLE PRECISION, INTENT(INOUT)::X(*)
338  INTEGER , INTENT(IN) ::NELEM,NELMAX,LV
339  INTEGER , INTENT(IN) ::IKLE(nelmax)
340  DOUBLE PRECISION, INTENT(IN) ::W(nelmax),MASKEL(*)
341  LOGICAL , INTENT(IN) ::MSK
342  END SUBROUTINE
343 !
344  SUBROUTINE assve1i8(IX, IKLE,IW,NELEM)
346  IMPLICIT NONE
347  INTEGER(KIND=K8), INTENT(INOUT) :: IX(*)
348  INTEGER , INTENT(IN) :: NELEM
349  INTEGER , INTENT(IN) :: IKLE(nelem)
350  INTEGER(KIND=K8), INTENT(IN) :: IW(nelem)
351  END SUBROUTINE
352 !
353  SUBROUTINE twosum(A,B,X,Y)
354  DOUBLE PRECISION, INTENT(IN) :: A,B
355  DOUBLE PRECISION, INTENT(OUT) :: X,Y
356  END SUBROUTINE
357 !
358  SUBROUTINE twoprod(A,B,X,Y)
359  DOUBLE PRECISION, INTENT(IN) :: A,B
360  DOUBLE PRECISION, INTENT(OUT) :: X,Y
361  END SUBROUTINE
362 !
363  SUBROUTINE sumk(N,K,P,RES)
364  DOUBLE PRECISION, INTENT(INOUT) :: P(n)
365  INTEGER, INTENT(IN) :: K,N
366  DOUBLE PRECISION, INTENT(OUT) :: RES
367  END SUBROUTINE
368 !
369  SUBROUTINE assvec(X, IKLE,NPOIN,NELEM,
370  & NELMAX,W,INIT,LV,MSK,MASKEL,NDP,ERRX)
373  IMPLICIT NONE
374  DOUBLE PRECISION, INTENT(INOUT)::X(*)
375  INTEGER , INTENT(IN) ::NELEM,NELMAX,NPOIN,LV
376  INTEGER , INTENT(IN) ::NDP
377  INTEGER , INTENT(IN) ::IKLE(nelmax,*)
378  DOUBLE PRECISION, INTENT(IN) ::W(nelmax,*),MASKEL(*)
379  LOGICAL , INTENT(IN) ::INIT,MSK
380  DOUBLE PRECISION,OPTIONAL, INTENT(INOUT) :: ERRX(*)
381  END SUBROUTINE
382 !
383  SUBROUTINE attend(ISEC)
385  IMPLICIT NONE
386  INTEGER, INTENT(IN) :: ISEC
387  END SUBROUTINE
388 !
389  SUBROUTINE bief_close_files(FILES,NFILES,PEXIT)
392  IMPLICIT NONE
393  INTEGER , INTENT(IN) :: NFILES
394  LOGICAL, INTENT(IN) :: PEXIT
395  TYPE(bief_file) , INTENT(INOUT) :: FILES(nfiles)
396  END SUBROUTINE
397 !
398  SUBROUTINE bief_init(CHAINE,NCAR,PINIT)
400  IMPLICIT NONE
401  LOGICAL, INTENT(IN) :: PINIT
402  CHARACTER(LEN=PATH_LEN), INTENT(INOUT) :: CHAINE
403  INTEGER, INTENT(INOUT) :: NCAR
404  END SUBROUTINE
405 !
406  SUBROUTINE read_dataset
407  & (fformat,fid,varsor,npoin,record,at,var_list,trouve,
408  & alire,listin,lastrecord,maxvar)
411  IMPLICIT NONE
412  TYPE(bief_obj), INTENT(INOUT) :: VARSOR
413  INTEGER, INTENT(IN) :: MAXVAR
414  INTEGER, INTENT(INOUT) :: RECORD
415  INTEGER, INTENT(IN) :: FID,NPOIN
416  INTEGER, INTENT(INOUT) :: TROUVE(maxvar)
417  INTEGER, INTENT(IN) :: ALIRE(maxvar)
418  CHARACTER(LEN=8), INTENT(IN) :: FFORMAT
419  CHARACTER(LEN=32), INTENT(IN) :: VAR_LIST(maxvar)
420  DOUBLE PRECISION, INTENT(INOUT) :: AT
421  LOGICAL, INTENT(IN) :: LISTIN,LASTRECORD
422  END SUBROUTINE
423 !
424  DOUBLE PRECISION FUNCTION bief_sum( X )
427  IMPLICIT NONE
428  TYPE(bief_obj), INTENT(IN) :: X
429  END FUNCTION
430 !
431  SUBROUTINE bilant
432  & (h,work2,work3,dt,lt,nit,info,
433  & t,agglot,massou,mastr0,mastr2,masten,mastou,msk,maskel,mesh,
434  & numliq,nfrliq,nptfr,nametrac,flbortra,mass_rain,train,
435  & mastrain)
438  IMPLICIT NONE
439  INTEGER, INTENT(IN) :: LT,NIT,NFRLIQ,NPTFR
440  INTEGER, INTENT(IN) :: NUMLIQ(nptfr)
441  DOUBLE PRECISION, INTENT(IN) :: DT,MASSOU,AGGLOT,MASS_RAIN,
442  & train
443  DOUBLE PRECISION, INTENT(INOUT):: MASTRAIN
444  LOGICAL, INTENT(IN) :: INFO,MSK
445  TYPE(bief_obj), INTENT(INOUT) :: WORK2,WORK3
446  TYPE(bief_obj), INTENT(IN) :: H,T,MASKEL
447  TYPE(bief_obj), INTENT(IN) :: FLBORTRA
448  TYPE(bief_mesh), INTENT(INOUT) :: MESH
449  DOUBLE PRECISION, INTENT(INOUT):: MASTR0,MASTR2,MASTEN,MASTOU
450  CHARACTER(LEN=32), INTENT(IN) :: NAMETRAC
451  END SUBROUTINE
452 !
453  SUBROUTINE cflp11(U,V,X,Y,IKLE,NELEM,NELMAX,W1)
455  IMPLICIT NONE
456  INTEGER , INTENT(IN) :: NELEM,NELMAX
457  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
458  DOUBLE PRECISION, INTENT(IN) :: X(nelmax,*),Y(nelmax,*)
459  INTEGER , INTENT(IN) :: IKLE(nelmax,*)
460  DOUBLE PRECISION, INTENT(INOUT) :: W1(nelmax,*)
461  END SUBROUTINE
462 !
463  SUBROUTINE cflp12(U,V,X,Y,IKLE,NELEM,NELMAX,W1)
465  IMPLICIT NONE
466  INTEGER , INTENT(IN) :: NELEM,NELMAX
467  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
468  DOUBLE PRECISION, INTENT(IN) :: X(nelmax,*),Y(nelmax,*)
469  INTEGER , INTENT(IN) :: IKLE(nelmax,*)
470  DOUBLE PRECISION, INTENT(INOUT) :: W1(nelmax,*)
471  END SUBROUTINE
472 !
473  SUBROUTINE cflpsi(SYGMA,U,V,DT,IELM,MESH,MSK,MASKEL)
476  IMPLICIT NONE
477  INTEGER , INTENT(IN) :: IELM
478  DOUBLE PRECISION, INTENT(IN) :: DT
479  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
480  TYPE(bief_obj) , INTENT(INOUT) :: SYGMA
481  TYPE(bief_obj) , INTENT(IN) :: U,V,MASKEL
482  LOGICAL , INTENT(IN) :: MSK
483  END SUBROUTINE
484 !
485  SUBROUTINE cflvf
486  & (dtmax,hstart,fxmat,fxmatpar,mas,dt,fxbor,smh,yasmh,tab1,nseg,
487  & npoin,nptfr,gloseg,sizglo,mesh,msk,maskpt,rain,pluie,fc,
488  & nelem,ikle,limtra,kdir,kddl,fbor,fscexp,train,nbor,minfc,maxfc,
489  & secu,opt,withabs)
492  IMPLICIT NONE
493  INTEGER, INTENT(IN) :: NSEG,NPOIN,NPTFR,SIZGLO,OPT
494  INTEGER, INTENT(IN) :: GLOSEG(sizglo,2),NELEM
495  INTEGER, INTENT(IN) :: IKLE(nelem,3),NBOR(nptfr)
496  INTEGER, INTENT(IN) :: LIMTRA(nptfr),KDIR,KDDL
497  DOUBLE PRECISION, INTENT(INOUT) :: DTMAX
498  DOUBLE PRECISION, INTENT(IN) :: DT,HSTART(npoin)
499  DOUBLE PRECISION, INTENT(IN) :: MAS(npoin),SMH(*)
500  DOUBLE PRECISION, INTENT(IN) :: PLUIE(*)
501  DOUBLE PRECISION, INTENT(IN) :: FXBOR(npoin)
502  DOUBLE PRECISION, INTENT(IN) :: FXMAT(nseg),FXMATPAR(nseg)
503  DOUBLE PRECISION, INTENT(INOUT) :: FC(npoin)
504  DOUBLE PRECISION, INTENT(IN) :: FSCEXP(*)
505  DOUBLE PRECISION, INTENT(IN) :: FBOR(nptfr),TRAIN,SECU
506  LOGICAL, INTENT(IN) :: YASMH,MSK,RAIN,WITHABS
507  TYPE(bief_obj), INTENT(INOUT) :: TAB1,MINFC,MAXFC
508  TYPE(bief_mesh), INTENT(INOUT) :: MESH
509  TYPE(bief_obj), INTENT(IN) :: MASKPT
510  END SUBROUTINE
511 !
512  SUBROUTINE cg1112(X,DIM1,DIM2,IKLE,NELEM,NELMAX)
514  IMPLICIT NONE
515  INTEGER , INTENT(IN) :: NELEM,NELMAX,DIM1,DIM2
516  DOUBLE PRECISION, INTENT(INOUT) :: X(dim1,dim2)
517  INTEGER , INTENT(IN) :: IKLE(nelmax,4)
518  END SUBROUTINE
519 !
520  SUBROUTINE cg1113(X,DIM1,DIM2,IKLE,NELEM,NELMAX)
522  IMPLICIT NONE
523  INTEGER , INTENT(IN) :: NELEM,NELMAX,DIM1,DIM2
524  DOUBLE PRECISION, INTENT(INOUT) :: X(dim1,dim2)
525  INTEGER , INTENT(IN) :: IKLE(nelmax,6)
526  END SUBROUTINE
527 !
528  SUBROUTINE cgsqua(X,A,B,MESH, G,G0,P,K,H,AHPK,CFG,INFOGR)
531  IMPLICIT NONE
532  TYPE(bief_obj) , INTENT(INOUT) :: X,G,G0,P,K,H,AHPK
533  TYPE(bief_obj) , INTENT(IN ) :: B
534  TYPE(bief_obj) , INTENT(IN) :: A
535  TYPE(slvcfg) , INTENT(INOUT) :: CFG
536  LOGICAL , INTENT(IN) :: INFOGR
537  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
538  END SUBROUTINE
539 !
540  SUBROUTINE cgstab(X, A,B , MESH, P,Q,R,S,T,V, CFG,INFOGR,AUX)
543  IMPLICIT NONE
544  TYPE(bief_obj) , INTENT(INOUT) :: X,P,Q,R,S,T,V
545  TYPE(bief_obj) , INTENT(IN) :: AUX,A,B
546  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
547  TYPE(slvcfg) , INTENT(INOUT) :: CFG
548  LOGICAL , INTENT(IN) :: INFOGR
549  END SUBROUTINE
550 !
551  SUBROUTINE char11( U , V , DT , NRK , X , Y , IKLE , IFABOR ,
552  & XPLOT , YPLOT , DX , DY , SHP , ELT , NSP ,
553  & NPLOT , NPOIN , NELEM , NELMAX , SURDET , SENS , TEST )
556  IMPLICIT NONE
557  INTEGER , INTENT(IN) :: SENS
558  INTEGER , INTENT(IN) :: NPOIN,NELEM,NELMAX,NPLOT,NRK
559  INTEGER , INTENT(IN) :: IKLE(nelmax,3),IFABOR(nelmax,3)
560  INTEGER , INTENT(INOUT) :: ELT(nplot),NSP(nplot)
561  DOUBLE PRECISION, INTENT(IN) :: U(npoin),V(npoin),SURDET(nelem)
562  DOUBLE PRECISION, INTENT(INOUT) :: XPLOT(nplot),YPLOT(nplot)
563  DOUBLE PRECISION, INTENT(INOUT) :: SHP(3,nplot)
564  DOUBLE PRECISION, INTENT(IN) :: DT
565  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin)
566  DOUBLE PRECISION, INTENT(INOUT) :: DX(nplot),DY(nplot),TEST(nplot)
567  END SUBROUTINE
568 !
569  SUBROUTINE char13( U , V , DT , NRK , X , Y , IKLE , IFABOR ,
570  & XPLOT , YPLOT , DX , DY , SHP , ELT , NSP ,
571  & NPLOT , NPOIN , NELEM , NELMAX , SURDET , SENS , TEST )
574  IMPLICIT NONE
575  INTEGER , INTENT(IN) :: SENS
576  INTEGER , INTENT(IN) :: NPOIN,NELEM,NELMAX,NPLOT,NRK
577  INTEGER , INTENT(IN) :: IKLE(nelmax,6),IFABOR(nelmax,3)
578  INTEGER , INTENT(INOUT) :: ELT(nplot),NSP(nplot)
579  DOUBLE PRECISION, INTENT(IN) :: U(npoin),V(npoin),SURDET(nelem)
580  DOUBLE PRECISION, INTENT(INOUT) :: XPLOT(nplot),YPLOT(nplot)
581  DOUBLE PRECISION, INTENT(INOUT) :: SHP(3,nplot)
582  DOUBLE PRECISION, INTENT(IN) :: DT
583  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin)
584  DOUBLE PRECISION, INTENT(INOUT) :: DX(nplot),DY(nplot),TEST(nplot)
585  END SUBROUTINE
586 !
587  SUBROUTINE char41( U , V , W , DT , NRK ,
588  & X , Y , ZSTAR , Z , IKLE2 , IBOR ,
589  & XPLOT , YPLOT , ZPLOT , DX , DY , DZ , SHP , SHZ , ELT , ETA ,
590  & NSP , NPLOT , NPOIN2 , NELEM2 , NPLAN , SURDET ,
591  & SENS , ISO , TEST )
594  IMPLICIT NONE
595  INTEGER , INTENT(IN) :: SENS,NPLAN
596  INTEGER , INTENT(IN) :: NPOIN2,NELEM2,NPLOT,NRK
597  INTEGER , INTENT(IN) :: IKLE2(nelem2,3)
598  INTEGER , INTENT(INOUT) :: ELT(nplot),NSP(nplot)
599  DOUBLE PRECISION, INTENT(IN) :: U(npoin2,nplan),V(npoin2,nplan)
600  DOUBLE PRECISION, INTENT(IN) :: W(npoin2,nplan),SURDET(nelem2)
601  DOUBLE PRECISION, INTENT(INOUT) :: XPLOT(nplot),YPLOT(nplot)
602  DOUBLE PRECISION, INTENT(INOUT) :: ZPLOT(nplot)
603  DOUBLE PRECISION, INTENT(INOUT) :: SHP(3,nplot),SHZ(nplot)
604  DOUBLE PRECISION, INTENT(IN) :: X(npoin2),Y(npoin2),DT
605  DOUBLE PRECISION, INTENT(IN) :: Z(npoin2,nplan),ZSTAR(nplan)
606  DOUBLE PRECISION, INTENT(INOUT) :: DX(nplot),DY(nplot),TEST(nplot)
607  DOUBLE PRECISION, INTENT(INOUT) :: DZ(nplot)
608  INTEGER , INTENT(IN) :: IBOR(nelem2,5,nplan-1)
609  INTEGER , INTENT(INOUT) :: ETA(nplot),ISO(nplot)
610  END SUBROUTINE
611 !
612  SUBROUTINE charac
613  &( fn , ftild , nomb , uconv , vconv , wconv , frconv ,
614  & zstar , freq ,
615  & dt , ifamas , ielm , npoin2 , nplan , jf , nf ,
616  & msk , shp , shz , shf , tb , elt ,
617  & eta , fre , it3 , isub , frebuf, mesh ,
618  & nelem2, nelmax2, ikle2 , surdet2, am1 , rhs , slv ,
619  & agglo , listin , ngauss, unsv , optwea, post , perio ,
620  & ya4d , sigma , stocha, visc )
623  IMPLICIT NONE
624  INTEGER , INTENT(IN) :: NOMB,OPTWEA,NGAUSS
625  INTEGER , INTENT(IN) :: NPLAN,JF,NF,NELEM2
626  INTEGER , INTENT(IN) :: NPOIN2,NELMAX2
627  INTEGER , INTENT(INOUT) :: IELM,FRE(*)
628 ! NEXT 4 DIMENSIONS ARE A MINIMUM
629  INTEGER , INTENT(INOUT) :: ELT(*)
630  INTEGER , INTENT(INOUT) :: ETA(*)
631  INTEGER , INTENT(INOUT) :: IT3(*)
632  INTEGER , INTENT(INOUT) :: ISUB(*)
633  INTEGER , INTENT(INOUT) :: FREBUF(*)
634  TYPE(bief_obj) , INTENT(IN) :: FN,UCONV,VCONV,WCONV
635  TYPE(bief_obj) , INTENT(IN) :: FRCONV
636  TYPE(bief_obj) , INTENT(IN) :: ZSTAR,IKLE2
637  TYPE(bief_obj) , INTENT(IN) :: SURDET2,FREQ,UNSV
638  TYPE(bief_obj) , INTENT(INOUT) :: TB,SHF,AM1,RHS
639  TYPE(bief_obj) , INTENT(INOUT),TARGET :: FTILD,SHP,SHZ
640  LOGICAL , INTENT(IN) :: MSK,LISTIN
641  DOUBLE PRECISION, INTENT(IN) :: DT,AGGLO
642  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
643  TYPE(bief_obj) , INTENT(IN), TARGET :: IFAMAS
644  LOGICAL, INTENT(IN), OPTIONAL :: POST,PERIO,YA4D,SIGMA
645  INTEGER, INTENT(IN), OPTIONAL :: STOCHA
646  TYPE(bief_obj), INTENT(IN), OPTIONAL, TARGET :: VISC
647  TYPE(slvcfg) , INTENT(INOUT) :: SLV
648  END SUBROUTINE
649 !
650  SUBROUTINE checkmesh(MESH,NPOIN)
652  IMPLICIT NONE
653  INTEGER , INTENT(IN) :: NPOIN
654  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
655  END SUBROUTINE
656 !
657  SUBROUTINE chgdis(X,OLDELT,NEWELT,MESH)
660  IMPLICIT NONE
661  INTEGER, INTENT(IN) :: NEWELT
662  INTEGER, INTENT(INOUT) :: OLDELT
663  TYPE(bief_obj), INTENT(INOUT) :: X
664  TYPE(bief_mesh), INTENT(IN) :: MESH
665  END SUBROUTINE
666 !
667  SUBROUTINE clip(F,XMIN,CLPMIN,XMAX,CLPMAX,NPOIN)
670  IMPLICIT NONE
671  INTEGER, INTENT(IN) :: NPOIN
672  DOUBLE PRECISION, INTENT(IN) :: XMIN,XMAX
673  LOGICAL, INTENT(IN) :: CLPMIN,CLPMAX
674  TYPE(bief_obj), INTENT(INOUT) :: F
675  END SUBROUTINE
676 !
677  LOGICAL FUNCTION cmpobj( OBJ1 , OBJ2 )
680  IMPLICIT NONE
681  TYPE(bief_obj), INTENT(IN) :: OBJ1,OBJ2
682  END FUNCTION
683 !
684  SUBROUTINE config_code(ICODE)
686  IMPLICIT NONE
687  INTEGER , INTENT(IN) :: ICODE
688  END SUBROUTINE
689 !
690  SUBROUTINE comp_fac(ELTSEG,ORISEG,IFABOR,NELEM,NPOIN,IFAC)
693  IMPLICIT NONE
694  INTEGER, INTENT(IN) :: NELEM,NPOIN
695  INTEGER, INTENT(IN) :: IFABOR(nelem,3),ELTSEG(nelem,3)
696  INTEGER, INTENT(IN) :: ORISEG(nelem,3)
697  TYPE(bief_obj), INTENT(INOUT) :: IFAC
698  END SUBROUTINE
699 !
700  SUBROUTINE comp_nh_com_seg
701  & (eltseg,nelem,nh_com_seg,dim1nhcom,
702  & nb_neighb_seg,nb_neighb_pt_seg,gloseg,dimglo,knolg,npoin)
704  IMPLICIT NONE
705  INTEGER, INTENT(IN) :: NELEM,DIM1NHCOM,NB_NEIGHB_SEG,DIMGLO
706  INTEGER, INTENT(IN) :: NPOIN
707  INTEGER, INTENT(INOUT) :: NH_COM_SEG(dim1nhcom,nb_neighb_seg)
708  INTEGER, INTENT(IN) :: ELTSEG(nelem,3),GLOSEG(dimglo,2)
709  INTEGER, INTENT(IN) :: NB_NEIGHB_PT_SEG(nb_neighb_seg)
710  INTEGER, INTENT(IN) :: KNOLG(*)
711  END SUBROUTINE
712 !
713  SUBROUTINE comp_ikle
714  & (ikle,iklbor,eltseg,nbor,nelbor,nulone,
715  & ielm,nelem,nelmax,npoin,nptfr,neleb,nelebx)
717  IMPLICIT NONE
718  INTEGER, INTENT(IN) :: NELEM,NELMAX,IELM,NPOIN,NPTFR
719  INTEGER, INTENT(IN) :: NELEB,NELEBX
720  INTEGER, INTENT(IN) :: ELTSEG(nelmax,3)
721  INTEGER, INTENT(IN) :: NELBOR(nelebx),NULONE(nelebx)
722  INTEGER, INTENT(INOUT) :: IKLE(nelmax,*),IKLBOR(nelebx,*),
723  & nbor(*)
724  END SUBROUTINE
725 !
726  SUBROUTINE comp_seg
727  & (nelem,nelmax,ielm,ikle,gloseg,maxseg,eltseg,oriseg,nseg)
729  IMPLICIT NONE
730  INTEGER, INTENT(IN) :: NELMAX,NSEG,MAXSEG,IELM,NELEM
731  INTEGER, INTENT(IN) :: IKLE(nelmax,*)
732  INTEGER, INTENT(INOUT) :: GLOSEG(maxseg,2),ELTSEG(nelmax,*)
733  INTEGER, INTENT(INOUT) :: ORISEG(nelmax,*)
734  END SUBROUTINE
735 !
736  SUBROUTINE corlat
738  IMPLICIT NONE
739  END SUBROUTINE
740 !
741  SUBROUTINE user_corlat
743  IMPLICIT NONE
744  END SUBROUTINE
745 !
746  SUBROUTINE corrsl(NEWSL,OLDSL,ZF,MESH)
749  IMPLICIT NONE
750  TYPE(bief_mesh), INTENT(IN) :: MESH
751  TYPE(bief_obj) , INTENT(IN) :: OLDSL,ZF
752  TYPE(bief_obj) , INTENT(INOUT) :: NEWSL
753  END SUBROUTINE
754 !
755  SUBROUTINE corrxy(X,Y,NPOIN)
757  IMPLICIT NONE
758  INTEGER, INTENT(IN) :: NPOIN
759  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin),Y(npoin)
760  END SUBROUTINE
761 !
762  SUBROUTINE user_corrxy(X,Y,NPOIN)
764  IMPLICIT NONE
765  INTEGER, INTENT(IN) :: NPOIN
766  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin),Y(npoin)
767  END SUBROUTINE
768 !
769  SUBROUTINE cpik12(IKLE,NELEM,NELMAX,NPOIN)
771  IMPLICIT NONE
772  INTEGER, INTENT(IN) :: NELEM,NELMAX,NPOIN
773  INTEGER, INTENT(INOUT) :: IKLE(nelmax,4)
774  END SUBROUTINE
775 !
776  SUBROUTINE cpik13
777  & (ikle,iklbor,eltseg,nbor,nelbor,nulone,nelem,nelmax,npoin,nptfr,
778  & neleb,nelebx)
780  IMPLICIT NONE
781  INTEGER, INTENT(IN) :: NELEM,NELMAX,NPOIN,NPTFR,NELEB,NELEBX
782  INTEGER, INTENT(IN) :: ELTSEG(nelmax,3)
783  INTEGER, INTENT(IN) :: NELBOR(nelebx),NULONE(nelebx)
784  INTEGER, INTENT(INOUT) :: IKLE(nelmax,6),IKLBOR(nelebx,3),NBOR(*)
785  END SUBROUTINE
786 !
787  SUBROUTINE cpikle2
788  & (ikle3,klei3,ikles,nelem2,nelmax2,npoin2,nplan)
790  IMPLICIT NONE
791  INTEGER, INTENT(IN) :: NELEM2,NELMAX2,NPOIN2,NPLAN
792  INTEGER, INTENT(IN) :: IKLES(3,nelem2)
793  INTEGER, INTENT(INOUT) :: IKLE3(nelmax2,nplan-1,6)
794  INTEGER, INTENT(INOUT) :: KLEI3(6,nelmax2,nplan-1)
795  END SUBROUTINE
796 !
797  SUBROUTINE cpikle3
798  & (ikle3,ikles,nelem2,nelmax2,npoin2,nplan,knolg)
800  IMPLICIT NONE
801  INTEGER, INTENT(IN) :: NELEM2,NELMAX2,NPOIN2,NPLAN
802  INTEGER, INTENT(IN) :: KNOLG(*)
803  INTEGER, INTENT(INOUT) :: IKLES(3,nelem2)
804  INTEGER, INTENT(INOUT) :: IKLE3(nelmax2,3,nplan-1,4)
805  END SUBROUTINE
806 !
807  SUBROUTINE cpstmt( X , Y , TRANS )
810  IMPLICIT NONE
811  TYPE(bief_obj), INTENT(IN) :: X
812  TYPE(bief_obj), INTENT(INOUT) :: Y
813  LOGICAL, INTENT(IN), OPTIONAL :: TRANS
814  END SUBROUTINE
815 !
816  SUBROUTINE cpstvc( X , Y )
819  IMPLICIT NONE
820  TYPE(bief_obj), INTENT(IN) :: X
821  TYPE(bief_obj), INTENT(INOUT) :: Y
822  END SUBROUTINE
823 !
824 !
825  SUBROUTINE crosfr(X,Y,XR,YR,XMAIL,YMAIL,NPMAX,NBOR,KP1BOR,
826  & NPTFR,DM,OK)
828  IMPLICIT NONE
829  DOUBLE PRECISION, INTENT(IN) :: X,Y,XR,YR,DM
830  INTEGER, INTENT(IN) :: NPTFR,NPMAX
831  DOUBLE PRECISION, INTENT(IN) :: XMAIL(npmax),YMAIL(npmax)
832  INTEGER, INTENT(IN) :: NBOR(nptfr),KP1BOR(nptfr)
833  LOGICAL, INTENT(INOUT) :: OK
834  END SUBROUTINE
835 !
836  SUBROUTINE crsl11(NEWSL,OLDSL,ZF,IKLE,NELEM,NELMAX)
838  IMPLICIT NONE
839  INTEGER, INTENT(IN) :: NELEM,NELMAX
840  DOUBLE PRECISION, INTENT(INOUT) :: NEWSL(nelmax,3)
841  DOUBLE PRECISION, INTENT(IN) :: OLDSL(*),ZF(*)
842  INTEGER, INTENT(IN) :: IKLE(nelmax,3)
843  END SUBROUTINE
844 !
845  SUBROUTINE crsl12(NEWSL,OLDSL,ZF,IKLE,NELEM,NELMAX)
847  IMPLICIT NONE
848  INTEGER, INTENT(IN) :: NELEM,NELMAX
849  DOUBLE PRECISION, INTENT(INOUT) :: NEWSL(nelmax,4)
850  DOUBLE PRECISION, INTENT(IN) :: OLDSL(*),ZF(*)
851  INTEGER, INTENT(IN) :: IKLE(nelmax,4)
852  END SUBROUTINE
853 !
854  SUBROUTINE cvdftr
855  &(f,ftild,fn,fscexp,dift,iconvf,conv,
856  & h,hn,hprop,uconv,vconv,dm1,zconv,solsys,
857  & visc,visc_s,sm,smh,yasmh,smi,yasmi,am1,am2,
858  & zf,fbor,afbor,bfbor,limtra,masktr,mesh,tb,
859  & t1,t2,t4,t10,te1,te2,te3,kdir,kddl,dt,entet,
860  & tetat,agglot,infogt,bilan,optadv,
861  & isousi,opdtra,optban,msk,maskel,maskpt,mbor,
862  & s,massou,optsou,slvtra,flbor,volu2d,v2dpar,unsv2d,optvf,flbortra,
863  & flulim,yaflulim,flulimebe,yaflulimebe,dirflu,rain,pluie,train,
864  & given_flux,flux_given,maxadv,tb2,nco_dist,nsp_dist)
867  IMPLICIT NONE
868  INTEGER, INTENT(IN) :: ICONVF,ISOUSI,OPTADV,OPDTRA
869  INTEGER, INTENT(IN) :: OPTBAN,OPTSOU,KDIR,SOLSYS
870  INTEGER, INTENT(IN) :: KDDL,OPTVF,DIRFLU,MAXADV
871  INTEGER, INTENT(IN) :: NCO_DIST,NSP_DIST
872  DOUBLE PRECISION, INTENT(IN) :: TETAT,AGGLOT,DT,TRAIN
873  DOUBLE PRECISION, INTENT(INOUT) :: MASSOU
874  LOGICAL, INTENT(IN) :: INFOGT,BILAN,CONV,YASMH,RAIN
875  LOGICAL, INTENT(IN) :: DIFT,MSK,ENTET,YASMI,YAFLULIM
876  LOGICAL, INTENT(IN) :: FLUX_GIVEN,YAFLULIMEBE
877  TYPE(slvcfg), INTENT(INOUT) :: SLVTRA
878  TYPE(bief_obj), INTENT(IN) :: MASKEL,MASKPT,H,HN,AFBOR,BFBOR
879  TYPE(bief_obj), INTENT(IN), TARGET :: HPROP
880  TYPE(bief_obj), INTENT(INOUT) :: F,SM,FLBORTRA
881  TYPE(bief_obj), INTENT(IN) :: UCONV,VCONV,ZF,FLULIMEBE
882  TYPE(bief_obj), INTENT(IN) :: FTILD,FN,SMI,FLULIM,PLUIE
883  TYPE(bief_obj), INTENT(INOUT) :: SMH,FBOR
884  TYPE(bief_obj), INTENT(INOUT) :: TE1,TE2,TE3
885  TYPE(bief_obj), INTENT(INOUT) :: T1,T2,T4
886  TYPE(bief_obj), INTENT(INOUT), TARGET :: T10
887  TYPE(bief_obj), INTENT(IN) :: FSCEXP,DM1,ZCONV
888  TYPE(bief_obj), INTENT(IN) :: S,V2DPAR,UNSV2D,VOLU2D
889  TYPE(bief_obj), INTENT(INOUT) :: FLBOR,LIMTRA
890  TYPE(bief_obj), INTENT(INOUT) :: VISC_S,VISC
891  TYPE(bief_obj), INTENT(INOUT) :: AM1,AM2,MBOR
892  TYPE(bief_obj), INTENT(INOUT) :: TB,TB2
893  TYPE(bief_obj), INTENT(IN) :: MASKTR,GIVEN_FLUX
894  TYPE(bief_mesh) :: MESH
895  END SUBROUTINE
896 !
897  SUBROUTINE cvtrvf
898  &(f,fn,fscexp,h,hn,hprop,uconv,vconv,dm1,zconv,solsys,
899  & sm,smh,yasmh,smi,yasmi,fbor,masktr,mesh,
900  & aggloh,dt,entet,
901  & msk,maskel,s,massou,optsou,limtra,kdir,kddl,nptfr,flbor,
902  & yaflbor,volu2d,v2dpar,unsv2d,iopt,flbortra,maskpt,
903  & rain,pluie,train,optadv,tb,free,am2,tb2,nco_dist,nsp_dist,
904  & yaflulim,flulim,yaflulimebe,flulimebe,slvtra)
907  IMPLICIT NONE
908  INTEGER, INTENT(IN) :: OPTSOU,KDIR,NPTFR,SOLSYS
909  INTEGER, INTENT(IN) :: KDDL,IOPT,OPTADV,FREE
910  INTEGER, INTENT(IN) :: NCO_DIST,NSP_DIST
911  INTEGER, INTENT(INOUT) :: LIMTRA(nptfr)
912  DOUBLE PRECISION, INTENT(IN) :: DT,AGGLOH,TRAIN
913  DOUBLE PRECISION, INTENT(IN) :: FLULIM(*)
914  DOUBLE PRECISION, INTENT(INOUT) :: MASSOU
915  LOGICAL, INTENT(IN) :: YASMH,YAFLBOR
916  LOGICAL, INTENT(IN) :: MSK,ENTET,YASMI,RAIN
917  LOGICAL, INTENT(IN) :: YAFLULIM,YAFLULIMEBE
918  TYPE(bief_obj), INTENT(IN) :: MASKEL,DM1,ZCONV,MASKPT
919  TYPE(bief_obj), INTENT(IN), TARGET :: H,HN
920  TYPE(bief_obj), INTENT(IN) :: VOLU2D,V2DPAR,UNSV2D,HPROP
921  TYPE(bief_obj), INTENT(INOUT) :: F,SM,AM2
922  TYPE(bief_obj), INTENT(IN) :: UCONV,VCONV,FN,SMI,SMH
923  TYPE(bief_obj), INTENT(INOUT) :: FBOR,TB,TB2
924  TYPE(bief_obj), INTENT(INOUT) :: FLBORTRA
925  TYPE(bief_obj), INTENT(IN) :: FSCEXP,S,MASKTR
926  TYPE(bief_obj), INTENT(IN) :: PLUIE
927  TYPE(bief_mesh) :: MESH
928  DOUBLE PRECISION, INTENT(IN) :: FLULIMEBE(*)
929  TYPE(bief_obj), INTENT(IN) :: FLBOR
930  TYPE(slvcfg), INTENT(IN) :: SLVTRA
931  END SUBROUTINE
932 !
933  SUBROUTINE cvtrvf_eria
934  &(f,fn,fscexp,h,hn,hprop,udel,vdel,dm1,zconv,solsys,
935  & sm,smh,yasmh,smi,yasmi,fbor,masktr,mesh,
936  & t1,t2,t3,t4,t5,t6,t7,ht,dt,entet,
937  & msk,maskel,optsou,limtra,kdir,kddl,nptfr,flbor,
938  & yaflbor,unsv2d,iopt,flbortra,nbor,
939  & rain,pluie,train,nitmax,nco_dist,optadv)
941  IMPLICIT NONE
942  INTEGER, INTENT(IN) :: OPTSOU,KDIR,NPTFR,SOLSYS
943  INTEGER, INTENT(IN) :: KDDL,IOPT,NITMAX,OPTADV
944  INTEGER, INTENT(IN) :: NCO_DIST
945  INTEGER, INTENT(IN) :: NBOR(nptfr)
946  INTEGER, INTENT(INOUT) :: LIMTRA(nptfr)
947  DOUBLE PRECISION, INTENT(IN) :: DT,TRAIN
948  LOGICAL, INTENT(IN) :: YASMH,YAFLBOR,RAIN
949  LOGICAL, INTENT(IN) :: MSK,ENTET,YASMI
950  TYPE(bief_obj), INTENT(IN) :: MASKEL,H,HN,DM1,ZCONV
951  TYPE(bief_obj), INTENT(IN) :: UNSV2D,HPROP
952  TYPE(bief_obj), INTENT(IN) :: UDEL,VDEL,FN,SMI,SMH
953  TYPE(bief_obj), INTENT(INOUT) :: FLBORTRA,FBOR,F,SM,HT
954  TYPE(bief_obj), INTENT(INOUT) :: T1,T2,T3,T4,T5,T6,T7,FLBOR
955  TYPE(bief_obj), INTENT(IN) :: FSCEXP,MASKTR,PLUIE
956  TYPE(bief_mesh) :: MESH
957  END SUBROUTINE
958 !
959  SUBROUTINE cvtrvf_nerd
960  &(f,fn,fscexp,h,hn,hprop,udel,vdel,dm1,zconv,solsys,
961  & sm,smh,yasmh,smi,yasmi,fbor,masktr,mesh,
962  & t1,t2,t3,t4,t5,t6,t7,ht,dt,entet,
963  & msk,maskel,optsou,limtra,kdir,kddl,nptfr,flbor,
964  & yaflbor,unsv2d,iopt,flbortra,gloseg1,gloseg2,nbor,
965  & flulim,yaflulim,rain,pluie,train,given_flux,flux_given,
966  & nitmax)
968  IMPLICIT NONE
969  INTEGER, INTENT(IN) :: OPTSOU,KDIR,NPTFR,SOLSYS
970  INTEGER, INTENT(IN) :: KDDL,IOPT,NITMAX
971  INTEGER, INTENT(IN) :: GLOSEG1(*),GLOSEG2(*)
972  INTEGER, INTENT(IN) :: NBOR(nptfr)
973  INTEGER, INTENT(INOUT) :: LIMTRA(nptfr)
974  DOUBLE PRECISION, INTENT(IN) :: DT,TRAIN,FLULIM(*)
975  LOGICAL, INTENT(IN) :: YASMH,YAFLBOR,RAIN
976  LOGICAL, INTENT(IN) :: MSK,ENTET,YASMI,YAFLULIM
977  LOGICAL, INTENT(IN) :: FLUX_GIVEN
978  TYPE(bief_obj), INTENT(IN) :: MASKEL,H,HN,DM1,ZCONV
979  TYPE(bief_obj), INTENT(IN) :: UNSV2D,HPROP
980  TYPE(bief_obj), INTENT(INOUT) :: F,SM,HT
981  TYPE(bief_obj), INTENT(IN) :: UDEL,VDEL,FN,SMI,SMH
982  TYPE(bief_obj), INTENT(INOUT) :: FLBORTRA,FBOR
983  TYPE(bief_obj), INTENT(INOUT) :: T1,T2,T3,T4,T5,T6,T7
984  TYPE(bief_obj), INTENT(IN) :: FSCEXP,MASKTR
985  TYPE(bief_obj), INTENT(INOUT) :: FLBOR
986  TYPE(bief_obj), INTENT(IN) :: PLUIE,GIVEN_FLUX
987  TYPE(bief_mesh) :: MESH
988  END SUBROUTINE
989 !
990  SUBROUTINE cvtrvf_nerd_2
991  &(f1,f1n,f1scexp,f2,f2n,f2scexp,h,hn,hprop,udel,vdel,dm1,
992  & zconv,solsys,sm1,sm2,smh,yasmh,smi1,smi2,yasmi,
993  & f1bor,f2bor,masktr,mesh,t1,t2,t3,t4,t5,t6,t7,t8,ht,
994  & dt,entet,msk,maskel,optsou,
995  & limtra1,limtra2,kdir,kddl,nptfr,flbor,yaflbor,unsv2d,iopt,
996  & flbortra1,flbortra2,gloseg1,gloseg2,nbor,
997  & rain,pluie,train1,train2,nitmax)
999  IMPLICIT NONE
1000  INTEGER, INTENT(IN) :: OPTSOU,KDIR,NPTFR,SOLSYS
1001  INTEGER, INTENT(IN) :: KDDL,IOPT,NITMAX
1002  INTEGER, INTENT(IN) :: GLOSEG1(*),GLOSEG2(*)
1003  INTEGER, INTENT(IN) :: LIMTRA1(nptfr),NBOR(nptfr)
1004  INTEGER, INTENT(IN) :: LIMTRA2(nptfr)
1005  DOUBLE PRECISION, INTENT(IN) :: DT
1006  DOUBLE PRECISION, INTENT(IN) :: TRAIN1,TRAIN2
1007  LOGICAL, INTENT(IN) :: YASMH,YAFLBOR,RAIN
1008  LOGICAL, INTENT(IN) :: MSK,ENTET,YASMI
1009  TYPE(bief_obj), INTENT(IN) :: MASKEL,H,HN,DM1,ZCONV
1010  TYPE(bief_obj), INTENT(IN) :: UNSV2D,HPROP
1011  TYPE(bief_obj), INTENT(INOUT) :: F1,SM1,F2,SM2,HT
1012  TYPE(bief_obj), INTENT(IN) :: F1BOR,UDEL,VDEL,F1N,SMI1,SMH
1013  TYPE(bief_obj), INTENT(IN) :: F2BOR,F2N,SMI2
1014  TYPE(bief_obj), INTENT(INOUT) :: FLBORTRA1,FLBORTRA2
1015  TYPE(bief_obj), INTENT(INOUT) :: T1,T2,T3,T4,T5,T6,T7,T8
1016  TYPE(bief_obj), INTENT(IN) :: F1SCEXP,F2SCEXP,MASKTR
1017  TYPE(bief_obj), INTENT(INOUT) :: FLBOR
1018  TYPE(bief_obj), INTENT(IN) :: PLUIE
1019  TYPE(bief_mesh) :: MESH
1020  END SUBROUTINE
1021 !
1022  SUBROUTINE dcpldu(B,A,MESH,COPY,LV)
1024  IMPLICIT NONE
1025  TYPE(bief_obj) , INTENT(INOUT) :: B
1026  TYPE(bief_obj) , INTENT(IN) :: A
1027  TYPE(bief_mesh), INTENT(INOUT) :: MESH
1028  LOGICAL , INTENT(IN) :: COPY
1029  INTEGER , INTENT(IN) :: LV
1030  END SUBROUTINE
1031 !
1032  SUBROUTINE decldu(B,A,MESH,COPY,LV)
1035  IMPLICIT NONE
1036  TYPE(bief_obj) , INTENT(INOUT) :: B
1037  TYPE(bief_obj) , INTENT(IN) :: A
1038  TYPE(bief_mesh), INTENT(INOUT) :: MESH
1039  LOGICAL , INTENT(IN) :: COPY
1040  INTEGER , INTENT(IN) :: LV
1041  END SUBROUTINE
1042 !
1043  SUBROUTINE decvrt(TETA,SL,ZF,MESH)
1046  IMPLICIT NONE
1047  TYPE(bief_mesh), INTENT(IN) :: MESH
1048  TYPE(bief_obj) , INTENT(INOUT) :: TETA
1049  TYPE(bief_obj) , INTENT(IN) :: SL,ZF
1050  END SUBROUTINE
1051 !
1052  SUBROUTINE decv11(TETA,SL,ZF,IKLE,NELEM,NELMAX)
1054  IMPLICIT NONE
1055  INTEGER , INTENT(IN) :: NELEM,NELMAX
1056  INTEGER , INTENT(IN) :: IKLE(nelmax,*)
1057  DOUBLE PRECISION, INTENT(OUT) :: TETA(nelem)
1058  DOUBLE PRECISION, INTENT(IN) :: SL(*),ZF(*)
1059  END SUBROUTINE
1060 !
1061  SUBROUTINE decv21(TETA,SL,ZF,IKLE,NELEM,NELMAX)
1063  IMPLICIT NONE
1064  INTEGER , INTENT(IN) :: NELEM,NELMAX
1065  INTEGER , INTENT(IN) :: IKLE(nelmax,*)
1066  DOUBLE PRECISION, INTENT(OUT) :: TETA(nelem)
1067  DOUBLE PRECISION, INTENT(IN) :: SL(*),ZF(*)
1068  END SUBROUTINE
1069 !
1070  SUBROUTINE derive
1071  &(u,v,w,dt,at,x,y,z,ikle,ifabor,lt,ielm,ielmu,ndp,ndp2,
1072  & npoin,npoin2,
1073  & nelem,nelmax,surdet,xflot,yflot,zflot,
1074  & shpflo,shzflo,tagflo,clsflo,eltflo,etaflo,
1075  & nflot,nflot_max,mesh,
1076  & isub,dx,dy,dz,eltbuf,shpbuf,shzbuf,sizebuf,stocha,visc,
1077  & nplan,zstar,transf,
1078  & aalgae,dalgae,ralgae,ealgae,talgae,yalgae,
1079  & rel_algae,tw1_algae,tw2_algae,a_algae,
1080  & orbvel,ak,ep,h)
1083  IMPLICIT NONE
1084  INTEGER , INTENT(IN) :: NPOIN,LT,IELM,IELMU,NDP,NELEM
1085  INTEGER , INTENT(IN) :: NELMAX,SIZEBUF,NPOIN2
1086  INTEGER , INTENT(IN) :: NFLOT_MAX,STOCHA,NPLAN,TRANSF
1087  INTEGER , INTENT(INOUT) :: NFLOT
1088  INTEGER , INTENT(IN) :: NDP2
1089  DOUBLE PRECISION, INTENT(IN) :: DT,AT
1090  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*),W(*)
1091  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin),Z(npoin)
1092  INTEGER , INTENT(IN) :: IKLE(nelmax,ndp2)
1093  INTEGER , INTENT(IN) :: IFABOR(*)
1094  DOUBLE PRECISION, INTENT(IN) :: SURDET(nelem),ZSTAR(nplan)
1095  DOUBLE PRECISION, INTENT(INOUT) :: XFLOT(nflot_max),DX(nflot_max)
1096  DOUBLE PRECISION, INTENT(INOUT) :: YFLOT(nflot_max),DY(nflot_max)
1097  DOUBLE PRECISION, INTENT(INOUT) :: ZFLOT(nflot_max),DZ(nflot_max)
1098  INTEGER , INTENT(INOUT) :: TAGFLO(nflot_max)
1099  INTEGER , INTENT(INOUT) :: CLSFLO(nflot_max)
1100  INTEGER , INTENT(INOUT) :: ELTFLO(*)
1101  INTEGER , INTENT(INOUT) :: ETAFLO(*)
1102  INTEGER , INTENT(INOUT) :: ELTBUF(sizebuf)
1103  INTEGER , INTENT(INOUT) :: ISUB(nflot_max)
1104  DOUBLE PRECISION, INTENT(INOUT) :: SHPFLO(ndp,nflot_max)
1105  DOUBLE PRECISION, INTENT(INOUT) :: SHZFLO(nflot_max)
1106  DOUBLE PRECISION, INTENT(INOUT) :: SHPBUF(ndp,sizebuf)
1107  DOUBLE PRECISION, INTENT(INOUT) :: SHZBUF(sizebuf)
1108  TYPE(bief_obj) , INTENT(IN) :: VISC
1109  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
1110  LOGICAL , OPTIONAL, INTENT(IN) :: AALGAE
1111  DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: AK(*),EP(*)
1112  DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: ORBVEL(*)
1113  DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: H(npoin)
1114  DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: DALGAE(*),RALGAE(*)
1115  DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: EALGAE(*)
1116  DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: TALGAE(*)
1117  DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: TW1_ALGAE(*)
1118  DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: TW2_ALGAE(*)
1119  DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: A_ALGAE(*)
1120  INTEGER , OPTIONAL, INTENT(IN) :: YALGAE(*)
1121  INTEGER , OPTIONAL, INTENT(IN) :: REL_ALGAE(*)
1122  END SUBROUTINE
1123 !
1124  SUBROUTINE derlag
1125  &(u,v,dt,x,y,lt,ielm,ielmu,ndp,npoin,nelem,nelmax,xlag,ylag,dx,dy,
1126  & nsp,shplag,deblag,finlag,eltlag,nlag,resux,resuy,ispdone,mesh)
1129  IMPLICIT NONE
1130  INTEGER , INTENT(IN) :: NPOIN,LT,IELM,NDP,NELEM,NLAG
1131  INTEGER , INTENT(IN) :: NELMAX,IELMU
1132  DOUBLE PRECISION, INTENT(IN) :: U(npoin),V(npoin),DT
1133  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin)
1134  DOUBLE PRECISION, INTENT(INOUT) :: XLAG(npoin,nlag)
1135  DOUBLE PRECISION, INTENT(INOUT) :: YLAG(npoin,nlag)
1136  INTEGER , INTENT(INOUT) :: DEBLAG(nlag),FINLAG(nlag)
1137  INTEGER , INTENT(INOUT) :: ELTLAG(npoin,nlag)
1138  INTEGER , INTENT(INOUT) :: ISPDONE(npoin)
1139  DOUBLE PRECISION, INTENT(INOUT) :: DX(npoin),DY(npoin)
1140  INTEGER , INTENT(INOUT) :: NSP(npoin)
1141  DOUBLE PRECISION, INTENT(INOUT) :: RESUX(npoin),RESUY(npoin)
1142  DOUBLE PRECISION, INTENT(INOUT) :: SHPLAG(ndp,npoin,nlag)
1143  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
1144  END SUBROUTINE
1145 !
1146  SUBROUTINE des11
1147  &(x, xa1,xa2,xa3,ikle1,ikle2,ikle3,nelem,nelmax,npoin,lv)
1149  IMPLICIT NONE
1150  INTEGER , INTENT(IN) :: NPOIN,NELEM,NELMAX,LV
1151  DOUBLE PRECISION , INTENT(INOUT) :: X(npoin)
1152  DOUBLE PRECISION , INTENT(IN) :: XA1(nelmax)
1153  DOUBLE PRECISION , INTENT(IN) :: XA2(nelmax)
1154  DOUBLE PRECISION , INTENT(IN) :: XA3(nelmax)
1155  INTEGER , INTENT(IN) :: IKLE1(nelmax)
1156  INTEGER , INTENT(IN) :: IKLE2(nelmax)
1157  INTEGER , INTENT(IN) :: IKLE3(nelmax)
1158  END SUBROUTINE
1159 !
1160  SUBROUTINE des21
1161  &(x, xa1,xa2,xa3,xa4,xa5,xa6 , ikle1,ikle2,ikle3,ikle4,
1162  & nelem,nelmax,npoin,lv)
1164  IMPLICIT NONE
1165  INTEGER , INTENT(IN) :: NPOIN,NELEM,NELMAX,LV
1166  DOUBLE PRECISION , INTENT(INOUT) :: X(npoin)
1167  DOUBLE PRECISION , INTENT(IN) :: XA1(nelmax)
1168  DOUBLE PRECISION , INTENT(IN) :: XA2(nelmax)
1169  DOUBLE PRECISION , INTENT(IN) :: XA3(nelmax)
1170  DOUBLE PRECISION , INTENT(IN) :: XA4(nelmax)
1171  DOUBLE PRECISION , INTENT(IN) :: XA5(nelmax)
1172  DOUBLE PRECISION , INTENT(IN) :: XA6(nelmax)
1173  INTEGER , INTENT(IN) :: IKLE1(nelmax)
1174  INTEGER , INTENT(IN) :: IKLE2(nelmax)
1175  INTEGER , INTENT(IN) :: IKLE3(nelmax)
1176  INTEGER , INTENT(IN) :: IKLE4(nelmax)
1177  END SUBROUTINE
1178 !
1179  SUBROUTINE des41
1180  &(x, xa1 ,xa2 ,xa3 ,xa4 ,xa5 ,
1181  & xa6 ,xa7 ,xa8 ,xa9 ,xa10,
1182  & xa11,xa12,xa13,xa14,xa15,
1183  & ikle1,ikle2,ikle3,ikle4,ikle5,ikle6,
1184  & nelem,nelmax,npoin,lv)
1186  IMPLICIT NONE
1187  INTEGER , INTENT(IN) :: NPOIN,NELEM,NELMAX,LV
1188  DOUBLE PRECISION , INTENT(INOUT) :: X(npoin)
1189  DOUBLE PRECISION , INTENT(IN) :: XA1(nelmax)
1190  DOUBLE PRECISION , INTENT(IN) :: XA2(nelmax)
1191  DOUBLE PRECISION , INTENT(IN) :: XA3(nelmax)
1192  DOUBLE PRECISION , INTENT(IN) :: XA4(nelmax)
1193  DOUBLE PRECISION , INTENT(IN) :: XA5(nelmax)
1194  DOUBLE PRECISION , INTENT(IN) :: XA6(nelmax)
1195  DOUBLE PRECISION , INTENT(IN) :: XA7(nelmax)
1196  DOUBLE PRECISION , INTENT(IN) :: XA8(nelmax)
1197  DOUBLE PRECISION , INTENT(IN) :: XA9(nelmax)
1198  DOUBLE PRECISION , INTENT(IN) :: XA10(nelmax)
1199  DOUBLE PRECISION , INTENT(IN) :: XA11(nelmax)
1200  DOUBLE PRECISION , INTENT(IN) :: XA12(nelmax)
1201  DOUBLE PRECISION , INTENT(IN) :: XA13(nelmax)
1202  DOUBLE PRECISION , INTENT(IN) :: XA14(nelmax)
1203  DOUBLE PRECISION , INTENT(IN) :: XA15(nelmax)
1204  INTEGER , INTENT(IN) :: IKLE1(nelmax)
1205  INTEGER , INTENT(IN) :: IKLE2(nelmax)
1206  INTEGER , INTENT(IN) :: IKLE3(nelmax)
1207  INTEGER , INTENT(IN) :: IKLE4(nelmax)
1208  INTEGER , INTENT(IN) :: IKLE5(nelmax)
1209  INTEGER , INTENT(IN) :: IKLE6(nelmax)
1210  END SUBROUTINE
1211 !
1212  SUBROUTINE descen
1213  &(x, xa,typexa,b,ikle,nelem,nelmax,npoin,ielm,ditr,copy,lv)
1215  IMPLICIT NONE
1216  INTEGER , INTENT(IN) :: IELM,NPOIN,NELEM,NELMAX,LV
1217  INTEGER , INTENT(IN) :: IKLE(nelmax,*)
1218  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
1219  DOUBLE PRECISION, INTENT(IN) :: XA(nelmax,*),B(npoin)
1220  CHARACTER(LEN=1), INTENT(IN) :: TYPEXA,DITR
1221  LOGICAL , INTENT(IN) :: COPY
1222  END SUBROUTINE
1223 !
1224  SUBROUTINE desseg
1225  &(x, xa,typexa,b,gloseg,nseg,npoin,ditr,copy)
1228  IMPLICIT NONE
1229  INTEGER , INTENT(IN) :: NPOIN,NSEG
1230  INTEGER , INTENT(IN) :: GLOSEG(nseg,2)
1231  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
1232  DOUBLE PRECISION, INTENT(IN) :: XA(nseg,*),B(npoin)
1233  CHARACTER(LEN=1), INTENT(IN) :: TYPEXA,DITR
1234  LOGICAL , INTENT(IN) :: COPY
1235  END SUBROUTINE
1236 !
1237  SUBROUTINE diffcl
1238  &(litbor,ttild,tbor,nbor,iconv,npoin,nptfr)
1240  IMPLICIT NONE
1241  INTEGER, INTENT(IN) :: NPOIN,NPTFR,ICONV
1242  INTEGER, INTENT(IN) :: NBOR(nptfr)
1243  INTEGER, INTENT(IN) :: LITBOR(nptfr)
1244  DOUBLE PRECISION, INTENT(IN) :: TTILD(npoin)
1245  DOUBLE PRECISION, INTENT(INOUT) :: TBOR(nptfr)
1246  END SUBROUTINE
1247 !
1248  SUBROUTINE diffin
1249  &(masktr,limtra,litbor,clt,u,v,xnebor,ynebor,nbor,
1250  & nptfr,kent,ksort,klog,kneu,kdir,kddl,
1251  & iconv,nelbor,npoin,msk,maskel,
1252  & nfrliq,thomfr,frtype,tn,tbor,numliq,iklbor,neleb,nelebx)
1255  IMPLICIT NONE
1256  TYPE(bief_obj), INTENT(INOUT) :: MASKTR,TBOR
1257  TYPE(bief_obj), INTENT(IN) :: TN
1258  INTEGER, INTENT(IN) :: NELEB,NELEBX
1259  INTEGER, INTENT(IN) :: NPOIN,NPTFR,ICONV,NFRLIQ
1260  INTEGER, INTENT(IN) :: LITBOR(nptfr),NBOR(nptfr)
1261  INTEGER, INTENT(INOUT) :: LIMTRA(nptfr),CLT(nptfr)
1262  INTEGER, INTENT(IN) :: IKLBOR(nelebx,2)
1263  INTEGER, INTENT(IN) :: KENT,KSORT,KLOG,KDIR,KDDL,KNEU
1264  INTEGER, INTENT(IN) :: NELBOR(nelebx),NUMLIQ(*)
1265  INTEGER, INTENT(IN) :: FRTYPE(nfrliq)
1266  DOUBLE PRECISION, INTENT(IN) :: U(npoin), V(npoin)
1267  DOUBLE PRECISION, INTENT(IN) :: XNEBOR(nptfr), YNEBOR(nptfr)
1268  DOUBLE PRECISION, INTENT(IN) :: MASKEL(*)
1269  LOGICAL, INTENT(IN) :: MSK,THOMFR
1270  END SUBROUTINE
1271 !
1272  INTEGER FUNCTION bief_dim1_ext(IELM1,IELM2,STO,TYPEXT,MESH)
1275  IMPLICIT NONE
1276  INTEGER, INTENT(IN) :: IELM1,IELM2,STO
1277  CHARACTER(LEN=1), INTENT(IN) :: TYPEXT
1278  TYPE(bief_mesh) , INTENT(IN) :: MESH
1279  END FUNCTION
1280 !
1281  INTEGER FUNCTION bief_dim2_ext(IELM1,IELM2,STO,TYPEXT,MESH)
1284  IMPLICIT NONE
1285  INTEGER, INTENT(IN) :: IELM1,IELM2,STO
1286  CHARACTER(LEN=1), INTENT(IN) :: TYPEXT
1287  TYPE(bief_mesh) , INTENT(IN) :: MESH
1288  END FUNCTION
1289 !
1290  INTEGER FUNCTION dimens( IELM )
1292  IMPLICIT NONE
1293  INTEGER, INTENT(IN) :: IELM
1294  END FUNCTION
1295 !
1296  SUBROUTINE diraux
1297  & ( x , y , z , w , f , indic , criter , mesh )
1300  IMPLICIT NONE
1301  TYPE(bief_obj) , INTENT(INOUT) :: X,W,F
1302  TYPE(bief_obj) , INTENT(IN) :: Y,Z
1303  INTEGER , INTENT(IN) :: INDIC(*),CRITER
1304  TYPE(bief_mesh), INTENT(IN) :: MESH
1305  END SUBROUTINE
1306 !
1307  SUBROUTINE diri01(F, S, SM ,FBOR,LIMDIR,
1308  & WORK1,WORK2,MESH,KDIR,MSK,MASKPT)
1311  IMPLICIT NONE
1312  TYPE(bief_obj), INTENT(INOUT) :: F,S,SM,WORK1,WORK2
1313  TYPE(bief_obj), INTENT(IN) :: FBOR,MASKPT
1314  INTEGER, INTENT(IN) :: LIMDIR(*), KDIR
1315  TYPE(bief_mesh), INTENT(INOUT) :: MESH
1316  LOGICAL, INTENT(IN) :: MSK
1317  END SUBROUTINE
1318 !
1319  SUBROUTINE diri04(X1,X2,
1320  & A11,A12,A21,A22,
1321  & SM1,SM2,T1,T2,T3,T4,
1322  & XBOR1,XBOR2,LIDIR1,LIDIR2,
1323  & MESH,KDIR,MSK,MASKPT)
1326  IMPLICIT NONE
1327  TYPE(bief_obj), INTENT(INOUT) ::X1,X2,SM1,SM2,T1,T2,T3,T4
1328  TYPE(bief_obj), INTENT(INOUT) ::A11,A12,A21,A22
1329  TYPE(bief_obj), INTENT(IN) ::XBOR1,XBOR2,MASKPT
1330  INTEGER, INTENT(IN) ::KDIR,LIDIR1(*),LIDIR2(*)
1331  TYPE(bief_mesh), INTENT(INOUT)::MESH
1332  LOGICAL, INTENT(IN) ::MSK
1333  END SUBROUTINE
1334 !
1335  SUBROUTINE diri09(X1,X2,X3,
1336  & A11,A12,A13,A21,A22,A23,A31,A32,A33,
1337  & SM1,SM2,SM3,T1,T2,T3,T4,T5,T6,
1338  & XBOR1,XBOR2,XBOR3,LIDIR1,LIDIR2,LIDIR3,
1339  & MESH,KDIR,MSK,MASKPT)
1342  IMPLICIT NONE
1343  TYPE(bief_obj), INTENT(INOUT) :: X1,X2,X3,SM1,SM2,SM3
1344  TYPE(bief_obj), INTENT(INOUT) :: T1,T2,T3,T4,T5,T6
1345  TYPE(bief_obj), INTENT(INOUT) :: A11,A12,A13,A21,A22
1346  TYPE(bief_obj), INTENT(INOUT) :: A23,A31,A32,A33
1347  TYPE(bief_obj), INTENT(IN) :: XBOR1,XBOR2,XBOR3,MASKPT
1348  INTEGER, INTENT(IN) :: LIDIR1(*),LIDIR2(*),LIDIR3(*)
1349  INTEGER, INTENT(IN) :: KDIR
1350  TYPE(bief_mesh), INTENT(INOUT):: MESH
1351  LOGICAL, INTENT(IN) :: MSK
1352  END SUBROUTINE
1353 !
1354  SUBROUTINE dirich(F,S,SM,FBOR,LIMDIR,WORK,MESH,
1355  & KDIR,MSK,MASKPT)
1358  IMPLICIT NONE
1359  TYPE(bief_mesh), INTENT(INOUT) :: MESH
1360  INTEGER , INTENT(IN) :: KDIR,LIMDIR(mesh%nptfrx,*)
1361  LOGICAL , INTENT(IN) :: MSK
1362  TYPE(bief_obj) , INTENT(INOUT) :: WORK
1363  TYPE(bief_obj) , INTENT(INOUT) :: F,SM,S
1364  TYPE(bief_obj) , INTENT(IN) :: FBOR,MASKPT
1365  END SUBROUTINE
1366 !
1367  SUBROUTINE dldu11(DB,XB,TYPDIA,XA,TYPEXA,
1368  & IKLE,NELEM,NELMAX,NPOIN,W,COPY,LV)
1370  IMPLICIT NONE
1371  INTEGER, INTENT(IN) :: NELEM,NELMAX,LV,NPOIN
1372  DOUBLE PRECISION, INTENT(INOUT) :: DB(npoin),XB(nelmax,*)
1373  DOUBLE PRECISION, INTENT(IN) :: XA(nelmax,*)
1374  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXA
1375  INTEGER, INTENT(IN) :: IKLE(nelmax,*)
1376  DOUBLE PRECISION, INTENT(OUT) :: W(nelmax,3)
1377  LOGICAL, INTENT(IN) :: COPY
1378  END SUBROUTINE
1379 !
1380  SUBROUTINE dldu21(DB,XB,TYPDIA,XA,TYPEXA,
1381  & IKLE,NELEM,NELMAX,NPOIN,W,COPY,LV)
1383  IMPLICIT NONE
1384  INTEGER, INTENT(IN) :: NELEM,NELMAX,LV,NPOIN
1385  DOUBLE PRECISION, INTENT(INOUT) :: DB(npoin),XB(nelmax,*)
1386  DOUBLE PRECISION, INTENT(IN) :: XA(nelmax,*)
1387  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXA
1388  INTEGER, INTENT(IN) :: IKLE(nelmax,*)
1389  DOUBLE PRECISION, INTENT(OUT) :: W(nelmax,4)
1390  LOGICAL, INTENT(IN) :: COPY
1391  END SUBROUTINE
1392 !
1393  SUBROUTINE dldu41(DB,XB,TYPDIA,XA,TYPEXA,
1394  & IKLE,NELEM,NELMAX,NPOIN,W,COPY,LV)
1396  IMPLICIT NONE
1397  INTEGER, INTENT(IN) :: NELEM,NELMAX,LV,NPOIN
1398  DOUBLE PRECISION, INTENT(INOUT) :: DB(npoin),XB(nelmax,*)
1399  DOUBLE PRECISION, INTENT(IN) :: XA(nelmax,*)
1400  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXA
1401  INTEGER, INTENT(IN) :: IKLE(nelmax,*)
1402  DOUBLE PRECISION, INTENT(OUT) :: W(nelmax,6)
1403  LOGICAL, INTENT(IN) :: COPY
1404  END SUBROUTINE
1405 !
1406  SUBROUTINE dlduseg
1407  &(db,xb,typdia,xa,typexa,gloseg,nseg,npoin,copy)
1409  IMPLICIT NONE
1410  INTEGER, INTENT(IN) :: NSEG,NPOIN
1411  DOUBLE PRECISION, INTENT(INOUT) :: DB(npoin),XB(nseg,*)
1412  DOUBLE PRECISION, INTENT(IN) :: XA(nseg,*)
1413  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXA
1414  INTEGER, INTENT(IN) :: GLOSEG(nseg,2)
1415  LOGICAL, INTENT(IN) :: COPY
1416  END SUBROUTINE
1417 !
1418  DOUBLE PRECISION FUNCTION dmo(T)
1420  IMPLICIT NONE
1421  DOUBLE PRECISION, INTENT(IN) :: T
1422  END FUNCTION
1423 !
1424  DOUBLE PRECISION FUNCTION dot(NPOIN,X,Y)
1426  IMPLICIT NONE
1427  INTEGER, INTENT(IN) :: NPOIN
1428  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin)
1429  END FUNCTION
1430 !
1431  DOUBLE PRECISION FUNCTION dot_comp(NPOIN,X,Y)
1432  IMPLICIT NONE
1433  INTEGER, INTENT(IN) :: NPOIN
1434  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin)
1435  END FUNCTION
1436 !
1437  DOUBLE PRECISION FUNCTION dots( X , Y )
1440  IMPLICIT NONE
1441  TYPE(bief_obj), INTENT(IN) :: X,Y
1442  END FUNCTION
1443 !
1444  SUBROUTINE double_to_integer(X,IX,N,QT,NSUM)
1446  IMPLICIT NONE
1447  INTEGER , INTENT(IN) :: N,NSUM
1448  INTEGER(KIND=K8), INTENT(INOUT) :: IX(n)
1449  DOUBLE PRECISION, INTENT(IN) :: X(n)
1450  DOUBLE PRECISION, INTENT(INOUT) :: QT
1451  END SUBROUTINE
1452 !
1453  SUBROUTINE downup(X, A,B ,DITR,MESH)
1456  IMPLICIT NONE
1457  TYPE(bief_obj), INTENT(INOUT) :: X
1458  TYPE(bief_obj), INTENT(IN) :: A,B
1459  TYPE(bief_mesh), INTENT(IN) :: MESH
1460  CHARACTER(LEN=1), INTENT(IN) :: DITR
1461  END SUBROUTINE
1462 !
1463  SUBROUTINE dwnup1(X, A,B ,DITR,MESH)
1466  IMPLICIT NONE
1467  TYPE(bief_obj), INTENT(INOUT) :: X
1468  TYPE(bief_obj), INTENT(IN) :: B,A
1469  TYPE(bief_mesh), INTENT(IN) :: MESH
1470  CHARACTER(LEN=1), INTENT(IN) :: DITR
1471  END SUBROUTINE
1472 !
1473  SUBROUTINE ecrgeo(X,Y,NPOIN,NBOR,NFIC,FFORMAT,NVAR,
1474  & TEXTE,VARCLA,NVARCL,
1475  & TITRE,SORLEO,NSOR,IKLE,NELEM,NPTFR,NDP,DATE,TIME,
1476  & NCSIZE,NPTIR,KNOLG,NPLAN,I3,I4)
1478  IMPLICIT NONE
1479  INTEGER, INTENT(IN) :: NPOIN,NFIC,NVARCL,NSOR,NELEM,NPTFR,NDP
1480  CHARACTER(LEN=8) :: FFORMAT
1481  INTEGER, INTENT(OUT) :: NVAR
1482  DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*)
1483 ! IKLE(NELEM,NDP)
1484  INTEGER, INTENT(IN) :: NBOR(*),IKLE(*)
1485  CHARACTER(LEN=32), INTENT(IN) :: TEXTE(*),VARCLA(nvarcl)
1486 ! NSOR NSOR+NVARCL
1487  CHARACTER(LEN=72), INTENT(IN) :: TITRE
1488  LOGICAL, INTENT(IN) :: SORLEO(*)
1489  INTEGER, INTENT(IN) :: NCSIZE,NPTIR
1490  INTEGER, INTENT(IN) :: TIME(3),DATE(3)
1491  INTEGER, INTENT(IN) :: KNOLG(npoin)
1492  INTEGER, INTENT(IN), OPTIONAL :: NPLAN,I3,I4
1493  END SUBROUTINE
1494 !
1495  SUBROUTINE elapse(TDEB,TFIN)
1497  IMPLICIT NONE
1498  INTEGER, INTENT(IN) :: TDEB(8),TFIN(8)
1499  END SUBROUTINE
1500 !
1501  SUBROUTINE eleb3dt
1502  &(ikle3,nbor,nelbor,nelbor2d,iklbor,neleb,nelebx,nulone,
1503  & nelem2,npoin2,nplan,netage,nptfr,iklbor2d,neleb2d,nelebx2d)
1505  IMPLICIT NONE
1506  INTEGER, INTENT(IN) :: NELEM2,NPOIN2,NPLAN,NETAGE,NPTFR
1507  INTEGER, INTENT(IN) :: NELEBX,NELEB2D,NELEBX2D
1508  INTEGER, INTENT(INOUT) :: NELEB
1509  INTEGER, INTENT(INOUT) :: IKLE3(nelem2,3,netage,4)
1510  INTEGER, INTENT(INOUT) :: IKLBOR(nelebx,3)
1511  INTEGER, INTENT(IN) :: IKLBOR2D(nelebx2d,2),NELBOR2D(nelebx2d)
1512  INTEGER, INTENT(INOUT) :: NULONE(nelebx,3),NELBOR(nelebx)
1513  INTEGER, INTENT(INOUT) :: NBOR(nptfr*nplan)
1514  END SUBROUTINE
1515 !
1516  SUBROUTINE eleb3d
1517  &(ikle3,nbor,nelbor,iklbor,neleb,nelebx,nulone,
1518  & nelem2,npoin2,nplan,netage,nptfr)
1520  IMPLICIT NONE
1521  INTEGER, INTENT(IN) :: NELEM2,NPOIN2,NPLAN,NETAGE,NPTFR
1522  INTEGER, INTENT(IN) :: NELEBX
1523  INTEGER, INTENT(INOUT) :: NELEB
1524  INTEGER, INTENT(INOUT) :: IKLE3(nelem2,netage,6)
1525  INTEGER, INTENT(INOUT) :: IKLBOR(nelebx,4),NULONE(nelebx,4)
1526  INTEGER, INTENT(INOUT) :: NELBOR(nelebx),NBOR(nptfr*nplan)
1527  END SUBROUTINE
1528 !
1529  SUBROUTINE elebd31
1530  &(nelbor,nulone,iklbor,ifabor,nbor,ikle,
1531  & nelem,neleb,nelmax,npoin,nptfr,ielm)
1533  IMPLICIT NONE
1534  INTEGER, INTENT(IN) :: NELEM,NELEB,NELMAX
1535  INTEGER, INTENT(IN) :: NPOIN,NPTFR,IELM
1536  INTEGER, INTENT(IN) :: NBOR(nptfr)
1537  INTEGER, INTENT(IN) :: IFABOR(nelmax,4)
1538  INTEGER, INTENT(IN) :: IKLE(nelem,4)
1539  INTEGER, INTENT(OUT) :: NELBOR(neleb),NULONE(neleb,3)
1540  INTEGER, INTENT(OUT) :: IKLBOR(neleb,3)
1541  END SUBROUTINE
1542 !
1543  SUBROUTINE elebd
1544  &(nelbor,nulone,kp1bor,ifabor,nbor,ikle,sizikl,iklbor,nelem,nelmax,
1545  & npoin,nptfr,ielm,lihbor,klog,iseg,t1,t2,t3,nelebx,
1546  & neleb)
1548  IMPLICIT NONE
1549  INTEGER, INTENT(IN) :: KLOG,NELMAX,NELEM,SIZIKL,NELEBX
1550  INTEGER, INTENT(INOUT) :: NELEB
1551  INTEGER, INTENT(IN) :: NPOIN,NPTFR,IELM
1552  INTEGER, INTENT(INOUT) :: NELBOR(nelebx),NULONE(nelebx,2)
1553  INTEGER, INTENT(INOUT) :: KP1BOR(nptfr,2)
1554  INTEGER, INTENT(INOUT) :: NBOR(*)
1555  INTEGER, INTENT(INOUT) :: IFABOR(nelmax,*)
1556  INTEGER, INTENT(IN) :: IKLE(sizikl,*)
1557  INTEGER, INTENT(IN) :: LIHBOR(nptfr)
1558  INTEGER, INTENT(INOUT) :: IKLBOR(nelebx,2)
1559  INTEGER, INTENT(IN) :: ISEG(nptfr)
1560  INTEGER, INTENT(INOUT) :: T1(npoin),T2(npoin),T3(npoin)
1561  END SUBROUTINE
1562 !
1563  LOGICAL FUNCTION bief_eof(LUNIT)
1565  IMPLICIT NONE
1566  INTEGER, INTENT(IN) :: LUNIT
1567  END FUNCTION
1568 !
1569  SUBROUTINE equnor(X, A,B , MESH, D,AD,AG,G,R, CFG,INFOGR,AUX)
1572  IMPLICIT NONE
1573  TYPE(slvcfg), INTENT(INOUT) :: CFG
1574  TYPE(bief_obj), INTENT(INOUT) :: B
1575  TYPE(bief_obj), INTENT(INOUT) :: D,AD,G,AG,R,X
1576  TYPE(bief_mesh), INTENT(INOUT) :: MESH
1577  TYPE(bief_obj), INTENT(IN) :: A
1578  TYPE(bief_obj), INTENT(INOUT) :: AUX
1579  LOGICAL, INTENT(IN) :: INFOGR
1580  END SUBROUTINE
1581 !
1582  SUBROUTINE errmax(X1,X2,ERR,IERR)
1585  IMPLICIT NONE
1586  INTEGER , INTENT(OUT) :: IERR
1587  DOUBLE PRECISION , INTENT(OUT) :: ERR
1588  type(bief_obj) , INTENT(IN) :: x1,x2
1589  END SUBROUTINE
1590 !
1591  SUBROUTINE errmin(X, A,B , MESH, D,AD,G,R, CFG,INFOGR,AUX)
1594  IMPLICIT NONE
1595  TYPE(slvcfg), INTENT(INOUT) :: CFG
1596  TYPE(bief_obj), INTENT(INOUT) :: B
1597  TYPE(bief_obj), INTENT(INOUT) :: D,AD,G,R,X
1598  TYPE(bief_mesh), INTENT(INOUT) :: MESH
1599  TYPE(bief_obj), INTENT(IN) :: A
1600  TYPE(bief_obj), INTENT(INOUT) :: AUX
1601  LOGICAL, INTENT(IN) :: INFOGR
1602  END SUBROUTINE
1603 !
1604  SUBROUTINE fasp(X,Y,ZF,NPOIN,XRELV,YRELV,ZRELV,NP,NBOR,KP1BOR,
1605  & NPTFR,DM)
1607  IMPLICIT NONE
1608  INTEGER, INTENT(IN) :: NPOIN,NP,NPTFR
1609  INTEGER, INTENT(IN) :: NBOR(nptfr),KP1BOR(nptfr)
1610  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin),DM
1611  DOUBLE PRECISION, INTENT(IN) :: XRELV(np),YRELV(np),ZRELV(np)
1612  DOUBLE PRECISION, INTENT(OUT) :: ZF(npoin)
1613  END SUBROUTINE
1614 !
1615  SUBROUTINE filpol( F , C , XSOM , YSOM , NSOM , MESH )
1618  IMPLICIT NONE
1619  INTEGER, INTENT(IN) :: NSOM
1620  DOUBLE PRECISION, INTENT(IN) :: C,XSOM(*),YSOM(*)
1621  TYPE(bief_obj), INTENT(INOUT) :: F
1622  TYPE(bief_mesh), INTENT(IN) :: MESH
1623  END SUBROUTINE
1624 !
1625  SUBROUTINE filp10
1626  &( f , c , xsom , ysom , nsom , x , y , nelem , nelmax , ikle )
1628  IMPLICIT NONE
1629  INTEGER, INTENT(IN) :: NSOM , NELEM , NELMAX
1630  DOUBLE PRECISION, INTENT(INOUT) :: F(*)
1631  DOUBLE PRECISION, INTENT(IN) :: X(*) , Y(*)
1632  DOUBLE PRECISION, INTENT(IN) :: XSOM(nsom) , YSOM(nsom) , C
1633  INTEGER, INTENT(IN) :: IKLE(nelmax,3)
1634  END SUBROUTINE
1635 !
1636  SUBROUTINE filp11( F , C , XSOM , YSOM , NSOM , X , Y , NPOIN )
1638  IMPLICIT NONE
1639  INTEGER, INTENT(IN) :: NSOM , NPOIN
1640  DOUBLE PRECISION, INTENT(INOUT) :: F(*)
1641  DOUBLE PRECISION, INTENT(IN) :: X(*) , Y(*)
1642  DOUBLE PRECISION, INTENT(IN) :: XSOM(nsom) , YSOM(nsom),C
1643  END SUBROUTINE
1644 !
1645  SUBROUTINE filp12
1646  &(f,c,xsom,ysom,nsom,x,y,npoin,nelem,nelmax,ikle)
1648  IMPLICIT NONE
1649  INTEGER, INTENT(IN) :: NSOM , NELEM , NELMAX , NPOIN
1650  DOUBLE PRECISION, INTENT(INOUT) :: F(*)
1651  DOUBLE PRECISION, INTENT(IN) :: X(*) , Y(*)
1652  DOUBLE PRECISION, INTENT(IN) :: XSOM(nsom) , YSOM(nsom) , C
1653  INTEGER, INTENT(IN) :: IKLE(nelmax,4)
1654  END SUBROUTINE
1655 !
1656  SUBROUTINE filter
1657  & (vec,bldmat,t1,t2,a,formul,xmul,f,g,h,u,v,w,mesh,msk,maskel,n)
1660  IMPLICIT NONE
1661  INTEGER, INTENT(IN) :: N
1662  DOUBLE PRECISION, INTENT(IN) :: XMUL
1663  LOGICAL, INTENT(IN) :: BLDMAT,MSK
1664  CHARACTER(LEN=16), INTENT(IN) :: FORMUL
1665  TYPE(bief_mesh), INTENT(INOUT):: MESH
1666  TYPE(bief_obj), INTENT(INOUT) :: VEC,A,T1,T2
1667  TYPE(bief_obj), INTENT(IN) :: F,G,H,U,V,W,MASKEL
1668  END SUBROUTINE
1669 !
1670  SUBROUTINE find_in_sel(RES,NAME,NFIC,FFORMAT,
1671  & W,OK,RECORD,NP,TIME)
1674  IMPLICIT NONE
1675  TYPE(bief_obj), INTENT(INOUT) :: RES
1676  CHARACTER(LEN=16), INTENT(IN) :: NAME
1677  LOGICAL, INTENT(OUT) :: OK
1678  REAL, INTENT(INOUT) :: W(*)
1679  INTEGER, INTENT(IN) :: NFIC
1680  INTEGER, INTENT(IN), OPTIONAL :: RECORD
1681  INTEGER, INTENT(OUT), OPTIONAL :: NP
1682  DOUBLE PRECISION, INTENT(OUT), OPTIONAL :: TIME
1683  CHARACTER(LEN=8), INTENT(IN) :: FFORMAT
1684  END SUBROUTINE
1685 !
1686  SUBROUTINE first_all_biefobj(OBJ)
1688  IMPLICIT NONE
1689  TYPE(bief_obj), POINTER, INTENT(INOUT) :: OBJ
1690  END SUBROUTINE
1691 !
1692  SUBROUTINE flux_mask(FXMAT,NSEG,GLOSEG,SIZGLO,MASKPT)
1694  IMPLICIT NONE
1695  INTEGER, INTENT(IN) ::NSEG,SIZGLO
1696  INTEGER, INTENT(IN) ::GLOSEG(sizglo,2)
1697  DOUBLE PRECISION, INTENT(INOUT)::FXMAT(nseg)
1698  DOUBLE PRECISION, INTENT(IN) ::MASKPT(*)
1699  END SUBROUTINE
1700 !
1701  SUBROUTINE fluxpr
1702  &(nsec,ctrlsc,flx,volneg,volpos,info,tps,nseg,ncsize,cumflo)
1704  IMPLICIT NONE
1705  INTEGER, INTENT(IN) :: NSEC,NCSIZE
1706  INTEGER, INTENT(IN) :: CTRLSC(*)
1707  INTEGER, INTENT(IN) :: NSEG(nsec)
1708  LOGICAL, INTENT(IN) :: INFO,CUMFLO
1709  DOUBLE PRECISION, INTENT(IN) :: FLX(nsec),TPS
1710  DOUBLE PRECISION, INTENT(IN) :: VOLNEG(nsec),VOLPOS(nsec)
1711  END SUBROUTINE
1712 !
1713  SUBROUTINE flux_ef_vf
1714  &(flow,phiel,nseg,nelem,nelmax,eltseg,oriseg,ikle,iniflo,iopt,fn,
1715  & yaflulim,flulim,yaflulimebe,flulimebe)
1717  IMPLICIT NONE
1718  INTEGER, INTENT(IN) :: NSEG,IOPT,NELEM,NELMAX
1719  INTEGER, INTENT(IN) :: ELTSEG(nelmax,3)
1720  INTEGER, INTENT(IN) :: ORISEG(nelmax,3)
1721  INTEGER, INTENT(IN) :: IKLE(nelmax,3)
1722  DOUBLE PRECISION, INTENT(INOUT) :: FLOW(nseg)
1723  DOUBLE PRECISION, INTENT(IN) :: PHIEL(nelmax,3)
1724  LOGICAL, INTENT(IN) :: INIFLO
1725  TYPE(bief_obj), INTENT(IN), OPTIONAL :: FN
1726  DOUBLE PRECISION, INTENT(IN), OPTIONAL :: FLULIMEBE(*)
1727  DOUBLE PRECISION, INTENT(IN), OPTIONAL :: FLULIM(*)
1728  LOGICAL, INTENT(IN), OPTIONAL :: YAFLULIM,YAFLULIMEBE
1729  END SUBROUTINE
1730 !
1731  SUBROUTINE flux_ef_vf_2
1732  &(phiel,nelem,nelmax,ikle,iopt,npoin,fn,fi_i,fstar,hn,h,su,
1733  & teta,dfdt)
1736  IMPLICIT NONE
1737  INTEGER, INTENT(IN) :: IOPT,NELEM,NELMAX
1738  INTEGER, INTENT(IN) :: IKLE(nelmax,3)
1739  INTEGER, INTENT(IN) :: NPOIN
1740  DOUBLE PRECISION, INTENT(IN) :: PHIEL(nelmax,3)
1741  TYPE(bief_obj), INTENT(IN) :: FN
1742  DOUBLE PRECISION, INTENT(INOUT) :: FI_I(npoin)
1743  DOUBLE PRECISION, INTENT(INOUT) :: FSTAR(npoin),H(npoin),HN(npoin)
1744  DOUBLE PRECISION, INTENT(IN) :: SU(nelem),DFDT(npoin),TETA
1745  END SUBROUTINE
1746 !
1747  SUBROUTINE flux_ef_vf_3
1748  &(phiel,nelem,nelmax,eltseg,oriseg,fxmatpar,nseg,ikle,npoin,
1749  & fn,fi_i,su,hdfdt,teta,yaflulim,flulim,yaflulimebe,flulimebe)
1751  IMPLICIT NONE
1752  INTEGER, INTENT(IN) :: NELEM,NELMAX,NPOIN,NSEG
1753  INTEGER, INTENT(IN) :: IKLE(nelmax,3)
1754  INTEGER, INTENT(IN) :: ELTSEG(nelmax,3)
1755  INTEGER, INTENT(IN) :: ORISEG(nelmax,3)
1756  LOGICAL, INTENT(IN) :: YAFLULIM,YAFLULIMEBE
1757  DOUBLE PRECISION, INTENT(IN) :: PHIEL(nelmax,3),TETA(npoin)
1758  DOUBLE PRECISION, INTENT(IN) :: FLULIMEBE(*)
1759  DOUBLE PRECISION, INTENT(IN) :: FXMATPAR(nseg),FLULIM(*)
1760  DOUBLE PRECISION, INTENT(INOUT) :: FI_I(npoin)
1761  DOUBLE PRECISION, INTENT(IN) :: SU(nelem),HDFDT(npoin)
1762  TYPE(bief_obj), INTENT(IN) :: FN
1763  END SUBROUTINE
1764 !
1765  SUBROUTINE flux_ef_vf_3d
1766  &(flow,w2d,w3d,nseg2d,nelem2,nelmax2,mesh2d,iniflo,
1767  & iopt,sens,ielm3,nplan,ikle,nelmax,knolg)
1770  IMPLICIT NONE
1771  INTEGER, INTENT(IN) :: NSEG2D,NELEM2
1772 ! *=NSEG2D*NPLAN+NPOIN2*NETAGE
1773  INTEGER, INTENT(IN) :: IOPT,SENS,IELM3,NPLAN,NELMAX
1774  INTEGER, INTENT(IN) :: NELMAX2
1775  INTEGER, INTENT(IN) :: IKLE(nelmax,*),KNOLG(*)
1776  DOUBLE PRECISION, INTENT(INOUT) :: FLOW(*)
1777 ! 6 IF IELM3=41
1778 ! 4 IF IELM3=51
1779  DOUBLE PRECISION, INTENT(IN) :: W3D(nelmax,*)
1780  DOUBLE PRECISION, INTENT(INOUT) :: W2D(nelmax2,3)
1781  LOGICAL, INTENT(IN) :: INIFLO
1782  TYPE(bief_mesh), INTENT(INOUT) :: MESH2D
1783  END SUBROUTINE
1784 !
1785  SUBROUTINE fond(ZF,X,Y,NPOIN,NFON,NBOR,KP1BOR,NPTFR)
1788  IMPLICIT NONE
1789  INTEGER, INTENT(IN) :: NFON,NPOIN,NPTFR
1790  DOUBLE PRECISION, INTENT(OUT) :: ZF(npoin)
1791  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin)
1792  INTEGER, INTENT(IN) :: NBOR(nptfr),KP1BOR(nptfr)
1793  END SUBROUTINE
1794 !
1795  SUBROUTINE fonstr
1796  &(h,zf,z,chestr,ngeo,fformat,nfon,nomfon,mesh,ffon,listin,
1797  & n_names_priv,names_prive,prive)
1800  IMPLICIT NONE
1801  TYPE(bief_obj), INTENT(INOUT) :: H,ZF,Z,CHESTR,PRIVE
1802  TYPE(bief_mesh), INTENT(IN) :: MESH
1803  DOUBLE PRECISION, INTENT(IN) :: FFON
1804  LOGICAL, INTENT(IN) :: LISTIN
1805  INTEGER, INTENT(IN) :: NGEO,NFON,N_NAMES_PRIV
1806  CHARACTER(LEN=72), INTENT(IN) :: NOMFON
1807  CHARACTER(LEN=32), INTENT(IN) :: NAMES_PRIVE(4)
1808  CHARACTER(LEN=8), INTENT(IN) :: FFORMAT
1809  END SUBROUTINE
1810 !
1811  SUBROUTINE front2
1812  &(nfrliq,lihbor,liubor,
1813  & x,y,nbor,kp1bor,dejavu,npoin,nptfr,klog,listin,numliq,
1814  & maxfro)
1816  IMPLICIT NONE
1817  INTEGER, INTENT(IN) :: NPOIN,NPTFR,KLOG,MAXFRO
1818  INTEGER, INTENT(OUT) :: NFRLIQ
1819  INTEGER , INTENT(IN) :: LIHBOR(nptfr),LIUBOR(nptfr)
1820  DOUBLE PRECISION, INTENT(IN) :: X(npoin) , Y(npoin)
1821  INTEGER, INTENT(IN) :: NBOR(nptfr),KP1BOR(nptfr)
1822  INTEGER, INTENT(OUT) :: DEJAVU(nptfr)
1823  LOGICAL, INTENT(IN) :: LISTIN
1824  INTEGER, INTENT(OUT) :: NUMLIQ(nptfr)
1825  END SUBROUTINE
1826 !
1827  SUBROUTINE fropro
1828  &(nbor,ikle,nelem,nelmax,npoin,npmax,nptfr,ielm,
1829  & iklem1,limvoi,optass,produc,mxptvs,t1,
1830  & gloseg,sizglo,nseg)
1832  IMPLICIT NONE
1833  INTEGER, INTENT(IN) :: NELMAX,NPMAX,MXPTVS,NELEM
1834  INTEGER, INTENT(IN) :: NPOIN,NPTFR,IELM,OPTASS,PRODUC
1835  INTEGER, INTENT(IN) :: NSEG,SIZGLO
1836  INTEGER, INTENT(IN) :: NBOR(*)
1837  INTEGER, INTENT(IN) :: IKLE(nelmax,*),GLOSEG(sizglo,2)
1838  INTEGER, INTENT(OUT) :: IKLEM1(npmax,mxptvs,4,2)
1839  INTEGER, INTENT(OUT) :: LIMVOI(11,2)
1840  INTEGER, INTENT(OUT) :: T1(npoin)
1841  END SUBROUTINE
1842 !
1843  SUBROUTINE geoelt(SURDET,SURFAC,XEL,YEL,NELEM,NELMAX,IELM)
1845  IMPLICIT NONE
1846  INTEGER, INTENT(IN) :: IELM,NELEM,NELMAX
1847  DOUBLE PRECISION, INTENT(OUT) :: SURDET(nelem),SURFAC(nelem)
1848  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,*),YEL(nelmax,*)
1849  END SUBROUTINE
1850 !
1851  SUBROUTINE gettri
1852  &(m,mdiff,teta,mesh3d,nplan,npoin2,nseg2d,ielm3,nelem2)
1855  IMPLICIT NONE
1856  INTEGER, INTENT(IN) :: NPLAN,NPOIN2,NSEG2D,IELM3,NELEM2
1857  DOUBLE PRECISION, INTENT(IN) :: TETA
1858  DOUBLE PRECISION, INTENT(INOUT) :: M(npoin2*nplan,*)
1859  TYPE(bief_obj), INTENT(INOUT) :: MDIFF
1860  TYPE(bief_mesh), INTENT(INOUT) :: MESH3D
1861  END SUBROUTINE
1862 !
1863  SUBROUTINE gettriebe
1864  &(xaux,ad,ax,teta,ikle,npoin,nelem,nelmax,mesh,ielm3,nelem2,
1865  & nplan,knolg)
1868  IMPLICIT NONE
1869  INTEGER, INTENT(IN) :: NELEM,NELMAX,NPOIN,IELM3,NELEM2
1870  INTEGER, INTENT(IN) :: IKLE(nelmax,*),NPLAN,KNOLG(npoin)
1871  DOUBLE PRECISION, INTENT(IN) :: TETA
1872  DOUBLE PRECISION, INTENT(INOUT) :: XAUX(npoin,*),AX(nelmax,*)
1873  DOUBLE PRECISION, INTENT(INOUT) :: AD(npoin)
1874  TYPE(bief_mesh) :: MESH
1875  END SUBROUTINE
1876 !
1877  SUBROUTINE gettriseg
1878  &(xaux,ad,ax,teta,npoin,mesh,nseg3d,nseg2d,nplan,npoin2,ielm3)
1881  IMPLICIT NONE
1882  INTEGER, INTENT(IN) :: NPOIN,NSEG3D,NSEG2D,NPLAN,NPOIN2,IELM3
1883  DOUBLE PRECISION, INTENT(IN) :: TETA
1884  DOUBLE PRECISION, INTENT(INOUT) :: XAUX(npoin,*),AX(nseg3d)
1885  DOUBLE PRECISION, INTENT(INOUT) :: AD(npoin)
1886  TYPE(bief_mesh), INTENT(INOUT) :: MESH
1887  END SUBROUTINE
1888 !
1889  INTEGER FUNCTION global_to_local_point(IPOIN,MESH)
1892  IMPLICIT NONE
1893  INTEGER , INTENT(IN) :: IPOIN
1894  TYPE(bief_mesh) , INTENT(IN) :: MESH
1895  END FUNCTION
1896 !
1897  SUBROUTINE gmres(X,A,B,MESH,R0,V,AV,CFG,INFOGR,AUX)
1900  IMPLICIT NONE
1901  TYPE(slvcfg), INTENT(INOUT) :: CFG
1902  TYPE(bief_obj), INTENT(INOUT) :: B
1903  TYPE(bief_obj), INTENT(INOUT) :: X,V,AV,R0
1904  TYPE(bief_mesh), INTENT(INOUT) :: MESH
1905  TYPE(bief_obj), INTENT(IN) :: A
1906  TYPE(bief_obj), INTENT(INOUT) :: AUX
1907  LOGICAL, INTENT(IN) :: INFOGR
1908  END SUBROUTINE
1909 !
1910  SUBROUTINE godown(X, A,B ,DITR,MESH,COPY)
1913  IMPLICIT NONE
1914  TYPE(bief_obj), INTENT(INOUT) :: X
1915  TYPE(bief_obj), INTENT(IN) :: B,A
1916  TYPE(bief_mesh), INTENT(IN) :: MESH
1917  CHARACTER(LEN=1), INTENT(IN) :: DITR
1918  LOGICAL, INTENT(IN) :: COPY
1919  END SUBROUTINE
1920 !
1921  SUBROUTINE godwn1(X, A,B ,DITR,MESH,COPY)
1924  IMPLICIT NONE
1925  TYPE(bief_obj), INTENT(INOUT) :: X
1926  TYPE(bief_obj), INTENT(IN) :: B,A
1927  TYPE(bief_mesh), INTENT(IN) :: MESH
1928  CHARACTER(LEN=1), INTENT(IN) :: DITR
1929  LOGICAL, INTENT(IN) :: COPY
1930  END SUBROUTINE
1931 !
1932  SUBROUTINE goup(X, A,B ,DITR,MESH,COPY)
1935  IMPLICIT NONE
1936  TYPE(bief_obj), INTENT(INOUT) :: X
1937  TYPE(bief_obj), INTENT(IN) :: A,B
1938  TYPE(bief_mesh), INTENT(IN) :: MESH
1939  CHARACTER(LEN=1), INTENT(IN) :: DITR
1940  LOGICAL, INTENT(IN) :: COPY
1941  END SUBROUTINE
1942 !
1943  SUBROUTINE goup1(X, A,B ,DITR,MESH,COPY)
1946  IMPLICIT NONE
1947  TYPE(bief_obj), INTENT(INOUT) :: X
1948  TYPE(bief_obj), INTENT(IN) :: B
1949  TYPE(bief_obj), INTENT(IN) :: A
1950  TYPE(bief_mesh), INTENT(IN) :: MESH
1951  CHARACTER(LEN=1), INTENT(IN) :: DITR
1952  LOGICAL, INTENT(IN) :: COPY
1953  END SUBROUTINE
1954 !
1955  SUBROUTINE gracjg(X, A,B , MESH, D,AD,G,R, CFG,INFOGR,AUX)
1958  IMPLICIT NONE
1959  TYPE(slvcfg), INTENT(INOUT) :: CFG
1960  TYPE(bief_obj), INTENT(INOUT) :: B
1961  TYPE(bief_obj), INTENT(INOUT) :: D,AD,G,R,X
1962  TYPE(bief_mesh), INTENT(INOUT) :: MESH
1963  TYPE(bief_obj), INTENT(IN) :: A
1964  TYPE(bief_obj), INTENT(INOUT) :: AUX
1965  LOGICAL, INTENT(IN) :: INFOGR
1966  END SUBROUTINE
1967 !
1968  SUBROUTINE gradp(NS,NT,NU,AIRT,X,Y,DPX,DPY)
1970  IMPLICIT NONE
1971  INTEGER, INTENT(IN) :: NS,NT,NU(nt,3)
1972  DOUBLE PRECISION, INTENT(IN) :: X(ns),Y(ns),AIRT(nt)
1973  DOUBLE PRECISION, INTENT(OUT) :: DPX(3,nt),DPY(3,nt)
1974  END SUBROUTINE
1975 !
1976  SUBROUTINE gsebe(B,A,MESH)
1979  IMPLICIT NONE
1980  TYPE(bief_obj), INTENT(IN) :: A
1981  TYPE(bief_obj), INTENT(INOUT) :: B
1982  TYPE(bief_mesh), INTENT(IN) :: MESH
1983  END SUBROUTINE
1984 !
1985  SUBROUTINE gtsh11
1986  &(shp,elt,ikle,eltcar,npoin,nelem,nelmax,nseg,quab,quad)
1988  IMPLICIT NONE
1989  INTEGER, INTENT(IN) :: NPOIN,NELEM,NELMAX,NSEG
1990  INTEGER, INTENT(IN) :: IKLE(nelmax,*),ELTCAR(npoin)
1991  INTEGER, INTENT(INOUT) :: ELT(npoin)
1992  DOUBLE PRECISION, INTENT(INOUT) :: SHP(3,npoin)
1993  LOGICAL, INTENT(IN) :: QUAB,QUAD
1994  END SUBROUTINE
1995 !
1996  SUBROUTINE gtsh41
1997  &(shp,shz,shf,ws,fs,elt,eta,fre,ikle,eltcar,
1998  & npoin2,nelmax2,nplan,jf,nf,ya4d)
2000  IMPLICIT NONE
2001  INTEGER, INTENT(IN) :: NPOIN2,NELMAX2,NPLAN,JF,NF
2002  INTEGER, INTENT(IN) :: IKLE(nelmax2,*),ELTCAR(*)
2003  INTEGER, INTENT(INOUT) :: ELT(npoin2,nplan)
2004  INTEGER, INTENT(INOUT) :: ETA(npoin2,nplan)
2005  INTEGER, INTENT(INOUT) :: FRE(npoin2,nplan)
2006  DOUBLE PRECISION, INTENT(INOUT) :: SHP(3,npoin2,nplan)
2007  DOUBLE PRECISION, INTENT(INOUT) :: SHZ(npoin2,nplan)
2008  DOUBLE PRECISION, INTENT(INOUT) :: SHF(npoin2,nplan)
2009  DOUBLE PRECISION, INTENT(IN) :: WS(npoin2,nplan)
2010  DOUBLE PRECISION, INTENT(IN) :: FS(npoin2,nplan)
2011  LOGICAL , INTENT(IN) :: YA4D
2012  END SUBROUTINE
2013 !
2014  SUBROUTINE hloc
2015  &(npoin,nseg,nelem,nubo,vnocl,airs,dthaut,mesh,eltseg,ifabor)
2018  IMPLICIT NONE
2019  INTEGER, INTENT(IN) :: NSEG,NPOIN
2020  INTEGER, INTENT(IN) :: NUBO(2,*)
2021  INTEGER, INTENT(IN) :: NELEM
2022  INTEGER, INTENT(IN) :: ELTSEG(nelem,3)
2023  DOUBLE PRECISION, INTENT(IN) :: VNOCL(3,*)
2024  DOUBLE PRECISION, INTENT(IN) :: AIRS(npoin)
2025  DOUBLE PRECISION, INTENT(OUT) :: DTHAUT(npoin)
2026  TYPE(bief_mesh), INTENT(INOUT) :: MESH
2027  INTEGER, INTENT(IN) :: IFABOR(nelem,3)
2028  END SUBROUTINE
2029 !
2030  SUBROUTINE hvf
2031  &(h,hn,fxmat,unsv2d,dt,fxbor,smh,yasmh,nseg,npoin,nptfr,gloseg,
2032  & sizglo,nbor,optsou,t7,mesh,msk,rain,pluie)
2035  IMPLICIT NONE
2036  INTEGER, INTENT(IN) :: NSEG,NPOIN,NPTFR,OPTSOU,SIZGLO
2037  INTEGER, INTENT(IN) :: GLOSEG(sizglo,2)
2038  INTEGER, INTENT(IN) :: NBOR(nptfr)
2039  DOUBLE PRECISION, INTENT(IN) :: DT
2040  DOUBLE PRECISION, INTENT(INOUT) :: H(npoin)
2041  DOUBLE PRECISION, INTENT(IN) :: HN(npoin),UNSV2D(npoin)
2042  DOUBLE PRECISION, INTENT(IN) :: FXBOR(npoin),SMH(npoin)
2043  DOUBLE PRECISION, INTENT(IN) :: FXMAT(nseg*2),PLUIE(npoin)
2044  LOGICAL, INTENT(IN) :: YASMH,MSK,RAIN
2045  TYPE(bief_obj), INTENT(INOUT) :: T7
2046  TYPE(bief_mesh), INTENT(INOUT) :: MESH
2047  END SUBROUTINE
2048 !
2049  SUBROUTINE hydromap
2050  &(cn,x,y,npoin,ncn,nbor,kp1bor,nptfr)
2052  IMPLICIT NONE
2053  INTEGER, INTENT(IN) :: NCN,NPOIN,NPTFR
2054  DOUBLE PRECISION, INTENT(INOUT) :: CN(npoin)
2055  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin)
2056  INTEGER, INTENT(IN) :: NBOR(nptfr),KP1BOR(nptfr)
2057  END SUBROUTINE
2058 !
2059  INTEGER FUNCTION ielbor(IELM,I)
2061  IMPLICIT NONE
2062  INTEGER, INTENT(IN) :: IELM,I
2063  END FUNCTION
2064 !
2065  SUBROUTINE impvec(VEC,NOM,NPOIN)
2067  IMPLICIT NONE
2068  INTEGER, INTENT(IN) :: NPOIN
2069  DOUBLE PRECISION, INTENT(IN) :: VEC(npoin)
2070  CHARACTER(LEN=32), INTENT(IN) :: NOM
2071  END SUBROUTINE
2072 !
2073  SUBROUTINE inbief
2074  &(lihbor,klog,it1,it2,it3,lvmac,ielmx,
2075  & lambd0,spheri,mesh,t1,t2,optass,produc,equa,mesh2d)
2078  IMPLICIT NONE
2079  INTEGER, INTENT(IN) :: IELMX,OPTASS,PRODUC,KLOG,LVMAC
2080  INTEGER, INTENT(IN) :: LIHBOR(*)
2081  DOUBLE PRECISION, INTENT(IN) :: LAMBD0
2082  LOGICAL, INTENT(IN) :: SPHERI
2083  CHARACTER(LEN=20) :: EQUA
2084  TYPE(bief_mesh), INTENT(INOUT) :: MESH
2085  TYPE(bief_obj), INTENT(INOUT) :: T1,T2,IT1,IT2,IT3
2086  TYPE(bief_mesh), INTENT(INOUT), OPTIONAL :: MESH2D
2087  END SUBROUTINE
2088 !
2089  LOGICAL FUNCTION inclus ( C1 , C2 )
2092  IMPLICIT NONE
2093  CHARACTER(LEN=*), INTENT(IN) :: C1 , C2
2094  END FUNCTION
2095 !
2096  LOGICAL FUNCTION inclu2 ( C1 , C2 )
2099  IMPLICIT NONE
2100  CHARACTER(LEN=*), INTENT(IN) :: C1 , C2
2101  END FUNCTION
2102 !
2103  SUBROUTINE infcel
2104  &(xx,yy,nubo,vnoin,npoin,nelem,nseg,cmi,airst,
2105  & gloseg,coord_g,eltseg,oriseg,ifabor)
2107  IMPLICIT NONE
2108  INTEGER, INTENT(IN) :: NSEG,NPOIN,NELEM
2109  INTEGER, INTENT(INOUT) :: NUBO(2,nseg)
2110  INTEGER, INTENT(IN) :: GLOSEG(nseg,2)
2111  INTEGER, INTENT(IN) :: ELTSEG(nelem,3)
2112  INTEGER, INTENT(IN) :: ORISEG(nelem,3)
2113  DOUBLE PRECISION, INTENT(IN) :: XX(npoin),YY(npoin),CMI(2,nseg)
2114  DOUBLE PRECISION, INTENT(INOUT) :: VNOIN(3,nseg)
2115  DOUBLE PRECISION, INTENT(INOUT) :: AIRST(2,*)
2116  DOUBLE PRECISION, INTENT(IN) :: COORD_G(nseg,4)
2117  INTEGER, INTENT(IN) :: IFABOR(nelem,3)
2118  END SUBROUTINE
2119 !
2120  SUBROUTINE integer_to_double(OP,IX,X,N,QT)
2122  IMPLICIT NONE
2123  INTEGER , INTENT(IN) :: N
2124  INTEGER(KIND=K8), INTENT(IN) :: IX(n)
2125  DOUBLE PRECISION, INTENT(IN) :: QT
2126  DOUBLE PRECISION, INTENT(INOUT) :: X(n)
2127  CHARACTER(LEN=1), INTENT(IN) :: OP
2128  END SUBROUTINE
2129 !
2130  SUBROUTINE bief_ininds(NPOIN,NPTFR,NELEM,NPMAX,NPTFX,
2131  & NELMAX,NPLAN,NSEGBOR,NDS,NELEB)
2133  IMPLICIT NONE
2134  INTEGER , INTENT(IN) :: NPOIN,NPTFR,NELEM,NPMAX,NPTFX
2135  INTEGER , INTENT(IN) :: NELMAX,NPLAN,NSEGBOR
2136  INTEGER , INTENT(IN), OPTIONAL :: NELEB
2137  INTEGER , INTENT(OUT) :: NDS(0:81,7)
2138  END SUBROUTINE
2139 !
2140  LOGICAL FUNCTION inpoly( X , Y , XSOM , YSOM , NSOM )
2142  IMPLICIT NONE
2143  INTEGER, INTENT(IN) :: NSOM
2144  DOUBLE PRECISION, INTENT(IN) :: X , Y
2145  DOUBLE PRECISION, INTENT(IN) :: XSOM(nsom) , YSOM(nsom)
2146  END FUNCTION
2147 !
2148  SUBROUTINE invmtx(AM,BM,NP)
2150  IMPLICIT NONE
2151  INTEGER, INTENT(IN) ::NP
2152  DOUBLE PRECISION, INTENT(INOUT)::AM(np,np),BM(np,np)
2153  END SUBROUTINE
2154 !
2155  DOUBLE PRECISION FUNCTION jultim
2156  &(year,month,day,hour,minu,sec,at)
2158  IMPLICIT NONE
2159  INTEGER, INTENT(IN) :: MONTH,DAY,HOUR,MINU,SEC
2160  INTEGER, INTENT(INOUT) :: YEAR
2161  DOUBLE PRECISION, INTENT(IN) :: AT
2162  END FUNCTION
2163 !
2164  SUBROUTINE ksupg(KX,KY,XMUL,U,V,MESH)
2167  IMPLICIT NONE
2168  TYPE(bief_mesh) , INTENT(IN) :: MESH
2169  TYPE(bief_obj) , INTENT(IN) :: U,V
2170  TYPE(bief_obj) , INTENT(INOUT) :: KX,KY
2171  DOUBLE PRECISION, INTENT(IN) :: XMUL
2172  END SUBROUTINE
2173 !
2174  SUBROUTINE kspg11
2175  &(kx,ky,xel,yel,u,v,ikle,nelem,nelmax,xmul)
2177  IMPLICIT NONE
2178  INTEGER, INTENT(IN) :: NELEM,NELMAX
2179  INTEGER, INTENT(IN) :: IKLE(nelmax,*)
2180  DOUBLE PRECISION, INTENT(INOUT) :: KX(nelem),KY(nelem)
2181  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*),XMUL
2182  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,*),YEL(nelmax,*)
2183  END SUBROUTINE
2184 !
2185  SUBROUTINE latitu(YDIST,COSLAT,SINLAT,LAMBD0,Y,NPOIN)
2187  IMPLICIT NONE
2188  INTEGER , INTENT(IN) :: NPOIN
2189  DOUBLE PRECISION, INTENT(IN) :: Y(npoin)
2190  DOUBLE PRECISION, INTENT(INOUT) :: YDIST(npoin)
2191  DOUBLE PRECISION, INTENT(INOUT) :: COSLAT(npoin),SINLAT(npoin)
2192  DOUBLE PRECISION, INTENT(IN) :: LAMBD0
2193  END SUBROUTINE
2194 !
2195  SUBROUTINE longitu(XEL,COSLAT,IKLE,NELMAX,NELEM)
2196  IMPLICIT NONE
2197  INTEGER, INTENT(IN) :: NELEM,NELMAX
2198  INTEGER , INTENT(IN) :: IKLE(nelmax,3)
2199  DOUBLE PRECISION, INTENT(IN) :: COSLAT(*)
2200  DOUBLE PRECISION, INTENT(INOUT) :: XEL(nelmax,3)
2201  END SUBROUTINE
2202 !
2203  SUBROUTINE leclim
2204  & (lihbor,liubor,livbor,litbor,hbor,ubor,vbor,tbor,
2205  & aubor,atbor,btbor,nptfr,code,trac,fformat,nlim,
2206  & kent,kentu,ksort,kadh,klog,kinc,numliq,mesh,boundary_colour,
2207  & nptfr2)
2210  IMPLICIT NONE
2211  INTEGER, INTENT(IN) :: NLIM,KENT,KSORT,KADH,KLOG,KINC,KENTU
2212  INTEGER, INTENT(IN) :: NPTFR
2213  LOGICAL, INTENT(IN) :: TRAC
2214  INTEGER, INTENT(INOUT) :: NUMLIQ(*)
2215  INTEGER, INTENT(INOUT) :: LIUBOR(nptfr),LIVBOR(nptfr)
2216  INTEGER, INTENT(INOUT) :: LIHBOR(nptfr),LITBOR(nptfr)
2217  DOUBLE PRECISION, INTENT(INOUT) :: UBOR(*),VBOR(*)
2218  DOUBLE PRECISION, INTENT(INOUT) :: HBOR(nptfr),AUBOR(nptfr)
2219  DOUBLE PRECISION, INTENT(INOUT) :: TBOR(*),ATBOR(*)
2220  DOUBLE PRECISION, INTENT(INOUT) :: BTBOR(*)
2221  TYPE(bief_mesh), INTENT(INOUT) :: MESH
2222  CHARACTER(LEN=3), INTENT(IN) :: CODE
2223  CHARACTER(LEN=8), INTENT(IN) :: FFORMAT
2224  INTEGER, OPTIONAL, INTENT(INOUT) :: BOUNDARY_COLOUR(nptfr)
2225  INTEGER, OPTIONAL, INTENT(IN) :: NPTFR2
2226  END SUBROUTINE
2227 !
2228  SUBROUTINE litenr(VARSOR,CLAND,
2229  & NPRE,STD,HIST,NHIST,NPOIN,AT,TEXTPR,TEXTLU,
2230  & NVAR,VARCLA,NVARCL,TROUVE,ALIRE,W,LISTIN,MAXVAR,
2231  & NPOIN_PREV,NPLAN_PREV,WD)
2234  IMPLICIT NONE
2235  TYPE(bief_obj), INTENT(INOUT) :: VARSOR,CLAND
2236  INTEGER, INTENT(IN) :: NPRE,NHIST,NPOIN,MAXVAR,NVARCL
2237  INTEGER, INTENT(IN) :: NVAR,ALIRE(maxvar)
2238  INTEGER, INTENT(OUT) :: TROUVE(maxvar)
2239  INTEGER, INTENT(IN), OPTIONAL :: NPOIN_PREV,NPLAN_PREV
2240  CHARACTER(LEN=*) :: STD
2241  CHARACTER(LEN=32) :: TEXTPR(maxvar),TEXTLU(maxvar)
2242  CHARACTER(LEN=32) :: VARCLA(nvarcl)
2243  DOUBLE PRECISION, INTENT(INOUT) :: HIST(*)
2244  DOUBLE PRECISION, INTENT(OUT) :: AT
2245  REAL :: W(npoin)
2246  LOGICAL, INTENT(IN) :: LISTIN
2247  DOUBLE PRECISION, INTENT(INOUT), OPTIONAL :: WD(*)
2248  END SUBROUTINE
2249 !
2250  SUBROUTINE lubksb(A,N,NP,INDX,B)
2252  IMPLICIT NONE
2253  INTEGER, INTENT(IN) :: N,NP
2254  INTEGER, INTENT(IN) :: INDX(n)
2255  DOUBLE PRECISION, INTENT(INOUT) :: B(n)
2256  DOUBLE PRECISION, INTENT(IN) :: A(np,np)
2257  END SUBROUTINE
2258 !
2259  SUBROUTINE ludcmp(A,N,NP,INDX)
2261  IMPLICIT NONE
2262  INTEGER, INTENT(IN) :: N,NP
2263  INTEGER, INTENT(INOUT) :: INDX(n)
2264  DOUBLE PRECISION, INTENT(INOUT) :: A(np,np)
2265  END SUBROUTINE
2266 !
2267  SUBROUTINE lump(DIAG,A,MESH,XMUL)
2270  IMPLICIT NONE
2271  DOUBLE PRECISION, INTENT(IN) :: XMUL
2272  TYPE(bief_obj) , INTENT(INOUT) :: DIAG
2273  TYPE(bief_obj) , INTENT(IN) :: A
2274  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
2275  END SUBROUTINE
2276 !
2277  SUBROUTINE make_eltcar(ELTCAR,IFAC,IKLE,NPOIN2,NELEM2,NELMAX,
2278  & KNOLG,ISCORE,MESH,NPLAN,IELM)
2281  IMPLICIT NONE
2282  INTEGER, INTENT(IN) :: NPOIN2,NELEM2,NELMAX,NPLAN,IELM
2283  INTEGER, INTENT(IN) :: IKLE(nelmax,*),KNOLG(npoin2)
2284  INTEGER, INTENT(INOUT) :: ELTCAR(*),IFAC(*)
2285  INTEGER, INTENT(INOUT) :: ISCORE(*)
2286  TYPE(bief_mesh), INTENT(INOUT) :: MESH
2287  END SUBROUTINE
2288 !
2289  SUBROUTINE maskbd
2290  &(maskel,zfe,zf,hn,hmin,ikle,ifabor,itra01,nelem,npoin)
2292  IMPLICIT NONE
2293  INTEGER, INTENT(IN) :: NELEM,NPOIN
2294  INTEGER, INTENT(IN) :: IKLE(nelem,3),IFABOR(nelem,3)
2295  INTEGER, INTENT(INOUT) :: ITRA01(nelem)
2296  DOUBLE PRECISION, INTENT(IN) :: ZFE(nelem),ZF(npoin),HN(npoin)
2297  DOUBLE PRECISION, INTENT(IN) :: HMIN
2298  DOUBLE PRECISION, INTENT(INOUT) :: MASKEL(nelem)
2299  END SUBROUTINE
2300 !
2301  SUBROUTINE maskto
2302  &(maskel,maskpt,ifamas,ikle,ifabor,eltseg,nseg,
2303  & nelem,ielm,mesh)
2306  IMPLICIT NONE
2307  INTEGER, INTENT(IN) :: NELEM,IELM,NSEG
2308  INTEGER, INTENT(IN) :: IKLE(nelem,3),IFABOR(nelem,3)
2309  INTEGER, INTENT(IN) :: ELTSEG(nelem,3)
2310  INTEGER, INTENT(INOUT) :: IFAMAS(nelem,3)
2311  DOUBLE PRECISION, INTENT(IN) :: MASKEL(nelem)
2312  TYPE(bief_obj), INTENT(INOUT) :: MASKPT
2313  TYPE(bief_mesh), INTENT(INOUT) :: MESH
2314  END SUBROUTINE
2315 !
2316  SUBROUTINE matrbl( OP , X , A , Y , C , MESH )
2319  IMPLICIT NONE
2320  CHARACTER(LEN=8), INTENT(IN) :: OP
2321  TYPE(bief_obj), INTENT(INOUT) :: X
2322  TYPE(bief_obj), INTENT(IN) :: A,Y
2323  DOUBLE PRECISION, INTENT(IN) :: C
2324  TYPE(bief_mesh), INTENT(INOUT) :: MESH
2325  END SUBROUTINE
2326 !
2327  SUBROUTINE matrix
2328  & (m,op,formul,ielm1,ielm2,xmul,f,g,h,u,v,w,mesh,msk,maskel)
2331  IMPLICIT NONE
2332  TYPE(bief_obj) , INTENT(INOUT) :: M
2333  INTEGER , INTENT(IN) :: IELM1,IELM2
2334  DOUBLE PRECISION , INTENT(IN) :: XMUL
2335  LOGICAL , INTENT(IN) :: MSK
2336  CHARACTER(LEN=16), INTENT(IN) :: FORMUL
2337  CHARACTER(LEN=8) , INTENT(IN) :: OP
2338  TYPE(bief_obj) , INTENT(IN) :: F,G,H,U,V,W,MASKEL
2339  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
2340  END SUBROUTINE
2341 !
2342  SUBROUTINE matriy
2343  &(formul,xm,typdia,typext,
2344  & xmul,sf,sg,sh,su,sv,sw,f,g,h,u,v,w,t,lego,
2345  & xel,yel,zel,xpt,ypt,zpt,surfac,lgseg,ikle,iklbor,nbor,nelbor,
2346  & nulone,nelem,nelmax,neleb,nelebx,ielm1,ielm2,s,nplan,mesh,
2347  & sizexmt,stox)
2350  IMPLICIT NONE
2351  INTEGER, INTENT(IN) :: NELMAX,NELEM,IELM1,IELM2,S
2352  INTEGER, INTENT(IN) :: NPLAN,NELEB,NELEBX,SIZEXMT
2353  INTEGER, INTENT(IN) :: IKLE(nelmax,*),NBOR(*)
2354  INTEGER, INTENT(IN) :: IKLBOR(nelebx,*)
2355  INTEGER, INTENT(IN) :: NELBOR(nelebx)
2356  INTEGER, INTENT(IN) :: NULONE(nelebx,*)
2357  INTEGER, INTENT(INOUT) :: STOX
2358  LOGICAL, INTENT(INOUT) :: LEGO
2359  TYPE(bief_obj), INTENT(IN) :: SF,SG,SH,SU,SV,SW
2360  DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),H(*),U(*),V(*),W(*)
2361  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax),LGSEG(nelebx)
2362  DOUBLE PRECISION, INTENT(IN) :: XEL(*),YEL(*),ZEL(*)
2363  DOUBLE PRECISION, INTENT(IN) :: XPT(*),YPT(*),ZPT(*)
2364  DOUBLE PRECISION, INTENT(IN) :: XMUL
2365  DOUBLE PRECISION, INTENT(INOUT) :: XM(sizexmt,*),T(sizexmt,*)
2366  CHARACTER(LEN=16), INTENT(IN) :: FORMUL
2367  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIA,TYPEXT
2368  TYPE(bief_mesh), INTENT(INOUT) :: MESH
2369  END SUBROUTINE
2370 !
2371  SUBROUTINE matvct
2372  &(op, x , da,typdia,xa,typext, y ,
2373  & c,ikle,npt,nelem,nelmax,w,lego,ielm1,ielm2,ielmx,lv,
2374  & s,p,iklem1,dimikm,limvoi,mxptvs,npmax,npoin,
2375  & gloseg,sizglo,sizxa,ndp,mesh,stox
2376  & ,x_err,y_err,da_err)
2378  USE bief_def
2380  IMPLICIT NONE
2381  INTEGER, INTENT(IN) :: IELM1,IELM2,IELMX,NPOIN,NPMAX,S,P,SIZXA
2382  INTEGER, INTENT(IN) :: NDP,STOX
2383  INTEGER, INTENT(INOUT) :: NPT
2384  INTEGER, INTENT(IN) :: NELEM,NELMAX,LV,DIMIKM,MXPTVS,SIZGLO
2385  INTEGER, INTENT(IN) :: IKLE(nelmax,*),IKLEM1(*),LIMVOI(*)
2386  INTEGER, INTENT(IN) :: GLOSEG(sizglo,2)
2387  CHARACTER(LEN=8), INTENT(IN) :: OP
2388  CHARACTER(LEN=1),INTENT(IN) :: TYPDIA,TYPEXT
2389  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
2390  DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*),XA(sizxa,*),C
2391  DOUBLE PRECISION, INTENT(INOUT) :: W(nelmax,*)
2392  LOGICAL, INTENT(IN) :: LEGO
2393  TYPE(bief_mesh), INTENT(INOUT) :: MESH
2394  DOUBLE PRECISION, OPTIONAL, INTENT(INOUT) :: X_ERR(*)
2395  DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: Y_ERR(*),DA_ERR(*)
2396  END SUBROUTINE
2397 !
2398  SUBROUTINE matvec( OP , X , A , Y , C , MESH , LEGO )
2401  IMPLICIT NONE
2402  CHARACTER(LEN=8) , INTENT(IN) :: OP
2403  TYPE(bief_obj) , INTENT(INOUT) :: X
2404  TYPE(bief_obj) , INTENT(IN) :: A,Y
2405  DOUBLE PRECISION, INTENT(IN) :: C
2406  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
2407  LOGICAL , INTENT(IN), OPTIONAL :: LEGO
2408  END SUBROUTINE
2409 !
2410  SUBROUTINE maxi( XMAX , IMAX , X , NPOIN )
2412  IMPLICIT NONE
2413  INTEGER, INTENT(IN) :: NPOIN
2414  INTEGER, INTENT(INOUT) :: IMAX
2415  DOUBLE PRECISION, INTENT(INOUT) :: XMAX
2416  DOUBLE PRECISION, INTENT(IN) :: X(npoin)
2417  END SUBROUTINE
2418 !
2419  SUBROUTINE mer11
2420  &(x, xa1,xa2,xa3,ikle1,ikle2,ikle3,nelem,nelmax,npoin,lv)
2422  IMPLICIT NONE
2423  INTEGER, INTENT(IN) :: NPOIN,NELEM,NELMAX,LV
2424  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
2425  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
2426  DOUBLE PRECISION, INTENT(IN) :: XA1(nelmax)
2427  DOUBLE PRECISION, INTENT(IN) :: XA2(nelmax)
2428  DOUBLE PRECISION, INTENT(IN) :: XA3(nelmax)
2429  END SUBROUTINE
2430 !
2431  SUBROUTINE mer21
2432  &(x, xa1,xa2,xa3,xa4,xa5,xa6 , ikle1,ikle2,ikle3,ikle4,
2433  & nelem,nelmax,npoin,lv)
2435  IMPLICIT NONE
2436  INTEGER, INTENT(IN) :: NPOIN,NELEM,NELMAX,LV
2437  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
2438  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
2439  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
2440  DOUBLE PRECISION, INTENT(IN) :: XA1(nelmax)
2441  DOUBLE PRECISION, INTENT(IN) :: XA2(nelmax)
2442  DOUBLE PRECISION, INTENT(IN) :: XA3(nelmax)
2443  DOUBLE PRECISION, INTENT(IN) :: XA4(nelmax)
2444  DOUBLE PRECISION, INTENT(IN) :: XA5(nelmax)
2445  DOUBLE PRECISION, INTENT(IN) :: XA6(nelmax)
2446  END SUBROUTINE
2447 !
2448  SUBROUTINE mer41
2449  &(x, xa1 ,xa2 ,xa3 ,xa4 ,xa5 ,
2450  & xa6 ,xa7 ,xa8 ,xa9 ,xa10,
2451  & xa11,xa12,xa13,xa14,xa15,
2452  & ikle1,ikle2,ikle3,ikle4,ikle5,ikle6,
2453  & nelem,nelmax,npoin,lv)
2455  IMPLICIT NONE
2456  INTEGER, INTENT(IN) :: NPOIN,NELEM,NELMAX,LV
2457  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
2458  INTEGER, INTENT(IN) :: IKLE4(nelmax),IKLE5(nelmax),IKLE6(nelmax)
2459  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
2460  DOUBLE PRECISION, INTENT(IN) :: XA1(nelmax),XA2(nelmax)
2461  DOUBLE PRECISION, INTENT(IN) :: XA3(nelmax)
2462  DOUBLE PRECISION, INTENT(IN) :: XA4(nelmax),XA5(nelmax)
2463  DOUBLE PRECISION, INTENT(IN) :: XA6(nelmax)
2464  DOUBLE PRECISION, INTENT(IN) :: XA7(nelmax),XA8(nelmax)
2465  DOUBLE PRECISION, INTENT(IN) :: XA9(nelmax)
2466  DOUBLE PRECISION, INTENT(IN) :: XA10(nelmax),XA11(nelmax)
2467  DOUBLE PRECISION, INTENT(IN) :: XA12(nelmax)
2468  DOUBLE PRECISION, INTENT(IN) :: XA13(nelmax),XA14(nelmax)
2469  DOUBLE PRECISION, INTENT(IN) :: XA15(nelmax)
2470  END SUBROUTINE
2471 !
2472  SUBROUTINE mini( XMIN , IMIN , X , NPOIN )
2474  IMPLICIT NONE
2475  INTEGER, INTENT(IN) :: NPOIN
2476  INTEGER, INTENT(INOUT) :: IMIN
2477  DOUBLE PRECISION, INTENT(INOUT) :: XMIN
2478  DOUBLE PRECISION, INTENT(IN) :: X(npoin)
2479  END SUBROUTINE
2480 !
2481  SUBROUTINE mt01aa
2482  &( a11 , a12 , a13 ,
2483  & a22 , a23 ,
2484  & a33 ,
2485  & xmul,surfac,nelem,nelmax)
2488  IMPLICIT NONE
2489  INTEGER, INTENT(IN) :: NELEM,NELMAX
2490  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
2491  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*)
2492  DOUBLE PRECISION, INTENT(INOUT) :: A33(*)
2493  DOUBLE PRECISION, INTENT(IN) :: XMUL
2494  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
2495  END SUBROUTINE
2496 !
2497  SUBROUTINE mt01bb
2498  &( a11 , a12 , a13 , a14 ,
2499  & a22 , a23 , a24 ,
2500  & a33 , a34 ,
2501  & a44 ,
2502  & xmul,surfac,nelem,nelmax)
2505  IMPLICIT NONE
2506  INTEGER, INTENT(IN) :: NELEM,NELMAX
2507  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
2508  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*),A24(*)
2509  DOUBLE PRECISION, INTENT(INOUT) :: A33(*),A34(*)
2510  DOUBLE PRECISION, INTENT(INOUT) :: A44(*)
2511  DOUBLE PRECISION, INTENT(IN) :: XMUL
2512  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
2513  END SUBROUTINE
2514 !
2515  SUBROUTINE mt01oo(A11,A12,A22,XMUL,LGSEG,NELEM,NELMAX)
2517  IMPLICIT NONE
2518  INTEGER, INTENT(IN) :: NELEM,NELMAX
2519  DOUBLE PRECISION, INTENT(INOUT) :: A11(nelmax),A12(nelmax)
2520  DOUBLE PRECISION, INTENT(INOUT) :: A22(nelmax)
2521  DOUBLE PRECISION, INTENT(IN) :: LGSEG(nelmax)
2522  DOUBLE PRECISION, INTENT(IN) :: XMUL
2523  END SUBROUTINE
2524 !
2525  SUBROUTINE mt01pp(T,XM,XMUL,Z,SURFAC,IKLE,NELEM,NELMAX)
2527  IMPLICIT NONE
2528  INTEGER, INTENT(IN) :: NELEM,NELMAX
2529  INTEGER, INTENT(IN) :: IKLE(nelmax,6)
2530  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,6),XM(nelmax,30)
2531  DOUBLE PRECISION, INTENT(IN) :: XMUL,Z(*),SURFAC(nelmax)
2532  END SUBROUTINE
2533 !
2534  SUBROUTINE mt01tt(T,XM,XMUL,X,Y,Z,IKLE,NELEM,NELMAX)
2536  IMPLICIT NONE
2537  INTEGER, INTENT(IN) :: NELEM,NELMAX
2538  INTEGER, INTENT(IN) :: IKLE(nelmax,4)
2539  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,4),XM(nelmax,6)
2540  DOUBLE PRECISION, INTENT(IN) :: XMUL
2541  DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
2542  END SUBROUTINE
2543 !
2544  SUBROUTINE mt02aa
2545  &( a11 , a12 , a13 ,
2546  & a22 , a23 ,
2547  & a33 ,
2548  & xmul,su,u,sv,v,
2549  & xel,yel,surfac,ikle1,ikle2,ikle3,nelem,nelmax,formul)
2552  IMPLICIT NONE
2553  INTEGER, INTENT(IN) :: NELEM,NELMAX
2554  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
2555 !
2556  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
2557  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*)
2558  DOUBLE PRECISION, INTENT(INOUT) :: A33(*)
2559  DOUBLE PRECISION, INTENT(IN) :: XMUL
2560  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
2561 ! STRUCTURE OF U
2562  TYPE(bief_obj), INTENT(IN) :: SU,SV
2563  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
2564  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
2565  CHARACTER(LEN=16), INTENT(IN) :: FORMUL
2566  END SUBROUTINE
2567 !
2568  SUBROUTINE mt02aa_2
2569  &( a11 , a12 , a13 ,
2570  & a22 , a23 ,
2571  & a33 ,
2572  & xmul,su,sv,
2573  & xel,yel,surfac,nelem,nelmax)
2576  IMPLICIT NONE
2577  INTEGER, INTENT(IN) :: NELEM,NELMAX
2578  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
2579  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*)
2580  DOUBLE PRECISION, INTENT(INOUT) :: A33(*)
2581  DOUBLE PRECISION, INTENT(IN) :: XMUL
2582  TYPE(bief_obj) , INTENT(IN) :: SU,SV
2583  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
2584  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
2585  END SUBROUTINE
2586 !
2587  SUBROUTINE mt02bb
2588  &( a11 , a12 , a13 , a14 ,
2589  & a22 , a23 , a24 ,
2590  & a33 , a34 ,
2591  & a44 ,
2592  & xmul,su,u,xel,yel,surfac,ikle1,ikle2,ikle3,nelem,nelmax)
2595  IMPLICIT NONE
2596  INTEGER, INTENT(IN) :: NELEM,NELMAX
2597  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
2598  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
2599  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*),A24(*)
2600  DOUBLE PRECISION, INTENT(INOUT) :: A33(*),A34(*)
2601  DOUBLE PRECISION, INTENT(INOUT) :: A44(*)
2602  DOUBLE PRECISION, INTENT(IN) :: XMUL,U(*)
2603  TYPE(bief_obj), INTENT(IN) :: SU
2604  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
2605  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
2606  END SUBROUTINE
2607 !
2608  SUBROUTINE mt02pp
2609  &(t,xm,xmul,sf,sg,sh,f,g,h,x,y,z,surfac,ikle,nelem,nelmax,inchyd,
2610  & formul,nplan)
2613  IMPLICIT NONE
2614  INTEGER, INTENT(IN) :: NELEM,NELMAX,NPLAN
2615  INTEGER, INTENT(IN) :: IKLE(nelmax,6)
2616  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,6),XM(nelmax,15)
2617  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
2618  DOUBLE PRECISION, INTENT(IN) :: XMUL
2619  DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),H(*)
2620  TYPE(bief_obj), INTENT(IN) :: SF,SG,SH
2621  DOUBLE PRECISION, INTENT(IN) :: X(nelmax,6),Y(nelmax,6),Z(*)
2622  LOGICAL, INTENT(IN) :: INCHYD
2623  CHARACTER(LEN=16), INTENT(IN) :: FORMUL
2624  END SUBROUTINE
2625 !
2626  SUBROUTINE mt02pp_star
2627  &(t,xm,xmul,sf,sg,sh,f,g,h,x,y,z,surfac,ikle,nelem,nelmax,inchyd,
2628  & formul,nplan)
2631  IMPLICIT NONE
2632  INTEGER, INTENT(IN) :: NELEM,NELMAX,NPLAN
2633  INTEGER, INTENT(IN) :: IKLE(nelmax,6)
2634  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,6),XM(nelmax,*)
2635  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
2636  DOUBLE PRECISION, INTENT(IN) :: XMUL
2637  DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),H(*)
2638  TYPE(bief_obj), INTENT(IN) :: SF,SG,SH
2639  DOUBLE PRECISION, INTENT(IN) :: X(nelmax,6),Y(nelmax,6),Z(*)
2640  LOGICAL, INTENT(IN) :: INCHYD
2641  CHARACTER(LEN=16), INTENT(IN) :: FORMUL
2642  END SUBROUTINE
2643 !
2644  SUBROUTINE mt02pt(T,XM,XMUL,SF,SG,SH,F,G,H,
2645  & X,Y,Z,IKLE,NELEM,NELMAX,INCHYD)
2648  IMPLICIT NONE
2649  INTEGER, INTENT(IN) :: NELEM,NELMAX
2650  INTEGER, INTENT(IN) :: IKLE(nelmax,6)
2651  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,6),XM(nelmax,15)
2652  DOUBLE PRECISION, INTENT(IN) :: XMUL
2653  DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),H(*)
2654  TYPE(bief_obj), INTENT(IN) :: SF,SG,SH
2655  DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
2656  LOGICAL, INTENT(IN) :: INCHYD
2657  END SUBROUTINE
2658 !
2659  SUBROUTINE mt02tt(T,XM,XMUL,SF,SG,SH,F,G,H,
2660  & X,Y,Z,IKLE,NELEM,NELMAX,NPOIN2)
2663  IMPLICIT NONE
2664  INTEGER, INTENT(IN) :: NELEM,NELMAX,NPOIN2
2665  INTEGER, INTENT(IN) :: IKLE(nelmax,4)
2666  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,4),XM(nelmax,6)
2667  DOUBLE PRECISION, INTENT(IN) :: XMUL
2668  DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),H(*)
2669  TYPE(bief_obj), INTENT(IN) :: SF,SG,SH
2670  DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
2671  END SUBROUTINE
2672 !
2673  SUBROUTINE mt03aa
2674  &( a11 , a12 , a13 ,
2675  & a21 , a22 , a23 ,
2676  & a31 , a32 , a33 ,
2677  & xmul,sf,sg,su,sv,f,g,u,v,
2678  & xel,yel,surfac,ikle1,ikle2,ikle3,ikle4,nelem,nelmax)
2681  IMPLICIT NONE
2682  INTEGER, INTENT(IN) :: NELEM,NELMAX
2683  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
2684  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
2685  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
2686  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
2687  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
2688  DOUBLE PRECISION, INTENT(IN) :: XMUL
2689  DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),U(*),V(*)
2690  TYPE(bief_obj), INTENT(IN) :: SF,SG,SU,SV
2691  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
2692  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
2693  END SUBROUTINE
2694 !
2695  SUBROUTINE mt03bb
2696  &( a11 , a12 , a13 , a14 ,
2697  & a21 , a22 , a23 , a24 ,
2698  & a31 , a32 , a33 , a34 ,
2699  & a41 , a42 , a43 , a44 ,
2700  & xmul,sf,sg,su,sv,f,g,u,v,
2701  & xel,yel,ikle1,ikle2,ikle3,nelem,nelmax)
2704  IMPLICIT NONE
2705  INTEGER, INTENT(IN) :: NELEM,NELMAX
2706  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
2707  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
2708  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
2709  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
2710  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
2711  DOUBLE PRECISION, INTENT(IN) :: XMUL
2712  DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),U(*),V(*)
2713  TYPE(bief_obj), INTENT(IN) :: SF,SG,SU,SV
2714  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
2715  END SUBROUTINE
2716 !
2717  SUBROUTINE mt04aa
2718  &( a11 , a12 , a13 ,
2719  & a22 , a23 ,
2720  & a33 ,
2721  & xmul,su,sv,u,v,xel,yel,surfac,ikle,nelem,nelmax)
2724  IMPLICIT NONE
2725  INTEGER, INTENT(IN) :: NELEM,NELMAX
2726  INTEGER, INTENT(IN) :: IKLE(nelmax,*)
2727  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
2728  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*)
2729  DOUBLE PRECISION, INTENT(INOUT) :: A33(*)
2730  DOUBLE PRECISION, INTENT(IN) :: XMUL,U(*),V(*)
2731  TYPE(bief_obj) , INTENT(IN) :: SU,SV
2732  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
2733  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
2734  END SUBROUTINE
2735 !
2736  SUBROUTINE mt04bb
2737  &( a11 , a12 , a13 , a14 ,
2738  & a22 , a23 , a24 ,
2739  & a33 , a34 ,
2740  & a44 ,
2741  & xmul,su,sv,u,v,xel,yel,ikle1,ikle2,ikle3,ikle4,nelem,nelmax)
2744  IMPLICIT NONE
2745  INTEGER, INTENT(IN) :: NELEM,NELMAX
2746  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
2747  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
2748  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
2749  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*),A24(*)
2750  DOUBLE PRECISION, INTENT(INOUT) :: A33(*),A34(*)
2751  DOUBLE PRECISION, INTENT(INOUT) :: A44(*)
2752  DOUBLE PRECISION, INTENT(IN) :: XMUL
2753  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
2754  TYPE(bief_obj), INTENT(IN) :: SU,SV
2755  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
2756  END SUBROUTINE
2757 !
2758  SUBROUTINE mt04pp
2759  &( t,xm,xmul,su,sv,sw,u,v,x,y,z,surfac,ikle,nelem,nelmax,formul)
2762  IMPLICIT NONE
2763  INTEGER, INTENT(IN) :: NELEM,NELMAX
2764  INTEGER, INTENT(IN) :: IKLE(nelmax,6)
2765  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,6),XM(nelmax,30)
2766  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
2767  DOUBLE PRECISION, INTENT(IN) :: XMUL
2768  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
2769  TYPE(bief_obj), INTENT(IN) :: SU,SV,SW
2770  DOUBLE PRECISION, INTENT(IN) :: X(nelmax,6),Y(nelmax,6),Z(*)
2771  CHARACTER(LEN=16), INTENT(IN) :: FORMUL
2772  END SUBROUTINE
2773 !
2774  SUBROUTINE mt04tt
2775  &(t,xm,xmul,su,sv,sw,u,v,w,x,y,z,ikle,nelem,nelmax,formul)
2778  IMPLICIT NONE
2779  INTEGER, INTENT(IN) :: NELEM,NELMAX
2780  INTEGER, INTENT(IN) :: IKLE(nelmax,4)
2781  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,4),XM(nelmax,6)
2782  DOUBLE PRECISION, INTENT(IN) :: XMUL
2783  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*),W(*)
2784  TYPE(bief_obj), INTENT(IN) :: SU,SV,SW
2785  DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
2786  CHARACTER(LEN=16), INTENT(IN) :: FORMUL
2787  END SUBROUTINE
2788 !
2789  SUBROUTINE mt05aa
2790  &( a11 , a12 , a13 ,
2791  & a21 , a22 , a23 ,
2792  & a31 , a32 , a33 ,
2793  & xmul,su,sv,u,v,
2794  & xel,yel,ikle,nelem,nelmax,formul)
2797  IMPLICIT NONE
2798  INTEGER, INTENT(IN) :: NELEM,NELMAX
2799  INTEGER, INTENT(IN) :: IKLE(nelmax,*)
2800  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
2801  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
2802  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
2803  DOUBLE PRECISION, INTENT(IN) :: XMUL,U(*),V(*)
2804  TYPE(bief_obj), INTENT(IN) :: SU,SV
2805  CHARACTER(LEN=16) :: FORMUL
2806  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
2807  END SUBROUTINE
2808 !
2809  SUBROUTINE mt05bb
2810  &( a11 , a12 , a13 , a14 ,
2811  & a21 , a22 , a23 , a24 ,
2812  & a31 , a32 , a33 , a34 ,
2813  & a41 , a42 , a43 , a44 ,
2814  & xmul,su,sv,u,v,
2815  & xel,yel,ikle1,ikle2,ikle3,ikle4,nelem,nelmax,formul)
2818  IMPLICIT NONE
2819  INTEGER, INTENT(IN) :: NELEM,NELMAX
2820  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
2821  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
2822  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
2823  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
2824  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
2825  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
2826  DOUBLE PRECISION, INTENT(IN) :: XMUL
2827  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
2828  TYPE(bief_obj), INTENT(IN) :: SU,SV
2829  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
2830  CHARACTER(LEN=16) :: FORMUL
2831  END SUBROUTINE
2832 !
2833  SUBROUTINE mt05pp
2834  &(t,xm,xmul,su,sv,sw,u,v,w,f,g,
2835  & x,y,z,ikle,nelem,nelmax,sigmag,specad,nplan)
2838  IMPLICIT NONE
2839  INTEGER, INTENT(IN) :: NELEM,NELMAX,NPLAN
2840  INTEGER, INTENT(IN) :: IKLE(nelmax,6)
2841  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,6),XM(nelmax,30)
2842  DOUBLE PRECISION, INTENT(IN) :: XMUL
2843  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*),W(*)
2844  DOUBLE PRECISION, INTENT(IN) :: F(*),G(*)
2845  TYPE(bief_obj), INTENT(IN) :: SU,SV,SW
2846  DOUBLE PRECISION, INTENT(IN) :: X(nelmax,6),Y(nelmax,6),Z(*)
2847  LOGICAL, INTENT(IN) :: SIGMAG,SPECAD
2848  END SUBROUTINE
2849 !
2850  SUBROUTINE mt05tt
2851  &( t,xm,xmul,su,sv,sw,u,v,w,x,y,z,ikle,nelem,nelmax)
2854  IMPLICIT NONE
2855  INTEGER, INTENT(IN) :: NELEM,NELMAX
2856  INTEGER, INTENT(IN) :: IKLE(nelmax,4)
2857  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,4),XM(nelmax,12)
2858  DOUBLE PRECISION, INTENT(IN) :: XMUL
2859  DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
2860  TYPE(bief_obj), INTENT(IN) :: SU,SV,SW
2861  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*),W(*)
2862  END SUBROUTINE
2863 !
2864  SUBROUTINE mt06aa
2865  &( a11 , a12 , a13 ,
2866  & a22 , a23 ,
2867  & a33 ,
2868  & xmul,sf,f,surfac,ikle1,ikle2,ikle3,nelem,nelmax)
2871  IMPLICIT NONE
2872  INTEGER, INTENT(IN) :: NELEM,NELMAX
2873  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
2874  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
2875  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*)
2876  DOUBLE PRECISION, INTENT(INOUT) :: A33(*)
2877  DOUBLE PRECISION, INTENT(IN) :: XMUL
2878  DOUBLE PRECISION, INTENT(IN) :: F(*)
2879  TYPE(bief_obj), INTENT(IN) :: SF
2880  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
2881  END SUBROUTINE
2882 !
2883  SUBROUTINE mt06bb
2884  &( a11 , a12 , a13 , a14 ,
2885  & a22 , a23 , a24 ,
2886  & a33 , a34 ,
2887  & a44 ,
2888  & xmul,sf,f,surfac,ikle1,ikle2,ikle3,ikle4,nelem,nelmax)
2891  IMPLICIT NONE
2892  INTEGER, INTENT(IN) :: NELEM,NELMAX
2893  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
2894  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
2895  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
2896  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*),A24(*)
2897  DOUBLE PRECISION, INTENT(INOUT) :: A33(*),A34(*)
2898  DOUBLE PRECISION, INTENT(INOUT) :: A44(*)
2899  DOUBLE PRECISION, INTENT(IN) :: XMUL
2900  DOUBLE PRECISION, INTENT(IN) :: F(*)
2901  TYPE(bief_obj), INTENT(IN) :: SF
2902  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
2903  END SUBROUTINE
2904 !
2905  SUBROUTINE mt06ff
2906  &( a11 , a12 , a13 , a14 ,
2907  & a22 , a23 , a24 ,
2908  & a33 , a34 ,
2909  & a44 ,
2910  & xmul,sf,f,x,y,z,ikle1,ikle2,ikle3,ikle4,nbor,nelbor,
2911  & nulone,neleb,nelebx,nelmax)
2914  IMPLICIT NONE
2915  INTEGER, INTENT(IN) :: NELEB,NELEBX,NELMAX
2916  INTEGER, INTENT(IN) :: NBOR(*),NELBOR(nelebx),NULONE(nelebx,4)
2917  INTEGER, INTENT(IN) :: IKLE1(nelebx),IKLE2(nelebx)
2918  INTEGER, INTENT(IN) :: IKLE3(nelebx),IKLE4(nelebx)
2919  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
2920  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*),A24(*)
2921  DOUBLE PRECISION, INTENT(INOUT) :: A33(*),A34(*)
2922  DOUBLE PRECISION, INTENT(INOUT) :: A44(*)
2923  DOUBLE PRECISION, INTENT(IN) :: XMUL
2924  DOUBLE PRECISION, INTENT(IN) :: F(*)
2925  TYPE(bief_obj), INTENT(IN) :: SF
2926  DOUBLE PRECISION, INTENT(IN) :: X(nelmax,6),Y(nelmax,6),Z(*)
2927  END SUBROUTINE
2928 !
2929  SUBROUTINE mt06ft
2930  &( a11 , a12 , a13 ,
2931  & a22 , a23 ,
2932  & a33 ,
2933  & xmul,sf,f,x,y,z,ikle1,ikle2,ikle3,nbor,nelem,nelmax)
2936  IMPLICIT NONE
2937  INTEGER, INTENT(IN) :: NBOR(*),NELEM,NELMAX
2938  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
2939  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
2940  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*)
2941  DOUBLE PRECISION, INTENT(INOUT) :: A33(*)
2942  DOUBLE PRECISION, INTENT(IN) :: XMUL
2943  DOUBLE PRECISION, INTENT(IN) :: F(*)
2944  TYPE(bief_obj), INTENT(IN) :: SF
2945  DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
2946  END SUBROUTINE
2947 !
2948  SUBROUTINE mt06ft2
2949  &( a11 , a12 , a13 ,
2950  & a22 , a23 ,
2951  & a33 ,
2952  & xmul,sf,f,sg,g,x,y,z,ikle1,ikle2,ikle3,nbor,nelem,nelmax)
2955  IMPLICIT NONE
2956  INTEGER, INTENT(IN) :: NBOR(*),NELEM,NELMAX
2957  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
2958  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
2959  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*)
2960  DOUBLE PRECISION, INTENT(INOUT) :: A33(*)
2961  DOUBLE PRECISION, INTENT(IN) :: XMUL
2962  DOUBLE PRECISION, INTENT(IN) :: F(*),G(*)
2963  TYPE(bief_obj), INTENT(IN) :: SF,SG
2964  DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
2965  END SUBROUTINE
2966 !
2967  SUBROUTINE mt06oo
2968  &(a11,a12,a22,xmul,sf,f,lgseg,ikle1,ikle2,nbor,nelem,nelmax)
2971  IMPLICIT NONE
2972  INTEGER, INTENT(IN) :: NELEM,NELMAX
2973  INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),NBOR(nelmax,2)
2974  DOUBLE PRECISION, INTENT(IN) :: XMUL
2975  DOUBLE PRECISION, INTENT(IN) :: F(*)
2976  TYPE(bief_obj), INTENT(IN) :: SF
2977  DOUBLE PRECISION, INTENT(IN) :: LGSEG(nelmax)
2978  DOUBLE PRECISION, INTENT(INOUT) :: A11(nelmax)
2979  DOUBLE PRECISION, INTENT(INOUT) :: A12(nelmax)
2980  DOUBLE PRECISION, INTENT(INOUT) :: A22(nelmax)
2981  END SUBROUTINE
2982 !
2983  SUBROUTINE mt06pp
2984  &( t,xm,xmul,sf,f,z,surfac,ikle,nelem,nelmax)
2987  IMPLICIT NONE
2988  INTEGER, INTENT(IN) :: NELEM,NELMAX
2989  INTEGER, INTENT(IN) :: IKLE(nelmax,6)
2990  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,6), XM(nelmax,30)
2991  DOUBLE PRECISION, INTENT(IN) :: XMUL
2992  DOUBLE PRECISION, INTENT(IN) :: F(*)
2993  TYPE(bief_obj), INTENT(IN) :: SF
2994  DOUBLE PRECISION, INTENT(IN) :: Z(*)
2995  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
2996  END SUBROUTINE
2997 !
2998  SUBROUTINE mt06tt(T,XM,XMUL,SF,F,X,Y,Z,IKLE,NELEM,NELMAX)
3001  IMPLICIT NONE
3002  INTEGER, INTENT(IN) :: NELEM,NELMAX
3003  INTEGER, INTENT(IN) :: IKLE(nelmax,4)
3004  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,4),XM(nelmax,6)
3005  DOUBLE PRECISION, INTENT(IN) :: XMUL
3006  DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
3007  TYPE(bief_obj), INTENT(IN) :: SF
3008  DOUBLE PRECISION, INTENT(IN) :: F(*)
3009  END SUBROUTINE
3010 !
3011  SUBROUTINE mt07aa
3012  &( a11 , a12 , a13 ,
3013  & a22 , a23 ,
3014  & a33 ,
3015  & xmul,sf,f,surfac,nelem,nelmax)
3018  IMPLICIT NONE
3019  INTEGER, INTENT(IN) :: NELEM,NELMAX
3020  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
3021  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*)
3022  DOUBLE PRECISION, INTENT(INOUT) :: A33(*)
3023  DOUBLE PRECISION, INTENT(IN) :: XMUL
3024  DOUBLE PRECISION, INTENT(IN) :: F(*)
3025  TYPE(bief_obj), INTENT(IN) :: SF
3026  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
3027  END SUBROUTINE
3028 !
3029  SUBROUTINE mt07bb
3030  &( a11 , a12 , a13 , a14 ,
3031  & a22 , a23 , a24 ,
3032  & a33 , a34 ,
3033  & a44 ,
3034  & xmul,sf,f,surfac,nelem,nelmax)
3037  IMPLICIT NONE
3038  INTEGER, INTENT(IN) :: NELEM,NELMAX
3039  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
3040  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*),A24(*)
3041  DOUBLE PRECISION, INTENT(INOUT) :: A33(*),A34(*)
3042  DOUBLE PRECISION, INTENT(INOUT) :: A44(*)
3043  DOUBLE PRECISION, INTENT(IN) :: XMUL
3044  DOUBLE PRECISION, INTENT(IN) :: F(*)
3045  TYPE(bief_obj), INTENT(IN) :: SF
3046  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
3047  END SUBROUTINE
3048 !
3049  SUBROUTINE mt08aa
3050  &( a11 , a12 , a13 ,
3051  & a21 , a22 , a23 ,
3052  & a31 , a32 , a33 ,
3053  & xmul,sf,f,xel,yel,ikle1,ikle2,ikle3,nelem,nelmax,icoord)
3056  IMPLICIT NONE
3057  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3058  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
3059  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
3060  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
3061  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
3062  DOUBLE PRECISION, INTENT(IN) :: XMUL
3063  DOUBLE PRECISION, INTENT(IN) :: F(*)
3064  TYPE(bief_obj), INTENT(IN) :: SF
3065  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3066  END SUBROUTINE
3067 !
3068  SUBROUTINE mt08ab
3069  &( a11 , a12 , a13 , a14 ,
3070  & a21 , a22 , a23 , a24 ,
3071  & a31 , a32 , a33 , a34 ,
3072  & xmul,sf,f,xel,yel,ikle1,ikle2,ikle3,ikle4,
3073  & nelem,nelmax,icoord)
3076  IMPLICIT NONE
3077  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3078  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
3079  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
3080  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
3081  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
3082  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
3083  DOUBLE PRECISION, INTENT(IN) :: XMUL
3084  DOUBLE PRECISION, INTENT(IN) :: F(*)
3085  TYPE(bief_obj), INTENT(IN) :: SF
3086  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3087  END SUBROUTINE
3088 !
3089  SUBROUTINE mt08ba
3090  &( a11 , a12 , a13 ,
3091  & a21 , a22 , a23 ,
3092  & a31 , a32 , a33 ,
3093  & a41 , a42 , a43 ,
3094  & xmul,sf,f,xel,yel,ikle1,ikle2,ikle3,ikle4,
3095  & nelem,nelmax,icoord)
3098  IMPLICIT NONE
3099  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3100  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
3101  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
3102  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
3103  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
3104  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
3105  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*)
3106  DOUBLE PRECISION, INTENT(IN) :: XMUL
3107  DOUBLE PRECISION, INTENT(IN) :: F(*)
3108  TYPE(bief_obj), INTENT(IN) :: SF
3109  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3110  END SUBROUTINE
3111 !
3112  SUBROUTINE mt08bb
3113  &( a11 , a12 , a13 , a14 ,
3114  & a21 , a22 , a23 , a24 ,
3115  & a31 , a32 , a33 , a34 ,
3116  & a41 , a42 , a43 , a44 ,
3117  & xmul,sf,f,xel,yel,ikle1,ikle2,ikle3,ikle4,nelem,nelmax,icoord)
3120  IMPLICIT NONE
3121  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3122  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
3123  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
3124  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
3125  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
3126  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
3127  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
3128  DOUBLE PRECISION, INTENT(IN) :: XMUL
3129  DOUBLE PRECISION, INTENT(IN) :: F(*)
3130  TYPE(bief_obj), INTENT(IN) :: SF
3131  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3132  END SUBROUTINE
3133 !
3134  SUBROUTINE mt08pp
3135  &( t,xm,xmul,sf,f,surfac,ikle,nelem,nelmax)
3138  IMPLICIT NONE
3139  INTEGER, INTENT(IN) :: NELEM,NELMAX
3140  INTEGER, INTENT(IN) :: IKLE(nelmax,6)
3141  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,6),XM(nelmax,30)
3142  DOUBLE PRECISION, INTENT(IN) :: XMUL
3143  DOUBLE PRECISION, INTENT(IN) :: F(*)
3144  TYPE(bief_obj), INTENT(IN) :: SF
3145  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
3146  END SUBROUTINE
3147 !
3148  SUBROUTINE mt08tt
3149  &( t,xm,xmul,x,y,sf,f,ikle,nelem,nelmax)
3152  IMPLICIT NONE
3153  INTEGER,INTENT(IN) :: NELEM,NELMAX
3154  INTEGER,INTENT(IN) :: IKLE(nelmax,4)
3155  DOUBLE PRECISION,INTENT(INOUT) :: T(nelmax,4),XM(nelmax,12)
3156  DOUBLE PRECISION,INTENT(IN) :: XMUL
3157  DOUBLE PRECISION,INTENT(IN) :: F(*),X(*),Y(*)
3158  TYPE(bief_obj),INTENT(IN) :: SF
3159  END SUBROUTINE
3160 !
3161  SUBROUTINE mt11aa
3162  &( a11 , a12 , a13 ,
3163  & a21 , a22 , a23 ,
3164  & a31 , a32 , a33 ,
3165  & xmul,sf,f,xel,yel,ikle1,ikle2,ikle3,nelem,nelmax,icoord)
3168  IMPLICIT NONE
3169  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3170  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
3171  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
3172  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
3173  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
3174  DOUBLE PRECISION, INTENT(IN) :: XMUL
3175  DOUBLE PRECISION, INTENT(IN) :: F(*)
3176  TYPE(bief_obj), INTENT(IN) :: SF
3177  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3178  END SUBROUTINE
3179 !
3180  SUBROUTINE mt11ab
3181  &( a11 , a12 , a13 , a14 ,
3182  & a21 , a22 , a23 , a24 ,
3183  & a31 , a32 , a33 , a34 ,
3184  & xmul,sf,f,xel,yel,ikle1,ikle2,ikle3,ikle4,
3185  & nelem,nelmax,icoord)
3188  IMPLICIT NONE
3189  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3190  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
3191  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
3192  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
3193  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
3194  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
3195  DOUBLE PRECISION, INTENT(IN) :: XMUL
3196  DOUBLE PRECISION, INTENT(IN) :: F(*)
3197  TYPE(bief_obj), INTENT(IN) :: SF
3198  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3199  END SUBROUTINE
3200 !
3201  SUBROUTINE mt11ba
3202  &( a11 , a12 , a13 ,
3203  & a21 , a22 , a23 ,
3204  & a31 , a32 , a33 ,
3205  & a41 , a42 , a43 ,
3206  & xmul,sf,f,xel,yel,ikle1,ikle2,ikle3,ikle4,
3207  & nelem,nelmax,icoord)
3210  IMPLICIT NONE
3211  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3212  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
3213  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
3214  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
3215  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
3216  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
3217  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*)
3218  DOUBLE PRECISION, INTENT(IN) :: XMUL
3219  DOUBLE PRECISION, INTENT(IN) :: F(*)
3220  TYPE(bief_obj), INTENT(IN) :: SF
3221  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3222  END SUBROUTINE
3223 !
3224  SUBROUTINE mt11bb
3225  &( a11 , a12 , a13 , a14 ,
3226  & a21 , a22 , a23 , a24 ,
3227  & a31 , a32 , a33 , a34 ,
3228  & a41 , a42 , a43 , a44 ,
3229  & xmul,sf,f,xel,yel,ikle1,ikle2,ikle3,ikle4,
3230  & nelem,nelmax,icoord)
3233  IMPLICIT NONE
3234  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3235  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
3236  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
3237  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
3238  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
3239  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
3240  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
3241  DOUBLE PRECISION, INTENT(IN) :: XMUL
3242  DOUBLE PRECISION, INTENT(IN) :: F(*)
3243  TYPE(bief_obj), INTENT(IN) :: SF
3244  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3245  END SUBROUTINE
3246 !
3247  SUBROUTINE mt12aa
3248  &( a11 , a12 , a13 ,
3249  & a21 , a22 , a23 ,
3250  & a31 , a32 , a33 ,
3251  & xmul,sf,su,sv,f,u,v,
3252  & xel,yel,surdet,
3253  & ikle1,ikle2,ikle3,
3254  & nelem,nelmax,icoord)
3257  IMPLICIT NONE
3258  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3259  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
3260  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
3261  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
3262  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
3263  DOUBLE PRECISION, INTENT(IN) :: XMUL
3264  DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*)
3265  TYPE(bief_obj), INTENT(IN) :: SF,SU,SV
3266  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3267  DOUBLE PRECISION, INTENT(IN) :: SURDET(nelmax)
3268  END SUBROUTINE
3269 !
3270  SUBROUTINE mt12ab
3271  &( a11 , a12 , a13 , a14 ,
3272  & a21 , a22 , a23 , a24 ,
3273  & a31 , a32 , a33 , a34 ,
3274  & xmul,sf,su,sv,f,u,v,
3275  & xel,yel,surfac,
3276  & ikle1,ikle2,ikle3,ikle4,
3277  & nelem,nelmax,icoord)
3280  IMPLICIT NONE
3281  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3282  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
3283  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
3284  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
3285  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
3286  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
3287  DOUBLE PRECISION, INTENT(IN) :: XMUL
3288  DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*)
3289  TYPE(bief_obj), INTENT(IN) :: SF,SU,SV
3290  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3291  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
3292  END SUBROUTINE
3293 !
3294  SUBROUTINE mt12ba
3295  &( a11 , a12 , a13 ,
3296  & a21 , a22 , a23 ,
3297  & a31 , a32 , a33 ,
3298  & a41 , a42 , a43 ,
3299  & xmul,sf,su,sv,f,u,v,
3300  & xel,yel,surfac,
3301  & ikle1,ikle2,ikle3,ikle4,
3302  & nelem,nelmax,icoord)
3305  IMPLICIT NONE
3306  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3307  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
3308  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
3309  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
3310  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
3311  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
3312  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*)
3313  DOUBLE PRECISION, INTENT(IN) :: XMUL
3314  DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*)
3315  TYPE(bief_obj), INTENT(IN) :: SF,SU,SV
3316  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3317  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
3318  END SUBROUTINE
3319 !
3320  SUBROUTINE mt12bb
3321  &( a11 , a12 , a13 , a14 ,
3322  & a21 , a22 , a23 , a24 ,
3323  & a31 , a32 , a33 , a34 ,
3324  & a41 , a42 , a43 , a44 ,
3325  & xmul,sf,su,sv,f,u,v,
3326  & xel,yel,
3327  & ikle1,ikle2,ikle3,ikle4,
3328  & nelem,nelmax,icoord)
3331  IMPLICIT NONE
3332  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3333  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
3334  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
3335  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
3336  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
3337  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
3338  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
3339  DOUBLE PRECISION, INTENT(IN) :: XMUL
3340  DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*)
3341  TYPE(bief_obj), INTENT(IN) :: SF,SU,SV
3342  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3343  END SUBROUTINE
3344 !
3345  SUBROUTINE mt13aa
3346  &( a11 , a12 , a13 ,
3347  & a21 , a22 , a23 ,
3348  & a31 , a32 , a33 ,
3349  & xmul,xel,yel,nelem,nelmax,icoord)
3352  IMPLICIT NONE
3353  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3354  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
3355  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
3356  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
3357  DOUBLE PRECISION, INTENT(IN) :: XMUL
3358  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3359  END SUBROUTINE
3360 !
3361  SUBROUTINE mt13ab
3362  &( a11 , a12 , a13 , a14 ,
3363  & a21 , a22 , a23 , a24 ,
3364  & a31 , a32 , a33 , a34 ,
3365  & xmul,xel,yel,nelem,nelmax,icoord)
3368  IMPLICIT NONE
3369  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3370  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
3371  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
3372  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
3373  DOUBLE PRECISION, INTENT(IN) :: XMUL
3374  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3375  END SUBROUTINE
3376 !
3377  SUBROUTINE mt13ba
3378  &( a11 , a12 , a13 ,
3379  & a21 , a22 , a23 ,
3380  & a31 , a32 , a33 ,
3381  & a41 , a42 , a43 ,
3382  & xmul,xel,yel,nelem,nelmax,icoord)
3385  IMPLICIT NONE
3386  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3387  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
3388  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
3389  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
3390  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*)
3391  DOUBLE PRECISION, INTENT(IN) :: XMUL
3392  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3393  END SUBROUTINE
3394 !
3395  SUBROUTINE mt13bb
3396  &( a11 , a12 , a13 , a14 ,
3397  & a21 , a22 , a23 , a24 ,
3398  & a31 , a32 , a33 , a34 ,
3399  & a41 , a42 , a43 , a44 ,
3400  & xmul,xel,yel,nelem,nelmax,icoord)
3403  IMPLICIT NONE
3404  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
3405  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
3406  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
3407  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
3408  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
3409  DOUBLE PRECISION, INTENT(IN) :: XMUL
3410  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3411  END SUBROUTINE
3412 !
3413  SUBROUTINE mt14pp
3414  &( t,xm,ppq,lego,xmul,sw,w,h,
3415  & surfac,ikle,nelem,nelmax)
3418  IMPLICIT NONE
3419  INTEGER, INTENT(IN) :: NELEM,NELMAX
3420  INTEGER, INTENT(IN) :: IKLE(nelmax,6),PPQ(6,6)
3421  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,6),XM(nelmax,30)
3422  DOUBLE PRECISION, INTENT(IN) :: XMUL
3423  DOUBLE PRECISION, INTENT(IN) :: W(*),H(*)
3424  LOGICAL, INTENT(IN) :: LEGO
3425  TYPE(bief_obj), INTENT(IN) :: SW
3426  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
3427  END SUBROUTINE
3428 !
3429  SUBROUTINE mt15pp
3430  &(t,xm,xmul,f,zpt,surfac,ikle,nelem,nelmax)
3433  IMPLICIT NONE
3434  INTEGER, INTENT(IN) :: NELEM,NELMAX
3435  INTEGER, INTENT(IN) :: IKLE(nelmax,6)
3436  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,6),XM(nelmax,30)
3437  DOUBLE PRECISION, INTENT(IN) :: XMUL
3438  DOUBLE PRECISION, INTENT(IN) :: F(*),ZPT(*)
3439  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
3440  END SUBROUTINE
3441 !
3442  SUBROUTINE mt99aa
3443  &( a11 , a12 , a13 ,
3444  & a21 , a22 , a23 ,
3445  & a31 , a32 , a33 ,
3446  & xmul,sf,f,xel,yel,
3447  & surfac,ikle1,ikle2,ikle3,nelem,nelmax,formul,tdia,text)
3450  IMPLICIT NONE
3451  INTEGER, INTENT(IN) :: NELEM,NELMAX
3452  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
3453  CHARACTER(LEN=1), INTENT(INOUT) :: TDIA,TEXT
3454  CHARACTER(LEN=16), INTENT(IN) :: FORMUL
3455  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
3456  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
3457  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
3458  DOUBLE PRECISION, INTENT(IN) :: XMUL
3459  DOUBLE PRECISION, INTENT(IN) :: F(*)
3460  TYPE(bief_obj), INTENT(IN) :: SF
3461  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3462  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
3463  END SUBROUTINE
3464 !
3465  SUBROUTINE mt99bb
3466  &( a11 , a12 , a13 , a14 ,
3467  & a21 , a22 , a23 , a24 ,
3468  & a31 , a32 , a33 , a34 ,
3469  & a41 , a42 , a43 , a44 ,
3470  & xmul,sf,f,xel,yel,
3471  & surfac,ikle1,ikle2,ikle3,nelem,nelmax,formul,tdia,text)
3474  IMPLICIT NONE
3475  INTEGER, INTENT(IN) :: NELEM,NELMAX
3476  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
3477  CHARACTER(LEN=1), INTENT(INOUT) :: TDIA,TEXT
3478  CHARACTER(LEN=16), INTENT(IN) :: FORMUL
3479  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
3480  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
3481  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
3482  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
3483  DOUBLE PRECISION, INTENT(IN) :: XMUL
3484  DOUBLE PRECISION, INTENT(IN) :: F(*)
3485  TYPE(bief_obj), INTENT(IN) :: SF
3486  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3487  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
3488  END SUBROUTINE
3489 !
3490  SUBROUTINE mv0202
3491  &(op, x , da,typdia,xa12,xa21,typext, y,c,
3492  & ikle1,ikle2,
3493  & npoin,nelem,w1,w2)
3495  IMPLICIT NONE
3496  INTEGER, INTENT(IN) :: NELEM,NPOIN
3497  INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*)
3498  DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*)
3499  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
3500  DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
3501  DOUBLE PRECISION, INTENT(IN) :: XA12(*),XA21(*)
3502  DOUBLE PRECISION, INTENT(IN) :: C
3503  CHARACTER(LEN=*), INTENT(IN) :: OP,TYPDIA,TYPEXT
3504  END SUBROUTINE
3505 !
3506  SUBROUTINE mv0303
3507  &(op, x , da,typdia,xa12,xa13,xa21,xa23,xa31,xa32,
3508  & typext, y,c,ikle1,ikle2,ikle3,npoin,nelem,w1,w2,w3
3509  & ,x_err,y_err,da_err)
3511  IMPLICIT NONE
3512  INTEGER, INTENT(IN) :: NELEM,NPOIN
3513  INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*)
3514  DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*)
3515  DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
3516  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
3517  DOUBLE PRECISION, INTENT(IN) :: XA12(*),XA13(*),XA23(*)
3518  DOUBLE PRECISION, INTENT(IN) :: XA21(*),XA31(*),XA32(*)
3519  DOUBLE PRECISION, INTENT(IN) ::C
3520  CHARACTER(LEN=8), INTENT(IN) :: OP
3521  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
3522  DOUBLE PRECISION, OPTIONAL, INTENT(INOUT) :: X_ERR(*)
3523  DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: Y_ERR(*),DA_ERR(*)
3524  END SUBROUTINE
3525 !
3526  SUBROUTINE mv0304
3527  &(op, x , da,typdia,
3528  & xa12,xa13,xa14,xa21,xa23,xa24,xa31,xa32,xa34,
3529  & typext, y,c,
3530  & ikle1,ikle2,ikle3,ikle4,
3531  & npoin,nelem,w1,w2,w3,w4)
3533  IMPLICIT NONE
3534  INTEGER, INTENT(IN) :: NELEM,NPOIN
3535  INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*),IKLE4(*)
3536  DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*),W4(*)
3537  DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
3538  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
3539  DOUBLE PRECISION, INTENT(IN) :: XA12(*),XA13(*),XA14(*)
3540  DOUBLE PRECISION, INTENT(IN) :: XA21(*),XA23(*),XA24(*)
3541  DOUBLE PRECISION, INTENT(IN) :: XA31(*),XA32(*),XA34(*)
3542  DOUBLE PRECISION, INTENT(IN) :: C
3543  CHARACTER(LEN=8), INTENT(IN) :: OP
3544  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
3545  END SUBROUTINE
3546 !
3547  SUBROUTINE mv0403
3548  &(op, x , da,typdia,
3549  & xa12,xa13,xa21,xa23,xa31,xa32,xa41,xa42,xa43,
3550  & typext, y,c,
3551  & ikle1,ikle2,ikle3,ikle4,
3552  & npoin,nelem,w1,w2,w3,w4)
3554  IMPLICIT NONE
3555  INTEGER, INTENT(IN) :: NELEM,NPOIN
3556  INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*),IKLE4(*)
3557  DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*),W4(*)
3558  DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
3559  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
3560  DOUBLE PRECISION, INTENT(IN) :: XA12(*),XA13(*),XA21(*)
3561  DOUBLE PRECISION, INTENT(IN) :: XA23(*),XA31(*),XA32(*)
3562  DOUBLE PRECISION, INTENT(IN) :: XA41(*),XA42(*),XA43(*)
3563  DOUBLE PRECISION, INTENT(IN) :: C
3564  CHARACTER(LEN=8), INTENT(IN) :: OP
3565  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
3566  END SUBROUTINE
3567 !
3568  SUBROUTINE mv0404
3569  &(op, x , da,typdia,
3570  & xa12,xa13,xa14,xa21,xa23,xa24,xa31,xa32,xa34,xa41,xa42,xa43,
3571  & typext, y,c,ikle1,ikle2,ikle3,ikle4,npoin,nelem,w1,w2,w3,w4)
3573  IMPLICIT NONE
3574  INTEGER, INTENT(IN) :: NELEM,NPOIN
3575  INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*),IKLE4(*)
3576  DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*),W4(*)
3577  DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
3578  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
3579  DOUBLE PRECISION, INTENT(IN) :: XA12(*),XA13(*),XA14(*)
3580  DOUBLE PRECISION, INTENT(IN) :: XA21(*),XA23(*),XA24(*)
3581  DOUBLE PRECISION, INTENT(IN) :: XA31(*),XA32(*),XA34(*)
3582  DOUBLE PRECISION, INTENT(IN) :: XA41(*),XA42(*),XA43(*)
3583  DOUBLE PRECISION, INTENT(IN) :: C
3584  CHARACTER(LEN=8), INTENT(IN) :: OP
3585  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
3586  END SUBROUTINE
3587 !
3588  SUBROUTINE mv0404_2
3589  &(op, x , da,typdia,xa,typext, y,c,ikle1,ikle2,ikle3,ikle4,
3590  & npoin,nelem,w1,w2,w3,w4,dim1xa)
3591  IMPLICIT NONE
3592  INTEGER, INTENT(IN) :: NELEM,NPOIN,DIM1XA
3593  INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*),IKLE4(*)
3594  DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*),W4(*)
3595  DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
3596  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
3597  DOUBLE PRECISION, INTENT(IN) :: XA(dim1xa,*)
3598  DOUBLE PRECISION, INTENT(IN) :: C
3599  CHARACTER(LEN=8), INTENT(IN) :: OP
3600  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
3601  END SUBROUTINE
3602 !
3603  SUBROUTINE mv0606
3604  &(op, x , da,typdia,xa,typext, y,c,
3605  & ikle1,ikle2,ikle3,ikle4,ikle5,ikle6,
3606  & npoin,nelem,nelmax,w1,w2,w3,w4,w5,w6)
3608  IMPLICIT NONE
3609  INTEGER, INTENT(IN) :: NELEM,NELMAX,NPOIN
3610  INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*)
3611  INTEGER, INTENT(IN) :: IKLE4(*),IKLE5(*),IKLE6(*)
3612  DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*)
3613  DOUBLE PRECISION, INTENT(INOUT) :: W4(*),W5(*),W6(*)
3614  DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
3615  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
3616  DOUBLE PRECISION, INTENT(IN) :: XA(nelmax,*)
3617  DOUBLE PRECISION, INTENT(IN) :: C
3618  CHARACTER(LEN=8), INTENT(IN) :: OP
3619  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
3620  END SUBROUTINE
3621 !
3622  SUBROUTINE mv0606_2
3623  &(op, x , da,typdia,xa,typext, y,c,
3624  & ikle1,ikle2,ikle3,ikle4,ikle5,ikle6,
3625  & npoin,nelem,w1,w2,w3,w4,w5,w6,dim1xa)
3626  IMPLICIT NONE
3627  INTEGER, INTENT(IN) :: NELEM,NPOIN,DIM1XA
3628  INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*)
3629  INTEGER, INTENT(IN) :: IKLE4(*),IKLE5(*),IKLE6(*)
3630  DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*)
3631  DOUBLE PRECISION, INTENT(INOUT) :: W4(*),W5(*),W6(*)
3632  DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
3633  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
3634  DOUBLE PRECISION, INTENT(IN) :: XA(dim1xa,*)
3635  DOUBLE PRECISION, INTENT(IN) :: C
3636  CHARACTER(LEN=8), INTENT(IN) :: OP
3637  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
3638  END SUBROUTINE
3639 !
3640  SUBROUTINE mvseg
3641  &(op, x , da,typdia,xa1,xa2,
3642  & typext, y,c,npoin,nelem,nseg1,nseg2,gloseg1,gloseg2,ielm1,ielm2)
3644  IMPLICIT NONE
3645  INTEGER, INTENT(IN) :: NPOIN
3646  INTEGER, INTENT(IN) :: GLOSEG1(*),GLOSEG2(*)
3647  INTEGER, INTENT(IN) :: NSEG1,NSEG2,NELEM,IELM1,IELM2
3648  DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
3649  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
3650  DOUBLE PRECISION, INTENT(IN) :: XA1(*),XA2(*)
3651  DOUBLE PRECISION, INTENT(IN) :: C
3652  CHARACTER(LEN=8),INTENT(IN) :: OP
3653  CHARACTER(LEN=1),INTENT(IN) :: TYPDIA,TYPEXT
3654  END SUBROUTINE
3655 !
3656  SUBROUTINE mw0303
3657  &(op, x , da,typdia,xas,typext, y,c,
3658  & iklem1,dimikm,limvoi,mxptvs,npmax,npoin,trav)
3660  IMPLICIT NONE
3661  INTEGER, INTENT(IN) :: DIMIKM,MXPTVS,NPMAX,NPOIN
3662  INTEGER, INTENT(IN) :: IKLEM1(dimikm,4,2),LIMVOI(11,2)
3663  DOUBLE PRECISION, INTENT(INOUT) :: X(*),TRAV(*)
3664  DOUBLE PRECISION, INTENT(IN) :: DA(*),Y(*)
3665  DOUBLE PRECISION, INTENT(IN) :: XAS(*),C
3666  CHARACTER(LEN=8), INTENT(IN) :: OP
3667  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
3668  END SUBROUTINE
3669 !
3670  SUBROUTINE mxptel31(NELEM,NPOIN,MXELVS,IKLES,MXPTVS)
3672  IMPLICIT NONE
3673  INTEGER, INTENT(IN) :: NELEM
3674  INTEGER, INTENT(IN) :: NPOIN
3675  INTEGER, INTENT(IN) :: MXELVS
3676  INTEGER, INTENT(IN) :: IKLES(4,nelem)
3677  INTEGER, INTENT(OUT) :: MXPTVS
3678  END SUBROUTINE
3679 !
3680  SUBROUTINE mxptel
3681  &(mxptvs,mxelvs,ikles,ielm,npoin,nelem,ndp,ipobo,listin)
3683  IMPLICIT NONE
3684  INTEGER, INTENT(INOUT) :: MXPTVS,MXELVS
3685  INTEGER, INTENT(IN) :: IELM,NDP,NPOIN,NELEM
3686  INTEGER, INTENT(IN) :: IKLES(ndp,nelem),IPOBO(npoin)
3687  LOGICAL, INTENT(IN) :: LISTIN
3688  END SUBROUTINE
3689 !
3690  INTEGER FUNCTION bief_nbfel(IELM,MESH)
3693  IMPLICIT NONE
3694  INTEGER, INTENT(IN) :: IELM
3695  TYPE(bief_mesh), INTENT(IN) :: MESH
3696  END FUNCTION
3697 !
3698  INTEGER FUNCTION bief_nbmpts(IELM,MESH)
3701  IMPLICIT NONE
3702  INTEGER, INTENT(IN) :: IELM
3703  TYPE(bief_mesh), INTENT(IN) :: MESH
3704  END FUNCTION
3705 !
3706  INTEGER FUNCTION bief_nbpel(IELM,MESH)
3709  IMPLICIT NONE
3710  INTEGER, INTENT(IN) :: IELM
3711  TYPE(bief_mesh), INTENT(IN) :: MESH
3712  END FUNCTION
3713 !
3714  INTEGER FUNCTION bief_nbpts(IELM,MESH)
3717  IMPLICIT NONE
3718  INTEGER, INTENT(IN) :: IELM
3719  TYPE(bief_mesh), INTENT(IN) :: MESH
3720  END FUNCTION
3721 !
3722  INTEGER FUNCTION bief_nbseg(IELM,MESH)
3725  IMPLICIT NONE
3726  INTEGER, INTENT(IN) :: IELM
3727  TYPE(bief_mesh), INTENT(IN) :: MESH
3728  END FUNCTION
3729 !
3730  INTEGER FUNCTION bief_nbsegel(IELM,MESH)
3733  IMPLICIT NONE
3734  INTEGER, INTENT(IN) :: IELM
3735  TYPE(bief_mesh), INTENT(IN) :: MESH
3736  END FUNCTION
3737 !
3738  SUBROUTINE normab
3739  &(xnebor,ynebor,xsgbor,ysgbor,disbor,surfac,nelmax,
3740  & nelbor,nulone,lgseg,nptfr,mesh,xel,yel,iklbor,nelebx,neleb)
3743  IMPLICIT NONE
3744  INTEGER, INTENT(IN) :: NPTFR,NELMAX,NELEBX,NELEB
3745  INTEGER, INTENT(IN) :: NELBOR(nelebx)
3746  INTEGER, INTENT(IN) :: NULONE(nelebx,2),IKLBOR(nelebx,2)
3747  DOUBLE PRECISION, INTENT(INOUT) :: XNEBOR(nptfr,2),YNEBOR(nptfr,2)
3748  DOUBLE PRECISION, INTENT(INOUT) :: XSGBOR(nelebx,4)
3749  DOUBLE PRECISION, INTENT(INOUT) :: YSGBOR(nelebx,4)
3750  DOUBLE PRECISION, INTENT(INOUT) :: DISBOR(nptfr),LGSEG(nelebx)
3751  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
3752  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
3753  TYPE(bief_mesh), INTENT(INOUT) :: MESH
3754  END SUBROUTINE
3755 !
3756  SUBROUTINE om( OP , M , N , D , C , MESH )
3759  IMPLICIT NONE
3760  CHARACTER(LEN=8), INTENT(IN) :: OP
3761  TYPE(bief_obj) , INTENT(INOUT), TARGET, OPTIONAL :: M
3762  TYPE(bief_obj) , INTENT(IN), TARGET, OPTIONAL :: N
3763  TYPE(bief_obj) , INTENT(IN), TARGET, OPTIONAL :: D
3764  DOUBLE PRECISION, INTENT(IN), OPTIONAL :: C
3765  TYPE(bief_mesh) , INTENT(IN), OPTIONAL :: MESH
3766  END SUBROUTINE
3767 !
3768  SUBROUTINE om0101(OP , DM,TYPDIM,XM,TYPEXM,
3769  & DN,TYPDIN,XN,TYPEXN, D,C,
3770  & IKLE,NELEM,NELMAX,NDIAG)
3773  IMPLICIT NONE
3774  INTEGER, INTENT(IN) :: NELEM,NELMAX,NDIAG
3775  INTEGER, INTENT(IN) :: IKLE(nelmax,2)
3776  CHARACTER(LEN=8), INTENT(IN) :: OP
3777  DOUBLE PRECISION, INTENT(IN) :: DN(*),D(*),XN(nelmax,*)
3778  DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(nelmax,*)
3779  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3780  DOUBLE PRECISION, INTENT(IN) :: C
3781  END SUBROUTINE
3782 !
3783  SUBROUTINE om1101(OP , DM,TYPDIM,XM,TYPEXM,
3784  & DN,TYPDIN,XN,TYPEXN, C,
3785  & NULONE,NELBOR,NBOR,NELMAX,NDIAG,NPTFR,
3786  & NELEBX,NELEB)
3789  IMPLICIT NONE
3790  INTEGER, INTENT(IN) :: NELMAX,NDIAG,NPTFR
3791  INTEGER, INTENT(IN) :: NELEBX,NELEB
3792  CHARACTER(LEN=8), INTENT(IN) :: OP
3793  INTEGER, INTENT(IN) :: NULONE(*),NELBOR(*),NBOR(*)
3794  DOUBLE PRECISION, INTENT(IN) :: DN(*),XN(*)
3795  DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(nelmax,*)
3796  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3797  DOUBLE PRECISION, INTENT(IN) :: C
3798  END SUBROUTINE
3799 !
3800  SUBROUTINE om1201(OP , DM,TYPDIM,XM,TYPEXM,
3801  & DN,TYPDIN,XN,TYPEXN, C,
3802  & NULONE,NELBOR,NBOR,NELMAX,NDIAG,NPTFR,
3803  & NELEBX,NELEB)
3806  IMPLICIT NONE
3807  INTEGER, INTENT(IN) :: NELMAX,NDIAG,NPTFR
3808  INTEGER, INTENT(IN) :: NELEBX,NELEB
3809  CHARACTER(LEN=8), INTENT(IN) :: OP
3810  INTEGER, INTENT(IN) :: NULONE(*),NELBOR(*),NBOR(*)
3811  DOUBLE PRECISION, INTENT(IN) :: DN(*),XN(*)
3812  DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(nelmax,*)
3813  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3814  DOUBLE PRECISION, INTENT(IN) :: C
3815  END SUBROUTINE
3816 !
3817  SUBROUTINE om1111(OP , DM,TYPDIM,XM,TYPEXM,
3818  & DN,TYPDIN,XN,TYPEXN, D,C,
3819  & IKLE,NELEM,NELMAX,NDIAG,
3820  & DM_ERR,DN_ERR,D_ERR)
3823  IMPLICIT NONE
3824  INTEGER, INTENT(IN) :: NELEM,NELMAX,NDIAG
3825  INTEGER, INTENT(IN) :: IKLE(nelmax,3)
3826  CHARACTER(LEN=8), INTENT(IN) :: OP
3827  DOUBLE PRECISION, INTENT(IN) :: DN(*),D(*),XN(nelmax,*)
3828  DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(nelmax,*)
3829  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3830  DOUBLE PRECISION, INTENT(IN) :: C
3831  DOUBLE PRECISION,OPTIONAL, INTENT(INOUT) :: DM_ERR(*)
3832  DOUBLE PRECISION,OPTIONAL, INTENT(IN) ::DN_ERR(*),D_ERR(*)
3833  END SUBROUTINE
3834 !
3835  SUBROUTINE om1211(OP , DM,TYPDIM,XM,TYPEXM,
3836  & DN,TYPDIN,XN,TYPEXN, D,C,
3837  & IKLE,NELEM,NELMAX,NDIAG)
3840  IMPLICIT NONE
3841  INTEGER, INTENT(IN) :: NELEM,NELMAX,NDIAG
3842  INTEGER, INTENT(IN) :: IKLE(nelmax,3)
3843  CHARACTER(LEN=8), INTENT(IN) :: OP
3844  DOUBLE PRECISION, INTENT(IN) :: DN(*),D(*),XN(nelmax,*)
3845  DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(nelmax,*)
3846  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3847  DOUBLE PRECISION, INTENT(IN) :: C
3848  END SUBROUTINE
3849 !
3850  SUBROUTINE om1112(OP , DM,TYPDIM,XM,TYPEXM,
3851  & DN,TYPDIN,XN,TYPEXN, D,C,
3852  & IKLE,NELEM,NELMAX,NDIAG)
3855  IMPLICIT NONE
3856  INTEGER, INTENT(IN) :: NELEM,NELMAX,NDIAG
3857  INTEGER, INTENT(IN) :: IKLE(nelmax,3)
3858  CHARACTER(LEN=8), INTENT(IN) :: OP
3859  DOUBLE PRECISION, INTENT(IN) :: DN(*),D(*),XN(nelmax,*)
3860  DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(nelmax,*)
3861  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3862  DOUBLE PRECISION, INTENT(IN) :: C
3863  END SUBROUTINE
3864 !
3865  SUBROUTINE om1302
3866  &(op , dm,typdim,xm,typexm, dn,typdin,xn,typexn, c,
3867  & nulone,nelbor,nbor,nelmax,ndiag,nptfr,nelebx,neleb)
3869  IMPLICIT NONE
3870  INTEGER, INTENT(IN) :: NELMAX,NDIAG,NPTFR,NELEBX,NELEB
3871  CHARACTER(LEN=8), INTENT(IN) :: OP
3872  INTEGER, INTENT(IN) :: NULONE(nelebx),NELBOR(nelebx)
3873  INTEGER, INTENT(IN) :: NBOR(*)
3874  DOUBLE PRECISION, INTENT(IN) :: DN(*),XN(*)
3875  DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(nelmax,*)
3876  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3877  DOUBLE PRECISION, INTENT(IN) :: C
3878  END SUBROUTINE
3879 !
3880  SUBROUTINE om2121(OP , DM,TYPDIM,XM,TYPEXM,
3881  & DN,TYPDIN,XN,TYPEXN, D,C,
3882  & IKLE,NELEM,NELMAX,NDIAG)
3885  IMPLICIT NONE
3886  INTEGER, INTENT(IN) :: NELEM,NELMAX,NDIAG
3887  INTEGER, INTENT(IN) :: IKLE(nelmax,4)
3888  CHARACTER(LEN=8), INTENT(IN) :: OP
3889  DOUBLE PRECISION, INTENT(IN) :: DN(*),D(*),XN(nelmax,*)
3890  DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(nelmax,*)
3891  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3892  DOUBLE PRECISION, INTENT(IN) :: C
3893  END SUBROUTINE
3894 !
3895  SUBROUTINE om4141(OP , DM,TYPDIM,XM,TYPEXM,
3896  & DN,TYPDIN,XN,TYPEXN, D,C,
3897  & IKLE,NELEM,NELMAX,NDIAG,STOX)
3900  IMPLICIT NONE
3901  INTEGER, INTENT(IN) :: NELEM,NELMAX,NDIAG,STOX
3902  INTEGER, INTENT(IN) :: IKLE(nelmax,6)
3903  CHARACTER(LEN=8), INTENT(IN) :: OP
3904  DOUBLE PRECISION, INTENT(IN) :: DN(*),D(*),XN(nelmax,*)
3905  DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(nelmax,*)
3906  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3907  DOUBLE PRECISION, INTENT(IN) :: C
3908  END SUBROUTINE
3909 !
3910  SUBROUTINE om4111(OP , DM,TYPDIM,XM,TYPEXM,
3911  & DN,TYPDIN,XN,TYPEXN,
3912  & SIZDN,SZMDN,SIZXN,NETAGE,NELMAX3D)
3915  IMPLICIT NONE
3916  INTEGER, INTENT(IN) :: NETAGE,SIZDN,SZMDN,SIZXN,NELMAX3D
3917  CHARACTER(LEN=8), INTENT(IN) :: OP
3918  DOUBLE PRECISION, INTENT(IN) :: DN(*),XN(nelmax3d/netage,*)
3919  DOUBLE PRECISION, INTENT(INOUT) :: DM(szmdn,*)
3920  DOUBLE PRECISION, INTENT(INOUT):: XM(nelmax3d/netage,netage,*)
3921  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3922  END SUBROUTINE
3923 !
3924  SUBROUTINE om4121(OP , DM,TYPDIM,XM,TYPEXM,
3925  & DN,TYPDIN,XN,TYPEXN, C,
3926  & NULONE,NELBOR,NBOR,NELMAX,SIZDN,SIZXN,SZMXN)
3929  IMPLICIT NONE
3930  INTEGER, INTENT(IN) :: NELMAX,SIZDN,SIZXN,SZMXN
3931  CHARACTER(LEN=8), INTENT(IN) :: OP
3932  INTEGER, INTENT(IN) :: NULONE(*),NELBOR(*),NBOR(*)
3933  DOUBLE PRECISION, INTENT(IN) :: DN(*),XN(nelmax,*)
3934  DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(nelmax,*)
3935  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3936  DOUBLE PRECISION, INTENT(IN) :: C
3937  END SUBROUTINE
3938 !
3939  SUBROUTINE om5161
3940  &(op , dm,typdim,xm,typexm, dn,typdin,xn,typexn, c,
3941  & nulone,nelbor,nbor,nelmax,sizdn,sizxn,szmxn)
3943  IMPLICIT NONE
3944  INTEGER, INTENT(IN) :: NELMAX,SIZDN,SIZXN,SZMXN
3945  CHARACTER(LEN=8), INTENT(IN) :: OP
3946  INTEGER, INTENT(IN) :: NULONE(szmxn,3)
3947  INTEGER, INTENT(IN) :: NELBOR(*),NBOR(*)
3948  DOUBLE PRECISION, INTENT(IN) :: DN(*),XN(szmxn,*)
3949  DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(nelmax,*)
3950  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3951  DOUBLE PRECISION, INTENT(IN) :: C
3952  END SUBROUTINE
3953 !
3954  SUBROUTINE omsegbor
3955  &(op , dm,typdim,xm,typexm, dn,typdin,xn,typexn,c,
3956  & ndiag,nseg1,nbor,nptfr,ielm1,ieln1,nseg11,
3957  & iklbor,nelebx,neleb)
3959  IMPLICIT NONE
3960  INTEGER, INTENT(IN) :: NDIAG,NSEG1,NPTFR,IELM1,IELN1,NSEG11
3961  INTEGER, INTENT(IN) :: NELEBX,NELEB
3962  INTEGER, INTENT(IN) :: NBOR(*),IKLBOR(nelebx,*)
3963  CHARACTER(LEN=8), INTENT(IN) :: OP
3964  DOUBLE PRECISION, INTENT(IN) :: DN(*),XN(nelebx,*)
3965  DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(nseg1,*)
3966  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3967  DOUBLE PRECISION, INTENT(IN) :: C
3968  END SUBROUTINE
3969 !
3970  SUBROUTINE omborseg
3971  &(op , dm,xm,typexm, dn,xn,typexn,c,
3972  & ndiag,mseg1,mseg2,nseg1,nseg2,nbor)
3973  INTEGER, INTENT(IN) :: NDIAG,MSEG1,MSEG2,NSEG1,NSEG2
3974  INTEGER, INTENT(IN) :: NBOR(*)
3975  CHARACTER(LEN=8), INTENT(IN) :: OP
3976  DOUBLE PRECISION, INTENT(IN) :: DN(*)
3977 ! XM AND XN MAY ONLY BE OF SIZE NSEG1 IF THE MATRIX IS SYMMETRICAL
3978 ! SIZE GIVEN HERE ONLY TO CHECK BOUNDS
3979  DOUBLE PRECISION, INTENT(INOUT) :: XM(mseg1+mseg2)
3980  DOUBLE PRECISION, INTENT(IN) :: XN(nseg1+nseg2)
3981  CHARACTER(LEN=1), INTENT(INOUT) :: TYPEXM,TYPEXN
3982  DOUBLE PRECISION, INTENT(INOUT) :: DM(*)
3983  DOUBLE PRECISION, INTENT(IN) :: C
3984  END SUBROUTINE
3985 !
3986  SUBROUTINE omseg
3987  &(op , dm,typdim,xm,typexm, dn,typdin,xn,typexn, d,c,
3988  & ndiag,nseg1,nseg2,gloseg,sizglo)
3990  IMPLICIT NONE
3991  INTEGER, INTENT(IN) :: NDIAG,NSEG1,NSEG2,SIZGLO
3992  INTEGER, INTENT(IN) :: GLOSEG(sizglo,2)
3993  CHARACTER(LEN=8), INTENT(IN) :: OP
3994  DOUBLE PRECISION, INTENT(IN) :: DN(*),D(*)
3995  DOUBLE PRECISION, INTENT(INOUT) :: XM(*)
3996  DOUBLE PRECISION, INTENT(IN) :: XN(*)
3997  CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
3998  DOUBLE PRECISION, INTENT(INOUT) :: DM(*)
3999  DOUBLE PRECISION, INTENT(IN) :: C
4000  END SUBROUTINE
4001 !
4002  SUBROUTINE opass(OP,X,W,IW,Y,IY,LIMVOI,MXPTVS,NPMAX)
4004  IMPLICIT NONE
4005  INTEGER, INTENT(IN) :: NPMAX,MXPTVS
4006  INTEGER, INTENT(IN) :: IW(npmax,*),IY(npmax,*),LIMVOI(11,2)
4007  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
4008  DOUBLE PRECISION, INTENT(IN) :: W(*),Y(*)
4009  CHARACTER(LEN=8), INTENT(IN) :: OP
4010  END SUBROUTINE
4011 !
4012  SUBROUTINE bief_open_files
4013  &(code,files,nfiles,path,ncar,icode,fullname)
4016  IMPLICIT NONE
4017  INTEGER , INTENT(IN) :: NFILES
4018  CHARACTER(LEN=24) , INTENT(IN) :: CODE
4019  TYPE(bief_file) , INTENT(INOUT) :: FILES(nfiles)
4020  CHARACTER(LEN=PATH_LEN), INTENT(IN) :: PATH
4021  INTEGER , INTENT(IN) :: NCAR,ICODE
4022  LOGICAL , INTENT(IN) :: FULLNAME
4023  END SUBROUTINE
4024 !
4025  SUBROUTINE bief_desimp
4026  &(format_res,varsor,n,nres,at,lt,lisprd,leoprd,
4027  & sorleo,sorimp,maxvar,texte,ptinig,ptinil,mesh,
4028  & iimp,ileo,compgraph)
4031  IMPLICIT NONE
4032  TYPE(bief_obj) , INTENT(IN) :: VARSOR
4033  CHARACTER(LEN=8) , INTENT(IN) :: FORMAT_RES
4034  INTEGER , INTENT(IN) :: NRES,LT,LISPRD,LEOPRD
4035  INTEGER , INTENT(IN) :: PTINIG,PTINIL,N
4036  INTEGER , INTENT(IN) :: MAXVAR
4037  DOUBLE PRECISION , INTENT(IN) :: AT
4038  CHARACTER(LEN=32), INTENT(IN) :: TEXTE(*)
4039  LOGICAL , INTENT(IN) :: SORLEO(maxvar),SORIMP(maxvar)
4040  TYPE(bief_mesh), INTENT(IN), OPTIONAL :: MESH
4041  LOGICAL , INTENT(IN), OPTIONAL :: IIMP,ILEO
4042  INTEGER , INTENT(IN), OPTIONAL :: COMPGRAPH
4043  END SUBROUTINE
4044 !
4045  SUBROUTINE bief_animp
4046  &(format_res,varnim,n,nres,at,lt,ldir,textanim,npale)
4049  IMPLICIT NONE
4050  CHARACTER(LEN=8), INTENT(IN) :: FORMAT_RES
4051  CHARACTER(LEN=32),INTENT(IN) :: TEXTANIM(*)
4052  INTEGER, INTENT(IN) :: N, NRES
4053  INTEGER, INTENT(IN) :: LT,LDIR
4054  DOUBLE PRECISION, INTENT(IN) :: AT
4055  TYPE(bief_obj), INTENT(IN) :: VARNIM
4056  INTEGER, INTENT(IN) :: NPALE
4057  END SUBROUTINE
4058 !
4059  SUBROUTINE bief_valida
4060  &(varref,textref,uref,refformat,varres,textres,ures,resformat,
4061  & maxtab,np,it,maxit,acomparer)
4064  IMPLICIT NONE
4065  INTEGER, INTENT(IN) :: NP,MAXTAB,IT,MAXIT,URES,UREF
4066  INTEGER, INTENT(IN) :: ACOMPARER(maxtab)
4067  CHARACTER(LEN=32), INTENT(IN) :: TEXTREF(maxtab),TEXTRES(maxtab)
4068  TYPE(bief_obj), INTENT(INOUT) :: VARREF,VARRES
4069  CHARACTER(LEN=*), INTENT(IN) :: REFFORMAT,RESFORMAT
4070  END SUBROUTINE
4071 !
4072  SUBROUTINE os( OP , X , Y , Z , C , IOPT , INFINI , ZERO )
4075  IMPLICIT NONE
4076  INTEGER, INTENT(IN), OPTIONAL :: IOPT
4077  DOUBLE PRECISION, INTENT(IN), OPTIONAL :: INFINI
4078  DOUBLE PRECISION, INTENT(IN), OPTIONAL :: ZERO
4079  TYPE(bief_obj), INTENT(INOUT), OPTIONAL, TARGET :: X
4080  TYPE(bief_obj), INTENT(IN) , OPTIONAL, TARGET :: Y,Z
4081  DOUBLE PRECISION, INTENT(IN) ,OPTIONAL :: C
4082  CHARACTER(LEN=8), INTENT(IN) :: OP
4083  END SUBROUTINE
4084 !
4085  SUBROUTINE osbd( OP , X , Y , Z , C , MESH )
4088  IMPLICIT NONE
4089  DOUBLE PRECISION, INTENT(IN) :: C
4090  CHARACTER(LEN=8), INTENT(IN) :: OP
4091  TYPE(bief_obj) , INTENT(INOUT) :: X
4092  TYPE(bief_obj) , INTENT(IN) :: Y,Z
4093  TYPE(bief_mesh) , INTENT(IN) :: MESH
4094  END SUBROUTINE
4095 !
4096  SUBROUTINE osdb( OP , X , Y , Z , C , MESH )
4099  IMPLICIT NONE
4100  DOUBLE PRECISION, INTENT(IN) :: C
4101  CHARACTER(LEN=8), INTENT(IN) :: OP
4102  TYPE(bief_obj) , INTENT(INOUT) :: X
4103  TYPE(bief_obj) , INTENT(IN) :: Y,Z
4104  TYPE(bief_mesh) , INTENT(IN) :: MESH
4105  END SUBROUTINE
4106 !
4107  SUBROUTINE ov( OP , X , Y , Z , C , DIM1 )
4109  IMPLICIT NONE
4110  INTEGER, INTENT(IN) :: DIM1
4111  DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: Y(dim1),Z(dim1),C
4112  DOUBLE PRECISION, INTENT(INOUT) :: X(dim1)
4113  CHARACTER(LEN=8), INTENT(IN) :: OP
4114  END SUBROUTINE
4115 !
4116  SUBROUTINE ov_comp( OP , X , Y , Z , C , NPOIN
4117  & , X_ERR , Y_ERR , Z_ERR)
4118  IMPLICIT NONE
4119  INTEGER, INTENT(IN) :: NPOIN
4120  DOUBLE PRECISION, INTENT(IN) :: Y(npoin),Z(*),C
4121  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
4122  DOUBLE PRECISION,OPTIONAL,INTENT(IN):: Y_ERR(npoin)
4123  & ,z_err(npoin)
4124  DOUBLE PRECISION,OPTIONAL, INTENT(INOUT) :: X_ERR(npoin)
4125  CHARACTER(LEN=8), INTENT(IN) :: OP
4126  END SUBROUTINE
4127 !
4128  SUBROUTINE ovbd( OP , X , Y , Z , C , NBOR , NPTFR )
4130  IMPLICIT NONE
4131  INTEGER, INTENT(IN) :: NPTFR,NBOR(*)
4132  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
4133  DOUBLE PRECISION, INTENT(IN) :: Y(*),Z(*),C
4134  CHARACTER(LEN=8), INTENT(IN) :: OP
4135  END SUBROUTINE
4136 !
4137  SUBROUTINE ovd( OP , X , Y , Z , C , NPOIN , IOPT , D , EPS )
4139  IMPLICIT NONE
4140  INTEGER , INTENT(IN) :: NPOIN,IOPT
4141  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
4142  DOUBLE PRECISION, INTENT(IN) :: Y(npoin),Z(npoin),C,D,EPS
4143  CHARACTER(LEN=8), INTENT(IN) :: OP
4144  END SUBROUTINE
4145 !
4146  SUBROUTINE ovd_2
4147  & ( op , x , dimx , y , dimy , z , dimz , c , dim1 , npoin ,
4148  & iopt , infini, zero )
4150  IMPLICIT NONE
4151  INTEGER, INTENT(IN) :: DIMX,DIMY,DIMZ,DIM1,NPOIN,IOPT
4152  DOUBLE PRECISION, INTENT(IN) :: C,INFINI,ZERO
4153  CHARACTER(LEN=8), INTENT(IN) :: OP
4154  DOUBLE PRECISION, INTENT(INOUT) :: X(dim1,*)
4155  DOUBLE PRECISION, INTENT(IN) :: Y(dim1,*),Z(dim1,*)
4156  END SUBROUTINE
4157 !
4158  SUBROUTINE ovdb(OP,X,Y,Z,C,NBOR,NPTFR)
4160  IMPLICIT NONE
4161  INTEGER, INTENT(IN) :: NPTFR,NBOR(*)
4162  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
4163  DOUBLE PRECISION, INTENT(IN) :: Y(*),Z(*),C
4164  CHARACTER(LEN=8), INTENT(IN) :: OP
4165  END SUBROUTINE
4166 !
4167  SUBROUTINE ov_2(OP,X,DIMX,Y,DIMY,Z,DIMZ,C,DIM1,NPOIN )
4169  IMPLICIT NONE
4170  INTEGER, INTENT(IN) :: DIMX,DIMY,DIMZ,DIM1,NPOIN
4171  DOUBLE PRECISION, INTENT(IN) :: C
4172  CHARACTER(LEN=8), INTENT(IN) :: OP
4173  DOUBLE PRECISION, INTENT(INOUT) :: X(dim1,*)
4174  DOUBLE PRECISION, INTENT(IN) :: Y(dim1,*),Z(dim1,*)
4175  END SUBROUTINE
4176 !
4177  SUBROUTINE paraco(V1,V2,V3,NPOIN,ICOM,IAN,
4178  & NPLAN,NB_NEIGHB,NB_NEIGHB_PT,LIST_SEND,
4179  & NH_COM,DIMNHCOM,BUF_SEND,BUF_RECV,DIMBUF)
4181  USE bief_def
4183  IMPLICIT NONE
4184  INTEGER, INTENT(IN) :: NPOIN,ICOM,IAN,NPLAN,NB_NEIGHB
4185  INTEGER, INTENT(IN) :: DIMNHCOM,DIMBUF
4186  INTEGER, INTENT(IN) :: NB_NEIGHB_PT(nb_neighb)
4187  INTEGER, INTENT(IN) :: LIST_SEND(nb_neighb)
4188  INTEGER, INTENT(IN) :: NH_COM(dimnhcom,*)
4189  DOUBLE PRECISION, INTENT(INOUT) :: BUF_SEND(dimbuf,*)
4190  DOUBLE PRECISION, INTENT(INOUT) :: BUF_RECV(dimbuf,*)
4191  DOUBLE PRECISION, INTENT(INOUT) :: V1(npoin,nplan)
4192  DOUBLE PRECISION, INTENT(INOUT) :: V2(npoin,nplan)
4193  DOUBLE PRECISION, INTENT(INOUT) :: V3(npoin,nplan)
4194  END SUBROUTINE
4195 !
4196  SUBROUTINE paraco_comp(V1,V2,V3,ERRX,NPOIN,ICOM,IAN,
4197  & NPLAN,NB_NEIGHB,NB_NEIGHB_PT,LIST_SEND,
4198  & NH_COM,DIMNHCOM,BUF_SEND,BUF_RECV,DIMBUF
4199  & ,BUF_SEND_ERR, BUF_RECV_ERR )
4201  IMPLICIT NONE
4202  INTEGER, INTENT(IN) :: NPOIN,ICOM,IAN,NPLAN,NB_NEIGHB
4203  INTEGER, INTENT(IN) :: DIMNHCOM,DIMBUF
4204  INTEGER, INTENT(IN) :: NB_NEIGHB_PT(nb_neighb)
4205  INTEGER, INTENT(IN) :: LIST_SEND(nb_neighb)
4206  INTEGER, INTENT(IN) :: NH_COM(dimnhcom,*)
4207  DOUBLE PRECISION, INTENT(INOUT) :: BUF_SEND(dimbuf,*)
4208  DOUBLE PRECISION, INTENT(INOUT) :: BUF_SEND_ERR(dimbuf,*)
4209  DOUBLE PRECISION, INTENT(INOUT) :: BUF_RECV(dimbuf,*)
4210  DOUBLE PRECISION, INTENT(INOUT) :: BUF_RECV_ERR(dimbuf,*)
4211  DOUBLE PRECISION, INTENT(INOUT) :: V1(npoin,nplan)
4212  DOUBLE PRECISION, INTENT(INOUT) :: V2(npoin,nplan)
4213  DOUBLE PRECISION, INTENT(INOUT) :: V3(npoin,nplan)
4214  DOUBLE PRECISION, INTENT(INOUT) :: ERRX(*)
4215  END SUBROUTINE
4216 !
4217  SUBROUTINE paracoi
4218  &(v1,v2,v3,npoin,icom,ian,nplan,nb_neighb,nb_neighb_pt,list_send,
4219  & nh_com,dimnhcom,buf_send,buf_recv,dimbuf)
4222  IMPLICIT NONE
4223  INTEGER, INTENT(IN) :: NPOIN,ICOM,IAN,NPLAN,NB_NEIGHB
4224  INTEGER, INTENT(IN) :: DIMNHCOM,DIMBUF
4225  INTEGER, INTENT(IN) :: NB_NEIGHB_PT(nb_neighb)
4226  INTEGER, INTENT(IN) :: LIST_SEND(nb_neighb),NH_COM(dimnhcom,*)
4227  INTEGER, INTENT(INOUT) :: BUF_SEND(dimbuf,*)
4228  INTEGER, INTENT(INOUT) :: BUF_RECV(dimbuf,*)
4229  INTEGER, INTENT(INOUT) :: V1(npoin,nplan)
4230  INTEGER, INTENT(INOUT) :: V2(npoin,nplan)
4231  INTEGER, INTENT(INOUT) :: V3(npoin,nplan)
4232  END SUBROUTINE
4233 !
4234  SUBROUTINE paracoi8
4235  &(v1,v2,v3,npoin,icom,ian,nplan,nb_neighb,nb_neighb_pt,list_send,
4236  & nh_com,dimnhcom,buf_send,buf_recv,dimbuf)
4238  IMPLICIT NONE
4239  INTEGER, INTENT(IN) :: NPOIN,ICOM,IAN,NPLAN,NB_NEIGHB
4240  INTEGER, INTENT(IN) :: DIMNHCOM,DIMBUF
4241  INTEGER, INTENT(IN) :: NB_NEIGHB_PT(nb_neighb)
4242  INTEGER, INTENT(IN) :: LIST_SEND(nb_neighb),NH_COM(dimnhcom,*)
4243  INTEGER(KIND=K8), INTENT(INOUT) :: BUF_SEND(dimbuf,*)
4244  INTEGER(KIND=K8), INTENT(INOUT) :: BUF_RECV(dimbuf,*)
4245  INTEGER(KIND=K8), INTENT(INOUT) :: V1(npoin,nplan)
4246  INTEGER(KIND=K8), INTENT(INOUT) :: V2(npoin,nplan)
4247  INTEGER(KIND=K8), INTENT(INOUT) :: V3(npoin,nplan)
4248  END SUBROUTINE
4249 !
4250  SUBROUTINE parcom( X , ICOM , MESH )
4253  IMPLICIT NONE
4254  INTEGER , INTENT(IN) :: ICOM
4255  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4256  TYPE(bief_obj) , INTENT(INOUT) :: X
4257  END SUBROUTINE
4258 !
4259  SUBROUTINE parcom_comp( X ,ERRX, ICOM , MESH)
4261  IMPLICIT NONE
4262  INTEGER , INTENT(IN) :: ICOM
4263  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4264  TYPE(bief_obj) , INTENT(INOUT) :: X
4265  DOUBLE PRECISION, INTENT(INOUT) :: ERRX(*)
4266  END SUBROUTINE
4267 !
4268  SUBROUTINE parcom2(X1,X2,X3,NPOIN,NPLAN,ICOM,IAN,MESH)
4271  IMPLICIT NONE
4272  INTEGER, INTENT(IN) :: ICOM,NPOIN,NPLAN,IAN
4273  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
4274  DOUBLE PRECISION, INTENT(INOUT) :: X1(npoin,nplan)
4275  DOUBLE PRECISION, INTENT(INOUT) :: X2(npoin,nplan)
4276  DOUBLE PRECISION, INTENT(INOUT) :: X3(npoin,nplan)
4277  END SUBROUTINE
4278 !
4279  SUBROUTINE parcom2_comp(X1,X2,X3,ERRX,NPOIN,NPLAN,ICOM,IAN
4280  & ,MESH)
4282  IMPLICIT NONE
4283  INTEGER, INTENT(IN) :: ICOM,NPOIN,NPLAN,IAN
4284  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
4285  DOUBLE PRECISION, INTENT(INOUT) :: X1(npoin,nplan)
4286  DOUBLE PRECISION, INTENT(INOUT) :: X2(npoin,nplan)
4287  DOUBLE PRECISION, INTENT(INOUT) :: X3(npoin,nplan)
4288  DOUBLE PRECISION, INTENT(INOUT) :: ERRX(*)
4289  END SUBROUTINE
4290 !
4291  SUBROUTINE parcom2i(X1,X2,X3,NPOIN,NPLAN,ICOM,IAN,MESH)
4294  IMPLICIT NONE
4295  INTEGER, INTENT(IN) :: ICOM,NPOIN,NPLAN,IAN
4296  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
4297  INTEGER, INTENT(INOUT) :: X1(npoin,nplan)
4298  INTEGER, INTENT(INOUT) :: X2(npoin,nplan)
4299  INTEGER, INTENT(INOUT) :: X3(npoin,nplan)
4300  END SUBROUTINE
4301 !
4302  SUBROUTINE parcom2i8
4303  &( x1 , x2 , x3 , npoin , nplan , icom , ian , mesh )
4306  IMPLICIT NONE
4307  INTEGER, INTENT(IN) :: ICOM,NPOIN,NPLAN,IAN
4308  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
4309  INTEGER(KIND=K8), INTENT(INOUT) :: X1(npoin,nplan)
4310  INTEGER(KIND=K8), INTENT(INOUT) :: X2(npoin,nplan)
4311  INTEGER(KIND=K8), INTENT(INOUT) :: X3(npoin,nplan)
4312  END SUBROUTINE
4313 !
4314  SUBROUTINE parcom2_seg(X1,X2,X3,NSEG,NPLAN,ICOM,IAN,MESH,
4315  & OPT,IELM)
4318  IMPLICIT NONE
4319  INTEGER, INTENT(IN) :: ICOM,NSEG,NPLAN,IAN,OPT,IELM
4320  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
4321  DOUBLE PRECISION, INTENT(INOUT) :: X1(nseg,nplan)
4322  DOUBLE PRECISION, INTENT(INOUT) :: X2(nseg,nplan)
4323  DOUBLE PRECISION, INTENT(INOUT) :: X3(nseg,nplan)
4324  END SUBROUTINE
4325 !
4326  SUBROUTINE parcom2i_seg(X1,X2,X3,NSEG,NPLAN,ICOM,IAN,MESH,
4327  & OPT,IELM)
4330  IMPLICIT NONE
4331  INTEGER, INTENT(IN) :: ICOM,NSEG,NPLAN,IAN,OPT,IELM
4332  TYPE(bief_mesh) , INTENT(INOUT) :: MESH
4333  INTEGER, INTENT(INOUT) :: X1(nseg,nplan)
4334  INTEGER, INTENT(INOUT) :: X2(nseg,nplan)
4335  INTEGER, INTENT(INOUT) :: X3(nseg,nplan)
4336  END SUBROUTINE
4337 !
4338  SUBROUTINE parcom_bord(X,ICOM,MESH)
4341  IMPLICIT NONE
4342  INTEGER, INTENT(IN) :: ICOM
4343  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4344  DOUBLE PRECISION, INTENT(INOUT) :: X(*)
4345  END SUBROUTINE
4346 !
4347  SUBROUTINE parini
4348  &(nhp,nhm,indpu,npoin2,nachb,nplan,mesh,nb_neighb,
4349  & nb_neighb_seg,nelem2,ifapar,modass)
4352  IMPLICIT NONE
4353  INTEGER, INTENT(IN) :: NPOIN2,NPLAN,NELEM2,MODASS
4354  INTEGER, INTENT(INOUT) :: NB_NEIGHB,NB_NEIGHB_SEG
4355  INTEGER, INTENT(INOUT) :: NHP(nbmaxdshare,nptir)
4356  INTEGER, INTENT(INOUT) :: NHM(nbmaxdshare,nptir)
4357  INTEGER, INTENT(IN) :: NACHB(nbmaxnshare,nptir)
4358  INTEGER, INTENT(IN) :: IFAPAR(6,nelem2)
4359  INTEGER, INTENT(INOUT) :: INDPU(npoin2)
4360  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4361  END SUBROUTINE
4362 !
4363  SUBROUTINE positive_depths
4364  &(t1,t2,t3,t4,h,hn,mesh,flodel,compute_flodel,flbor,dt,
4365  & unsv2d,npoin,gloseg1,gloseg2,nbor,nptfr,
4366  & smh,yasmh,pluie,rain,optsou,flulim,limpro,hbor,kdir,info,
4367  & flopoint,namecode,option,nitmax,doflulim,flulimebe,doflulimebe)
4369  IMPLICIT NONE
4370  INTEGER, INTENT(IN) :: NPOIN,NPTFR,OPTSOU,KDIR,OPTION
4371  INTEGER, INTENT(IN) :: NITMAX
4372  INTEGER, INTENT(IN) :: GLOSEG1(*),GLOSEG2(*)
4373  INTEGER, INTENT(IN) :: NBOR(nptfr)
4374  INTEGER, INTENT(IN) :: LIMPRO(nptfr)
4375  DOUBLE PRECISION, INTENT(IN) :: DT,HBOR(nptfr)
4376  DOUBLE PRECISION, INTENT(INOUT) :: FLULIM(*)
4377  TYPE(bief_mesh),INTENT(INOUT) :: MESH
4378  DOUBLE PRECISION, INTENT(INOUT) :: FLOPOINT(mesh%nelmax,3)
4379  TYPE(bief_obj), INTENT(INOUT) :: T1,T2,T3,T4,FLODEL,H,FLBOR
4380  TYPE(bief_obj), INTENT(INOUT) :: PLUIE
4381  TYPE(bief_obj), INTENT(IN) :: UNSV2D,HN,SMH
4382  LOGICAL, INTENT(IN) :: YASMH,INFO,RAIN,COMPUTE_FLODEL
4383  CHARACTER(LEN=24) :: NAMECODE
4384  LOGICAL, INTENT(IN), OPTIONAL :: DOFLULIM,DOFLULIMEBE
4385  DOUBLE PRECISION, INTENT(INOUT),
4386  & TARGET,OPTIONAL :: flulimebe(*)
4387  END SUBROUTINE
4388 !
4390  &(t1,t2,t3,t4,h,hn,mesh,flodel,compute_flodel,flbor,dt,
4391  & unsv2d,npoin,gloseg1,gloseg2,nbor,nptfr,
4392  & smh,yasmh,pluie,rain,optsou,limpro,hbor,kdir,info,
4393  & flopoint,namecode,nitmax,makeflulimebe,flulimebe)
4395  INTEGER, INTENT(IN) :: NPOIN,NPTFR,OPTSOU,KDIR
4396  INTEGER, INTENT(IN) :: NITMAX
4397  INTEGER, INTENT(IN) :: GLOSEG1(*),GLOSEG2(*)
4398  INTEGER, INTENT(IN) :: NBOR(nptfr)
4399  INTEGER, INTENT(IN) :: LIMPRO(nptfr)
4400  DOUBLE PRECISION, INTENT(IN) :: DT,HBOR(nptfr)
4401  TYPE(bief_mesh),INTENT(INOUT) :: MESH
4402  DOUBLE PRECISION, INTENT(INOUT) :: FLOPOINT(mesh%nelem,3)
4403  TYPE(bief_obj), INTENT(INOUT) :: T1,T2,T3,T4,FLODEL,H,FLBOR
4404  TYPE(bief_obj), INTENT(INOUT) :: PLUIE
4405  TYPE(bief_obj), INTENT(IN) :: UNSV2D,HN,SMH
4406  LOGICAL, INTENT(IN) :: YASMH,INFO,RAIN
4407  LOGICAL, INTENT(IN) :: COMPUTE_FLODEL
4408  CHARACTER(LEN=24) :: NAMECODE
4409  LOGICAL, INTENT(IN) :: MAKEFLULIMEBE
4410  DOUBLE PRECISION, INTENT(INOUT) :: FLULIMEBE(mesh%nelem,3)
4411  END SUBROUTINE
4412 !
4414  &(t1,t2,t4,h,hn,mesh,flodel,compute_flodel,flbor,dt,
4415  & unsv2d,npoin,gloseg1,gloseg2,nbor,nptfr,
4416  & smh,yasmh,pluie,rain,optsou,flulim,limpro,hbor,kdir,info,
4417  & flopoint,namecode,nitmax,makeflulim)
4419  IMPLICIT NONE
4420  INTEGER, INTENT(IN) :: NPOIN,NPTFR,OPTSOU,KDIR
4421  INTEGER, INTENT(IN) :: NITMAX
4422  INTEGER, INTENT(IN) :: GLOSEG1(*),GLOSEG2(*)
4423  INTEGER, INTENT(IN) :: NBOR(nptfr)
4424  INTEGER, INTENT(IN) :: LIMPRO(nptfr)
4425  DOUBLE PRECISION, INTENT(IN) :: DT,HBOR(nptfr)
4426  DOUBLE PRECISION, INTENT(INOUT) :: FLULIM(*)
4427  TYPE(bief_mesh),INTENT(INOUT) :: MESH
4428  DOUBLE PRECISION, INTENT(INOUT) :: FLOPOINT(mesh%nelem,3)
4429  TYPE(bief_obj), INTENT(INOUT) :: T1,T2,T4,FLODEL,H,FLBOR
4430  TYPE(bief_obj), INTENT(INOUT) :: PLUIE
4431  TYPE(bief_obj), INTENT(IN) :: UNSV2D,HN,SMH
4432  LOGICAL, INTENT(IN) :: YASMH,INFO,RAIN
4433  LOGICAL, INTENT(IN) :: COMPUTE_FLODEL
4434  CHARACTER(LEN=24) :: NAMECODE
4435  LOGICAL, INTENT(IN) :: MAKEFLULIM
4436  END SUBROUTINE
4437 !
4438  SUBROUTINE prebd4
4439  &(x1,x2,a11,a12,a21,a22,b1,b2,d11,d12,d21,d22,
4440  & mesh,prexsm,diadon)
4443  IMPLICIT NONE
4444  LOGICAL, INTENT(IN) :: PREXSM,DIADON
4445  TYPE(bief_obj), INTENT(INOUT) :: X1,B2,D11,D12,D21,D22
4446  TYPE(bief_obj), INTENT(IN) :: X2,B1
4447  TYPE(bief_obj), INTENT(INOUT) :: A11,A12,A21,A22
4448  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4449  END SUBROUTINE
4450 !
4451  SUBROUTINE prebd9
4452  &(x1,x2,x3,a11,a12,a13,a21,a22,a23,a31,a32,a33,
4453  & b1,b2,b3,d11,d12,d13,d21,d22,d23,d31,d32,d33,
4454  & mesh,prexsm,diadon)
4457  IMPLICIT NONE
4458  LOGICAL, INTENT(IN) :: PREXSM,DIADON
4459  TYPE(bief_obj), INTENT(IN) :: X3,B1
4460  TYPE(bief_obj), INTENT(INOUT) :: X1,X2,B2,B3
4461  TYPE(bief_obj), INTENT(INOUT) :: D11,D12,D13,D21,D22,D23
4462  TYPE(bief_obj), INTENT(INOUT) :: D31,D32,D33
4463  TYPE(bief_obj), INTENT(INOUT) :: A11,A12,A13,A21,A22
4464  TYPE(bief_obj), INTENT(INOUT) :: A23,A31,A32,A33
4465  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4466  END SUBROUTINE
4467 !
4468  SUBROUTINE prebdt(X,A,B,D,MESH,PREXSM,DIADON,S)
4471  IMPLICIT NONE
4472  INTEGER, INTENT(IN) :: S
4473  LOGICAL, INTENT(IN) :: PREXSM,DIADON
4474  TYPE(bief_obj), INTENT(INOUT) :: X,B,D
4475  TYPE(bief_obj), INTENT(INOUT) :: A
4476  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4477  END SUBROUTINE
4478 !
4479  SUBROUTINE precd1(X,A,B,D,MESH,PRECON,PREXSM,DIADON)
4482  IMPLICIT NONE
4483  INTEGER, INTENT(IN) :: PRECON
4484  LOGICAL, INTENT(IN) :: PREXSM,DIADON
4485  TYPE(bief_obj), INTENT(INOUT) :: X,B,D
4486  TYPE(bief_obj), INTENT(INOUT) :: A
4487  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4488  END SUBROUTINE
4489 !
4490  SUBROUTINE precd4
4491  &(x1,x2,a11,a12,a21,a22,
4492  & b1,b2,d1,d2,mesh,precon,prexsm,diadon)
4495  IMPLICIT NONE
4496  INTEGER, INTENT(IN) :: PRECON
4497  LOGICAL, INTENT(IN) :: PREXSM,DIADON
4498  TYPE(bief_obj), INTENT(INOUT) :: X1,X2,B1,B2,D1,D2
4499  TYPE(bief_obj), INTENT(INOUT) :: A11,A12,A21,A22
4500  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4501  END SUBROUTINE
4502 !
4503  SUBROUTINE precd9
4504  &(x1,x2,x3,a11,a12,a13,a21,a22,a23,a31,a32,a33,
4505  & b1,b2,b3,d1,d2,d3,mesh,precon,prexsm,diadon)
4508  IMPLICIT NONE
4509  INTEGER, INTENT(IN) :: PRECON
4510  LOGICAL, INTENT(IN) :: PREXSM,DIADON
4511  TYPE(bief_obj), INTENT(INOUT) :: X1,X2,X3,B1,B2,B3,D1,D2,D3
4512  TYPE(bief_obj), INTENT(INOUT) :: A11,A12,A13,A21
4513  TYPE(bief_obj), INTENT(INOUT) :: A22,A23,A31,A32,A33
4514  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4515  END SUBROUTINE
4516 !
4517  SUBROUTINE precdt(X,A,B,D,MESH,PRECON,PREXSM,DIADON,S)
4520  IMPLICIT NONE
4521  INTEGER, INTENT(IN) :: PRECON,S
4522  LOGICAL, INTENT(IN) :: PREXSM,DIADON
4523  TYPE(bief_obj), INTENT(INOUT) :: X,B,D
4524  TYPE(bief_obj), INTENT(INOUT) :: A
4525  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4526  END SUBROUTINE
4527 !
4528  SUBROUTINE preverebe
4529  &(xaux,ax,typdia,typext,ikle,npoin,nelem,nelmax,mesh,
4530  & typemesh)
4533  IMPLICIT NONE
4534  INTEGER, INTENT(IN) :: NELEM,NELMAX,NPOIN,TYPEMESH
4535  INTEGER, INTENT(IN) :: IKLE(nelmax,6)
4536  DOUBLE PRECISION, INTENT(IN) :: AX(nelmax,*)
4537  DOUBLE PRECISION, INTENT(INOUT) :: XAUX(npoin,*)
4538  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
4539  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4540  END SUBROUTINE
4541 !
4542  SUBROUTINE preverseg
4543  &(xaux,ad,ax,typdia,typext,npoin,mesh,nseg3d,typemesh)
4546  IMPLICIT NONE
4547  INTEGER, INTENT(IN) :: NPOIN,NSEG3D,TYPEMESH
4548  DOUBLE PRECISION, INTENT(IN) :: AD(npoin),AX(nseg3d,*)
4549  DOUBLE PRECISION, INTENT(INOUT) :: XAUX(npoin,*)
4550  CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
4551  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4552  END SUBROUTINE
4553 !
4554  SUBROUTINE proxim(IP,XP,YP,X,Y,NP,NPOIN,IKLE,NELEM,NELMAX)
4556  IMPLICIT NONE
4557  INTEGER, INTENT(IN) :: NP,NPOIN,NELEM,NELMAX
4558  INTEGER, INTENT(INOUT) :: IP(np)
4559  INTEGER, INTENT(IN) :: IKLE(nelmax,3)
4560  DOUBLE PRECISION, INTENT(IN) :: XP(np),YP(np),X(npoin),Y(npoin)
4561  END SUBROUTINE
4562 !
4563  SUBROUTINE ptel11(XEL,X,IKLE,NELMAX,NELEM)
4565  IMPLICIT NONE
4566  INTEGER, INTENT(IN) :: NELEM,NELMAX,IKLE(nelmax,3)
4567  DOUBLE PRECISION, INTENT(IN) :: X(*)
4568  DOUBLE PRECISION, INTENT(INOUT) :: XEL(nelmax,3)
4569  END SUBROUTINE
4570 !
4571  SUBROUTINE pttoel(XEL,X,MESH)
4574  IMPLICIT NONE
4575  TYPE(bief_obj), INTENT(IN) :: X
4576  TYPE(bief_obj), INTENT(INOUT) :: XEL
4577  TYPE(bief_mesh), INTENT(IN) :: MESH
4578  END SUBROUTINE
4579 !
4580  SUBROUTINE puog1(X, A,B ,DITR,MESH,COPY)
4583  IMPLICIT NONE
4584  CHARACTER(LEN=1), INTENT(IN) :: DITR
4585  LOGICAL, INTENT(IN) :: COPY
4586  TYPE(bief_obj), INTENT(INOUT) :: X,B
4587  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4588  TYPE(bief_obj), INTENT(IN) :: A
4589  END SUBROUTINE
4590 !
4591  SUBROUTINE puog(X, A,B ,DITR,MESH,COPY)
4594  IMPLICIT NONE
4595  CHARACTER(LEN=1), INTENT(IN) :: DITR
4596  LOGICAL, INTENT(IN) :: COPY
4597  TYPE(bief_obj), INTENT(INOUT) :: X,B
4598  TYPE(bief_obj), INTENT(IN) :: A
4599  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4600  END SUBROUTINE
4601 !
4602  SUBROUTINE p_dotpair(NPOIN,X,Y,IFAC,PAIR)
4604  IMPLICIT NONE
4605  INTEGER, INTENT(IN) :: NPOIN
4606  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin)
4607  INTEGER, INTENT(IN) :: IFAC(npoin)
4608  DOUBLE PRECISION, INTENT(OUT) ::PAIR(2)
4609  END SUBROUTINE
4610 !
4611  DOUBLE PRECISION FUNCTION p_dots( X , Y , MESH )
4614  IMPLICIT NONE
4615  TYPE(bief_mesh), INTENT(IN) :: MESH
4616  TYPE(bief_obj), INTENT(IN) :: X,Y
4617  END FUNCTION
4618 !
4619  DOUBLE PRECISION FUNCTION p_dot(NPOIN,X,Y,IFAC)
4622  IMPLICIT NONE
4623  INTEGER, INTENT(IN) :: NPOIN
4624  DOUBLE PRECISION, INTENT(IN) :: X(npoin),Y(npoin)
4625  INTEGER, INTENT(IN) :: IFAC(npoin)
4626  END FUNCTION
4627 !
4628  SUBROUTINE read_config(CHAINE,NCAR)
4630  IMPLICIT NONE
4631  CHARACTER(LEN=PATH_LEN), INTENT(IN) :: CHAINE
4632  INTEGER , INTENT(IN) :: NCAR
4633  END SUBROUTINE
4634 !
4635  SUBROUTINE read_submit(FILES,NFILES,SUBMIT,NMOT)
4638  IMPLICIT NONE
4639  INTEGER , INTENT(IN) :: NFILES,NMOT
4640  TYPE(bief_file), INTENT(INOUT) :: FILES(nfiles)
4641  CHARACTER(LEN=PATH_LEN), INTENT(IN) :: SUBMIT(4,nmot)
4642  END SUBROUTINE
4643 !
4644  SUBROUTINE read_mesh_conn(FFORMAT,NFIC,NPOIN,TYP_ELEM,NELEM,
4645  & NDP,TYP_BND_ELEM,NELEBD,IKLES,IPOBO)
4646  CHARACTER(LEN=8), INTENT(IN) :: FFORMAT
4647  INTEGER, INTENT(IN) :: NFIC,NPOIN,NELEM,NDP,TYP_ELEM
4648  INTEGER, INTENT(IN) :: TYP_BND_ELEM,NELEBD
4649  INTEGER, INTENT(INOUT) :: IKLES(ndp*nelem)
4650  INTEGER, INTENT(INOUT) :: IPOBO(npoin)
4651  END SUBROUTINE
4652 !
4653  SUBROUTINE read_mesh_info(FFORMAT,NFIC,TITLE,NVAR,NPOIN,
4654  & TYP_ELEM,NELEM,NPTFR,NPTIR,NDP,NPLAN,X_ORIG,Y_ORIG,
4655  & TYP_BND_ELEM,NELEBD)
4656  CHARACTER(LEN=8), INTENT(IN) :: FFORMAT
4657  CHARACTER(LEN=80), INTENT(OUT) :: TITLE
4658  INTEGER, INTENT(OUT) :: NVAR
4659  INTEGER, INTENT(OUT) :: NPOIN
4660  INTEGER, INTENT(OUT) :: TYP_ELEM
4661  INTEGER, INTENT(OUT) :: NELEM
4662  INTEGER, INTENT(OUT) :: NDP
4663  INTEGER, INTENT(OUT) :: NPLAN
4664  INTEGER, INTENT(OUT) :: NPTFR
4665  INTEGER, INTENT(OUT) :: NPTIR
4666  INTEGER, INTENT(OUT) :: X_ORIG
4667  INTEGER, INTENT(OUT) :: Y_ORIG
4668  INTEGER, INTENT(IN) :: NFIC
4669  INTEGER,OPTIONAL,INTENT(OUT) :: TYP_BND_ELEM
4670  INTEGER,OPTIONAL,INTENT(OUT) :: NELEBD
4671  END SUBROUTINE
4672 !
4673  SUBROUTINE read_mesh_coord(FFORMAT,NFIC,X,Y,NPOIN,PROJECTION,
4674  & LATI0,LONGI0,Z)
4676  IMPLICIT NONE
4677  INTEGER, INTENT(IN) :: NPOIN,NFIC
4678  DOUBLE PRECISION, INTENT(OUT) :: X(npoin),Y(npoin)
4679  DOUBLE PRECISION, INTENT(OUT), OPTIONAL :: Z(npoin)
4680  INTEGER, INTENT(INOUT) :: PROJECTION
4681  DOUBLE PRECISION, INTENT(IN) :: LATI0,LONGI0
4682  CHARACTER(LEN=8), INTENT(IN) :: FFORMAT
4683  END SUBROUTINE
4684 !
4685  SUBROUTINE find_variable(FFORMAT,FID,VAR_NAME,RES,N,IERR,TIME,
4686  & EPS_TIME,RECORD,TIME_RECORD,OFFSET)
4687  CHARACTER(LEN=8), INTENT(IN) :: FFORMAT
4688  INTEGER, INTENT(IN) :: FID
4689  CHARACTER(LEN=16), INTENT(IN) :: VAR_NAME
4690  INTEGER, INTENT(IN) :: N
4691  DOUBLE PRECISION, INTENT(INOUT) :: RES(n)
4692  INTEGER, INTENT(INOUT) :: IERR
4693  DOUBLE PRECISION, INTENT(IN) , OPTIONAL :: EPS_TIME,TIME
4694  INTEGER, INTENT(IN) , OPTIONAL :: RECORD
4695  DOUBLE PRECISION, INTENT(INOUT), OPTIONAL :: TIME_RECORD
4696  DOUBLE PRECISION, INTENT(IN), OPTIONAL :: OFFSET
4697  END SUBROUTINE
4698 !
4699  SUBROUTINE write_header
4700  &(fformat,nres,title,nvar,nomvar,outvar)
4701  CHARACTER(LEN=8) , INTENT(IN) :: FFORMAT
4702  INTEGER , INTENT(IN) :: NRES
4703  CHARACTER(LEN=72) , INTENT(IN) :: TITLE
4704  INTEGER , INTENT(IN) :: NVAR
4705  CHARACTER(LEN=32),DIMENSION(NVAR), INTENT(IN) :: NOMVAR
4706  LOGICAL ,DIMENSION(NVAR), INTENT(IN) :: OUTVAR
4707  END SUBROUTINE
4708 !
4709  SUBROUTINE write_mesh
4710  &(fformat,nfile,mesh,nplan,date,time,t1,t2,
4711  & parall,nnptir,ngeo,geoformat,latlong)
4713  CHARACTER(LEN=8) , INTENT(IN) :: FFORMAT
4714  INTEGER , INTENT(IN) :: NFILE,NPLAN
4715  TYPE(bief_mesh), INTENT(IN) :: MESH
4716  TYPE(bief_obj), INTENT(INOUT)::T1,T2
4717  INTEGER, DIMENSION(3), INTENT(IN) :: DATE
4718  INTEGER, DIMENSION(3), INTENT(IN) :: TIME
4719  LOGICAL, INTENT(IN) :: PARALL
4720  INTEGER, INTENT(IN) :: NNPTIR
4721  INTEGER, OPTIONAL, INTENT(IN) :: NGEO
4722  CHARACTER(LEN=8) , OPTIONAL, INTENT(IN) :: GEOFORMAT
4723  LOGICAL, OPTIONAL, INTENT(IN)::LATLONG
4724  END SUBROUTINE
4725 !
4726  SUBROUTINE write_data
4727  &(fformat,fileres,nvars,time,timestep,outvar,nomvar,bvarsor,n,
4728  & mesh)
4730  CHARACTER(LEN=8), INTENT(IN) :: FFORMAT
4731  INTEGER, INTENT(IN) :: FILERES,N
4732  INTEGER, INTENT(IN) :: NVARS
4733  DOUBLE PRECISION, INTENT(IN) :: TIME
4734  INTEGER, INTENT(IN) :: TIMESTEP
4735  CHARACTER(LEN=32),DIMENSION(NVARS), INTENT(IN) :: NOMVAR
4736  LOGICAL, DIMENSION(NVARS), INTENT(IN) :: OUTVAR
4737  TYPE(bief_obj), INTENT(IN) :: BVARSOR
4738  TYPE(bief_mesh), INTENT(IN), OPTIONAL :: MESH
4739  END SUBROUTINE
4740 
4741 !
4742  SUBROUTINE rem11
4743  &(x, xa1,xa2,xa3,ikle1,ikle2,ikle3,nelem,nelmax,npoin,lv)
4745  IMPLICIT NONE
4746  INTEGER, INTENT(IN) :: NPOIN,NELEM,NELMAX,LV
4747  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
4748  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
4749  DOUBLE PRECISION, INTENT(IN) :: XA1(nelmax)
4750  DOUBLE PRECISION, INTENT(IN) :: XA2(nelmax)
4751  DOUBLE PRECISION, INTENT(IN) :: XA3(nelmax)
4752  END SUBROUTINE
4753 !
4754  SUBROUTINE rem21
4755  &(x, xa1,xa2,xa3,xa4,xa5,xa6 , ikle1,ikle2,ikle3,ikle4,
4756  & nelem,nelmax,npoin,lv)
4758  IMPLICIT NONE
4759  INTEGER, INTENT(IN) :: NPOIN,NELEM,NELMAX,LV
4760  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
4761  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
4762  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
4763  DOUBLE PRECISION, INTENT(IN) :: XA1(nelmax)
4764  DOUBLE PRECISION, INTENT(IN) :: XA2(nelmax)
4765  DOUBLE PRECISION, INTENT(IN) :: XA3(nelmax)
4766  DOUBLE PRECISION, INTENT(IN) :: XA4(nelmax)
4767  DOUBLE PRECISION, INTENT(IN) :: XA5(nelmax)
4768  DOUBLE PRECISION, INTENT(IN) :: XA6(nelmax)
4769  END SUBROUTINE
4770 !
4771  SUBROUTINE rem41
4772  &(x, xa1 ,xa2 ,xa3 ,xa4 ,xa5 ,
4773  & xa6 ,xa7 ,xa8 ,xa9 ,xa10,
4774  & xa11,xa12,xa13,xa14,xa15,
4775  & ikle1,ikle2,ikle3,ikle4,ikle5,ikle6,
4776  & nelem,nelmax,npoin,lv)
4778  IMPLICIT NONE
4779  INTEGER, INTENT(IN) :: NPOIN,NELEM,NELMAX,LV
4780  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
4781  INTEGER, INTENT(IN) :: IKLE4(nelmax),IKLE5(nelmax),IKLE6(nelmax)
4782  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
4783  DOUBLE PRECISION, INTENT(IN) :: XA1(nelmax)
4784  DOUBLE PRECISION, INTENT(IN) :: XA2(nelmax)
4785  DOUBLE PRECISION, INTENT(IN) :: XA3(nelmax)
4786  DOUBLE PRECISION, INTENT(IN) :: XA4(nelmax)
4787  DOUBLE PRECISION, INTENT(IN) :: XA5(nelmax)
4788  DOUBLE PRECISION, INTENT(IN) :: XA6(nelmax)
4789  DOUBLE PRECISION, INTENT(IN) :: XA7(nelmax)
4790  DOUBLE PRECISION, INTENT(IN) :: XA8(nelmax)
4791  DOUBLE PRECISION, INTENT(IN) :: XA9(nelmax)
4792  DOUBLE PRECISION, INTENT(IN) :: XA10(nelmax)
4793  DOUBLE PRECISION, INTENT(IN) :: XA11(nelmax)
4794  DOUBLE PRECISION, INTENT(IN) :: XA12(nelmax)
4795  DOUBLE PRECISION, INTENT(IN) :: XA13(nelmax)
4796  DOUBLE PRECISION, INTENT(IN) :: XA14(nelmax)
4797  DOUBLE PRECISION, INTENT(IN) :: XA15(nelmax)
4798  END SUBROUTINE
4799 !
4800  SUBROUTINE remont
4801  &(x, xa,typexa,b,ikle,nelem,nelmax,npoin,ielm,ditr,copy,lv)
4803  IMPLICIT NONE
4804  INTEGER, INTENT(IN) :: IELM,NPOIN,NELEM,NELMAX,LV
4805  INTEGER, INTENT(IN) :: IKLE(nelmax,*)
4806  DOUBLE PRECISION, INTENT(IN) :: B(npoin),XA(nelmax,*)
4807  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
4808  CHARACTER(LEN=*), INTENT(IN) :: TYPEXA,DITR
4809  LOGICAL, INTENT(IN) :: COPY
4810  END SUBROUTINE
4811 !
4812  SUBROUTINE remseg(X, XA,TYPEXA,B,GLOSEG,NSEG,NPOIN,DITR,COPY)
4814  IMPLICIT NONE
4815  INTEGER , INTENT(IN) :: NPOIN,NSEG
4816  INTEGER , INTENT(IN) :: GLOSEG(nseg,2)
4817  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
4818  DOUBLE PRECISION, INTENT(IN) :: XA(nseg,*),B(npoin)
4819  CHARACTER(LEN=1), INTENT(IN) :: TYPEXA,DITR
4820  LOGICAL , INTENT(IN) :: COPY
4821  END SUBROUTINE
4822 !
4823  SUBROUTINE rescjg
4824  &(x, a,b , mesh,d,ad,ag,g,r, cfg,infogr,aux)
4827  IMPLICIT NONE
4828  LOGICAL, INTENT(IN) :: INFOGR
4829  TYPE(bief_obj), INTENT(INOUT) :: D,AD,G,AG,R,X,B
4830  TYPE(slvcfg) , INTENT(INOUT) :: CFG
4831  TYPE(bief_mesh), INTENT(INOUT) :: MESH
4832  TYPE(bief_obj), INTENT(IN) :: A
4833  TYPE(bief_obj), INTENT(INOUT) :: AUX
4834  END SUBROUTINE
4835 !
4836  SUBROUTINE sd_md(N,IA,JA,MAXU,V,
4837  & L,HEAD,LAST,NEXT,MARK,FLAG)
4839  IMPLICIT NONE
4840  INTEGER, INTENT(IN) :: N,MAXU
4841  INTEGER, INTENT(INOUT) :: IA(*),JA(*),V(maxu),L(maxu),HEAD(n)
4842  INTEGER, INTENT(INOUT) :: LAST(n),NEXT(n),MARK(n),FLAG
4843  END SUBROUTINE
4844 !
4845  SUBROUTINE sd_mdi(N,IA,JA,MAXIMUM,V,L,
4846  & HEAD,LAST,NEXT,MARK,TAG,FLAG)
4848  IMPLICIT NONE
4849  INTEGER, INTENT(IN) :: N,MAXIMUM,IA(*),JA(*)
4850  INTEGER, INTENT(INOUT) :: V(*),L(*),HEAD(*),LAST(*)
4851  INTEGER, INTENT(INOUT) :: NEXT(*),MARK(*),TAG,FLAG
4852  END SUBROUTINE
4853 !
4854  SUBROUTINE sd_mdm(VK,TAIL,V,L,LAST,NEXT,MARK)
4856  IMPLICIT NONE
4857  INTEGER, INTENT(IN) :: VK,LAST(*),NEXT(*),V(*)
4858  INTEGER, INTENT(INOUT) :: TAIL,L(*),MARK(*)
4859  END SUBROUTINE
4860 !
4861  SUBROUTINE sd_mdp(K,EK,TAIL,V,L,HEAD,LAST,NEXT,MARK)
4863  IMPLICIT NONE
4864  INTEGER, INTENT(IN) :: EK
4865  INTEGER, INTENT(INOUT) :: K,TAIL,V(*),L(*),HEAD(*)
4866  INTEGER, INTENT(INOUT) :: LAST(*),NEXT(*),MARK(*)
4867  END SUBROUTINE
4868 !
4869  SUBROUTINE sd_mdu(EK,DMIN,V,L,HEAD,LAST,NEXT,MARK)
4871  IMPLICIT NONE
4872  INTEGER, INTENT(IN) :: EK,V(*),L(*)
4873  INTEGER, INTENT(INOUT) :: DMIN,HEAD(*),LAST(*),NEXT(*),MARK(*)
4874  END SUBROUTINE
4875 !
4876  SUBROUTINE sd_odrv(N,IA,JA,A,P,IP,NSP,ISP,PATH,FLAG)
4878  IMPLICIT NONE
4879  INTEGER, INTENT(IN) :: N,NSP,PATH
4880  INTEGER, INTENT(INOUT) :: FLAG
4881  INTEGER, INTENT(INOUT) :: IA(n),JA(*),P(n),IP(n),ISP(nsp)
4882  DOUBLE PRECISION, INTENT(INOUT) :: A(*)
4883  END SUBROUTINE
4884 !
4885  SUBROUTINE sd_sdrv
4886  &(n,p,ip,ia,ja,a,b,z,nsp,isp,rsp,esp,path,flag)
4888  IMPLICIT NONE
4889  INTEGER, INTENT(IN) :: N,NSP,PATH
4890  INTEGER, INTENT(INOUT) :: FLAG,P(*),IP(*),IA(*),JA(*),ISP(*),ESP
4891  DOUBLE PRECISION, INTENT(IN) :: B(n)
4892  DOUBLE PRECISION, INTENT(INOUT) :: A(1),Z(n),RSP(nsp)
4893  END SUBROUTINE
4894 !
4895  SUBROUTINE sd_cdrv
4896  &(n, r,c,ic, ia,ja,a, b, z, nsp,isp,rsp,esp, path, flag)
4898  IMPLICIT NONE
4899  INTEGER, INTENT(IN) :: N,NSP,PATH,C(n)
4900  INTEGER, INTENT(INOUT) :: R(n),FLAG,IA(*),JA(*),ISP(*),ESP,IC(*)
4901  DOUBLE PRECISION, INTENT(IN) :: B(n)
4902  DOUBLE PRECISION, INTENT(INOUT) :: A(*),Z(n),RSP(nsp)
4903  END SUBROUTINE
4904 !
4905  SUBROUTINE sd_snf
4906  &(n,p,ip,ia,ja,a,d,iju,ju,iu,u,umax,il,jl,flag)
4908  IMPLICIT NONE
4909  INTEGER, INTENT(IN) :: N,UMAX
4910  INTEGER, INTENT(IN) :: P(n),IP(n),IA(n+1),JA(*),IJU(n),JU(*)
4911  INTEGER, INTENT(IN) :: IU(n+1)
4912  INTEGER, INTENT(INOUT) :: IL(*),JL(*),FLAG
4913  DOUBLE PRECISION, INTENT(IN) :: A(*)
4914  DOUBLE PRECISION, INTENT(INOUT) :: D(n),U(umax)
4915  END SUBROUTINE
4916 !
4917  SUBROUTINE sd_sns(N,P,D,IJU,JU,IU,U,Z,B,TMP)
4919  IMPLICIT NONE
4920  INTEGER, INTENT(IN) :: N
4921  INTEGER, INTENT(INOUT) :: P(n),IJU(*),JU(*),IU(*)
4922  DOUBLE PRECISION, INTENT(IN) :: B(n)
4923  DOUBLE PRECISION, INTENT(INOUT) :: TMP(n),Z(n),D(n),U(n)
4924  END SUBROUTINE
4925 !
4926  SUBROUTINE sd_sro(N,IP,IA,JA,A,Q,R,DFLAG)
4928  IMPLICIT NONE
4929  INTEGER, INTENT(IN) :: N
4930  INTEGER, INTENT(IN) :: IP(*)
4931  INTEGER, INTENT(INOUT) :: JA(*),R(*),Q(n),IA(*)
4932  DOUBLE PRECISION, INTENT(INOUT) :: A(*)
4933  LOGICAL, INTENT(IN) :: DFLAG
4934  END SUBROUTINE
4935 !
4936  SUBROUTINE sd_ssf
4937  &(n,p,ip,ia,ja,iju,ju,iu,jumax,q,mark,jl,flag)
4939  IMPLICIT NONE
4940  INTEGER, INTENT(IN) :: N,JUMAX
4941  INTEGER, INTENT(INOUT) :: P(n),IP(n),IA(n+1),JA(*),IJU(n),FLAG
4942  INTEGER, INTENT(INOUT) :: JU(jumax),IU(n+1),Q(n),MARK(n),JL(n)
4943  END SUBROUTINE
4944 !
4945  SUBROUTINE sd_strssd
4946  &(npblk,nsegblk,gloseg1,gloseg2,in,ip,isegip,iw)
4948  IMPLICIT NONE
4949  INTEGER, INTENT(IN) :: NSEGBLK,NPBLK
4950  INTEGER, INTENT(IN) :: GLOSEG1(nsegblk),GLOSEG2(nsegblk)
4951  INTEGER, INTENT(INOUT) :: IN(npblk+1),IP(nsegblk*2)
4952  INTEGER, INTENT(INOUT) :: ISEGIP(nsegblk*2)
4953  INTEGER, INTENT(INOUT) :: IW(npblk)
4954  END SUBROUTINE
4955 !
4956  SUBROUTINE sd_strtri(IS,N,IND)
4958  IMPLICIT NONE
4959  INTEGER, INTENT(IN) :: N
4960  INTEGER, INTENT(IN) :: IS(n)
4961  INTEGER, INTENT(INOUT) :: IND(n)
4962  END SUBROUTINE
4963 !
4964  SUBROUTINE sd_fabcad
4965  &(npblk,nsegblk,in,ip,isegip,
4966  & indtri,istri,inx,ipx,actri,xa1,xa2,da,ac)
4968  IMPLICIT NONE
4969  INTEGER, INTENT(IN) :: NPBLK,NSEGBLK
4970  INTEGER, INTENT(IN) :: IN(npblk+1),IP(nsegblk*2+1)
4971  INTEGER, INTENT(IN) :: ISEGIP(nsegblk*2+1)
4972  INTEGER, INTENT(INOUT) :: INDTRI(npblk)
4973  INTEGER, INTENT(INOUT) :: ISTRI(npblk)
4974  INTEGER, INTENT(INOUT) :: INX(npblk+1)
4975  INTEGER, INTENT(INOUT) :: IPX(nsegblk*2+npblk+1)
4976  DOUBLE PRECISION, INTENT(INOUT) :: ACTRI(npblk)
4977  DOUBLE PRECISION, INTENT(IN) :: XA1(nsegblk),XA2(nsegblk)
4978  DOUBLE PRECISION, INTENT(IN) :: DA(npblk)
4979  DOUBLE PRECISION, INTENT(INOUT) :: AC(nsegblk*2+npblk+1)
4980  END SUBROUTINE
4981 !
4982  SUBROUTINE sd_fabsg4
4983  & (npoin,nseg,dab1,dab2,dab3,dab4,xab1,xab2,xab3,xab4,
4984  & npblk,nsegblk,da,xa,typext1,typext2,typext3,typext4)
4986  IMPLICIT NONE
4987  INTEGER, INTENT(IN) :: NSEGBLK,NPBLK,NSEG,NPOIN
4988  DOUBLE PRECISION, INTENT(IN) :: XAB1(*),XAB2(*)
4989  DOUBLE PRECISION, INTENT(IN) :: XAB3(*),XAB4(*)
4990  DOUBLE PRECISION, INTENT(IN) :: DAB1(npoin),DAB2(npoin)
4991  DOUBLE PRECISION, INTENT(IN) :: DAB3(npoin),DAB4(npoin)
4992  DOUBLE PRECISION, INTENT(INOUT) :: XA(2*nsegblk),DA(npblk)
4993  CHARACTER(LEN=1), INTENT(IN) :: TYPEXT1,TYPEXT2
4994  CHARACTER(LEN=1), INTENT(IN) :: TYPEXT3,TYPEXT4
4995  END SUBROUTINE
4996 !
4997  SUBROUTINE sd_solve_1
4998  &(npoin,nsegb,gloseg,maxseg,da,xa,xinc,rhs,infogr,typext)
5000  IMPLICIT NONE
5001  INTEGER, INTENT(IN) :: NPOIN,NSEGB,MAXSEG
5002  INTEGER, INTENT(IN) :: GLOSEG(maxseg,2)
5003  LOGICAL, INTENT(IN) :: INFOGR
5004  DOUBLE PRECISION, INTENT(IN) :: XA(*),RHS(npoin)
5005  DOUBLE PRECISION, INTENT(INOUT) :: XINC(npoin),DA(npoin)
5006  CHARACTER(LEN=1), INTENT(IN) :: TYPEXT
5007  END SUBROUTINE
5008 !
5009  SUBROUTINE sd_solve_4
5010  &(npoin,nsegb,glosegb,dab1,dab2,dab3,dab4,xab1,xab2,xab3,xab4,
5011  & xx1,xx2,cvb1,cvb2,infogr,typext1,typext2,typext3,typext4)
5013  IMPLICIT NONE
5014  INTEGER, INTENT(IN) :: NPOIN,NSEGB
5015  INTEGER, INTENT(IN) :: GLOSEGB(nsegb*2)
5016  LOGICAL, INTENT(IN) :: INFOGR
5017  DOUBLE PRECISION, INTENT(IN) :: DAB1(npoin),DAB2(npoin)
5018  DOUBLE PRECISION, INTENT(IN) :: DAB3(npoin),DAB4(npoin)
5019  DOUBLE PRECISION, INTENT(IN) :: XAB1(*),XAB2(*)
5020  DOUBLE PRECISION, INTENT(IN) :: XAB3(*),XAB4(*)
5021  DOUBLE PRECISION, INTENT(INOUT) :: XX1(npoin),XX2(npoin)
5022  DOUBLE PRECISION, INTENT(IN) :: CVB1(npoin),CVB2(npoin)
5023  CHARACTER(LEN=1), INTENT(IN) :: TYPEXT1,TYPEXT2
5024  CHARACTER(LEN=1), INTENT(IN) :: TYPEXT3,TYPEXT4
5025  END SUBROUTINE
5026 !
5027  SUBROUTINE sd_strsg4(NPOIN,NSEG,GLOSEGB,NSEGBLK,GLOSEG4)
5029  IMPLICIT NONE
5030  INTEGER, INTENT(IN) :: NSEGBLK,NSEG,NPOIN
5031  INTEGER, INTENT(IN) :: GLOSEGB(nseg,2)
5032  INTEGER, INTENT(INOUT) :: GLOSEG4(2*nsegblk)
5033  END SUBROUTINE
5034 !
5035  SUBROUTINE segbor(NSEGBOR,IKLES,NELEM,NPOIN)
5037  IMPLICIT NONE
5038  INTEGER, INTENT(IN) :: NPOIN,NELEM
5039  INTEGER, INTENT(OUT) :: NSEGBOR
5040  INTEGER, INTENT(IN) :: IKLES(3,nelem)
5041  END SUBROUTINE
5042 !
5043  SUBROUTINE share_3d_fluxes
5044  &(flux,nplan,mesh2,mesh3,opt)
5047  IMPLICIT NONE
5048  INTEGER, INTENT(IN) :: NPLAN,OPT
5049  TYPE(bief_mesh) , INTENT(INOUT) :: MESH2,MESH3
5050  DOUBLE PRECISION, INTENT(INOUT) :: FLUX(*)
5051  END SUBROUTINE
5052 !
5053  SUBROUTINE slopes(COEF,Z,MESH)
5056  IMPLICIT NONE
5057  TYPE(bief_obj) , INTENT(IN) :: Z
5058  TYPE(bief_obj) , INTENT(INOUT) :: COEF
5059  TYPE(bief_mesh), INTENT(IN) :: MESH
5060  END SUBROUTINE
5061 !
5062  SUBROUTINE slop10(COEF,XEL,YEL,Z,IKLE,NELEM,NELMAX)
5064  IMPLICIT NONE
5065  INTEGER, INTENT(IN) :: NELEM,NELMAX
5066  INTEGER, INTENT(IN) :: IKLE(nelmax,*)
5067  DOUBLE PRECISION, INTENT(INOUT) :: COEF(nelem)
5068  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,*),YEL(nelmax,*),Z(*)
5069  END SUBROUTINE
5070 !
5071  SUBROUTINE solaux(IPT, TB,TBB,ITB,ITBB,S)
5074  IMPLICIT NONE
5075  INTEGER, INTENT(IN) :: S
5076  INTEGER, INTENT(INOUT) :: ITB,IPT,ITBB
5077  TYPE(bief_obj), INTENT(INOUT) :: TB,TBB
5078  END SUBROUTINE
5079 !
5080  SUBROUTINE solve(X, A,B,TB,CFG,INFOGR,MESH,AUX)
5083  IMPLICIT NONE
5084  TYPE(slvcfg), INTENT(INOUT) :: CFG
5085  LOGICAL, INTENT(IN) :: INFOGR
5086  TYPE(bief_obj), TARGET, INTENT(INOUT) :: X,B
5087  TYPE(bief_obj), INTENT(INOUT) :: TB
5088  TYPE(bief_obj), INTENT(INOUT) :: A,AUX
5089  TYPE(bief_mesh), INTENT(INOUT) :: MESH
5090  END SUBROUTINE
5091 !
5092  DOUBLE PRECISION FUNCTION somme( X , NPX )
5094  IMPLICIT NONE
5095  INTEGER, INTENT(IN) :: NPX
5096  DOUBLE PRECISION, INTENT(IN) :: X(*)
5097  END FUNCTION
5098 !
5099  DOUBLE PRECISION FUNCTION somme2( X , NPX )
5101  IMPLICIT NONE
5102  INTEGER, INTENT(IN) :: NPX
5103  DOUBLE PRECISION, INTENT(IN) :: X(*)
5104  END FUNCTION
5105 !
5106  SUBROUTINE sortie( CHAINE , MNEMO , NBRE , SORLEO )
5108  IMPLICIT NONE
5109  INTEGER, INTENT(IN) :: NBRE
5110  CHARACTER(LEN=*), INTENT(INOUT) :: CHAINE
5111  CHARACTER(LEN=8), INTENT(IN) :: MNEMO(nbre)
5112  LOGICAL, INTENT(INOUT) :: SORLEO(nbre)
5113  END SUBROUTINE
5114 !
5115  SUBROUTINE stoseg31
5116  &(npoin,nelem,neleb,nelmax,ielm,mxelvs,ikle,iklbor,
5117  & nbor,nptfr,
5118  & gloseg,maxseg,glosegbor,maxsegbor,nseg,nsegbor,
5119  & eltseg,eltsegbor,oriseg,orisegbor,
5120  & knolg,nds)
5121  INTEGER, INTENT(IN) :: NELMAX,IELM
5122  INTEGER, INTENT(IN) :: NPOIN,NELEM,NELEB,MXELVS,NPTFR
5123  INTEGER, INTENT(IN) :: MAXSEG,MAXSEGBOR
5124  INTEGER, INTENT(INOUT) :: NSEG,NSEGBOR
5125  INTEGER, INTENT(IN) :: IKLE(nelmax,4),IKLBOR(neleb,3)
5126  INTEGER, INTENT(IN) :: NBOR(nptfr)
5127  INTEGER, INTENT(INOUT) :: GLOSEG(maxseg,2),GLOSEGBOR(maxsegbor,2)
5128  INTEGER, INTENT(INOUT) :: ELTSEG(nelmax,6),ELTSEGBOR(neleb,3)
5129  INTEGER, INTENT(INOUT) :: ORISEG(nelmax,6),ORISEGBOR(neleb,3)
5130  INTEGER, INTENT(IN) :: KNOLG(npoin)
5131  INTEGER, INTENT(INOUT) :: NDS(0:81,7)
5132  END SUBROUTINE
5133 !
5134  SUBROUTINE stoseg41
5135  &(ifabor,nelmax,ielm,ikle,nbor,
5136  & gloseg,maxseg,eltseg,oriseg,nelbor,nulone,nelmax2,
5137  & nelem2,nptfr2,npoin2,nplan,knolg,nseg2d,iklbor,nelebx,neleb)
5139  IMPLICIT NONE
5140  INTEGER, INTENT(IN) :: NELMAX,NELMAX2,MAXSEG,IELM
5141  INTEGER, INTENT(IN) :: NELEM2,NPTFR2,NPOIN2,NPLAN,NSEG2D
5142  INTEGER, INTENT(IN) :: NELEB,NELEBX
5143  INTEGER, INTENT(IN) :: NBOR(nptfr2)
5144  INTEGER, INTENT(IN) :: IFABOR(nelmax2,*),IKLE(nelmax,6)
5145  INTEGER, INTENT(IN) :: NELBOR(nptfr2),NULONE(nptfr2)
5146  INTEGER, INTENT(IN) :: IKLBOR(nelebx,2)
5147  INTEGER, INTENT(INOUT) :: GLOSEG(maxseg,2)
5148  INTEGER, INTENT(INOUT) :: ELTSEG(nelmax,15),ORISEG(nelmax,15)
5149  INTEGER, INTENT(IN) :: KNOLG(*)
5150  END SUBROUTINE
5151 !
5152  SUBROUTINE stoseg51
5153  &(ifabor,nelmax,ielm,ikle,nbor,
5154  & gloseg,maxseg,eltseg,oriseg,nelbor,nulone,nelmax2,
5155  & nelem2,nptfr2,npoin2,nplan,knolg,nseg2d,iklbor,neleb,nelebx)
5157  IMPLICIT NONE
5158  INTEGER, INTENT(IN) :: NELMAX,NELMAX2,MAXSEG,IELM,NELEBX,NELEB
5159  INTEGER, INTENT(IN) :: NELEM2,NPTFR2,NPOIN2,NPLAN,NSEG2D
5160  INTEGER, INTENT(IN) :: NBOR(nptfr2)
5161  INTEGER, INTENT(IN) :: IKLBOR(nelebx,2)
5162  INTEGER, INTENT(IN) :: IFABOR(nelmax2,*),IKLE(nelmax,4)
5163  INTEGER, INTENT(IN) :: NELBOR(nelebx),NULONE(nelebx)
5164  INTEGER, INTENT(INOUT) :: GLOSEG(maxseg,2)
5165  INTEGER, INTENT(INOUT) :: ELTSEG(nelmax,6),ORISEG(nelmax,6)
5166  INTEGER, INTENT(IN) :: KNOLG(*)
5167  END SUBROUTINE
5168 !
5169  SUBROUTINE stoseg
5170  &(ifabor,nelem,nelmax,nelmax2,ielm,ikle,nbor,nptfr,
5171  & gloseg,maxseg,eltseg,oriseg,nseg,nelbor,nulone,knolg,
5172  & iklbor,nelebx,neleb)
5174  IMPLICIT NONE
5175  INTEGER, INTENT(IN) :: NELMAX,NELMAX2,NPTFR,NSEG,MAXSEG,IELM
5176  INTEGER, INTENT(IN) :: NELEM,NELEBX,NELEB
5177  INTEGER, INTENT(IN) :: NBOR(nptfr)
5178  INTEGER, INTENT(IN) :: IFABOR(nelmax2,*),IKLE(nelmax,*)
5179  INTEGER, INTENT(IN) :: NELBOR(nelebx),NULONE(nelebx)
5180  INTEGER, INTENT(IN) :: IKLBOR(nelebx,2)
5181  INTEGER, INTENT(INOUT) :: GLOSEG(maxseg,2)
5182  INTEGER, INTENT(INOUT) :: ELTSEG(nelmax,*),ORISEG(nelmax,3)
5183  INTEGER, INTENT(IN) :: KNOLG(*)
5184  END SUBROUTINE
5185 !
5186  SUBROUTINE suite(VARSOR,CLAND,NUMDEB,NPRE,STD,
5187  & HIST,NHIST,NPOIN,AT,TEXTPR,VARCLA,NVARCL,
5188  & TROUVE,ALIRE,LISTIN,FIN,MAXVAR,NPLAN)
5191  IMPLICIT NONE
5192  TYPE(bief_obj),INTENT(INOUT):: VARSOR,CLAND
5193  INTEGER,INTENT(IN),OPTIONAL :: NPLAN
5194  INTEGER,INTENT(IN) :: NHIST,NVARCL,MAXVAR
5195  INTEGER :: NUMDEB,NPRE,NPOIN,TROUVE(maxvar)
5196  INTEGER :: ALIRE(maxvar)
5197  CHARACTER(LEN=*) :: STD
5198  CHARACTER(LEN=32) :: TEXTPR(maxvar),VARCLA(nvarcl)
5199  DOUBLE PRECISION :: HIST(*),AT
5200  LOGICAL :: FIN,LISTIN
5201  END SUBROUTINE
5202 !
5203  SUBROUTINE suite_serafin(VARSOR,CLAND,NUMDEB,NPRE,STD,
5204  & HIST,NHIST,NPOIN,AT,TEXTPR,
5205  & VARCLA,NVARCL,
5206  & TROUVE,ALIRE,LISTIN,FIN,MAXVAR,NPLAN,
5207  & DT)
5210  IMPLICIT NONE
5211  TYPE(bief_obj),INTENT(INOUT):: VARSOR,CLAND
5212  INTEGER,INTENT(IN),OPTIONAL :: NPLAN
5213  INTEGER,INTENT(IN) :: NHIST,NVARCL,MAXVAR
5214  INTEGER :: NUMDEB,NPRE,NPOIN,TROUVE(maxvar)
5215  INTEGER :: ALIRE(maxvar)
5216  CHARACTER(LEN=*) :: STD
5217  CHARACTER(LEN=32) :: TEXTPR(maxvar),VARCLA(nvarcl)
5218  DOUBLE PRECISION :: HIST(*),AT
5219  DOUBLE PRECISION, INTENT(OUT), OPTIONAL :: DT
5220  LOGICAL :: FIN,LISTIN
5221  END SUBROUTINE
5222 !
5223  SUBROUTINE surv11(SURFAC, XEL,YEL,NELEM,NELMAX)
5225  IMPLICIT NONE
5226  INTEGER, INTENT(IN) :: NELEM,NELMAX
5227  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,*),YEL(nelmax,*)
5228  DOUBLE PRECISION, INTENT(INOUT) :: SURFAC(*)
5229  END SUBROUTINE
5230 !
5231  SUBROUTINE survol(SURFAC, XEL,YEL,NELEM,NELMAX,IELM)
5233  IMPLICIT NONE
5234  INTEGER, INTENT(IN) :: IELM,NELEM,NELMAX
5235  DOUBLE PRECISION, INTENT(INOUT) :: SURFAC(*)
5236  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,*)
5237  DOUBLE PRECISION, INTENT(IN) :: YEL(nelmax,*)
5238  END SUBROUTINE
5239 !
5240  SUBROUTINE tnomer
5241  &(x, xa,typexa,b,ikle,nelem,nelmax,npoin,ielm,ditr,copy,lv)
5243  IMPLICIT NONE
5244  INTEGER, INTENT(IN) :: IELM,NPOIN,NELEM,NELMAX,LV
5245  INTEGER, INTENT(IN) :: IKLE(nelmax,*)
5246  DOUBLE PRECISION, INTENT(INOUT) :: X(npoin)
5247  DOUBLE PRECISION, INTENT(IN) :: XA(nelmax,*),B(npoin)
5248  CHARACTER(LEN=*), INTENT(IN) :: TYPEXA,DITR
5249  LOGICAL, INTENT(IN) :: COPY
5250  END SUBROUTINE
5251 !
5252  SUBROUTINE topogr
5253  &(zf,zref,zfe,ikle,ifabor,nbor,nelbor,nulone,
5254  & itra05,itra02,itra03,nelem,nptfr,npoin,mxptvs)
5256  IMPLICIT NONE
5257  INTEGER, INTENT(IN) :: NELEM,NPTFR,NPOIN,MXPTVS
5258  INTEGER, INTENT(IN) :: IKLE(nelem,3),IFABOR(nelem,3)
5259  INTEGER, INTENT(IN) :: NBOR(nptfr),NELBOR(nptfr),NULONE(nptfr)
5260  INTEGER, INTENT(INOUT) :: ITRA05(npoin),ITRA02(npoin)
5261  INTEGER, INTENT(INOUT) :: ITRA03(npoin)
5262  DOUBLE PRECISION, INTENT(INOUT) :: ZFE(nelem),ZREF(npoin)
5263  DOUBLE PRECISION, INTENT(IN) :: ZF(npoin)
5264  END SUBROUTINE
5265 !
5266  SUBROUTINE tracvf
5267  &(f,fscexp,fxmat,fxmatpar,
5268  & volu2d,unsv2d,ddt,fxbor,fbor,smh,yasmh,
5269  & t1,t2,t4,t5,t7,t8,
5270  & mesh,limtra,kdir,kddl,optsou,iopt2,flbortra,msk,dt,rain,pluie,
5271  & train,massou,mass_balance)
5274  IMPLICIT NONE
5275  INTEGER, INTENT(IN) :: KDIR,KDDL,OPTSOU,LIMTRA(*)
5276  INTEGER, INTENT(IN) :: IOPT2
5277  DOUBLE PRECISION, INTENT(IN) :: DDT,DT,TRAIN
5278  DOUBLE PRECISION, INTENT(INOUT) :: MASSOU
5279  TYPE(bief_obj), INTENT(INOUT) :: F,T1,T2,T4,T5,T7,T8,FLBORTRA
5280  TYPE(bief_obj), INTENT(IN) :: SMH,FBOR,FSCEXP
5281  TYPE(bief_obj), INTENT(IN) :: FXBOR,UNSV2D,VOLU2D,PLUIE
5282  DOUBLE PRECISION, INTENT(IN) :: FXMAT(*),FXMATPAR(*)
5283  TYPE(bief_mesh), INTENT(INOUT) :: MESH
5284  LOGICAL, INTENT(IN) :: YASMH,MSK,RAIN,MASS_BALANCE
5285  END SUBROUTINE
5286 !
5287  SUBROUTINE trid3d(XAUX,X,B,NPOIN,NPOIN2)
5289  IMPLICIT NONE
5290  INTEGER, INTENT(IN) :: NPOIN,NPOIN2
5291  DOUBLE PRECISION, INTENT(IN) :: B(npoin2,*)
5292  DOUBLE PRECISION, INTENT(INOUT) :: XAUX(npoin,*),X(npoin2,*)
5293  END SUBROUTINE
5294 !
5295  DOUBLE PRECISION FUNCTION tsloc(YEAR,MONTH,DAY,
5296  & HOUR,MINU,SEC,AT)