bedload_solvs_fe.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\sisyphe\bedload_solvs_fe.f
00002 !
00106                      SUBROUTINE BEDLOAD_SOLVS_FE
00107 !                    ***************************
00108 !
00109      &(MESH,S,EBOR,MASKEL,MASK,QSX,QSY,IELMT,NPOIN,NPTFR,KENT,KDIR,KDDL,
00110      & LIMTEC,DT,MSK,ENTET,T1,T2,T3,T4,T8,ZFCL,HZ,HZN,GLOSEG,DIMGLO,
00111      & FLODEL,FLULIM,NSEG,UNSV2D,CSF_SABLE,ICLA,FLBCLA,AVA,LIQBOR,QBOR,
00112      & MAXADV)
00113 !
00114 !***********************************************************************
00115 ! SISYPHE   V6P2                                   21/07/2011
00116 !***********************************************************************
00117 !
00118 !
00119 !
00120 !
00121 !
00122 !
00123 !
00124 !
00125 !
00126 !
00127 !
00128 !
00129 !
00130 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00131 !| DIMGLO         |-->| FIRST DIMENSION OF GLOSEG
00132 !| DT             |-->| TIME STEP
00133 !| EBOR           |<->| BOUNDARY CONDITION FOR BED EVOLUTION (DIRICHLET)
00134 !| ENTET          |-->| LOGICAL, IF YES INFORMATION IS GIVEN ON MASS CONSERVATION
00135 !| FLBCLA         |<->| FLUXES AT BOUNDARY FOR THE CLASS
00136 !| FLODEL         |<--| FLUXES BETWEEN POINTS (PER SEGMENT)
00137 !| FLULIM         |<--| LIMITATION OF FLUXES
00138 !| GLOSEG         |-->| CONNECTIVITY TABLE FOR SEGMENTS
00139 !| HZ             |<--| NEW AVAILABLE LAYER OF SEDIMENT
00140 !| HZN            |-->| OLD AVAILABLE LAYER OF SEDIMENT
00141 !| ICLA           |-->| CLASS NUMBER
00142 !| IELMT          |-->| NUMBER OF ELEMENTS
00143 !| KDDL           |-->| CONVENTION FOR DEGREE OF FREEDOM
00144 !| KDIR           |-->| CONVENTION FOR DIRICHLET POINT
00145 !| KENT           |-->| CONVENTION FOR LIQUID INPUT WITH PRESCRIBED VALUE
00146 !| LIMTEC         |-->| TYPE OF BOUNDARY CONDITION
00147 !| LIQBOR         |-->| TYPE OF BOUNDARY CONDITION ON BEDLOAD DISCHARGE
00148 !| MASK           |-->| BLOCK OF MASKS, EVERY ONE FOR A TYPE OF BOUNDARY
00149 !|                |   | SEE DIFFIN.F IN LIBRARY BIEF.
00150 !| MASKEL         |-->| MASKING OF ELEMENTS
00151 !| MAXADV         |-->| MAXIMUM NUMBER OF ITERATIONS (IN POSITIVE_DEPTH)
00152 !| MESH           |<->| MESH STRUCTURE
00153 !| MSK            |-->| IF YES, THERE IS MASKED ELEMENTS
00154 !| NPOIN          |-->| NUMBER OF POINTS
00155 !| NPTFR          |-->| NUMBER OF BOUNDARY POINTS
00156 !| NSEG           |-->| NUMBER OF SEGMENTS PER CONTROL SECTION
00157 !| QBOR           |-->| PRESCRIBED BEDLOAD DISCHARGES
00158 !| QSX            |-->| SOLID DISCHARGE X
00159 !| QSY            |-->| SOLID DISCHARGE Y
00160 !| S              |-->| VOID STRUCTURE
00161 !| T1             |<->| WORK BIEF_OBJ STRUCTURE
00162 !| T2             |<->| WORK BIEF_OBJ STRUCTURE
00163 !| T3             |<->| WORK BIEF_OBJ STRUCTURE
00164 !| T4             |<->| WORK BIEF_OBJ STRUCTURE
00165 !| T8             |<->| WORK BIEF_OBJ STRUCTURE
00166 !| UNSV2D         |-->| INVERSE OF INTEGRALS OF TEST FUNCTIONS
00167 !| ZFCL           |<--| ZFCL=HZ-HZN
00168 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00169 !
00170       USE BIEF
00171       USE INTERFACE_SISYPHE, EX_BEDLOAD_SOLVS_FE => BEDLOAD_SOLVS_FE
00172 !
00173       IMPLICIT NONE
00174       INTEGER LNG,LU
00175       COMMON/INFO/LNG,LU
00176 !
00177 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00178 !
00179       TYPE(BIEF_MESH), INTENT(INOUT)  :: MESH
00180       TYPE(BIEF_OBJ),   INTENT(IN)    :: S,MASKEL,MASK,QSX,QSY
00181       INTEGER,          INTENT(IN)    :: IELMT,NPOIN,NPTFR,KENT,KDIR
00182       INTEGER,          INTENT(IN)    :: DIMGLO,NSEG,ICLA,KDDL,MAXADV
00183       INTEGER,          INTENT(IN)    :: GLOSEG(DIMGLO,2)
00184       DOUBLE PRECISION, INTENT(IN)    :: DT,CSF_SABLE,AVA(NPOIN)
00185       DOUBLE PRECISION, INTENT(INOUT) :: FLULIM(NSEG)
00186       LOGICAL,          INTENT(IN)    :: MSK,ENTET
00187       TYPE(BIEF_OBJ),   INTENT(INOUT) :: FLODEL,T1,T2,T3,T4,T8
00188       TYPE(BIEF_OBJ),   INTENT(INOUT) :: HZ,EBOR,LIMTEC
00189       TYPE(BIEF_OBJ),   INTENT(INOUT) :: ZFCL,FLBCLA
00190       TYPE(BIEF_OBJ),   INTENT(IN)    :: HZN,UNSV2D,LIQBOR,QBOR
00191 !
00192 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00193 !
00194       INTEGER K,N
00195 !
00196       DOUBLE PRECISION P_DSUM
00197       EXTERNAL         P_DSUM
00198 !
00199 !-----------------------------------------------------------------------
00200 !
00201 !     BOUNDARY FLUXES
00202 !
00203       CALL VECTOR(FLBCLA,'=','FLUBOR          ',IELBOR(IELMT,1),1.D0,
00204      &            S,S,S,QSX,QSY,S,MESH,.TRUE.,MASK)
00205 !
00206 !     BOUNDARY CONDITIONS: EITHER EBOR OR QBOR PRESCRIBED (NOT THE 2)
00207 !
00208       DO K=1,NPTFR
00209         IF(LIQBOR%I(K).EQ.KENT) THEN
00210 !         QBOR IS GIVEN BY USER, AND POSITIVE IF ENTERING
00211 !         HERE WE PUT THE INTERNAL USAGE <0 = ENTERING
00212           FLBCLA%R(K)=-QBOR%R(K)
00213 !         EVEN IF USER HAS SPECIFIED LIEBOR=KSORT, LIMTEC MAY HAVE BEEN
00214 !         SET TO KDIR BY CHECKING IF VELOCITY IS ENTERING, THIS IS
00215 !         UNWANTED HERE AS QBOR ONLY IS TAKEN INTO ACCOUNT,
00216 !         SO DDL IS PUT TO AVOID A DIRICHLET TREATMENT IN POSITIVE_DEPTHS.
00217           LIMTEC%I(K)=KDDL
00218         ELSEIF(LIMTEC%I(K).EQ.KDIR) THEN
00219 !         HERE THE VARIABLE WILL BE THE LAYER DEPTH OF THE SEDIMENT CLASS,
00220 !         PUT IN T8, NOT THE EVOLUTION
00221           N=MESH%NBOR%I(K)
00222           T8%R(K)=AVA(N)*EBOR%R(K)*CSF_SABLE+HZN%R(N)
00223         ENDIF
00224       ENDDO
00225 !
00226 !     HERE T1 MAY NOT BE ASSEMBLED, WE WORK DIRECTLY ON MESH%W%R AFTER
00227 !     ADD LEGO=.FALSE. WHEN IT IS AN OPTIONAL ARGUMENT
00228 !
00229       CALL VECTOR(T1,'=','VGRADP          ',QSX%ELM,-1.D0,
00230      &            S,S,S,QSX,QSY,S,MESH,MSK,MASKEL,LEGO=.FALSE.)
00231 !
00232       CALL POSITIVE_DEPTHS(T1,T2,T3,T4,HZ,HZN,MESH,
00233      &                     FLODEL,.TRUE.,FLBCLA,DT,UNSV2D,NPOIN,
00234      &                     GLOSEG(1:DIMGLO,1),GLOSEG(1:DIMGLO,2),
00235      &                     MESH%NBOR%I,NPTFR,T8,.FALSE.,
00236 !                                            VOID
00237      &                     1,FLULIM,
00238      &                     LIMTEC%I,T8%R  ,KDIR,ENTET,MESH%W%R,
00239 !                                   EBOR%R
00240      &                     'SISYPHE                 ',2,MAXADV)
00241 !                                                     2 : HARDCODED
00242 !                             OPTION FOR POSITIVE DEPTHS ALGORITHMS
00243 !                             HERE CHOICE OF OPTION INDEPENDENT OF
00244 !                             SEGMENT NUMBERING
00245 !
00246       CALL OS('X=Y-Z   ' ,X=ZFCL,Y=HZ,Z=HZN)
00247 !
00248 !-----------------------------------------------------------------------
00249 !
00250       RETURN
00251       END

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