kepscl.f

Go to the documentation of this file.
00001 C:\opentelemac\v7p0\sources\telemac2d\kepscl.f
00002 !
00059                      SUBROUTINE KEPSCL
00060 !                    *****************
00061 !
00062      &(KBOR,EBOR,AUBOR,CF,CFBOR,DISBOR,
00063      & UN,VN,HN,LIMKEP,LIUBOR,LIMPRO,NBOR,NPTFR,
00064      & KARMAN,CMU,C2,ESTAR,SCHMIT,LISRUG,PROPNU,KMIN,EMIN,
00065      & KNEU,KDIR,KENT,KENTU,KADH,KLOG,UETUTA)
00066 !
00067 !***********************************************************************
00068 ! TELEMAC2D   V6P1                                   21/08/2010
00069 !***********************************************************************
00070 !
00071 !
00072 !
00073 !
00074 !
00075 !
00076 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00077 !| AUBOR          |<--| LAW OF FRICTION ON BOUNDARIES
00078 !|                |   | NUT*DU/DN=AUBOR*U+BUBOR
00079 !| CF             |-->| ADIMENSIONAL FRICTION COEFFICIENT
00080 !| CFBOR          |-->| ADIMENSIONAL FRICTION COEFFICIENT OF BOUNDARIES
00081 !| CMU            |-->| CONSTANT OF K-EPSILON MODEL
00082 !| C2             |-->| CONSTANT OF K-EPSILON MODEL
00083 !| DISBOR         |-->| DISTANCE TO BOUNDARY
00084 !| EBOR           |<--| TURBULENT ENERGY DISSIPATION AT BOUNDARY
00085 !| EMIN           |-->| MINIMUM TURBULENT ENERGY DISSIPATION
00086 !| ESTAR          |-->| CONSTANT OF K-EPSILON MODEL
00087 !| HN             |-->| WATER DEPTH AT TIME T(N)
00088 !| KADH           |-->| CONVENTION FOR NO SLIP BOUNDARY CONDITION
00089 !| KARMAN         |-->| VON KARMAN CONSTANT
00090 !| KBOR           |<--| TURBULENTE KINETIC ENERGY ON BOUNDARIES
00091 !| KDIR           |-->| CONVENTION FOR DIRICHLET POINT
00092 !| KENT           |-->| CONVENTION FOR LIQUID INPUT WITH PRESCRIBED VALUE
00093 !| KENTU          |-->| CONVENTION FOR LIQUID INPUT WITH PRESCRIBED VELOCITY
00094 !| KLOG           |-->| CONVENTION FOR SOLID BOUNDARY
00095 !| KMIN           |-->| MINIMUM TURBULENT KINETIC ENERGY
00096 !| KNEU           |-->| CONVENTION FOR NEUMANN CONDITION
00097 !| LIMKEP         |-->| BOUNDARY CONDITIONS ON K AND EPSILON
00098 !| LIMPRO         |-->| BOUNDARY CONDITIONS FOR PROPAGATION
00099 !| LISRUG         |-->| TURBULENCE REGIME (1: SMOOTH 2: ROUGH)
00100 !| LIUBOR         |-->| TYPE OF BOUNDARY CONDITIONS ON VELOCITY
00101 !| NBOR           |-->| GLOBAL NUMBER OF BOUNDARY POINTS
00102 !| NPTFR          |-->| NUMBER OF BOUNDARY POINTS
00103 !| PROPNU         |-->| MOLECULAR DIFFUSION
00104 !| SCHMIT         |-->| CONSTANT OF K-EPSILON MODEL
00105 !| UETUTA         |-->| FRICTION VELOCITY/TANGENTIAL VELOCITY
00106 !| UN             |<->| X-COMPONENT OF VELOCITY AT TIME T(N)
00107 !| VN             |<->| Y-COMPONENT OF VELOCITY AT TIME T(N)
00108 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
00109 !
00110       IMPLICIT NONE
00111       INTEGER LNG,LU
00112       COMMON/INFO/LNG,LU
00113 !
00114 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00115 !
00116       INTEGER, INTENT(IN) :: NPTFR,LISRUG
00117       INTEGER, INTENT(IN) :: KNEU,KDIR,KENT,KADH,KLOG,KENTU
00118       INTEGER, INTENT(IN) :: LIMPRO(NPTFR,6),NBOR(NPTFR)
00119       INTEGER, INTENT(IN) :: LIMKEP(NPTFR,2),LIUBOR(NPTFR)
00120       DOUBLE PRECISION, INTENT(IN)    :: KMIN,EMIN
00121       DOUBLE PRECISION, INTENT(IN)    :: CF(*),CFBOR(*),UETUTA(*)
00122       DOUBLE PRECISION, INTENT(IN)    :: UN(*),VN(*),HN(*),DISBOR(*)
00123       DOUBLE PRECISION, INTENT(INOUT) :: KBOR(*),EBOR(*),AUBOR(*)
00124       DOUBLE PRECISION, INTENT(IN) :: KARMAN,CMU,C2,ESTAR,SCHMIT,PROPNU
00125 !
00126 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
00127 !
00128       INTEGER N,K
00129 !
00130       DOUBLE PRECISION KFOND,EFOND,TIERS,CEPS,USTAR
00131       DOUBLE PRECISION SSQCMU,UTANG,DIST,DENOM,EBORD,KBORD
00132 !
00133 !-----------------------------------------------------------------------
00134 !
00135       INTRINSIC SQRT,MAX
00136 !
00137 !-----------------------------------------------------------------------
00138 !
00139       TIERS  = 1.D0/3.D0
00140       SSQCMU = 1.D0/ SQRT(CMU)
00141 !
00142 !=======================================================================
00143 !
00144 !  LOOP ON THE BOUNDARY NODES
00145 !
00146 !  COMPUTES KBOR,EBOR
00147 !
00148 !=======================================================================
00149 !
00150       DO K=1,NPTFR
00151 !
00152         KBOR(K) = 0.D0
00153         EBOR(K) = 0.D0
00154         N     = NBOR(K)
00155         UTANG = SQRT( UN(N)**2 + VN(N)**2 )
00156 !       BEWARE : MODIFIED FROM PRINCIPLE NOTE
00157 !       DIST  = DISBOR(K)*0.1D0
00158         DIST  = DISBOR(K)*0.33D0
00159 !
00160 !  DIRICHLET ON K
00161 !  ---------------
00162 !
00163         IF(LIMKEP(K,1).EQ.KDIR) THEN
00164 !       ----------------------------
00165 !
00166 !         ************************************************
00167           IF(LIUBOR(K).EQ.KENT.OR.LIUBOR(K).EQ.KENTU) THEN
00168 !         ************************************************
00169 !
00170 !           INPUT BOUNDARY: TURBULENCE DUE TO THE BOTTOM
00171 !
00172             CEPS    = C2*SQRT(CMU)/SQRT(ESTAR*SCHMIT) /
00173      &                (0.5D0*CF(N))**0.75D0
00174             DENOM   = CEPS * 0.5D0*CF(N)
00175             USTAR = SQRT( 0.5D0 * CF(N) * ( UN(N)**2 + VN(N)**2 ) )
00176             KBOR(K) = C2 * USTAR**2 / MAX(DENOM,1.D-10)
00177 !
00178 !         ***************************************************
00179           ELSEIF(LIUBOR(K).EQ.KLOG.OR.LIUBOR(K).EQ.KADH) THEN
00180 !         ***************************************************
00181 !
00182 !           WALL
00183 !
00184             CEPS    = C2*SQRT(CMU)/SQRT(ESTAR*SCHMIT) /
00185      &                (0.5D0*CF(N))**0.75D0
00186             DENOM   = CEPS * 0.5D0*CF(N)
00187             USTAR = SQRT( 0.5D0 * CF(N) * ( UN(N)**2 + VN(N)**2 ) )
00188             KFOND   = C2 * USTAR**2 / MAX(DENOM,1.D-10)
00189             KBORD   = SSQCMU*(UETUTA(K)*UTANG)**2
00190             KBOR(K) = KBORD + KFOND
00191 !
00192 !         ****
00193           ELSE
00194 !         ****
00195 !
00196             IF(LNG.EQ.1) WRITE(LU,500) K,LIUBOR(K)
00197             IF(LNG.EQ.2) WRITE(LU,501) K,LIUBOR(K)
00198 500         FORMAT(1X,'KEPSCL: POINT DE BORD ',1I6,
00199      &                'CAS NON PREVU POUR KBOR',1X,'LIUBOR=',1I6)
00200 501         FORMAT(1X,'KEPSCL: BOUNDARY POINT ',1I6,
00201      &                'UNKNOWN CASE FOR KBOR',1X,'LIUBOR=',1I6)
00202             CALL PLANTE(1)
00203             STOP
00204 !
00205 !         *****
00206           ENDIF
00207 !         *****
00208 !
00209         ENDIF
00210 !       -----
00211 !
00212 !  DIRICHLET ON EPSILON
00213 !  ---------------------
00214 !
00215         IF(LIMKEP(K,2).EQ.KDIR) THEN
00216 !       ----------------------------
00217 !
00218 !         ************************************************
00219           IF(LIUBOR(K).EQ.KENT.OR.LIUBOR(K).EQ.KENTU) THEN
00220 !         ************************************************
00221 !
00222 !           INPUT BOUNDARY: TURBULENCE DUE TO THE BOTTOM
00223 !
00224             DENOM   = SQRT(0.5D0*CF(N)) * HN(N)
00225             USTAR   = SQRT(0.5D0*CF(N) * ( UN(N)**2 + VN(N)**2 ) )
00226             EFOND   = USTAR**3 / MAX(DENOM,1.D-10)
00227             EBOR(K) = MAX( EFOND , EMIN )
00228 !
00229 !         ***************************************************
00230           ELSEIF(LIUBOR(K).EQ.KLOG.OR.LIUBOR(K).EQ.KADH) THEN
00231 !         ***************************************************
00232 !
00233 !           WALL
00234 !
00235             DENOM   = SQRT(0.5D0*CF(N)) * HN(N)
00236             USTAR   = SQRT(0.5D0*CF(N) * ( UN(N)**2 + VN(N)**2 ) )
00237             EFOND   = USTAR**3 / MAX(DENOM,1.D-10)
00238             EBORD   = (UETUTA(K)*UTANG)**3 / ( KARMAN*DIST )
00239             EBOR(K) = MAX( EBORD + EFOND, EMIN )
00240 !
00241 !         ****
00242           ELSE
00243 !         ****
00244 !
00245 !           OTHER
00246 !
00247             IF(LNG.EQ.1) WRITE(LU,600) K,LIUBOR(K)
00248             IF(LNG.EQ.2) WRITE(LU,601) K,LIUBOR(K)
00249 600         FORMAT(1X,'KEPSCL: POINT DE BORD ',1I6,
00250      &                'CAS NON PREVU POUR EBOR',1X,'LIUBOR=',1I6)
00251 601         FORMAT(1X,'KEPSCL: BOUNDARY POINT ',1I6,
00252      &                'UNKNOWN CASE FOR EBOR',1X,'LIUBOR=',1I6)
00253             CALL PLANTE(1)
00254             STOP
00255 !
00256 !         *****
00257           ENDIF
00258 !         *****
00259 !
00260         ENDIF
00261 !       -----
00262 !
00263       ENDDO
00264 !
00265 !=======================================================================
00266 !
00267 !                   /* END OF LOOP ON BOUNDARY NODES */
00268 !
00269 !=======================================================================
00270 !
00271       RETURN
00272       END

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