bief.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\utils\bief\bief.f
00002 !
00023                      MODULE BIEF
00024 !                    ***********
00025 !
00026 !
00027 !***********************************************************************
00028 ! BIEF VERSION 7.0                                     26/12/2013
00029 !***********************************************************************
00030 !
00031 !
00032 !
00033 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00034 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00035 !
00036       USE BIEF_DEF
00037       INTERFACE
00038 !
00039 !------------------------------------------------------------------------
00040 !
00041 !     DEFINITION OF INTERFACES
00042 !
00043         SUBROUTINE ADDBLO( BLOC , OBJ )
00044           USE BIEF_DEF
00045           IMPLICIT NONE
00046           TYPE(BIEF_OBJ), INTENT(INOUT)      :: BLOC
00047           TYPE(BIEF_OBJ), INTENT(IN), TARGET :: OBJ
00048         END SUBROUTINE
00049 !
00050         SUBROUTINE ALLBLO( BLO , NOM )
00051           USE BIEF_DEF
00052           IMPLICIT NONE
00053           CHARACTER(LEN=6), INTENT(IN) :: NOM
00054           TYPE(BIEF_OBJ), INTENT(INOUT) :: BLO
00055         END SUBROUTINE
00056 !
00057         SUBROUTINE ALLBLO_IN_BLOCK( BLO , N , NOMGEN )
00058           USE BIEF_DEF
00059           IMPLICIT NONE
00060           TYPE(BIEF_OBJ), INTENT(INOUT) :: BLO
00061           INTEGER, INTENT(IN) :: N
00062           CHARACTER(LEN=6), INTENT(IN) :: NOMGEN
00063         END SUBROUTINE
00064 !
00065         SUBROUTINE BIEF_ALLMAT(MAT,NOM,IELM1,IELM2,CFG,
00066      &                         TYPDIA,TYPEXT,MESH)
00067         USE BIEF_DEF
00068         IMPLICIT NONE
00069         TYPE(BIEF_OBJ), INTENT(INOUT) :: MAT
00070         INTEGER, INTENT(IN)           :: IELM1,IELM2,CFG(2)
00071         CHARACTER(LEN=1), INTENT(IN)  :: TYPDIA,TYPEXT
00072         CHARACTER(LEN=6), INTENT(IN)  :: NOM
00073         TYPE(BIEF_MESH) , INTENT(IN)  :: MESH
00074         END SUBROUTINE
00075 !
00076         SUBROUTINE BIEF_ALLVEC(NAT,VEC,NOM,IELM,DIM2,STATUT,MESH)
00077           USE BIEF_DEF
00078           IMPLICIT NONE
00079           TYPE(BIEF_OBJ) , INTENT(INOUT):: VEC
00080           INTEGER        , INTENT(IN)   :: NAT,IELM
00081           INTEGER        , INTENT(IN)   :: DIM2,STATUT
00082           CHARACTER*6    , INTENT(IN)   :: NOM
00083           TYPE(BIEF_MESH) , INTENT(IN)  :: MESH
00084         END SUBROUTINE
00085 !
00086         SUBROUTINE BIEF_ALLVEC_IN_BLOCK(BLO,N,NAT,NOMGEN,IELM,
00087      &                                  NDIM,STATUT,MESH)
00088           USE BIEF_DEF
00089           IMPLICIT NONE
00090           TYPE(BIEF_OBJ), INTENT(INOUT) :: BLO
00091           INTEGER, INTENT(IN) :: N,NAT,IELM,NDIM,STATUT
00092           CHARACTER(LEN=6), INTENT(IN) :: NOMGEN
00093           TYPE(BIEF_MESH) , INTENT(IN) :: MESH
00094         END SUBROUTINE
00095 !
00096         SUBROUTINE ALMESH
00097      &(MESH,NOM,IELM,SPHERI,CFG,NFIC,EQUA,NPLAN,NPMAX,NPTFRX,NELMAX,
00098      & I3,I4,FILE_FORMAT,PROJECTION,LATI0,LONGI0)
00099       USE BIEF_DEF
00100       IMPLICIT NONE
00101       TYPE(BIEF_MESH)  , INTENT(INOUT)           :: MESH
00102       INTEGER          , INTENT(IN)              :: IELM
00103       INTEGER          , INTENT(IN)              :: NFIC
00104       LOGICAL          , INTENT(IN)              :: SPHERI
00105       CHARACTER(LEN=6) , INTENT(IN)              :: NOM
00106       CHARACTER(LEN=20), INTENT(IN)              :: EQUA
00107       INTEGER          , INTENT(INOUT)           :: CFG(2)
00108       INTEGER          , INTENT(IN),    OPTIONAL :: NPLAN
00109       INTEGER          , INTENT(IN),    OPTIONAL :: NPMAX
00110       INTEGER          , INTENT(IN),    OPTIONAL :: NPTFRX
00111       INTEGER          , INTENT(IN),    OPTIONAL :: NELMAX
00112       INTEGER          , INTENT(INOUT), OPTIONAL :: I3,I4,PROJECTION
00113       CHARACTER(LEN=8) , INTENT(IN),    OPTIONAL :: FILE_FORMAT
00114       DOUBLE PRECISION , INTENT(IN),    OPTIONAL :: LATI0,LONGI0
00115         END SUBROUTINE
00116 !
00117         SUBROUTINE AS3_1111_Q
00118      &(XM,NSEG1,XMT,DIM1XMT,DIM2XMT,NELMAX,NELEM,STOXMT,
00119      & ELTSEG1,ELTSEG2,ELTSEG3,ORISEG1,ORISEG2,ORISEG3)
00120       IMPLICIT NONE
00121       INTEGER         , INTENT(IN)    :: NELMAX,NELEM,NSEG1
00122       INTEGER         , INTENT(IN)    :: DIM1XMT,DIM2XMT,STOXMT
00123       INTEGER         , INTENT(IN)    :: ELTSEG1(NELMAX)
00124       INTEGER         , INTENT(IN)    :: ELTSEG2(NELMAX)
00125       INTEGER         , INTENT(IN)    :: ELTSEG3(NELMAX)
00126       INTEGER         , INTENT(IN)    :: ORISEG1(NELMAX)
00127       INTEGER         , INTENT(IN)    :: ORISEG2(NELMAX)
00128       INTEGER         , INTENT(IN)    :: ORISEG3(NELMAX)
00129       DOUBLE PRECISION, INTENT(INOUT) :: XMT(DIM1XMT,DIM2XMT)
00130       DOUBLE PRECISION, INTENT(INOUT) :: XM(NSEG1,2)
00131         END SUBROUTINE
00132 !
00133         SUBROUTINE AS3_1111_S
00134      &(XM,NSEG1,XMT,NELMAX,NELEM,ELTSEG1,ELTSEG2,ELTSEG3)
00135       IMPLICIT NONE
00136       INTEGER         , INTENT(IN)    :: NELMAX,NELEM,NSEG1
00137       INTEGER         , INTENT(IN)    :: ELTSEG1(NELMAX)
00138       INTEGER         , INTENT(IN)    :: ELTSEG2(NELMAX)
00139       INTEGER         , INTENT(IN)    :: ELTSEG3(NELMAX)
00140       DOUBLE PRECISION, INTENT(INOUT) :: XMT(NELMAX,*)
00141       DOUBLE PRECISION, INTENT(INOUT) :: XM(NSEG1)
00142         END SUBROUTINE
00143 !
00144         SUBROUTINE AS3_1112
00145      &(XM,NSEG11,NSEG12,XMT,NELMAX,NELEM,ELTSEG1,ELTSEG2,ELTSEG3,
00146      &                                   ELTSEG4,ELTSEG5,ELTSEG6,
00147      &                                   ORISEG1,ORISEG2,ORISEG3)
00148       IMPLICIT NONE
00149       INTEGER         , INTENT(IN)    :: NELMAX,NELEM,NSEG11,NSEG12
00150       INTEGER         , INTENT(IN)    :: ELTSEG1(NELMAX)
00151       INTEGER         , INTENT(IN)    :: ELTSEG2(NELMAX)
00152       INTEGER         , INTENT(IN)    :: ELTSEG3(NELMAX)
00153       INTEGER         , INTENT(IN)    :: ELTSEG4(NELMAX)
00154       INTEGER         , INTENT(IN)    :: ELTSEG5(NELMAX)
00155       INTEGER         , INTENT(IN)    :: ELTSEG6(NELMAX)
00156       INTEGER         , INTENT(IN)    :: ORISEG1(NELMAX)
00157       INTEGER         , INTENT(IN)    :: ORISEG2(NELMAX)
00158       INTEGER         , INTENT(IN)    :: ORISEG3(NELMAX)
00159       DOUBLE PRECISION, INTENT(IN)    :: XMT(NELMAX,*)
00160       DOUBLE PRECISION, INTENT(INOUT) :: XM(NSEG11+NSEG12)
00161         END SUBROUTINE
00162 !
00163         SUBROUTINE AS3_1211
00164      &(XM,NSEG11,NSEG12,XMT,NELMAX,NELEM,ELTSEG1,ELTSEG2,ELTSEG3,
00165      &                                   ELTSEG4,ELTSEG5,ELTSEG6,
00166      &                                   ORISEG1,ORISEG2,ORISEG3)
00167       IMPLICIT NONE
00168       INTEGER         , INTENT(IN)    :: NELMAX,NELEM,NSEG11,NSEG12
00169       INTEGER         , INTENT(IN)    :: ELTSEG1(NELMAX)
00170       INTEGER         , INTENT(IN)    :: ELTSEG2(NELMAX)
00171       INTEGER         , INTENT(IN)    :: ELTSEG3(NELMAX)
00172       INTEGER         , INTENT(IN)    :: ELTSEG4(NELMAX)
00173       INTEGER         , INTENT(IN)    :: ELTSEG5(NELMAX)
00174       INTEGER         , INTENT(IN)    :: ELTSEG6(NELMAX)
00175       INTEGER         , INTENT(IN)    :: ORISEG1(NELMAX)
00176       INTEGER         , INTENT(IN)    :: ORISEG2(NELMAX)
00177       INTEGER         , INTENT(IN)    :: ORISEG3(NELMAX)
00178       DOUBLE PRECISION, INTENT(IN)    :: XMT(NELMAX,*)
00179       DOUBLE PRECISION, INTENT(INOUT) :: XM(NSEG11+NSEG12)
00180         END SUBROUTINE
00181 !
00182         SUBROUTINE AS3_1212_Q
00183      &(XM,NSEG11,NSEG12,XMT,NELMAX,NELEM,ELTSEG1,ELTSEG2,ELTSEG3,
00184      &                                   ELTSEG4,ELTSEG5,ELTSEG6,
00185      &                                   ORISEG1,ORISEG2,ORISEG3)
00186       IMPLICIT NONE
00187       INTEGER         , INTENT(IN)    :: NELMAX,NELEM,NSEG11,NSEG12
00188       INTEGER         , INTENT(IN)    :: ELTSEG1(NELMAX)
00189       INTEGER         , INTENT(IN)    :: ELTSEG2(NELMAX)
00190       INTEGER         , INTENT(IN)    :: ELTSEG3(NELMAX)
00191       INTEGER         , INTENT(IN)    :: ELTSEG4(NELMAX)
00192       INTEGER         , INTENT(IN)    :: ELTSEG5(NELMAX)
00193       INTEGER         , INTENT(IN)    :: ELTSEG6(NELMAX)
00194       INTEGER         , INTENT(IN)    :: ORISEG1(NELMAX)
00195       INTEGER         , INTENT(IN)    :: ORISEG2(NELMAX)
00196       INTEGER         , INTENT(IN)    :: ORISEG3(NELMAX)
00197       DOUBLE PRECISION, INTENT(IN)    :: XMT(NELMAX,*)
00198       DOUBLE PRECISION, INTENT(INOUT) :: XM(NSEG12*2)
00199         END SUBROUTINE
00200 !
00201         SUBROUTINE AS3_1212_S
00202      &(XM,NSEG11,NSEG12,XMT,NELMAX,NELEM,ELTSEG1,ELTSEG2,ELTSEG3,
00203      &                                   ELTSEG4,ELTSEG5,ELTSEG6)
00204       IMPLICIT NONE
00205       INTEGER         , INTENT(IN)    :: NELMAX,NELEM,NSEG11,NSEG12
00206       INTEGER         , INTENT(IN)    :: ELTSEG1(NELMAX)
00207       INTEGER         , INTENT(IN)    :: ELTSEG2(NELMAX)
00208       INTEGER         , INTENT(IN)    :: ELTSEG3(NELMAX)
00209       INTEGER         , INTENT(IN)    :: ELTSEG4(NELMAX)
00210       INTEGER         , INTENT(IN)    :: ELTSEG5(NELMAX)
00211       INTEGER         , INTENT(IN)    :: ELTSEG6(NELMAX)
00212       DOUBLE PRECISION, INTENT(INOUT) :: XMT(NELMAX,*)
00213       DOUBLE PRECISION, INTENT(INOUT) :: XM(NSEG12)
00214         END SUBROUTINE
00215 !
00216         SUBROUTINE AS3_4141_Q
00217      &(XM,NSEG1,XMT,DIM1XMT,DIM2XMT,STOXMT,
00218      & NELMAX,NELEM,ELTSEG,ORISEG)
00219       IMPLICIT NONE
00220       INTEGER         , INTENT(IN)    :: NELMAX,NELEM,NSEG1
00221       INTEGER         , INTENT(IN)    :: DIM1XMT,DIM2XMT,STOXMT
00222       INTEGER         , INTENT(IN)    :: ELTSEG(NELMAX,15)
00223       INTEGER         , INTENT(IN)    :: ORISEG(NELMAX,15)
00224       DOUBLE PRECISION, INTENT(IN)    :: XMT(DIM1XMT,DIM2XMT)
00225       DOUBLE PRECISION, INTENT(INOUT) :: XM(NSEG1,2)
00226         END SUBROUTINE
00227 !
00228         SUBROUTINE AS3_4141_S
00229      & (XM,NSEG1,XMT,DIM1XMT,DIM2XMT,STOXMT,NELMAX,NELEM,ELTSEG)
00230       IMPLICIT NONE
00231       INTEGER         , INTENT(IN)    :: NELMAX,NELEM,NSEG1
00232       INTEGER         , INTENT(IN)    :: DIM1XMT,DIM2XMT,STOXMT
00233       INTEGER         , INTENT(IN)    :: ELTSEG(NELMAX,15)
00234       DOUBLE PRECISION, INTENT(IN)    :: XMT(DIM1XMT,DIM2XMT)
00235       DOUBLE PRECISION, INTENT(INOUT) :: XM(NSEG1)
00236         END SUBROUTINE
00237 !
00238         SUBROUTINE ASMVE1(X, IKLE,W, NPOIN,NELEM,NELMAX,LV)
00239           IMPLICIT NONE
00240           INTEGER         , INTENT(IN)    :: NELEM,NELMAX,NPOIN,LV
00241           DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
00242           INTEGER         , INTENT(IN)    :: IKLE(NELMAX)
00243           DOUBLE PRECISION, INTENT(IN)    :: W(NELMAX)
00244         END SUBROUTINE
00245 !
00246         SUBROUTINE ASMVEC(X, IKLE,NPOIN,NELEM,NELMAX,NDP,W,INIT,LV)
00247           USE BIEF_DEF
00248           IMPLICIT NONE
00249           INTEGER         , INTENT(IN)   ::NELMAX,NPOIN,NELEM,NDP,LV
00250           DOUBLE PRECISION, INTENT(INOUT)::X(NPOIN)
00251           INTEGER         , INTENT(IN)   ::IKLE(NELMAX,NDP)
00252           DOUBLE PRECISION, INTENT(IN)   ::W(NELMAX,NDP)
00253           LOGICAL         , INTENT(IN)   ::INIT
00254         END SUBROUTINE
00255 !
00256         SUBROUTINE ASSEX3
00257      &(XM,STO,NAME,IELM1,IELM2,TYPEXT,XMT,DIM1XMT,DIM2XMT,STOXMT,
00258      & MESH,NELMAX,ELTSEG,ORISEG)
00259       USE BIEF_DEF
00260       IMPLICIT NONE
00261       INTEGER         , INTENT(INOUT) :: STO
00262       CHARACTER(LEN=6), INTENT(IN)    :: NAME
00263       INTEGER         , INTENT(IN)    :: IELM1,IELM2,NELMAX
00264       INTEGER         , INTENT(IN)    :: DIM1XMT,DIM2XMT,STOXMT
00265       INTEGER         , INTENT(IN)    :: ELTSEG(NELMAX,*)
00266       INTEGER         , INTENT(IN)    :: ORISEG(NELMAX,3)
00267       CHARACTER(LEN=1), INTENT(IN)    :: TYPEXT
00268       DOUBLE PRECISION, INTENT(INOUT) :: XMT(DIM1XMT,DIM2XMT)
00269       DOUBLE PRECISION, INTENT(INOUT) :: XM(*)
00270       TYPE(BIEF_MESH) , INTENT(IN)    :: MESH
00271         END SUBROUTINE
00272 !
00273         SUBROUTINE ASSVE1(X, IKLE,W, NELEM,NELMAX,LV,MSK,MASKEL)
00274           IMPLICIT NONE
00275           DOUBLE PRECISION, INTENT(INOUT)::X(*)
00276           INTEGER         , INTENT(IN)   ::NELEM,NELMAX,LV
00277           INTEGER         , INTENT(IN)   ::IKLE(NELMAX)
00278           DOUBLE PRECISION, INTENT(IN)   ::W(NELMAX),MASKEL(NELMAX)
00279           LOGICAL         , INTENT(IN)   ::MSK
00280         END SUBROUTINE
00281 !
00282         SUBROUTINE ASSVE1I8(IX, IKLE,IW,NELEM)
00283           USE DECLARATIONS_SPECIAL
00284           IMPLICIT NONE
00285           INTEGER(KIND=K8), INTENT(INOUT) :: IX(*)
00286           INTEGER         , INTENT(IN)    :: NELEM
00287           INTEGER         , INTENT(IN)    :: IKLE(NELEM)
00288           INTEGER(KIND=K8), INTENT(IN)    :: IW(NELEM)
00289         END SUBROUTINE
00290 !
00291         SUBROUTINE ASSVEC(X, IKLE,NPOIN,NELEM,
00292      &                    NELMAX,IELM,W,INIT,LV,MSK,MASKEL,NDP)
00293           USE BIEF_DEF
00294           IMPLICIT NONE
00295           DOUBLE PRECISION, INTENT(INOUT)::X(*)
00296           INTEGER         , INTENT(IN)   ::NELEM,NELMAX,NPOIN,IELM,LV
00297           INTEGER         , INTENT(IN)   ::NDP
00298           INTEGER         , INTENT(IN)   ::IKLE(NELMAX,*)
00299           DOUBLE PRECISION, INTENT(IN)   ::W(NELMAX,*),MASKEL(NELMAX)
00300           LOGICAL         , INTENT(IN)   ::INIT,MSK
00301         END SUBROUTINE
00302 !
00303         SUBROUTINE ATTEND(ISEC)
00304           IMPLICIT NONE
00305           INTEGER, INTENT(IN) :: ISEC
00306         END SUBROUTINE
00307 !
00308         SUBROUTINE BIEF_CLOSE_FILES(CODE,FILES,NFILES,PEXIT)
00309           USE BIEF_DEF
00310           IMPLICIT NONE
00311           INTEGER          , INTENT(IN)     :: NFILES
00312           CHARACTER(LEN=24), INTENT(IN)     :: CODE
00313           LOGICAL, INTENT(IN)               :: PEXIT
00314           TYPE(BIEF_FILE)   , INTENT(INOUT) :: FILES(NFILES)
00315         END SUBROUTINE
00316 !
00317         SUBROUTINE BIEF_INIT(CODE,CHAINE,NCAR,PINIT)
00318           IMPLICIT NONE
00319           CHARACTER(LEN=24), INTENT(IN)     :: CODE
00320           LOGICAL, INTENT(IN)               :: PINIT
00321           CHARACTER(LEN=250), INTENT(INOUT) :: CHAINE
00322           INTEGER, INTENT(INOUT)            :: NCAR
00323         END SUBROUTINE
00324 !
00325         SUBROUTINE BIEF_SUITE(VARSOR,CLAND,NUMDEB,NPRE,STD,
00326      &                        HIST,NHIST,NPOIN,AT,TEXTPR,VARCLA,NVARCL,
00327      &                        TROUVE,ALIRE,LISTIN,FIN,MAXVAR,NPLAN,DT,
00328      &                        NDT)
00329         USE BIEF_DEF
00330         IMPLICIT NONE
00331       TYPE(BIEF_OBJ), INTENT(INOUT)   :: VARSOR,CLAND
00332       INTEGER, INTENT(IN), OPTIONAL   :: NPLAN
00333       INTEGER, INTENT(IN)             :: NHIST,NVARCL,MAXVAR
00334       INTEGER, INTENT(IN)             :: NUMDEB,NPRE,NPOIN
00335       INTEGER, INTENT(INOUT)          :: TROUVE(MAXVAR)
00336       INTEGER, INTENT(IN)             :: ALIRE(MAXVAR)
00337       CHARACTER(LEN=*), INTENT(IN)    :: STD
00338       CHARACTER(LEN=32), INTENT(IN)   :: TEXTPR(MAXVAR),VARCLA(NVARCL)
00339       DOUBLE PRECISION, INTENT(INOUT) :: HIST(*),AT
00340       LOGICAL, INTENT(IN)             :: FIN,LISTIN
00341       DOUBLE PRECISION, INTENT(OUT), OPTIONAL :: DT
00342       INTEGER, INTENT(OUT), OPTIONAL :: NDT
00343         END SUBROUTINE
00344 !
00345         DOUBLE PRECISION FUNCTION BIEF_SUM( X )
00346           USE BIEF_DEF
00347           IMPLICIT NONE
00348           TYPE(BIEF_OBJ), INTENT(IN) :: X
00349         END FUNCTION
00350 !
00351         SUBROUTINE BILANT
00352      &(H,WORK2,WORK3,DT,LT,NIT,INFO,
00353      & T,AGGLOT,MASSOU,MASTR0,MASTR2,MASTEN,MASTOU,MSK,MASKEL,MESH,
00354      & FLBOR,NUMLIQ,NFRLIQ,NPTFR,NAMETRAC,FLBORTRA,MASS_RAIN,TRAIN,
00355      & MASTRAIN)
00356       USE BIEF_DEF
00357       IMPLICIT NONE
00358       INTEGER, INTENT(IN)            :: LT,NIT,NFRLIQ,NPTFR
00359       INTEGER, INTENT(IN)            :: NUMLIQ(NPTFR)
00360       DOUBLE PRECISION, INTENT(IN)   :: DT,MASSOU,AGGLOT,MASS_RAIN,TRAIN
00361       DOUBLE PRECISION, INTENT(INOUT):: MASTRAIN
00362       LOGICAL, INTENT(IN)            :: INFO,MSK
00363       TYPE(BIEF_OBJ), INTENT(INOUT)  :: WORK2,WORK3
00364       TYPE(BIEF_OBJ), INTENT(IN)     :: H,T,MASKEL,FLBOR
00365       TYPE(BIEF_OBJ), INTENT(IN)     :: FLBORTRA
00366       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
00367       DOUBLE PRECISION, INTENT(INOUT):: MASTR0,MASTR2,MASTEN,MASTOU
00368       CHARACTER(LEN=32), INTENT(IN)  :: NAMETRAC
00369         END SUBROUTINE
00370 !
00371         SUBROUTINE CFLP11(U,V,X,Y,IKLE,NELEM,NELMAX,W1)
00372           IMPLICIT NONE
00373           INTEGER         , INTENT(IN)  :: NELEM,NELMAX
00374           DOUBLE PRECISION, INTENT(IN)  :: U(*),V(*)
00375           DOUBLE PRECISION, INTENT(IN)  :: X(NELMAX,*),Y(NELMAX,*)
00376           INTEGER         , INTENT(IN)  :: IKLE(NELMAX,*)
00377           DOUBLE PRECISION, INTENT(OUT) :: W1(NELMAX,*)
00378         END SUBROUTINE
00379 !
00380         SUBROUTINE CFLP12(U,V,X,Y,IKLE,NELEM,NELMAX,W1)
00381           IMPLICIT NONE
00382           INTEGER         , INTENT(IN)  :: NELEM,NELMAX
00383           DOUBLE PRECISION, INTENT(IN)  :: U(*),V(*)
00384           DOUBLE PRECISION, INTENT(IN)  :: X(NELMAX,*),Y(NELMAX,*)
00385           INTEGER         , INTENT(IN)  :: IKLE(NELMAX,*)
00386           DOUBLE PRECISION, INTENT(OUT) :: W1(NELMAX,*)
00387         END SUBROUTINE
00388 !
00389         SUBROUTINE CFLPSI(SYGMA,U,V,DT,IELM,MESH,MSK,MASKEL)
00390           USE BIEF_DEF
00391           IMPLICIT NONE
00392           INTEGER         , INTENT(IN)    :: IELM
00393           DOUBLE PRECISION, INTENT(IN)    :: DT
00394           TYPE(BIEF_MESH) , INTENT(INOUT) :: MESH
00395           TYPE(BIEF_OBJ)  , INTENT(INOUT) :: SYGMA
00396           TYPE(BIEF_OBJ)  , INTENT(IN)    :: U,V,MASKEL
00397           LOGICAL         , INTENT(IN)    :: MSK
00398         END SUBROUTINE
00399 !
00400         SUBROUTINE CFLVF
00401      &(DTMAX,HSTART,H,FXMAT,FXMATPAR,MAS,DT,FXBOR,SMH,YASMH,TAB1,NSEG,
00402      & NPOIN,NPTFR,GLOSEG,SIZGLO,MESH,MSK,MASKPT,RAIN,PLUIE,FC,
00403      & NELEM,IKLE,LIMTRA,KDIR,FBOR,FSCEXP,TRAIN,NBOR,MINFC,MAXFC,SECU,
00404      & COEMIN,COESOU)
00405       USE BIEF_DEF
00406       IMPLICIT NONE
00407       INTEGER, INTENT(IN)             :: NSEG,NPOIN,NPTFR,SIZGLO
00408       INTEGER, INTENT(IN)             :: GLOSEG(SIZGLO,2),NELEM
00409       INTEGER, INTENT(IN)             :: IKLE(NELEM,3),NBOR(NPTFR)
00410       INTEGER, INTENT(IN)             :: LIMTRA(NPTFR),KDIR
00411       DOUBLE PRECISION, INTENT(INOUT) :: DTMAX
00412       DOUBLE PRECISION, INTENT(IN)    :: DT,HSTART(NPOIN)
00413       DOUBLE PRECISION, INTENT(IN)    :: H(NPOIN),MAS(NPOIN),SMH(NPOIN)
00414       DOUBLE PRECISION, INTENT(IN)    :: PLUIE(NPOIN)
00415 !                                              NOT NPTFR, SEE TRACVF
00416       DOUBLE PRECISION, INTENT(IN)    :: FXBOR(NPOIN)
00417       DOUBLE PRECISION, INTENT(IN)    :: COEMIN,COESOU
00418       DOUBLE PRECISION, INTENT(IN)    :: FXMAT(NSEG),FXMATPAR(NSEG)
00419       DOUBLE PRECISION, INTENT(INOUT) :: FC(NPOIN)
00420       DOUBLE PRECISION, INTENT(IN)    :: FSCEXP(NPOIN)
00421       DOUBLE PRECISION, INTENT(IN)    :: FBOR(NPTFR),TRAIN,SECU
00422       LOGICAL, INTENT(IN)             :: YASMH,MSK,RAIN
00423       TYPE(BIEF_OBJ), INTENT(INOUT)   :: TAB1,MINFC,MAXFC
00424       TYPE(BIEF_MESH), INTENT(INOUT)  :: MESH
00425       TYPE(BIEF_OBJ), INTENT(IN)      :: MASKPT
00426         END SUBROUTINE
00427 !
00428         SUBROUTINE CG1112(X,DIM1,DIM2,IKLE,NELEM,NELMAX)
00429           IMPLICIT NONE
00430           INTEGER         , INTENT(IN)    :: NELEM,NELMAX,DIM1,DIM2
00431           DOUBLE PRECISION, INTENT(INOUT) :: X(DIM1,DIM2)
00432           INTEGER         , INTENT(IN)    :: IKLE(NELMAX,4)
00433         END SUBROUTINE
00434 !
00435         SUBROUTINE CG1113(X,DIM1,DIM2,IKLE,NELEM,NELMAX)
00436           IMPLICIT NONE
00437           INTEGER         , INTENT(IN)    :: NELEM,NELMAX,DIM1,DIM2
00438           DOUBLE PRECISION, INTENT(INOUT) :: X(DIM1,DIM2)
00439           INTEGER         , INTENT(IN)    :: IKLE(NELMAX,6)
00440         END SUBROUTINE
00441 !
00442         SUBROUTINE CGSQUA(X,A,B,MESH, G,G0,P,K,H,AHPK,CFG,INFOGR)
00443           USE BIEF_DEF
00444           IMPLICIT NONE
00445           TYPE(BIEF_OBJ)  , INTENT(INOUT) :: X,G,G0,P,K,H,AHPK
00446           TYPE(BIEF_OBJ)  , INTENT(IN   ) :: B
00447           TYPE(BIEF_OBJ)  , INTENT(IN)    :: A
00448           TYPE(SLVCFG)    , INTENT(INOUT) :: CFG
00449           LOGICAL         , INTENT(IN)    :: INFOGR
00450           TYPE(BIEF_MESH) , INTENT(INOUT) :: MESH
00451         END SUBROUTINE
00452 !
00453         SUBROUTINE CGSTAB(X, A,B , MESH, P,Q,R,S,T,V, CFG,INFOGR,AUX)
00454           USE BIEF_DEF
00455           IMPLICIT NONE
00456           TYPE(BIEF_OBJ)  , INTENT(INOUT) :: X,P,Q,R,S,T,V
00457           TYPE(BIEF_OBJ)  , INTENT(IN)    :: AUX,A,B
00458           TYPE(BIEF_MESH) , INTENT(INOUT) :: MESH
00459           TYPE(SLVCFG)    , INTENT(INOUT) :: CFG
00460           LOGICAL         , INTENT(IN)    :: INFOGR
00461         END SUBROUTINE
00462 !
00463         SUBROUTINE CHAR11( U , V , DT , NRK , X , Y , IKLE , IFABOR ,
00464      &   XPLOT , YPLOT , DX , DY , SHP , ELT , NSP ,
00465      &   NPLOT , NPOIN , NELEM , NELMAX , SURDET , SENS , TEST )
00466       USE BIEF_DEF
00467       IMPLICIT NONE
00468       INTEGER         , INTENT(IN)    :: SENS
00469       INTEGER         , INTENT(IN)    :: NPOIN,NELEM,NELMAX,NPLOT,NRK
00470       INTEGER         , INTENT(IN)    :: IKLE(NELMAX,3),IFABOR(NELMAX,3)
00471       INTEGER         , INTENT(INOUT) :: ELT(NPLOT),NSP(NPLOT)
00472       DOUBLE PRECISION, INTENT(IN)    :: U(NPOIN),V(NPOIN),SURDET(NELEM)
00473       DOUBLE PRECISION, INTENT(INOUT) :: XPLOT(NPLOT),YPLOT(NPLOT)
00474       DOUBLE PRECISION, INTENT(INOUT) :: SHP(3,NPLOT)
00475       DOUBLE PRECISION, INTENT(IN)    :: DT
00476       DOUBLE PRECISION, INTENT(IN)    :: X(NPOIN),Y(NPOIN)
00477       DOUBLE PRECISION, INTENT(INOUT) :: DX(NPLOT),DY(NPLOT),TEST(NPLOT)
00478         END SUBROUTINE
00479 !
00480         SUBROUTINE CHAR13( U , V , DT , NRK , X , Y , IKLE , IFABOR ,
00481      &   XPLOT , YPLOT , DX , DY , SHP , ELT , NSP ,
00482      &   NPLOT , NPOIN , NELEM , NELMAX , SURDET , SENS , TEST )
00483       USE BIEF_DEF
00484       IMPLICIT NONE
00485       INTEGER         , INTENT(IN)    :: SENS
00486       INTEGER         , INTENT(IN)    :: NPOIN,NELEM,NELMAX,NPLOT,NRK
00487       INTEGER         , INTENT(IN)    :: IKLE(NELMAX,6),IFABOR(NELMAX,3)
00488       INTEGER         , INTENT(INOUT) :: ELT(NPLOT),NSP(NPLOT)
00489       DOUBLE PRECISION, INTENT(IN)    :: U(NPOIN),V(NPOIN),SURDET(NELEM)
00490       DOUBLE PRECISION, INTENT(INOUT) :: XPLOT(NPLOT),YPLOT(NPLOT)
00491       DOUBLE PRECISION, INTENT(INOUT) :: SHP(3,NPLOT)
00492       DOUBLE PRECISION, INTENT(IN)    :: DT
00493       DOUBLE PRECISION, INTENT(IN)    :: X(NPOIN),Y(NPOIN)
00494       DOUBLE PRECISION, INTENT(INOUT) :: DX(NPLOT),DY(NPLOT),TEST(NPLOT)
00495         END SUBROUTINE
00496 !
00497         SUBROUTINE CHAR41( U , V , W , DT , NRK ,
00498      &   X , Y , ZSTAR , Z , IKLE2 , IBOR ,
00499      &   XPLOT , YPLOT , ZPLOT , DX , DY , DZ , SHP , SHZ , ELT , ETA ,
00500      &   NSP , NPLOT , NPOIN2 , NELEM2 , NPLAN , SURDET ,
00501      &   SENS , ISO , TEST )
00502       USE BIEF_DEF
00503       IMPLICIT NONE
00504       INTEGER         , INTENT(IN)    :: SENS,NPLAN
00505       INTEGER         , INTENT(IN)    :: NPOIN2,NELEM2,NPLOT,NRK
00506       INTEGER         , INTENT(IN)    :: IKLE2(NELEM2,3)
00507       INTEGER         , INTENT(INOUT) :: ELT(NPLOT),NSP(NPLOT)
00508       DOUBLE PRECISION, INTENT(IN)    :: U(NPOIN2,NPLAN),V(NPOIN2,NPLAN)
00509       DOUBLE PRECISION, INTENT(IN)    :: W(NPOIN2,NPLAN),SURDET(NELEM2)
00510       DOUBLE PRECISION, INTENT(INOUT) :: XPLOT(NPLOT),YPLOT(NPLOT)
00511       DOUBLE PRECISION, INTENT(INOUT) :: ZPLOT(NPLOT)
00512       DOUBLE PRECISION, INTENT(INOUT) :: SHP(3,NPLOT),SHZ(NPLOT)
00513       DOUBLE PRECISION, INTENT(IN)    :: X(NPOIN2),Y(NPOIN2),DT
00514       DOUBLE PRECISION, INTENT(IN)    :: Z(NPOIN2,NPLAN),ZSTAR(NPLAN)
00515       DOUBLE PRECISION, INTENT(INOUT) :: DX(NPLOT),DY(NPLOT),TEST(NPLOT)
00516       DOUBLE PRECISION, INTENT(INOUT) :: DZ(NPLOT)
00517       INTEGER         , INTENT(IN)    :: IBOR(NELEM2,5,NPLAN-1)
00518       INTEGER         , INTENT(INOUT) :: ETA(NPLOT),ISO(NPLOT)
00519         END SUBROUTINE
00520 !
00521         SUBROUTINE CHARAC
00522      &( FN    , FTILD  , NOMB  , UCONV  , VCONV , WCONV  , FRCONV ,
00523      &  ZSTAR , FREQ   ,
00524      &  DT    , IFAMAS , IELM  , NPOIN2 , NPLAN , JF     , NF     ,
00525      &  MSK   , MASKEL , SHP   , SHZ    , SHF   , TB     , ELT    ,
00526      &  ETA   , FRE    , IT3   , ISUB   , FREBUF, MESH   ,
00527      &  NELEM2, NELMAX2, IKLE2 , SURDET2, AM1   , RHS    , SLV    ,
00528      &  AGGLO , LISTIN , NGAUSS, UNSV   , OPTWEA, POST   , PERIO  ,
00529      &  YA4D  , SIGMA  , STOCHA, VISC )
00530       USE BIEF_DEF
00531       IMPLICIT NONE
00532       INTEGER         , INTENT(IN)           :: NOMB,OPTWEA,NGAUSS
00533       INTEGER         , INTENT(IN)           :: NPLAN,JF,NF,NELEM2
00534       INTEGER         , INTENT(IN)           :: NPOIN2,NELMAX2
00535       INTEGER         , INTENT(INOUT)        :: IELM,FRE(*)
00536 !     NEXT 4 DIMENSIONS ARE A MINIMUM
00537       INTEGER         , INTENT(INOUT),TARGET :: ELT(NPOIN2*NPLAN)
00538       INTEGER         , INTENT(INOUT),TARGET :: ETA(NPOIN2*NPLAN)
00539       INTEGER         , INTENT(INOUT),TARGET :: IT3(NPOIN2*NPLAN)
00540       INTEGER         , INTENT(INOUT),TARGET :: ISUB(NPOIN2*NPLAN)
00541       INTEGER         , INTENT(INOUT)        :: FREBUF(*)
00542       TYPE(BIEF_OBJ)  , INTENT(IN)           :: FN,UCONV,VCONV,WCONV
00543       TYPE(BIEF_OBJ)  , INTENT(IN)           :: FRCONV
00544       TYPE(BIEF_OBJ)  , INTENT(IN)           :: ZSTAR,MASKEL,IKLE2
00545       TYPE(BIEF_OBJ)  , INTENT(IN)           :: SURDET2,FREQ,UNSV
00546       TYPE(BIEF_OBJ)  , INTENT(INOUT)        :: TB,SHF,AM1,RHS
00547       TYPE(BIEF_OBJ)  , INTENT(INOUT),TARGET :: FTILD,SHP,SHZ
00548       LOGICAL         , INTENT(IN)           :: MSK,LISTIN
00549       DOUBLE PRECISION, INTENT(IN)           :: DT,AGGLO
00550       TYPE(BIEF_MESH) , INTENT(INOUT)        :: MESH
00551       TYPE(BIEF_OBJ)  , INTENT(IN), TARGET   :: IFAMAS
00552       LOGICAL, INTENT(IN), OPTIONAL          :: POST,PERIO,YA4D,SIGMA
00553       INTEGER, INTENT(IN), OPTIONAL          :: STOCHA
00554       TYPE(BIEF_OBJ), INTENT(IN), OPTIONAL, TARGET :: VISC
00555       TYPE(SLVCFG)    , INTENT(INOUT)        :: SLV
00556         END SUBROUTINE
00557 !
00558         SUBROUTINE CHGDIS(X,OLDELT,NEWELT,MESH)
00559           USE BIEF_DEF
00560           IMPLICIT NONE
00561           INTEGER, INTENT(IN)           :: NEWELT
00562           INTEGER, INTENT(INOUT)        :: OLDELT
00563           TYPE(BIEF_OBJ), INTENT(INOUT) :: X
00564           TYPE(BIEF_MESH), INTENT(IN)   :: MESH
00565         END SUBROUTINE
00566 !
00567         SUBROUTINE CLIP(F,XMIN,CLPMIN,XMAX,CLPMAX,NPOIN)
00568           USE BIEF_DEF
00569           IMPLICIT NONE
00570           INTEGER, INTENT(IN) :: NPOIN
00571           DOUBLE PRECISION, INTENT(IN) :: XMIN,XMAX
00572           LOGICAL, INTENT(IN) :: CLPMIN,CLPMAX
00573           TYPE(BIEF_OBJ), INTENT(INOUT) :: F
00574         END SUBROUTINE
00575 !
00576         LOGICAL FUNCTION CMPOBJ( OBJ1 , OBJ2 )
00577           USE BIEF_DEF
00578           IMPLICIT NONE
00579           TYPE(BIEF_OBJ), INTENT(IN) ::  OBJ1,OBJ2
00580         END FUNCTION
00581 !
00582         SUBROUTINE CONFIG_CODE(ICODE)
00583           IMPLICIT NONE
00584           INTEGER , INTENT(IN)    :: ICODE
00585         END SUBROUTINE
00586 !
00587         SUBROUTINE COMP_FAC(ELTSEG,IFABOR,NELEM,NPOIN,FAC)
00588           USE BIEF_DEF
00589           IMPLICIT NONE
00590           INTEGER, INTENT(IN) :: NELEM,NPOIN
00591           INTEGER, INTENT(IN) :: IFABOR(NELEM,3),ELTSEG(NELEM,3)
00592           TYPE(BIEF_OBJ), INTENT(INOUT) :: FAC
00593         END SUBROUTINE
00594 !
00595         SUBROUTINE COMP_NH_COM_SEG
00596      &(ELTSEG,NELEM,NH_COM_SEG,DIM1NHCOM,
00597      & NB_NEIGHB_SEG,NB_NEIGHB_PT_SEG,GLOSEG,DIMGLO,KNOLG,NPOIN)
00598       IMPLICIT NONE
00599       INTEGER, INTENT(IN)    :: NELEM,DIM1NHCOM,NB_NEIGHB_SEG,DIMGLO
00600       INTEGER, INTENT(IN)    :: NPOIN
00601       INTEGER, INTENT(INOUT) :: NH_COM_SEG(DIM1NHCOM,NB_NEIGHB_SEG)
00602       INTEGER, INTENT(IN)    :: ELTSEG(NELEM,3),GLOSEG(DIMGLO,2)
00603       INTEGER, INTENT(IN)    :: NB_NEIGHB_PT_SEG(NB_NEIGHB_SEG)
00604       INTEGER, INTENT(IN)    :: KNOLG(*)
00605         END SUBROUTINE
00606 !
00607         SUBROUTINE COMP_IKLE
00608      &(IKLE,IKLBOR,ELTSEG,NBOR,NELBOR,NULONE,
00609      & IELM,NELEM,NELMAX,NPOIN,NPTFR,NELEB,NELEBX)
00610       IMPLICIT NONE
00611       INTEGER, INTENT(IN)    :: NELEM,NELMAX,IELM,NPOIN,NPTFR
00612       INTEGER, INTENT(IN)    :: NELEB,NELEBX
00613       INTEGER, INTENT(IN)    :: ELTSEG(NELMAX,3)
00614       INTEGER, INTENT(IN)    :: NELBOR(NELEBX),NULONE(NELEBX)
00615       INTEGER, INTENT(INOUT) :: IKLE(NELMAX,*),IKLBOR(NELEBX,*),NBOR(*)
00616         END SUBROUTINE
00617 !
00618         SUBROUTINE COMP_SEG
00619      &(NELEM,NELMAX,IELM,IKLE,GLOSEG,MAXSEG,ELTSEG,ORISEG,NSEG)
00620       IMPLICIT NONE
00621       INTEGER, INTENT(IN)    :: NELMAX,NSEG,MAXSEG,IELM,NELEM
00622       INTEGER, INTENT(IN)    :: IKLE(NELMAX,*)
00623       INTEGER, INTENT(INOUT) :: GLOSEG(MAXSEG,2),ELTSEG(NELMAX,*)
00624       INTEGER, INTENT(INOUT) :: ORISEG(NELMAX,*)
00625         END SUBROUTINE
00626 !
00627         SUBROUTINE CORLAT
00628           IMPLICIT NONE
00629         END SUBROUTINE
00630 !
00631         SUBROUTINE CORRSL(NEWSL,OLDSL,ZF,MESH)
00632           USE BIEF_DEF
00633           IMPLICIT NONE
00634           TYPE(BIEF_MESH), INTENT(IN)    :: MESH
00635           TYPE(BIEF_OBJ) , INTENT(IN)    :: OLDSL,ZF
00636           TYPE(BIEF_OBJ) , INTENT(INOUT) :: NEWSL
00637         END SUBROUTINE
00638 !
00639         SUBROUTINE CORRXY(X,Y,NPOIN)
00640           IMPLICIT NONE
00641           INTEGER, INTENT(IN)             :: NPOIN
00642           DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN),Y(NPOIN)
00643         END SUBROUTINE
00644 !
00645         SUBROUTINE CPIK12(IKLE,NELEM,NELMAX,NPOIN)
00646           IMPLICIT NONE
00647           INTEGER, INTENT(IN)    :: NELEM,NELMAX,NPOIN
00648           INTEGER, INTENT(INOUT) :: IKLE(NELMAX,4)
00649         END SUBROUTINE
00650 !
00651         SUBROUTINE CPIK13
00652      &(IKLE,IKLBOR,ELTSEG,NBOR,NELBOR,NULONE,NELEM,NELMAX,NPOIN,NPTFR,
00653      & NELEB,NELEBX)
00654       IMPLICIT NONE
00655       INTEGER, INTENT(IN)    :: NELEM,NELMAX,NPOIN,NPTFR,NELEB,NELEBX
00656       INTEGER, INTENT(IN)    :: ELTSEG(NELMAX,3)
00657       INTEGER, INTENT(IN)    :: NELBOR(NELEBX),NULONE(NELEBX)
00658       INTEGER, INTENT(INOUT) :: IKLE(NELMAX,6),IKLBOR(NELEBX,3),NBOR(*)
00659         END SUBROUTINE
00660 !
00661         SUBROUTINE CPIKLE2
00662      &(IKLE3,KLEI3,IKLES,NELEM2,NELMAX2,NPOIN2,NPLAN)
00663       IMPLICIT NONE
00664       INTEGER, INTENT(IN)    :: NELEM2,NELMAX2,NPOIN2,NPLAN
00665       INTEGER, INTENT(IN)    :: IKLES(3,NELEM2)
00666       INTEGER, INTENT(INOUT) :: IKLE3(NELMAX2,NPLAN-1,6)
00667       INTEGER, INTENT(INOUT) :: KLEI3(6,NELMAX2,NPLAN-1)
00668         END SUBROUTINE
00669 !
00670         SUBROUTINE CPIKLE3
00671      &(IKLE3,IKLES,NELEM2,NELMAX2,NPOIN2,NPLAN,KNOLG)
00672       IMPLICIT NONE
00673       INTEGER, INTENT(IN)    :: NELEM2,NELMAX2,NPOIN2,NPLAN
00674       INTEGER, INTENT(IN)    :: KNOLG(NPOIN2)
00675       INTEGER, INTENT(INOUT) :: IKLES(3,NELEM2)
00676       INTEGER, INTENT(INOUT) :: IKLE3(NELMAX2,3,NPLAN-1,4)
00677         END SUBROUTINE
00678 !
00679         SUBROUTINE CPSTMT( X , Y , TRANS )
00680           USE BIEF_DEF
00681           IMPLICIT NONE
00682           TYPE(BIEF_OBJ), INTENT(IN)    :: X
00683           TYPE(BIEF_OBJ), INTENT(INOUT) :: Y
00684           LOGICAL, INTENT(IN), OPTIONAL :: TRANS
00685         END SUBROUTINE
00686 !
00687         SUBROUTINE CPSTVC( X , Y )
00688           USE BIEF_DEF
00689           IMPLICIT NONE
00690           TYPE(BIEF_OBJ), INTENT(IN)    :: X
00691           TYPE(BIEF_OBJ), INTENT(INOUT) :: Y
00692         END SUBROUTINE
00693 !
00694 !
00695         SUBROUTINE CROSFR(X,Y,XR,YR,XMAIL,YMAIL,NPMAX,NBOR,KP1BOR,
00696      &                    NPTFR,DM,OK)
00697           IMPLICIT NONE
00698           DOUBLE PRECISION, INTENT(IN) :: X,Y,XR,YR,DM
00699           INTEGER, INTENT(IN)          :: NPTFR,NPMAX
00700           DOUBLE PRECISION, INTENT(IN) :: XMAIL(NPMAX),YMAIL(NPMAX)
00701           INTEGER, INTENT(IN)          :: NBOR(NPTFR),KP1BOR(NPTFR)
00702           LOGICAL, INTENT(INOUT)       :: OK
00703         END SUBROUTINE
00704 !
00705         SUBROUTINE CRSL11(NEWSL,OLDSL,ZF,IKLE,NELEM,NELMAX)
00706           IMPLICIT NONE
00707           INTEGER, INTENT(IN)             :: NELEM,NELMAX
00708           DOUBLE PRECISION, INTENT(INOUT) :: NEWSL(NELMAX,3)
00709           DOUBLE PRECISION, INTENT(IN)    :: OLDSL(*),ZF(*)
00710           INTEGER, INTENT(IN)             :: IKLE(NELMAX,3)
00711         END SUBROUTINE
00712 !
00713         SUBROUTINE CRSL12(NEWSL,OLDSL,ZF,IKLE,NELEM,NELMAX)
00714           IMPLICIT NONE
00715           INTEGER, INTENT(IN)             :: NELEM,NELMAX
00716           DOUBLE PRECISION, INTENT(INOUT) :: NEWSL(NELMAX,4)
00717           DOUBLE PRECISION, INTENT(IN)    :: OLDSL(*),ZF(*)
00718           INTEGER, INTENT(IN)             :: IKLE(NELMAX,4)
00719         END SUBROUTINE
00720 !
00721         SUBROUTINE CVDFTR
00722      &(F,FTILD,FN,FSCEXP,DIFT,ICONVF,CONV,
00723      & H,HN,HPROP,TETAH,UCONV,VCONV,DM1,ZCONV,SOLSYS,
00724      & VISC,VISC_S,SM,SMH,YASMH,SMI,YASMI,AM1,AM2,
00725      & ZF,FBOR,AFBOR,BFBOR,LIMTRA,MASKTR,MESH,W,TB,
00726      & T1,T2,T3,T4,T5,T6,T7,T10,TE1,TE2,TE3,KDIR,KDDL,KENT,DT,ENTET,
00727      & TETAT,AGGLOT,INFOGT,BILAN,OPTSUP,
00728      & ISOUSI,LT,NIT,OPDTRA,OPTBAN,MSK,MASKEL,MASKPT,MBOR,
00729      & S,MASSOU,OPTSOU,SLVTRA,FLBOR,VOLU2D,V2DPAR,UNSV2D,OPTVF,FLBORTRA,
00730      & FLULIM,YAFLULIM,DIRFLU,RAIN,PLUIE,TRAIN,
00731      & GIVEN_FLUX,FLUX_GIVEN,MAXADV)
00732       USE BIEF_DEF
00733       IMPLICIT NONE
00734       INTEGER, INTENT(IN)           :: ICONVF,ISOUSI,OPTSUP,OPDTRA,KENT
00735       INTEGER, INTENT(IN)           :: LT,NIT,OPTBAN,OPTSOU,KDIR,SOLSYS
00736       INTEGER, INTENT(IN)           :: KDDL,OPTVF,DIRFLU,MAXADV
00737       DOUBLE PRECISION, INTENT(IN)  :: TETAT,AGGLOT,TETAH,DT,TRAIN
00738       DOUBLE PRECISION, INTENT(INOUT)  :: MASSOU
00739       LOGICAL, INTENT(IN)           :: INFOGT,BILAN,CONV,YASMH,RAIN
00740       LOGICAL, INTENT(IN)           :: DIFT,MSK,ENTET,YASMI,YAFLULIM
00741       LOGICAL, INTENT(IN)           :: FLUX_GIVEN
00742       TYPE(SLVCFG), INTENT(INOUT)   :: SLVTRA
00743       TYPE(BIEF_OBJ), INTENT(IN)    :: MASKEL,MASKPT,H,HN,AFBOR,BFBOR
00744       TYPE(BIEF_OBJ), INTENT(INOUT) :: HPROP
00745       TYPE(BIEF_OBJ), INTENT(INOUT) :: F,SM,FLBORTRA
00746       TYPE(BIEF_OBJ), INTENT(IN)    :: UCONV,VCONV,ZF
00747       TYPE(BIEF_OBJ), INTENT(IN)    :: FTILD,FN,SMI,FLULIM,PLUIE
00748       TYPE(BIEF_OBJ), INTENT(INOUT) :: SMH,FBOR
00749       TYPE(BIEF_OBJ), INTENT(INOUT) :: TE1,TE2,TE3,W
00750       TYPE(BIEF_OBJ), INTENT(INOUT) :: T1,T2,T3,T4,T5,T6,T7,T10
00751       TYPE(BIEF_OBJ), INTENT(IN)    :: FSCEXP,DM1,ZCONV
00752       TYPE(BIEF_OBJ), INTENT(IN)    :: S,VOLU2D,V2DPAR,UNSV2D
00753       TYPE(BIEF_OBJ), INTENT(INOUT) :: FLBOR,LIMTRA
00754       TYPE(BIEF_OBJ), INTENT(INOUT) :: VISC_S,VISC
00755       TYPE(BIEF_OBJ), INTENT(INOUT) :: AM1,AM2,MBOR
00756       TYPE(BIEF_OBJ), INTENT(INOUT) :: TB
00757       TYPE(BIEF_OBJ), INTENT(IN)    :: MASKTR,GIVEN_FLUX
00758       TYPE(BIEF_MESH)               :: MESH
00759         END SUBROUTINE
00760 !
00761         SUBROUTINE CVTRVF
00762      &(F,FN,FSCEXP,DIFT,CONV,H,HN,HPROP,UCONV,VCONV,DM1,ZCONV,SOLSYS,
00763      & VISC,VISC_S,SM,SMH,YASMH,SMI,YASMI,FBOR,MASKTR,MESH,
00764      & T1,T2,T3,T4,T5,T6,T7,T8,HNT,HT,AGGLOH,TE1,DT,ENTET,BILAN,
00765      & OPDTRA,MSK,MASKEL,S,MASSOU,OPTSOU,LIMTRA,KDIR,KDDL,NPTFR,FLBOR,
00766      & YAFLBOR,VOLU2D,V2DPAR,UNSV2D,IOPT,FLBORTRA,MASKPT,
00767      & RAIN,PLUIE,TRAIN,OPTADV)
00768       USE BIEF_DEF
00769       IMPLICIT NONE
00770       INTEGER, INTENT(IN)             :: OPDTRA,OPTSOU,KDIR,NPTFR,SOLSYS
00771       INTEGER, INTENT(IN)             :: KDDL,IOPT,OPTADV
00772       INTEGER, INTENT(INOUT)          :: LIMTRA(NPTFR)
00773       DOUBLE PRECISION, INTENT(IN)    :: DT,AGGLOH,TRAIN
00774       DOUBLE PRECISION, INTENT(INOUT) :: MASSOU
00775       LOGICAL, INTENT(IN)             :: BILAN,CONV,YASMH,YAFLBOR
00776       LOGICAL, INTENT(IN)             :: DIFT,MSK,ENTET,YASMI,RAIN
00777       TYPE(BIEF_OBJ), INTENT(IN)      :: MASKEL,H,HN,DM1,ZCONV,MASKPT
00778       TYPE(BIEF_OBJ), INTENT(IN)      :: VOLU2D,V2DPAR,UNSV2D,HPROP
00779       TYPE(BIEF_OBJ), INTENT(INOUT)   :: F,SM,HNT,HT
00780       TYPE(BIEF_OBJ), INTENT(IN)      :: UCONV,VCONV,FN,SMI,SMH
00781       TYPE(BIEF_OBJ), INTENT(INOUT)   :: FBOR
00782       TYPE(BIEF_OBJ), INTENT(INOUT)   :: TE1,FLBORTRA
00783       TYPE(BIEF_OBJ), INTENT(INOUT)   :: T1,T2,T4,T5,T6,T7,T8
00784       TYPE(BIEF_OBJ), INTENT(IN)      :: FSCEXP,S,MASKTR
00785       TYPE(BIEF_OBJ), INTENT(IN)      :: VISC_S,VISC,PLUIE
00786       TYPE(BIEF_MESH) :: MESH
00787       TYPE(BIEF_OBJ), INTENT(IN),    TARGET :: FLBOR
00788       TYPE(BIEF_OBJ), INTENT(INOUT), TARGET :: T3
00789         END SUBROUTINE
00790 !
00791         SUBROUTINE CVTRVF_POS
00792      &(F,FN,FSCEXP,DIFT,CONV,H,HN,HPROP,UDEL,VDEL,DM1,ZCONV,SOLSYS,
00793      & VISC,VISC_S,SM,SMH,YASMH,SMI,YASMI,FBOR,MASKTR,MESH,
00794      & T1,T2,T3,T4,T5,T6,T7,T8,HNT,HT,AGGLOH,TE1,DT,ENTET,BILAN,
00795      & OPDTRA,MSK,MASKEL,S,MASSOU,OPTSOU,LIMTRA,KDIR,KDDL,NPTFR,FLBOR,
00796      & YAFLBOR,V2DPAR,UNSV2D,IOPT,FLBORTRA,MASKPT,GLOSEG1,GLOSEG2,NBOR,
00797      & OPTION,FLULIM,YAFLULIM,RAIN,PLUIE,TRAIN,GIVEN_FLUX,FLUX_GIVEN,
00798      & NITMAX)
00799       USE BIEF_DEF
00800       IMPLICIT NONE
00801       INTEGER, INTENT(IN)             :: OPDTRA,OPTSOU,KDIR,NPTFR,SOLSYS
00802       INTEGER, INTENT(IN)             :: KDDL,IOPT,OPTION,NITMAX
00803       INTEGER, INTENT(IN)             :: GLOSEG1(*),GLOSEG2(*)
00804       INTEGER, INTENT(IN)             :: NBOR(NPTFR)
00805       INTEGER, INTENT(INOUT)          :: LIMTRA(NPTFR)
00806       DOUBLE PRECISION, INTENT(IN)    :: DT,AGGLOH,TRAIN
00807       DOUBLE PRECISION, INTENT(IN)    :: FLULIM(*)
00808       DOUBLE PRECISION, INTENT(INOUT) :: MASSOU
00809       LOGICAL, INTENT(IN)             :: BILAN,CONV,YASMH,YAFLBOR,RAIN
00810       LOGICAL, INTENT(IN)             :: DIFT,MSK,ENTET,YASMI,YAFLULIM
00811       LOGICAL, INTENT(IN)             :: FLUX_GIVEN
00812       TYPE(BIEF_OBJ), INTENT(IN)      :: MASKEL,H,HN,DM1,ZCONV,MASKPT
00813       TYPE(BIEF_OBJ), INTENT(IN)      :: V2DPAR,UNSV2D,HPROP
00814       TYPE(BIEF_OBJ), INTENT(INOUT)   :: F,SM,HNT,HT,FBOR
00815       TYPE(BIEF_OBJ), INTENT(IN)      :: UDEL,VDEL,FN,SMI,SMH
00816       TYPE(BIEF_OBJ), INTENT(INOUT)   :: TE1,FLBORTRA
00817       TYPE(BIEF_OBJ), INTENT(INOUT)   :: T1,T2,T3,T4,T5,T6,T7,T8
00818       TYPE(BIEF_OBJ), INTENT(IN)      :: FSCEXP,S,MASKTR
00819       TYPE(BIEF_OBJ), INTENT(INOUT)   :: FLBOR
00820       TYPE(BIEF_OBJ), INTENT(IN)      :: VISC_S,VISC,PLUIE,GIVEN_FLUX
00821       TYPE(BIEF_MESH) :: MESH
00822         END SUBROUTINE
00823 !
00824         SUBROUTINE DCPLDU(B,A,MESH,COPY,LV)
00825           USE BIEF_DEF
00826            IMPLICIT NONE
00827           TYPE(BIEF_OBJ) , INTENT(INOUT) :: B
00828            TYPE(BIEF_OBJ) , INTENT(IN)    :: A
00829            TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
00830           LOGICAL        , INTENT(IN)    :: COPY
00831           INTEGER        , INTENT(IN)    :: LV
00832         END SUBROUTINE
00833 !
00834         SUBROUTINE DECLDU(B,A,MESH,COPY,LV)
00835           USE BIEF_DEF
00836           IMPLICIT NONE
00837           TYPE(BIEF_OBJ) , INTENT(INOUT) :: B
00838           TYPE(BIEF_OBJ) , INTENT(IN)    :: A
00839           TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
00840           LOGICAL        , INTENT(IN)    :: COPY
00841           INTEGER        , INTENT(IN)    :: LV
00842         END SUBROUTINE
00843 !
00844         SUBROUTINE DECVRT(TETA,SL,ZF,MESH)
00845           USE BIEF_DEF
00846           IMPLICIT NONE
00847           TYPE(BIEF_MESH), INTENT(IN)    :: MESH
00848           TYPE(BIEF_OBJ) , INTENT(INOUT) :: TETA
00849           TYPE(BIEF_OBJ) , INTENT(IN)    :: SL,ZF
00850         END SUBROUTINE
00851 !
00852         SUBROUTINE DECV11(TETA,SL,ZF,IKLE,NELEM,NELMAX)
00853           IMPLICIT NONE
00854           INTEGER         , INTENT(IN)  :: NELEM,NELMAX
00855           INTEGER         , INTENT(IN)  :: IKLE(NELMAX,*)
00856           DOUBLE PRECISION, INTENT(OUT) :: TETA(NELEM)
00857           DOUBLE PRECISION, INTENT(IN)  :: SL(*),ZF(*)
00858         END SUBROUTINE
00859 !
00860         SUBROUTINE DECV21(TETA,SL,ZF,IKLE,NELEM,NELMAX)
00861           IMPLICIT NONE
00862           INTEGER         , INTENT(IN)  :: NELEM,NELMAX
00863           INTEGER         , INTENT(IN)  :: IKLE(NELMAX,*)
00864           DOUBLE PRECISION, INTENT(OUT) :: TETA(NELEM)
00865           DOUBLE PRECISION, INTENT(IN)  :: SL(*),ZF(*)
00866         END SUBROUTINE
00867 !
00868         SUBROUTINE DERIVE
00869      &(U,V,W,DT,AT,X,Y,Z,IKLE,IFABOR,LT,IELM,IELMU,NDP,NPOIN,NPOIN2,
00870      & NELEM,NELMAX,SURDET,XFLOT,YFLOT,ZFLOT,
00871      & SHPFLO,SHZFLO,TAGFLO,ELTFLO,ETAFLO,
00872      & NFLOT,NFLOT_MAX,FLOPRD,MESH,UL,
00873      & ISUB,DX,DY,DZ,ELTBUF,SHPBUF,SHZBUF,SIZEBUF,STOCHA,VISC,
00874      & AALGAE,DALGAE,RALGAE,EALGAE,ALGTYP,AK,EP,H)
00875       USE BIEF_DEF
00876       IMPLICIT NONE
00877       INTEGER         , INTENT(IN)    :: NPOIN,LT,IELM,IELMU,NDP,NELEM
00878       INTEGER         , INTENT(IN)    :: FLOPRD,NELMAX,UL,SIZEBUF,NPOIN2
00879       INTEGER         , INTENT(IN)    :: NFLOT_MAX,STOCHA
00880       INTEGER         , INTENT(INOUT) :: NFLOT
00881       DOUBLE PRECISION, INTENT(IN)    :: DT,AT
00882       DOUBLE PRECISION, INTENT(IN)    :: U(NPOIN),V(NPOIN),W(NPOIN)
00883       DOUBLE PRECISION, INTENT(IN)    :: X(NPOIN),Y(NPOIN),Z(NPOIN)
00884       INTEGER         , INTENT(IN)    :: IKLE(NELMAX,NDP)
00885       INTEGER         , INTENT(IN)    :: IFABOR(NELMAX,NDP)
00886       DOUBLE PRECISION, INTENT(IN)    :: SURDET(NELEM)
00887       DOUBLE PRECISION, INTENT(INOUT) :: XFLOT(NFLOT_MAX),DX(NFLOT_MAX)
00888       DOUBLE PRECISION, INTENT(INOUT) :: YFLOT(NFLOT_MAX),DY(NFLOT_MAX)
00889       DOUBLE PRECISION, INTENT(INOUT) :: ZFLOT(NFLOT_MAX),DZ(NFLOT_MAX)
00890       INTEGER         , INTENT(INOUT) :: TAGFLO(NFLOT_MAX)
00891       INTEGER         , INTENT(INOUT) :: ELTFLO(NFLOT_MAX)
00892       INTEGER         , INTENT(INOUT) :: ETAFLO(NFLOT_MAX)
00893       INTEGER         , INTENT(INOUT) :: ELTBUF(SIZEBUF)
00894       INTEGER         , INTENT(INOUT) :: ISUB(NFLOT_MAX)
00895       DOUBLE PRECISION, INTENT(INOUT) :: SHPFLO(NDP,NFLOT_MAX)
00896       DOUBLE PRECISION, INTENT(INOUT) :: SHZFLO(NFLOT_MAX)
00897       DOUBLE PRECISION, INTENT(INOUT) :: SHPBUF(NDP,SIZEBUF)
00898       DOUBLE PRECISION, INTENT(INOUT) :: SHZBUF(SIZEBUF)
00899       TYPE(BIEF_OBJ)  , INTENT(IN)    :: VISC
00900       TYPE(BIEF_MESH) , INTENT(INOUT) :: MESH
00901       LOGICAL         , OPTIONAL, INTENT(IN) :: AALGAE
00902       DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: AK(NPOIN),EP(NPOIN)
00903       DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: H(NPOIN)
00904       DOUBLE PRECISION, OPTIONAL, INTENT(IN) :: DALGAE,RALGAE,EALGAE
00905       INTEGER         , OPTIONAL, INTENT(IN) :: ALGTYP
00906         END SUBROUTINE
00907 !
00908         SUBROUTINE DERLAG
00909      &(U,V,DT,X,Y,LT,IELM,IELMU,NDP,NPOIN,NELEM,NELMAX,XLAG,YLAG,DX,DY,
00910      & NSP,SHPLAG,DEBLAG,FINLAG,ELTLAG,NLAG,RESUX,RESUY,ISPDONE,MESH)
00911       USE BIEF_DEF
00912       IMPLICIT NONE
00913       INTEGER         , INTENT(IN)    :: NPOIN,LT,IELM,NDP,NELEM,NLAG
00914       INTEGER         , INTENT(IN)    :: NELMAX,IELMU
00915       DOUBLE PRECISION, INTENT(IN)    :: U(NPOIN),V(NPOIN),DT
00916       DOUBLE PRECISION, INTENT(IN)    :: X(NPOIN),Y(NPOIN)
00917       DOUBLE PRECISION, INTENT(INOUT) :: XLAG(NPOIN,NLAG)
00918       DOUBLE PRECISION, INTENT(INOUT) :: YLAG(NPOIN,NLAG)
00919       INTEGER         , INTENT(INOUT) :: DEBLAG(NLAG),FINLAG(NLAG)
00920       INTEGER         , INTENT(INOUT) :: ELTLAG(NPOIN,NLAG)
00921       INTEGER         , INTENT(INOUT) :: ISPDONE(NPOIN)
00922       DOUBLE PRECISION, INTENT(INOUT) :: DX(NPOIN),DY(NPOIN)
00923       INTEGER         , INTENT(INOUT) :: NSP(NPOIN)
00924       DOUBLE PRECISION, INTENT(INOUT) :: RESUX(NPOIN),RESUY(NPOIN)
00925       DOUBLE PRECISION, INTENT(INOUT) :: SHPLAG(NDP,NPOIN,NLAG)
00926       TYPE(BIEF_MESH) , INTENT(INOUT) :: MESH
00927         END SUBROUTINE
00928 !
00929         SUBROUTINE DES11
00930      &(X, XA1,XA2,XA3,IKLE1,IKLE2,IKLE3,NELEM,NELMAX,NPOIN,LV)
00931       IMPLICIT NONE
00932       INTEGER          , INTENT(IN)    :: NPOIN,NELEM,NELMAX,LV
00933       DOUBLE PRECISION , INTENT(INOUT) :: X(NPOIN)
00934       DOUBLE PRECISION , INTENT(IN)    :: XA1(NELMAX)
00935       DOUBLE PRECISION , INTENT(IN)    :: XA2(NELMAX)
00936       DOUBLE PRECISION , INTENT(IN)    :: XA3(NELMAX)
00937       INTEGER          , INTENT(IN)    :: IKLE1(NELMAX)
00938       INTEGER          , INTENT(IN)    :: IKLE2(NELMAX)
00939       INTEGER          , INTENT(IN)    :: IKLE3(NELMAX)
00940         END SUBROUTINE
00941 !
00942         SUBROUTINE DES21
00943      &(X, XA1,XA2,XA3,XA4,XA5,XA6 , IKLE1,IKLE2,IKLE3,IKLE4,
00944      & NELEM,NELMAX,NPOIN,LV)
00945       IMPLICIT NONE
00946       INTEGER          , INTENT(IN)    :: NPOIN,NELEM,NELMAX,LV
00947       DOUBLE PRECISION , INTENT(INOUT) :: X(NPOIN)
00948       DOUBLE PRECISION , INTENT(IN)    :: XA1(NELMAX)
00949       DOUBLE PRECISION , INTENT(IN)    :: XA2(NELMAX)
00950       DOUBLE PRECISION , INTENT(IN)    :: XA3(NELMAX)
00951       DOUBLE PRECISION , INTENT(IN)    :: XA4(NELMAX)
00952       DOUBLE PRECISION , INTENT(IN)    :: XA5(NELMAX)
00953       DOUBLE PRECISION , INTENT(IN)    :: XA6(NELMAX)
00954       INTEGER          , INTENT(IN)    :: IKLE1(NELMAX)
00955       INTEGER          , INTENT(IN)    :: IKLE2(NELMAX)
00956       INTEGER          , INTENT(IN)    :: IKLE3(NELMAX)
00957       INTEGER          , INTENT(IN)    :: IKLE4(NELMAX)
00958         END SUBROUTINE
00959 !
00960         SUBROUTINE DES41
00961      &(X, XA1 ,XA2 ,XA3 ,XA4 ,XA5 ,
00962      &    XA6 ,XA7 ,XA8 ,XA9 ,XA10,
00963      &    XA11,XA12,XA13,XA14,XA15,
00964      &    IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,
00965      &    NELEM,NELMAX,NPOIN,LV)
00966       IMPLICIT NONE
00967       INTEGER          , INTENT(IN)    :: NPOIN,NELEM,NELMAX,LV
00968       DOUBLE PRECISION , INTENT(INOUT) :: X(NPOIN)
00969       DOUBLE PRECISION , INTENT(IN)    :: XA1(NELMAX)
00970       DOUBLE PRECISION , INTENT(IN)    :: XA2(NELMAX)
00971       DOUBLE PRECISION , INTENT(IN)    :: XA3(NELMAX)
00972       DOUBLE PRECISION , INTENT(IN)    :: XA4(NELMAX)
00973       DOUBLE PRECISION , INTENT(IN)    :: XA5(NELMAX)
00974       DOUBLE PRECISION , INTENT(IN)    :: XA6(NELMAX)
00975       DOUBLE PRECISION , INTENT(IN)    :: XA7(NELMAX)
00976       DOUBLE PRECISION , INTENT(IN)    :: XA8(NELMAX)
00977       DOUBLE PRECISION , INTENT(IN)    :: XA9(NELMAX)
00978       DOUBLE PRECISION , INTENT(IN)    :: XA10(NELMAX)
00979       DOUBLE PRECISION , INTENT(IN)    :: XA11(NELMAX)
00980       DOUBLE PRECISION , INTENT(IN)    :: XA12(NELMAX)
00981       DOUBLE PRECISION , INTENT(IN)    :: XA13(NELMAX)
00982       DOUBLE PRECISION , INTENT(IN)    :: XA14(NELMAX)
00983       DOUBLE PRECISION , INTENT(IN)    :: XA15(NELMAX)
00984       INTEGER          , INTENT(IN)    :: IKLE1(NELMAX)
00985       INTEGER          , INTENT(IN)    :: IKLE2(NELMAX)
00986       INTEGER          , INTENT(IN)    :: IKLE3(NELMAX)
00987       INTEGER          , INTENT(IN)    :: IKLE4(NELMAX)
00988       INTEGER          , INTENT(IN)    :: IKLE5(NELMAX)
00989       INTEGER          , INTENT(IN)    :: IKLE6(NELMAX)
00990         END SUBROUTINE
00991 !
00992         SUBROUTINE DESCEN
00993      &(X, XA,TYPEXA,B,IKLE,NELEM,NELMAX,NPOIN,IELM,DITR,COPY,LV)
00994       IMPLICIT NONE
00995       INTEGER         , INTENT(IN)    :: IELM,NPOIN,NELEM,NELMAX,LV
00996       INTEGER         , INTENT(IN)    :: IKLE(NELMAX,*)
00997       DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
00998       DOUBLE PRECISION, INTENT(IN)    :: XA(NELMAX,*),B(NPOIN)
00999       CHARACTER(LEN=1), INTENT(IN)    :: TYPEXA,DITR
01000       LOGICAL         , INTENT(IN)    :: COPY
01001         END SUBROUTINE
01002 !
01003         SUBROUTINE DESSEG
01004      &(X, XA,TYPEXA,B,GLOSEG,NSEG,NPOIN,DITR,COPY)
01005       USE BIEF_DEF
01006       IMPLICIT NONE
01007       INTEGER         , INTENT(IN)    :: NPOIN,NSEG
01008       INTEGER         , INTENT(IN)    :: GLOSEG(NSEG,2)
01009       DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
01010       DOUBLE PRECISION, INTENT(IN)    :: XA(NSEG,*),B(NPOIN)
01011       CHARACTER(LEN=1), INTENT(IN)    :: TYPEXA,DITR
01012       LOGICAL         , INTENT(IN)    :: COPY
01013         END SUBROUTINE
01014 !
01015         SUBROUTINE DIFFCL
01016      &(LITBOR,TTILD,TBOR,NBOR,ICONV,NPOIN,NPTFR)
01017       IMPLICIT NONE
01018       INTEGER, INTENT(IN)             :: NPOIN,NPTFR,ICONV
01019       INTEGER, INTENT(IN)             :: NBOR(NPTFR)
01020       INTEGER, INTENT(IN)             :: LITBOR(NPTFR)
01021       DOUBLE PRECISION, INTENT(IN)    :: TTILD(NPOIN)
01022       DOUBLE PRECISION, INTENT(INOUT) :: TBOR(NPTFR)
01023         END SUBROUTINE
01024 !
01025         SUBROUTINE DIFFIN
01026      &(MASKTR,LIMTRA,LITBOR,CLT,U,V,XNEBOR,YNEBOR,NBOR,
01027      & NPTFR,KENT,KSORT,KLOG,KNEU,KDIR,KDDL,
01028      & ICONV,NELBOR,NPOIN,NELMAX,MSK,MASKEL,
01029      & NFRLIQ,THOMFR,FRTYPE,TN,TBOR,MESH,NUMLIQ,IKLBOR,NELEB,NELEBX)
01030       USE BIEF_DEF
01031       IMPLICIT NONE
01032       TYPE(BIEF_OBJ), INTENT(INOUT) :: MASKTR,TBOR
01033       TYPE(BIEF_OBJ), INTENT(IN)    :: TN
01034       INTEGER, INTENT(IN)    :: NELEB,NELEBX
01035       INTEGER, INTENT(IN)    :: NPOIN,NPTFR,NELMAX,ICONV,NFRLIQ
01036       INTEGER, INTENT(IN)    :: LITBOR(NPTFR),NBOR(NPTFR)
01037       INTEGER, INTENT(INOUT) :: LIMTRA(NPTFR),CLT(NPTFR)
01038       INTEGER, INTENT(IN)    :: IKLBOR(NELEBX,2)
01039       INTEGER, INTENT(IN)    :: KENT,KSORT,KLOG,KDIR,KDDL,KNEU
01040       INTEGER, INTENT(IN)    :: NELBOR(NELEBX),NUMLIQ(NPTFR)
01041       INTEGER, INTENT(IN)    :: FRTYPE(NFRLIQ)
01042       DOUBLE PRECISION, INTENT(IN) :: U(NPOIN), V(NPOIN)
01043       DOUBLE PRECISION, INTENT(IN) :: XNEBOR(NPTFR), YNEBOR(NPTFR)
01044       DOUBLE PRECISION, INTENT(IN) :: MASKEL(NELMAX)
01045       LOGICAL, INTENT(IN) :: MSK,THOMFR
01046       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
01047         END SUBROUTINE
01048 !
01049         INTEGER FUNCTION BIEF_DIM1_EXT(IELM1,IELM2,STO,TYPEXT,MESH)
01050           USE BIEF_DEF
01051           IMPLICIT NONE
01052           INTEGER, INTENT(IN) :: IELM1,IELM2,STO
01053           CHARACTER(LEN=1), INTENT(IN) :: TYPEXT
01054           TYPE(BIEF_MESH) , INTENT(IN) :: MESH
01055         END FUNCTION
01056 !
01057         INTEGER FUNCTION BIEF_DIM2_EXT(IELM1,IELM2,STO,TYPEXT,MESH)
01058           USE BIEF_DEF
01059           IMPLICIT NONE
01060           INTEGER, INTENT(IN) :: IELM1,IELM2,STO
01061           CHARACTER(LEN=1), INTENT(IN) :: TYPEXT
01062           TYPE(BIEF_MESH) , INTENT(IN) :: MESH
01063         END FUNCTION
01064 !
01065         INTEGER FUNCTION DIMENS( IELM )
01066           IMPLICIT NONE
01067           INTEGER, INTENT(IN) :: IELM
01068         END FUNCTION
01069 !
01070         SUBROUTINE DIRAUX
01071      & ( X , Y , Z , W , F , INDIC , CRITER , MESH )
01072       USE BIEF_DEF
01073       IMPLICIT NONE
01074       TYPE(BIEF_OBJ) , INTENT(INOUT) :: X,W,F
01075       TYPE(BIEF_OBJ) , INTENT(IN)    :: Y,Z
01076       INTEGER        , INTENT(IN)    :: INDIC(*),CRITER
01077       TYPE(BIEF_MESH), INTENT(IN)    :: MESH
01078         END SUBROUTINE
01079 !
01080         SUBROUTINE DIRI01(F, S, SM ,FBOR,LIMDIR,
01081      &                    WORK1,WORK2,MESH,KDIR,MSK,MASKPT)
01082           USE BIEF_DEF
01083           IMPLICIT NONE
01084           TYPE(BIEF_OBJ), INTENT(INOUT) :: F,S,SM,WORK1,WORK2
01085           TYPE(BIEF_OBJ), INTENT(IN)    :: FBOR,MASKPT
01086           INTEGER, INTENT(IN) :: LIMDIR(*), KDIR
01087           TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
01088           LOGICAL, INTENT(IN) :: MSK
01089         END SUBROUTINE
01090 !
01091         SUBROUTINE DIRI04(X1,X2,
01092      &                    A11,A12,A21,A22,
01093      &                    SM1,SM2,T1,T2,T3,T4,
01094      &                    XBOR1,XBOR2,LIDIR1,LIDIR2,
01095      &                    MESH,KDIR,MSK,MASKPT)
01096           USE BIEF_DEF
01097           IMPLICIT NONE
01098           TYPE(BIEF_OBJ), INTENT(INOUT) ::X1,X2,SM1,SM2,T1,T2,T3,T4
01099           TYPE(BIEF_OBJ), INTENT(INOUT) ::A11,A12,A21,A22
01100           TYPE(BIEF_OBJ), INTENT(IN)    ::XBOR1,XBOR2,MASKPT
01101           INTEGER, INTENT(IN)           ::KDIR,LIDIR1(*),LIDIR2(*)
01102           TYPE(BIEF_MESH), INTENT(INOUT)::MESH
01103           LOGICAL, INTENT(IN)           ::MSK
01104         END SUBROUTINE
01105 !
01106         SUBROUTINE DIRI09(X1,X2,X3,
01107      &                    A11,A12,A13,A21,A22,A23,A31,A32,A33,
01108      &                    SM1,SM2,SM3,T1,T2,T3,T4,T5,T6,
01109      &                    XBOR1,XBOR2,XBOR3,LIDIR1,LIDIR2,LIDIR3,
01110      &                    MESH,KDIR,MSK,MASKPT)
01111           USE BIEF_DEF
01112           IMPLICIT NONE
01113           TYPE(BIEF_OBJ), INTENT(INOUT) :: X1,X2,X3,SM1,SM2,SM3
01114           TYPE(BIEF_OBJ), INTENT(INOUT) :: T1,T2,T3,T4,T5,T6
01115           TYPE(BIEF_OBJ), INTENT(INOUT) :: A11,A12,A13,A21,A22
01116           TYPE(BIEF_OBJ), INTENT(INOUT) :: A23,A31,A32,A33
01117           TYPE(BIEF_OBJ), INTENT(IN)    :: XBOR1,XBOR2,XBOR3,MASKPT
01118           INTEGER, INTENT(IN)           :: LIDIR1(*),LIDIR2(*),LIDIR3(*)
01119           INTEGER, INTENT(IN)           :: KDIR
01120           TYPE(BIEF_MESH), INTENT(INOUT):: MESH
01121           LOGICAL, INTENT(IN)           :: MSK
01122         END SUBROUTINE
01123 !
01124         SUBROUTINE DIRICH(F,S,SM,FBOR,LIMDIR,WORK,MESH,
01125      &                    KDIR,MSK,MASKPT)
01126           USE BIEF_DEF
01127           IMPLICIT NONE
01128           TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
01129           INTEGER        , INTENT(IN)    :: KDIR,LIMDIR(MESH%NPTFRX,*)
01130           LOGICAL        , INTENT(IN)    :: MSK
01131           TYPE(BIEF_OBJ) , INTENT(INOUT) :: WORK
01132           TYPE(BIEF_OBJ) , INTENT(INOUT) :: F,SM,S
01133           TYPE(BIEF_OBJ) , INTENT(IN)    :: FBOR,MASKPT
01134         END SUBROUTINE
01135 !
01136         SUBROUTINE DLDU11(DB,XB,TYPDIA,XA,TYPEXA,
01137      &                    IKLE,NELEM,NELMAX,NPOIN,W,COPY,LV)
01138           IMPLICIT NONE
01139       INTEGER, INTENT(IN)           :: NELEM,NELMAX,LV,NPOIN
01140       DOUBLE PRECISION, INTENT(OUT) :: DB(NPOIN),XB(NELMAX,*)
01141       DOUBLE PRECISION, INTENT(IN)  :: XA(NELMAX,*)
01142       CHARACTER(LEN=1), INTENT(IN)  :: TYPDIA,TYPEXA
01143       INTEGER, INTENT(IN)           :: IKLE(NELMAX,*)
01144       DOUBLE PRECISION, INTENT(OUT) :: W(NELMAX,3)
01145       LOGICAL, INTENT(IN)           :: COPY
01146         END SUBROUTINE
01147 !
01148         SUBROUTINE DLDU21(DB,XB,TYPDIA,XA,TYPEXA,
01149      &                    IKLE,NELEM,NELMAX,NPOIN,W,COPY,LV)
01150         IMPLICIT NONE
01151       INTEGER, INTENT(IN)           :: NELEM,NELMAX,LV,NPOIN
01152       DOUBLE PRECISION, INTENT(OUT) :: DB(NPOIN),XB(NELMAX,*)
01153       DOUBLE PRECISION, INTENT(IN)  :: XA(NELMAX,*)
01154       CHARACTER(LEN=1), INTENT(IN)  :: TYPDIA,TYPEXA
01155       INTEGER, INTENT(IN)           :: IKLE(NELMAX,*)
01156       DOUBLE PRECISION, INTENT(OUT) :: W(NELMAX,4)
01157       LOGICAL, INTENT(IN)           :: COPY
01158         END SUBROUTINE
01159 !
01160         SUBROUTINE DLDU41(DB,XB,TYPDIA,XA,TYPEXA,
01161      &                    IKLE,NELEM,NELMAX,NPOIN,W,COPY,LV)
01162         IMPLICIT NONE
01163       INTEGER, INTENT(IN)           :: NELEM,NELMAX,LV,NPOIN
01164       DOUBLE PRECISION, INTENT(OUT) :: DB(NPOIN),XB(NELMAX,*)
01165       DOUBLE PRECISION, INTENT(IN)  :: XA(NELMAX,*)
01166       CHARACTER(LEN=1), INTENT(IN)  :: TYPDIA,TYPEXA
01167       INTEGER, INTENT(IN)           :: IKLE(NELMAX,*)
01168       DOUBLE PRECISION, INTENT(OUT) :: W(NELMAX,6)
01169       LOGICAL, INTENT(IN)           :: COPY
01170         END SUBROUTINE
01171 !
01172         SUBROUTINE DLDUSEG
01173      &(DB,XB,TYPDIA,XA,TYPEXA,GLOSEG,NSEG,NPOIN,COPY)
01174       IMPLICIT NONE
01175       INTEGER, INTENT(IN)           :: NSEG,NPOIN
01176       DOUBLE PRECISION, INTENT(OUT) :: DB(NPOIN),XB(NSEG,*)
01177       DOUBLE PRECISION, INTENT(IN)  :: XA(NSEG,*)
01178       CHARACTER(LEN=1), INTENT(IN)  :: TYPDIA,TYPEXA
01179       INTEGER, INTENT(IN)           :: GLOSEG(NSEG,2)
01180       LOGICAL, INTENT(IN)           :: COPY
01181         END SUBROUTINE
01182 !
01183         DOUBLE PRECISION FUNCTION DMO(T)
01184           IMPLICIT NONE
01185           DOUBLE PRECISION, INTENT(IN) :: T
01186         END FUNCTION
01187 !
01188         DOUBLE PRECISION FUNCTION DOT(NPOIN,X,Y)
01189           IMPLICIT NONE
01190           INTEGER, INTENT(IN) :: NPOIN
01191           DOUBLE PRECISION, INTENT(IN) :: X(NPOIN),Y(NPOIN)
01192         END FUNCTION
01193 !
01194         DOUBLE PRECISION FUNCTION DOTS( X , Y )
01195           USE BIEF_DEF
01196           IMPLICIT NONE
01197           TYPE(BIEF_OBJ), INTENT(IN) :: X,Y
01198         END FUNCTION
01199 !
01200         SUBROUTINE DOUBLE_TO_INTEGER(X,IX,N,QT,NSUM)
01201           USE DECLARATIONS_SPECIAL
01202           IMPLICIT NONE
01203           INTEGER         , INTENT(IN)    :: N,NSUM
01204           INTEGER(KIND=K8), INTENT(INOUT) :: IX(N)
01205           DOUBLE PRECISION, INTENT(IN)    :: X(N)
01206           DOUBLE PRECISION, INTENT(INOUT) :: QT
01207         END SUBROUTINE
01208 !
01209         SUBROUTINE DOWNUP(X, A,B ,DITR,MESH)
01210           USE BIEF_DEF
01211           IMPLICIT NONE
01212           TYPE(BIEF_OBJ), INTENT(INOUT) :: X
01213           TYPE(BIEF_OBJ), INTENT(IN)    :: A,B
01214           TYPE(BIEF_MESH), INTENT(IN)   :: MESH
01215           CHARACTER(LEN=1), INTENT(IN)  :: DITR
01216         END SUBROUTINE
01217 !
01218         SUBROUTINE DWNUP1(X, A,B ,DITR,MESH)
01219           USE BIEF_DEF
01220           IMPLICIT NONE
01221           TYPE(BIEF_OBJ), INTENT(INOUT) :: X
01222           TYPE(BIEF_OBJ), INTENT(IN)    :: B,A
01223           TYPE(BIEF_MESH), INTENT(IN)   :: MESH
01224           CHARACTER(LEN=1), INTENT(IN)  :: DITR
01225         END SUBROUTINE
01226 !
01227         SUBROUTINE ECRGEO(X,Y,NPOIN,NBOR,NFIC,NVAR,TEXTE,VARCLA,NVARCL,
01228      & TITRE,SORLEO,NSOR,IKLE,NELEM,NPTFR,NDP,DATE,TIME,
01229      & NCSIZE,NPTIR,KNOLG,NPLAN,I3,I4)
01230       IMPLICIT NONE
01231       INTEGER, INTENT(IN) :: NPOIN,NFIC,NVARCL,NSOR,NELEM,NPTFR,NDP
01232       INTEGER, INTENT(OUT)          :: NVAR
01233       DOUBLE PRECISION, INTENT(IN)  :: X(*),Y(*)
01234 !                                              IKLE(NELEM,NDP)
01235       INTEGER, INTENT(IN)           :: NBOR(*),IKLE(*)
01236       CHARACTER(LEN=32), INTENT(IN) :: TEXTE(*),VARCLA(NVARCL)
01237 !                                            NSOR      NSOR+NVARCL
01238       CHARACTER(LEN=72), INTENT(IN) :: TITRE
01239       LOGICAL, INTENT(IN)           :: SORLEO(*)
01240       INTEGER, INTENT(IN)           :: NCSIZE,NPTIR
01241       INTEGER, INTENT(IN)           :: TIME(3),DATE(3)
01242       INTEGER, INTENT(IN)           :: KNOLG(NPOIN)
01243       INTEGER, INTENT(IN), OPTIONAL :: NPLAN,I3,I4
01244         END SUBROUTINE
01245 !
01246         SUBROUTINE ECRI2(X,I,C,NVAL,TYPE,CANAL,STD,ISTAT)
01247           IMPLICIT NONE
01248           INTEGER, INTENT(IN) :: NVAL,CANAL
01249           DOUBLE PRECISION, INTENT(IN) :: X(NVAL)
01250           INTEGER, INTENT(IN) :: I(NVAL)
01251           CHARACTER*(*), INTENT(IN) :: TYPE,STD,C
01252           INTEGER, INTENT(OUT) :: ISTAT
01253         END SUBROUTINE
01254 !
01255         SUBROUTINE ELAPSE(TDEB,TFIN)
01256           IMPLICIT NONE
01257           INTEGER, INTENT(IN) :: TDEB(8),TFIN(8)
01258         END SUBROUTINE
01259 !
01260         SUBROUTINE ELEB3DT
01261      &(IKLE3,NBOR,NELBOR,NELBOR2D,IKLBOR,NELEB,NELEBX,NULONE,
01262      & NELEM2,NPOIN2,NPLAN,NETAGE,NPTFR,IKLBOR2D,NELEB2D,NELEBX2D)
01263       IMPLICIT NONE
01264       INTEGER, INTENT(IN)    :: NELEM2,NPOIN2,NPLAN,NETAGE,NPTFR
01265       INTEGER, INTENT(IN)    :: NELEBX,NELEB2D,NELEBX2D
01266       INTEGER, INTENT(INOUT) :: NELEB
01267       INTEGER, INTENT(INOUT) :: IKLE3(NELEM2,3,NETAGE,4)
01268       INTEGER, INTENT(INOUT) :: IKLBOR(NELEBX,3)
01269       INTEGER, INTENT(IN)    :: IKLBOR2D(NELEBX2D,2),NELBOR2D(NELEBX2D)
01270       INTEGER, INTENT(INOUT) :: NULONE(NELEBX,3),NELBOR(NELEBX)
01271       INTEGER, INTENT(INOUT) :: NBOR(NPTFR*NPLAN)
01272         END SUBROUTINE
01273 !
01274         SUBROUTINE ELEB3D
01275      &(IKLE3,NBOR,NELBOR,IKLBOR,NELEB,NELEBX,NULONE,
01276      & NELEM2,NPOIN2,NPLAN,NETAGE,NPTFR)
01277       IMPLICIT NONE
01278       INTEGER, INTENT(IN)    :: NELEM2,NPOIN2,NPLAN,NETAGE,NPTFR
01279       INTEGER, INTENT(IN)    :: NELEBX
01280       INTEGER, INTENT(INOUT) :: NELEB
01281       INTEGER, INTENT(INOUT) :: IKLE3(NELEM2,NETAGE,6)
01282       INTEGER, INTENT(INOUT) :: IKLBOR(NELEBX,4),NULONE(NELEBX,4)
01283       INTEGER, INTENT(INOUT) :: NELBOR(NELEBX),NBOR(NPTFR*NPLAN)
01284         END SUBROUTINE
01285 !
01286         SUBROUTINE ELEBD31
01287      &(NELBOR,NULONE,IKLBOR,IFABOR,NBOR,IKLE,
01288      & NELEM,NELEB,NELMAX,NPOIN,NPTFR,IELM)
01289       IMPLICIT NONE
01290       INTEGER, INTENT(IN)    :: NELEM,NELEB,NELMAX
01291       INTEGER, INTENT(IN)    :: NPOIN,NPTFR,IELM
01292       INTEGER, INTENT(IN)    :: NBOR(NPTFR)
01293       INTEGER, INTENT(IN)    :: IFABOR(NELMAX,4)
01294       INTEGER, INTENT(IN)    :: IKLE(NELEM,4)
01295       INTEGER, INTENT(OUT)   :: NELBOR(NELEB),NULONE(NELEB,3)
01296       INTEGER, INTENT(OUT)   :: IKLBOR(NELEB,3)
01297         END SUBROUTINE
01298 !
01299         SUBROUTINE ELEBD
01300      &(NELBOR,NULONE,KP1BOR,IFABOR,NBOR,IKLE,SIZIKL,IKLBOR,NELEM,NELMAX,
01301      & NPOIN,NPTFR,IELM,LIHBOR,KLOG,IFANUM,OPTASS,ISEG,T1,T2,T3,NELEBX,
01302      & NELEB)
01303       IMPLICIT NONE
01304       INTEGER, INTENT(IN)    :: KLOG,NELMAX,NELEM,SIZIKL,NELEBX
01305       INTEGER, INTENT(INOUT) :: NELEB
01306       INTEGER, INTENT(IN)    :: NPOIN,NPTFR,IELM,OPTASS
01307       INTEGER, INTENT(INOUT) :: NELBOR(NELEBX),NULONE(NELEBX,2)
01308       INTEGER, INTENT(INOUT) :: KP1BOR(NPTFR,2)
01309       INTEGER, INTENT(INOUT) :: NBOR(*)
01310       INTEGER, INTENT(INOUT) :: IFABOR(NELMAX,*)
01311       INTEGER, INTENT(IN)    :: IKLE(SIZIKL,*)
01312       INTEGER, INTENT(IN)    :: LIHBOR(NPTFR)
01313       INTEGER, INTENT(INOUT) :: IKLBOR(NELEBX,2)
01314       INTEGER, INTENT(INOUT) :: IFANUM(NELMAX,*)
01315       INTEGER, INTENT(IN)    :: ISEG(NPTFR)
01316       INTEGER, INTENT(INOUT) :: T1(NPOIN),T2(NPOIN),T3(NPOIN)
01317         END SUBROUTINE
01318 !
01319         LOGICAL FUNCTION BIEF_EOF(LUNIT)
01320           IMPLICIT NONE
01321           INTEGER, INTENT(IN) :: LUNIT
01322         END FUNCTION
01323 !
01324         SUBROUTINE EQUNOR(X, A,B , MESH, D,AD,AG,G,R, CFG,INFOGR,AUX)
01325           USE BIEF_DEF
01326           IMPLICIT NONE
01327       TYPE(SLVCFG), INTENT(INOUT)    :: CFG
01328       TYPE(BIEF_OBJ), INTENT(INOUT)  :: B
01329       TYPE(BIEF_OBJ), INTENT(INOUT)  :: D,AD,G,AG,R,X
01330       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
01331       TYPE(BIEF_OBJ), INTENT(IN)     :: A
01332       TYPE(BIEF_OBJ), INTENT(INOUT)  :: AUX
01333       LOGICAL, INTENT(IN)            :: INFOGR
01334         END SUBROUTINE
01335 !
01336         SUBROUTINE ERRMAX(X1,X2,ERR,IERR)
01337       USE BIEF_DEF
01338       IMPLICIT NONE
01339       INTEGER          , INTENT(OUT) :: IERR
01340       DOUBLE PRECISION , INTENT(OUT) :: ERR
01341       TYPE (BIEF_OBJ)  , INTENT(IN)  :: X1,X2
01342         END SUBROUTINE
01343 !
01344         SUBROUTINE ERRMIN(X, A,B , MESH, D,AD,G,R, CFG,INFOGR,AUX)
01345           USE BIEF_DEF
01346           IMPLICIT NONE
01347       TYPE(SLVCFG), INTENT(INOUT)    :: CFG
01348       TYPE(BIEF_OBJ), INTENT(INOUT)  :: B
01349       TYPE(BIEF_OBJ), INTENT(INOUT)  :: D,AD,G,R,X
01350       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
01351       TYPE(BIEF_OBJ), INTENT(IN)     :: A
01352       TYPE(BIEF_OBJ), INTENT(INOUT)  :: AUX
01353       LOGICAL, INTENT(IN)            :: INFOGR
01354         END SUBROUTINE
01355 !
01356         SUBROUTINE FASP(X,Y,ZF,NPOIN,XRELV,YRELV,ZRELV,NP,NBOR,KP1BOR,
01357      &                  NPTFR,DM)
01358         IMPLICIT NONE
01359       INTEGER, INTENT(IN) :: NPOIN,NP,NPTFR
01360       INTEGER, INTENT(IN) :: NBOR(NPTFR),KP1BOR(NPTFR)
01361       DOUBLE PRECISION, INTENT(IN) :: X(NPOIN),Y(NPOIN),DM
01362       DOUBLE PRECISION, INTENT(IN) :: XRELV(NP),YRELV(NP),ZRELV(NP)
01363       DOUBLE PRECISION, INTENT(OUT) :: ZF(NPOIN)
01364         END SUBROUTINE
01365 !
01366         SUBROUTINE FILPOL( F , C , XSOM , YSOM , NSOM , MESH )
01367       USE BIEF_DEF
01368       IMPLICIT NONE
01369       INTEGER, INTENT(IN) :: NSOM
01370       DOUBLE PRECISION, INTENT(IN) :: C,XSOM(*),YSOM(*)
01371       TYPE(BIEF_OBJ), INTENT(INOUT) :: F
01372       TYPE(BIEF_MESH), INTENT(IN) :: MESH
01373         END SUBROUTINE
01374 !
01375         SUBROUTINE FILP10
01376      &( F , C , XSOM , YSOM , NSOM , X , Y , NELEM , NELMAX , IKLE )
01377       IMPLICIT NONE
01378       INTEGER, INTENT(IN) :: NSOM , NELEM , NELMAX
01379       DOUBLE PRECISION, INTENT(INOUT) :: F(*)
01380       DOUBLE PRECISION, INTENT(IN) :: X(*) , Y(*)
01381       DOUBLE PRECISION, INTENT(IN) :: XSOM(NSOM) , YSOM(NSOM) , C
01382       INTEGER, INTENT(IN) :: IKLE(NELMAX,3)
01383         END SUBROUTINE
01384 !
01385         SUBROUTINE FILP11( F , C , XSOM , YSOM , NSOM , X , Y , NPOIN )
01386         IMPLICIT NONE
01387         INTEGER, INTENT(IN) :: NSOM , NPOIN
01388         DOUBLE PRECISION, INTENT(INOUT) :: F(*)
01389         DOUBLE PRECISION, INTENT(IN) :: X(*) , Y(*)
01390         DOUBLE PRECISION, INTENT(IN) :: XSOM(NSOM) , YSOM(NSOM),C
01391         END SUBROUTINE
01392 !
01393         SUBROUTINE FILP12
01394      &(F,C,XSOM,YSOM,NSOM,X,Y,NPOIN,NELEM,NELMAX,IKLE)
01395       IMPLICIT NONE
01396       INTEGER, INTENT(IN) :: NSOM , NELEM , NELMAX , NPOIN
01397       DOUBLE PRECISION, INTENT(INOUT) :: F(*)
01398       DOUBLE PRECISION, INTENT(IN) :: X(*) , Y(*)
01399       DOUBLE PRECISION, INTENT(IN) :: XSOM(NSOM) , YSOM(NSOM) , C
01400       INTEGER, INTENT(IN) :: IKLE(NELMAX,4)
01401         END SUBROUTINE
01402 !
01403         SUBROUTINE FILTER
01404      &    (VEC,BLDMAT,T1,T2,A,FORMUL,XMUL,F,G,H,U,V,W,MESH,MSK,MASKEL,N)
01405           USE BIEF_DEF
01406           IMPLICIT NONE
01407           INTEGER, INTENT(IN)           :: N
01408           DOUBLE PRECISION, INTENT(IN)  :: XMUL
01409           LOGICAL, INTENT(IN)           :: BLDMAT,MSK
01410           CHARACTER(LEN=16), INTENT(IN) :: FORMUL
01411           TYPE(BIEF_MESH), INTENT(INOUT):: MESH
01412           TYPE(BIEF_OBJ), INTENT(INOUT) :: VEC,A,T1,T2
01413           TYPE(BIEF_OBJ), INTENT(IN)    :: F,G,H,U,V,W,MASKEL
01414         END SUBROUTINE
01415 !
01416         SUBROUTINE FIND_IN_SEL(RES,NAME,NFIC,FFORMAT,
01417      &                         W,OK,RECORD,NP,TIME)
01418           USE BIEF_DEF
01419           IMPLICIT NONE
01420           TYPE(BIEF_OBJ), INTENT(INOUT) :: RES
01421           CHARACTER(LEN=16), INTENT(IN) :: NAME
01422           LOGICAL, INTENT(OUT)          :: OK
01423           REAL, INTENT(INOUT)           :: W(*)
01424           INTEGER, INTENT(IN) :: NFIC
01425           INTEGER, INTENT(IN),  OPTIONAL          :: RECORD
01426           INTEGER, INTENT(OUT), OPTIONAL          :: NP
01427           DOUBLE PRECISION, INTENT(OUT), OPTIONAL :: TIME
01428           CHARACTER(LEN=8), INTENT(IN)  :: FFORMAT
01429         END SUBROUTINE
01430 !
01431         SUBROUTINE FLUX_MASK(FXMAT,NSEG,GLOSEG,SIZGLO,MASKPT)
01432           IMPLICIT NONE
01433           INTEGER, INTENT(IN)            ::NSEG,SIZGLO
01434           INTEGER, INTENT(IN)            ::GLOSEG(SIZGLO,2)
01435           DOUBLE PRECISION, INTENT(INOUT)::FXMAT(NSEG)
01436           DOUBLE PRECISION, INTENT(IN)   ::MASKPT(*)
01437         END SUBROUTINE
01438 !
01439         SUBROUTINE FLUXPR
01440      &(NSEC,CTRLSC,FLX,VOLNEG,VOLPOS,INFO,TPS,NSEG,NCSIZE,CUMFLO)
01441       IMPLICIT NONE
01442       INTEGER, INTENT(IN)          :: NSEC,NCSIZE
01443       INTEGER, INTENT(IN)          :: CTRLSC(*)
01444       INTEGER, INTENT(IN)          :: NSEG(NSEC)
01445       LOGICAL, INTENT(IN)          :: INFO,CUMFLO
01446       DOUBLE PRECISION, INTENT(IN) :: FLX(NSEC),TPS
01447       DOUBLE PRECISION, INTENT(IN) :: VOLNEG(NSEC),VOLPOS(NSEC)
01448         END SUBROUTINE
01449 !
01450         SUBROUTINE FLUX_EF_VF
01451      &(FLOW,PHIEL,NSEG,NELEM,ELTSEG,ORISEG,IKLE,INIFLO,IOPT,FN)
01452       USE BIEF_DEF
01453       IMPLICIT NONE
01454       INTEGER, INTENT(IN)             :: NSEG,IOPT,NELEM
01455       INTEGER, INTENT(IN)             :: ELTSEG(NELEM,3),ORISEG(NELEM,3)
01456       INTEGER, INTENT(IN)             :: IKLE(NELEM,3)
01457       DOUBLE PRECISION, INTENT(INOUT) :: FLOW(NSEG)
01458       DOUBLE PRECISION, INTENT(IN)    :: PHIEL(NELEM,3)
01459       LOGICAL, INTENT(IN)             :: INIFLO
01460       TYPE(BIEF_OBJ), INTENT(IN), OPTIONAL :: FN
01461         END SUBROUTINE
01462 !
01463         SUBROUTINE FLUX_EF_VF_2
01464      &(PHIEL,NELEM,IKLE,IOPT,NPOIN,FN,FI_I,FSTAR,H,SU,DDT)
01465       USE BIEF_DEF
01466       IMPLICIT NONE
01467       INTEGER, INTENT(IN)             :: IOPT,NELEM
01468       INTEGER, INTENT(IN)             :: IKLE(NELEM,3)
01469       INTEGER, INTENT(IN)             :: NPOIN
01470       DOUBLE PRECISION, INTENT(IN)    :: PHIEL(NELEM,3)
01471       TYPE(BIEF_OBJ), INTENT(IN)      :: FN
01472       DOUBLE PRECISION, INTENT(INOUT) :: FI_I(NPOIN)
01473       DOUBLE PRECISION, INTENT(IN)    :: FSTAR(NPOIN),H(NPOIN)
01474       DOUBLE PRECISION, INTENT(IN)    :: SU(NELEM),DDT
01475         END SUBROUTINE
01476 !
01477         SUBROUTINE FLUX_EF_VF_3D
01478      &(FLOW,W2D,W3D,NSEG2D,NSEG3D,NELEM2,NELEM3,MESH2D,INIFLO,
01479      & IOPT,SENS,IELM3,NPLAN,IKLE,NELMAX,KNOLG)
01480       USE BIEF_DEF
01481       IMPLICIT NONE
01482       INTEGER, INTENT(IN)             :: NSEG2D,NSEG3D,NELEM2,NELEM3
01483 !                                             *=NSEG2D*NPLAN+NPOIN2*NETAGE
01484       INTEGER, INTENT(IN)             :: IOPT,SENS,IELM3,NPLAN,NELMAX
01485       INTEGER, INTENT(IN)             :: IKLE(NELMAX,*),KNOLG(*)
01486       DOUBLE PRECISION, INTENT(INOUT) :: FLOW(NSEG3D)
01487 !                                                   6 IF IELM3=41
01488 !                                                   4 IF IELM3=51
01489       DOUBLE PRECISION, INTENT(IN)    :: W3D(NELEM3,*)
01490       DOUBLE PRECISION, INTENT(INOUT) :: W2D(NELEM2,3)
01491       LOGICAL, INTENT(IN)             :: INIFLO
01492       TYPE(BIEF_MESH), INTENT(INOUT)  :: MESH2D
01493         END SUBROUTINE
01494 !
01495         SUBROUTINE FOND(ZF,X,Y,NPOIN,NFON,NBOR,KP1BOR,NPTFR)
01496       USE BIEF_DEF
01497       IMPLICIT NONE
01498       INTEGER, INTENT(IN) :: NFON,NPOIN,NPTFR
01499       DOUBLE PRECISION, INTENT(OUT) :: ZF(NPOIN)
01500       DOUBLE PRECISION, INTENT(IN)  :: X(NPOIN),Y(NPOIN)
01501       INTEGER, INTENT(IN) :: NBOR(NPTFR),KP1BOR(NPTFR)
01502         END SUBROUTINE
01503 !
01504         SUBROUTINE FONSTR
01505      &(H,ZF,Z,CHESTR,NGEO,FFORMAT,NFON,NOMFON,MESH,FFON,LISTIN)
01506       USE BIEF_DEF
01507       IMPLICIT NONE
01508       TYPE(BIEF_OBJ), INTENT(INOUT) :: H,ZF,Z,CHESTR
01509       CHARACTER(LEN=72), INTENT(IN) :: NOMFON
01510       TYPE(BIEF_MESH), INTENT(IN)   :: MESH
01511       DOUBLE PRECISION, INTENT(IN)  :: FFON
01512       LOGICAL, INTENT(IN)           :: LISTIN
01513       INTEGER, INTENT(IN)           :: NGEO,NFON
01514       CHARACTER(LEN=8), INTENT(IN)  :: FFORMAT
01515         END SUBROUTINE
01516 !
01517         SUBROUTINE FRONT2
01518      &(NFRLIQ,NFRSOL,DEBLIQ,FINLIQ,DEBSOL,FINSOL,LIHBOR,LIUBOR,
01519      & X,Y,NBOR,KP1BOR,DEJAVU,NPOIN,NPTFR,KLOG,LISTIN,NUMLIQ,
01520      & MAXFRO)
01521       IMPLICIT NONE
01522       INTEGER, INTENT(IN) :: NPOIN,NPTFR,KLOG,MAXFRO
01523       INTEGER, INTENT(OUT) :: NFRLIQ,NFRSOL
01524       INTEGER, INTENT(OUT) :: DEBLIQ(MAXFRO),FINLIQ(MAXFRO)
01525       INTEGER, INTENT(OUT) :: DEBSOL(MAXFRO),FINSOL(MAXFRO)
01526       INTEGER , INTENT(IN) :: LIHBOR(NPTFR),LIUBOR(NPTFR)
01527       DOUBLE PRECISION, INTENT(IN) :: X(NPOIN) , Y(NPOIN)
01528       INTEGER, INTENT(IN) :: NBOR(NPTFR),KP1BOR(NPTFR)
01529       INTEGER, INTENT(OUT) :: DEJAVU(NPTFR)
01530       LOGICAL, INTENT(IN)  :: LISTIN
01531       INTEGER, INTENT(OUT) :: NUMLIQ(NPTFR)
01532         END SUBROUTINE
01533 !
01534         SUBROUTINE FROPRO
01535      &(NBOR,IKLE,NELEM,NELMAX,NPOIN,NPMAX,NPTFR,IELM,
01536      & IKLEM1,LIMVOI,OPTASS,PRODUC,MXPTVS,T1,
01537      & GLOSEG,SIZGLO,NSEG)
01538       IMPLICIT NONE
01539       INTEGER, INTENT(IN)  :: NELMAX,NPMAX,MXPTVS,NELEM
01540       INTEGER, INTENT(IN)  :: NPOIN,NPTFR,IELM,OPTASS,PRODUC
01541       INTEGER, INTENT(IN)  :: NSEG,SIZGLO
01542       INTEGER, INTENT(IN)  :: NBOR(*)
01543       INTEGER, INTENT(IN)  :: IKLE(NELMAX,*),GLOSEG(SIZGLO,2)
01544       INTEGER, INTENT(OUT) :: IKLEM1(NPMAX,MXPTVS,4,2)
01545       INTEGER, INTENT(OUT) :: LIMVOI(11,2)
01546       INTEGER, INTENT(OUT) :: T1(NPOIN)
01547         END SUBROUTINE
01548 !
01549         SUBROUTINE GEOELT(SURDET,SURFAC,XEL,YEL,NELEM,NELMAX,IELM)
01550       IMPLICIT NONE
01551       INTEGER, INTENT(IN) :: IELM,NELEM,NELMAX
01552       DOUBLE PRECISION, INTENT(OUT) :: SURDET(NELEM),SURFAC(NELEM)
01553       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,*),YEL(NELMAX,*)
01554         END SUBROUTINE
01555 !
01556         SUBROUTINE GETTRI
01557      &(M,MDIFF,TETA,MESH3D,NPLAN,NPOIN2,NSEG2D,IELM3,NELEM2)
01558       USE BIEF_DEF
01559       IMPLICIT NONE
01560       INTEGER, INTENT(IN) :: NPLAN,NPOIN2,NSEG2D,IELM3,NELEM2
01561       DOUBLE PRECISION, INTENT(IN)    :: TETA
01562       DOUBLE PRECISION, INTENT(INOUT) :: M(NPOIN2*NPLAN,*)
01563       TYPE(BIEF_OBJ),  INTENT(INOUT)  :: MDIFF
01564       TYPE(BIEF_MESH), INTENT(IN)     :: MESH3D
01565         END SUBROUTINE
01566 !
01567         SUBROUTINE GETTRIEBE
01568      &(XAUX,AD,AX,TETA,IKLE,NPOIN,NELEM,NELMAX,MESH,IELM3,NELEM2,
01569      & NPLAN,KNOLG)
01570       USE BIEF_DEF
01571       IMPLICIT NONE
01572       INTEGER, INTENT(IN) :: NELEM,NELMAX,NPOIN,IELM3,NELEM2
01573       INTEGER, INTENT(IN) :: IKLE(NELMAX,*),NPLAN,KNOLG(NPOIN)
01574       DOUBLE PRECISION, INTENT(IN)    :: TETA
01575       DOUBLE PRECISION, INTENT(INOUT) :: XAUX(NPOIN,*),AX(NELMAX,*)
01576       DOUBLE PRECISION, INTENT(INOUT) :: AD(NPOIN)
01577       TYPE(BIEF_MESH) :: MESH
01578         END SUBROUTINE
01579 !
01580         SUBROUTINE GETTRISEG
01581      &(XAUX,AD,AX,TETA,NPOIN,MESH,NSEG3D,NSEG2D,NPLAN,NPOIN2,IELM3)
01582       USE BIEF_DEF
01583       IMPLICIT NONE
01584       INTEGER, INTENT(IN) :: NPOIN,NSEG3D,NSEG2D,NPLAN,NPOIN2,IELM3
01585       DOUBLE PRECISION, INTENT(IN)    :: TETA
01586       DOUBLE PRECISION, INTENT(INOUT) :: XAUX(NPOIN,*),AX(NSEG3D)
01587       DOUBLE PRECISION, INTENT(INOUT) :: AD(NPOIN)
01588       TYPE(BIEF_MESH) :: MESH
01589         END SUBROUTINE
01590 !
01591         INTEGER FUNCTION GLOBAL_TO_LOCAL_POINT(IPOIN,MESH)
01592       USE BIEF_DEF
01593       IMPLICIT NONE
01594       INTEGER         , INTENT(IN) :: IPOIN
01595       TYPE(BIEF_MESH) , INTENT(IN) :: MESH
01596         END FUNCTION
01597 !
01598         SUBROUTINE GMRES(X,A,B,MESH,R0,V,AV,CFG,INFOGR,AUX)
01599       USE BIEF_DEF
01600       IMPLICIT NONE
01601       TYPE(SLVCFG), INTENT(INOUT)    :: CFG
01602       TYPE(BIEF_OBJ), INTENT(INOUT)  :: B
01603       TYPE(BIEF_OBJ), INTENT(INOUT)  :: X,V,AV,R0
01604       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
01605       TYPE(BIEF_OBJ), INTENT(IN)     :: A
01606       TYPE(BIEF_OBJ), INTENT(INOUT)  :: AUX
01607       LOGICAL, INTENT(IN)            :: INFOGR
01608         END SUBROUTINE
01609 !
01610         SUBROUTINE GODOWN(X, A,B ,DITR,MESH,COPY)
01611       USE BIEF_DEF
01612       IMPLICIT NONE
01613       TYPE(BIEF_OBJ), INTENT(INOUT) :: X
01614       TYPE(BIEF_OBJ), INTENT(IN)    :: B,A
01615       TYPE(BIEF_MESH), INTENT(IN)   :: MESH
01616       CHARACTER(LEN=1), INTENT(IN)  :: DITR
01617       LOGICAL, INTENT(IN) :: COPY
01618         END SUBROUTINE
01619 !
01620         SUBROUTINE GODWN1(X, A,B ,DITR,MESH,COPY)
01621       USE BIEF_DEF
01622       IMPLICIT NONE
01623       TYPE(BIEF_OBJ), INTENT(INOUT) :: X
01624       TYPE(BIEF_OBJ), INTENT(IN)    :: B,A
01625       TYPE(BIEF_MESH), INTENT(IN)   :: MESH
01626       CHARACTER(LEN=1), INTENT(IN)  :: DITR
01627       LOGICAL, INTENT(IN) :: COPY
01628         END SUBROUTINE
01629 !
01630         SUBROUTINE GOUP(X, A,B ,DITR,MESH,COPY)
01631       USE BIEF_DEF
01632       IMPLICIT NONE
01633       TYPE(BIEF_OBJ), INTENT(INOUT) :: X
01634       TYPE(BIEF_OBJ), INTENT(IN)    :: A,B
01635       TYPE(BIEF_MESH), INTENT(IN)   :: MESH
01636       CHARACTER(LEN=1), INTENT(IN)  :: DITR
01637       LOGICAL, INTENT(IN) :: COPY
01638         END SUBROUTINE
01639 !
01640         SUBROUTINE GOUP1(X, A,B ,DITR,MESH,COPY)
01641       USE BIEF_DEF
01642       IMPLICIT NONE
01643       TYPE(BIEF_OBJ), INTENT(INOUT) :: X
01644       TYPE(BIEF_OBJ), INTENT(IN)    :: B
01645       TYPE(BIEF_OBJ), INTENT(IN)    :: A
01646       TYPE(BIEF_MESH), INTENT(IN)   :: MESH
01647       CHARACTER(LEN=1), INTENT(IN)  :: DITR
01648       LOGICAL, INTENT(IN) :: COPY
01649         END SUBROUTINE
01650 !
01651         SUBROUTINE GRACJG(X, A,B , MESH, D,AD,G,R, CFG,INFOGR,AUX)
01652       USE BIEF_DEF
01653       IMPLICIT NONE
01654       TYPE(SLVCFG), INTENT(INOUT)    :: CFG
01655       TYPE(BIEF_OBJ), INTENT(INOUT)  :: B
01656       TYPE(BIEF_OBJ), INTENT(INOUT)  :: D,AD,G,R,X
01657       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
01658       TYPE(BIEF_OBJ), INTENT(IN)     :: A
01659       TYPE(BIEF_OBJ), INTENT(INOUT)  :: AUX
01660       LOGICAL, INTENT(IN)            :: INFOGR
01661         END SUBROUTINE
01662 !
01663         SUBROUTINE GRADP(NS,NT,NU,AIRT,X,Y,DPX,DPY)
01664         IMPLICIT NONE
01665         INTEGER, INTENT(IN)           :: NS,NT,NU(NT,3)
01666         DOUBLE PRECISION, INTENT(IN)  :: X(NS),Y(NS),AIRT(NT)
01667         DOUBLE PRECISION, INTENT(OUT) :: DPX(3,NT),DPY(3,NT)
01668         END SUBROUTINE
01669 !
01670         SUBROUTINE GSEBE(B,A,MESH)
01671           USE BIEF_DEF
01672           IMPLICIT NONE
01673           TYPE(BIEF_OBJ), INTENT(IN) :: A
01674           TYPE(BIEF_OBJ), INTENT(INOUT) :: B
01675           TYPE(BIEF_MESH), INTENT(IN) :: MESH
01676         END SUBROUTINE
01677 !
01678         SUBROUTINE GTSH11
01679      &(SHP,ELT,IKLE,ELTCAR,NPOIN,NELEM,NELMAX,NSEG,QUAB,QUAD)
01680       IMPLICIT NONE
01681       INTEGER, INTENT(IN)             :: NPOIN,NELEM,NELMAX,NSEG
01682       INTEGER, INTENT(IN)             :: IKLE(NELMAX,*),ELTCAR(NPOIN)
01683       INTEGER, INTENT(INOUT)          :: ELT(NPOIN)
01684       DOUBLE PRECISION, INTENT(INOUT) :: SHP(3,NPOIN)
01685       LOGICAL, INTENT(IN)             :: QUAB,QUAD
01686         END SUBROUTINE
01687 !
01688         SUBROUTINE GTSH41
01689      &(SHP,SHZ,SHF,WS,FS,ELT,ETA,FRE,IKLE,ELTCAR,
01690      & NPOIN2,NELMAX2,NPLAN,JF,NF,YA4D)
01691       IMPLICIT NONE
01692       INTEGER, INTENT(IN)             :: NPOIN2,NELMAX2,NPLAN,JF,NF
01693       INTEGER, INTENT(IN)             :: IKLE(NELMAX2,*),ELTCAR(*)
01694       INTEGER, INTENT(INOUT)          :: ELT(NPOIN2,NPLAN)
01695       INTEGER, INTENT(INOUT)          :: ETA(NPOIN2,NPLAN)
01696       INTEGER, INTENT(INOUT)          :: FRE(NPOIN2,NPLAN)
01697       DOUBLE PRECISION, INTENT(INOUT) :: SHP(3,NPOIN2,NPLAN)
01698       DOUBLE PRECISION, INTENT(INOUT) :: SHZ(NPOIN2,NPLAN)
01699       DOUBLE PRECISION, INTENT(INOUT) :: SHF(NPOIN2,NPLAN)
01700       DOUBLE PRECISION, INTENT(IN)    :: WS(NPOIN2,NPLAN)
01701       DOUBLE PRECISION, INTENT(IN)    :: FS(NPOIN2,NPLAN)
01702       LOGICAL         , INTENT(IN)    :: YA4D
01703         END SUBROUTINE
01704 !
01705         SUBROUTINE HLOC
01706      &(NPOIN,NSEG,NELEM,NUBO,VNOCL,AIRS,DTHAUT,MESH,ELTSEG,IFABOR)
01707       USE BIEF_DEF
01708       IMPLICIT NONE
01709       INTEGER, INTENT(IN)            :: NSEG,NPOIN
01710       INTEGER, INTENT(IN)            :: NUBO(2,*)
01711       INTEGER, INTENT(IN)            :: NELEM
01712       INTEGER, INTENT(IN)            :: ELTSEG(NELEM,3)
01713       DOUBLE PRECISION, INTENT(IN)   :: VNOCL(3,*)
01714       DOUBLE PRECISION, INTENT(IN)   :: AIRS(NPOIN)
01715       DOUBLE PRECISION, INTENT(OUT)  :: DTHAUT(NPOIN)
01716       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
01717       INTEGER, INTENT(IN)            :: IFABOR(NELEM,3)
01718         END SUBROUTINE
01719 !
01720         SUBROUTINE HVF
01721      &(H,HN,FXMAT,UNSV2D,DT,FXBOR,SMH,YASMH,NSEG,NPOIN,NPTFR,GLOSEG,
01722      & SIZGLO,NBOR,OPTSOU,T7,MESH,MSK,RAIN,PLUIE)
01723       USE BIEF_DEF
01724       IMPLICIT NONE
01725       INTEGER, INTENT(IN)             :: NSEG,NPOIN,NPTFR,OPTSOU,SIZGLO
01726       INTEGER, INTENT(IN)             :: GLOSEG(SIZGLO,2)
01727       INTEGER, INTENT(IN)             :: NBOR(NPTFR)
01728       DOUBLE PRECISION, INTENT(IN)    :: DT
01729       DOUBLE PRECISION, INTENT(INOUT) :: H(NPOIN)
01730       DOUBLE PRECISION, INTENT(IN)    :: HN(NPOIN),UNSV2D(NPOIN)
01731       DOUBLE PRECISION, INTENT(IN)    :: FXBOR(NPOIN),SMH(NPOIN)
01732       DOUBLE PRECISION, INTENT(IN)    :: FXMAT(NSEG*2),PLUIE(NPOIN)
01733       LOGICAL, INTENT(IN)             :: YASMH,MSK,RAIN
01734       TYPE(BIEF_OBJ), INTENT(INOUT)   :: T7
01735       TYPE(BIEF_MESH), INTENT(INOUT)  :: MESH
01736         END SUBROUTINE
01737 !
01738         INTEGER FUNCTION IELBOR(IELM,I)
01739           IMPLICIT NONE
01740           INTEGER, INTENT(IN) :: IELM,I
01741         END FUNCTION
01742 !
01743         SUBROUTINE IMPVEC(VEC,NOM,NPOIN)
01744           IMPLICIT NONE
01745           INTEGER, INTENT(IN)           :: NPOIN
01746           DOUBLE PRECISION, INTENT(IN)  :: VEC(NPOIN)
01747           CHARACTER(LEN=32), INTENT(IN) :: NOM
01748         END SUBROUTINE
01749 !
01750         SUBROUTINE INBIEF
01751      &(LIHBOR,KLOG,IT1,IT2,IT3,LVMAC,IELMX,
01752      & LAMBD0,SPHERI,MESH,T1,T2,OPTASS,PRODUC,EQUA,MESH2D)
01753       USE BIEF_DEF
01754       IMPLICIT NONE
01755       INTEGER, INTENT(IN)            :: IELMX,OPTASS,PRODUC,KLOG,LVMAC
01756       INTEGER, INTENT(IN)            :: LIHBOR(*)
01757       DOUBLE PRECISION, INTENT(IN)   :: LAMBD0
01758       LOGICAL, INTENT(IN)            :: SPHERI
01759       CHARACTER(LEN=20)              :: EQUA
01760       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
01761       TYPE(BIEF_OBJ), INTENT(INOUT)  :: T1,T2,IT1,IT2,IT3
01762       TYPE(BIEF_MESH), INTENT(INOUT), OPTIONAL :: MESH2D
01763         END SUBROUTINE
01764 !
01765         LOGICAL FUNCTION INCLUS ( C1 , C2 )
01766           USE BIEF_DEF
01767           IMPLICIT NONE
01768           CHARACTER*(*), INTENT(IN) :: C1 , C2
01769         END FUNCTION
01770 !
01771         LOGICAL FUNCTION INCLU2 ( C1 , C2 )
01772           USE BIEF_DEF
01773           IMPLICIT NONE
01774           CHARACTER*(*), INTENT(IN) :: C1 , C2
01775         END FUNCTION
01776 !
01777         SUBROUTINE INFCEL
01778      &(XX,YY,NUBO,VNOIN,NPOIN,NELEM,NSEG,CMI,AIRST,
01779      & GLOSEG,COORD_G,ELTSEG,ORISEG,IFABOR)
01780       USE BIEF_DEF
01781       IMPLICIT  NONE
01782       INTEGER, INTENT(IN)             :: NSEG,NPOIN,NELEM
01783       INTEGER, INTENT(INOUT)          :: NUBO(2,NSEG)
01784       INTEGER, INTENT(IN)             :: GLOSEG(NSEG,2)
01785       INTEGER, INTENT(IN)             :: ELTSEG(NELEM,3)
01786       INTEGER, INTENT(IN)             :: ORISEG(NELEM,3)
01787       DOUBLE PRECISION, INTENT(IN)    :: XX(NPOIN),YY(NPOIN),CMI(2,NSEG)
01788       DOUBLE PRECISION, INTENT(INOUT) :: VNOIN(3,NSEG)
01789       DOUBLE PRECISION, INTENT(INOUT) :: AIRST(2,*)
01790       DOUBLE PRECISION, INTENT(IN)    :: COORD_G(NSEG,4)
01791       INTEGER, INTENT(IN)             :: IFABOR(NELEM,3)
01792         END SUBROUTINE
01793 !
01794         SUBROUTINE INTEGER_TO_DOUBLE(OP,IX,X,N,QT)
01795           USE DECLARATIONS_SPECIAL
01796           IMPLICIT NONE
01797           INTEGER         , INTENT(IN)    :: N
01798           INTEGER(KIND=K8), INTENT(IN)    :: IX(N)
01799           DOUBLE PRECISION, INTENT(IN)    :: QT
01800           DOUBLE PRECISION, INTENT(INOUT) :: X(N)
01801           CHARACTER(LEN=1), INTENT(IN)    :: OP
01802         END SUBROUTINE
01803 !
01804         SUBROUTINE BIEF_ININDS(NPOIN,NPTFR,NELEM,NPMAX,NPTFX,
01805      &                         NELMAX,NPLAN,NSEGBOR,NDS,NELEB)
01806           IMPLICIT NONE
01807           INTEGER , INTENT(IN) :: NPOIN,NPTFR,NELEM,NPMAX,NPTFX
01808           INTEGER , INTENT(IN) :: NELMAX,NPLAN,NSEGBOR
01809           INTEGER , INTENT(IN), OPTIONAL :: NELEB
01810           INTEGER , INTENT(OUT)          :: NDS(0:81,7)
01811         END SUBROUTINE
01812 !
01813         LOGICAL FUNCTION INPOLY( X , Y , XSOM , YSOM , NSOM )
01814         IMPLICIT NONE
01815         INTEGER, INTENT(IN) :: NSOM
01816         DOUBLE PRECISION, INTENT(IN) :: X , Y
01817         DOUBLE PRECISION, INTENT(IN) :: XSOM(NSOM) , YSOM(NSOM)
01818         END FUNCTION
01819 !
01820         SUBROUTINE INVMTX(AM,BM,NP)
01821           IMPLICIT NONE
01822           INTEGER, INTENT(IN)            ::NP
01823           DOUBLE PRECISION, INTENT(INOUT)::AM(NP,NP),BM(NP,NP)
01824         END SUBROUTINE
01825 !
01826         DOUBLE PRECISION FUNCTION JULTIM
01827      &(YEAR,MONTH,DAY,HOUR,MINU,SEC,AT)
01828       IMPLICIT NONE
01829       INTEGER,          INTENT(IN) :: MONTH,DAY,HOUR,MINU,SEC
01830       INTEGER,          INTENT(INOUT) :: YEAR
01831       DOUBLE PRECISION, INTENT(IN) :: AT
01832         END FUNCTION
01833 !
01834         SUBROUTINE KSUPG(KX,KY,XMUL,U,V,MESH)
01835           USE BIEF_DEF
01836           IMPLICIT NONE
01837           TYPE(BIEF_MESH) , INTENT(IN)    :: MESH
01838           TYPE(BIEF_OBJ)  , INTENT(IN)    :: U,V
01839           TYPE(BIEF_OBJ)  , INTENT(INOUT) :: KX,KY
01840           DOUBLE PRECISION, INTENT(IN)    :: XMUL
01841         END SUBROUTINE
01842 !
01843         SUBROUTINE KSPG11
01844      &(KX,KY,XEL,YEL,U,V,IKLE,NELEM,NELMAX,XMUL)
01845       IMPLICIT NONE
01846       INTEGER, INTENT(IN)             :: NELEM,NELMAX
01847       INTEGER, INTENT(IN)             :: IKLE(NELMAX,*)
01848       DOUBLE PRECISION, INTENT(INOUT) :: KX(NELEM),KY(NELEM)
01849       DOUBLE PRECISION, INTENT(IN)    :: U(*),V(*),XMUL
01850       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,*),YEL(NELMAX,*)
01851         END SUBROUTINE
01852 !
01853         SUBROUTINE LATITU(COSLAT,SINLAT,LAMBD0,Y,NPOIN)
01854           IMPLICIT NONE
01855           INTEGER         , INTENT(IN)    :: NPOIN
01856           DOUBLE PRECISION, INTENT(IN)    :: Y(NPOIN)
01857           DOUBLE PRECISION, INTENT(INOUT) :: COSLAT(NPOIN),SINLAT(NPOIN)
01858           DOUBLE PRECISION, INTENT(IN)    :: LAMBD0
01859         END SUBROUTINE
01860 !
01861         SUBROUTINE LECLIM
01862      &   (LIHBOR,LIUBOR,LIVBOR,LITBOR,HBOR,UBOR,VBOR,TBOR,
01863      &    AUBOR,ATBOR,BTBOR,NPTFR,STDGEO,TRAC,NLIM,
01864      &    KENT,KENTU,KSORT,KADH,KLOG,KINC,NUMLIQ,MESH,BOUNDARY_COLOUR,
01865      &    NPTFR2)
01866       USE BIEF_DEF
01867       IMPLICIT NONE
01868       INTEGER, INTENT(IN)    :: NLIM,KENT,KSORT,KADH,KLOG,KINC,KENTU
01869       INTEGER, INTENT(IN)    :: STDGEO,NPTFR
01870       LOGICAL, INTENT(IN)    :: TRAC
01871       INTEGER, INTENT(INOUT) :: NUMLIQ(*)
01872       INTEGER, INTENT(INOUT) :: LIUBOR(NPTFR),LIVBOR(NPTFR)
01873       INTEGER, INTENT(INOUT) :: LIHBOR(NPTFR),LITBOR(NPTFR)
01874       DOUBLE PRECISION,  INTENT(INOUT) :: UBOR(*),VBOR(*)
01875       DOUBLE PRECISION,  INTENT(INOUT) :: HBOR(NPTFR),AUBOR(NPTFR)
01876       DOUBLE PRECISION,  INTENT(INOUT) :: TBOR(NPTFR),ATBOR(NPTFR)
01877       DOUBLE PRECISION,  INTENT(INOUT) :: BTBOR(NPTFR)
01878       TYPE(BIEF_MESH),   INTENT(INOUT) :: MESH
01879       INTEGER, OPTIONAL, INTENT(INOUT) :: BOUNDARY_COLOUR(NPTFR)
01880       INTEGER, OPTIONAL, INTENT(IN)    :: NPTFR2
01881         END SUBROUTINE
01882 !
01883         SUBROUTINE LIT(X,W,I,C,NVAL,TYPE,CANAL,STD,ISTAT)
01884           IMPLICIT NONE
01885           INTEGER, INTENT(IN)             :: NVAL,CANAL
01886           INTEGER, INTENT(INOUT)          :: ISTAT
01887           CHARACTER*(*), INTENT(IN)       :: TYPE , STD
01888           INTEGER, INTENT(INOUT)          :: I(NVAL)
01889           DOUBLE PRECISION, INTENT(INOUT) :: X(NVAL)
01890           REAL, INTENT(INOUT)             :: W(NVAL)
01891           CHARACTER*(*), INTENT(INOUT)    :: C
01892         END SUBROUTINE
01893 !
01894         SUBROUTINE LITENR(VARSOR,CLAND,
01895      &             NPRE,STD,HIST,NHIST,NPOIN,AT,TEXTPR,TEXTLU,
01896      &             NVAR,VARCLA,NVARCL,TROUVE,ALIRE,W,LISTIN,MAXVAR,
01897      &             NPOIN_PREV,NPLAN_PREV,WD)
01898       USE BIEF_DEF
01899       IMPLICIT NONE
01900       TYPE(BIEF_OBJ), INTENT(INOUT)   :: VARSOR,CLAND
01901       INTEGER, INTENT(IN)             :: NPRE,NHIST,NPOIN,MAXVAR,NVARCL
01902       INTEGER, INTENT(IN)             :: NVAR,ALIRE(MAXVAR)
01903       INTEGER, INTENT(OUT)            :: TROUVE(MAXVAR)
01904       INTEGER, INTENT(IN), OPTIONAL   :: NPOIN_PREV,NPLAN_PREV
01905           CHARACTER(LEN=*)           :: STD
01906           CHARACTER(LEN=32)            :: TEXTPR(MAXVAR),TEXTLU(MAXVAR)
01907           CHARACTER(LEN=32)               :: VARCLA(NVARCL)
01908           DOUBLE PRECISION, INTENT(INOUT) :: HIST(*)
01909           DOUBLE PRECISION, INTENT(OUT)   :: AT
01910           REAL                            :: W(NPOIN)
01911           LOGICAL, INTENT(IN)             :: LISTIN
01912           DOUBLE PRECISION, INTENT(OUT), OPTIONAL :: WD(*)
01913         END SUBROUTINE
01914 !
01915         SUBROUTINE LUBKSB(A,N,NP,INDX,B)
01916           IMPLICIT NONE
01917           INTEGER, INTENT(IN) :: N,NP
01918           INTEGER, INTENT(IN) :: INDX(N)
01919           DOUBLE PRECISION, INTENT(INOUT) :: B(N)
01920           DOUBLE PRECISION, INTENT(IN)    :: A(NP,NP)
01921         END SUBROUTINE
01922 !
01923         SUBROUTINE LUDCMP(A,N,NP,INDX)
01924           IMPLICIT NONE
01925           INTEGER, INTENT(IN)             :: N,NP
01926           INTEGER, INTENT(INOUT)          :: INDX(N)
01927           DOUBLE PRECISION, INTENT(INOUT) :: A(NP,NP)
01928         END SUBROUTINE
01929 !
01930         SUBROUTINE LUMP(DIAG,A,MESH,XMUL)
01931           USE BIEF_DEF
01932           IMPLICIT NONE
01933           DOUBLE PRECISION, INTENT(IN)    :: XMUL
01934           TYPE(BIEF_OBJ)  , INTENT(INOUT) :: DIAG
01935           TYPE(BIEF_OBJ)  , INTENT(IN)    :: A
01936           TYPE(BIEF_MESH) , INTENT(INOUT) :: MESH
01937         END SUBROUTINE
01938 !
01939         SUBROUTINE MAKE_ELTCAR(ELTCAR,IKLE,NPOIN2,NELEM2,NELMAX,KNOLG,
01940      &                         ISCORE,MESH,NPLAN,IELM)
01941           USE BIEF_DEF
01942           IMPLICIT NONE
01943           INTEGER, INTENT(IN) :: NPOIN2,NELEM2,NELMAX,NPLAN,IELM
01944           INTEGER, INTENT(IN) :: IKLE(NELMAX,*),KNOLG(NPOIN2)
01945           INTEGER, INTENT(INOUT)          :: ELTCAR(*)
01946           INTEGER, INTENT(INOUT)          :: ISCORE(*)
01947           TYPE(BIEF_MESH), INTENT(INOUT)  :: MESH
01948         END SUBROUTINE
01949 !
01950         SUBROUTINE MASKBD
01951      &(MASKEL,ZFE,ZF,HN,HMIN,IKLE,IFABOR,ITRA01,NELEM,NPOIN)
01952       IMPLICIT NONE
01953       INTEGER, INTENT(IN)             :: NELEM,NPOIN
01954       INTEGER, INTENT(IN)             :: IKLE(NELEM,3),IFABOR(NELEM,3)
01955       INTEGER, INTENT(INOUT)          :: ITRA01(NELEM)
01956       DOUBLE PRECISION, INTENT(IN)    :: ZFE(NELEM),ZF(NPOIN),HN(NPOIN)
01957       DOUBLE PRECISION, INTENT(IN)    :: HMIN
01958       DOUBLE PRECISION, INTENT(INOUT) :: MASKEL(NELEM)
01959         END SUBROUTINE
01960 !
01961         SUBROUTINE MASKTO
01962      &(MASKEL,MASKPT,IFAMAS,IKLE,IFABOR,ELTSEG,NSEG,
01963      & NELEM,NPOIN,IELM,MESH)
01964       USE BIEF_DEF
01965       IMPLICIT NONE
01966       INTEGER, INTENT(IN)    :: NELEM,NPOIN,IELM,NSEG
01967       INTEGER, INTENT(IN)    :: IKLE(NELEM,3),IFABOR(NELEM,3)
01968       INTEGER, INTENT(IN)    :: ELTSEG(NELEM,3)
01969       INTEGER, INTENT(INOUT) :: IFAMAS(NELEM,3)
01970       DOUBLE PRECISION, INTENT(IN)    :: MASKEL(NELEM)
01971       TYPE(BIEF_OBJ), INTENT(INOUT)   :: MASKPT
01972       TYPE(BIEF_MESH), INTENT(INOUT)  :: MESH
01973         END SUBROUTINE
01974 !
01975         SUBROUTINE MATRBL( OP , X , A , Y , C , MESH )
01976       USE BIEF_DEF
01977       IMPLICIT NONE
01978       CHARACTER(LEN=8), INTENT(IN)   :: OP
01979       TYPE(BIEF_OBJ), INTENT(INOUT)  :: X
01980       TYPE(BIEF_OBJ), INTENT(IN)     :: A,Y
01981       DOUBLE PRECISION, INTENT(IN)   :: C
01982       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
01983         END SUBROUTINE
01984 !
01985         SUBROUTINE MATRIX
01986      &    (M,OP,FORMUL,IELM1,IELM2,XMUL,F,G,H,U,V,W,MESH,MSK,MASKEL)
01987           USE BIEF_DEF
01988           IMPLICIT NONE
01989           TYPE(BIEF_OBJ)   , INTENT(INOUT) :: M
01990           INTEGER          , INTENT(IN)    :: IELM1,IELM2
01991           DOUBLE PRECISION , INTENT(IN)    :: XMUL
01992           LOGICAL          , INTENT(IN)    :: MSK
01993           CHARACTER(LEN=16), INTENT(IN)    :: FORMUL
01994           CHARACTER(LEN=8) , INTENT(IN)    :: OP
01995           TYPE(BIEF_OBJ)   , INTENT(IN)    :: F,G,H,U,V,W,MASKEL
01996           TYPE(BIEF_MESH)  , INTENT(INOUT) :: MESH
01997         END SUBROUTINE
01998 !
01999         SUBROUTINE MATRIY
02000      &(FORMUL,XM,TYPDIA,TYPEXT,
02001      & XMUL,SF,SG,SH,SU,SV,SW,F,G,H,U,V,W,T,LEGO,
02002      & XEL,YEL,ZEL,XPT,YPT,ZPT,SURFAC,LGSEG,IKLE,IKLBOR,NBOR,NELBOR,
02003      & NULONE,NELEM,NELMAX,NELEB,NELEBX,IELM1,IELM2,S,NPLAN,MESH,
02004      & SIZEXMT)
02005       USE BIEF_DEF
02006       IMPLICIT NONE
02007       INTEGER, INTENT(IN)             :: NELMAX,NELEM,IELM1,IELM2,S
02008       INTEGER, INTENT(IN)             :: NPLAN,NELEB,NELEBX,SIZEXMT
02009       INTEGER, INTENT(IN)             :: IKLE(NELMAX,*),NBOR(*)
02010       INTEGER, INTENT(IN)             :: IKLBOR(NELEBX,*)
02011       INTEGER, INTENT(IN)             :: NELBOR(NELEBX)
02012       INTEGER, INTENT(IN)             :: NULONE(NELEBX,*)
02013       LOGICAL, INTENT(INOUT)          :: LEGO
02014       TYPE(BIEF_OBJ), INTENT(IN)      :: SF,SG,SH,SU,SV,SW
02015       DOUBLE PRECISION, INTENT(IN)    :: F(*),G(*),H(*),U(*),V(*),W(*)
02016       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX),LGSEG(NELEBX)
02017       DOUBLE PRECISION, INTENT(IN)    :: XEL(*),YEL(*),ZEL(*)
02018       DOUBLE PRECISION, INTENT(IN)    :: XPT(*),YPT(*),ZPT(*)
02019       DOUBLE PRECISION, INTENT(IN)    :: XMUL
02020       DOUBLE PRECISION, INTENT(INOUT) :: XM(SIZEXMT,*),T(SIZEXMT,*)
02021       CHARACTER(LEN=16), INTENT(IN)   :: FORMUL
02022       CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIA,TYPEXT
02023       TYPE(BIEF_MESH), INTENT(INOUT)  :: MESH
02024         END SUBROUTINE
02025 !
02026         SUBROUTINE MATVCT
02027      &(OP, X , DA,TYPDIA,XA,TYPEXT, Y ,
02028      & C,IKLE,NPT,NELEM,NELMAX,W,LEGO,IELM1,IELM2,IELMX,LV,
02029      & S,P,IKLEM1,DIMIKM,LIMVOI,MXPTVS,NPMAX,NPOIN,NPTFR,
02030      & GLOSEG,SIZGLO,SIZXA,NDP,MESH)
02031       USE BIEF_DEF
02032       IMPLICIT NONE
02033       INTEGER, INTENT(IN) :: IELM1,IELM2,IELMX,NPOIN,NPMAX,S,P,SIZXA
02034       INTEGER, INTENT(IN) :: NDP
02035       INTEGER, INTENT(INOUT) :: NPT
02036       INTEGER, INTENT(IN) :: NELEM,NELMAX,LV,DIMIKM,MXPTVS,NPTFR,SIZGLO
02037       INTEGER, INTENT(IN) :: IKLE(NELMAX,*),IKLEM1(*),LIMVOI(*)
02038       INTEGER, INTENT(IN) :: GLOSEG(SIZGLO,2)
02039       CHARACTER(LEN=8), INTENT(IN)    :: OP
02040       CHARACTER(LEN=1),INTENT(IN)     :: TYPDIA,TYPEXT
02041       DOUBLE PRECISION, INTENT(INOUT) :: X(*)
02042       DOUBLE PRECISION, INTENT(IN)    :: Y(*),DA(*),XA(SIZXA,*),C
02043       DOUBLE PRECISION, INTENT(INOUT) :: W(NELMAX,*)
02044       LOGICAL, INTENT(IN)             :: LEGO
02045       TYPE(BIEF_MESH), INTENT(IN)     :: MESH
02046         END SUBROUTINE
02047 !
02048         SUBROUTINE MATVEC( OP , X , A , Y , C , MESH , LEGO )
02049           USE BIEF_DEF
02050           IMPLICIT NONE
02051           CHARACTER*8     , INTENT(IN)           :: OP
02052           TYPE(BIEF_OBJ)  , INTENT(INOUT)        :: X
02053           TYPE(BIEF_OBJ)  , INTENT(IN)           :: A,Y
02054           DOUBLE PRECISION, INTENT(IN)           :: C
02055           TYPE(BIEF_MESH) , INTENT(INOUT)        :: MESH
02056           LOGICAL         , INTENT(IN), OPTIONAL :: LEGO
02057         END SUBROUTINE
02058 !
02059         SUBROUTINE MAXI( XMAX , IMAX , X , NPOIN )
02060       IMPLICIT NONE
02061       INTEGER, INTENT(IN)             :: NPOIN
02062       INTEGER, INTENT(INOUT)          :: IMAX
02063       DOUBLE PRECISION, INTENT(INOUT) :: XMAX
02064       DOUBLE PRECISION, INTENT(IN)    :: X(NPOIN)
02065         END SUBROUTINE
02066 !
02067         SUBROUTINE MER11
02068      &(X, XA1,XA2,XA3,IKLE1,IKLE2,IKLE3,NELEM,NELMAX,NPOIN,LV)
02069       IMPLICIT NONE
02070       INTEGER, INTENT(IN)             :: NPOIN,NELEM,NELMAX,LV
02071       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
02072       DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
02073       DOUBLE PRECISION, INTENT(IN)    :: XA1(NELMAX)
02074       DOUBLE PRECISION, INTENT(IN)    :: XA2(NELMAX)
02075       DOUBLE PRECISION, INTENT(IN)    :: XA3(NELMAX)
02076         END SUBROUTINE
02077 !
02078         SUBROUTINE MER21
02079      &(X, XA1,XA2,XA3,XA4,XA5,XA6 , IKLE1,IKLE2,IKLE3,IKLE4,
02080      & NELEM,NELMAX,NPOIN,LV)
02081       IMPLICIT NONE
02082       INTEGER, INTENT(IN)             :: NPOIN,NELEM,NELMAX,LV
02083       INTEGER, INTENT(IN)             :: IKLE1(NELMAX),IKLE2(NELMAX)
02084       INTEGER, INTENT(IN)             :: IKLE3(NELMAX),IKLE4(NELMAX)
02085       DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
02086       DOUBLE PRECISION, INTENT(IN) :: XA1(NELMAX)
02087       DOUBLE PRECISION, INTENT(IN) :: XA2(NELMAX)
02088       DOUBLE PRECISION, INTENT(IN) :: XA3(NELMAX)
02089       DOUBLE PRECISION, INTENT(IN) :: XA4(NELMAX)
02090       DOUBLE PRECISION, INTENT(IN) :: XA5(NELMAX)
02091       DOUBLE PRECISION, INTENT(IN) :: XA6(NELMAX)
02092         END SUBROUTINE
02093 !
02094         SUBROUTINE MER41
02095      &(X, XA1 ,XA2 ,XA3 ,XA4 ,XA5 ,
02096      &    XA6 ,XA7 ,XA8 ,XA9 ,XA10,
02097      &    XA11,XA12,XA13,XA14,XA15,
02098      &    IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,
02099      &    NELEM,NELMAX,NPOIN,LV)
02100       IMPLICIT NONE
02101       INTEGER, INTENT(IN) :: NPOIN,NELEM,NELMAX,LV
02102       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
02103       INTEGER, INTENT(IN) :: IKLE4(NELMAX),IKLE5(NELMAX),IKLE6(NELMAX)
02104       DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
02105       DOUBLE PRECISION, INTENT(IN) :: XA1(NELMAX),XA2(NELMAX)
02106       DOUBLE PRECISION, INTENT(IN) :: XA3(NELMAX)
02107       DOUBLE PRECISION, INTENT(IN) :: XA4(NELMAX),XA5(NELMAX)
02108       DOUBLE PRECISION, INTENT(IN) :: XA6(NELMAX)
02109       DOUBLE PRECISION, INTENT(IN) :: XA7(NELMAX),XA8(NELMAX)
02110       DOUBLE PRECISION, INTENT(IN) :: XA9(NELMAX)
02111       DOUBLE PRECISION, INTENT(IN) :: XA10(NELMAX),XA11(NELMAX)
02112       DOUBLE PRECISION, INTENT(IN) :: XA12(NELMAX)
02113       DOUBLE PRECISION, INTENT(IN) :: XA13(NELMAX),XA14(NELMAX)
02114       DOUBLE PRECISION, INTENT(IN) :: XA15(NELMAX)
02115         END SUBROUTINE
02116 !
02117         SUBROUTINE MINI( XMIN , IMIN , X , NPOIN )
02118           IMPLICIT NONE
02119           INTEGER, INTENT(IN)             :: NPOIN
02120           INTEGER, INTENT(INOUT)          :: IMIN
02121           DOUBLE PRECISION, INTENT(INOUT) :: XMIN
02122           DOUBLE PRECISION, INTENT(IN)    :: X(NPOIN)
02123         END SUBROUTINE
02124 !
02125         SUBROUTINE MT01AA
02126      &( A11 , A12 , A13 ,
02127      &        A22 , A23 ,
02128      &              A33 ,
02129      &  XMUL,SURFAC,NELEM,NELMAX)
02130       USE BIEF_DEF
02131       IMPLICIT NONE
02132       INTEGER, INTENT(IN) :: NELEM,NELMAX
02133       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02134       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*)
02135       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*)
02136       DOUBLE PRECISION, INTENT(IN) :: XMUL
02137       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
02138         END SUBROUTINE
02139 !
02140         SUBROUTINE MT01BB
02141      &( A11 , A12 , A13 , A14 ,
02142      &        A22 , A23 , A24 ,
02143      &              A33 , A34 ,
02144      &                    A44 ,
02145      &  XMUL,SURFAC,NELEM,NELMAX)
02146       USE BIEF_DEF
02147       IMPLICIT NONE
02148       INTEGER, INTENT(IN) :: NELEM,NELMAX
02149       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02150       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*),A24(*)
02151       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*),A34(*)
02152       DOUBLE PRECISION, INTENT(INOUT) ::                      A44(*)
02153       DOUBLE PRECISION, INTENT(IN) :: XMUL
02154       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
02155         END SUBROUTINE
02156 !
02157         SUBROUTINE MT01OO(A11,A12,A22,XMUL,LGSEG,NELEM,NELMAX)
02158       IMPLICIT NONE
02159       INTEGER, INTENT(IN) :: NELEM,NELMAX
02160       DOUBLE PRECISION, INTENT(INOUT) :: A11(NELMAX),A12(NELMAX)
02161       DOUBLE PRECISION, INTENT(INOUT) :: A22(NELMAX)
02162       DOUBLE PRECISION, INTENT(IN)    :: LGSEG(NELMAX)
02163       DOUBLE PRECISION, INTENT(IN)    :: XMUL
02164         END SUBROUTINE
02165 !
02166         SUBROUTINE MT01PP(T,XM,XMUL,Z,SURFAC,IKLE,NELEM,NELMAX)
02167       IMPLICIT NONE
02168       INTEGER, INTENT(IN)             :: NELEM,NELMAX
02169       INTEGER, INTENT(IN)             :: IKLE(NELMAX,6)
02170       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,6),XM(NELMAX,30)
02171       DOUBLE PRECISION, INTENT(IN)    :: XMUL,Z(*),SURFAC(NELMAX)
02172         END SUBROUTINE
02173 !
02174         SUBROUTINE MT01TT(T,XM,XMUL,X,Y,Z,IKLE,NELEM,NELMAX)
02175       IMPLICIT NONE
02176       INTEGER, INTENT(IN)             :: NELEM,NELMAX
02177       INTEGER, INTENT(IN)             :: IKLE(NELMAX,4)
02178       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,4),XM(NELMAX,6)
02179       DOUBLE PRECISION, INTENT(IN)    :: XMUL
02180       DOUBLE PRECISION, INTENT(IN)    :: X(*),Y(*),Z(*)
02181         END SUBROUTINE
02182 !
02183         SUBROUTINE MT02AA
02184      &( A11 , A12 , A13 ,
02185      &        A22 , A23 ,
02186      &              A33 ,
02187      &  XMUL,SU,U,SV,V,
02188      &  XEL,YEL,SURFAC,IKLE1,IKLE2,IKLE3,NELEM,NELMAX,FORMUL)
02189       USE BIEF_DEF
02190       IMPLICIT NONE
02191       INTEGER, INTENT(IN) :: NELEM,NELMAX
02192       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
02193 !
02194       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02195       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*)
02196       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*)
02197       DOUBLE PRECISION, INTENT(IN)    :: XMUL
02198       DOUBLE PRECISION, INTENT(IN)    :: U(*),V(*)
02199 !     STRUCTURE OF U
02200       TYPE(BIEF_OBJ), INTENT(IN)      :: SU,SV
02201       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,3),YEL(NELMAX,3)
02202       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
02203       CHARACTER(LEN=16), INTENT(IN)   :: FORMUL
02204         END SUBROUTINE
02205 !
02206         SUBROUTINE MT02AA_2
02207      &( A11 , A12 , A13 ,
02208      &        A22 , A23 ,
02209      &              A33 ,
02210      &  XMUL,SU,SV,U,V,
02211      &  XEL,YEL,SURFAC,NELEM,NELMAX)
02212       USE BIEF_DEF
02213       IMPLICIT NONE
02214       INTEGER, INTENT(IN) :: NELEM,NELMAX
02215       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02216       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*)
02217       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*)
02218       DOUBLE PRECISION, INTENT(IN) :: XMUL
02219       DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
02220       TYPE(BIEF_OBJ)  , INTENT(IN) :: SU,SV
02221       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02222       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
02223         END SUBROUTINE
02224 !
02225         SUBROUTINE MT02BB
02226      &( A11 , A12 , A13 , A14 ,
02227      &        A22 , A23 , A24 ,
02228      &              A33 , A34 ,
02229      &                    A44 ,
02230      &  XMUL,SU,U,XEL,YEL,SURFAC,IKLE1,IKLE2,IKLE3,NELEM,NELMAX)
02231       USE BIEF_DEF
02232       IMPLICIT NONE
02233       INTEGER, INTENT(IN) :: NELEM,NELMAX
02234       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
02235       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02236       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*),A24(*)
02237       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*),A34(*)
02238       DOUBLE PRECISION, INTENT(INOUT) ::                      A44(*)
02239       DOUBLE PRECISION, INTENT(IN)    :: XMUL,U(*)
02240       TYPE(BIEF_OBJ), INTENT(IN)      :: SU
02241       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,3),YEL(NELMAX,3)
02242       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
02243         END SUBROUTINE
02244 !
02245         SUBROUTINE MT02PP
02246      &(T,XM,XMUL,SF,SG,SH,F,G,H,X,Y,Z,SURFAC,IKLE,NELEM,NELMAX,INCHYD,
02247      & FORMUL,NPLAN)
02248       USE BIEF_DEF
02249       IMPLICIT NONE
02250       INTEGER, INTENT(IN) :: NELEM,NELMAX,NPLAN
02251       INTEGER, INTENT(IN) :: IKLE(NELMAX,6)
02252       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,6),XM(NELMAX,15)
02253       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
02254       DOUBLE PRECISION, INTENT(IN)    :: XMUL
02255       DOUBLE PRECISION, INTENT(IN)    :: F(*),G(*),H(*)
02256       TYPE(BIEF_OBJ), INTENT(IN)      :: SF,SG,SH
02257       DOUBLE PRECISION, INTENT(IN)    :: X(NELMAX,6),Y(NELMAX,6),Z(*)
02258       LOGICAL, INTENT(IN)             :: INCHYD
02259       CHARACTER(LEN=16), INTENT(IN)   :: FORMUL
02260         END SUBROUTINE
02261 !
02262         SUBROUTINE MT02PP_STAR
02263      &(T,XM,XMUL,SF,SG,SH,F,G,H,X,Y,Z,SURFAC,IKLE,NELEM,NELMAX,INCHYD,
02264      & FORMUL,NPLAN)
02265       USE BIEF_DEF
02266       IMPLICIT NONE
02267       INTEGER, INTENT(IN) :: NELEM,NELMAX,NPLAN
02268       INTEGER, INTENT(IN) :: IKLE(NELMAX,6)
02269       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,6),XM(NELMAX,*)
02270       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
02271       DOUBLE PRECISION, INTENT(IN)    :: XMUL
02272       DOUBLE PRECISION, INTENT(IN)    :: F(*),G(*),H(*)
02273       TYPE(BIEF_OBJ), INTENT(IN)      :: SF,SG,SH
02274       DOUBLE PRECISION, INTENT(IN)    :: X(NELMAX,6),Y(NELMAX,6),Z(*)
02275       LOGICAL, INTENT(IN)             :: INCHYD
02276       CHARACTER(LEN=16), INTENT(IN)   :: FORMUL
02277         END SUBROUTINE
02278 !
02279         SUBROUTINE MT02PT(T,XM,XMUL,SF,SG,SH,F,G,H,
02280      &                    X,Y,Z,IKLE,NELEM,NELMAX,INCHYD)
02281       USE BIEF_DEF
02282       IMPLICIT NONE
02283       INTEGER, INTENT(IN)             :: NELEM,NELMAX
02284       INTEGER, INTENT(IN)             :: IKLE(NELMAX,6)
02285       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,6),XM(NELMAX,15)
02286       DOUBLE PRECISION, INTENT(IN)    :: XMUL
02287       DOUBLE PRECISION, INTENT(IN)    :: F(*),G(*),H(*)
02288       TYPE(BIEF_OBJ), INTENT(IN)      :: SF,SG,SH
02289       DOUBLE PRECISION, INTENT(IN)    :: X(*),Y(*),Z(*)
02290       LOGICAL, INTENT(IN)             :: INCHYD
02291         END SUBROUTINE
02292 !
02293         SUBROUTINE MT02TT(T,XM,XMUL,SF,SG,SH,F,G,H,
02294      &                    X,Y,Z,IKLE,NELEM,NELMAX,INCHYD,NPOIN2)
02295       USE BIEF_DEF
02296       IMPLICIT NONE
02297       INTEGER, INTENT(IN)             :: NELEM,NELMAX,NPOIN2
02298       INTEGER, INTENT(IN)             :: IKLE(NELMAX,4)
02299       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,4),XM(NELMAX,6)
02300       DOUBLE PRECISION, INTENT(IN)    :: XMUL
02301       DOUBLE PRECISION, INTENT(IN)    :: F(*),G(*),H(*)
02302       TYPE(BIEF_OBJ), INTENT(IN)      :: SF,SG,SH
02303       DOUBLE PRECISION, INTENT(IN)    :: X(*),Y(*),Z(*)
02304       LOGICAL, INTENT(IN)             :: INCHYD
02305         END SUBROUTINE
02306 !
02307         SUBROUTINE MT03AA
02308      &( A11 , A12 , A13 ,
02309      &  A21 , A22 , A23 ,
02310      &  A31 , A32 , A33 ,
02311      &  XMUL,SF,SG,SU,SV,F,G,U,V,
02312      &  XEL,YEL,SURFAC,IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX)
02313       USE BIEF_DEF
02314       IMPLICIT NONE
02315       INTEGER, INTENT(IN) :: NELEM,NELMAX
02316       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
02317       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
02318       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02319       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
02320       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
02321       DOUBLE PRECISION, INTENT(IN) :: XMUL
02322       DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),U(*),V(*)
02323       TYPE(BIEF_OBJ), INTENT(IN)   :: SF,SG,SU,SV
02324       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02325       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
02326         END SUBROUTINE
02327 !
02328         SUBROUTINE MT03BB
02329      &( A11 , A12 , A13 , A14 ,
02330      &  A21 , A22 , A23 , A24 ,
02331      &  A31 , A32 , A33 , A34 ,
02332      &  A41 , A42 , A43 , A44 ,
02333      &  XMUL,SF,SG,SU,SV,F,G,U,V,
02334      &  XEL,YEL,IKLE1,IKLE2,IKLE3,NELEM,NELMAX)
02335       USE BIEF_DEF
02336       IMPLICIT NONE
02337       INTEGER, INTENT(IN) :: NELEM,NELMAX
02338       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
02339       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02340       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
02341       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
02342       DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
02343       DOUBLE PRECISION, INTENT(IN)    :: XMUL
02344       DOUBLE PRECISION, INTENT(IN)    :: F(*),G(*),U(*),V(*)
02345       TYPE(BIEF_OBJ), INTENT(IN)      :: SF,SG,SU,SV
02346       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02347         END SUBROUTINE
02348 !
02349         SUBROUTINE MT04AA
02350      &( A11 , A12 , A13 ,
02351      &        A22 , A23 ,
02352      &              A33 ,
02353      &  XMUL,SU,SV,U,V,XEL,YEL,SURFAC,IKLE,NELEM,NELMAX)
02354       USE BIEF_DEF
02355       IMPLICIT NONE
02356       INTEGER, INTENT(IN)             :: NELEM,NELMAX
02357       INTEGER, INTENT(IN)             :: IKLE(NELMAX,*)
02358       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02359       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*)
02360       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*)
02361       DOUBLE PRECISION, INTENT(IN)    :: XMUL,U(*),V(*)
02362       TYPE(BIEF_OBJ)  , INTENT(IN)    :: SU,SV
02363       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,3),YEL(NELMAX,3)
02364       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
02365         END SUBROUTINE
02366 !
02367         SUBROUTINE MT04BB
02368      &( A11 , A12 , A13 , A14 ,
02369      &        A22 , A23 , A24 ,
02370      &              A33 , A34 ,
02371      &                    A44 ,
02372      &  XMUL,SU,SV,U,V,XEL,YEL,IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX)
02373       USE BIEF_DEF
02374       IMPLICIT NONE
02375       INTEGER, INTENT(IN) :: NELEM,NELMAX
02376       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
02377       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
02378       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02379       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*),A24(*)
02380       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*),A34(*)
02381       DOUBLE PRECISION, INTENT(INOUT) ::                      A44(*)
02382       DOUBLE PRECISION, INTENT(IN)    :: XMUL
02383       DOUBLE PRECISION, INTENT(IN)    :: U(*),V(*)
02384       TYPE(BIEF_OBJ), INTENT(IN)      :: SU,SV
02385       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,3),YEL(NELMAX,3)
02386         END SUBROUTINE
02387 !
02388         SUBROUTINE MT04PP
02389      &( T,XM,XMUL,SU,SV,SW,U,V,W,X,Y,Z,SURFAC,IKLE,NELEM,NELMAX,FORMUL)
02390       USE BIEF_DEF
02391       IMPLICIT NONE
02392       INTEGER, INTENT(IN) :: NELEM,NELMAX
02393       INTEGER, INTENT(IN) :: IKLE(NELMAX,6)
02394       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,6),XM(NELMAX,30)
02395       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
02396       DOUBLE PRECISION, INTENT(IN) :: XMUL
02397       DOUBLE PRECISION, INTENT(IN) :: U(*),V(*),W(*)
02398       TYPE(BIEF_OBJ), INTENT(IN) :: SU,SV,SW
02399       DOUBLE PRECISION, INTENT(IN) :: X(NELMAX,6),Y(NELMAX,6),Z(*)
02400       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
02401         END SUBROUTINE
02402 !
02403         SUBROUTINE MT04TT
02404      &(T,XM,XMUL,SU,SV,SW,U,V,W,X,Y,Z,IKLE,NELEM,NELMAX,FORMUL)
02405       USE BIEF_DEF
02406       IMPLICIT NONE
02407       INTEGER, INTENT(IN) :: NELEM,NELMAX
02408       INTEGER, INTENT(IN) :: IKLE(NELMAX,4)
02409       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,4),XM(NELMAX,6)
02410       DOUBLE PRECISION, INTENT(IN) :: XMUL
02411       DOUBLE PRECISION, INTENT(IN) :: U(*),V(*),W(*)
02412       TYPE(BIEF_OBJ), INTENT(IN) :: SU,SV,SW
02413       DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
02414       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
02415         END SUBROUTINE
02416 !
02417         SUBROUTINE MT05AA
02418      &( A11 , A12 , A13 ,
02419      &  A21 , A22 , A23 ,
02420      &  A31 , A32 , A33 ,
02421      &  XMUL,SU,SV,U,V,
02422      &  XEL,YEL,IKLE,NELEM,NELMAX,FORMUL)
02423       USE BIEF_DEF
02424       IMPLICIT NONE
02425       INTEGER, INTENT(IN) :: NELEM,NELMAX
02426       INTEGER, INTENT(IN) :: IKLE(NELMAX,*)
02427       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02428       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
02429       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
02430       DOUBLE PRECISION, INTENT(IN)    :: XMUL,U(*),V(*)
02431       TYPE(BIEF_OBJ), INTENT(IN)      :: SU,SV
02432       CHARACTER(LEN=16) :: FORMUL
02433       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02434         END SUBROUTINE
02435 !
02436         SUBROUTINE MT05BB
02437      &( A11 , A12 , A13 , A14 ,
02438      &  A21 , A22 , A23 , A24 ,
02439      &  A31 , A32 , A33 , A34 ,
02440      &  A41 , A42 , A43 , A44 ,
02441      &  XMUL,SU,SV,U,V,
02442      &  XEL,YEL,IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,FORMUL)
02443       USE BIEF_DEF
02444       IMPLICIT NONE
02445       INTEGER, INTENT(IN) :: NELEM,NELMAX
02446       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
02447       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
02448       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02449       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
02450       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
02451       DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
02452       DOUBLE PRECISION, INTENT(IN) :: XMUL
02453       DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
02454       TYPE(BIEF_OBJ), INTENT(IN) :: SU,SV
02455       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02456       CHARACTER(LEN=16) :: FORMUL
02457         END SUBROUTINE
02458 !
02459         SUBROUTINE MT05PP
02460      &(T,XM,XMUL,SU,SV,SW,U,V,W,SF,SG,SH,F,G,H,
02461      & X,Y,Z,IKLE,NELEM,NELMAX,SURFAC,SIGMAG,SPECAD,NPLAN)
02462       USE BIEF_DEF
02463       IMPLICIT NONE
02464       INTEGER, INTENT(IN)             :: NELEM,NELMAX,NPLAN
02465       INTEGER, INTENT(IN)             :: IKLE(NELMAX,6)
02466       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,6),XM(NELMAX,30)
02467       DOUBLE PRECISION, INTENT(IN)    :: XMUL
02468       DOUBLE PRECISION, INTENT(IN)    :: U(*),V(*),W(*),SURFAC(*)
02469       DOUBLE PRECISION, INTENT(IN)    :: F(*),G(*),H(*)
02470       TYPE(BIEF_OBJ), INTENT(IN)      :: SU,SV,SW,SF,SG,SH
02471       DOUBLE PRECISION, INTENT(IN)    :: X(NELMAX,6),Y(NELMAX,6),Z(*)
02472       LOGICAL, INTENT(IN)             :: SIGMAG,SPECAD
02473         END SUBROUTINE
02474 !
02475         SUBROUTINE MT05TT
02476      &( T,XM,XMUL,SU,SV,SW,U,V,W,X,Y,Z,IKLE,NELEM,NELMAX)
02477       USE BIEF_DEF
02478       IMPLICIT NONE
02479       INTEGER, INTENT(IN) :: NELEM,NELMAX
02480       INTEGER, INTENT(IN) :: IKLE(NELMAX,4)
02481       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,4),XM(NELMAX,12)
02482       DOUBLE PRECISION, INTENT(IN) :: XMUL
02483       DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
02484       TYPE(BIEF_OBJ),   INTENT(IN) :: SU,SV,SW
02485       DOUBLE PRECISION, INTENT(IN) :: U(*),V(*),W(*)
02486         END SUBROUTINE
02487 !
02488         SUBROUTINE MT06AA
02489      &( A11 , A12 , A13 ,
02490      &        A22 , A23 ,
02491      &              A33 ,
02492      &  XMUL,SF,F,SURFAC,IKLE1,IKLE2,IKLE3,NELEM,NELMAX)
02493       USE BIEF_DEF
02494       IMPLICIT NONE
02495       INTEGER, INTENT(IN) :: NELEM,NELMAX
02496       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
02497       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02498       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*)
02499       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*)
02500       DOUBLE PRECISION, INTENT(IN) :: XMUL
02501       DOUBLE PRECISION, INTENT(IN) :: F(*)
02502       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02503       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
02504         END SUBROUTINE
02505 !
02506         SUBROUTINE MT06BB
02507      &( A11 , A12 , A13 , A14 ,
02508      &        A22 , A23 , A24 ,
02509      &              A33 , A34 ,
02510      &                    A44 ,
02511      &  XMUL,SF,F,SURFAC,IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX)
02512       USE BIEF_DEF
02513       IMPLICIT NONE
02514       INTEGER, INTENT(IN) :: NELEM,NELMAX
02515       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
02516       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
02517       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02518       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*),A24(*)
02519       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*),A34(*)
02520       DOUBLE PRECISION, INTENT(INOUT) ::                      A44(*)
02521       DOUBLE PRECISION, INTENT(IN) :: XMUL
02522       DOUBLE PRECISION, INTENT(IN) :: F(*)
02523       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02524       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
02525         END SUBROUTINE
02526 !
02527         SUBROUTINE MT06FF
02528      &( A11 , A12 , A13 , A14 ,
02529      &        A22 , A23 , A24 ,
02530      &              A33 , A34 ,
02531      &                    A44 ,
02532      &  XMUL,SF,F,X,Y,Z,IKLE1,IKLE2,IKLE3,IKLE4,NBOR,NELBOR,
02533      &  NULONE,NELEB,NELEBX,NELMAX)
02534       USE BIEF_DEF
02535       IMPLICIT NONE
02536       INTEGER, INTENT(IN) :: NELEB,NELEBX,NELMAX
02537       INTEGER, INTENT(IN) :: NBOR(*),NELBOR(NELEBX),NULONE(NELEBX,4)
02538       INTEGER, INTENT(IN) :: IKLE1(NELEBX),IKLE2(NELEBX)
02539       INTEGER, INTENT(IN) :: IKLE3(NELEBX),IKLE4(NELEBX)
02540       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02541       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*),A24(*)
02542       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*),A34(*)
02543       DOUBLE PRECISION, INTENT(INOUT) ::                      A44(*)
02544       DOUBLE PRECISION, INTENT(IN) :: XMUL
02545       DOUBLE PRECISION, INTENT(IN) :: F(*)
02546       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02547       DOUBLE PRECISION, INTENT(IN) :: X(NELMAX,6),Y(NELMAX,6),Z(*)
02548         END SUBROUTINE
02549 !
02550         SUBROUTINE MT06FT
02551      &( A11 , A12 , A13 ,
02552      &        A22 , A23 ,
02553      &              A33 ,
02554      &  XMUL,SF,F,X,Y,Z,IKLE1,IKLE2,IKLE3,NBOR,NELEM,NELMAX)
02555       USE BIEF_DEF
02556       IMPLICIT NONE
02557       INTEGER, INTENT(IN) :: NBOR(*),NELEM,NELMAX
02558       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
02559       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02560       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*)
02561       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*)
02562       DOUBLE PRECISION, INTENT(IN) :: XMUL
02563       DOUBLE PRECISION, INTENT(IN) :: F(*)
02564       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02565       DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
02566         END SUBROUTINE
02567 !
02568         SUBROUTINE MT06FT2
02569      &( A11 , A12 , A13 ,
02570      &        A22 , A23 ,
02571      &              A33 ,
02572      &  XMUL,SF,F,SG,G,X,Y,Z,IKLE1,IKLE2,IKLE3,NBOR,NELEM,NELMAX)
02573       USE BIEF_DEF
02574       IMPLICIT NONE
02575       INTEGER, INTENT(IN) :: NBOR(*),NELEM,NELMAX
02576       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
02577       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02578       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*)
02579       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*)
02580       DOUBLE PRECISION, INTENT(IN) :: XMUL
02581       DOUBLE PRECISION, INTENT(IN) :: F(*),G(*)
02582       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SG
02583       DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
02584         END SUBROUTINE
02585 !
02586         SUBROUTINE MT06OO
02587      &(A11,A12,A22,XMUL,SF,F,LGSEG,IKLE1,IKLE2,NBOR,NELEM,NELMAX)
02588       USE BIEF_DEF
02589       IMPLICIT NONE
02590       INTEGER, INTENT(IN) :: NELEM,NELMAX
02591       INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),NBOR(NELMAX,2)
02592       DOUBLE PRECISION, INTENT(IN) :: XMUL
02593       DOUBLE PRECISION, INTENT(IN) :: F(*)
02594       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02595       DOUBLE PRECISION, INTENT(IN)    :: LGSEG(NELMAX)
02596       DOUBLE PRECISION, INTENT(INOUT) :: A11(NELMAX)
02597       DOUBLE PRECISION, INTENT(INOUT) :: A12(NELMAX)
02598       DOUBLE PRECISION, INTENT(INOUT) :: A22(NELMAX)
02599         END SUBROUTINE
02600 !
02601         SUBROUTINE MT06PP
02602      &( T,XM,XMUL,SF,F,Z,SURFAC,IKLE,NELEM,NELMAX)
02603       USE BIEF_DEF
02604       IMPLICIT NONE
02605       INTEGER, INTENT(IN) :: NELEM,NELMAX
02606       INTEGER, INTENT(IN) :: IKLE(NELMAX,6)
02607       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,6), XM(NELMAX,30)
02608       DOUBLE PRECISION, INTENT(IN) :: XMUL
02609       DOUBLE PRECISION, INTENT(IN) :: F(*)
02610       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02611       DOUBLE PRECISION, INTENT(IN) :: Z(*)
02612       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
02613         END SUBROUTINE
02614 !
02615         SUBROUTINE MT06TT(T,XM,XMUL,SF,F,X,Y,Z,IKLE,NELEM,NELMAX)
02616       USE BIEF_DEF
02617       IMPLICIT NONE
02618       INTEGER, INTENT(IN) :: NELEM,NELMAX
02619       INTEGER, INTENT(IN) :: IKLE(NELMAX,4)
02620       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,4),XM(NELMAX,6)
02621       DOUBLE PRECISION, INTENT(IN) :: XMUL
02622       DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
02623       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02624       DOUBLE PRECISION, INTENT(IN) :: F(*)
02625         END SUBROUTINE
02626 !
02627         SUBROUTINE MT07AA
02628      &( A11 , A12 , A13 ,
02629      &        A22 , A23 ,
02630      &              A33 ,
02631      &  XMUL,SF,F,SURFAC,NELEM,NELMAX)
02632       USE BIEF_DEF
02633       IMPLICIT NONE
02634       INTEGER, INTENT(IN) :: NELEM,NELMAX
02635       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02636       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*)
02637       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*)
02638       DOUBLE PRECISION, INTENT(IN) :: XMUL
02639       DOUBLE PRECISION, INTENT(IN) :: F(*)
02640       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02641       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
02642         END SUBROUTINE
02643 !
02644         SUBROUTINE MT07BB
02645      &( A11 , A12 , A13 , A14 ,
02646      &        A22 , A23 , A24 ,
02647      &              A33 , A34 ,
02648      &                    A44 ,
02649      &  XMUL,SF,F,SURFAC,NELEM,NELMAX)
02650       USE BIEF_DEF
02651       IMPLICIT NONE
02652       INTEGER, INTENT(IN) :: NELEM,NELMAX
02653       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02654       DOUBLE PRECISION, INTENT(INOUT) ::        A22(*),A23(*),A24(*)
02655       DOUBLE PRECISION, INTENT(INOUT) ::               A33(*),A34(*)
02656       DOUBLE PRECISION, INTENT(INOUT) ::                      A44(*)
02657       DOUBLE PRECISION, INTENT(IN) :: XMUL
02658       DOUBLE PRECISION, INTENT(IN) :: F(*)
02659       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02660       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
02661         END SUBROUTINE
02662 !
02663         SUBROUTINE MT08AA
02664      &(  A11 , A12 , A13 ,
02665      &   A21 , A22 , A23 ,
02666      &   A31 , A32 , A33 ,
02667      &   XMUL,SF,F,XEL,YEL,IKLE1,IKLE2,IKLE3,NELEM,NELMAX,ICOORD)
02668       USE BIEF_DEF
02669       IMPLICIT NONE
02670       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02671       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
02672       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02673       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
02674       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
02675       DOUBLE PRECISION, INTENT(IN) :: XMUL
02676       DOUBLE PRECISION, INTENT(IN) :: F(*)
02677       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02678       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02679         END SUBROUTINE
02680 !
02681         SUBROUTINE MT08AB
02682      &(  A11 , A12 , A13 , A14 ,
02683      &   A21 , A22 , A23 , A24 ,
02684      &   A31 , A32 , A33 , A34 ,
02685      &   XMUL,SF,F,XEL,YEL,IKLE1,IKLE2,IKLE3,IKLE4,
02686      &   NELEM,NELMAX,ICOORD)
02687       USE BIEF_DEF
02688       IMPLICIT NONE
02689       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02690       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
02691       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
02692       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02693       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
02694       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
02695       DOUBLE PRECISION, INTENT(IN) :: XMUL
02696       DOUBLE PRECISION, INTENT(IN) :: F(*)
02697       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02698       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02699         END SUBROUTINE
02700 !
02701         SUBROUTINE MT08BA
02702      &(  A11 , A12 , A13 ,
02703      &   A21 , A22 , A23 ,
02704      &   A31 , A32 , A33 ,
02705      &   A41 , A42 , A43 ,
02706      &   XMUL,SF,F,XEL,YEL,IKLE1,IKLE2,IKLE3,IKLE4,
02707      &   NELEM,NELMAX,ICOORD)
02708       USE BIEF_DEF
02709       IMPLICIT NONE
02710       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02711       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
02712       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
02713       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02714       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
02715       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
02716       DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*)
02717       DOUBLE PRECISION, INTENT(IN) :: XMUL
02718       DOUBLE PRECISION, INTENT(IN) :: F(*)
02719       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02720       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02721         END SUBROUTINE
02722 !
02723         SUBROUTINE MT08BB
02724      &(  A11 , A12 , A13 , A14 ,
02725      &   A21 , A22 , A23 , A24 ,
02726      &   A31 , A32 , A33 , A34 ,
02727      &   A41 , A42 , A43 , A44 ,
02728      &   XMUL,SF,F,XEL,YEL,IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,ICOORD)
02729       USE BIEF_DEF
02730       IMPLICIT NONE
02731       INTEGER LNG,LU
02732       COMMON/INFO/LNG,LU
02733       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02734       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
02735       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
02736       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02737       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
02738       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
02739       DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
02740       DOUBLE PRECISION, INTENT(IN) :: XMUL
02741       DOUBLE PRECISION, INTENT(IN) :: F(*)
02742       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02743       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02744         END SUBROUTINE
02745 !
02746         SUBROUTINE MT08PP
02747      &( T,XM,XMUL,SF,F,SURFAC,IKLE,NELEM,NELMAX)
02748       USE BIEF_DEF
02749       IMPLICIT NONE
02750       INTEGER, INTENT(IN) :: NELEM,NELMAX
02751       INTEGER, INTENT(IN) :: IKLE(NELMAX,6)
02752       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,6),XM(NELMAX,30)
02753       DOUBLE PRECISION, INTENT(IN) :: XMUL
02754       DOUBLE PRECISION, INTENT(IN) :: F(*)
02755       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02756       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
02757         END SUBROUTINE
02758 !
02759         SUBROUTINE MT08TT
02760      &( T,XM,XMUL,X,Y,Z,SF,F,IKLE,NELEM,NELMAX)
02761       USE BIEF_DEF
02762       IMPLICIT NONE
02763       INTEGER,INTENT(IN) :: NELEM,NELMAX
02764       INTEGER,INTENT(IN) :: IKLE(NELMAX,4)
02765       DOUBLE PRECISION,INTENT(INOUT) :: T(NELMAX,4),XM(NELMAX,12)
02766       DOUBLE PRECISION,INTENT(IN) :: XMUL
02767       DOUBLE PRECISION,INTENT(IN) :: F(*),X(*),Y(*),Z(*)
02768       TYPE(BIEF_OBJ),INTENT(IN) :: SF
02769         END SUBROUTINE
02770 !
02771         SUBROUTINE MT11AA
02772      &(  A11 , A12 , A13 ,
02773      &   A21 , A22 , A23 ,
02774      &   A31 , A32 , A33 ,
02775      &   XMUL,SF,F,XEL,YEL,IKLE1,IKLE2,IKLE3,NELEM,NELMAX,ICOORD)
02776       USE BIEF_DEF
02777       IMPLICIT NONE
02778       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02779       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
02780       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02781       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
02782       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
02783       DOUBLE PRECISION, INTENT(IN) :: XMUL
02784       DOUBLE PRECISION, INTENT(IN) :: F(*)
02785       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02786       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02787         END SUBROUTINE
02788 !
02789         SUBROUTINE MT11AB
02790      &(  A11 , A12 , A13 , A14 ,
02791      &   A21 , A22 , A23 , A24 ,
02792      &   A31 , A32 , A33 , A34 ,
02793      &   XMUL,SF,F,XEL,YEL,IKLE1,IKLE2,IKLE3,IKLE4,
02794      &   NELEM,NELMAX,ICOORD)
02795       USE BIEF_DEF
02796       IMPLICIT NONE
02797       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02798       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
02799       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
02800       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02801       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
02802       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
02803       DOUBLE PRECISION, INTENT(IN) :: XMUL
02804       DOUBLE PRECISION, INTENT(IN) :: F(*)
02805       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02806       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02807         END SUBROUTINE
02808 !
02809         SUBROUTINE MT11BA
02810      &(  A11 , A12 , A13 ,
02811      &   A21 , A22 , A23 ,
02812      &   A31 , A32 , A33 ,
02813      &   A41 , A42 , A43 ,
02814      &   XMUL,SF,F,XEL,YEL,IKLE1,IKLE2,IKLE3,IKLE4,
02815      &   NELEM,NELMAX,ICOORD)
02816       USE BIEF_DEF
02817       IMPLICIT NONE
02818       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02819       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
02820       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
02821       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02822       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
02823       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
02824       DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*)
02825       DOUBLE PRECISION, INTENT(IN) :: XMUL
02826       DOUBLE PRECISION, INTENT(IN) :: F(*)
02827       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02828       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02829         END SUBROUTINE
02830 !
02831         SUBROUTINE MT11BB
02832      &(  A11 , A12 , A13 , A14 ,
02833      &   A21 , A22 , A23 , A24 ,
02834      &   A31 , A32 , A33 , A34 ,
02835      &   A41 , A42 , A43 , A44 ,
02836      &   XMUL,SF,F,XEL,YEL,IKLE1,IKLE2,IKLE3,IKLE4,
02837      &   NELEM,NELMAX,ICOORD)
02838       USE BIEF_DEF
02839       IMPLICIT NONE
02840       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02841       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
02842       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
02843       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02844       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
02845       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
02846       DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
02847       DOUBLE PRECISION, INTENT(IN) :: XMUL
02848       DOUBLE PRECISION, INTENT(IN) :: F(*)
02849       TYPE(BIEF_OBJ), INTENT(IN) :: SF
02850       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02851         END SUBROUTINE
02852 !
02853         SUBROUTINE MT12AA
02854      &(  A11 , A12 , A13 ,
02855      &   A21 , A22 , A23 ,
02856      &   A31 , A32 , A33 ,
02857      &   XMUL,SF,SU,SV,F,U,V,
02858      &   XEL,YEL,SURDET,
02859      &   IKLE1,IKLE2,IKLE3,
02860      &   NELEM,NELMAX,ICOORD)
02861       USE BIEF_DEF
02862       IMPLICIT NONE
02863       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02864       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
02865       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02866       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
02867       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
02868       DOUBLE PRECISION, INTENT(IN) :: XMUL
02869       DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*)
02870       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SU,SV
02871       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02872       DOUBLE PRECISION, INTENT(IN) :: SURDET(NELMAX)
02873         END SUBROUTINE
02874 !
02875         SUBROUTINE MT12AB
02876      &(  A11 , A12 , A13 , A14 ,
02877      &   A21 , A22 , A23 , A24 ,
02878      &   A31 , A32 , A33 , A34 ,
02879      &   XMUL,SF,SU,SV,F,U,V,
02880      &   XEL,YEL,SURFAC,
02881      &   IKLE1,IKLE2,IKLE3,IKLE4,
02882      &   NELEM,NELMAX,ICOORD)
02883       USE BIEF_DEF
02884       IMPLICIT NONE
02885       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02886       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
02887       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
02888       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02889       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
02890       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
02891       DOUBLE PRECISION, INTENT(IN) :: XMUL
02892       DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*)
02893       TYPE(BIEF_OBJ), INTENT(IN)   :: SF,SU,SV
02894       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02895       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
02896         END SUBROUTINE
02897 !
02898         SUBROUTINE MT12BA
02899      &(  A11 , A12 , A13 ,
02900      &   A21 , A22 , A23 ,
02901      &   A31 , A32 , A33 ,
02902      &   A41 , A42 , A43 ,
02903      &   XMUL,SF,SU,SV,F,U,V,
02904      &   XEL,YEL,SURFAC,
02905      &   IKLE1,IKLE2,IKLE3,IKLE4,
02906      &   NELEM,NELMAX,ICOORD)
02907       USE BIEF_DEF
02908       IMPLICIT NONE
02909       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02910       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
02911       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
02912       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02913       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
02914       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
02915       DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*)
02916       DOUBLE PRECISION, INTENT(IN) :: XMUL
02917       DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*)
02918       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SU,SV
02919       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02920       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
02921         END SUBROUTINE
02922 !
02923         SUBROUTINE MT12BB
02924      &(  A11 , A12 , A13 , A14 ,
02925      &   A21 , A22 , A23 , A24 ,
02926      &   A31 , A32 , A33 , A34 ,
02927      &   A41 , A42 , A43 , A44 ,
02928      &   XMUL,SF,SU,SV,F,U,V,
02929      &   XEL,YEL,
02930      &   IKLE1,IKLE2,IKLE3,IKLE4,
02931      &   NELEM,NELMAX,ICOORD)
02932       USE BIEF_DEF
02933       IMPLICIT NONE
02934       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02935       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
02936       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
02937       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02938       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
02939       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
02940       DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
02941       DOUBLE PRECISION, INTENT(IN) :: XMUL
02942       DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*)
02943       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SU,SV
02944       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02945         END SUBROUTINE
02946 !
02947         SUBROUTINE MT13AA
02948      &(  A11 , A12 , A13 ,
02949      &   A21 , A22 , A23 ,
02950      &   A31 , A32 , A33 ,
02951      &   XMUL,XEL,YEL,NELEM,NELMAX,ICOORD)
02952       USE BIEF_DEF
02953       IMPLICIT NONE
02954       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02955       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02956       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
02957       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
02958       DOUBLE PRECISION, INTENT(IN) :: XMUL
02959       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02960         END SUBROUTINE
02961 !
02962         SUBROUTINE MT13AB
02963      &(  A11 , A12 , A13 , A14 ,
02964      &   A21 , A22 , A23 , A24 ,
02965      &   A31 , A32 , A33 , A34 ,
02966      &   XMUL,XEL,YEL,NELEM,NELMAX,ICOORD)
02967       USE BIEF_DEF
02968       IMPLICIT NONE
02969       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02970       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
02971       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
02972       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
02973       DOUBLE PRECISION, INTENT(IN) :: XMUL
02974       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02975         END SUBROUTINE
02976 !
02977         SUBROUTINE MT13BA
02978      &(  A11 , A12 , A13 ,
02979      &   A21 , A22 , A23 ,
02980      &   A31 , A32 , A33 ,
02981      &   A41 , A42 , A43 ,
02982      &   XMUL,XEL,YEL,NELEM,NELMAX,ICOORD)
02983       USE BIEF_DEF
02984       IMPLICIT NONE
02985       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
02986       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
02987       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
02988       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
02989       DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*)
02990       DOUBLE PRECISION, INTENT(IN) :: XMUL
02991       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
02992         END SUBROUTINE
02993 !
02994         SUBROUTINE MT13BB
02995      &(  A11 , A12 , A13 , A14 ,
02996      &   A21 , A22 , A23 , A24 ,
02997      &   A31 , A32 , A33 , A34 ,
02998      &   A41 , A42 , A43 , A44 ,
02999      &   XMUL,XEL,YEL,NELEM,NELMAX,ICOORD)
03000       USE BIEF_DEF
03001       IMPLICIT NONE
03002       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
03003       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
03004       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
03005       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
03006       DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
03007       DOUBLE PRECISION, INTENT(IN) :: XMUL
03008       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
03009         END SUBROUTINE
03010 !
03011         SUBROUTINE MT14PP
03012      &( T,XM,PPQ,LEGO,XMUL,SU,SV,SW,U,V,W,SF,SG,SH,F,G,H,
03013      &  SURFAC,IKLE,NELEM,NELMAX,SIGMAG,SPECAD)
03014       USE BIEF_DEF
03015       IMPLICIT NONE
03016       INTEGER, INTENT(IN) :: NELEM,NELMAX
03017       INTEGER, INTENT(IN) :: IKLE(NELMAX,6),PPQ(6,6)
03018       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,6),XM(NELMAX,30)
03019       DOUBLE PRECISION, INTENT(IN) :: XMUL
03020       DOUBLE PRECISION, INTENT(IN) :: U(*),V(*),W(*),F(*),G(*),H(*)
03021       LOGICAL, INTENT(IN) :: LEGO,SIGMAG,SPECAD
03022       TYPE(BIEF_OBJ), INTENT(IN) :: SU,SV,SW,SF,SG,SH
03023       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
03024         END SUBROUTINE
03025 !
03026         SUBROUTINE MT15PP
03027      &(T,XM,PPQ,XMUL,SF,F,ZPT,SURFAC,IKLE,NELEM,NELMAX)
03028       USE BIEF_DEF
03029       IMPLICIT NONE
03030       INTEGER, INTENT(IN) :: NELEM,NELMAX
03031       INTEGER, INTENT(IN) :: IKLE(NELMAX,6),PPQ(6,6)
03032       DOUBLE PRECISION, INTENT(INOUT) :: T(NELMAX,6),XM(NELMAX,30)
03033       DOUBLE PRECISION, INTENT(IN) :: XMUL
03034       DOUBLE PRECISION, INTENT(IN) :: F(*),ZPT(*)
03035       TYPE(BIEF_OBJ), INTENT(IN)   :: SF
03036       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
03037         END SUBROUTINE
03038 !
03039         SUBROUTINE MT99AA
03040      &( A11 , A12 , A13 ,
03041      &  A21 , A22 , A23 ,
03042      &  A31 , A32 , A33 ,
03043      &  XMUL,SF,F,XEL,YEL,
03044      &  SURFAC,IKLE1,IKLE2,IKLE3,NELEM,NELMAX,FORMUL,TDIA,TEXT)
03045       USE BIEF_DEF
03046       IMPLICIT NONE
03047       INTEGER, INTENT(IN) :: NELEM,NELMAX
03048       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
03049       CHARACTER(LEN=1), INTENT(INOUT) :: TDIA,TEXT
03050       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
03051       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
03052       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
03053       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
03054       DOUBLE PRECISION, INTENT(IN) :: XMUL
03055       DOUBLE PRECISION, INTENT(IN) :: F(*)
03056       TYPE(BIEF_OBJ), INTENT(IN)   :: SF
03057       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
03058       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
03059         END SUBROUTINE
03060 !
03061         SUBROUTINE MT99BB
03062      &( A11 , A12 , A13 , A14 ,
03063      &  A21 , A22 , A23 , A24 ,
03064      &  A31 , A32 , A33 , A34 ,
03065      &  A41 , A42 , A43 , A44 ,
03066      &  XMUL,SF,F,XEL,YEL,
03067      &  SURFAC,IKLE1,IKLE2,IKLE3,NELEM,NELMAX,FORMUL,TDIA,TEXT)
03068       USE BIEF_DEF
03069       IMPLICIT NONE
03070       INTEGER, INTENT(IN) :: NELEM,NELMAX
03071       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
03072       CHARACTER(LEN=1), INTENT(INOUT) :: TDIA,TEXT
03073       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
03074       DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
03075       DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
03076       DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
03077       DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
03078       DOUBLE PRECISION, INTENT(IN) :: XMUL
03079       DOUBLE PRECISION, INTENT(IN) :: F(*)
03080       TYPE(BIEF_OBJ), INTENT(IN)   :: SF
03081       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,3),YEL(NELMAX,3)
03082       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
03083         END SUBROUTINE
03084 !
03085         SUBROUTINE MV0202
03086      &(OP, X , DA,TYPDIA,XA12,XA21,TYPEXT, Y,C,
03087      & IKLE1,IKLE2,
03088      & NPOIN,NELEM,W1,W2)
03089       IMPLICIT NONE
03090       INTEGER, INTENT(IN) :: NELEM,NPOIN
03091       INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*)
03092       DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*)
03093       DOUBLE PRECISION, INTENT(INOUT) :: X(*)
03094       DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
03095       DOUBLE PRECISION, INTENT(IN) :: XA12(*),XA21(*)
03096       DOUBLE PRECISION, INTENT(IN) :: C
03097       CHARACTER*(*), INTENT(IN) :: OP,TYPDIA,TYPEXT
03098         END SUBROUTINE
03099 !
03100         SUBROUTINE MV0303
03101      &(OP, X , DA,TYPDIA,XA12,XA13,XA21,XA23,XA31,XA32,
03102      & TYPEXT, Y,C,IKLE1,IKLE2,IKLE3,NPOIN,NELEM,W1,W2,W3)
03103       IMPLICIT NONE
03104       INTEGER, INTENT(IN) :: NELEM,NPOIN
03105       INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*)
03106       DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*)
03107       DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
03108       DOUBLE PRECISION, INTENT(INOUT) :: X(*)
03109       DOUBLE PRECISION, INTENT(IN) :: XA12(*),XA13(*),XA23(*)
03110       DOUBLE PRECISION, INTENT(IN) :: XA21(*),XA31(*),XA32(*)
03111       DOUBLE PRECISION, INTENT(IN) ::C
03112       CHARACTER(LEN=8), INTENT(IN) :: OP
03113       CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
03114         END SUBROUTINE
03115 !
03116         SUBROUTINE MV0304
03117      &(OP, X , DA,TYPDIA,
03118      & XA12,XA13,XA14,XA21,XA23,XA24,XA31,XA32,XA34,
03119      & TYPEXT, Y,C,
03120      & IKLE1,IKLE2,IKLE3,IKLE4,
03121      & NPOIN,NELEM,W1,W2,W3,W4)
03122       IMPLICIT NONE
03123       INTEGER, INTENT(IN) :: NELEM,NPOIN
03124       INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*),IKLE4(*)
03125       DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*),W4(*)
03126       DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
03127       DOUBLE PRECISION, INTENT(INOUT) :: X(*)
03128       DOUBLE PRECISION, INTENT(IN) :: XA12(*),XA13(*),XA14(*)
03129       DOUBLE PRECISION, INTENT(IN) :: XA21(*),XA23(*),XA24(*)
03130       DOUBLE PRECISION, INTENT(IN) :: XA31(*),XA32(*),XA34(*)
03131       DOUBLE PRECISION, INTENT(IN) :: C
03132       CHARACTER(LEN=8), INTENT(IN) :: OP
03133       CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
03134         END SUBROUTINE
03135 !
03136         SUBROUTINE MV0403
03137      &(OP, X , DA,TYPDIA,
03138      & XA12,XA13,XA21,XA23,XA31,XA32,XA41,XA42,XA43,
03139      & TYPEXT, Y,C,
03140      & IKLE1,IKLE2,IKLE3,IKLE4,
03141      & NPOIN,NELEM,W1,W2,W3,W4)
03142       IMPLICIT NONE
03143       INTEGER, INTENT(IN) :: NELEM,NPOIN
03144       INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*),IKLE4(*)
03145       DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*),W4(*)
03146       DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
03147       DOUBLE PRECISION, INTENT(INOUT) :: X(*)
03148       DOUBLE PRECISION, INTENT(IN) :: XA12(*),XA13(*),XA21(*)
03149       DOUBLE PRECISION, INTENT(IN) :: XA23(*),XA31(*),XA32(*)
03150       DOUBLE PRECISION, INTENT(IN) :: XA41(*),XA42(*),XA43(*)
03151       DOUBLE PRECISION, INTENT(IN) :: C
03152       CHARACTER(LEN=8), INTENT(IN) :: OP
03153       CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
03154         END SUBROUTINE
03155 !
03156         SUBROUTINE MV0404
03157      &(OP, X , DA,TYPDIA,
03158      & XA12,XA13,XA14,XA21,XA23,XA24,XA31,XA32,XA34,XA41,XA42,XA43,
03159      & TYPEXT, Y,C,IKLE1,IKLE2,IKLE3,IKLE4,NPOIN,NELEM,W1,W2,W3,W4)
03160       IMPLICIT NONE
03161       INTEGER, INTENT(IN) :: NELEM,NPOIN
03162       INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*),IKLE4(*)
03163       DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*),W4(*)
03164       DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
03165       DOUBLE PRECISION, INTENT(INOUT) :: X(*)
03166       DOUBLE PRECISION, INTENT(IN) :: XA12(*),XA13(*),XA14(*)
03167       DOUBLE PRECISION, INTENT(IN) :: XA21(*),XA23(*),XA24(*)
03168       DOUBLE PRECISION, INTENT(IN) :: XA31(*),XA32(*),XA34(*)
03169       DOUBLE PRECISION, INTENT(IN) :: XA41(*),XA42(*),XA43(*)
03170       DOUBLE PRECISION, INTENT(IN) :: C
03171       CHARACTER(LEN=8), INTENT(IN) :: OP
03172       CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
03173         END SUBROUTINE
03174 !
03175         SUBROUTINE MV0606
03176      &(OP, X , DA,TYPDIA,XA,TYPEXT, Y,C,
03177      & IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,
03178      & NPOIN,NELEM,NELMAX,W1,W2,W3,W4,W5,W6)
03179       IMPLICIT NONE
03180       INTEGER, INTENT(IN) :: NELEM,NELMAX,NPOIN
03181       INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),IKLE3(*)
03182       INTEGER, INTENT(IN) :: IKLE4(*),IKLE5(*),IKLE6(*)
03183       DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*)
03184       DOUBLE PRECISION, INTENT(INOUT) :: W4(*),W5(*),W6(*)
03185       DOUBLE PRECISION, INTENT(IN) :: Y(*),DA(*)
03186       DOUBLE PRECISION, INTENT(INOUT) :: X(*)
03187       DOUBLE PRECISION, INTENT(IN) :: XA(NELMAX,*)
03188       DOUBLE PRECISION, INTENT(IN) :: C
03189       CHARACTER(LEN=8), INTENT(IN) :: OP
03190       CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
03191         END SUBROUTINE
03192 !
03193         SUBROUTINE MVSEG
03194      &(OP, X , DA,TYPDIA,XA1,XA2,
03195      & TYPEXT, Y,C,NPOIN,NELEM,NSEG1,NSEG2,GLOSEG1,GLOSEG2,IELM1,IELM2)
03196       IMPLICIT NONE
03197       INTEGER, INTENT(IN) :: NPOIN
03198       INTEGER, INTENT(IN) :: GLOSEG1(*),GLOSEG2(*)
03199       INTEGER, INTENT(IN) :: NSEG1,NSEG2,NELEM,IELM1,IELM2
03200       DOUBLE PRECISION, INTENT(IN)    :: Y(*),DA(*)
03201       DOUBLE PRECISION, INTENT(INOUT) :: X(*)
03202       DOUBLE PRECISION, INTENT(IN)    :: XA1(*),XA2(*)
03203       DOUBLE PRECISION, INTENT(IN)    :: C
03204       CHARACTER(LEN=8),INTENT(IN) :: OP
03205       CHARACTER(LEN=1),INTENT(IN) :: TYPDIA,TYPEXT
03206         END SUBROUTINE
03207 !
03208         SUBROUTINE MW0303
03209      &(OP, X , DA,TYPDIA,XAS,TYPEXT, Y,C,
03210      & IKLEM1,DIMIKM,LIMVOI,MXPTVS,NPMAX,NPOIN,TRAV)
03211       IMPLICIT NONE
03212       INTEGER, INTENT(IN) :: DIMIKM,MXPTVS,NPMAX,NPOIN
03213       INTEGER, INTENT(IN) :: IKLEM1(DIMIKM,4,2),LIMVOI(11,2)
03214       DOUBLE PRECISION, INTENT(INOUT) :: X(*),TRAV(*)
03215       DOUBLE PRECISION, INTENT(IN) :: DA(*),Y(*)
03216       DOUBLE PRECISION, INTENT(IN) :: XAS(*),C
03217       CHARACTER(LEN=8), INTENT(IN) :: OP
03218       CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
03219         END SUBROUTINE
03220 !
03221         SUBROUTINE MXPTEL31(NELEM,NPOIN,MXELVS,IKLES,MXPTVS)
03222       IMPLICIT NONE
03223       INTEGER,           INTENT(IN)   :: NELEM
03224       INTEGER,           INTENT(IN)   :: NPOIN
03225       INTEGER,           INTENT(IN)   :: MXELVS
03226       INTEGER,           INTENT(IN)   :: IKLES(4,NELEM)
03227       INTEGER,           INTENT(OUT)  :: MXPTVS
03228         END SUBROUTINE
03229 !
03230         SUBROUTINE MXPTEL
03231      &(MXPTVS,MXELVS,IKLES,IELM,NPOIN,NELEM,NDP,IPOBO,LISTIN)
03232       IMPLICIT NONE
03233       INTEGER, INTENT(INOUT) :: MXPTVS,MXELVS
03234       INTEGER, INTENT(IN)    :: IELM,NDP,NPOIN,NELEM
03235       INTEGER, INTENT(IN)    :: IKLES(NDP,NELEM),IPOBO(NPOIN)
03236       LOGICAL, INTENT(IN)    :: LISTIN
03237         END SUBROUTINE
03238 !
03239         INTEGER FUNCTION BIEF_NBFEL(IELM,MESH)
03240           USE BIEF_DEF
03241           IMPLICIT NONE
03242           INTEGER, INTENT(IN) :: IELM
03243           TYPE(BIEF_MESH), INTENT(IN) :: MESH
03244         END FUNCTION
03245 !
03246         INTEGER FUNCTION BIEF_NBMPTS(IELM,MESH)
03247           USE BIEF_DEF
03248           IMPLICIT NONE
03249           INTEGER, INTENT(IN) :: IELM
03250           TYPE(BIEF_MESH), INTENT(IN) :: MESH
03251         END FUNCTION
03252 !
03253         INTEGER FUNCTION BIEF_NBPEL(IELM,MESH)
03254           USE BIEF_DEF
03255           IMPLICIT NONE
03256           INTEGER, INTENT(IN) :: IELM
03257           TYPE(BIEF_MESH), INTENT(IN) :: MESH
03258         END FUNCTION
03259 !
03260         INTEGER FUNCTION BIEF_NBPTS(IELM,MESH)
03261           USE BIEF_DEF
03262           IMPLICIT NONE
03263           INTEGER, INTENT(IN) :: IELM
03264           TYPE(BIEF_MESH), INTENT(IN) :: MESH
03265         END FUNCTION
03266 !
03267         INTEGER FUNCTION BIEF_NBSEG(IELM,MESH)
03268           USE BIEF_DEF
03269           IMPLICIT NONE
03270           INTEGER, INTENT(IN) :: IELM
03271           TYPE(BIEF_MESH), INTENT(IN) :: MESH
03272         END FUNCTION
03273 !
03274         INTEGER FUNCTION BIEF_NBSEGEL(IELM,MESH)
03275           USE BIEF_DEF
03276           IMPLICIT NONE
03277           INTEGER, INTENT(IN) :: IELM
03278           TYPE(BIEF_MESH), INTENT(IN) :: MESH
03279         END FUNCTION
03280 !
03281         SUBROUTINE NORMAB
03282      &(XNEBOR,YNEBOR,XSGBOR,YSGBOR,DISBOR,SURFAC,NELMAX,
03283      & NELBOR,NULONE,LGSEG,NPTFR,MESH,T1,XEL,YEL,IKLBOR,NELEBX,NELEB)
03284       USE BIEF_DEF
03285       IMPLICIT NONE
03286       INTEGER, INTENT(IN) :: NPTFR,NELMAX,NELEBX,NELEB
03287       INTEGER, INTENT(IN) :: NELBOR(NELEBX)
03288       INTEGER, INTENT(IN) :: NULONE(NELEBX,2),IKLBOR(NELEBX,2)
03289       DOUBLE PRECISION, INTENT(INOUT) :: XNEBOR(NPTFR,2),YNEBOR(NPTFR,2)
03290       DOUBLE PRECISION, INTENT(INOUT) :: XSGBOR(NELEBX,4)
03291       DOUBLE PRECISION, INTENT(INOUT) :: YSGBOR(NELEBX,4)
03292       DOUBLE PRECISION, INTENT(INOUT) :: DISBOR(NPTFR),LGSEG(NELEBX)
03293       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
03294       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,3),YEL(NELMAX,3)
03295       TYPE(BIEF_OBJ), INTENT(INOUT)  :: T1
03296       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
03297         END SUBROUTINE
03298 !
03299         SUBROUTINE OM( OP , M , N , D , C , MESH )
03300           USE BIEF_DEF
03301           IMPLICIT NONE
03302           DOUBLE PRECISION, INTENT(IN)    :: C
03303           CHARACTER(LEN=8), INTENT(IN)    :: OP
03304           TYPE(BIEF_OBJ)  , INTENT(INOUT), TARGET :: M
03305           TYPE(BIEF_OBJ)  , INTENT(IN)   , TARGET :: N
03306           TYPE(BIEF_OBJ)  , INTENT(IN)    :: D
03307           TYPE(BIEF_MESH) , INTENT(IN)    :: MESH
03308         END SUBROUTINE
03309 !
03310         SUBROUTINE OM0101(OP ,  DM,TYPDIM,XM,TYPEXM,
03311      &                    DN,TYPDIN,XN,TYPEXN,   D,C,
03312      &                    IKLE,NELEM,NELMAX,NDIAG)
03313           USE BIEF_DEF
03314           IMPLICIT NONE
03315           INTEGER, INTENT(IN) :: NELEM,NELMAX,NDIAG
03316           INTEGER, INTENT(IN) :: IKLE(NELMAX,2)
03317           CHARACTER(LEN=8), INTENT(IN)    :: OP
03318           DOUBLE PRECISION, INTENT(IN)    :: DN(*),D(*),XN(NELMAX,*)
03319           DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(NELMAX,*)
03320           CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03321           DOUBLE PRECISION, INTENT(IN)    :: C
03322         END SUBROUTINE
03323 !
03324         SUBROUTINE OM1101(OP ,  DM,TYPDIM,XM,TYPEXM,
03325      &                    DN,TYPDIN,XN,TYPEXN,   C,
03326      &                    NULONE,NELBOR,NBOR,NELMAX,NDIAG,NPTFR,
03327      &                    NELEBX,NELEB)
03328           USE BIEF_DEF
03329           IMPLICIT NONE
03330           INTEGER, INTENT(IN)             :: NELMAX,NDIAG,NPTFR
03331           INTEGER, INTENT(IN)             :: NELEBX,NELEB
03332           CHARACTER(LEN=8), INTENT(IN)    :: OP
03333           INTEGER, INTENT(IN)             :: NULONE(*),NELBOR(*),NBOR(*)
03334           DOUBLE PRECISION, INTENT(IN)    :: DN(*),XN(*)
03335           DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(NELMAX,*)
03336           CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03337           DOUBLE PRECISION, INTENT(IN)    :: C
03338         END SUBROUTINE
03339 !
03340         SUBROUTINE OM1201(OP ,  DM,TYPDIM,XM,TYPEXM,
03341      &                    DN,TYPDIN,XN,TYPEXN,   C,
03342      &                    NULONE,NELBOR,NBOR,NELMAX,NDIAG,NPTFR,
03343      &                    NELEBX,NELEB)
03344           USE BIEF_DEF
03345           IMPLICIT NONE
03346           INTEGER, INTENT(IN)             :: NELMAX,NDIAG,NPTFR
03347           INTEGER, INTENT(IN)             :: NELEBX,NELEB
03348           CHARACTER(LEN=8), INTENT(IN)    :: OP
03349           INTEGER, INTENT(IN)             :: NULONE(*),NELBOR(*),NBOR(*)
03350           DOUBLE PRECISION, INTENT(IN)    :: DN(*),XN(*)
03351           DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(NELMAX,*)
03352           CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03353           DOUBLE PRECISION, INTENT(IN)    :: C
03354         END SUBROUTINE
03355 !
03356         SUBROUTINE OM1111(OP ,  DM,TYPDIM,XM,TYPEXM,
03357      &                    DN,TYPDIN,XN,TYPEXN,   D,C,
03358      &                    IKLE,NELEM,NELMAX,NDIAG)
03359           USE BIEF_DEF
03360           IMPLICIT NONE
03361           INTEGER, INTENT(IN) :: NELEM,NELMAX,NDIAG
03362           INTEGER, INTENT(IN) :: IKLE(NELMAX,3)
03363           CHARACTER(LEN=8), INTENT(IN)    :: OP
03364           DOUBLE PRECISION, INTENT(IN)    :: DN(*),D(*),XN(NELMAX,*)
03365           DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(NELMAX,*)
03366           CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03367           DOUBLE PRECISION, INTENT(IN)    :: C
03368         END SUBROUTINE
03369 !
03370         SUBROUTINE OM1211(OP ,  DM,TYPDIM,XM,TYPEXM,
03371      &                    DN,TYPDIN,XN,TYPEXN,   D,C,
03372      &                    IKLE,NELEM,NELMAX,NDIAG)
03373           USE BIEF_DEF
03374           IMPLICIT NONE
03375           INTEGER, INTENT(IN) :: NELEM,NELMAX,NDIAG
03376           INTEGER, INTENT(IN) :: IKLE(NELMAX,3)
03377           CHARACTER(LEN=8), INTENT(IN)    :: OP
03378           DOUBLE PRECISION, INTENT(IN)    :: DN(*),D(*),XN(NELMAX,*)
03379           DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(NELMAX,*)
03380           CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03381           DOUBLE PRECISION, INTENT(IN)    :: C
03382         END SUBROUTINE
03383 !
03384         SUBROUTINE OM1112(OP ,  DM,TYPDIM,XM,TYPEXM,
03385      &                    DN,TYPDIN,XN,TYPEXN,   D,C,
03386      &                    IKLE,NELEM,NELMAX,NDIAG)
03387           USE BIEF_DEF
03388           IMPLICIT NONE
03389           INTEGER, INTENT(IN) :: NELEM,NELMAX,NDIAG
03390           INTEGER, INTENT(IN) :: IKLE(NELMAX,3)
03391           CHARACTER(LEN=8), INTENT(IN)    :: OP
03392           DOUBLE PRECISION, INTENT(IN)    :: DN(*),D(*),XN(NELMAX,*)
03393           DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(NELMAX,*)
03394           CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03395           DOUBLE PRECISION, INTENT(IN)    :: C
03396         END SUBROUTINE
03397 !
03398         SUBROUTINE OM1302
03399      &(OP ,  DM,TYPDIM,XM,TYPEXM,   DN,TYPDIN,XN,TYPEXN,   C,
03400      & NULONE,NELBOR,NBOR,NELMAX,NDIAG,NPTFR,NELEBX,NELEB)
03401       IMPLICIT NONE
03402       INTEGER, INTENT(IN)             :: NELMAX,NDIAG,NPTFR,NELEBX,NELEB
03403       CHARACTER(LEN=8), INTENT(IN)    :: OP
03404       INTEGER, INTENT(IN)             :: NULONE(NELEBX),NELBOR(NELEBX)
03405       INTEGER, INTENT(IN)             :: NBOR(*)
03406       DOUBLE PRECISION, INTENT(IN)    :: DN(*),XN(*)
03407       DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(NELMAX,*)
03408       CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03409       DOUBLE PRECISION, INTENT(IN)    :: C
03410         END SUBROUTINE
03411 !
03412         SUBROUTINE OM2121(OP ,  DM,TYPDIM,XM,TYPEXM,
03413      &                    DN,TYPDIN,XN,TYPEXN,   D,C,
03414      &                    IKLE,NELEM,NELMAX,NDIAG)
03415           USE BIEF_DEF
03416           IMPLICIT NONE
03417           INTEGER, INTENT(IN) :: NELEM,NELMAX,NDIAG
03418           INTEGER, INTENT(IN) :: IKLE(NELMAX,4)
03419           CHARACTER(LEN=8), INTENT(IN)    :: OP
03420           DOUBLE PRECISION, INTENT(IN)    :: DN(*),D(*),XN(NELMAX,*)
03421           DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(NELMAX,*)
03422           CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03423           DOUBLE PRECISION, INTENT(IN)    :: C
03424         END SUBROUTINE
03425 !
03426         SUBROUTINE OM4141(OP ,  DM,TYPDIM,XM,TYPEXM,
03427      &                    DN,TYPDIN,XN,TYPEXN,   D,C,
03428      &                    IKLE,NELEM,NELMAX,NDIAG)
03429           USE BIEF_DEF
03430           IMPLICIT NONE
03431           INTEGER, INTENT(IN) :: NELEM,NELMAX,NDIAG
03432           INTEGER, INTENT(IN) :: IKLE(NELMAX,6)
03433           CHARACTER(LEN=8), INTENT(IN)    :: OP
03434           DOUBLE PRECISION, INTENT(IN)    :: DN(*),D(*),XN(NELMAX,*)
03435           DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(NELMAX,*)
03436           CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03437           DOUBLE PRECISION, INTENT(IN)    :: C
03438         END SUBROUTINE
03439 !
03440         SUBROUTINE OM4111(OP ,  DM,TYPDIM,XM,TYPEXM,
03441      &                    DN,TYPDIN,XN,TYPEXN,   C,
03442      &                    SIZDN,SZMDN,SIZXN,SZMXN,NETAGE,NELMAX3D)
03443           USE BIEF_DEF
03444           IMPLICIT NONE
03445           INTEGER, INTENT(IN) :: NETAGE,SIZDN,SZMXN,SZMDN,SIZXN,NELMAX3D
03446           CHARACTER(LEN=8), INTENT(IN)    :: OP
03447           DOUBLE PRECISION, INTENT(IN)    :: DN(*),XN(SZMXN,*)
03448           DOUBLE PRECISION, INTENT(INOUT) :: DM(SZMDN,*)
03449           DOUBLE PRECISION, INTENT(INOUT) :: XM(SZMXN,NETAGE,*)
03450           CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03451           DOUBLE PRECISION, INTENT(IN)    :: C
03452         END SUBROUTINE
03453 !
03454         SUBROUTINE OM4121(OP ,  DM,TYPDIM,XM,TYPEXM,
03455      &                    DN,TYPDIN,XN,TYPEXN,   C,
03456      &                    NULONE,NELBOR,NBOR,NELMAX,SIZDN,SIZXN,SZMXN)
03457           USE BIEF_DEF
03458           IMPLICIT NONE
03459           INTEGER, INTENT(IN)             :: NELMAX,SIZDN,SIZXN,SZMXN
03460           CHARACTER(LEN=8), INTENT(IN)    :: OP
03461           INTEGER, INTENT(IN)             :: NULONE(*),NELBOR(*),NBOR(*)
03462           DOUBLE PRECISION, INTENT(IN)    :: DN(*),XN(NELMAX,*)
03463           DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(NELMAX,*)
03464           CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03465           DOUBLE PRECISION, INTENT(IN)    :: C
03466         END SUBROUTINE
03467 !
03468         SUBROUTINE OM5161
03469      &(OP ,  DM,TYPDIM,XM,TYPEXM,   DN,TYPDIN,XN,TYPEXN,   C,
03470      & NULONE,NELBOR,NBOR,NELMAX,SIZDN,SIZXN,SZMXN)
03471       IMPLICIT NONE
03472       INTEGER, INTENT(IN)             :: NELMAX,SIZDN,SIZXN,SZMXN
03473       CHARACTER(LEN=8), INTENT(IN)    :: OP
03474       INTEGER, INTENT(IN)             :: NULONE(SZMXN,3)
03475       INTEGER, INTENT(IN)             :: NELBOR(*),NBOR(*)
03476       DOUBLE PRECISION, INTENT(IN)    :: DN(*),XN(SZMXN,*)
03477       DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(NELMAX,*)
03478       CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03479       DOUBLE PRECISION, INTENT(IN)    :: C
03480         END SUBROUTINE
03481 !
03482         SUBROUTINE OMSEGBOR
03483      &(OP ,  DM,TYPDIM,XM,TYPEXM,   DN,TYPDIN,XN,TYPEXN,   D,C,
03484      & NDIAG,NSEG1,NSEG2,NBOR,NPTFR,IELM1,IELN1,NSEG11,
03485      & IKLBOR,NELEBX,NELEB)
03486       IMPLICIT NONE
03487       INTEGER, INTENT(IN) :: NDIAG,NSEG1,NSEG2,NPTFR,IELM1,IELN1,NSEG11
03488       INTEGER, INTENT(IN) :: NELEBX,NELEB
03489       INTEGER, INTENT(IN) :: NBOR(*),IKLBOR(NELEBX,*)
03490       CHARACTER(LEN=8), INTENT(IN)    :: OP
03491       DOUBLE PRECISION, INTENT(IN)    :: DN(*),D(*),XN(NELEBX,*)
03492       DOUBLE PRECISION, INTENT(INOUT) :: DM(*),XM(NSEG1,*)
03493       CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03494       DOUBLE PRECISION, INTENT(IN)    :: C
03495         END SUBROUTINE
03496 !
03497         SUBROUTINE OMBORSEG
03498      &(OP ,  DM,TYPDIM,XM,TYPEXM,   DN,TYPDIN,XN,TYPEXN,   D,C,
03499      & NDIAG,MSEG1,MSEG2,NSEG1,NSEG2,GLOSEG,SIZGLO,NBOR,NPTFR)
03500       INTEGER, INTENT(IN) :: NDIAG,MSEG1,MSEG2,NSEG1,NSEG2,SIZGLO,NPTFR
03501       INTEGER, INTENT(IN) :: GLOSEG(SIZGLO,2)
03502       INTEGER, INTENT(IN) :: NBOR(*)
03503       CHARACTER(LEN=8), INTENT(IN)    :: OP
03504       DOUBLE PRECISION, INTENT(IN)    :: DN(*),D(*)
03505 !     XM AND XN MAY ONLY BE OF SIZE NSEG1 IF THE MATRIX IS SYMMETRICAL
03506 !     SIZE GIVEN HERE ONLY TO CHECK BOUNDS
03507       DOUBLE PRECISION, INTENT(INOUT) :: XM(MSEG1+MSEG2)
03508       DOUBLE PRECISION, INTENT(IN)    :: XN(NSEG1+NSEG2)
03509       CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03510       DOUBLE PRECISION, INTENT(INOUT) :: DM(*)
03511       DOUBLE PRECISION, INTENT(IN)    :: C
03512         END SUBROUTINE
03513 !
03514         SUBROUTINE OMSEG
03515      &(OP ,  DM,TYPDIM,XM,TYPEXM,   DN,TYPDIN,XN,TYPEXN,   D,C,
03516      & NDIAG,NSEG1,NSEG2,GLOSEG,SIZGLO)
03517       IMPLICIT NONE
03518       INTEGER, INTENT(IN) :: NDIAG,NSEG1,NSEG2,SIZGLO
03519       INTEGER, INTENT(IN) :: GLOSEG(SIZGLO,2)
03520       CHARACTER(LEN=8), INTENT(IN)    :: OP
03521       DOUBLE PRECISION, INTENT(IN)    :: DN(*),D(*)
03522       DOUBLE PRECISION, INTENT(INOUT) :: XM(NSEG1+NSEG2)
03523       DOUBLE PRECISION, INTENT(IN)    :: XN(NSEG1+NSEG2)
03524       CHARACTER(LEN=1), INTENT(INOUT) :: TYPDIM,TYPEXM,TYPDIN,TYPEXN
03525       DOUBLE PRECISION, INTENT(INOUT) :: DM(*)
03526       DOUBLE PRECISION, INTENT(IN)    :: C
03527         END SUBROUTINE
03528 !
03529         SUBROUTINE OPASS(OP,X,W,IW,Y,IY,LIMVOI,MXPTVS,NPMAX)
03530       IMPLICIT NONE
03531       INTEGER, INTENT(IN) :: NPMAX,MXPTVS
03532       INTEGER, INTENT(IN) :: IW(NPMAX,*),IY(NPMAX,*),LIMVOI(11,2)
03533       DOUBLE PRECISION, INTENT(INOUT) :: X(*)
03534       DOUBLE PRECISION, INTENT(IN)    :: W(*),Y(*)
03535       CHARACTER(LEN=8), INTENT(IN)    :: OP
03536         END SUBROUTINE
03537 !
03538         SUBROUTINE BIEF_OPEN_FILES
03539      &(CODE,FILES,NFILES,PATH,NCAR,FLOT,IFLOT,ICODE)
03540       USE BIEF_DEF
03541       IMPLICIT NONE
03542       INTEGER           , INTENT(IN)    :: NFILES
03543       CHARACTER(LEN=24) , INTENT(IN)    :: CODE
03544       TYPE(BIEF_FILE)   , INTENT(INOUT) :: FILES(NFILES)
03545       CHARACTER(LEN=250), INTENT(IN)    :: PATH
03546       INTEGER           , INTENT(IN)    :: NCAR,ICODE
03547       INTEGER           , INTENT(INOUT) :: IFLOT
03548       LOGICAL           , INTENT(IN)    :: FLOT
03549         END SUBROUTINE
03550 !
03551         SUBROUTINE OS( OP , X , Y , Z , C , IOPT , INFINI , ZERO )
03552           USE BIEF_DEF
03553           IMPLICIT NONE
03554           INTEGER,          INTENT(IN), OPTIONAL    :: IOPT
03555           DOUBLE PRECISION, INTENT(IN), OPTIONAL    :: INFINI
03556           DOUBLE PRECISION, INTENT(IN), OPTIONAL    :: ZERO
03557           TYPE(BIEF_OBJ),   INTENT(INOUT), OPTIONAL, TARGET :: X
03558           TYPE(BIEF_OBJ),   INTENT(IN)   , OPTIONAL, TARGET :: Y,Z
03559           DOUBLE PRECISION, INTENT(IN)   ,OPTIONAL :: C
03560           CHARACTER(LEN=8), INTENT(IN)              :: OP
03561         END SUBROUTINE
03562 !
03563         SUBROUTINE OSBD( OP , X , Y , Z , C , MESH )
03564           USE BIEF_DEF
03565           IMPLICIT NONE
03566           DOUBLE PRECISION, INTENT(IN)    :: C
03567           CHARACTER(LEN=8), INTENT(IN)    :: OP
03568           TYPE(BIEF_OBJ)  , INTENT(INOUT) :: X
03569           TYPE(BIEF_OBJ)  , INTENT(IN)    :: Y,Z
03570           TYPE(BIEF_MESH) , INTENT(IN)    :: MESH
03571         END SUBROUTINE
03572 !
03573         SUBROUTINE OSDB( OP , X , Y , Z , C , MESH )
03574           USE BIEF_DEF
03575           IMPLICIT NONE
03576           DOUBLE PRECISION, INTENT(IN)    :: C
03577           CHARACTER(LEN=8), INTENT(IN)    :: OP
03578           TYPE(BIEF_OBJ)  , INTENT(INOUT) :: X
03579           TYPE(BIEF_OBJ)  , INTENT(IN)    :: Y,Z
03580           TYPE(BIEF_MESH) , INTENT(IN)    :: MESH
03581         END SUBROUTINE
03582 !
03583         SUBROUTINE OV( OP , X , Y , Z , C , NPOIN )
03584           IMPLICIT NONE
03585           INTEGER, INTENT(IN)             :: NPOIN
03586           DOUBLE PRECISION, INTENT(IN)    :: Y(NPOIN),Z(NPOIN),C
03587           DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
03588           CHARACTER(LEN=8), INTENT(IN)    :: OP
03589         END SUBROUTINE
03590 !
03591         SUBROUTINE OVBD( OP , X , Y , Z , C , NBOR , NPTFR )
03592       IMPLICIT NONE
03593       INTEGER, INTENT(IN)             :: NPTFR,NBOR(*)
03594       DOUBLE PRECISION, INTENT(INOUT) :: X(*)
03595       DOUBLE PRECISION, INTENT(IN)    :: Y(*),Z(*),C
03596       CHARACTER(LEN=8), INTENT(IN)    :: OP
03597         END SUBROUTINE
03598 !
03599         SUBROUTINE OVD( OP , X , Y , Z , C , NPOIN , IOPT , D , EPS )
03600           IMPLICIT NONE
03601           INTEGER         , INTENT(IN)    :: NPOIN,IOPT
03602           DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
03603           DOUBLE PRECISION, INTENT(IN)    :: Y(NPOIN),Z(NPOIN),C,D,EPS
03604           CHARACTER(LEN=8), INTENT(IN)    :: OP
03605         END SUBROUTINE
03606 !
03607         SUBROUTINE OVD_2
03608      & ( OP , X , DIMX , Y , DIMY , Z , DIMZ , C , DIM1 , NPOIN ,
03609      &   IOPT , INFINI, ZERO )
03610       IMPLICIT NONE
03611       INTEGER,          INTENT(IN)    :: DIMX,DIMY,DIMZ,DIM1,NPOIN,IOPT
03612       DOUBLE PRECISION, INTENT(IN)    :: C,INFINI,ZERO
03613       CHARACTER(LEN=8), INTENT(IN)    :: OP
03614       DOUBLE PRECISION, INTENT(INOUT) :: X(DIM1,*)
03615       DOUBLE PRECISION, INTENT(IN)    :: Y(DIM1,*),Z(DIM1,*)
03616         END SUBROUTINE
03617 !
03618         SUBROUTINE OVDB(OP,X,Y,Z,C,NBOR,NPTFR)
03619       IMPLICIT NONE
03620       INTEGER, INTENT(IN)             :: NPTFR,NBOR(*)
03621       DOUBLE PRECISION, INTENT(INOUT) :: X(*)
03622       DOUBLE PRECISION, INTENT(IN)    :: Y(*),Z(*),C
03623       CHARACTER(LEN=8), INTENT(IN)    :: OP
03624         END SUBROUTINE
03625 !
03626         SUBROUTINE OV_2(OP,X,DIMX,Y,DIMY,Z,DIMZ,C,DIM1,NPOIN )
03627           IMPLICIT NONE
03628           INTEGER, INTENT(IN)      :: DIMX,DIMY,DIMZ,DIM1,NPOIN
03629           DOUBLE PRECISION, INTENT(IN)    :: C
03630           CHARACTER(LEN=8), INTENT(IN)    :: OP
03631           DOUBLE PRECISION, INTENT(INOUT) :: X(DIM1,*)
03632           DOUBLE PRECISION, INTENT(IN)    :: Y(DIM1,*),Z(DIM1,*)
03633         END SUBROUTINE
03634 !
03635         SUBROUTINE PARACO(V1,V2,V3,NPOIN,ICOM,IAN,
03636      &                    NPLAN,NB_NEIGHB,NB_NEIGHB_PT,LIST_SEND,
03637      &                    NH_COM,DIMNHCOM,BUF_SEND,BUF_RECV,DIMBUF)
03638 !
03639       USE BIEF_DEF
03640       IMPLICIT NONE
03641       INTEGER, INTENT(IN) :: NPOIN,ICOM,IAN,NPLAN,NB_NEIGHB
03642       INTEGER, INTENT(IN) :: DIMNHCOM,DIMBUF
03643       INTEGER, INTENT(IN) :: NB_NEIGHB_PT(NB_NEIGHB)
03644       INTEGER, INTENT(IN) :: LIST_SEND(NB_NEIGHB)
03645       INTEGER, INTENT(IN) :: NH_COM(DIMNHCOM,*)
03646       DOUBLE PRECISION, INTENT(INOUT) :: BUF_SEND(DIMBUF,*)
03647       DOUBLE PRECISION, INTENT(INOUT) :: BUF_RECV(DIMBUF,*)
03648       DOUBLE PRECISION, INTENT(INOUT) :: V1(NPOIN,NPLAN)
03649       DOUBLE PRECISION, INTENT(INOUT) :: V2(NPOIN,NPLAN)
03650       DOUBLE PRECISION, INTENT(INOUT) :: V3(NPOIN,NPLAN)
03651         END SUBROUTINE
03652 !
03653         SUBROUTINE PARACOI
03654      &(V1,V2,V3,NPOIN,ICOM,IAN,NPLAN,NB_NEIGHB,NB_NEIGHB_PT,LIST_SEND,
03655      & NH_COM,DIMNHCOM,BUF_SEND,BUF_RECV,DIMBUF)
03656       USE BIEF_DEF
03657       IMPLICIT NONE
03658       INTEGER, INTENT(IN) :: NPOIN,ICOM,IAN,NPLAN,NB_NEIGHB
03659       INTEGER, INTENT(IN) :: DIMNHCOM,DIMBUF
03660       INTEGER, INTENT(IN) :: NB_NEIGHB_PT(NB_NEIGHB)
03661       INTEGER, INTENT(IN) :: LIST_SEND(NB_NEIGHB),NH_COM(DIMNHCOM,*)
03662       INTEGER, INTENT(INOUT) :: BUF_SEND(DIMBUF,*)
03663       INTEGER, INTENT(INOUT) :: BUF_RECV(DIMBUF,*)
03664       INTEGER, INTENT(INOUT) :: V1(NPOIN,NPLAN)
03665       INTEGER, INTENT(INOUT) :: V2(NPOIN,NPLAN)
03666       INTEGER, INTENT(INOUT) :: V3(NPOIN,NPLAN)
03667         END SUBROUTINE
03668 !
03669         SUBROUTINE PARACOI8
03670      &(V1,V2,V3,NPOIN,ICOM,IAN,NPLAN,NB_NEIGHB,NB_NEIGHB_PT,LIST_SEND,
03671      & NH_COM,DIMNHCOM,BUF_SEND,BUF_RECV,DIMBUF)
03672       USE DECLARATIONS_SPECIAL
03673       IMPLICIT NONE
03674       INTEGER, INTENT(IN) :: NPOIN,ICOM,IAN,NPLAN,NB_NEIGHB
03675       INTEGER, INTENT(IN) :: DIMNHCOM,DIMBUF
03676       INTEGER, INTENT(IN) :: NB_NEIGHB_PT(NB_NEIGHB)
03677       INTEGER, INTENT(IN) :: LIST_SEND(NB_NEIGHB),NH_COM(DIMNHCOM,*)
03678       INTEGER(KIND=K8), INTENT(INOUT) :: BUF_SEND(DIMBUF,*)
03679       INTEGER(KIND=K8), INTENT(INOUT) :: BUF_RECV(DIMBUF,*)
03680       INTEGER(KIND=K8), INTENT(INOUT) :: V1(NPOIN,NPLAN)
03681       INTEGER(KIND=K8), INTENT(INOUT) :: V2(NPOIN,NPLAN)
03682       INTEGER(KIND=K8), INTENT(INOUT) :: V3(NPOIN,NPLAN)
03683         END SUBROUTINE
03684 !
03685         SUBROUTINE PARCOM( X , ICOM , MESH )
03686           USE BIEF_DEF
03687           IMPLICIT NONE
03688           INTEGER        , INTENT(IN)     :: ICOM
03689           TYPE(BIEF_MESH), INTENT(INOUT)  :: MESH
03690           TYPE(BIEF_OBJ) , INTENT(INOUT)  :: X
03691         END SUBROUTINE
03692 !
03693         SUBROUTINE PARCOM2(X1,X2,X3,NPOIN,NPLAN,ICOM,IAN,MESH)
03694           USE BIEF_DEF
03695           IMPLICIT NONE
03696           INTEGER, INTENT(IN) :: ICOM,NPOIN,NPLAN,IAN
03697           TYPE(BIEF_MESH) , INTENT(INOUT) :: MESH
03698           DOUBLE PRECISION, INTENT(INOUT) :: X1(NPOIN,NPLAN)
03699           DOUBLE PRECISION, INTENT(INOUT) :: X2(NPOIN,NPLAN)
03700           DOUBLE PRECISION, INTENT(INOUT) :: X3(NPOIN,NPLAN)
03701         END SUBROUTINE
03702 !
03703         SUBROUTINE PARCOM2I(X1,X2,X3,NPOIN,NPLAN,ICOM,IAN,MESH)
03704           USE BIEF_DEF
03705           IMPLICIT NONE
03706           INTEGER, INTENT(IN) :: ICOM,NPOIN,NPLAN,IAN
03707           TYPE(BIEF_MESH) , INTENT(INOUT) :: MESH
03708           INTEGER, INTENT(INOUT) :: X1(NPOIN,NPLAN)
03709           INTEGER, INTENT(INOUT) :: X2(NPOIN,NPLAN)
03710           INTEGER, INTENT(INOUT) :: X3(NPOIN,NPLAN)
03711         END SUBROUTINE
03712 !
03713         SUBROUTINE PARCOM2I8
03714      &( X1 , X2 , X3 , NPOIN , NPLAN , ICOM , IAN , MESH )
03715           USE DECLARATIONS_SPECIAL
03716           USE BIEF_DEF
03717           IMPLICIT NONE
03718           INTEGER, INTENT(IN) :: ICOM,NPOIN,NPLAN,IAN
03719           TYPE(BIEF_MESH) , INTENT(INOUT) :: MESH
03720           INTEGER(KIND=K8), INTENT(INOUT) :: X1(NPOIN,NPLAN)
03721           INTEGER(KIND=K8), INTENT(INOUT) :: X2(NPOIN,NPLAN)
03722           INTEGER(KIND=K8), INTENT(INOUT) :: X3(NPOIN,NPLAN)
03723         END SUBROUTINE
03724 !
03725         SUBROUTINE PARCOM2_SEG(X1,X2,X3,NSEG,NPLAN,ICOM,IAN,MESH,
03726      &                         OPT,IELM)
03727           USE BIEF_DEF
03728           IMPLICIT NONE
03729           INTEGER, INTENT(IN) :: ICOM,NSEG,NPLAN,IAN,OPT,IELM
03730           TYPE(BIEF_MESH) , INTENT(INOUT) :: MESH
03731           DOUBLE PRECISION, INTENT(INOUT) :: X1(NSEG,NPLAN)
03732           DOUBLE PRECISION, INTENT(INOUT) :: X2(NSEG,NPLAN)
03733           DOUBLE PRECISION, INTENT(INOUT) :: X3(NSEG,NPLAN)
03734         END SUBROUTINE
03735 !
03736         SUBROUTINE PARCOM2I_SEG(X1,X2,X3,NSEG,NPLAN,ICOM,IAN,MESH,
03737      &                         OPT,IELM)
03738           USE BIEF_DEF
03739           IMPLICIT NONE
03740           INTEGER, INTENT(IN) :: ICOM,NSEG,NPLAN,IAN,OPT,IELM
03741           TYPE(BIEF_MESH) , INTENT(INOUT) :: MESH
03742           INTEGER, INTENT(INOUT) :: X1(NSEG,NPLAN)
03743           INTEGER, INTENT(INOUT) :: X2(NSEG,NPLAN)
03744           INTEGER, INTENT(INOUT) :: X3(NSEG,NPLAN)
03745         END SUBROUTINE
03746 !
03747         SUBROUTINE PARCOM_BORD(X,ICOM,MESH)
03748           USE BIEF_DEF
03749           IMPLICIT NONE
03750           INTEGER, INTENT(IN) :: ICOM
03751           TYPE(BIEF_MESH), INTENT(INOUT)  :: MESH
03752           DOUBLE PRECISION, INTENT(INOUT) :: X(*)
03753         END SUBROUTINE
03754 !
03755         SUBROUTINE PARINI
03756      &(NHP,NHM,INDPU,FAC,NPOIN2,NACHB,NPLAN,MESH,NB_NEIGHB,
03757      & NB_NEIGHB_SEG,NELEM2,IFAPAR)
03758       USE BIEF_DEF
03759       IMPLICIT NONE
03760       INTEGER LNG,LU
03761       COMMON/INFO/LNG,LU
03762       INTEGER, INTENT(IN)            :: NPOIN2,NPLAN,NELEM2
03763       INTEGER, INTENT(INOUT)         :: NB_NEIGHB,NB_NEIGHB_SEG
03764       INTEGER, INTENT(INOUT)         :: NHP(NBMAXDSHARE,NPTIR)
03765       INTEGER, INTENT(INOUT)         :: NHM(NBMAXDSHARE,NPTIR)
03766       INTEGER, INTENT(IN)            :: NACHB(NBMAXNSHARE,NPTIR)
03767       INTEGER, INTENT(IN)            :: IFAPAR(6,NELEM2)
03768       INTEGER, INTENT(INOUT)         :: INDPU(NPOIN2)
03769       TYPE(BIEF_OBJ), INTENT(INOUT)  :: FAC
03770       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
03771         END SUBROUTINE
03772 !
03773         SUBROUTINE PARMOY( X , MESH )
03774       USE BIEF_DEF
03775       IMPLICIT NONE
03776       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
03777       TYPE(BIEF_OBJ), INTENT(INOUT)  :: X
03778         END SUBROUTINE
03779 !
03780         SUBROUTINE POSITIVE_DEPTHS
03781      &(T1,T2,T3,T4,H,HN,MESH,FLODEL,COMPUTE_FLODEL,FLBOR,DT,
03782      & UNSV2D,NPOIN,GLOSEG1,GLOSEG2,NBOR,NPTFR,
03783      & SMH,YASMH,OPTSOU,FLULIM,LIMPRO,HBOR,KDIR,INFO,FLOPOINT,
03784      & NAMECODE,OPTION,NITMAX)
03785       USE BIEF_DEF
03786       IMPLICIT NONE
03787       INTEGER, INTENT(IN)             :: NPOIN,NPTFR,OPTSOU,KDIR,OPTION
03788       INTEGER, INTENT(IN)             :: NITMAX
03789       INTEGER, INTENT(IN)             :: GLOSEG1(*),GLOSEG2(*)
03790       INTEGER, INTENT(IN)             :: NBOR(NPTFR)
03791       INTEGER, INTENT(IN)             :: LIMPRO(NPTFR)
03792       DOUBLE PRECISION, INTENT(IN)    :: DT,FLOPOINT(NPOIN),HBOR(NPTFR)
03793       DOUBLE PRECISION, INTENT(INOUT) :: FLULIM(*)
03794       TYPE(BIEF_MESH),INTENT(INOUT)   :: MESH
03795       TYPE(BIEF_OBJ), INTENT(INOUT)   :: T1,T2,T3,T4,FLODEL,H,FLBOR
03796       TYPE(BIEF_OBJ), INTENT(IN)      :: UNSV2D,HN,SMH
03797       LOGICAL, INTENT(IN)             :: YASMH,INFO
03798       LOGICAL, INTENT(IN)             :: COMPUTE_FLODEL
03799       CHARACTER(LEN=24)               :: NAMECODE
03800         END SUBROUTINE
03801 !
03802         SUBROUTINE PREBD4
03803      &(X1,X2,A11,A12,A21,A22,B1,B2,D11,D12,D21,D22,
03804      & MESH,PREXSM,DIADON)
03805       USE BIEF_DEF
03806       IMPLICIT NONE
03807       LOGICAL, INTENT(IN) :: PREXSM,DIADON
03808       TYPE(BIEF_OBJ), INTENT(INOUT) :: X1,B2,D11,D12,D21,D22
03809       TYPE(BIEF_OBJ), INTENT(IN)    :: X2,B1
03810       TYPE(BIEF_OBJ), INTENT(INOUT) :: A11,A12,A21,A22
03811       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
03812         END SUBROUTINE
03813 !
03814         SUBROUTINE PREBD9
03815      &(X1,X2,X3,A11,A12,A13,A21,A22,A23,A31,A32,A33,
03816      & B1,B2,B3,D11,D12,D13,D21,D22,D23,D31,D32,D33,
03817      & MESH,PREXSM,DIADON)
03818       USE BIEF_DEF
03819       IMPLICIT NONE
03820       LOGICAL, INTENT(IN) :: PREXSM,DIADON
03821       TYPE(BIEF_OBJ), INTENT(IN)    :: X3,B1
03822       TYPE(BIEF_OBJ), INTENT(INOUT) :: X1,X2,B2,B3
03823       TYPE(BIEF_OBJ), INTENT(INOUT) :: D11,D12,D13,D21,D22,D23
03824       TYPE(BIEF_OBJ), INTENT(INOUT) :: D31,D32,D33
03825       TYPE(BIEF_OBJ), INTENT(INOUT) :: A11,A12,A13,A21,A22
03826       TYPE(BIEF_OBJ), INTENT(INOUT) :: A23,A31,A32,A33
03827       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
03828         END SUBROUTINE
03829 !
03830         SUBROUTINE PREBDT(X,A,B,D,MESH,PREXSM,DIADON,S)
03831       USE BIEF_DEF
03832       IMPLICIT NONE
03833       INTEGER, INTENT(IN) :: S
03834       LOGICAL, INTENT(IN) :: PREXSM,DIADON
03835       TYPE(BIEF_OBJ), INTENT(INOUT) :: X,B,D
03836       TYPE(BIEF_OBJ), INTENT(INOUT) :: A
03837       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
03838         END SUBROUTINE
03839 !
03840         SUBROUTINE PRECD1(X,A,B,D,MESH,PRECON,PREXSM,DIADON)
03841       USE BIEF_DEF
03842       IMPLICIT NONE
03843       INTEGER, INTENT(IN) :: PRECON
03844       LOGICAL, INTENT(IN) :: PREXSM,DIADON
03845       TYPE(BIEF_OBJ), INTENT(INOUT)  :: X,B,D
03846       TYPE(BIEF_OBJ), INTENT(INOUT)  :: A
03847       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
03848         END SUBROUTINE
03849 !
03850         SUBROUTINE PRECD4
03851      &(X1,X2,A11,A12,A21,A22,
03852      & B1,B2,D1,D2,MESH,PRECON,PREXSM,DIADON)
03853       USE BIEF_DEF
03854       IMPLICIT NONE
03855       INTEGER, INTENT(IN) :: PRECON
03856       LOGICAL, INTENT(IN) :: PREXSM,DIADON
03857       TYPE(BIEF_OBJ), INTENT(INOUT) :: X1,X2,B1,B2,D1,D2
03858       TYPE(BIEF_OBJ), INTENT(INOUT) :: A11,A12,A21,A22
03859       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
03860         END SUBROUTINE
03861 !
03862         SUBROUTINE PRECD9
03863      &(X1,X2,X3,A11,A12,A13,A21,A22,A23,A31,A32,A33,
03864      & B1,B2,B3,D1,D2,D3,MESH,PRECON,PREXSM,DIADON)
03865       USE BIEF_DEF
03866       IMPLICIT NONE
03867       INTEGER, INTENT(IN) :: PRECON
03868       LOGICAL, INTENT(IN) :: PREXSM,DIADON
03869       TYPE(BIEF_OBJ), INTENT(INOUT) :: X1,X2,X3,B1,B2,B3,D1,D2,D3
03870       TYPE(BIEF_OBJ), INTENT(INOUT) :: A11,A12,A13,A21
03871       TYPE(BIEF_OBJ), INTENT(INOUT) :: A22,A23,A31,A32,A33
03872       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
03873         END SUBROUTINE
03874 !
03875         SUBROUTINE PRECDT(X,A,B,D,MESH,PRECON,PREXSM,DIADON,S)
03876       USE BIEF_DEF
03877       IMPLICIT NONE
03878       INTEGER, INTENT(IN) :: PRECON,S
03879       LOGICAL, INTENT(IN) :: PREXSM,DIADON
03880       TYPE(BIEF_OBJ), INTENT(INOUT) :: X,B,D
03881       TYPE(BIEF_OBJ), INTENT(INOUT) :: A
03882       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
03883         END SUBROUTINE
03884 !
03885         SUBROUTINE PREVEREBE
03886      &(XAUX,AD,AX,TYPDIA,TYPEXT,IKLE,NPOIN,NELEM,NELMAX,MESH,
03887      & TYPEMESH)
03888       USE BIEF_DEF
03889       IMPLICIT NONE
03890       INTEGER, INTENT(IN) :: NELEM,NELMAX,NPOIN,TYPEMESH
03891       INTEGER, INTENT(IN) :: IKLE(NELMAX,6)
03892       DOUBLE PRECISION, INTENT(IN) :: AD(NPOIN),AX(NELMAX,*)
03893       DOUBLE PRECISION, INTENT(INOUT) :: XAUX(NPOIN,*)
03894       CHARACTER(LEN=1), INTENT(IN) :: TYPDIA,TYPEXT
03895       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
03896         END SUBROUTINE
03897 !
03898         SUBROUTINE PREVERSEG
03899      &(XAUX,AD,AX,TYPDIA,TYPEXT,NPOIN,MESH,NSEG3D,TYPEMESH)
03900       USE BIEF_DEF
03901       IMPLICIT NONE
03902       INTEGER, INTENT(IN)             :: NPOIN,NSEG3D,TYPEMESH
03903       DOUBLE PRECISION, INTENT(IN)    :: AD(NPOIN),AX(NSEG3D,2)
03904       DOUBLE PRECISION, INTENT(INOUT) :: XAUX(NPOIN,*)
03905       CHARACTER(LEN=1), INTENT(IN)    :: TYPDIA,TYPEXT
03906       TYPE(BIEF_MESH), INTENT(INOUT)  :: MESH
03907         END SUBROUTINE
03908 !
03909         SUBROUTINE PROXIM(IP,XP,YP,X,Y,NP,NPOIN,IKLE,NELEM,NELMAX)
03910       IMPLICIT NONE
03911       INTEGER, INTENT(IN)          :: NP,NPOIN,NELEM,NELMAX
03912       INTEGER, INTENT(INOUT)       :: IP(NP)
03913       INTEGER, INTENT(IN)          :: IKLE(NELMAX,3)
03914       DOUBLE PRECISION, INTENT(IN) :: XP(NP),YP(NP),X(NPOIN),Y(NPOIN)
03915         END SUBROUTINE
03916 !
03917         SUBROUTINE PTEL11(XEL,X,IKLE,NELMAX,NELEM)
03918       IMPLICIT NONE
03919       INTEGER, INTENT(IN) :: NELEM,NELMAX,IKLE(NELMAX,3)
03920       DOUBLE PRECISION, INTENT(IN)    :: X(*)
03921       DOUBLE PRECISION, INTENT(INOUT) :: XEL(NELMAX,3)
03922         END SUBROUTINE
03923 !
03924         SUBROUTINE PTTOEL(XEL,X,MESH)
03925           USE BIEF_DEF
03926           IMPLICIT NONE
03927           TYPE(BIEF_OBJ), INTENT(IN)    :: X
03928           TYPE(BIEF_OBJ), INTENT(INOUT) :: XEL
03929           TYPE(BIEF_MESH), INTENT(IN) :: MESH
03930         END SUBROUTINE
03931 !
03932         SUBROUTINE PUOG1(X, A,B ,DITR,MESH,COPY)
03933       USE BIEF_DEF
03934       IMPLICIT NONE
03935       CHARACTER(LEN=1), INTENT(IN) :: DITR
03936       LOGICAL, INTENT(IN) :: COPY
03937       TYPE(BIEF_OBJ), INTENT(INOUT) :: X,B
03938       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
03939       TYPE(BIEF_OBJ), INTENT(IN) :: A
03940         END SUBROUTINE
03941 !
03942         SUBROUTINE PUOG(X, A,B ,DITR,MESH,COPY)
03943       USE BIEF_DEF
03944       IMPLICIT NONE
03945       CHARACTER(LEN=1), INTENT(IN) :: DITR
03946       LOGICAL, INTENT(IN) :: COPY
03947       TYPE(BIEF_OBJ), INTENT(INOUT) :: X,B
03948       TYPE(BIEF_OBJ), INTENT(IN)    :: A
03949       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
03950         END SUBROUTINE
03951 !
03952         DOUBLE PRECISION FUNCTION P_DOTS( X , Y , MESH )
03953           USE BIEF_DEF
03954           IMPLICIT NONE
03955           TYPE(BIEF_MESH), INTENT(IN) :: MESH
03956           TYPE(BIEF_OBJ), INTENT(IN) :: X,Y
03957         END FUNCTION
03958 !
03959         DOUBLE PRECISION FUNCTION P_DOT(NPOIN,X,Y,FAC)
03960           USE BIEF_DEF
03961           IMPLICIT NONE
03962           INTEGER, INTENT(IN) :: NPOIN
03963           DOUBLE PRECISION, INTENT(IN) :: X(NPOIN),Y(NPOIN),FAC(NPOIN)
03964         END FUNCTION
03965 !
03966         SUBROUTINE READGEO1(NPOIN,NELEM,NPTFR,NDP,IB,NFIC,NELEBD)
03967           IMPLICIT NONE
03968           INTEGER, INTENT(OUT)         :: NPOIN
03969           INTEGER, INTENT(OUT)         :: NELEM
03970           INTEGER, INTENT(OUT)         :: NDP
03971           INTEGER, INTENT(OUT)         :: IB(10)
03972           INTEGER, INTENT(OUT)         :: NPTFR
03973           INTEGER, INTENT(IN)          :: NFIC
03974           INTEGER,OPTIONAL,INTENT(OUT) :: NELEBD
03975         END SUBROUTINE
03976 !
03977         SUBROUTINE READGEO2(NPOIN,NELEM,NPTFR,NDP,IKLES,IPOBO,IB,NFIC)
03978       USE BIEF_DEF
03979       IMPLICIT NONE
03980       INTEGER LNG,LU
03981       COMMON/INFO/LNG,LU
03982       INTEGER, INTENT(INOUT) :: NPTFR
03983       INTEGER, INTENT(IN)    :: NFIC,NPOIN,NELEM,NDP,IB(10)
03984       INTEGER, INTENT(INOUT) :: IKLES(NDP*NELEM)
03985       INTEGER, INTENT(INOUT) :: IPOBO(NPOIN)
03986         END SUBROUTINE
03987 !
03988         SUBROUTINE READGEO3
03989      &(KNOLG,X,Y,NPOIN,NFIC,IB,FFORMAT,PROJECTION,LATI0,LONGI0,Z)
03990       IMPLICIT NONE
03991       INTEGER, INTENT(IN)           :: NPOIN,NFIC
03992       INTEGER, INTENT(INOUT)        :: IB(10),PROJECTION
03993       INTEGER, INTENT(OUT)          :: KNOLG(NPOIN)
03994       DOUBLE PRECISION, INTENT(IN)  :: LATI0,LONGI0
03995       DOUBLE PRECISION, INTENT(OUT) :: X(NPOIN),Y(NPOIN)
03996       DOUBLE PRECISION, INTENT(OUT), OPTIONAL :: Z(NPOIN)
03997       CHARACTER(LEN=8), INTENT(IN)  :: FFORMAT
03998         END SUBROUTINE
03999 !
04000         SUBROUTINE READ_CONFIG(LNG,LU,CHAINE,NCAR)
04001           IMPLICIT NONE
04002           INTEGER      , INTENT(INOUT) :: LNG,LU
04003           CHARACTER*250, INTENT(IN)    :: CHAINE
04004           INTEGER      , INTENT(IN)    :: NCAR
04005         END SUBROUTINE
04006 !
04007         SUBROUTINE READ_SUBMIT(FILES,NFILES,CODE,SUBMIT,NMOT)
04008           USE BIEF_DEF
04009           IMPLICIT NONE
04010           INTEGER           , INTENT(IN) :: NFILES,NMOT
04011           TYPE(BIEF_FILE), INTENT(INOUT) :: FILES(NFILES)
04012           CHARACTER(LEN=24) , INTENT(IN) :: CODE
04013           CHARACTER(LEN=144), INTENT(IN) :: SUBMIT(4,NMOT)
04014         END SUBROUTINE
04015 !
04016         SUBROUTINE REM11
04017      &(X, XA1,XA2,XA3,IKLE1,IKLE2,IKLE3,NELEM,NELMAX,NPOIN,LV)
04018       IMPLICIT NONE
04019       INTEGER, INTENT(IN) :: NPOIN,NELEM,NELMAX,LV
04020       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
04021       DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
04022       DOUBLE PRECISION, INTENT(IN) :: XA1(NELMAX)
04023       DOUBLE PRECISION, INTENT(IN) :: XA2(NELMAX)
04024       DOUBLE PRECISION, INTENT(IN) :: XA3(NELMAX)
04025         END SUBROUTINE
04026 !
04027         SUBROUTINE REM21
04028      &(X, XA1,XA2,XA3,XA4,XA5,XA6 , IKLE1,IKLE2,IKLE3,IKLE4,
04029      & NELEM,NELMAX,NPOIN,LV)
04030       IMPLICIT NONE
04031       INTEGER, INTENT(IN) :: NPOIN,NELEM,NELMAX,LV
04032       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
04033       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
04034       DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
04035       DOUBLE PRECISION, INTENT(IN) :: XA1(NELMAX)
04036       DOUBLE PRECISION, INTENT(IN) :: XA2(NELMAX)
04037       DOUBLE PRECISION, INTENT(IN) :: XA3(NELMAX)
04038       DOUBLE PRECISION, INTENT(IN) :: XA4(NELMAX)
04039       DOUBLE PRECISION, INTENT(IN) :: XA5(NELMAX)
04040       DOUBLE PRECISION, INTENT(IN) :: XA6(NELMAX)
04041         END SUBROUTINE
04042 !
04043         SUBROUTINE REM41
04044      &(X, XA1 ,XA2 ,XA3 ,XA4 ,XA5 ,
04045      &    XA6 ,XA7 ,XA8 ,XA9 ,XA10,
04046      &    XA11,XA12,XA13,XA14,XA15,
04047      &    IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,
04048      &    NELEM,NELMAX,NPOIN,LV)
04049       IMPLICIT NONE
04050       INTEGER, INTENT(IN) :: NPOIN,NELEM,NELMAX,LV
04051       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
04052       INTEGER, INTENT(IN) :: IKLE4(NELMAX),IKLE5(NELMAX),IKLE6(NELMAX)
04053       DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
04054       DOUBLE PRECISION, INTENT(IN) :: XA1(NELMAX)
04055       DOUBLE PRECISION, INTENT(IN) :: XA2(NELMAX)
04056       DOUBLE PRECISION, INTENT(IN) :: XA3(NELMAX)
04057       DOUBLE PRECISION, INTENT(IN) :: XA4(NELMAX)
04058       DOUBLE PRECISION, INTENT(IN) :: XA5(NELMAX)
04059       DOUBLE PRECISION, INTENT(IN) :: XA6(NELMAX)
04060       DOUBLE PRECISION, INTENT(IN) :: XA7(NELMAX)
04061       DOUBLE PRECISION, INTENT(IN) :: XA8(NELMAX)
04062       DOUBLE PRECISION, INTENT(IN) :: XA9(NELMAX)
04063       DOUBLE PRECISION, INTENT(IN) :: XA10(NELMAX)
04064       DOUBLE PRECISION, INTENT(IN) :: XA11(NELMAX)
04065       DOUBLE PRECISION, INTENT(IN) :: XA12(NELMAX)
04066       DOUBLE PRECISION, INTENT(IN) :: XA13(NELMAX)
04067       DOUBLE PRECISION, INTENT(IN) :: XA14(NELMAX)
04068       DOUBLE PRECISION, INTENT(IN) :: XA15(NELMAX)
04069         END SUBROUTINE
04070 !
04071         SUBROUTINE REMONT
04072      &(X, XA,TYPEXA,B,IKLE,NELEM,NELMAX,NPOIN,IELM,DITR,COPY,LV)
04073       IMPLICIT NONE
04074       INTEGER, INTENT(IN) :: IELM,NPOIN,NELEM,NELMAX,LV
04075       INTEGER, INTENT(IN) :: IKLE(NELMAX,*)
04076       DOUBLE PRECISION, INTENT(IN)    :: B(NPOIN),XA(NELMAX,*)
04077       DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
04078       CHARACTER*(*), INTENT(IN)       :: TYPEXA,DITR
04079       LOGICAL, INTENT(IN) :: COPY
04080         END SUBROUTINE
04081 !
04082         SUBROUTINE REMSEG(X, XA,TYPEXA,B,GLOSEG,NSEG,NPOIN,DITR,COPY)
04083       IMPLICIT NONE
04084       INTEGER         , INTENT(IN)    :: NPOIN,NSEG
04085       INTEGER         , INTENT(IN)    :: GLOSEG(NSEG,2)
04086       DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
04087       DOUBLE PRECISION, INTENT(IN)    :: XA(NSEG,*),B(NPOIN)
04088       CHARACTER(LEN=1), INTENT(IN)    :: TYPEXA,DITR
04089       LOGICAL         , INTENT(IN)    :: COPY
04090         END SUBROUTINE
04091 !
04092         SUBROUTINE RESCJG
04093      &(X, A,B , MESH,D,AD,AG,G,R, CFG,INFOGR,AUX)
04094       USE BIEF_DEF
04095       IMPLICIT NONE
04096       LOGICAL, INTENT(IN) :: INFOGR
04097       TYPE(BIEF_OBJ), INTENT(INOUT) :: D,AD,G,AG,R,X,B
04098       TYPE(SLVCFG)  , INTENT(INOUT) :: CFG
04099       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
04100       TYPE(BIEF_OBJ), INTENT(IN) :: A
04101       TYPE(BIEF_OBJ), INTENT(INOUT) :: AUX
04102         END SUBROUTINE
04103 !
04104         SUBROUTINE SD_MD(N,IA,JA,MAXU,V,
04105      &                   L,HEAD,LAST,NEXT,MARK,FLAG)
04106       IMPLICIT NONE
04107       INTEGER, INTENT(IN)    :: N,MAXU
04108       INTEGER, INTENT(INOUT) :: IA(*),JA(*),V(MAXU),L(MAXU),HEAD(N)
04109       INTEGER, INTENT(INOUT) :: LAST(N),NEXT(N),MARK(N),FLAG
04110         END SUBROUTINE
04111 !
04112         SUBROUTINE SD_MDI(N,IA,JA,MAXIMUM,V,L,
04113      &                    HEAD,LAST,NEXT,MARK,TAG,FLAG)
04114       IMPLICIT NONE
04115       INTEGER, INTENT(IN)    :: N,MAXIMUM,IA(*),JA(*)
04116       INTEGER, INTENT(INOUT) :: V(*),L(*),HEAD(*),LAST(*)
04117       INTEGER, INTENT(INOUT) :: NEXT(*),MARK(*),TAG,FLAG
04118         END SUBROUTINE
04119 !
04120         SUBROUTINE SD_MDM(VK,TAIL,V,L,LAST,NEXT,MARK)
04121       IMPLICIT NONE
04122       INTEGER, INTENT(IN)    :: VK,LAST(*),NEXT(*),V(*)
04123       INTEGER, INTENT(INOUT) :: TAIL,L(*),MARK(*)
04124         END SUBROUTINE
04125 !
04126         SUBROUTINE SD_MDP(K,EK,TAIL,V,L,HEAD,LAST,NEXT,MARK)
04127       IMPLICIT NONE
04128       INTEGER, INTENT(IN)    :: EK
04129       INTEGER, INTENT(INOUT) :: K,TAIL,V(*),L(*),HEAD(*)
04130       INTEGER, INTENT(INOUT) :: LAST(*),NEXT(*),MARK(*)
04131         END SUBROUTINE
04132 !
04133         SUBROUTINE SD_MDU(EK,DMIN,V,L,HEAD,LAST,NEXT,MARK)
04134       IMPLICIT NONE
04135       INTEGER, INTENT(IN)    ::  EK,V(*),L(*)
04136       INTEGER, INTENT(INOUT) ::  DMIN,HEAD(*),LAST(*),NEXT(*),MARK(*)
04137         END SUBROUTINE
04138 !
04139         SUBROUTINE SD_ODRV(N,IA,JA,A,P,IP,NSP,ISP,PATH,FLAG)
04140       IMPLICIT NONE
04141       INTEGER, INTENT(IN)             :: N,NSP,PATH
04142       INTEGER, INTENT(INOUT)          :: FLAG
04143       INTEGER, INTENT(INOUT)          :: IA(N),JA(*),P(N),IP(N),ISP(NSP)
04144       DOUBLE PRECISION, INTENT(INOUT) :: A(*)
04145         END SUBROUTINE
04146 !
04147         SUBROUTINE SD_SDRV
04148      &(N,P,IP,IA,JA,A,B,Z,NSP,ISP,RSP,ESP,PATH,FLAG)
04149       IMPLICIT NONE
04150       INTEGER, INTENT(IN)    :: N,NSP,PATH
04151       INTEGER, INTENT(INOUT) :: FLAG,P(*),IP(*),IA(*),JA(*),ISP(*),ESP
04152       DOUBLE PRECISION, INTENT(IN)    :: B(N)
04153       DOUBLE PRECISION, INTENT(INOUT) :: A(1),Z(N),RSP(NSP)
04154         END SUBROUTINE
04155 !
04156         SUBROUTINE SD_CDRV
04157      &(N, R,C,IC, IA,JA,A, B, Z, NSP,ISP,RSP,ESP, PATH, FLAG)
04158       IMPLICIT NONE
04159       INTEGER, INTENT(IN)    :: N,NSP,PATH,R(N),C(N)
04160       INTEGER, INTENT(INOUT) :: FLAG,IA(*),JA(*),ISP(*),ESP,IC(*)
04161       DOUBLE PRECISION, INTENT(IN)    :: B(N)
04162       DOUBLE PRECISION, INTENT(INOUT) :: A(*),Z(N),RSP(NSP)
04163         END SUBROUTINE
04164 !
04165         SUBROUTINE SD_SNF
04166      &(N,P,IP,IA,JA,A,D,IJU,JU,IU,U,UMAX,IL,JL,FLAG)
04167       IMPLICIT NONE
04168       INTEGER, INTENT(IN) :: N,UMAX
04169       INTEGER, INTENT(IN) :: P(N),IP(N),IA(N+1),JA(*),IJU(N),JU(*)
04170       INTEGER, INTENT(IN) :: IU(N+1)
04171       INTEGER, INTENT(INOUT) :: IL(*),JL(*),FLAG
04172       DOUBLE PRECISION, INTENT(IN)    :: A(*)
04173       DOUBLE PRECISION, INTENT(INOUT) :: D(N),U(UMAX)
04174         END SUBROUTINE
04175 !
04176         SUBROUTINE SD_SNS(N,P,D,IJU,JU,IU,U,Z,B,TMP)
04177       IMPLICIT NONE
04178       INTEGER, INTENT(IN)             :: N
04179       INTEGER, INTENT(INOUT)          :: P(N),IJU(*),JU(*),IU(*)
04180       DOUBLE PRECISION, INTENT(IN)    :: B(N)
04181       DOUBLE PRECISION, INTENT(INOUT) :: TMP(N),Z(N),D(N),U(N)
04182         END SUBROUTINE
04183 !
04184         SUBROUTINE SD_SRO(N,IP,IA,JA,A,Q,R,DFLAG)
04185       IMPLICIT NONE
04186       INTEGER, INTENT(IN)             :: N
04187       INTEGER, INTENT(IN)             :: IP(*)
04188       INTEGER, INTENT(INOUT)          :: JA(*),R(*),Q(N),IA(*)
04189       DOUBLE PRECISION, INTENT(INOUT) :: A(*)
04190       LOGICAL, INTENT(IN)             :: DFLAG
04191         END SUBROUTINE
04192 !
04193         SUBROUTINE SD_SSF
04194      &(N,P,IP,IA,JA,IJU,JU,IU,JUMAX,Q,MARK,JL,FLAG)
04195       IMPLICIT NONE
04196       INTEGER, INTENT(IN) :: N,JUMAX
04197       INTEGER, INTENT(INOUT) :: P(N),IP(N),IA(N+1),JA(*),IJU(N),FLAG
04198       INTEGER, INTENT(INOUT) :: JU(JUMAX),IU(N+1),Q(N),MARK(N),JL(N)
04199         END SUBROUTINE
04200 !
04201         SUBROUTINE SD_STRSSD
04202      &(NPBLK,NSEGBLK,GLOSEG1,GLOSEG2,IN,IP,ISEGIP,IW)
04203       IMPLICIT NONE
04204       INTEGER, INTENT(IN)    :: NSEGBLK,NPBLK
04205       INTEGER, INTENT(IN)    :: GLOSEG1(NSEGBLK),GLOSEG2(NSEGBLK)
04206       INTEGER, INTENT(INOUT) :: IN(NPBLK+1),IP(NSEGBLK*2)
04207       INTEGER, INTENT(INOUT) :: ISEGIP(NSEGBLK*2)
04208       INTEGER, INTENT(INOUT) :: IW(NPBLK)
04209         END SUBROUTINE
04210 !
04211         SUBROUTINE SD_STRTRI(IS,N,IND)
04212       IMPLICIT NONE
04213       INTEGER, INTENT(IN)    :: N
04214       INTEGER, INTENT(IN)    :: IS(N)
04215       INTEGER, INTENT(INOUT) :: IND(N)
04216         END SUBROUTINE
04217 !
04218         SUBROUTINE SD_FABCAD
04219      &(NPBLK,NSEGBLK,IN,IP,ISEGIP,
04220      & INDTRI,ISTRI,INX,IPX,ACTRI,XA1,XA2,DA,AC)
04221       IMPLICIT NONE
04222       INTEGER, INTENT(IN)             :: NPBLK,NSEGBLK
04223       INTEGER, INTENT(IN)             :: IN(NPBLK+1),IP(NSEGBLK*2+1)
04224       INTEGER, INTENT(IN)             :: ISEGIP(NSEGBLK*2+1)
04225       INTEGER, INTENT(INOUT)          :: INDTRI(NPBLK)
04226       INTEGER, INTENT(INOUT)          :: ISTRI(NPBLK)
04227       INTEGER, INTENT(INOUT)          :: INX(NPBLK+1)
04228       INTEGER, INTENT(INOUT)          :: IPX(NSEGBLK*2+NPBLK+1)
04229       DOUBLE PRECISION, INTENT(INOUT) :: ACTRI(NPBLK)
04230       DOUBLE PRECISION, INTENT(IN)    :: XA1(NSEGBLK),XA2(NSEGBLK)
04231       DOUBLE PRECISION, INTENT(IN)    :: DA(NPBLK)
04232       DOUBLE PRECISION, INTENT(INOUT) :: AC(NSEGBLK*2+NPBLK+1)
04233         END SUBROUTINE
04234 !
04235         SUBROUTINE SD_FABSG4
04236      & (NPOIN,NSEG,DAB1,DAB2,DAB3,DAB4,XAB1,XAB2,XAB3,XAB4,
04237      &  NPBLK,NSEGBLK,DA,XA,TYPEXT1,TYPEXT2,TYPEXT3,TYPEXT4)
04238       IMPLICIT NONE
04239       INTEGER, INTENT(IN)             :: NSEGBLK,NPBLK,NSEG,NPOIN
04240       DOUBLE PRECISION, INTENT(IN)    :: XAB1(*),XAB2(*)
04241       DOUBLE PRECISION, INTENT(IN)    :: XAB3(*),XAB4(*)
04242       DOUBLE PRECISION, INTENT(IN)    :: DAB1(NPOIN),DAB2(NPOIN)
04243       DOUBLE PRECISION, INTENT(IN)    :: DAB3(NPOIN),DAB4(NPOIN)
04244       DOUBLE PRECISION, INTENT(INOUT) :: XA(2*NSEGBLK),DA(NPBLK)
04245       CHARACTER(LEN=1), INTENT(IN)    :: TYPEXT1,TYPEXT2
04246       CHARACTER(LEN=1), INTENT(IN)    :: TYPEXT3,TYPEXT4
04247         END SUBROUTINE
04248 !
04249         SUBROUTINE SD_SOLVE_1
04250      &(NPOIN,NSEGB,GLOSEG,MAXSEG,DA,XA,XINC,RHS,INFOGR,TYPEXT)
04251       IMPLICIT NONE
04252       INTEGER, INTENT(IN)             :: NPOIN,NSEGB,MAXSEG
04253       INTEGER, INTENT(IN)             :: GLOSEG(MAXSEG,2)
04254       LOGICAL, INTENT(IN)             :: INFOGR
04255       DOUBLE PRECISION, INTENT(IN)    :: XA(*),RHS(NPOIN)
04256       DOUBLE PRECISION, INTENT(INOUT) :: XINC(NPOIN),DA(NPOIN)
04257       CHARACTER(LEN=1), INTENT(IN)    :: TYPEXT
04258         END SUBROUTINE
04259 !
04260         SUBROUTINE SD_SOLVE_4
04261      &(NPOIN,NSEGB,GLOSEGB,DAB1,DAB2,DAB3,DAB4,XAB1,XAB2,XAB3,XAB4,
04262      & XX1,XX2,CVB1,CVB2,INFOGR,TYPEXT1,TYPEXT2,TYPEXT3,TYPEXT4)
04263       IMPLICIT NONE
04264       INTEGER, INTENT(IN) :: NPOIN,NSEGB
04265       INTEGER, INTENT(IN) :: GLOSEGB(NSEGB*2)
04266       LOGICAL, INTENT(IN) :: INFOGR
04267       DOUBLE PRECISION, INTENT(IN)    :: DAB1(NPOIN),DAB2(NPOIN)
04268       DOUBLE PRECISION, INTENT(IN)    :: DAB3(NPOIN),DAB4(NPOIN)
04269       DOUBLE PRECISION, INTENT(IN)    :: XAB1(*),XAB2(*)
04270       DOUBLE PRECISION, INTENT(IN)    :: XAB3(*),XAB4(*)
04271       DOUBLE PRECISION, INTENT(INOUT) :: XX1(NPOIN),XX2(NPOIN)
04272       DOUBLE PRECISION, INTENT(IN)    :: CVB1(NPOIN),CVB2(NPOIN)
04273       CHARACTER(LEN=1), INTENT(IN)    :: TYPEXT1,TYPEXT2
04274       CHARACTER(LEN=1), INTENT(IN)    :: TYPEXT3,TYPEXT4
04275         END SUBROUTINE
04276 !
04277         SUBROUTINE SD_STRSG4(NPOIN,NSEG,GLOSEGB,NPBLK,NSEGBLK,GLOSEG4)
04278       IMPLICIT NONE
04279       INTEGER, INTENT(IN)    :: NSEGBLK,NPBLK,NSEG,NPOIN
04280       INTEGER, INTENT(IN)    :: GLOSEGB(NSEG,2)
04281       INTEGER, INTENT(INOUT) :: GLOSEG4(2*NSEGBLK)
04282         END SUBROUTINE
04283 !
04284         SUBROUTINE SEGBOR(NSEGBOR,IKLES,NELEM,NPOIN)
04285       IMPLICIT NONE
04286       INTEGER, INTENT(IN)            :: NPOIN,NELEM
04287       INTEGER, INTENT(OUT)           :: NSEGBOR
04288       INTEGER, INTENT(IN)            :: IKLES(3,NELEM)
04289         END SUBROUTINE
04290 !
04291         SUBROUTINE SKIPGEO(NFIC,TITFIC,NPOIN,NVAR,TEXTLU,NPLAN)
04292           IMPLICIT NONE
04293           INTEGER, INTENT(IN)            :: NFIC
04294           INTEGER, INTENT(OUT), OPTIONAL :: NPLAN
04295           INTEGER, INTENT(OUT)           :: NPOIN,NVAR
04296           CHARACTER(LEN=72), INTENT(OUT) :: TITFIC
04297           CHARACTER(LEN=32), INTENT(OUT) :: TEXTLU(*)
04298         END SUBROUTINE
04299 !
04300         SUBROUTINE SLOPES(COEF,Z,MESH)
04301           USE BIEF_DEF
04302           IMPLICIT NONE
04303           TYPE(BIEF_OBJ) , INTENT(IN)    :: Z
04304           TYPE(BIEF_OBJ) , INTENT(INOUT) :: COEF
04305           TYPE(BIEF_MESH), INTENT(IN)    :: MESH
04306         END SUBROUTINE
04307 !
04308         SUBROUTINE SLOP10(COEF,XEL,YEL,Z,IKLE,NELEM,NELMAX)
04309       IMPLICIT NONE
04310       INTEGER, INTENT(IN) :: NELEM,NELMAX
04311       INTEGER, INTENT(IN) :: IKLE(NELMAX,*)
04312       DOUBLE PRECISION, INTENT(INOUT) :: COEF(NELEM)
04313       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,*),YEL(NELMAX,*),Z(*)
04314         END SUBROUTINE
04315 !
04316         SUBROUTINE SOLAUX(IPT, TB,TBB,ITB,ITBB,S)
04317       USE BIEF_DEF
04318       IMPLICIT NONE
04319       INTEGER, INTENT(IN) :: S
04320       INTEGER, INTENT(INOUT) :: ITB,IPT,ITBB
04321       TYPE(BIEF_OBJ), INTENT(INOUT) :: TB,TBB
04322         END SUBROUTINE
04323 !
04324         SUBROUTINE SOLVE(X, A,B,TB,CFG,INFOGR,MESH,AUX)
04325           USE BIEF_DEF
04326           IMPLICIT NONE
04327           TYPE(SLVCFG), INTENT(INOUT)    :: CFG
04328           LOGICAL, INTENT(IN)            :: INFOGR
04329           TYPE(BIEF_OBJ), TARGET, INTENT(INOUT) :: X,B
04330           TYPE(BIEF_OBJ), INTENT(INOUT)  :: TB
04331           TYPE(BIEF_OBJ), INTENT(INOUT)  :: A,AUX
04332           TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
04333         END SUBROUTINE
04334 !
04335         DOUBLE PRECISION FUNCTION SOMME( X , NPX )
04336           IMPLICIT NONE
04337           INTEGER, INTENT(IN) :: NPX
04338           DOUBLE PRECISION, INTENT(IN) :: X(*)
04339         END FUNCTION
04340 !
04341         DOUBLE PRECISION FUNCTION SOMME2( X , NPX )
04342           IMPLICIT NONE
04343           INTEGER, INTENT(IN) :: NPX
04344           DOUBLE PRECISION, INTENT(IN) :: X(*)
04345         END FUNCTION
04346 !
04347         SUBROUTINE SORTIE( CHAINE , MNEMO , NBRE , SORLEO )
04348       IMPLICIT NONE
04349       INTEGER, INTENT(IN) :: NBRE
04350       CHARACTER*(*), INTENT(INOUT) :: CHAINE
04351       CHARACTER(LEN=8), INTENT(IN) :: MNEMO(NBRE)
04352       LOGICAL, INTENT(INOUT) :: SORLEO(NBRE)
04353         END SUBROUTINE
04354 !
04355         SUBROUTINE STOSEG31
04356      &(NPOIN,NELEM,NELEB,NELMAX,IELM,MXELVS,IKLE,IKLBOR,
04357      & NBOR,NPTFR,
04358      & GLOSEG,MAXSEG,GLOSEGBOR,MAXSEGBOR,NSEG,NSEGBOR,
04359      & ELTSEG,ELTSEGBOR,ORISEG,ORISEGBOR,
04360      & KNOLG,NDS)
04361       INTEGER, INTENT(IN)    :: NELMAX,IELM
04362       INTEGER, INTENT(IN)    :: NPOIN,NELEM,NELEB,MXELVS,NPTFR
04363       INTEGER, INTENT(IN)    :: MAXSEG,MAXSEGBOR
04364       INTEGER, INTENT(INOUT) :: NSEG,NSEGBOR
04365       INTEGER, INTENT(IN)    :: IKLE(NELMAX,4),IKLBOR(NELEB,3)
04366       INTEGER, INTENT(IN)    :: NBOR(NPTFR)
04367       INTEGER, INTENT(INOUT) :: GLOSEG(MAXSEG,2),GLOSEGBOR(MAXSEGBOR,2)
04368       INTEGER, INTENT(INOUT) :: ELTSEG(NELMAX,6),ELTSEGBOR(NELEB,3)
04369       INTEGER, INTENT(INOUT) :: ORISEG(NELMAX,6),ORISEGBOR(NELEB,3)
04370       INTEGER, INTENT(IN)    :: KNOLG(NPOIN)
04371       INTEGER, INTENT(INOUT) :: NDS(0:81,7)
04372         END SUBROUTINE
04373 !
04374         SUBROUTINE STOSEG41
04375      &(IFABOR,NELMAX,IELM,IKLE,NBOR,
04376      & GLOSEG,MAXSEG,ELTSEG,ORISEG,NELBOR,NULONE,NELMAX2,
04377      & NELEM2,NPTFR2,NPOIN2,NPLAN,KNOLG,NSEG2D,IKLBOR,NELEBX,NELEB)
04378       IMPLICIT NONE
04379       INTEGER, INTENT(IN)    :: NELMAX,NELMAX2,MAXSEG,IELM
04380       INTEGER, INTENT(IN)    :: NELEM2,NPTFR2,NPOIN2,NPLAN,NSEG2D
04381       INTEGER, INTENT(IN)    :: NELEB,NELEBX
04382       INTEGER, INTENT(IN)    :: NBOR(NPTFR2)
04383       INTEGER, INTENT(IN)    :: IFABOR(NELMAX2,*),IKLE(NELMAX,6)
04384       INTEGER, INTENT(IN)    :: NELBOR(NPTFR2),NULONE(NPTFR2)
04385       INTEGER, INTENT(IN)    :: IKLBOR(NELEBX,2)
04386       INTEGER, INTENT(INOUT) :: GLOSEG(MAXSEG,2)
04387       INTEGER, INTENT(INOUT) :: ELTSEG(NELMAX,15),ORISEG(NELMAX,15)
04388       INTEGER, INTENT(IN)    :: KNOLG(*)
04389         END SUBROUTINE
04390 !
04391         SUBROUTINE STOSEG51
04392      &(IFABOR,NELMAX,IELM,IKLE,NBOR,
04393      & GLOSEG,MAXSEG,ELTSEG,ORISEG,NELBOR,NULONE,NELMAX2,
04394      & NELEM2,NPTFR2,NPOIN2,NPLAN,KNOLG,NSEG2D,IKLBOR,NELEB,NELEBX)
04395       IMPLICIT NONE
04396       INTEGER, INTENT(IN)    :: NELMAX,NELMAX2,MAXSEG,IELM,NELEBX,NELEB
04397       INTEGER, INTENT(IN)    :: NELEM2,NPTFR2,NPOIN2,NPLAN,NSEG2D
04398       INTEGER, INTENT(IN)    :: NBOR(NPTFR2)
04399       INTEGER, INTENT(IN)    :: IKLBOR(NELEBX,2)
04400       INTEGER, INTENT(IN)    :: IFABOR(NELMAX2,*),IKLE(NELMAX,4)
04401       INTEGER, INTENT(IN)    :: NELBOR(NELEBX),NULONE(NELEBX)
04402       INTEGER, INTENT(INOUT) :: GLOSEG(MAXSEG,2)
04403       INTEGER, INTENT(INOUT) :: ELTSEG(NELMAX,6),ORISEG(NELMAX,6)
04404       INTEGER, INTENT(IN)    :: KNOLG(*)
04405         END SUBROUTINE
04406 !
04407         SUBROUTINE STOSEG
04408      &(IFABOR,NELEM,NELMAX,NELMAX2,IELM,IKLE,NBOR,NPTFR,
04409      & GLOSEG,MAXSEG,ELTSEG,ORISEG,NSEG,NELBOR,NULONE,KNOLG,
04410      & IKLBOR,NELEBX,NELEB)
04411       IMPLICIT NONE
04412       INTEGER, INTENT(IN)    :: NELMAX,NELMAX2,NPTFR,NSEG,MAXSEG,IELM
04413       INTEGER, INTENT(IN)    :: NELEM,NELEBX,NELEB
04414       INTEGER, INTENT(IN)    :: NBOR(NPTFR)
04415       INTEGER, INTENT(IN)    :: IFABOR(NELMAX2,*),IKLE(NELMAX,*)
04416       INTEGER, INTENT(IN)    :: NELBOR(NELEBX),NULONE(NELEBX)
04417       INTEGER, INTENT(IN)    :: IKLBOR(NELEBX,2)
04418       INTEGER, INTENT(INOUT) :: GLOSEG(MAXSEG,2)
04419       INTEGER, INTENT(INOUT) :: ELTSEG(NELMAX,*),ORISEG(NELMAX,3)
04420       INTEGER, INTENT(IN)    :: KNOLG(*)
04421         END SUBROUTINE
04422 !
04423         SUBROUTINE SUITE(VARSOR,CLAND,NUMDEB,NPRE,STD,
04424      &                   HIST,NHIST,NPOIN,AT,TEXTPR,VARCLA,NVARCL,
04425      &                   TROUVE,ALIRE,LISTIN,FIN,MAXVAR,NPLAN)
04426         USE BIEF_DEF
04427         IMPLICIT NONE
04428         TYPE(BIEF_OBJ),INTENT(INOUT):: VARSOR,CLAND
04429         INTEGER,INTENT(IN),OPTIONAL :: NPLAN
04430         INTEGER,INTENT(IN)          :: NHIST,NVARCL,MAXVAR
04431         INTEGER                     :: NUMDEB,NPRE,NPOIN,TROUVE(MAXVAR)
04432         INTEGER                     :: ALIRE(MAXVAR)
04433         CHARACTER(LEN=*)            :: STD
04434         CHARACTER(LEN=32)           :: TEXTPR(MAXVAR),VARCLA(NVARCL)
04435         DOUBLE PRECISION            :: HIST(*),AT
04436         LOGICAL                     :: FIN,LISTIN
04437         END SUBROUTINE
04438 !
04439         SUBROUTINE SUITE_SERAFIN(VARSOR,CLAND,NUMDEB,NPRE,STD,
04440      &                           HIST,NHIST,NPOIN,AT,TEXTPR,
04441      &                           VARCLA,NVARCL,
04442      &                           TROUVE,ALIRE,LISTIN,FIN,MAXVAR,NPLAN,
04443      &                           DT)
04444         USE BIEF_DEF
04445         IMPLICIT NONE
04446         TYPE(BIEF_OBJ),INTENT(INOUT):: VARSOR,CLAND
04447         INTEGER,INTENT(IN),OPTIONAL :: NPLAN
04448         INTEGER,INTENT(IN)          :: NHIST,NVARCL,MAXVAR
04449         INTEGER                     :: NUMDEB,NPRE,NPOIN,TROUVE(MAXVAR)
04450         INTEGER                     :: ALIRE(MAXVAR)
04451         CHARACTER(LEN=*)            :: STD
04452         CHARACTER(LEN=32)           :: TEXTPR(MAXVAR),VARCLA(NVARCL)
04453         DOUBLE PRECISION            :: HIST(*),AT
04454         DOUBLE PRECISION, INTENT(OUT), OPTIONAL :: DT
04455         LOGICAL                     :: FIN,LISTIN
04456         END SUBROUTINE
04457 !
04458         SUBROUTINE SURV11(SURFAC, XEL,YEL,NELEM,NELMAX)
04459       IMPLICIT NONE
04460       INTEGER, INTENT(IN) :: NELEM,NELMAX
04461       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,*),YEL(NELMAX,*)
04462       DOUBLE PRECISION, INTENT(INOUT) :: SURFAC(NELMAX)
04463         END SUBROUTINE
04464 !
04465         SUBROUTINE SURVOL(SURFAC, XEL,YEL,ZEL,NELEM,NELMAX,IELM)
04466       IMPLICIT NONE
04467       INTEGER, INTENT(IN) :: IELM,NELEM,NELMAX
04468       DOUBLE PRECISION, INTENT(INOUT) :: SURFAC(NELMAX)
04469       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,*)
04470       DOUBLE PRECISION, INTENT(IN) :: YEL(NELMAX,*)
04471       DOUBLE PRECISION, INTENT(IN) :: ZEL(NELMAX,*)
04472         END SUBROUTINE
04473 !
04474         SUBROUTINE TNOMER
04475      &(X, XA,TYPEXA,B,IKLE,NELEM,NELMAX,NPOIN,IELM,DITR,COPY,LV)
04476       IMPLICIT NONE
04477       INTEGER, INTENT(IN) :: IELM,NPOIN,NELEM,NELMAX,LV
04478       INTEGER, INTENT(IN) :: IKLE(NELMAX,*)
04479       DOUBLE PRECISION, INTENT(INOUT) :: X(NPOIN)
04480       DOUBLE PRECISION, INTENT(IN)    :: XA(NELMAX,*),B(NPOIN)
04481       CHARACTER*(*), INTENT(IN) :: TYPEXA,DITR
04482       LOGICAL, INTENT(IN) :: COPY
04483         END SUBROUTINE
04484 !
04485         SUBROUTINE TOPOGR
04486      &(ZF,ZREF,ZFE,IKLE,IFABOR,NBOR,NELBOR,NULONE,
04487      & ITRA05,ITRA02,ITRA03,NELEM,NPTFR,NPOIN,MXPTVS)
04488       IMPLICIT NONE
04489       INTEGER, INTENT(IN)    :: NELEM,NPTFR,NPOIN,MXPTVS
04490       INTEGER, INTENT(IN)    :: IKLE(NELEM,3),IFABOR(NELEM,3)
04491       INTEGER, INTENT(IN)    :: NBOR(NPTFR),NELBOR(NPTFR),NULONE(NPTFR)
04492       INTEGER, INTENT(INOUT) :: ITRA05(NPOIN),ITRA02(NPOIN)
04493       INTEGER, INTENT(INOUT) :: ITRA03(NPOIN)
04494       DOUBLE PRECISION, INTENT(INOUT) :: ZFE(NELEM),ZREF(NPOIN)
04495       DOUBLE PRECISION, INTENT(IN)    :: ZF(NPOIN)
04496         END SUBROUTINE
04497 !
04498         SUBROUTINE TRACVF
04499      &(F,FN,FSCEXP,H,HN,FXMAT,FXMATPAR,
04500      & V2DPAR,UNSV2D,DDT,FXBOR,FBOR,SMH,YASMH,T1,T2,T4,T5,T6,T7,T8,
04501      & MESH,LIMTRA,KDIR,KDDL,OPTSOU,IOPT2,FLBORTRA,MSK,DT,RAIN,PLUIE,
04502      & TRAIN)
04503       USE BIEF_DEF
04504       IMPLICIT NONE
04505       INTEGER, INTENT(IN)           :: KDIR,KDDL,OPTSOU,LIMTRA(*)
04506       INTEGER, INTENT(IN)           :: IOPT2
04507       DOUBLE PRECISION, INTENT(IN)  :: DDT,DT,TRAIN
04508       TYPE(BIEF_OBJ), INTENT(INOUT) :: F,T1,T2,T4,T5,T6,T7,T8,FLBORTRA
04509       TYPE(BIEF_OBJ), INTENT(IN)    :: FN,H,HN,V2DPAR,SMH,FBOR,FSCEXP
04510       TYPE(BIEF_OBJ), INTENT(IN)    :: FXBOR,UNSV2D,PLUIE
04511       DOUBLE PRECISION, INTENT(IN)  :: FXMAT(*),FXMATPAR(*)
04512       TYPE(BIEF_MESH), INTENT(INOUT):: MESH
04513       LOGICAL, INTENT(IN)           :: YASMH,MSK,RAIN
04514         END SUBROUTINE
04515 !
04516         SUBROUTINE TRID3D(XAUX,X,B,NPOIN,NPOIN2)
04517         IMPLICIT NONE
04518         INTEGER, INTENT(IN) :: NPOIN,NPOIN2
04519         DOUBLE PRECISION, INTENT(IN)    :: B(NPOIN2,*)
04520         DOUBLE PRECISION, INTENT(INOUT) :: XAUX(NPOIN,*),X(NPOIN2,*)
04521         END SUBROUTINE
04522 !
04523         DOUBLE PRECISION FUNCTION TSLOC(YEAR,MONTH,DAY,
04524      &                                  HOUR,MINU,SEC,AT)
04525       IMPLICIT NONE
04526       INTEGER, INTENT(IN)          :: MONTH,DAY,HOUR,MINU,SEC
04527       INTEGER, INTENT(INOUT)       :: YEAR
04528       DOUBLE PRECISION, INTENT(IN) :: AT
04529         END FUNCTION
04530 !
04531         SUBROUTINE TVF
04532      &(F,FN,FC,H,FXMAT,FXMATPAR,
04533      & UNSV2D,DT,FXBOR,FXBORPAR,T7,FBOR,SMH,YASMH,FSCEXP,
04534      & NSEG,NPOIN,NPTFR,GLOSEG,SIZGLO,NBOR,LIMTRA,KDIR,KDDL,OPTSOU,HLIN,
04535      & IOPT2,FLBORTRA,SURNIT,MESH,SF,RAIN,PLUIE,TRAIN)
04536       USE BIEF_DEF
04537       IMPLICIT NONE
04538       INTEGER, INTENT(IN)             :: NSEG,NPOIN,NPTFR,KDIR,KDDL
04539       INTEGER, INTENT(IN)             :: SIZGLO,OPTSOU,IOPT2
04540       INTEGER, INTENT(IN)             :: GLOSEG(SIZGLO,2)
04541       INTEGER, INTENT(IN)             :: NBOR(NPTFR),LIMTRA(NPTFR)
04542       DOUBLE PRECISION, INTENT(IN)    :: DT,SURNIT,TRAIN
04543       DOUBLE PRECISION, INTENT(INOUT) :: FLBORTRA(NPTFR)
04544       DOUBLE PRECISION, INTENT(INOUT) :: F(NPOIN)
04545       DOUBLE PRECISION, INTENT(IN)    :: FXBOR(NPTFR),PLUIE(NPOIN)
04546       DOUBLE PRECISION, INTENT(IN)    :: FC(NPOIN),H(NPOIN),HLIN(NPOIN)
04547       DOUBLE PRECISION, INTENT(IN)    :: SMH(NPOIN),UNSV2D(NPOIN)
04548       DOUBLE PRECISION, INTENT(IN)    :: FSCEXP(NPOIN),FN(NPOIN)
04549       DOUBLE PRECISION, INTENT(IN)    :: FBOR(NPTFR),FXBORPAR(NPOIN)
04550       DOUBLE PRECISION, INTENT(IN)    :: FXMAT(NSEG),FXMATPAR(NSEG)
04551       LOGICAL, INTENT(IN)             :: YASMH,RAIN
04552       TYPE(BIEF_OBJ), INTENT(INOUT)   :: T7,SF
04553       TYPE(BIEF_MESH), INTENT(INOUT)  :: MESH
04554         END SUBROUTINE
04555 !
04556         SUBROUTINE TVF_2
04557      &(F,FN,FC,UNSV2D,DT,FXBOR,FXBORPAR,FBOR,SMH,YASMH,FSCEXP,
04558      & NPOIN,NPTFR,NBOR,LIMTRA,KDIR,KDDL,OPTSOU,HLIN,
04559      & IOPT2,FLBORTRA,SURNIT,RAIN,PLUIE,TRAIN,PHI_I)
04560       IMPLICIT NONE
04561       INTEGER, INTENT(IN)             :: NPOIN,NPTFR,KDIR,KDDL
04562       INTEGER, INTENT(IN)             :: OPTSOU,IOPT2
04563       INTEGER, INTENT(IN)             :: NBOR(NPTFR),LIMTRA(NPTFR)
04564       DOUBLE PRECISION, INTENT(IN)    :: DT,SURNIT,TRAIN
04565       DOUBLE PRECISION, INTENT(INOUT) :: FLBORTRA(NPTFR)
04566       DOUBLE PRECISION, INTENT(INOUT) :: F(NPOIN)
04567       DOUBLE PRECISION, INTENT(IN)    :: FXBOR(NPTFR)
04568       DOUBLE PRECISION, INTENT(IN)    :: FC(NPOIN),HLIN(NPOIN)
04569       DOUBLE PRECISION, INTENT(IN)    :: SMH(NPOIN),UNSV2D(NPOIN)
04570       DOUBLE PRECISION, INTENT(IN)    :: PLUIE(NPOIN)
04571       DOUBLE PRECISION, INTENT(IN)    :: FSCEXP(NPOIN),FN(NPOIN)
04572       DOUBLE PRECISION, INTENT(IN)    :: FBOR(NPTFR),FXBORPAR(NPOIN)
04573       DOUBLE PRECISION, INTENT(IN)    :: PHI_I(NPOIN)
04574       LOGICAL, INTENT(IN)             :: YASMH,RAIN
04575         END SUBROUTINE
04576 !
04577         SUBROUTINE UM1X04(X1,X2,D12)
04578           USE BIEF_DEF
04579           IMPLICIT NONE
04580           TYPE(BIEF_OBJ), INTENT(INOUT) :: X1
04581           TYPE(BIEF_OBJ), INTENT(IN)    :: X2,D12
04582         END SUBROUTINE
04583 !
04584         SUBROUTINE UM1X09(X1,X2,X3,D12,D13,D23)
04585       USE BIEF_DEF
04586       IMPLICIT NONE
04587       TYPE(BIEF_OBJ), INTENT(INOUT) :: X1,X2
04588       TYPE(BIEF_OBJ), INTENT(IN)    :: X3,D12,D13,D23
04589         END SUBROUTINE
04590 !
04591         SUBROUTINE UM1X(X,D,S)
04592       USE BIEF_DEF
04593       IMPLICIT NONE
04594       INTEGER, INTENT(IN)           :: S
04595       TYPE(BIEF_OBJ), INTENT(INOUT) :: X
04596       TYPE(BIEF_OBJ), INTENT(IN)    :: D
04597         END SUBROUTINE
04598 !
04599         SUBROUTINE VC00AA(XMUL,SURFAC,NELEM,NELMAX,W1,W2,W3)
04600       IMPLICIT NONE
04601       INTEGER, INTENT(IN) :: NELEM,NELMAX
04602       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX)
04603       DOUBLE PRECISION, INTENT(INOUT) :: W2(NELMAX)
04604       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX)
04605       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
04606       DOUBLE PRECISION, INTENT(IN)    :: XMUL
04607         END SUBROUTINE
04608 !
04609         SUBROUTINE VC00BB( XMUL,SURFAC,NELEM,NELMAX,W1,W2,W3,W4 )
04610       IMPLICIT NONE
04611       INTEGER, INTENT(IN) :: NELEM,NELMAX
04612       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX),W2(NELMAX)
04613       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX),W4(NELMAX)
04614       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
04615       DOUBLE PRECISION, INTENT(IN)    :: XMUL
04616         END SUBROUTINE
04617 !
04618         SUBROUTINE VC00CC
04619      &(XMUL,SURFAC,NELEM,NELMAX,W1,W2,W3,W4,W5,W6)
04620       IMPLICIT NONE
04621       INTEGER, INTENT(IN) :: NELEM,NELMAX
04622       DOUBLE PRECISION, INTENT(INOUT):: W1(NELMAX),W2(NELMAX),W3(NELMAX)
04623       DOUBLE PRECISION, INTENT(INOUT):: W4(NELMAX),W5(NELMAX),W6(NELMAX)
04624       DOUBLE PRECISION, INTENT(IN)   :: SURFAC(NELMAX)
04625       DOUBLE PRECISION, INTENT(IN)   :: XMUL
04626         END SUBROUTINE
04627 !
04628         SUBROUTINE VC00FF
04629      &(XMUL,X,Y,Z,IKLE1,IKLE2,IKLE3,IKLE4,NBOR,NELEB,NELEBX,W1,W2,W3,W4,
04630      & NELBOR,NULONE,NELMAX)
04631       IMPLICIT NONE
04632       INTEGER, INTENT(IN) :: NELEB,NELEBX,NELMAX
04633       INTEGER, INTENT(IN) :: NELBOR(NELEBX),NULONE(NELEBX,4),NBOR(*)
04634       INTEGER, INTENT(IN) :: IKLE1(NELEBX),IKLE2(NELEBX)
04635       INTEGER, INTENT(IN) :: IKLE3(NELEBX),IKLE4(NELEBX)
04636       DOUBLE PRECISION, INTENT(IN)    :: X(NELMAX,6),Y(NELMAX,6),Z(*)
04637       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELEBX),W2(NELEBX)
04638       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELEBX),W4(NELEBX)
04639       DOUBLE PRECISION, INTENT(IN)    :: XMUL
04640         END SUBROUTINE
04641 !
04642         SUBROUTINE VC00FT
04643      &( XMUL,X,Y,Z,
04644      &  IKLE1,IKLE2,IKLE3,NBOR,NELEM,NELMAX,W1,W2,W3)
04645       IMPLICIT NONE
04646       INTEGER, INTENT(IN) :: NELEM,NELMAX
04647       INTEGER, INTENT(IN) :: NBOR(*)
04648       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
04649       DOUBLE PRECISION, INTENT(IN)    :: X(*),Y(*),Z(*)
04650       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX)
04651       DOUBLE PRECISION, INTENT(INOUT) :: W2(NELMAX)
04652       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX)
04653       DOUBLE PRECISION, INTENT(IN)    :: XMUL
04654         END SUBROUTINE
04655 !
04656         SUBROUTINE VC00PP2
04657      &( XMUL,Z,SURFAC,
04658      &  IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,NELEM,NELMAX,
04659      &  W1,W2,W3,W4,W5,W6)
04660       IMPLICIT NONE
04661       INTEGER, INTENT(IN) :: NELEM,NELMAX
04662       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
04663       INTEGER, INTENT(IN) :: IKLE4(NELMAX),IKLE5(NELMAX),IKLE6(NELMAX)
04664       DOUBLE PRECISION, INTENT(IN) :: Z(*),SURFAC(NELMAX)
04665       DOUBLE PRECISION, INTENT(INOUT)::W1(NELMAX),W2(NELMAX),W3(NELMAX)
04666       DOUBLE PRECISION, INTENT(INOUT)::W4(NELMAX),W5(NELMAX),W6(NELMAX)
04667       DOUBLE PRECISION, INTENT(IN) :: XMUL
04668         END SUBROUTINE
04669 !
04670         SUBROUTINE VC00PP
04671      &(XMUL,Z,SURFAC,IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,NELEM,NELMAX,
04672      & W1,W2,W3,W4,W5,W6,FORMUL)
04673       IMPLICIT NONE
04674       INTEGER, INTENT(IN) :: NELEM,NELMAX
04675       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
04676       INTEGER, INTENT(IN) :: IKLE4(NELMAX),IKLE5(NELMAX),IKLE6(NELMAX)
04677       DOUBLE PRECISION, INTENT(IN)    :: Z(*)
04678       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
04679       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX)
04680       DOUBLE PRECISION, INTENT(INOUT) :: W2(NELMAX)
04681       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX)
04682       DOUBLE PRECISION, INTENT(INOUT) :: W4(NELMAX)
04683       DOUBLE PRECISION, INTENT(INOUT) :: W5(NELMAX)
04684       DOUBLE PRECISION, INTENT(INOUT) :: W6(NELMAX)
04685       DOUBLE PRECISION, INTENT(IN)    :: XMUL
04686       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
04687         END SUBROUTINE
04688 !
04689         SUBROUTINE VC00TT
04690      &(XMUL,X,Y,Z,SURFAC,IKLE1,IKLE2,IKLE3,IKLE4,
04691      & NELEM,NELMAX,W1,W2,W3,W4,FORMUL,NPOIN2,NELEM2,IELM1)
04692       IMPLICIT NONE
04693       INTEGER, INTENT(IN) :: NELEM,NELMAX,NPOIN2,NELEM2,IELM1
04694       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
04695       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
04696       DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
04697       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX)
04698       DOUBLE PRECISION, INTENT(INOUT) :: W2(NELMAX)
04699       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX)
04700       DOUBLE PRECISION, INTENT(INOUT) :: W4(NELMAX)
04701       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
04702       DOUBLE PRECISION, INTENT(IN) :: XMUL
04703       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
04704         END SUBROUTINE
04705 !
04706         SUBROUTINE VC01AA
04707      &( XMUL,SF,F,SURFAC,
04708      &  IKLE1,IKLE2,IKLE3,NELEM,NELMAX,
04709      &  W1,W2,W3 )
04710       USE BIEF_DEF
04711       IMPLICIT NONE
04712       INTEGER, INTENT(IN) :: NELEM,NELMAX
04713       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
04714       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX)
04715       DOUBLE PRECISION, INTENT(INOUT) :: W2(NELMAX)
04716       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX)
04717       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
04718       DOUBLE PRECISION, INTENT(IN)    :: XMUL
04719       TYPE(BIEF_OBJ), INTENT(IN)      :: SF
04720       DOUBLE PRECISION, INTENT(IN)    :: F(*)
04721         END SUBROUTINE
04722 !
04723         SUBROUTINE VC01BB
04724      &( XMUL,SF,F,SURFAC,
04725      &  IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,
04726      &  W1,W2,W3,W4 )
04727       USE BIEF_DEF
04728       IMPLICIT NONE
04729       INTEGER, INTENT(IN) :: NELEM,NELMAX
04730       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
04731       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
04732       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX),W2(NELMAX)
04733       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX),W4(NELMAX)
04734       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
04735       DOUBLE PRECISION, INTENT(IN)    :: XMUL
04736       TYPE(BIEF_OBJ),   INTENT(IN) :: SF
04737       DOUBLE PRECISION, INTENT(IN) :: F(*)
04738         END SUBROUTINE
04739 !
04740         SUBROUTINE VC01FF
04741      &(XMUL,SF,F,X,Y,Z,
04742      & IKLE1,IKLE2,IKLE3,IKLE4,NBOR,NELEB,NELEBX,W1,W2,W3,W4,
04743      & NELBOR,NULONE,NELMAX)
04744       USE BIEF_DEF
04745       IMPLICIT NONE
04746       INTEGER, INTENT(IN) :: NELEB,NELEBX,NELMAX
04747       INTEGER, INTENT(IN) :: NELBOR(NELEBX),NULONE(NELEBX,4),NBOR(*)
04748       INTEGER, INTENT(IN) :: IKLE1(NELEBX),IKLE2(NELEBX)
04749       INTEGER, INTENT(IN) :: IKLE3(NELEBX),IKLE4(NELEBX)
04750       DOUBLE PRECISION, INTENT(IN)    :: X(NELMAX,6),Y(NELMAX,6),Z(*)
04751       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELEBX),W2(NELEBX)
04752       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELEBX),W4(NELEBX)
04753       TYPE(BIEF_OBJ), INTENT(IN)   :: SF
04754       DOUBLE PRECISION, INTENT(IN) :: F(*)
04755       DOUBLE PRECISION, INTENT(IN) :: XMUL
04756         END SUBROUTINE
04757 !
04758         SUBROUTINE VC01FT
04759      &( XMUL,SF,F,X,Y,Z,
04760      &  IKLE1,IKLE2,IKLE3,NBOR,NELEM,NELMAX,W1,W2,W3)
04761       USE BIEF_DEF
04762       IMPLICIT NONE
04763       INTEGER, INTENT(IN) :: NELEM,NELMAX
04764       INTEGER, INTENT(IN) :: NBOR(*)
04765       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
04766       DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
04767       DOUBLE PRECISION, INTENT(INOUT) ::W1(NELMAX),W2(NELMAX),W3(NELMAX)
04768       DOUBLE PRECISION, INTENT(IN) :: XMUL
04769       TYPE(BIEF_OBJ), INTENT(IN) :: SF
04770       DOUBLE PRECISION, INTENT(IN) :: F(*)
04771         END SUBROUTINE
04772 !
04773         SUBROUTINE VC01FT2
04774      &( XMUL,SF,F,SG,G,X,Y,Z,
04775      &  IKLE1,IKLE2,IKLE3,NBOR,NELEM,NELMAX,W1,W2,W3)
04776       USE BIEF_DEF
04777       IMPLICIT NONE
04778       INTEGER, INTENT(IN) :: NELEM,NELMAX
04779       INTEGER, INTENT(IN) :: NBOR(*)
04780       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
04781       DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
04782       DOUBLE PRECISION, INTENT(INOUT) ::W1(NELMAX),W2(NELMAX),W3(NELMAX)
04783       DOUBLE PRECISION, INTENT(IN) :: XMUL
04784       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SG
04785       DOUBLE PRECISION, INTENT(IN) :: F(*),G(*)
04786         END SUBROUTINE
04787 !
04788         SUBROUTINE VC01OO
04789      &( XMUL,SF,F,LGSEG,IKLE1,IKLE2,NBOR,NELEM,NELMAX,W1,W2 )
04790       USE BIEF_DEF
04791       IMPLICIT NONE
04792       INTEGER, INTENT(IN) :: NELEM,NELMAX
04793       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
04794       INTEGER, INTENT(IN) :: NBOR(NELMAX,2)
04795       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX),W2(NELMAX)
04796       DOUBLE PRECISION, INTENT(IN)    :: LGSEG(NELMAX)
04797       DOUBLE PRECISION, INTENT(IN)    :: XMUL
04798       TYPE(BIEF_OBJ), INTENT(IN) :: SF
04799       DOUBLE PRECISION, INTENT(IN) :: F(*)
04800         END SUBROUTINE
04801 !
04802         SUBROUTINE VC01PP
04803      &( XMUL,SF,F,Z,SURFAC,
04804      &  IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,NELEM,NELMAX,
04805      &  W1,W2,W3,W4,W5,W6)
04806       USE BIEF_DEF
04807       IMPLICIT NONE
04808       INTEGER, INTENT(IN) :: NELEM,NELMAX
04809       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
04810       INTEGER, INTENT(IN) :: IKLE4(NELMAX),IKLE5(NELMAX),IKLE6(NELMAX)
04811       DOUBLE PRECISION, INTENT(IN) :: Z(*)
04812       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
04813       DOUBLE PRECISION,INTENT(INOUT)::W1(NELMAX),W2(NELMAX),W3(NELMAX)
04814       DOUBLE PRECISION,INTENT(INOUT)::W4(NELMAX),W5(NELMAX),W6(NELMAX)
04815       DOUBLE PRECISION, INTENT(IN) :: XMUL
04816       TYPE(BIEF_OBJ),   INTENT(IN) :: SF
04817       DOUBLE PRECISION, INTENT(IN) :: F(*)
04818         END SUBROUTINE
04819 !
04820         SUBROUTINE VC01TT0
04821      &( XMUL,SF,F,X,Y,Z,
04822      &  IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,W)
04823       USE BIEF_DEF
04824       IMPLICIT NONE
04825       INTEGER, INTENT(IN) :: NELEM,NELMAX
04826       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
04827       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
04828       DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
04829       DOUBLE PRECISION, INTENT(INOUT) :: W(NELMAX)
04830       DOUBLE PRECISION, INTENT(IN) :: XMUL
04831       TYPE(BIEF_OBJ), INTENT(IN) :: SF
04832       DOUBLE PRECISION, INTENT(IN) :: F(*)
04833         END SUBROUTINE
04834 !
04835         SUBROUTINE VC01TT
04836      &( XMUL,SF,F,X,Y,Z,
04837      &  IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,W1,W2,W3,W4)
04838       USE BIEF_DEF
04839       IMPLICIT NONE
04840       INTEGER, INTENT(IN) :: NELEM,NELMAX
04841       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
04842       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
04843       DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
04844       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX),W2(NELMAX)
04845       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX),W4(NELMAX)
04846       DOUBLE PRECISION, INTENT(IN) :: XMUL
04847       TYPE(BIEF_OBJ), INTENT(IN) :: SF
04848       DOUBLE PRECISION, INTENT(IN) :: F(*)
04849         END SUBROUTINE
04850 !
04851         SUBROUTINE VC03AA
04852      &( XMUL,SF,SG,SH,SU,SV,F,G,H,U,V,
04853      &  XEL,YEL,SURFAC,
04854      &  IKLE1,IKLE2,IKLE3,NELEM,NELMAX,
04855      &  W1,W2,W3 )
04856       USE BIEF_DEF
04857       IMPLICIT NONE
04858       INTEGER, INTENT(IN) :: NELEM,NELMAX
04859       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
04860       DOUBLE PRECISION, INTENT(IN)   :: XEL(NELMAX,*),YEL(NELMAX,*)
04861       DOUBLE PRECISION, INTENT(INOUT):: W1(NELMAX),W2(NELMAX),W3(NELMAX)
04862       DOUBLE PRECISION, INTENT(IN)   :: SURFAC(NELMAX)
04863       DOUBLE PRECISION, INTENT(IN)   :: XMUL
04864       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SG,SH,SU,SV
04865       DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),H(*),U(*),V(*)
04866         END SUBROUTINE
04867 !
04868         SUBROUTINE VC03BB
04869      &( XMUL,SF,SG,SH,SU,SV,F,G,H,U,V,XEL,YEL,SURFAC,
04870      &  IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,W1,W2,W3,W4 )
04871       USE BIEF_DEF
04872       IMPLICIT NONE
04873       INTEGER, INTENT(IN) :: NELEM,NELMAX
04874       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
04875       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
04876       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,*),YEL(NELMAX,*)
04877       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX),W2(NELMAX)
04878       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX),W4(NELMAX)
04879       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
04880       DOUBLE PRECISION, INTENT(IN)    :: XMUL
04881       TYPE(BIEF_OBJ), INTENT(IN)   :: SF,SG,SH,SU,SV
04882       DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),H(*),U(*),V(*)
04883         END SUBROUTINE
04884 !
04885         SUBROUTINE VECTOR
04886      &(VEC,OP,FORMUL,IELM1,XMUL,F,G,H,U,V,W,MESH,MSK,MASKEL,LEGO,
04887      & ASSPAR)
04888       USE BIEF_DEF
04889       IMPLICIT NONE
04890       TYPE(BIEF_OBJ),    INTENT(INOUT) :: VEC
04891       DOUBLE PRECISION,  INTENT(IN)    :: XMUL
04892       INTEGER,           INTENT(IN)    :: IELM1
04893       LOGICAL,           INTENT(IN)    :: MSK
04894       CHARACTER(LEN=16), INTENT(IN)    :: FORMUL
04895       CHARACTER(LEN=1),  INTENT(IN)    :: OP
04896       TYPE(BIEF_OBJ),    INTENT(IN)    :: F,G,H,U,V,W,MASKEL
04897       TYPE(BIEF_MESH),   INTENT(INOUT) :: MESH
04898       LOGICAL, OPTIONAL, INTENT(IN)    :: LEGO,ASSPAR
04899         END SUBROUTINE
04900 !
04901         SUBROUTINE VC04AA
04902      &( XMUL,SU,SV,U,V,XEL,YEL,
04903      &  IKLE1,IKLE2,IKLE3,NELEM,NELMAX,W1,W2,W3,SPECAD)
04904       USE BIEF_DEF
04905       IMPLICIT NONE
04906       INTEGER, INTENT(IN) :: NELEM,NELMAX
04907       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
04908       DOUBLE PRECISION, INTENT(IN)   :: XEL(NELMAX,*),YEL(NELMAX,*)
04909       DOUBLE PRECISION, INTENT(INOUT):: W1(NELMAX),W2(NELMAX),W3(NELMAX)
04910       DOUBLE PRECISION, INTENT(IN)   :: XMUL
04911       TYPE(BIEF_OBJ), INTENT(IN)     :: SU,SV
04912       DOUBLE PRECISION, INTENT(IN)   :: U(*),V(*)
04913       LOGICAL, INTENT(IN)            :: SPECAD
04914         END SUBROUTINE
04915 !
04916         SUBROUTINE VC04PP
04917      &( XMUL,SU,SV,SW,U,V,W,SF,SG,SH,F,G,H,X,Y,Z,
04918      &  IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,NELEM,NELMAX,
04919      &  W1,W2,W3,W4,W5,W6,SPECAD,FORMUL,NELEM2)
04920       USE BIEF_DEF
04921       IMPLICIT NONE
04922       INTEGER, INTENT(IN) :: NELEM,NELMAX,NELEM2
04923       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
04924       INTEGER, INTENT(IN) :: IKLE4(NELMAX),IKLE5(NELMAX),IKLE6(NELMAX)
04925       DOUBLE PRECISION, INTENT(IN)   ::X(NELMAX,6),Y(NELMAX,6),Z(*)
04926       DOUBLE PRECISION, INTENT(INOUT)::W1(NELMAX),W2(NELMAX),W3(NELMAX)
04927       DOUBLE PRECISION, INTENT(INOUT)::W4(NELMAX),W5(NELMAX),W6(NELMAX)
04928       DOUBLE PRECISION, INTENT(IN)   ::XMUL
04929       LOGICAL, INTENT(IN) :: SPECAD
04930       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
04931       TYPE(BIEF_OBJ),   INTENT(IN)  :: SU,SV,SW,SF,SG,SH
04932       DOUBLE PRECISION, INTENT(IN)  :: U(*),V(*),W(*),F(*),G(*),H(*)
04933         END SUBROUTINE
04934 !
04935         SUBROUTINE VC04TT
04936      &(XMUL,SU,SV,SW,U,V,W,SF,SG,SH,F,G,H,X,Y,Z,
04937      & IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,W1,W2,W3,W4,FORMUL,SPECAD,
04938      & NPOIN2,NELEM2)
04939       USE BIEF_DEF
04940       IMPLICIT NONE
04941       INTEGER, INTENT(IN) :: NELEM,NELMAX,NPOIN2,NELEM2
04942       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
04943       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
04944       DOUBLE PRECISION, INTENT(IN)    :: X(*),Y(*),Z(*)
04945       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX),W2(NELMAX)
04946       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX),W4(NELMAX)
04947       DOUBLE PRECISION, INTENT(IN)    :: XMUL
04948       LOGICAL, INTENT(IN) :: SPECAD
04949       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
04950       TYPE(BIEF_OBJ),   INTENT(IN) :: SU,SV,SW,SF,SG,SH
04951       DOUBLE PRECISION, INTENT(IN) :: U(*),V(*),W(*),F(*),G(*),H(*)
04952         END SUBROUTINE
04953 !
04954         SUBROUTINE VC05FF
04955      &(XMUL,SU,SV,U,V,X,Y,Z,
04956      & IKLE1,IKLE2,IKLE3,IKLE4,NBOR,NELEB,NELEBX,W1,W2,W3,W4,
04957      & NELBOR,NULONE,NELMAX)
04958       USE BIEF_DEF
04959       IMPLICIT NONE
04960       INTEGER, INTENT(IN) :: NELEB,NELEBX,NELMAX
04961       INTEGER, INTENT(IN) :: NELBOR(NELEBX),NULONE(NELEBX,4),NBOR(*)
04962       INTEGER, INTENT(IN) :: IKLE1(NELEBX),IKLE2(NELEBX)
04963       INTEGER, INTENT(IN) :: IKLE3(NELEBX),IKLE4(NELEBX)
04964       DOUBLE PRECISION, INTENT(IN)    :: X(NELMAX,6),Y(NELMAX,6),Z(*)
04965       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELEBX),W2(NELEBX)
04966       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELEBX),W4(NELEBX)
04967       DOUBLE PRECISION, INTENT(IN)    :: XMUL
04968       TYPE(BIEF_OBJ), INTENT(IN)   :: SU,SV
04969       DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
04970         END SUBROUTINE
04971 !
04972         SUBROUTINE VC05FT
04973      &( XMUL,SU,SV,U,V,X,Y,Z,
04974      &  IKLE1,IKLE2,IKLE3,NBOR,NELEM,NELMAX,W1,W2,W3)
04975       USE BIEF_DEF
04976       IMPLICIT NONE
04977       INTEGER, INTENT(IN) :: NBOR(*),NELEM,NELMAX
04978       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
04979       DOUBLE PRECISION, INTENT(IN)   :: X(*),Y(*),Z(*)
04980       DOUBLE PRECISION, INTENT(INOUT):: W1(NELMAX),W2(NELMAX),W3(NELMAX)
04981       DOUBLE PRECISION, INTENT(IN)   :: XMUL
04982       TYPE(BIEF_OBJ), INTENT(IN)     :: SU,SV
04983       DOUBLE PRECISION, INTENT(IN)   :: U(*),V(*)
04984         END SUBROUTINE
04985 !
04986         SUBROUTINE VC05OO
04987      &(XMUL,SU,SV,U,V,XNOR,YNOR,LGSEG,IKLE,NBOR,NELEM,NELMAX,W1,W2)
04988       USE BIEF_DEF
04989       IMPLICIT NONE
04990       INTEGER, INTENT(IN) :: NELEM,NELMAX
04991       INTEGER, INTENT(IN) :: IKLE(NELMAX,*)
04992       INTEGER, INTENT(IN) :: NBOR(*)
04993       DOUBLE PRECISION, INTENT(IN)    :: XNOR(NELMAX),YNOR(NELMAX)
04994       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX),W2(NELMAX)
04995       DOUBLE PRECISION, INTENT(IN)    :: LGSEG(NELMAX)
04996       DOUBLE PRECISION, INTENT(IN)    :: XMUL
04997       TYPE(BIEF_OBJ)  , INTENT(IN) :: SU,SV
04998       DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
04999         END SUBROUTINE
05000 !
05001         SUBROUTINE VC08AA
05002      &(XMUL,SF,SU,SV,F,U,V,XEL,YEL,IKLE,NELEM,NELMAX,W1,W2,W3,FORMUL)
05003       USE BIEF_DEF
05004       IMPLICIT NONE
05005       INTEGER, INTENT(IN) :: NELEM,NELMAX
05006       INTEGER, INTENT(IN) :: IKLE(NELMAX,6)
05007       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,*),YEL(NELMAX,*)
05008       DOUBLE PRECISION, INTENT(INOUT) ::W1(NELMAX),W2(NELMAX),W3(NELMAX)
05009       DOUBLE PRECISION, INTENT(IN)    :: XMUL
05010       TYPE(BIEF_OBJ), INTENT(IN)   :: SF,SU,SV
05011       DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*)
05012       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
05013         END SUBROUTINE
05014 !
05015         SUBROUTINE VC08BB
05016      &( XMUL,SF,SU,SV,F,U,V,XEL,YEL,
05017      &  IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,
05018      &  W1,W2,W3,W4 , FORMUL )
05019       USE BIEF_DEF
05020       IMPLICIT NONE
05021       INTEGER, INTENT(IN) :: NELEM,NELMAX
05022       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX*3),YEL(NELMAX*3),XMUL
05023       DOUBLE PRECISION, INTENT(INOUT) :: W1(4*NELMAX),W2(NELMAX)
05024       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX),W4(NELMAX)
05025       INTEGER, INTENT(IN) :: IKLE1(4*NELMAX)
05026       INTEGER, INTENT(IN) :: IKLE2(NELMAX),IKLE3(NELMAX),IKLE4(NELMAX)
05027       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
05028       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SU,SV
05029       DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*)
05030         END SUBROUTINE
05031 !
05032         SUBROUTINE VC08CC
05033      &(XMUL,SF,SU,SV,F,U,V,XEL,YEL,
05034      & IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,NELEM,NELMAX,
05035      & W1,W2,W3,W4,W5,W6,FORMUL )
05036       USE BIEF_DEF
05037       IMPLICIT NONE
05038       INTEGER, INTENT(IN) :: NELEM,NELMAX
05039       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX*3),YEL(NELMAX*3),XMUL
05040       DOUBLE PRECISION, INTENT(INOUT) :: W1(6*NELMAX),W2(NELMAX)
05041       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX),W4(NELMAX)
05042       DOUBLE PRECISION, INTENT(INOUT) :: W5(NELMAX),W6(NELMAX)
05043       INTEGER, INTENT(IN) :: IKLE1(6*NELMAX),IKLE2(NELMAX)
05044       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
05045       INTEGER, INTENT(IN) :: IKLE5(NELMAX),IKLE6(NELMAX)
05046       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
05047       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SU,SV
05048       DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*)
05049         END SUBROUTINE
05050 !
05051         SUBROUTINE VC08PP
05052      &( XMUL,SF,SU,SV,SW,F,U,V,W,X,Y,Z,
05053      &  IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,NELEM,NELMAX,
05054      &  W1,W2,W3,W4,W5,W6 )
05055       USE BIEF_DEF
05056       IMPLICIT NONE
05057       INTEGER, INTENT(IN) :: NELEM,NELMAX
05058       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
05059       INTEGER, INTENT(IN) :: IKLE4(NELMAX),IKLE5(NELMAX),IKLE6(NELMAX)
05060       DOUBLE PRECISION, INTENT(IN) :: X(NELMAX,6),Y(NELMAX,6),Z(*)
05061       DOUBLE PRECISION, INTENT(IN) :: XMUL
05062       DOUBLE PRECISION, INTENT(INOUT)::W1(NELMAX),W2(NELMAX),W3(NELMAX)
05063       DOUBLE PRECISION, INTENT(INOUT)::W4(NELMAX),W5(NELMAX),W6(NELMAX)
05064       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SU,SV,SW
05065       DOUBLE PRECISION, INTENT(IN) ::F(*),U(*),V(*),W(*)
05066         END SUBROUTINE
05067 !
05068         SUBROUTINE VC08TT
05069      &( XMUL,SF,SU,SV,SW,F,U,V,W,X,Y,Z,
05070      &  IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,
05071      &  W1,W2,W3,W4)
05072       USE BIEF_DEF
05073       IMPLICIT NONE
05074       INTEGER, INTENT(IN) :: NELEM,NELMAX
05075       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
05076       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
05077       DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*),XMUL
05078       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX),W2(NELMAX)
05079       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX),W4(NELMAX)
05080       TYPE(BIEF_OBJ),   INTENT(IN) :: SF,SU,SV,SW
05081       DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*),W(*)
05082         END SUBROUTINE
05083 !
05084         SUBROUTINE VC09AA
05085      &( XMUL,SF,SG,SU,SV,F,G,U,V,
05086      &  XEL,YEL,IKLE1,IKLE2,IKLE3,NELEM,NELMAX,W1,W2,W3 )
05087       USE BIEF_DEF
05088       IMPLICIT NONE
05089       INTEGER, INTENT(IN) :: NELEM,NELMAX
05090       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
05091       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,*),YEL(NELMAX,*)
05092       DOUBLE PRECISION, INTENT(INOUT) ::W1(NELMAX),W2(NELMAX),W3(NELMAX)
05093       DOUBLE PRECISION, INTENT(IN)    :: XMUL
05094       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SG,SU,SV
05095       DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),U(*),V(*)
05096         END SUBROUTINE
05097 !
05098         SUBROUTINE VC10OO
05099      &( XMUL,SF,SU,SV,F,U,V,XNOR,YNOR,LGSEG,
05100      &  IKLE,NBOR,NELEM,NELMAX,W1,W2)
05101       USE BIEF_DEF
05102       IMPLICIT NONE
05103       INTEGER, INTENT(IN)             :: NELEM,NELMAX
05104       INTEGER, INTENT(IN)             :: IKLE(NELMAX,*),NBOR(*)
05105       DOUBLE PRECISION, INTENT(IN)    :: XNOR(NELMAX),YNOR(NELMAX)
05106       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX),W2(NELMAX)
05107       DOUBLE PRECISION, INTENT(IN)    :: LGSEG(NELMAX)
05108       DOUBLE PRECISION, INTENT(IN)    :: XMUL
05109       TYPE(BIEF_OBJ), INTENT(IN)      :: SF,SU,SV
05110       DOUBLE PRECISION, INTENT(IN)    :: F(*),U(*),V(*)
05111         END SUBROUTINE
05112 !
05113         SUBROUTINE VC11AA2
05114      &( XMUL,SF,SG,SH,F,G,H,XEL,YEL,
05115      &  IKLE1,IKLE2,IKLE3,NELEM,NELMAX,W1,W2,W3 , ICOORD )
05116       USE BIEF_DEF
05117       IMPLICIT NONE
05118       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
05119       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
05120       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,*),YEL(NELMAX,*)
05121       DOUBLE PRECISION,INTENT(INOUT)::W1(NELMAX),W2(NELMAX),W3(NELMAX)
05122       DOUBLE PRECISION, INTENT(IN) :: XMUL
05123       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SG,SH
05124       DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),H(*)
05125         END SUBROUTINE
05126 !
05127         SUBROUTINE VC11AA
05128      &( XMUL,SF,SG,F,G,XEL,YEL,
05129      &  IKLE1,IKLE2,IKLE3,NELEM,NELMAX,W1,W2,W3 , ICOORD )
05130       USE BIEF_DEF
05131       IMPLICIT NONE
05132       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
05133       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
05134       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,*),YEL(NELMAX,*)
05135       DOUBLE PRECISION, INTENT(INOUT) ::W1(NELMAX),W2(NELMAX),W3(NELMAX)
05136       DOUBLE PRECISION, INTENT(IN) :: XMUL
05137       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SG
05138       DOUBLE PRECISION, INTENT(IN) :: F(*),G(*)
05139         END SUBROUTINE
05140 !
05141         SUBROUTINE VC11BB
05142      &( XMUL,SF,SG,F,G,XEL,YEL,
05143      &  IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,W1,W2,W3,W4 , ICOORD )
05144       USE BIEF_DEF
05145       IMPLICIT NONE
05146       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
05147       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
05148       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
05149       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,*),YEL(NELMAX,*)
05150       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX),W2(NELMAX)
05151       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX),W4(NELMAX)
05152       DOUBLE PRECISION, INTENT(IN)    :: XMUL
05153       TYPE(BIEF_OBJ), INTENT(IN)   :: SF,SG
05154       DOUBLE PRECISION, INTENT(IN) :: F(*),G(*)
05155         END SUBROUTINE
05156 !
05157         SUBROUTINE VC11PP
05158      &( XMUL,SF,SG,F,G,X,Y,Z,
05159      &  IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,NELEM,NELMAX,
05160      &  W1,W2,W3,W4,W5,W6 , ICOORD )
05161       USE BIEF_DEF
05162       IMPLICIT NONE
05163       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
05164       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
05165       INTEGER, INTENT(IN) :: IKLE4(NELMAX),IKLE5(NELMAX),IKLE6(NELMAX)
05166       DOUBLE PRECISION, INTENT(IN)   :: X(NELMAX,6),Y(NELMAX,6),Z(*)
05167       DOUBLE PRECISION, INTENT(IN)   :: XMUL
05168       DOUBLE PRECISION, INTENT(INOUT)::W1(NELMAX),W2(NELMAX),W3(NELMAX)
05169       DOUBLE PRECISION, INTENT(INOUT)::W4(NELMAX),W5(NELMAX),W6(NELMAX)
05170       TYPE(BIEF_OBJ) :: SF,SG
05171       DOUBLE PRECISION F(*),G(*)
05172         END SUBROUTINE
05173 !
05174         SUBROUTINE WRITE_DATA
05175      &(FFORMAT,FILERES,NVARS,TIME,TIMESTEP,OUTVAR,NOMVAR,BVARSOR,N)
05176         USE BIEF_DEF
05177         IMPLICIT NONE
05178         CHARACTER(LEN=8), INTENT(IN)          :: FFORMAT
05179         INTEGER,          INTENT(IN)          :: FILERES,N
05180         INTEGER,          INTENT(IN)          :: NVARS
05181         DOUBLE PRECISION, INTENT(IN)          :: TIME
05182         INTEGER,          INTENT(IN)          :: TIMESTEP
05183         CHARACTER(LEN=32),DIMENSION(NVARS), INTENT(IN) :: NOMVAR
05184         LOGICAL, DIMENSION(NVARS), INTENT(IN) :: OUTVAR
05185         TYPE(BIEF_OBJ),            INTENT(IN) :: BVARSOR
05186         END SUBROUTINE
05187 !
05188         SUBROUTINE VC13AA
05189      &( XMUL,SF,F,XEL,YEL,
05190      &  IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,W1,W2,W3 , ICOORD )
05191       USE BIEF_DEF
05192       IMPLICIT NONE
05193       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
05194       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
05195       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
05196       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,*),YEL(NELMAX,*)
05197       DOUBLE PRECISION, INTENT(INOUT) ::W1(NELMAX),W2(NELMAX),W3(NELMAX)
05198       DOUBLE PRECISION, INTENT(IN)    :: XMUL
05199       TYPE(BIEF_OBJ), INTENT(IN) :: SF
05200       DOUBLE PRECISION, INTENT(IN) :: F(*)
05201         END SUBROUTINE
05202 !
05203         SUBROUTINE VC13BB
05204      &( XMUL,SF,F,XEL,YEL,
05205      &  IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,
05206      &  W1,W2,W3,W4,ICOORD )
05207       USE BIEF_DEF
05208       IMPLICIT NONE
05209       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
05210       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
05211       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
05212       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,*),YEL(NELMAX,*)
05213       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX),W2(NELMAX)
05214       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX),W4(NELMAX)
05215       DOUBLE PRECISION, INTENT(IN)    :: XMUL
05216       TYPE(BIEF_OBJ), INTENT(IN) :: SF
05217       DOUBLE PRECISION, INTENT(IN) :: F(*)
05218         END SUBROUTINE
05219 !
05220         SUBROUTINE VC13CC
05221      &( XMUL,SF,F,XEL,YEL,
05222      &  IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,
05223      &  NELEM,NELMAX,
05224      &  W1,W2,W3,W4,W5,W6,ICOORD )
05225       USE BIEF_DEF
05226       IMPLICIT NONE
05227       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
05228       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
05229       INTEGER, INTENT(IN) :: IKLE4(NELMAX),IKLE5(NELMAX),IKLE6(NELMAX)
05230       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,*),YEL(NELMAX,*)
05231       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX),W2(NELMAX)
05232       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX),W4(NELMAX)
05233       DOUBLE PRECISION, INTENT(INOUT) :: W5(NELMAX),W6(NELMAX)
05234       DOUBLE PRECISION, INTENT(IN)    :: XMUL
05235       TYPE(BIEF_OBJ), INTENT(IN) :: SF
05236       DOUBLE PRECISION, INTENT(IN) :: F(*)
05237         END SUBROUTINE
05238 !
05239         SUBROUTINE VC13PP2
05240      &(XMUL,SF,F,X,Y,Z,
05241      & IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,NELEM,NELMAX,
05242      & W1,W2,W3,W4,W5,W6,ICOORD)
05243       USE BIEF_DEF
05244       IMPLICIT NONE
05245       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
05246       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
05247       INTEGER, INTENT(IN) :: IKLE4(NELMAX),IKLE5(NELMAX),IKLE6(NELMAX)
05248       DOUBLE PRECISION, INTENT(IN)    :: X(NELMAX,6),Y(NELMAX,6),Z(*)
05249       DOUBLE PRECISION, INTENT(INOUT) ::W1(NELMAX),W2(NELMAX),W3(NELMAX)
05250       DOUBLE PRECISION, INTENT(INOUT) ::W4(NELMAX),W5(NELMAX),W6(NELMAX)
05251       DOUBLE PRECISION, INTENT(IN)    :: XMUL
05252       TYPE(BIEF_OBJ), INTENT(IN) :: SF
05253       DOUBLE PRECISION, INTENT(IN) :: F(*)
05254         END SUBROUTINE
05255 !
05256         SUBROUTINE VC13PP
05257      &(XMUL,SF,F,X,Y,Z,SURFAC,
05258      & IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,NELEM,NELMAX,
05259      & W1,W2,W3,W4,W5,W6,ICOORD,FORMUL)
05260       USE BIEF_DEF
05261       IMPLICIT NONE
05262       INTEGER LNG,LU
05263       COMMON/INFO/LNG,LU
05264       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
05265       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
05266       INTEGER, INTENT(IN) :: IKLE4(NELMAX),IKLE5(NELMAX),IKLE6(NELMAX)
05267       DOUBLE PRECISION, INTENT(IN) :: X(NELMAX,6),Y(NELMAX,6),Z(*)
05268       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
05269       DOUBLE PRECISION, INTENT(INOUT) ::W1(NELMAX),W2(NELMAX),W3(NELMAX)
05270       DOUBLE PRECISION, INTENT(INOUT) ::W4(NELMAX),W5(NELMAX),W6(NELMAX)
05271       DOUBLE PRECISION, INTENT(IN) :: XMUL
05272       TYPE(BIEF_OBJ), INTENT(IN) :: SF
05273       DOUBLE PRECISION, INTENT(IN) :: F(*)
05274       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
05275         END SUBROUTINE
05276 !
05277         SUBROUTINE VC13TT
05278      &( XMUL,SF,F,X,Y,Z,
05279      &  IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,
05280      &  W1,W2,W3,W4,ICOORD , FORMUL )
05281       USE BIEF_DEF
05282       IMPLICIT NONE
05283       INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
05284       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
05285       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
05286       DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
05287       DOUBLE PRECISION, INTENT(INOUT) :: W1(NELMAX),W2(NELMAX)
05288       DOUBLE PRECISION, INTENT(INOUT) :: W3(NELMAX),W4(NELMAX)
05289       DOUBLE PRECISION, INTENT(IN) :: XMUL
05290       TYPE(BIEF_OBJ), INTENT(IN) :: SF
05291       DOUBLE PRECISION, INTENT(IN) :: F(*)
05292       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
05293         END SUBROUTINE
05294 !
05295         SUBROUTINE VC14AA
05296      &( XMUL,SU,SV,U,V,XEL,YEL,SURFAC,IKLE1,IKLE2,IKLE3,NELEM,NELMAX,
05297      &  W1,W2,W3)
05298       USE BIEF_DEF
05299       IMPLICIT NONE
05300       INTEGER, INTENT(IN) :: NELEM,NELMAX
05301       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
05302       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,*),YEL(NELMAX,*)
05303       DOUBLE PRECISION, INTENT(INOUT) ::W1(NELMAX),W2(NELMAX),W3(NELMAX)
05304       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
05305       DOUBLE PRECISION, INTENT(IN) :: XMUL
05306       TYPE(BIEF_OBJ), INTENT(IN) :: SU,SV
05307       DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
05308         END SUBROUTINE
05309 !
05310         SUBROUTINE VC15AA
05311      &( XMUL,SF,SU,SV,F,U,V,
05312      &  XEL,YEL,
05313      &  IKLE1,IKLE2,IKLE3,IKLE4,NELEM,NELMAX,
05314      &  W1,W2,W3)
05315       USE BIEF_DEF
05316       IMPLICIT NONE
05317       INTEGER, INTENT(IN) :: NELEM,NELMAX
05318       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX)
05319       INTEGER, INTENT(IN) :: IKLE3(NELMAX),IKLE4(NELMAX)
05320       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,*),YEL(NELMAX,*)
05321       DOUBLE PRECISION, INTENT(INOUT) ::W1(NELMAX),W2(NELMAX),W3(NELMAX)
05322       DOUBLE PRECISION, INTENT(IN) :: XMUL
05323       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SU,SV
05324       DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*)
05325         END SUBROUTINE
05326 !
05327         SUBROUTINE VC16AA
05328      &( XMUL,SF,SG,SU,SV,F,G,U,V,
05329      &  XEL,YEL,SURFAC,
05330      &  IKLE1,IKLE2,IKLE3,NELEM,NELMAX,
05331      &  W1,W2,W3 )
05332       USE BIEF_DEF
05333       IMPLICIT NONE
05334       INTEGER, INTENT(IN) :: NELEM,NELMAX
05335       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
05336       DOUBLE PRECISION, INTENT(IN) :: XEL(NELMAX,*),YEL(NELMAX,*)
05337       DOUBLE PRECISION,INTENT(INOUT)::W1(NELMAX),W2(NELMAX),W3(NELMAX)
05338       DOUBLE PRECISION, INTENT(IN) :: SURFAC(NELMAX)
05339       DOUBLE PRECISION, INTENT(IN) :: XMUL
05340       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SG,SU,SV
05341       DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),U(*),V(*)
05342         END SUBROUTINE
05343 !
05344         SUBROUTINE VC18PP
05345      &( XMUL,SF,SU,SV,F,U,V,X,Y,Z,
05346      &  IKLE1,IKLE2,IKLE3,IKLE4,IKLE5,IKLE6,NELEM,NELMAX,
05347      &  W1,W2,W3)
05348       USE BIEF_DEF
05349       IMPLICIT NONE
05350       INTEGER, INTENT(IN) :: NELEM,NELMAX
05351       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
05352       INTEGER, INTENT(IN) :: IKLE4(NELMAX),IKLE5(NELMAX),IKLE6(NELMAX)
05353       DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*),XMUL
05354       DOUBLE PRECISION, INTENT(INOUT) ::W1(NELMAX),W2(NELMAX),W3(NELMAX)
05355       TYPE(BIEF_OBJ), INTENT(IN) :: SF,SU,SV
05356       DOUBLE PRECISION, INTENT(IN) :: F(*),U(*),V(*)
05357         END SUBROUTINE
05358 !
05359         SUBROUTINE VC19AA
05360      &( XMUL,SF,SG,SH,SU,SV,F,G,H,U,V,
05361      &  XEL,YEL,SURFAC,IKLE1,IKLE2,IKLE3,NELEM,NELMAX,W1,W2,W3,FORMUL)
05362       USE BIEF_DEF
05363       IMPLICIT NONE
05364       INTEGER, INTENT(IN) :: NELEM,NELMAX
05365       INTEGER, INTENT(IN) :: IKLE1(NELMAX),IKLE2(NELMAX),IKLE3(NELMAX)
05366       DOUBLE PRECISION, INTENT(IN)    :: XMUL
05367       DOUBLE PRECISION, INTENT(IN)    :: XEL(NELMAX,*),YEL(NELMAX,*)
05368       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX)
05369       DOUBLE PRECISION, INTENT(INOUT) :: W1(*),W2(*),W3(*)
05370       TYPE(BIEF_OBJ), INTENT(IN)    :: SF,SH,SG,SU,SV
05371       DOUBLE PRECISION, INTENT(IN)  :: F(*),G(*),H(NELMAX,3),U(*),V(*)
05372       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
05373         END SUBROUTINE
05374 !
05375         SUBROUTINE VECLE3(LV,IKLE,NELEM,NELMAX,NPOIN,V)
05376       USE BIEF_DEF
05377       IMPLICIT NONE
05378       INTEGER, INTENT(INOUT)          :: LV
05379       INTEGER, INTENT(IN)             :: NELEM,NELMAX,NPOIN
05380       INTEGER, INTENT(IN)             :: IKLE(NELMAX,3)
05381       DOUBLE PRECISION, INTENT(INOUT) :: V(NPOIN)
05382         END SUBROUTINE
05383 !
05384         SUBROUTINE VECLE4(LV,IKLE,NELEM,NELMAX,NPOIN,V)
05385       USE BIEF_DEF
05386       IMPLICIT NONE
05387       INTEGER, INTENT(INOUT) :: LV
05388       INTEGER, INTENT(IN)    :: NELEM,NELMAX,NPOIN
05389       INTEGER, INTENT(IN)    :: IKLE(NELMAX,4)
05390       DOUBLE PRECISION, INTENT(INOUT) :: V(NPOIN)
05391         END SUBROUTINE
05392 !
05393         SUBROUTINE VECLE6(LV,IKLE,NELEM,NELMAX,NPOIN,V)
05394       USE BIEF_DEF
05395       IMPLICIT NONE
05396       INTEGER, INTENT(INOUT) :: LV
05397       INTEGER, INTENT(IN)    :: NELEM,NELMAX,NPOIN
05398       INTEGER, INTENT(IN)    :: IKLE(NELMAX,6)
05399       DOUBLE PRECISION, INTENT(INOUT) :: V(NPOIN)
05400         END SUBROUTINE
05401 !
05402         SUBROUTINE VECLEN(LV,NDP,IKLE,NELEM,NELMAX,NPOIN,V)
05403       USE BIEF_DEF
05404       IMPLICIT NONE
05405       INTEGER, INTENT(INOUT) :: LV
05406       INTEGER, INTENT(IN)    :: NELEM,NELMAX,NDP,NPOIN
05407       INTEGER, INTENT(IN)    :: IKLE(NELMAX,NDP)
05408       DOUBLE PRECISION, INTENT(INOUT) :: V(NPOIN)
05409         END SUBROUTINE
05410 !
05411         SUBROUTINE VECTOS
05412      &(SVEC,VEC,OP,FORMUL,
05413      & XMUL,F,G,H,U,V,W,SF,SG,SH,SU,SV,SW,
05414      & T,LEGO,
05415      & XEL,YEL,ZEL,XPT,YPT,ZPT,SURFAC,LGSEG,IKLE,IKLBOR,NBOR,
05416      & XNOR,YNOR,ZNOR,NPT,NELEM,NELEB,NELMAX,NELEBX,
05417      & IELM1,LV,MSK,MASKEL,MESH,DIM1T,NELBOR,NULONE,ASSPAR)
05418       USE BIEF_DEF
05419       IMPLICIT NONE
05420       INTEGER, INTENT(IN) :: NELMAX,NPT,NELEM,IELM1,LV,NELEB,NELEBX
05421       INTEGER, INTENT(IN) :: DIM1T
05422       INTEGER, INTENT(IN) :: IKLE(NELMAX,*),NBOR(*),IKLBOR(NELEBX,*)
05423       INTEGER, INTENT(IN) :: NELBOR(NELEBX),NULONE(NELEBX,*)
05424       DOUBLE PRECISION, INTENT(IN)    :: SURFAC(NELMAX),LGSEG(NELEB)
05425       DOUBLE PRECISION, INTENT(IN)    :: XEL(*),YEL(*),ZEL(*)
05426       DOUBLE PRECISION, INTENT(IN)    :: XPT(*),YPT(*),ZPT(*)
05427       DOUBLE PRECISION, INTENT(IN)    :: XNOR(*),YNOR(*),ZNOR(*)
05428       DOUBLE PRECISION, INTENT(INOUT) :: T(DIM1T,*),VEC(*)
05429       DOUBLE PRECISION, INTENT(IN)    :: XMUL,MASKEL(NELMAX)
05430 !     STRUCTURES OF FUNCTIONS F, G, H, U, V, W AND REAL DATA
05431       DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),H(*),U(*),V(*),W(*)
05432       TYPE(BIEF_OBJ), INTENT(IN)     :: SF,SG,SH,SU,SV,SW
05433       TYPE(BIEF_OBJ), INTENT(INOUT)  :: SVEC
05434       TYPE(BIEF_MESH), INTENT(INOUT) :: MESH
05435       LOGICAL, INTENT(IN) :: MSK,LEGO,ASSPAR
05436       CHARACTER(LEN=16), INTENT(IN) :: FORMUL
05437       CHARACTER(LEN=1), INTENT(IN) ::  OP
05438         END SUBROUTINE
05439 !
05440         SUBROUTINE VGFPSI
05441      &  (RES,IELM,U,V,F,DT,XMUL,CFLMAX,T1,T2,MESH,MSK,MASKEL)
05442           USE BIEF_DEF
05443           IMPLICIT NONE
05444           LOGICAL         , INTENT(IN)    :: MSK
05445           DOUBLE PRECISION, INTENT(OUT)   :: CFLMAX
05446           DOUBLE PRECISION, INTENT(IN)    :: DT,XMUL
05447           TYPE(BIEF_OBJ)  , INTENT(INOUT) :: RES,T1,T2
05448           TYPE(BIEF_OBJ)  , INTENT(IN)    :: U,V,F,MASKEL
05449           TYPE(BIEF_MESH) , INTENT(INOUT) :: MESH
05450           INTEGER         , INTENT(IN)    :: IELM
05451         END SUBROUTINE
05452 !
05453         SUBROUTINE VOISIN
05454      &(IFABOR,NELEM,NELMAX,IELM,IKLE,SIZIKL,
05455      & NPOIN,NACHB,NBOR,NPTFR,IADR,NVOIS)
05456       USE BIEF_DEF
05457       IMPLICIT NONE
05458       INTEGER, INTENT(IN) :: NPTFR,SIZIKL,NELEM,NELMAX,IELM,NPOIN
05459       INTEGER, INTENT(IN) :: NBOR(NPTFR),NACHB(NBMAXNSHARE,*)
05460       INTEGER, INTENT(IN) :: IKLE(SIZIKL,*)
05461       INTEGER, INTENT(INOUT) :: IFABOR(NELMAX,*)
05462       INTEGER, INTENT(INOUT) :: NVOIS(NPOIN),IADR(NPOIN)
05463         END SUBROUTINE
05464 !
05465         SUBROUTINE VOISIN31
05466      &(IFABOR,NELEM,NELMAX,IELM,IKLE,SIZIKL,NPOIN,NBOR,NPTFR,
05467      & LIHBOR,KLOG,INDPU,IKLESTR,NELEB2)
05468       IMPLICIT NONE
05469       INTEGER, INTENT(IN)   :: IELM,NPTFR,NELEM,NELMAX,NPOIN,SIZIKL,KLOG
05470       INTEGER, INTENT(IN)   :: NBOR(NPTFR)
05471       INTEGER, INTENT(INOUT):: IFABOR(NELMAX,4)
05472       INTEGER, INTENT(IN)   :: IKLE(SIZIKL,4),LIHBOR(NPTFR)
05473       INTEGER, INTENT(IN)   :: INDPU(*)
05474       INTEGER, INTENT(IN)   :: NELEB2
05475       INTEGER, INTENT(IN)   :: IKLESTR(NELEB2,3)
05476         END SUBROUTINE
05477 !
05478       END INTERFACE
05479 !
05480 !=======================================================================
05481 !
05482       END MODULE BIEF

Generated on Fri Aug 31 2013 18:12:58 by S.E.Bourban (HRW) using doxygen 1.7.0