bedload_effpnt.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\sisyphe\bedload_effpnt.f
00002 !
00074                      SUBROUTINE BEDLOAD_EFFPNT ! (_IMP_)
00075 !                    ***********************************
00076 !
00077      & (MASKEL,LIQBOR,S,ZF,U2D,V2D,UCMOY,NPOIN,NPTFR,IELMT,KENT,
00078      &  BETA,PI,MSK,MESH,DZFDX,DZFDY,CTETA,STETA,
00079      &  COEF,CALFA,SALFA,SLOPEFF,PHISED,DEVIA,BETA2,
00080      &  TOB,XMVS,XMVE,DM,GRAV,UNSV2D)
00081 !
00082 !***********************************************************************
00083 ! SISYPHE   V6P3                                   12/02/2013
00084 !***********************************************************************
00085 !
00086 !
00087 !
00088 !
00089 !
00090 !
00091 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00092 !| BETA           |-->| COEFFICIENT FOR SLOPING BED EFFECT ( KOCH AND FLOKSTRA)
00093 !| BETA2          |-->| COEFFICIENT FOR THE DEVIATION  (TALMON ET AL.)
00094 !| CALFA          |<->| COSINUS OF THE ANGLE BETWEEN TRANSPORT RATE AND X-AXIS
00095 !| COEF           |<->| CORRECTION COEFFICIENT FOR THE INTENSITY OF BEDLOAD TRANSPORT
00096 !| CTETA          |<->| COSINUS OF THE ANGLE BETWEEN MEAN FLOW AND X-AXIS
00097 !| DEVIA          |-->| SLOPE EFFECT FORMULA FOR DEVIATION
00098 !| DM             |-->| SEDIMENT GRAIN DIAMETER
00099 !| DZFDX          |<->| BOTTOM SLOPE IN THE X-DIRECTION
00100 !| DZFDY          |<->| BOTTOM SLOPE IN THE Y-DIRECTION
00101 !| GRAV           |-->| ACCELERATION OF GRAVITY
00102 !| IELMT          |-->| NUMBER OF ELEMENTS
00103 !| KENT           |-->| CONVENTION FOR LIQUID INPUT WITH PRESCRIBED VALUE
00104 !| LIQBOR         |-->| TYPE OF BOUNDARY CONDITION FOR QS
00105 !| MASKEL         |-->| MASKING OF ELEMENTS
00106 !| MESH           |<->| MESH STRUCTURE
00107 !| MSK            |-->| IF YES, THERE IS MASKED ELEMENTS
00108 !| NPOIN          |-->| NUMBER OF POINTS
00109 !| NPTFR          |-->| NUMBER OF BOUNDARY POINTS
00110 !| PHISED         |-->| ANGLE OF REPOSE OF THE SEDIMENT
00111 !| PI             |-->| PI
00112 !| S              |-->| VOID STRUCTURE
00113 !| SALFA          |<->| SINUS OF THE ANGLE BETWEEN TRANSPORT RATE AND X-AXIS
00114 !| SLOPEFF        |-->| LOGICAL, SLOPING BED EFFECT OR NOT
00115 !| STETA          |<->| COSINUS OF THE ANGLE BETWEEN MEAN FLOW AND Y-AXIS
00116 !| TOB            |<->| BED SHEAR STRESS (TOTAL FRICTION)
00117 !| U2D            |<->| MEAN FLOW VELOCITY X-DIRECTION
00118 !| UCMOY          |-->| MEAN CURRENT
00119 !| UNSV2D         |-->| INVERSE OF INTEGRALS OF TEST FUNCTIONS
00120 !| V2D            |<->| MEAN FLOW VELOCITY Y-DIRECTION
00121 !| XMVE           |-->| FLUID DENSITY
00122 !| XMVS           |-->| WATER DENSITY
00123 !| ZF             |-->| ELEVATION OF BOTTOM
00124 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00125 !
00126       USE INTERFACE_SISYPHE,EX_BEDLOAD_EFFPNT => BEDLOAD_EFFPNT
00127       USE BIEF
00128       IMPLICIT NONE
00129       INTEGER LNG,LU
00130       COMMON/INFO/LNG,LU
00131 !
00132       ! 2/ GLOBAL VARIABLES
00133       ! -------------------
00134       TYPE(BIEF_OBJ),   INTENT(IN)    :: MASKEL,LIQBOR,S,UNSV2D
00135       TYPE(BIEF_OBJ),   INTENT(IN)    :: ZF, U2D,V2D, UCMOY, TOB
00136       INTEGER,          INTENT(IN)    :: NPOIN, NPTFR, IELMT, KENT
00137       INTEGER,          INTENT(IN)    :: SLOPEFF,DEVIA
00138       DOUBLE PRECISION, INTENT(IN)    :: BETA, PI, PHISED, BETA2
00139       DOUBLE PRECISION, INTENT(IN)    :: XMVS, XMVE, GRAV, DM
00140       LOGICAL,          INTENT(IN)    :: MSK
00141       TYPE(BIEF_MESH),  INTENT(INOUT) :: MESH
00142       TYPE(BIEF_OBJ),   INTENT(INOUT) :: DZFDX, DZFDY
00143       TYPE(BIEF_OBJ),   INTENT(INOUT) :: CTETA,STETA
00144       TYPE(BIEF_OBJ),   INTENT(INOUT) :: COEF, CALFA, SALFA
00145 !
00146       ! 3/ LOCAL VARIABLES
00147       ! ------------------
00148       INTEGER          :: I, K
00149       DOUBLE PRECISION :: C,ZETA,C1,CALPHA,SALPHA,AA,BB
00150       DOUBLE PRECISION :: CPSI,SPSI,DZF,TANPHI,CZETA,SZETA,SURBETA2
00151       DOUBLE PRECISION :: NORM,TT1
00152 !
00153 !======================================================================!
00154 !======================================================================!
00155 !                               PROGRAM                                !
00156 !======================================================================!
00157 !======================================================================!
00158 !
00159 !
00160 ! NOTE JMH : IF WE SWAP THE DEVIA AND THE SLOPEFF ACTIONS BELOW
00161 !            IT IS PROBABLY NOT USEFUL TO DO A COPY OF CALFA AND SALFA ?
00162 !
00163 !     COS AND SIN TETA (CALFA AND SALFA HAVE ALREADY BEEN COMPUTED
00164 !                       IN BEDLOAD_SOLIDISCHARGE, SO JUST A COPY HERE)
00165 !     TETA = ANGLE OF THE FLOW WITH OX
00166 !
00167       CALL OS('X=Y     ',X=CTETA,Y=CALFA)
00168       CALL OS('X=Y     ',X=STETA,Y=SALFA)
00169 !
00170 !----------------------------------------------------------------------
00171 !
00172 !     COMPUTES THE SLOPE  : D(ZF)/DX ET D(ZF)/DY (AT THE NODES)
00173 !
00174       CALL VECTOR(DZFDX, '=', 'GRADF          X',IELMT,1.D0,ZF,S,S,
00175      &            S,S,S,MESH,MSK,MASKEL)
00176       CALL VECTOR(DZFDY, '=', 'GRADF          Y',IELMT,1.D0,ZF,S,S,
00177      &            S,S,S,MESH,MSK,MASKEL)
00178 !
00179       IF(NCSIZE.GT.1) THEN
00180         CALL PARCOM(DZFDX,2,MESH)
00181         CALL PARCOM(DZFDY,2,MESH)
00182       ENDIF
00183 !
00184       CALL OS('X=XY    ',X=DZFDX,Y=UNSV2D)
00185       CALL OS('X=XY    ',X=DZFDY,Y=UNSV2D)
00186 !
00187 !======================================================================
00188 !
00189 !     COMPUTES THE SOLID TRANSPORT ANGLE ALFA = TETA + DEVIATION
00190 !
00191 !     1 : KOCH AND FLOKSTRA
00192 !
00193       IF(DEVIA==1) THEN
00194 !
00195       C = 2.D0*(XMVS-XMVE)*GRAV*DM/3.D0
00196       DO I=1,NPOIN
00197         TT1=C/MAX(TOB%R(I),1.D-10)
00198         AA=STETA%R(I)-TT1*DZFDY%R(I)
00199         BB=CTETA%R(I)-TT1*DZFDX%R(I)
00200         NORM=MAX(SQRT(AA**2+BB**2),1.D-10)
00201         SALFA%R(I)=AA/NORM
00202         CALFA%R(I)=BB/NORM
00203       ENDDO
00204 !
00205 !     2 : TALMON ET AL. JHR 1995 33(4)
00206 !
00207       ELSEIF(DEVIA==2) THEN
00208 !
00209       SURBETA2=1.D0/BETA2
00210       C = (XMVS-XMVE)*GRAV*DM*SURBETA2**2
00211       DO I=1,NPOIN
00212         TT1=SQRT(C/MAX(TOB%R(I),1.D-10))
00213         AA=STETA%R(I)-TT1*DZFDY%R(I)
00214         BB=CTETA%R(I)-TT1*DZFDX%R(I)
00215         NORM=MAX(SQRT(AA**2+BB**2),1.D-10)
00216         SALFA%R(I)=AA/NORM
00217         CALFA%R(I)=BB/NORM
00218       ENDDO
00219 !
00220       ENDIF
00221 !
00222 !======================================================================
00223 !
00224 !     COMPUTES THE COEFFICIENT TO TAKE THE SLOPE EFFECT ON THE MAGNITUDE
00225 !     OF THE SOLID TRANSPORT INTO ACCOUNT
00226 !
00227 !     METHOD 1 (EMPIRICAL)
00228 !
00229       IF(SLOPEFF==1) THEN
00230 !
00231         DO I=1,NPOIN
00232           COEF%R(I)=MAX(0.D0,
00233      &    1.D0-BETA*(DZFDX%R(I)*CTETA%R(I)+DZFDY%R(I)*STETA%R(I)) )
00234         ENDDO
00235 !
00236 !     METHOD 2 : SOULSBY 1997 DYNAMICS OF MARINE SANDS P107-108
00237 !
00238       ELSEIF(SLOPEFF.EQ.2) THEN
00239 !
00240         TANPHI = TAN(PHISED*PI/180.D0)
00241 !
00242         DO I=1,NPOIN
00243 !
00244 !         COSINE AND SINE OF THE DIRECTION OF THE SLOPE
00245           DZF=SQRT(DZFDX%R(I)**2+DZFDY%R(I)**2)
00246           IF(DZF.GT.1.D-12) THEN
00247             CALPHA=DZFDX%R(I)/DZF
00248             SALPHA=DZFDY%R(I)/DZF
00249           ELSE
00250             CALPHA=1.D0
00251             SALPHA=0.D0
00252           ENDIF
00253 !
00254 !         ZETA: ANGLE OF THE SLOPE WITH HORIZONTAL (BETA IN SOULSBY)
00255           ZETA=ATAN(DZF)
00256           CZETA=COS(ZETA)
00257           SZETA=SIN(ZETA)
00258 !
00259 !         PSI: ANGLE OF THE CURRENT WITH THE SLOPE DIRECTION
00260 !         PSI=TETA%R(I)-ALPHA
00261           CPSI=CTETA%R(I)*CALPHA+STETA%R(I)*SALPHA
00262           SPSI=STETA%R(I)*CALPHA-CTETA%R(I)*SALPHA
00263           C1=(CZETA*TANPHI)**2-(SPSI*SZETA)**2
00264           COEF%R(I)=MAX((CPSI*SZETA+SQRT(MAX(C1,0.D0)))/TANPHI,0.D0)
00265           COEF%R(I)=MAX(COEF%R(I),0.D0)
00266 !
00267         ENDDO
00268 !
00269       ENDIF
00270 !
00271 ! ********************************************************************* !
00272 !     V - TREATS THE BOUNDARY POINTS WITH IMPOSED RATE                  !
00273 !         QS IS NOT MODIFIED WHEN SPECIFIED BY THE USER                 !
00274 ! ********************************************************************* !
00275 !
00276 ! RK no slope effect at the open boundaries
00277       DO K = 1, NPTFR
00278         IF (LIQBOR%I(K) == KENT) THEN
00279           COEF%R(MESH%NBOR%I(K)) = 1.D0
00280           CALFA%R(MESH%NBOR%I(K)) = CTETA%R(MESH%NBOR%I(K))
00281           SALFA%R(MESH%NBOR%I(K)) = STETA%R(MESH%NBOR%I(K))
00282         ENDIF
00283 !     R.K. MAY 2007
00284 !     KSORT = 4
00285         IF (LIQBOR%I(K) == 4) THEN
00286           COEF%R(MESH%NBOR%I(K)) = 1.D0
00287           CALFA%R(MESH%NBOR%I(K)) = CTETA%R(MESH%NBOR%I(K))
00288           SALFA%R(MESH%NBOR%I(K)) = STETA%R(MESH%NBOR%I(K))
00289         ENDIF
00290       ENDDO
00291 !
00292 !======================================================================
00293 !======================================================================
00294 !
00295       RETURN
00296       END SUBROUTINE BEDLOAD_EFFPNT

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