friction_zones.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\telemac2d\friction_zones.f
00002 !
00072                      SUBROUTINE FRICTION_ZONES
00073 !                    *************************
00074 !
00075      &(MESH, H, U, V, S, CHESTR, CHBORD, NKFROT, NDEFMA, LINDDP,
00076      & LINDSP, KFRO_B, NDEF_B, ITURB, LISRUG, LINDNER, VK,
00077      & KARMAN, GRAV, T1, T2, CF, CFBOR)
00078 !
00079 !***********************************************************************
00080 ! TELEMAC2D   V7P0
00081 !***********************************************************************
00082 !
00083 !
00084 !
00085 !
00086 !
00087 !
00088 !
00089 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00090 !| CF             |<--| ADIMENSIONAL FRICTION COEFFICIENT
00091 !| CFBOR          |<--| ADIMENSIONAL FRICTION COEFFICIENT ON BOUNDARIES
00092 !| CHBORD         |-->| FRICTION COEFFICIENTS ON BOUNDARIES
00093 !| CHESTR         |-->| FRICTION COEFFICIENTS
00094 !| GRAV           |-->| GRAVITY
00095 !| H              |-->| WATER DEPTH
00096 !| ITURB          |-->| TURBULENCE MODEL
00097 !| KARMAN         |-->| VON KARMAN CONSTANT
00098 !| KFRO_B         |-->| LAW OF BOTTOM FRICTION FOR BOUNDARIES
00099 !| LINDDP         |-->| DIAMETER OF ROUGHNESS ELEMENT IN LINDNER CASE
00100 !| LINDNER        |-->| IF YES, THERE IS NON-SUBMERGED VEGETATION FRICTION
00101 !| LINDSP         |-->| SPACING OF ROUGHNESS ELEMENT IN LINDNER CASE
00102 !| LISRUG         |-->| TURBULENCE REGIME (1: SMOOTH 2: ROUGH)
00103 !| MESH           |-->| MESH STRUCTURE
00104 !| NDEFMA         |-->| DEFAULT MANNING COEFFICIENT
00105 !| NDEF_B         |-->| DEFAULT MANNING COEFFICIENT OF BOUNDARIES
00106 !| NKFROT         |-->| LAW OF BOTTOM FRICTION FOR EVERY POINT
00107 !| S              |-->| VOID STRUCTURE
00108 !| T1             |<->| WORK BIEF_OBJ STRUCTURE
00109 !| T2             |<->| WORK BIEF_OBJ STRUCTURE
00110 !| U              |-->| X-COMPONENT OF VELOCITY
00111 !| V              |-->| Y-COMPONENT OF VELOCITY
00112 !| VK             |-->| KINEMATIC VISCOSITY
00113 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00114 !
00115       USE BIEF
00116       USE INTERFACE_TELEMAC2D, EX_FRICTION_ZONES => FRICTION_ZONES
00117 !
00118       USE DECLARATIONS_TELEMAC2D, ONLY : FRICOU,NPOIN,ORBVEL
00119 !
00120       IMPLICIT NONE
00121 !
00122 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00123 !
00124       TYPE(BIEF_MESH),    INTENT(IN)    :: MESH
00125       TYPE(BIEF_OBJ),     INTENT(IN)    :: H, U, V, S
00126       TYPE(BIEF_OBJ),     INTENT(IN)    :: CHESTR
00127       TYPE(BIEF_OBJ),     INTENT(IN)    :: CHBORD
00128       TYPE(BIEF_OBJ),     INTENT(IN)    :: NKFROT
00129       TYPE(BIEF_OBJ),     INTENT(IN)    :: NDEFMA, LINDDP, LINDSP
00130       TYPE(BIEF_OBJ),     INTENT(IN)    :: KFRO_B, NDEF_B
00131       INTEGER,            INTENT(IN)    :: ITURB, LISRUG
00132       LOGICAL,            INTENT(IN)    :: LINDNER
00133       DOUBLE PRECISION,   INTENT(IN)    :: VK, KARMAN, GRAV
00134       TYPE(BIEF_OBJ),     INTENT(INOUT) :: CF, CFBOR
00135       TYPE(BIEF_OBJ),     INTENT(INOUT) :: T1, T2
00136 !
00137 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00138 !
00139       INTEGER          :: I, J
00140       INTEGER          :: IELMC, IELMH
00141       DOUBLE PRECISION :: CP
00142 !
00143 !=======================================================================!
00144 !=======================================================================!
00145 !                               PROGRAMME                               !
00146 !=======================================================================!
00147 !=======================================================================!
00148 !
00149       ! ======================================= !
00150       ! INITIALIZATION AND DISCRETIZATION CHECK !
00151       ! ======================================= !
00152 !
00153       ! ELEMENT TYPE
00154       ! ------------
00155       IELMC = CF%ELM
00156       IELMH = H%ELM
00157 !
00158       ! MAXIMUM BETWEEN WATER DEPTH AND 1.D-4
00159       ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00160       CALL CPSTVC(H,T1)
00161       CALL OS('X=Y     ', X=T1, Y=H)
00162       IF(IELMC.NE.IELMH) CALL CHGDIS(T1, IELMH, IELMC, MESH)
00163       CALL OS('X=+(Y,C)', X=T1, Y=T1, C=1.D-4)
00164 !
00165       ! RESULTANT VELOCITY IN T2
00166       ! ------------------------
00167       CALL CPSTVC(CF,T2)
00168       CALL OS('X=N(Y,Z)', X=T2, Y=U, Z=V)
00169       CALL OS('X=+(Y,C)', X=T2, Y=T2, C=1.D-6)
00170 !
00171 !
00172       ! =============== !
00173       ! BOTTOM FRICTION !
00174       ! =============== !
00175 !
00176       ! BOTTOM FRICTION CALCULATION
00177       ! ---------------------------
00178       DO I = 1, CF%DIM1
00179 !
00180         ! FRICTION COEFFICIENT FOR THE BOTTOM
00181         ! -----------------------------------
00182         CALL FRICTION_CALC
00183      &       (I, I, NKFROT%I(I), NDEFMA%R(I), VK, GRAV,
00184      &        KARMAN, CHESTR, T1, T1, T2, CF)
00185 !
00186 ! FRICTION COEFFICIENT FOR NON-SUBMERGED VEGETATION
00187 ! -------------------------------------------------
00188         IF(LINDNER) THEN
00189           CALL FRICTION_LINDNER
00190      &         (T2%R(I), T1%R(I), CF%R(I), VK, GRAV,
00191      &          LINDDP%R(I),LINDSP%R(I),CP)
00192           IF(CP.LT.-0.9D0) THEN
00193             CP = 0.75D0*T1%R(I)*LINDDP%R(I) / (LINDSP%R(I))**2
00194           ENDIF
00195           CF%R(I) =CF%R(I)+2.D0*CP
00196         ENDIF
00197 !
00198       ENDDO
00199 !
00200 !     CV: WAVE INDUCED FRICTION ENHANCEMENT OCONNOR AND YOO (1988)
00201 !
00202       IF(FRICOU)THEN
00203         CALL CPSTVC(CF,T2)
00204         CALL OS('X=N(Y,Z)',X=T2,Y=U,Z=V)
00205         CALL OS('X=+(Y,C)',X=T2,Y=T2,C=1.D-6)
00206         DO I=1,NPOIN
00207           CF%R(I)= CF%R(I)*(1.D0 + 0.72D0*ORBVEL%R(I)/T2%R(I))
00208         ENDDO
00209       ENDIF
00210 !
00211       ! ============= !
00212       ! WALL FRICTION !
00213       ! ============= !
00214 !
00215       IF(LISRUG.EQ.2) THEN
00216 !
00217         DO J = 1, MESH%NPTFR
00218           I = MESH%NBOR%I(J)
00219           ! BOTTOM FRICTION CALCULATION
00220           ! ---------------------------
00221           CALL FRICTION_CALC
00222      &         (J,J,KFRO_B%I(J),NDEF_B%R(J),VK,GRAV,KARMAN,
00223      &          CHBORD,MESH%DISBOR,T1,T2,CFBOR)
00224         ENDDO
00225 !
00226       ENDIF
00227 !
00228 !=======================================================================!
00229 !
00230       RETURN
00231       END

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