diff --git a/NEWS.txt b/NEWS.txt index 8e553e71aeff5f3957d4c12e5489e611572781ae..211ac7208c2fc433272d84e35db780fd6e85311d 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -1,6 +1,10 @@ Latest changes ============== +TELEMAC-3D: New keywords SIGMA DISTRIBUTION OF PLANES and +PRESCRIBED ELEVATION OF PLANES to set vertical planes directly in the steering +file + TOMAWAC: fix time series for wave directions MASCARET: Reference Documentation has been added diff --git a/documentation/telemac3d/user/latex/general_setup.tex b/documentation/telemac3d/user/latex/general_setup.tex index 5b462133d45d724a76ffa6af1dc54498bc0892d9..2e16f1d3fd8bd5687f7789e7c29e96fa9f92c6ec 100644 --- a/documentation/telemac3d/user/latex/general_setup.tex +++ b/documentation/telemac3d/user/latex/general_setup.tex @@ -88,10 +88,10 @@ the \telfile{USER\_MESH\_TRANSF} subroutine is required. A value of 2 (Figure \ref{fig:mesh_transf2}) will allow the user to define the distribution of levels (e.g. refinement near surface) while maintaining the -levels mobility (sigma transformation with given proportions). The latter -choice implies that the user will program his/her distribution in the -\telfile{USER\_MESH\_TRANSF} subroutine to define the \telfile{ZSTAR} array -that describes +levels mobility (sigma transformation with given proportions). +Historically, the latter choice implies that the user will program the +distribution in the \telfile{USER\_MESH\_TRANSF} subroutine to define the +\telfile{ZSTAR} array that describes the distribution of levels along the vertical as a percentage of the water depth. Changes to make are: @@ -131,6 +131,35 @@ ZSTAR%R(5)=0.8D0 \label{fig:mesh_transf2} \end{figure} +Since release 9.1, it is also possible to define the sigma coordinates in the +steering file, using the keyword \telkey{SIGMA DISTRIBUTION OF PLANES}. +In order to have maximum flexibility, the keyword \telkey{MESH TRANSFORMATION} +can be defined for each horizontal level. +However, this is not necessary. If one wants to use the same kind of +mesh transformation (sigma levels or z levels) for each horizontal level, +one value of \telkey{MESH TRANSFORMATION} is sufficient. +In case the vertical distribution is prescribed in the steering file, +it is not necessary to use any user defined Fortran routine: +When specifying the sigma levels in the steering file, they need to be given +for each horizontal level, for which the keyword \telkey{MESH TRANSFORMATION} +is set to 2. Two examples are shown below: + +\begin{lstlisting}[language=TelemacCas] +/Example with a single value of the keyword MESH TRANSFORMATION +NUMBER OF HORIZONTAL LEVELS : 6 +MESH TRANSFORMATION : 2 +SIGMA DISTRIBUTION OF PLANES : 0.;0.02;0.1;0.4;0.8;1. + +\end{lstlisting} + +\begin{lstlisting}[language=TelemacCas] +/Example with MESH TRANSFORMATION defined for each horizontal level +NUMBER OF HORIZONTAL LEVELS : 6 +MESH TRANSFORMATION : 2;2;2;2;2;2 +SIGMA DISTRIBUTION OF PLANES : 0.;0.02;0.1;0.4;0.8;1. + +\end{lstlisting} + In order to refine the mesh near the bottom or the free surface without any user Fortran implementation, the keyword \telkey{MESH TRANSFORMATION} can be set to 4. @@ -186,7 +215,7 @@ the distribution is specified by the \telfile{ZSTAR} variable), to value 1 of the \telfile{TRANSF\_PLANE} variable). \end{itemize} -This latter choice requires the user to make changes in the +Historically, this latter choice requires the user to make changes in the \telfile{USER\_MESH\_TRANSF} subroutine: \begin{itemize} @@ -234,6 +263,36 @@ ZPLANE%R(6)=0.D0 Various programming examples are provided as comments in the \telfile{USER\_MESH\_TRANSF} subroutine.\\ +Since release 9.1, it is also possible to prescribe the vertical layer +distribution in the steering file, without using any user defined Fortran. +In that case, the type of vertical level is prescribed with the keyword +\telkey{MESH TRANSFORMATION}, with a value of 1 for an equally distributed +sigma level, 2 for a sigma level with a prescribed distribution, and 3 for a +z level. For each level with a value of 3 for the \telkey{MESH TRANSFORMATION}, +the vertical elevation can be described using the keyword +\telkey{PRESCRIBED ELEVATION OF PLANES}. For each level with a value of 2 +for the \telkey{MESH TRANSFORMATION}, the sigma distribution is described with +the keyword \telkey{SIGMA DISTRIBUTION OF PLANES}. +No additional information is needed for levels with a value of 1 for the +\telkey{MESH TRANSFORMATION}. +The example above can be obtained using: + +\begin{lstlisting}[language=TelemacCas] +NUMBER OF HORIZONTAL LEVELS : 12 + +/specify mesh transformation for each level +MESH TRANSFER : 2;2;2;2;2;3;1;1;1;1;1;1 + +/sigma distribution for the lowest five levels +SIGMA DISTRIBUTION OF PLANES : 0.;0.2;0.5;0.7;0.8 + +/elevation of plane 6 +PRESCRIBED ELEVATION OF PLANES : 0. + +/no information need to be given for the highest 6 sigma levels + +\end{lstlisting} + The triangular based prismatic elements can optionally be split into tetrahedrons. This option is enabled using the \telkey{ELEMENT} keyword can take the value 'PRISM' (default value) or 'TETRAHEDRON'.\\ diff --git a/examples/telemac3d/Cooper/t3d_cooperCas.cas b/examples/telemac3d/Cooper/t3d_cooperCas.cas new file mode 100644 index 0000000000000000000000000000000000000000..4dcef6c48c8a18643e91986adefad023beecd0da --- /dev/null +++ b/examples/telemac3d/Cooper/t3d_cooperCas.cas @@ -0,0 +1,64 @@ +FORTRAN FILE : 'user_fortranCas' +BOUNDARY CONDITIONS FILE : geo_cooper.cli +GEOMETRY FILE : geo_cooper.slf +3D RESULT FILE : r3d_cooper.slf +2D RESULT FILE : r2d_cooper.slf +/ +MESH TRANSFORMATION : 1;1;1;1;1;1;3;1;1;1;1 +PRESCRIBED ELEVATION OF PLANES : -4. +/---------------------------------------------------------------------- +TITLE : 'BOX SOURCE. Discharge = 20 m3/s. Buoyant tracer.' +VARIABLES FOR 2D GRAPHIC PRINTOUTS : 'U,V,H,B' +VARIABLES FOR 3D GRAPHIC PRINTOUTS : 'Z,U,V,W,TA1' +NUMBER OF HORIZONTAL LEVELS = 11 +TIME STEP = 5. +NUMBER OF TIME STEPS = 360 +GRAPHIC PRINTOUT PERIOD = 180 / every 15 minutes +LISTING PRINTOUT PERIOD = 60 +/---------------------------------------------------------------------- +SCHEME FOR ADVECTION OF VELOCITIES : 4 +SCHEME FOR ADVECTION OF TRACERS : 4 +COEFFICIENT FOR HORIZONTAL DIFFUSION OF TRACERS : 0. +COEFFICIENT FOR VERTICAL DIFFUSION OF TRACERS : 0.1 +ACCURACY FOR DIFFUSION OF TRACERS : 1.E-15 +PRECONDITIONING FOR DIFFUSION OF TRACERS : 34 / TO ACCELERATE THE CONVERGENCE +/---------------------------------------------------------------------- +COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES = 1.E-4 +COEFFICIENT FOR VERTICAL DIFFUSION OF VELOCITIES = 0. +PRECONDITIONING FOR DIFFUSION OF VELOCITIES : 34 / TO ACCELERATE THE CONVERGENCE +/---------------------------------------------------------------------- +HORIZONTAL TURBULENCE MODEL : 1 +VERTICAL TURBULENCE MODEL : 2 +MIXING LENGTH MODEL : 1 / OLD DEFAULT VALUE UNTIL V8P5 +LAW OF BOTTOM FRICTION : 5 +FRICTION COEFFICIENT FOR THE BOTTOM = 0.01 +/---------------------------------------------------------------------- +ACCURACY FOR PROPAGATION = 1.E-8 +/---------------------------------------------------------------------- +MASS-BALANCE : YES +/----------------------------------------------------------------------/ +INITIAL CONDITIONS : 'CONSTANT ELEVATION' +INITIAL ELEVATION : 0.0 +INITIAL VALUES OF TRACERS : 0. +/---------------------------------------------------------------------- +ABSCISSAE OF SOURCES = 2000.0 +ORDINATES OF SOURCES = 2000.0 +ELEVATIONS OF SOURCES = -5.0 +WATER DISCHARGE OF SOURCES = 20.0 +VALUE OF THE TRACERS AT THE SOURCES = 333.33 +/---------------------------------------------------------------------- +NUMBER OF TRACERS = 1 +DENSITY LAW : 4 +BETA EXPANSION COEFFICIENT FOR TRACERS = 0.0003 +/BETA EXPANSION COEFFICIENT FOR TRACERS = 0. +STANDARD VALUES FOR TRACERS : 0. +/---------------------------------------------------------------------- +/ NON-HYDROSTATIC PART +/---------------------------------------------------------------------- +PRECONDITIONING FOR PPE : 34 / TO ACCELERATE THE CONVERGENCE +NON-HYDROSTATIC VERSION : YES +/ +/ DEFAULT VALUES UNTIL V8P0 KEPT FOR NON REGRESSION +SCHEME OPTION FOR ADVECTION OF VELOCITIES = 1 +SOLVER FOR PPE = 1 +SCHEME OPTION FOR ADVECTION OF TRACERS = 1 diff --git a/examples/telemac3d/vent/user_fortran/user_t3d_corfon.f b/examples/telemac3d/Cooper/user_fortranCas/user_t3d_corfon.f similarity index 92% rename from examples/telemac3d/vent/user_fortran/user_t3d_corfon.f rename to examples/telemac3d/Cooper/user_fortranCas/user_t3d_corfon.f index 6920e770c36a9963a77c368857e01a891d294580..54ceb5d28a5ce9fd66766ebbe575e5f8beab2b2d 100644 --- a/examples/telemac3d/vent/user_fortran/user_t3d_corfon.f +++ b/examples/telemac3d/Cooper/user_fortranCas/user_t3d_corfon.f @@ -61,10 +61,15 @@ ! !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! + INTEGER I + DOUBLE PRECISION EIKON ! !----------------------------------------------------------------------- ! - CALL OV('X=X+C ', X=ZF, C=-10.D0, DIM1=NPOIN2) + DO I=1,NPOIN2 + EIKON=((X(I)-2000.D0)**2 + (Y(I)-2000.D0)**2)/10000.D0 + ZF(I) = -10.D0 +4.D0 * EXP(-EIKON) + ENDDO ! !----------------------------------------------------------------------- ! diff --git a/examples/telemac3d/Cooper/vnv_Cooper.py b/examples/telemac3d/Cooper/vnv_Cooper.py index 2920c672f3aca811c02fe4bb4b96373cf2637937..cf747228a5fa7c3c4733f6f51c2ff35b9acc2ab4 100644 --- a/examples/telemac3d/Cooper/vnv_Cooper.py +++ b/examples/telemac3d/Cooper/vnv_Cooper.py @@ -28,7 +28,6 @@ class VnvStudy(AbstractVnvStudy): 'telemac3d', 't3d_cooper.cas') - # Cooper parallel mode cas = TelemacCas('t3d_cooper.cas', get_dico('telemac3d')) cas.set('PARALLEL PROCESSORS', 4) @@ -37,7 +36,21 @@ class VnvStudy(AbstractVnvStudy): 'telemac3d', 't3d_cooper_par.cas', cas=cas) + del cas + + # Cooper scalar mode + self.add_study('vnv_3', + 'telemac3d', + 't3d_cooperCas.cas') + # Cooper parallel mode + cas = TelemacCas('t3d_cooperCas.cas', get_dico('telemac3d')) + cas.set('PARALLEL PROCESSORS', 4) + + self.add_study('vnv_4', + 'telemac3d', + 't3d_cooperCas_par.cas', + cas=cas) del cas # Post-treatment @@ -46,7 +59,6 @@ class VnvStudy(AbstractVnvStudy): 'p3d_cooper.cas') - def _check_results(self): """ Post-treatment processes @@ -67,6 +79,31 @@ class VnvStudy(AbstractVnvStudy): 'vnv_2:T3DRES', eps=[1.E-10]) + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_3:T3DRES', + 'f3d_cooper.slf', + eps=[1.E-10]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_4:T3DRES', + 'f3d_cooper.slf', + eps=[1.E-10]) + + # Comparison between sequential and parallel run. + self.check_epsilons('vnv_3:T3DRES', + 'vnv_4:T3DRES', + eps=[1.E-10]) + + # Comparison between Fortran and steering file defined layering + self.check_epsilons('vnv_1:T3DRES', + 'vnv_3:T3DRES', + eps=[1.E-15]) + + # Comparison between Fortran and steering file defined layering + self.check_epsilons('vnv_2:T3DRES', + 'vnv_4:T3DRES', + eps=[1.E-15]) + def _post(self): """ diff --git a/examples/telemac3d/m2wave/t3d_m2waveCas.cas b/examples/telemac3d/m2wave/t3d_m2waveCas.cas new file mode 100644 index 0000000000000000000000000000000000000000..0fc3ac6dae014d24b5df16cf20a239b44fa050ed --- /dev/null +++ b/examples/telemac3d/m2wave/t3d_m2waveCas.cas @@ -0,0 +1,71 @@ +/-------------------------------------------------------------------/ +/ TELEMAC-3D - VALIDATION TEST CASE NUMBER 17 - 02/2000 / +/ M2 TIDE COMPONENT / +/-------------------------------------------------------------------/ +/ +/---------------------------------------------- +/ COMPUTER INFORMATIONS +/---------------------------------------------- +/ +GEOMETRY FILE = geo_m2wave.slf +FORTRAN FILE = 'user_fortranCas' +BOUNDARY CONDITIONS FILE = geo_m2wave.cli +2D RESULT FILE = r2d_m2wave.slf +3D RESULT FILE = r3d_m2wave.slf +FORMATTED DATA FILE 1 = fo1_m2wave.txt +/ +/---------------------------------------------- +/ GENERAL INFORMATIONS - OUTPUTS +/---------------------------------------------- +/ +TITLE = 'M2 TIDE COMPONENT' +VARIABLES FOR 2D GRAPHIC PRINTOUTS = +'U,V,H,S,B,W,MAXZ,TMXZ' +VARIABLES FOR 3D GRAPHIC PRINTOUTS = +'Z,U,V' +GRAPHIC PRINTOUT PERIOD = 149 +LISTING PRINTOUT PERIOD = 100 +NUMBER OF FIRST TIME STEP FOR GRAPHIC PRINTOUTS = 894 +TIME STEP = 150. +NUMBER OF TIME STEPS = 1192 +/ +/---------------------------------------------- +/ PHYSICAL PARAMETERS +/---------------------------------------------- +/ +LAW OF BOTTOM FRICTION = 2 +FRICTION COEFFICIENT FOR THE BOTTOM = 40. +CORIOLIS = YES +VERTICAL TURBULENCE MODEL = 2 +MIXING LENGTH MODEL = 3 +/ +/---------------------------------------------- +/ NUMERICAL PARAMETERS +/---------------------------------------------- +/ +NUMBER OF HORIZONTAL LEVELS = 7 +MESH TRANSFORMATION = 2 +SIGMA DISTRIBUTION OF PLANES = +0.D0; +0.02D0; +0.1D0; +0.2D0; +0.5D0; +0.75D0; +1.D0 +NUMBER OF PRIVATE ARRAYS = 1 +TIDAL FLATS = YES +TREATMENT OF NEGATIVE DEPTHS = 2 +SPHERICAL COORDINATES = YES +SPATIAL PROJECTION TYPE = 2 +LATITUDE OF ORIGIN POINT = 48. +LONGITUDE OF ORIGIN POINT = 0. +ADVECTION STEP = NO +COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES = 0. +SUPG OPTION = 0 +SOLVER FOR PROPAGATION = 7 +MASS-LUMPING FOR DEPTH = 1. +HYDROSTATIC INCONSISTENCY FILTER = NO +NON-HYDROSTATIC VERSION = NO +/ +FREE SURFACE GRADIENT COMPATIBILITY : 0.9 diff --git a/examples/telemac3d/m2wave/user_fortranCas/user_bord3d.f b/examples/telemac3d/m2wave/user_fortranCas/user_bord3d.f new file mode 100644 index 0000000000000000000000000000000000000000..feb7b2056e2088fcb32ef9cdae79ee7430d97078 --- /dev/null +++ b/examples/telemac3d/m2wave/user_fortranCas/user_bord3d.f @@ -0,0 +1,101 @@ +! ********************** + SUBROUTINE USER_BORD3D +! ********************** +! +! +!*********************************************************************** +! TELEMAC3D V7P3 +!*********************************************************************** +! +!brief SPECIFIC BOUNDARY CONDITIONS NOT IMPLEMENTED IN USUAL BORD3D. +! +!warning MAY BE MODIFIED BY THE USER +! +!history C.-T. PHAM (LNHE) +!+ 04/04/2017 +!+ V7P3 +!+ Creation from BORD3D and 4 examples of TELEMAC-3D: +!+ stratification, tetra, NonLinearWave and Viollet +!+ Prescribed stratification over the vertical along a liquid boundary +!+ for stratification and tetra cases +!+ Specific boundary conditions for H, U, V and P for lateral +!+ boundaries for NonLinearWave case +!+ Specific boundary conditions for U, V, temp, epsilon for Viollet +!+ +!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +! + USE BIEF + USE DECLARATIONS_TELEMAC + USE DECLARATIONS_TELEMAC3D, ONLY: HBOR, NPTFR2, T3D_FILES, T3DFO1, + & BOUNDARY_COLOUR,ZF, AT, LT,MESH2D +! USE INTERFACE_TELEMAC3D +! + USE DECLARATIONS_SPECIAL + IMPLICIT NONE +! +! +!+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +! +! +! TABLEAUX ISSUS DU FICHIER 26 , DONNANT LES CONDITIONS AUX LIMITES +! + DOUBLE PRECISION HB(77),PHASEB(77),HC(77),PHASEC(77) +! + DOUBLE PRECISION PI,AN,ARG,T,W +! + INTEGER NBORL(77),NPTFRL,I,KK,ID,K + INTEGER, POINTER :: NBOR(:) +! +! TABLEAUX DE DONNEES TEMPORELLES +! + SAVE HB,PHASEB,PHASEC,NBORL,HC +! +!----------------------------------------------------------------------- +! +! LECTURE SUR LE FICHIER 26 DE HB ET PHASEB, CALCULES +! PAR INTERPOLATION SUR CHAQUE POINT FRONTIERE +! + NBOR=>MESH2D%NBOR%I + PI = 4.D0*ATAN(1.D0) + NPTFRL = 77 + IF(LT.EQ.0) THEN + DO K = 1, NPTFR2 + HBOR%R(K) = 1.D0 + ENDDO + ENDIF + IF(ABS(AT-150.D0).LT.1.D-5) THEN + ID = T3D_FILES(T3DFO1)%LU + REWIND ID + DO K= 1, NPTFRL + READ(ID,*) I,HB(K),PHASEB(K),HC(K),PHASEC(K) + PHASEB(K) = PI/180.D0*PHASEB(K) + PHASEC(K) = PI/180.D0*PHASEC(K) + NBORL(K) = I + ENDDO + ENDIF +! + T = 44714.D0 + W = 2.D0*PI/T +! + DO K= 1 , NPTFRL + ARG = MOD (W*AT - PHASEB(K),2.D0*PI) + AN = HB(K) * COS(ARG) + ARG = MOD (2.D0*W*AT - PHASEC(K),2.D0*PI) + AN = AN + HC(K) * COS(ARG) + IF (AT.LT.2500.D0) AN = AN*0.0004D0*AT + IF(NCSIZE.GT.0) THEN + DO KK=1,NPTFR2 + IF(BOUNDARY_COLOUR%I(KK).EQ.NBORL(K)) THEN + HBOR%R(KK) = AN-ZF%R(NBOR(KK)) + ENDIF + ENDDO + ELSE + HBOR%R(NBORL(K)) = AN-ZF%R(NBOR(NBORL(K))) + ENDIF + ENDDO +! +!----------------------------------------------------------------------- +! + RETURN + END diff --git a/examples/telemac3d/m2wave/vnv_m2wave.py b/examples/telemac3d/m2wave/vnv_m2wave.py index 676060e884e27e3ddb8287f6a638a66f6977b868..9747b7341be250e7ba01d0702f070aee1549cf54 100644 --- a/examples/telemac3d/m2wave/vnv_m2wave.py +++ b/examples/telemac3d/m2wave/vnv_m2wave.py @@ -36,6 +36,19 @@ class VnvStudy(AbstractVnvStudy): 't3d_m2wave_par.cas', cas=cas) del cas + # scalar mode + self.add_study('vnv_3', + 'telemac3d', + 't3d_m2waveCas.cas') + # parallel mode + cas = TelemacCas('t3d_m2waveCas.cas', get_dico('telemac3d')) + cas.set('PARALLEL PROCESSORS', 4) + + self.add_study('vnv_4', + 'telemac3d', + 't3d_m2waveCas_par.cas', + cas=cas) + del cas def _check_results(self): @@ -73,6 +86,57 @@ class VnvStudy(AbstractVnvStudy): self.check_epsilons('vnv_1:T3DRES', 'vnv_2:T3DRES', eps=[1.e-8]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_3:T3DHYD', + 'f2d_m2wave.slf', + eps=[1.e-8]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_4:T3DHYD', + 'f2d_m2wave.slf', + eps=[1.e-8]) + + # Comparison between sequential and parallel run. + self.check_epsilons('vnv_3:T3DHYD', + 'vnv_4:T3DHYD', + eps=[1.e-8]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_3:T3DRES', + 'f3d_m2wave.slf', + eps=[1.e-8]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_4:T3DRES', + 'f3d_m2wave.slf', + eps=[1.e-8]) + + # Comparison between sequential and parallel run. + self.check_epsilons('vnv_3:T3DRES', + 'vnv_4:T3DRES', + eps=[1.e-8]) + + # Comparison between Fortran and steering file defined layering + self.check_epsilons('vnv_1:T3DHYD', + 'vnv_3:T3DHYD', + eps=[1.e-15]) + + # Comparison between Fortran and steering file defined layering + self.check_epsilons('vnv_2:T3DHYD', + 'vnv_4:T3DHYD', + eps=[1.e-15]) + + # Comparison between Fortran and steering file defined layering + self.check_epsilons('vnv_1:T3DRES', + 'vnv_3:T3DRES', + eps=[1.e-15]) + + # Comparison between Fortran and steering file defined layering + self.check_epsilons('vnv_2:T3DRES', + 'vnv_4:T3DRES', + eps=[1.e-15]) + def _post(self): """ diff --git a/examples/telemac3d/tetra/user_fortran/user_mesh_transf.f b/examples/telemac3d/tetra/user_fortran/user_mesh_transf.f index 7641f867b3d59fb8b56c8f53117577bb56d817f0..75065f721b42705ace417607114e19a846b09e43 100644 --- a/examples/telemac3d/tetra/user_fortran/user_mesh_transf.f +++ b/examples/telemac3d/tetra/user_fortran/user_mesh_transf.f @@ -24,9 +24,14 @@ IMPLICIT NONE ! !----------------------------------------------------------------------- +! + INTEGER IPLAN ! !----------------------------------------------------------------------- ! + DO IPLAN=1,NPLAN + TRANSF_PLANE%I(IPLAN)=1 + ENDDO TRANSF_PLANE%I(4)=3 ZPLANE%R(4)=-0.2D0 ! diff --git a/examples/telemac3d/vent/f3d_ventDoubleSigma1.slf b/examples/telemac3d/vent/f3d_ventDoubleSigma1.slf new file mode 100644 index 0000000000000000000000000000000000000000..660c2f283773aadc9ae57b642b3d3ff4acfacccd --- /dev/null +++ b/examples/telemac3d/vent/f3d_ventDoubleSigma1.slf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1849b860e4f48e6715e182a4fbc2eaa255cf87c15841857ee1402b1299fa7ad1 +size 334140 diff --git a/examples/telemac3d/vent/f3d_ventDoubleSigma2.slf b/examples/telemac3d/vent/f3d_ventDoubleSigma2.slf new file mode 100644 index 0000000000000000000000000000000000000000..78f36a01842e27823bec041e28d96e8a0471cd41 --- /dev/null +++ b/examples/telemac3d/vent/f3d_ventDoubleSigma2.slf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cde47d3fc1a94f01b414ea414ab9820dbbb3d10dd4a51e3d57742cf780776152 +size 334140 diff --git a/examples/telemac3d/vent/f3d_ventMixed.slf b/examples/telemac3d/vent/f3d_ventMixed.slf new file mode 100644 index 0000000000000000000000000000000000000000..95c01ee6569bc990fe103f42620982f1adf3caa6 --- /dev/null +++ b/examples/telemac3d/vent/f3d_ventMixed.slf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:32946437c4addf199c28b6a59281f11e8e91bdcbd6125043b227545d59813e4e +size 334140 diff --git a/examples/telemac3d/vent/f3d_ventZlayer.slf b/examples/telemac3d/vent/f3d_ventZlayer.slf new file mode 100644 index 0000000000000000000000000000000000000000..5608b336d977871a1f9202bd937ae3eea9ae489d --- /dev/null +++ b/examples/telemac3d/vent/f3d_ventZlayer.slf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:3f6c85f7112272f96bd14a290eacfe49bcb5e43ffe3fcdf5f3529f58ca3b7d96 +size 334140 diff --git a/examples/telemac3d/vent/geo_vent.slf b/examples/telemac3d/vent/geo_vent.slf index 7cdd2e65fc6554839ad500b6431c30157ca79442..263ac2eb6b05a01a936b667fecb3f7cf386bb56b 100644 --- a/examples/telemac3d/vent/geo_vent.slf +++ b/examples/telemac3d/vent/geo_vent.slf @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:c742f3debcf978a005082d9518d6c6344592890df629331d4cea20a218936163 -size 11824 +oid sha256:05bf47370d0e12a8a51d75448bfb3273c607109963ab2a73d8687a5f468280fe +size 13132 diff --git a/examples/telemac3d/vent/t3d_ventDoubleSigma1.cas b/examples/telemac3d/vent/t3d_ventDoubleSigma1.cas new file mode 100644 index 0000000000000000000000000000000000000000..8d35cd2c908e8032ac97a767486d729d00a23cfd --- /dev/null +++ b/examples/telemac3d/vent/t3d_ventDoubleSigma1.cas @@ -0,0 +1,61 @@ +/---------------------------------------------------------------------- +/ ENVIRONNEMENT INFORMATIQUE +/---------------------------------------------------------------------- +BOUNDARY CONDITIONS FILE : geo_vent.cli +GEOMETRY FILE : geo_vent.slf +2D RESULT FILE : r2d_vent.slf +3D RESULT FILE : r3d_vent.slf +/---------------------------------------------------------------------- +/ OPTIONS GENERALES +/---------------------------------------------------------------------- +INITIAL CONDITIONS : 'ZERO ELEVATION' +MESH TRANSFORMATION : 1;1;1;1;1;1;1;1;3;1;1;1;1;1;1 +PRESCRIBED ELEVATION OF PLANES : -3. +/ +TITLE : 'TEST CANAL Soumis a un vent' +/ +VARIABLES FOR 2D GRAPHIC PRINTOUTS : 'U,V,H,B,S,USURF,VSURF,WSURF,MSURF' +VARIABLES FOR 3D GRAPHIC PRINTOUTS : 'Z,U,V,W,NUZ' +TIME STEP : 10. +NUMBER OF TIME STEPS : 2000 +GRAPHIC PRINTOUT PERIOD : 2000 +LISTING PRINTOUT PERIOD : 100 +/ +NUMBER OF HORIZONTAL LEVELS : 15 +/---------------------------------------------------------------------- +/ OPTIONS NUMERIQUES +/---------------------------------------------------------------------- +MASS-BALANCE : YES +/OPTION 6 : LONGUEUR DE MELANGE 'TSANIS' +VERTICAL TURBULENCE MODEL : 2 +MIXING LENGTH MODEL : 6 +/ +COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES : 0.1 +COEFFICIENT FOR VERTICAL DIFFUSION OF VELOCITIES : 1.E-6 +/ +SCHEME FOR ADVECTION OF VELOCITIES : 5 +/ +/ACCURACY FOR DIFFUSION OF VELOCITIES : 1.E-7 +IMPLICITATION FOR DEPTH : 0.6 +IMPLICITATION FOR VELOCITIES : 0.6 +/---------------------------------------------------------------------- +/ VENT (10 m/s direction OUEST) +/---------------------------------------------------------------------- +WIND : YES +/ COEFFICIENT REFAIT DANS BORD3D +COEFFICIENT OF WIND INFLUENCE : 1.625E-6 +WIND VELOCITY ALONG X : 10. +WIND VELOCITY ALONG Y : 0. +/---------------------------------------------------------------------- +ACCURACY FOR PROPAGATION : 1.E-15 +SOLVER FOR PPE : 1 +PRECONDITIONING FOR PPE : 34 +/ +/ DEFAULT VALUES UNTIL V7P3 KEPT FOR NON REGRESSION +LAW OF BOTTOM FRICTION = 2 +/ +/ DEFAULT VALUE UNTIL V8P0 KEPT FOR NON REGRESSION +FRICTION COEFFICIENT FOR THE BOTTOM = 60. +/ +/ DEFAULT VALUE UNTIL V8P1 KEPT FOR NON REGRESSION +COEFFICIENT OF WIND INFLUENCE VARYING WITH WIND SPEED = NO diff --git a/examples/telemac3d/vent/t3d_ventDoubleSigma2.cas b/examples/telemac3d/vent/t3d_ventDoubleSigma2.cas new file mode 100644 index 0000000000000000000000000000000000000000..8d0ea75229d6f808ff7f9c452b54cef9514387e1 --- /dev/null +++ b/examples/telemac3d/vent/t3d_ventDoubleSigma2.cas @@ -0,0 +1,76 @@ +/---------------------------------------------------------------------- +/ ENVIRONNEMENT INFORMATIQUE +/---------------------------------------------------------------------- +BOUNDARY CONDITIONS FILE : geo_vent.cli +GEOMETRY FILE : geo_vent.slf +2D RESULT FILE : r2d_vent.slf +3D RESULT FILE : r3d_vent.slf +/---------------------------------------------------------------------- +/ OPTIONS GENERALES +/---------------------------------------------------------------------- +INITIAL CONDITIONS : 'ZERO ELEVATION' +MESH TRANSFORMATION : 2;2;2;2;2;2;2;2;3;2;2;2;2;2;2 +PRESCRIBED ELEVATION OF PLANES : -3. +SIGMA DISTRIBUTION OF PLANES : + 0.; +0.1071; +0.2143; +0.3214; +0.4643; +0.6071; +0.7500; +0.8929; +0.2500; +0.5000; +0.7500; +0.9000; +0.9667; +1. +/ +TITLE : 'TEST CANAL Soumis a un vent' +/ +VARIABLES FOR 2D GRAPHIC PRINTOUTS : 'U,V,H,B,S,USURF,VSURF,WSURF,MSURF' +VARIABLES FOR 3D GRAPHIC PRINTOUTS : 'Z,U,V,W,NUZ' +TIME STEP : 10. +NUMBER OF TIME STEPS : 2000 +GRAPHIC PRINTOUT PERIOD : 2000 +LISTING PRINTOUT PERIOD : 100 +/ +NUMBER OF HORIZONTAL LEVELS : 15 +/---------------------------------------------------------------------- +/ OPTIONS NUMERIQUES +/---------------------------------------------------------------------- +MASS-BALANCE : YES +/OPTION 6 : LONGUEUR DE MELANGE 'TSANIS' +VERTICAL TURBULENCE MODEL : 2 +MIXING LENGTH MODEL : 6 +/ +COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES : 0.1 +COEFFICIENT FOR VERTICAL DIFFUSION OF VELOCITIES : 1.E-6 +/ +SCHEME FOR ADVECTION OF VELOCITIES : 5 +/ +/ACCURACY FOR DIFFUSION OF VELOCITIES : 1.E-7 +IMPLICITATION FOR DEPTH : 0.6 +IMPLICITATION FOR VELOCITIES : 0.6 +/---------------------------------------------------------------------- +/ VENT (10 m/s direction OUEST) +/---------------------------------------------------------------------- +WIND : YES +/ COEFFICIENT REFAIT DANS BORD3D +COEFFICIENT OF WIND INFLUENCE : 1.625E-6 +WIND VELOCITY ALONG X : 10. +WIND VELOCITY ALONG Y : 0. +/---------------------------------------------------------------------- +ACCURACY FOR PROPAGATION : 1.E-15 +SOLVER FOR PPE : 1 +PRECONDITIONING FOR PPE : 34 +/ +/ DEFAULT VALUES UNTIL V7P3 KEPT FOR NON REGRESSION +LAW OF BOTTOM FRICTION = 2 +/ +/ DEFAULT VALUE UNTIL V8P0 KEPT FOR NON REGRESSION +FRICTION COEFFICIENT FOR THE BOTTOM = 60. +/ +/ DEFAULT VALUE UNTIL V8P1 KEPT FOR NON REGRESSION +COEFFICIENT OF WIND INFLUENCE VARYING WITH WIND SPEED = NO diff --git a/examples/telemac3d/vent/t3d_ventMixedSigmaZ.cas b/examples/telemac3d/vent/t3d_ventMixedSigmaZ.cas new file mode 100644 index 0000000000000000000000000000000000000000..b562f82fa16f5babdd17faef598eeb37846405f6 --- /dev/null +++ b/examples/telemac3d/vent/t3d_ventMixedSigmaZ.cas @@ -0,0 +1,77 @@ +/---------------------------------------------------------------------- +/ ENVIRONNEMENT INFORMATIQUE +/---------------------------------------------------------------------- +BOUNDARY CONDITIONS FILE : geo_vent.cli +GEOMETRY FILE : geo_vent.slf +2D RESULT FILE : r2d_vent.slf +3D RESULT FILE : r3d_vent.slf +/---------------------------------------------------------------------- +/ OPTIONS GENERALES +/---------------------------------------------------------------------- +INITIAL CONDITIONS : 'ZERO ELEVATION' +MESH TRANSFORMATION : 2;2;2;2;2;2;2;2;3;3;3;3;3;3;3 +PRESCRIBED ELEVATION OF PLANES : +-3.00; +-2.25; +-1.50; +-0.75; +-0.30; +-0.10; + 0. +SIGMA DISTRIBUTION OF PLANES : + 0.; +0.1071; +0.2143; +0.3214; +0.4643; +0.6071; +0.7500; +0.8929 +/ +TITLE : 'TEST CANAL Soumis a un vent' +/ +VARIABLES FOR 2D GRAPHIC PRINTOUTS : 'U,V,H,B,S,USURF,VSURF,WSURF,MSURF' +VARIABLES FOR 3D GRAPHIC PRINTOUTS : 'Z,U,V,W,NUZ' +TIME STEP : 10. +NUMBER OF TIME STEPS : 2000 +GRAPHIC PRINTOUT PERIOD : 2000 +LISTING PRINTOUT PERIOD : 100 +/ +NUMBER OF HORIZONTAL LEVELS : 15 +/---------------------------------------------------------------------- +/ OPTIONS NUMERIQUES +/---------------------------------------------------------------------- +MASS-BALANCE : YES +/OPTION 6 : LONGUEUR DE MELANGE 'TSANIS' +VERTICAL TURBULENCE MODEL : 2 +MIXING LENGTH MODEL : 6 +/ +COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES : 0.1 +COEFFICIENT FOR VERTICAL DIFFUSION OF VELOCITIES : 1.E-6 +/ +SCHEME FOR ADVECTION OF VELOCITIES : 5 +/ +/ACCURACY FOR DIFFUSION OF VELOCITIES : 1.E-7 +IMPLICITATION FOR DEPTH : 0.6 +IMPLICITATION FOR VELOCITIES : 0.6 +/---------------------------------------------------------------------- +/ VENT (10 m/s direction OUEST) +/---------------------------------------------------------------------- +WIND : YES +/ COEFFICIENT REFAIT DANS BORD3D +COEFFICIENT OF WIND INFLUENCE : 1.625E-6 +WIND VELOCITY ALONG X : 10. +WIND VELOCITY ALONG Y : 0. +/---------------------------------------------------------------------- +ACCURACY FOR PROPAGATION : 1.E-15 +SOLVER FOR PPE : 1 +PRECONDITIONING FOR PPE : 34 +/ +/ DEFAULT VALUES UNTIL V7P3 KEPT FOR NON REGRESSION +LAW OF BOTTOM FRICTION = 2 +/ +/ DEFAULT VALUE UNTIL V8P0 KEPT FOR NON REGRESSION +FRICTION COEFFICIENT FOR THE BOTTOM = 60. +/ +/ DEFAULT VALUE UNTIL V8P1 KEPT FOR NON REGRESSION +COEFFICIENT OF WIND INFLUENCE VARYING WITH WIND SPEED = NO diff --git a/examples/telemac3d/vent/t3d_ventSigma.cas b/examples/telemac3d/vent/t3d_ventSigma.cas new file mode 100644 index 0000000000000000000000000000000000000000..2df5c1f20cac7d34f0663ed2bc35948d72c832fd --- /dev/null +++ b/examples/telemac3d/vent/t3d_ventSigma.cas @@ -0,0 +1,76 @@ +/---------------------------------------------------------------------- +/ ENVIRONNEMENT INFORMATIQUE +/---------------------------------------------------------------------- +BOUNDARY CONDITIONS FILE : geo_vent.cli +GEOMETRY FILE : geo_vent.slf +2D RESULT FILE : r2d_vent.slf +3D RESULT FILE : r3d_vent.slf +/---------------------------------------------------------------------- +/ OPTIONS GENERALES +/---------------------------------------------------------------------- +INITIAL CONDITIONS : 'ZERO ELEVATION' +MESH TRANSFORMATION : 2 +SIGMA DISTRIBUTION OF PLANES : +0.D0; +0.075D0; +0.15D0; +0.225D0; +0.325D0; +0.425D0; +0.525D0; +0.625D0; +0.7D0; +0.775D0; +0.85D0; +0.925D0; +0.97D0; +0.99D0; +1.D0 +/ +TITLE : 'TEST CANAL Soumis a un vent' +/ +VARIABLES FOR 2D GRAPHIC PRINTOUTS : 'U,V,H,B,S,USURF,VSURF,WSURF,MSURF' +VARIABLES FOR 3D GRAPHIC PRINTOUTS : 'Z,U,V,W,NUZ' +TIME STEP : 10. +NUMBER OF TIME STEPS : 2000 +GRAPHIC PRINTOUT PERIOD : 2000 +LISTING PRINTOUT PERIOD : 100 +/ +NUMBER OF HORIZONTAL LEVELS : 15 +/---------------------------------------------------------------------- +/ OPTIONS NUMERIQUES +/---------------------------------------------------------------------- +MASS-BALANCE : YES +/OPTION 6 : LONGUEUR DE MELANGE 'TSANIS' +VERTICAL TURBULENCE MODEL : 2 +MIXING LENGTH MODEL : 6 +/ +COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES : 0.1 +COEFFICIENT FOR VERTICAL DIFFUSION OF VELOCITIES : 1.E-6 +/ +SCHEME FOR ADVECTION OF VELOCITIES : 5 +/ +/ACCURACY FOR DIFFUSION OF VELOCITIES : 1.E-7 +IMPLICITATION FOR DEPTH : 0.6 +IMPLICITATION FOR VELOCITIES : 0.6 +/---------------------------------------------------------------------- +/ VENT (10 m/s direction OUEST) +/---------------------------------------------------------------------- +WIND : YES +/ COEFFICIENT REFAIT DANS BORD3D +COEFFICIENT OF WIND INFLUENCE : 1.625E-6 +WIND VELOCITY ALONG X : 10. +WIND VELOCITY ALONG Y : 0. +/---------------------------------------------------------------------- +ACCURACY FOR PROPAGATION : 1.E-15 +SOLVER FOR PPE : 1 +PRECONDITIONING FOR PPE : 34 +/ +/ DEFAULT VALUES UNTIL V7P3 KEPT FOR NON REGRESSION +LAW OF BOTTOM FRICTION = 2 +/ +/ DEFAULT VALUE UNTIL V8P0 KEPT FOR NON REGRESSION +FRICTION COEFFICIENT FOR THE BOTTOM = 60. +/ +/ DEFAULT VALUE UNTIL V8P1 KEPT FOR NON REGRESSION +COEFFICIENT OF WIND INFLUENCE VARYING WITH WIND SPEED = NO diff --git a/examples/telemac3d/vent/t3d_ventZplane.cas b/examples/telemac3d/vent/t3d_ventZplane.cas new file mode 100644 index 0000000000000000000000000000000000000000..0503b4870f067dc6d00d17eaca9b2527a8a444b1 --- /dev/null +++ b/examples/telemac3d/vent/t3d_ventZplane.cas @@ -0,0 +1,76 @@ +/---------------------------------------------------------------------- +/ ENVIRONNEMENT INFORMATIQUE +/---------------------------------------------------------------------- +BOUNDARY CONDITIONS FILE : geo_vent.cli +GEOMETRY FILE : geo_vent.slf +2D RESULT FILE : r2d_vent.slf +3D RESULT FILE : r3d_vent.slf +/---------------------------------------------------------------------- +/ OPTIONS GENERALES +/---------------------------------------------------------------------- +INITIAL CONDITIONS : 'ZERO ELEVATION' +MESH TRANSFORMATION : 3 +PRESCRIBED ELEVATION OF PLANES : +-10.00; + -9.25; + -8.50; + -7.75; + -6.75; + -5.75; + -4.75; + -3.75; + -3.00; + -2.25; + -1.50; + -0.75; + -0.30; + -0.10; + 0.00 +/ +TITLE : 'TEST CANAL Soumis a un vent' +/ +VARIABLES FOR 2D GRAPHIC PRINTOUTS : 'U,V,H,B,S,USURF,VSURF,WSURF,MSURF' +VARIABLES FOR 3D GRAPHIC PRINTOUTS : 'Z,U,V,W,NUZ' +TIME STEP : 10. +NUMBER OF TIME STEPS : 2000 +GRAPHIC PRINTOUT PERIOD : 2000 +LISTING PRINTOUT PERIOD : 100 +/ +NUMBER OF HORIZONTAL LEVELS : 15 +/---------------------------------------------------------------------- +/ OPTIONS NUMERIQUES +/---------------------------------------------------------------------- +MASS-BALANCE : YES +/OPTION 6 : LONGUEUR DE MELANGE 'TSANIS' +VERTICAL TURBULENCE MODEL : 2 +MIXING LENGTH MODEL : 6 +/ +COEFFICIENT FOR HORIZONTAL DIFFUSION OF VELOCITIES : 0.1 +COEFFICIENT FOR VERTICAL DIFFUSION OF VELOCITIES : 1.E-6 +/ +SCHEME FOR ADVECTION OF VELOCITIES : 5 +/ +/ACCURACY FOR DIFFUSION OF VELOCITIES : 1.E-7 +IMPLICITATION FOR DEPTH : 0.6 +IMPLICITATION FOR VELOCITIES : 0.6 +/---------------------------------------------------------------------- +/ VENT (10 m/s direction OUEST) +/---------------------------------------------------------------------- +WIND : YES +/ COEFFICIENT REFAIT DANS BORD3D +COEFFICIENT OF WIND INFLUENCE : 1.625E-6 +WIND VELOCITY ALONG X : 10. +WIND VELOCITY ALONG Y : 0. +/---------------------------------------------------------------------- +ACCURACY FOR PROPAGATION : 1.E-15 +SOLVER FOR PPE : 1 +PRECONDITIONING FOR PPE : 34 +/ +/ DEFAULT VALUES UNTIL V7P3 KEPT FOR NON REGRESSION +LAW OF BOTTOM FRICTION = 2 +/ +/ DEFAULT VALUE UNTIL V8P0 KEPT FOR NON REGRESSION +FRICTION COEFFICIENT FOR THE BOTTOM = 60. +/ +/ DEFAULT VALUE UNTIL V8P1 KEPT FOR NON REGRESSION +COEFFICIENT OF WIND INFLUENCE VARYING WITH WIND SPEED = NO diff --git a/examples/telemac3d/vent/vnv_vent.py b/examples/telemac3d/vent/vnv_vent.py index 3b4d5c0f72af5f4f4af69ed9e7cecaa592bd291c..a05614878138c1295aad8b7af9298ead8e7f10ad 100644 --- a/examples/telemac3d/vent/vnv_vent.py +++ b/examples/telemac3d/vent/vnv_vent.py @@ -28,7 +28,6 @@ class VnvStudy(AbstractVnvStudy): 'telemac3d', 't3d_vent.cas') - # vent parallel mode cas = TelemacCas('t3d_vent.cas', get_dico('telemac3d')) cas.set('PARALLEL PROCESSORS', 4) @@ -37,7 +36,82 @@ class VnvStudy(AbstractVnvStudy): 'telemac3d', 't3d_vent_par.cas', cas=cas) + del cas + + #NEW CASES WITH DIFFERENT VERTICAL LAYERING + # vent scalar mode + self.add_study('vnv_3', + 'telemac3d', + 't3d_ventSigma.cas') + + # vent parallel mode + cas = TelemacCas('t3d_ventSigma.cas', get_dico('telemac3d')) + cas.set('PARALLEL PROCESSORS', 4) + + self.add_study('vnv_4', + 'telemac3d', + 't3d_ventSigma_par.cas', + cas=cas) + del cas + + # vent scalar mode + self.add_study('vnv_5', + 'telemac3d', + 't3d_ventZplane.cas') + # vent parallel mode + cas = TelemacCas('t3d_ventZplane.cas', get_dico('telemac3d')) + cas.set('PARALLEL PROCESSORS', 4) + + self.add_study('vnv_6', + 'telemac3d', + 't3d_ventZplane_par.cas', + cas=cas) + del cas + + # vent scalar mode + self.add_study('vnv_7', + 'telemac3d', + 't3d_ventDoubleSigma1.cas') + + # vent parallel mode + cas = TelemacCas('t3d_ventDoubleSigma1.cas', get_dico('telemac3d')) + cas.set('PARALLEL PROCESSORS', 4) + + self.add_study('vnv_8', + 'telemac3d', + 't3d_ventDoubleSigma1_par.cas', + cas=cas) + del cas + + # vent scalar mode + self.add_study('vnv_9', + 'telemac3d', + 't3d_ventDoubleSigma2.cas') + + # vent parallel mode + cas = TelemacCas('t3d_ventDoubleSigma2.cas', get_dico('telemac3d')) + cas.set('PARALLEL PROCESSORS', 4) + + self.add_study('vnv_10', + 'telemac3d', + 't3d_ventDoubleSigma2_par.cas', + cas=cas) + del cas + + # vent scalar mode + self.add_study('vnv_11', + 'telemac3d', + 't3d_ventMixedSigmaZ.cas') + + # vent parallel mode + cas = TelemacCas('t3d_ventMixedSigmaZ.cas', get_dico('telemac3d')) + cas.set('PARALLEL PROCESSORS', 4) + + self.add_study('vnv_12', + 'telemac3d', + 't3d_ventMixedSigmaZ_par.cas', + cas=cas) del cas # post-treatment @@ -46,7 +120,6 @@ class VnvStudy(AbstractVnvStudy): 'p3d_vent.cas') - def _check_results(self): """ Post-treatment processes @@ -67,6 +140,90 @@ class VnvStudy(AbstractVnvStudy): 'vnv_2:T3DRES', eps=[1.E-10]) + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_3:T3DRES', + 'f3d_vent.slf', + eps=[1.E-10]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_4:T3DRES', + 'f3d_vent.slf', + eps=[1.E-10]) + + # Comparison between sequential and parallel run. + self.check_epsilons('vnv_3:T3DRES', + 'vnv_4:T3DRES', + eps=[1.E-10]) + + # Comparison between Fortran and steering file defined layering + self.check_epsilons('vnv_1:T3DRES', + 'vnv_3:T3DRES', + eps=[1.E-15]) + + # Comparison between Fortran and steering file defined layering + self.check_epsilons('vnv_2:T3DRES', + 'vnv_4:T3DRES', + eps=[1.E-15]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_5:T3DRES', + 'f3d_ventZlayer.slf', + eps=[1.E-10]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_6:T3DRES', + 'f3d_ventZlayer.slf', + eps=[1.E-10]) + + # Comparison between sequential and parallel run. + self.check_epsilons('vnv_5:T3DRES', + 'vnv_6:T3DRES', + eps=[1.E-10]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_7:T3DRES', + 'f3d_ventDoubleSigma1.slf', + eps=[1.E-10]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_8:T3DRES', + 'f3d_ventDoubleSigma1.slf', + eps=[1.E-10]) + + # Comparison between sequential and parallel run. + self.check_epsilons('vnv_7:T3DRES', + 'vnv_8:T3DRES', + eps=[1.E-10]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_9:T3DRES', + 'f3d_ventDoubleSigma2.slf', + eps=[1.E-10]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_10:T3DRES', + 'f3d_ventDoubleSigma2.slf', + eps=[1.E-10]) + + # Comparison between sequential and parallel run. + self.check_epsilons('vnv_9:T3DRES', + 'vnv_10:T3DRES', + eps=[1.E-10]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_11:T3DRES', + 'f3d_ventMixed.slf', + eps=[1.E-10]) + + # Comparison with the last time frame of the reference file. + self.check_epsilons('vnv_12:T3DRES', + 'f3d_ventMixed.slf', + eps=[1.E-10]) + + # Comparison between sequential and parallel run. + self.check_epsilons('vnv_11:T3DRES', + 'vnv_12:T3DRES', + eps=[1.E-10]) def _post(self): """ diff --git a/sources/telemac3d/calcot.f b/sources/telemac3d/calcot.f index 87d696c980adbf3e27c3ec2eef81beb140de7873..a4b9f99aa2488bd9434d0f8c01a7f4fe25cf7268 100644 --- a/sources/telemac3d/calcot.f +++ b/sources/telemac3d/calcot.f @@ -134,8 +134,10 @@ ENDDO ! SIGMA TRANSFORMATION FOR PLANES I1 TO I2 ! BETWEEN ALREADY TREATED PLANES I1-1 AND I2+1 +! TRANSF_PLANE .EQ.5 IS NEEDED TO HANDLE THE FIRST STAP OF AMR DO IPLAN=I1,I2 - IF(TRANSF_PLANE%I(IPLAN).EQ.1) THEN + IF(TRANSF_PLANE%I(IPLAN).EQ.1.OR. + & TRANSF_PLANE%I(IPLAN).EQ.5) THEN ZSTAR%R(IPLAN)=FLOAT(IPLAN-I1+1)/FLOAT(I2-I1+2) ! ELSE ! ZSTAR%R(IPLAN) HAS BEEN GIVEN BY USER IN CONDIM diff --git a/sources/telemac3d/condim.f b/sources/telemac3d/condim.f index 1db580c98e42b1b20795bba4602face4fe336048..36b59255633026a3ff85a13c0d6a9ba9922bfaf3 100644 --- a/sources/telemac3d/condim.f +++ b/sources/telemac3d/condim.f @@ -93,7 +93,7 @@ ! !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+- ! - INTEGER IPLAN,I,J + INTEGER IPLAN,I,J,ISIGMA,IZPLAN DOUBLE PRECISION DU,DL,TMP ! !----------------------------------------------------------------------- @@ -160,11 +160,14 @@ ! ! STANDARD BELOW IS: EVENLY SPACED PLANES, NO OTHER DATA REQUIRED ! - DO IPLAN = 1,NPLAN - TRANSF_PLANE%I(IPLAN)=1 - ENDDO ! MESH TRANSFORMATION 4 CAN BE STEERED BY TRANSF_COEF KEYWORD ! WITHOUT IMPLEMENTING ANYTHING + +! COPY MESH TRANSFER FROM STEERING FILE + DO IPLAN=1,NPLAN + TRANSF_PLANE%I(IPLAN)=TRANSF_TMP(IPLAN) + ENDDO + IF(TRANSF.EQ.4) THEN ! MESH STRETCHING USING TANH PROFILE (AS IN GOTM) DO IPLAN=1,NPLAN @@ -185,9 +188,102 @@ ENDDO ENDIF ENDIF +! +! APPLY LEVELS FROM THE STEERING FILE +! + IF(NZSTAR.GT.0.OR.NZPLANE.GT.0) THEN + ISIGMA = 0 + IZPLAN = 0 + DO IPLAN=1,NPLAN + IF(TRANSF_TMP(IPLAN).EQ.2) THEN + ISIGMA = ISIGMA+1 + ZSTAR%R(IPLAN) = ZSTAR_TMP(ISIGMA) + ELSEIF(TRANSF_TMP(IPLAN).EQ.3) THEN + IZPLAN = IZPLAN+1 + ZPLANE%R(IPLAN) = ZPLANE_TMP(IZPLAN) + ENDIF + ENDDO + ENDIF + + DEALLOCATE(TRANSF_TMP) + DEALLOCATE(ZSTAR_TMP) + DEALLOCATE(ZPLANE_TMP) + ! OTHERWISE: USER_MESH_TRANSF ! USER FUNCTION CALL USER_MESH_TRANSF + +! FURTHER CHECKS + +! MESH TRANSFER THAT SHOULD NOT BE MIXED + IF(ANY(TRANSF_PLANE%I.EQ.0).AND.ANY(TRANSF_PLANE%I.NE.0)) THEN + WRITE(LU,*) 'MESH TRANSFER = 0 MUST BE USED FOR ', + & 'ALL VERTICAL LEVELS OR NONE' + CALL PLANTE(1) + ENDIF + IF(ANY(TRANSF_PLANE%I.EQ.4).AND.ANY(TRANSF_PLANE%I.NE.4)) THEN + WRITE(LU,*) 'MESH TRANSFER = 4 MUST BE USED FOR ', + & 'ALL VERTICAL LEVELS OR NONE' + CALL PLANTE(1) + ENDIF + IF(ANY(TRANSF_PLANE%I.EQ.5).AND.ANY(TRANSF_PLANE%I.NE.5)) THEN + WRITE(LU,*) 'MESH TRANSFER = 5 MUST BE USED FOR ', + & 'ALL VERTICAL LEVELS OR NONE' + CALL PLANTE(1) + ENDIF + +! MESH TRANSFER THAT SHOULD NOT BE ADJACENT + DO I=1,NPLAN-1 + IF((TRANSF_PLANE%I(I).EQ.1.AND.TRANSF_PLANE%I(I+1).EQ.2) + & .OR.(TRANSF_PLANE%I(I).EQ.2.AND.TRANSF_PLANE%I(I+1).EQ.1)) + & THEN + WRITE(LU,*) 'MESH TRANSFER = 1 AND MESH TRANSFER = 2', + & 'IN LEVELS ', I, I+1, ' MUST NOT BE ADJACENT' + CALL PLANTE(1) + ENDIF + ENDDO + +! INCREASING VALUES OF Z AND SIGMA + DO I=1,NPLAN-1 + IF((TRANSF_PLANE%I(I).EQ.2.AND.TRANSF_PLANE%I(I+1).EQ.2) + & .AND.ZSTAR%R(I+1).LE.ZSTAR%R(I)) THEN + WRITE(LU,*) 'SIGMA COORDINATE (ZSTAR) DOES NOT INCREASE ', + & 'BETWEEN LEVELS ', I, I+1 + CALL PLANTE(1) + ENDIF + ENDDO + DO I=1,NPLAN-1 + IF((TRANSF_PLANE%I(I).EQ.3.AND.TRANSF_PLANE%I(I+1).EQ.3) + & .AND.ZPLANE%R(I+1).LE.ZPLANE%R(I)) THEN + WRITE(LU,*) 'Z COORDINATE (ZPLANE) DOES NOT INCREASE ', + & 'BETWEEN LEVELS ', I, I+1 + CALL PLANTE(1) + ENDIF + ENDDO + +! SIGMA COORDINATES BETWEEN 0 AND 1 + DO I=1,NPLAN + IF(TRANSF_PLANE%I(I).EQ.2.AND. + & (ZSTAR%R(I).LT.0.D0.OR.ZSTAR%R(I).GT.1.D0)) THEN + WRITE(LU,*) + & 'SIGMA COORDINATE (ZSTAR) MUST BE BETWEEN 0 AND 1', + & ' IN LEVEL ',I + CALL PLANTE(1) + ENDIF + ENDDO + +! SIGMA COORDINATES AT 0 AND 1 AT THE BOTTOM AND TOP + IF(TRANSF_PLANE%I(1).EQ.2.AND.(ABS(ZSTAR%R(1)).GT.1.D-9)) THEN + WRITE(LU,*) 'SIGMA COORDINATE AT THE BOTTOM AUTOMATICALLY ', + & 'SET TO 0' + ZSTAR%R(1) = 0.D0 + ENDIF + IF(TRANSF_PLANE%I(NPLAN).EQ.2.AND. + & (ABS(ZSTAR%R(NPLAN)-1.D0).GT.1.D-9)) THEN + WRITE(LU,*) 'SIGMA COORDINATE AT THE SURFACE AUTOMATICALLY ', + & 'SET TO 1' + ZSTAR%R(NPLAN) = 1.D0 + ENDIF ! !*********************************************************************** ! diff --git a/sources/telemac3d/declarations_telemac3d.f b/sources/telemac3d/declarations_telemac3d.f index aca7547c13508ac0fdafffdf15272ddcb2a31afa..b2e06ee0285350d6817ad126e8b3d3aaf9e3ae01 100644 --- a/sources/telemac3d/declarations_telemac3d.f +++ b/sources/telemac3d/declarations_telemac3d.f @@ -1725,6 +1725,18 @@ ! INTEGER, ALLOCATABLE :: CTRLSC(:) ! +! TEMPORARY STORAGE FOR READING LAYER TYPE FROM THE STEERING FILE +! + INTEGER, ALLOCATABLE :: TRANSF_TMP(:) +! +! NUMBER OF Z PLANES IN TEMPORARY ARRAY ZPLANE_TMP +! + INTEGER NZPLANE +! +! NUMBER OF SIGMA PLANES IN TEMPORARY ARRAY ZSTAR_TMP +! + INTEGER NZSTAR +! !----------------------------------------------------------------------- ! (5) LOGICAL VALUES !----------------------------------------------------------------------- @@ -2358,6 +2370,14 @@ ! DOUBLE PRECISION TRANSF_COEF(2) ! +! TEMPORARY STORAGE FOR READING SIGMA LAYERS FROM THE STEERING FILE +! + DOUBLE PRECISION, ALLOCATABLE :: ZSTAR_TMP(:) +! +! TEMPORARY STORAGE FOR READING Z LAYERS FROM THE STEERING FILE +! + DOUBLE PRECISION, ALLOCATABLE :: ZPLANE_TMP(:) +! !----------------------------------------------------------------------- ! (7) STRINGS !----------------------------------------------------------------------- diff --git a/sources/telemac3d/lecdon_telemac3d.F b/sources/telemac3d/lecdon_telemac3d.F index 89a3c3a4516b45e1acb1a66f41b5503e5db70b6b..ac75864426bbddfcba2648a9d3b5d32170dc4c13 100644 --- a/sources/telemac3d/lecdon_telemac3d.F +++ b/sources/telemac3d/lecdon_telemac3d.F @@ -179,7 +179,7 @@ !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ! LOGICAL CONVEC,YES2D,GRAP_PRINT2D - INTEGER I,J,K,NTRTOT,ITRAC,TEMP_SCHDTA,NFR,NTRACE1 + INTEGER I,J,K,NTRTOT,ITRAC,TEMP_SCHDTA,NFR,NTRACE1,IPLAN INTEGER NTRACET ! CHARACTER(LEN=8) MNEMO(MAXVAR) @@ -926,7 +926,93 @@ PROFVEL(K) = MOTINT( ADRESS(1,95) + K-1 ) ENDDO ENDIF - TRANSF= MOTINT( ADRESS(1,96) ) + +! TREATEMENT OF VERTICAL LAYERING + ALLOCATE(TRANSF_TMP(NPLAN)) +! + IF(DIMEN(1,96).EQ.0) THEN +! DEFAULT CASE + TRANSF = 1 + DO IPLAN=1,NPLAN + TRANSF_TMP(IPLAN) = TRANSF + ENDDO + ELSEIF(DIMEN(1,96).EQ.1) THEN +! ONLY ONE VALUE SPECIFIED FOR MESH TRANSFORMATION. +! HENCE USED FOR ALL LEVELS + TRANSF = MOTINT( ADRESS(1,96) ) + DO IPLAN=1,NPLAN + TRANSF_TMP(IPLAN) = TRANSF + ENDDO + ELSEIF(DIMEN(1,96).EQ.NPLAN) THEN +! SPATIALLY VARYING LAYER DISTRIBUTION + DO IPLAN=1,NPLAN + TRANSF_TMP(IPLAN) = MOTINT( ADRESS(1,96) + IPLAN-1 ) + ENDDO +! FIRST CONSISTENCY CHECK + IF(ANY(TRANSF_TMP.EQ.4).OR.ANY(TRANSF_TMP.EQ.5).OR. + & ANY(TRANSF_TMP.EQ.0)) THEN + WRITE (LU,*) 'ONLY 1, 2 AND 3 ARE ALLOWED WHEN SPECIFYING THE' + & , ' MESH TRANSFORMATION FOR ALL VERTICAL LEVELS' + CALL PLANTE(1) + ENDIF + TRANSF = MAXVAL(TRANSF_TMP) + ELSE + WRITE (LU,*) 'WRONG NUMBER OF DATA IN MESH TRANSFORMATION: ', + & DIMEN(1,96) + WRITE (LU,*) 'THIS MUST BE EQUAL TO ', NPLAN, ' OR 1.' + CALL PLANTE(1) + ENDIF + +! READ ARRAYS FOR ZSTAR AND ZPLANE IF AVAILABLE + NZPLANE = DIMEN(2,44) + NZSTAR = DIMEN(2,43) + ALLOCATE(ZSTAR_TMP(NZSTAR)) + ALLOCATE(ZPLANE_TMP(NZPLANE)) + + IF(NZSTAR.GT.0) THEN + IF(NZSTAR.NE.COUNT(TRANSF_TMP.EQ.2)) THEN + WRITE(LU,*) 'NUMBER OF SIGMA LEVELS: ',NZSTAR, + & ' MUST BE EQUAL TO THE NUMBER OF LEVELS WITH ', + & 'MESH TRANSFORMATION = 2: ',COUNT(TRANSF_TMP.EQ.2) + CALL PLANTE(1) + ENDIF + DO IPLAN = 1,NZSTAR + ZSTAR_TMP(IPLAN) = MOTREA(ADRESS(2,43)+IPLAN-1) + ENDDO + IF(ANY(ZSTAR_TMP.LT.0.D0).OR.ANY(ZSTAR_TMP.GT.1.D0)) THEN + WRITE(LU,*) 'SIGMA LEVELS MUST BE BETWEEN 0 AND 1.' + CALL PLANTE(1) + ENDIF + ENDIF + + IF(NZPLANE.GT.0) THEN + IF(NZPLANE.NE.COUNT(TRANSF_TMP.EQ.3)) THEN + WRITE(LU,*) 'NUMBER OF Z LEVELS: ',NZPLANE, + & ' MUST BE EQUAL TO THE NUMBER OF LEVELS WITH ', + & 'MESH TRANSFORMATION = 3: ',COUNT(TRANSF_TMP.EQ.3) + CALL PLANTE(1) + ENDIF + DO IPLAN = 1,NZPLANE + ZPLANE_TMP(IPLAN) = MOTREA(ADRESS(2,44)+IPLAN-1) + ENDDO + DO IPLAN = 1,NZPLANE-1 +! CHECK ORDER OF THE Z LAYERS + IF(ZPLANE_TMP(IPLAN+1)-ZPLANE_TMP(IPLAN).LE.0.D0) THEN + WRITE(LU,*) 'Z LEVELS MUST BE IN INCREASING ORDER. ' + WRITE(LU,*) 'NOT FULFILLED FOR LEVEL ', IPLAN, ' AND ', + & IPLAN+1 + CALL PLANTE(1) + ENDIF + ENDDO + ENDIF + +! EXTRA CHECK + IF(NZSTAR+NZPLANE.GT.NPLAN) THEN + WRITE (LU,*) 'MORE LEVELS SPECIFIED ',NZSTAR, '(SIGMA LEVELS)', + & ' AND ',NZPLANE, '(Z LEVELS) THAN AVAILABLE LEVELS ',NPLAN + CALL PLANTE(1) + ENDIF + TRANSF_COEF(1) = MOTREA( ADRESS(2,7) ) TRANSF_COEF(2) = MOTREA( ADRESS(2,7) + 1 ) IF(ANY(TRANSF_COEF.LT.0.D0)) THEN diff --git a/sources/telemac3d/telemac3d.dico b/sources/telemac3d/telemac3d.dico index 701cd773abb3d5b75a98c77a005243b636e6cf2f..d42549d2f96d3ea7d018de84a65343c832699295 100644 --- a/sources/telemac3d/telemac3d.dico +++ b/sources/telemac3d/telemac3d.dico @@ -24,7 +24,7 @@ /---SYSTEME-TELEMAC------------------------------------------------------------- / / INTEGER INDEX USED: 1-43,45-82,84-87,89-92,95-101,103-127 OUT OF 121 -/ REAL INDEX USED: 1-42,51-107 OUT OF 99 +/ REAL INDEX USED: 1-44,51-107 OUT OF 101 / LOGICAL INDEX USED: 2-2,5-18,21-28,31-34,51-51,58-61,68-72,76-76,81-84,86-87,90-93 OUT OF 48 / STRING INDEX USED: 1-4,6-11,13-14,16-23,28-53,55-60,62-79,83-95,98-98,100-103 OUT OF 88 / @@ -2518,10 +2518,10 @@ NOM = 'TRANSFORMATION DU MAILLAGE' NOM1 = 'MESH TRANSFORMATION' TYPE = INTEGER INDEX = 96 -TAILLE = 1 -DEFAUT = 1 -DEFAUT1 = 1 +TAILLE = 2 MNEMO = 'TRANSF' +APPARENCE = +'DYNLIST' RUBRIQUE = 'VERTICALE';'';'' RUBRIQUE1 = @@ -2538,8 +2538,22 @@ verticaux du maillage. Les choix possibles sont : \item 4 : sigma avec facteur de zoom ; \item 5 : adaptatif. \end{itemize} +Il peut etre specifie par une valeur unique (la meme valeur est alors +utilisee pour tous les plans du maillage vertical complet) ou par 1 +valeur par plan. +Dans le dernier cas, seules les options 1, 2 ou 3 sont autorisees. + +Avec l option 2, \telkey{PROPORTION SIGMA DES PLANS} peut aider a +definir le niveau sigma des plans. +Avec l option 3, \telkey{COTE IMPOSEE DES PLANS} peut aider a definir +la cote des plans. + Ce mot-clef doit etre coherent avec le sous-programme -\telfile{CONDIM}.' +\telfile{USER\_MESH\_TRANSF} si la distribution est programmee par +l utilisateur. + +Si aucune valeur n est renseignee, la transformation sigma classique +(1) est utilisee pour tous les plans.' AIDE1 = 'Specifies the distribution of vertical planes of the mesh. Possible choices are: @@ -2552,8 +2566,69 @@ implemented), \item 4: sigma with zooming factor, \item 5: adaptive mesh. \end{itemize} -This keyword must comply with what is done in \telkey{CONDIM} -subroutine.' +It can be specified as a single value (the same value is then used for +every plane of the full vertical mesh) or as one value per plane. +In the later case, only options 1, 2 or 3 are allowed. + +In case option 2 is used, \telkey{SIGMA DISTRIBUTION OF PLANES} can help +to define the sigma level of the planes. +In case option 3 is used, \telkey{PRESCRIBED ELEVATION OF PLANES} can +help to define the elevation of the planes. + +This keyword must comply with what is done in +\telkey{USER\_MESH\_TRANSF} subroutine if the distribution is +implemented by the user. + +If no value is given, classical sigma transformation (1) is used for +every plane.' +/ +NOM = 'PROPORTION SIGMA DES PLANS' +NOM1 = 'SIGMA DISTRIBUTION OF PLANES' +TYPE = REAL +INDEX = 43 +TAILLE = 2 +MNEMO = 'ZSTAR' +APPARENCE = +'DYNLIST' +RUBRIQUE = +'VERTICALE';'';'' +RUBRIQUE1 = +'VERTICAL';'';'' +NIVEAU = 1 +AIDE = +'Specifie la distribution sigma des plans avec +\telkey{TRANSFORMATION DU MAILLAGE} = 2. +ATTENTION : ne pas ecrire de valeurs pour les plans pour lesquels +\telkey{TRANSFORMATION DU MAILLAGE} ne vaut pas 2.' +AIDE1 = +'Specifies the sigma distribution for levels with +\telkey{MESH TRANSFORMATION} equals 2. +WARNING: do not provide values for levels where +\telkey{MESH TRANSFORMATION} is not equal to 2.' +/ +NOM = 'COTE IMPOSEE DES PLANS' +NOM1 = 'PRESCRIBED ELEVATION OF PLANES' +TYPE = REAL +INDEX = 44 +TAILLE = 2 +MNEMO = 'ZPLANE' +APPARENCE = +'DYNLIST' +RUBRIQUE = +'VERTICALE';'';'' +RUBRIQUE1 = +'VERTICAL';'';'' +NIVEAU = 1 +AIDE = +'Specifie les cotes de plans avec +\telkey{TRANSFORMATION DU MAILLAGE} = 3. +ATTENTION : ne pas ecrire de valeurs pour les plans pour lesquels +\telkey{TRANSFORMATION DU MAILLAGE} ne vaut pas 3.' +AIDE1 = +'Specifies the z levels for levels with +\telkey{MESH TRANSFORMATION} equals 3. +WARNING: do not provide values for levels where +\telkey{MESH TRANSFORMATION} is not equal to 3.' / NOM = 'COEFFICIENTS D ETIREMENT DU MAILLAGE' NOM1 = 'MESH STRETCHING COEFFICIENTS'