Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • otm/telemac-mascaret
1 result
Show changes
Commits on Source (9)
Showing
with 211 additions and 67 deletions
Latest changes
==============
PYTHON: use HOMETEL in get_dico from telemac_cas.py when CFGS is not
initialised.
PYTHON: fix HERMES Python extension module generation with older versions of
F2PY, such as 1.19 or 1.20.
TELEMAC-3D: new keyword USE MAXIMUM VALUES FROM PREVIOUS COMPUTATION FILE
to compute maximum values for variables MAXZ and TMXZ from a previous
computation and the current computation or only from the current computation
as done in TELEMAC-2D
TELEMAC-3D: fix chacteristics in spherical coordinates in 3D (UCONVC and VCONVC
have to be updated with COSLAT only with this combo of 2 options)
TELEMAC-3D: fix spherical coordinates in 3D (LONGITU was called twice)
PYTHON: major improvement of the merge functionnality from run_telfile.py
regarding performance and memory consumption.
......
......@@ -445,7 +445,18 @@ the start time of the second simulation. By default, the start time of the
second calculation is equal to the value of the last time step of restart file.
This can be changed by using the logical keyword \telkey{INITIAL TIME SET TO
ZERO} if the user wants to start from zero (default value is NO).
\\
When resuming a computation, if wanting to find maximum elevation and its
associated time (with MAXZ, TMXZ for
\telkey{VARIABLES FOR 2D GRAPHIC PRINTOUTS}), the user can set
the keyword \telkey{USE MAXIMUM VALUES FROM PREVIOUS COMPUTATION FILE} with
2 options:
\begin{itemize}
\item YES (= default): compute these maximum values from the
\telkey{PREVIOUS COMPUTATION FILE} and current computation,
\item NO: compute these maximum values only from the current computation
(not taking into account the \telkey{PREVIOUS COMPUTATION FILE}).
\end{itemize}
It is also possible to resume a computation from a 2D results file. This is
generally useful in river hydraulic offering the possibility to initialise the
......
......@@ -176,22 +176,28 @@ on the values of the active tracers and is defined by the keyword
The available values for that keyword \telkey{DENSITY LAW} are:
\begin{itemize}
\item 0: no interaction with the tracers, except if present sediment
(default value),
\item 0: no variation of density with tracers such as temperature or salinity,
but variation of density with sediment if present (default value),
\item 1: variation of density according to temperature (and sediment if present),
\item 1: variation of density as a function of temperature (and sediment if
present),
\item 2: variation of density according to salinity (and sediment if present),
\item 2: variation of density as a function of salinity (and sediment if
present),
\item 3: variation of density according to temperature and salinity
\item 3: variation of density as a function of temperature and salinity
(and sediment if present),
\item 4: variation as a function of the spatial expansion coefficients
(and effect of the sediment with its own behaviour if present),
\item 5: the sediment and other tracers are forced to be passive,
\item 5: no variation of density. No tracer is considered to compute density
(in particular temperature, salinity or sediment).
Density is then constant, equal to the value given by
\telkey{AVERAGE WATER DENSITY} (default = 1,025~kg/m$^3$).
The sediment and other tracers are forced to be passive,
\item 6: Jackett et al. law (2006) with variation of density according to
\item 6: Jackett et al. law (2006) with variation of density as a function of
temperature and salinity using a 25 term formula.
\end{itemize}
......
......@@ -746,12 +746,20 @@ def f77_to_f90(input_file, output_file):
else:
cont_char_added = False
if line_num > 0:
if line_num > 1 and not cont_char_added:
f90_file.write('\n')
# Keep comments and preprocessor directives
# Keep comments and preprocessor directives, except subroutine
# decorators (e.g. "! *********************"")
if line[0] == '!' or line[0] == '#':
f90_file.write(line[:-1])
if (
line_num > 0 or not re.search(r"^!\s*\*", line)
) and not cont_char_added:
f90_file.write(line[:-1])
if line_num == 0:
f90_file.write('\n')
else:
continue
# Keep labels (just remove the trailing spaces after the label)
elif line[0].isdigit():
label = line[:6].rstrip()
......@@ -763,12 +771,7 @@ def f77_to_f90(input_file, output_file):
# since the subroutine is sometimes followed by comments
elif re.search( r'^\s*SUBROUTINE\s+(\S+)\s*', line) and \
')' not in line:
if line[6] == 'S':
# Remove the first 6 columns for API subroutines
f90_file.write(f'{line[6:-1]} &')
else:
# Don't do this for usual subroutines
f90_file.write(f'{line[:-1]} &')
f90_file.write(f'{line[:-1]} &'.lstrip())
cont_char_added = True
# Remove the first 6 columns in other cases
else:
......
......@@ -4,7 +4,7 @@ Class for Telemac steering file manipulation
import re
import shutil
from collections import OrderedDict
from os import path
from os import getenv, path
from execution.telemac_dico import DICOS, TelemacDico
from execution.tools import (EMPTY_LINE, KEY_COMMENT, KEY_EQUALS, KEY_NONE,
......@@ -22,17 +22,24 @@ SPECIAL = ['VARIABLES FOR GRAPHIC PRINTOUTS',
def get_dico(module):
"""
Returns path of the dictionary for a given module
Return the dictionary path of a given module.
@param module (str) name of a telemac-mascaret module
@param module (str) Name of the TELEMAC-MASCARET module.
@returns the path
@exception TelemacException Exception raised when the TELEMAC root
directory is not found.
@return str The dictionary path.
"""
from config import CFGS
if CFGS is None:
raise TelemacException(
"This function only works if a configuration is set")
return path.join(CFGS.get_root(), 'sources', module, module+'.dico')
if CFGS is not None and CFGS.cfgname != "":
root = CFGS.get_root()
else:
root = getenv("HOMETEL")
if root is None:
raise TelemacException("Unable to find TELEMAC root directory")
return path.join(root, "sources", module, f"{module}.dico")
class TelemacCas():
......
......@@ -4,7 +4,7 @@
!
!
!***********************************************************************
! TELEMAC3D V8P5
! TELEMAC3D V9P0
!***********************************************************************
!
!brief Memory allocation of structures, aliases, blocks...
......@@ -332,6 +332,7 @@
CALL BIEF_DEALLOBJ(PARAPLUIE)
CALL BIEF_DEALLOBJ(MAXZ )
CALL BIEF_DEALLOBJ(TMAXZ)
CALL BIEF_DEALLOBJ(MAXZTMAXZ)
CALL BIEF_DEALLOBJ(FXH )
CALL BIEF_DEALLOBJ(FYH )
......
......@@ -4,7 +4,7 @@
!
!
!***********************************************************************
! TELEMAC3D V8P5
! TELEMAC3D V9P0
!***********************************************************************
!
!brief DECLARATION OF PRINCIPAL TELEMAC3D VARIABLES
......@@ -472,6 +472,11 @@
!
TYPE(BIEF_OBJ), TARGET :: MAXZ,TMAXZ
!
! 3D VECTOR TO STORE HIGH WATER MARK, HIGH WATER TIME
! IN 3D MESH (RESTART PROCEDURE)
!
TYPE(BIEF_OBJ), TARGET :: MAXZTMAXZ
!
! VARIATION OF DEPTH : H(N+1)-H(N)
!
TYPE(BIEF_OBJ), TARGET :: DH
......@@ -1704,6 +1709,10 @@
!
INTEGER NCP
!
! ARRAYS SAYING IF A VARIABLE IS FOUND IN A FILE
!
INTEGER TROUVE(MAXVA3+10)
!
! ARRAY CONTAINING THE GLOBAL NUMBER OF POINTS IN THE CONTROL SECTIONS
!
INTEGER, ALLOCATABLE :: CTRLSC(:)
......@@ -1986,6 +1995,11 @@
!
LOGICAL PRESSBC
!
! IF YES, MAXIMUM VALUES LIKE MAXZ, TMXZ ONLY COMPUTED
! FROM PREVIOUS COMPUTATION FILE AND CURRENT COMPUTATION
!
LOGICAL MAX_PREV
!
!-----------------------------------------------------------------------
! (6) REALS
!-----------------------------------------------------------------------
......
......@@ -7,7 +7,7 @@
& GAIA_CAS_FILE,GAIA_DICO_FILE)
!
!***********************************************************************
! TELEMAC3D V8P5
! TELEMAC3D V9P0
!***********************************************************************
!
!brief READS THE STEERING FILE USING DAMOCLES.
......@@ -200,7 +200,7 @@
! ARRAYS NEEDED TO CALL DAMOCLES
!
INTEGER ADRESS(4,MAXKEYWORD),DIMEN(4,MAXKEYWORD)
INTEGER MOTINT(MAXKEYWORD),TROUVE(4,MAXKEYWORD)
INTEGER MOTINT(MAXKEYWORD),TROUVE_KEY(4,MAXKEYWORD)
DOUBLE PRECISION MOTREA(MAXKEYWORD)
LOGICAL MOTLOG(MAXKEYWORD)
CHARACTER(LEN=72) MOTCLE(4,MAXKEYWORD,2)
......@@ -286,7 +286,7 @@
!
CALL DAMOCLE( ADRESS , DIMEN , MAXKEYWORD , DOC , LNG , LU ,
& MOTINT , MOTREA , MOTLOG , MOTCAR , MOTCLE ,
& TROUVE , ID_DICO, ID_CAS , .FALSE. , FILE_DESC )
& TROUVE_KEY , ID_DICO, ID_CAS , .FALSE. , FILE_DESC )
!
!-----------------------------------------------------------------------
! CLOSES THE DICTIONARY AND STEERING FILES
......@@ -1067,7 +1067,7 @@
ENDIF
! SCHEME OPTION FOR ADVECTION OF VELOCITIES
! HAS PRIORITY WHEN PRESENT
IF(TROUVE(1,59).EQ.2) THEN
IF(TROUVE_KEY(1,59).EQ.2) THEN
OPTADV_VI = MOTINT(ADRESS(1,59))
! WEAK CHARACTERISTICS MEMORY ALLOCATIONS ARE TRIGGERED BY OPTCHA
IF(SCHCVI.EQ.1.AND.OPTADV_VI.EQ.2) OPTCHA=2
......@@ -1083,7 +1083,7 @@
ENDIF
! SCHEME OPTION FOR ADVECTION OF K-EPSILON
! HAS PRIORITY WHEN PRESENT
IF(TROUVE(1,63).EQ.2) THEN
IF(TROUVE_KEY(1,63).EQ.2) THEN
OPTADV_KE = MOTINT(ADRESS(1,63))
! WEAK CHARACTERISTICS MEMORY ALLOCATIONS ARE TRIGGERED BY OPTCHA
IF(SCHCKE.EQ.1.AND.OPTADV_KE.EQ.2) OPTCHA=2
......@@ -1106,7 +1106,7 @@
ENDDO
! SCHEME OPTION FOR ADVECTION OF TRACERS
! HAS PRIORITY WHEN PRESENT
IF(TROUVE(1,66).EQ.2) THEN
IF(TROUVE_KEY(1,66).EQ.2) THEN
DO ITRAC=1,MIN(NTRAC,DIMEN(1,66))
OPTADV_TR(ITRAC) = MOTINT(ADRESS(1,66)+ITRAC-1)
! WEAK CHARACTERISTICS MEMORY ALLOCATIONS TRIGGERED BY OPTCHA
......@@ -1175,7 +1175,7 @@
CST_WINDY = MOTREA(ADRESS(2, 6))
!
IF(NTRAC.GT.0) THEN
IF(TROUVE(2,8).EQ.2.AND.DIMEN(2,8).EQ.NTRAC) THEN
IF(TROUVE_KEY(2,8).EQ.2.AND.DIMEN(2,8).EQ.NTRAC) THEN
DO I=1,NTRAC
BETAC(I) = MOTREA(ADRESS(2, 8)+I-1)
ENDDO
......@@ -1187,7 +1187,7 @@
CALL PLANTE(1)
STOP
ENDIF
IF(TROUVE(2,9).EQ.2.AND.DIMEN(2,9).GE.NTRAC) THEN
IF(TROUVE_KEY(2,9).EQ.2.AND.DIMEN(2,9).GE.NTRAC) THEN
DO I=1,NTRAC
T0AC(I) = MOTREA(ADRESS(2, 9)+I-1)
ENDDO
......@@ -1205,13 +1205,13 @@
RUGOF0 = MOTREA(ADRESS(2,11))
RUGOL0 = MOTREA(ADRESS(2,12))
!
IF(KFROT.NE.0.AND.TROUVE(2,11).NE.2) THEN
IF(KFROT.NE.0.AND.TROUVE_KEY(2,11).NE.2) THEN
WRITE(LU,2717) KFROT
2717 FORMAT(1X,'THE LAW OF BOTTOM FRICTION ',1I2,' IS ASKED',/,1X,
& 'GIVE THE CORRESPONDING FRICTION COEFFICIENT')
CALL PLANTE(1)
STOP
ELSEIF(TROUVE(1,64).NE.2) THEN
ELSEIF(TROUVE_KEY(1,64).NE.2) THEN
WRITE(LU,2719)
2719 FORMAT(1X,'NO FRICTION LAW IS PRESCRIBED!')
CALL PLANTE(1)
......@@ -1241,11 +1241,11 @@
DNUVIV = MOTREA(ADRESS(2,17))
!
IF(NTRAC.GT.0) THEN
IF(TROUVE(2,18).GE.1.AND.DIMEN(2,18).EQ.NTRAC) THEN
IF(TROUVE_KEY(2,18).GE.1.AND.DIMEN(2,18).EQ.NTRAC) THEN
DO I=1,NTRAC
DNUTAH(I) = MOTREA(ADRESS(2,18)+I-1)
ENDDO
ELSEIF(TROUVE(2,18).GE.1.AND.
ELSEIF(TROUVE_KEY(2,18).GE.1.AND.
& DIMEN(2,18).LT.NTRAC.AND.DIMEN(2,18).GT.0) THEN
! READING WHAT HAS BEEN GIVEN
DO I=1,DIMEN(2,18)
......@@ -1256,11 +1256,11 @@
DNUTAH(I) = MOTREA(ADRESS(2,18)+DIMEN(2,18)-1)
ENDDO
ENDIF
IF(TROUVE(2,19).GE.1.AND.DIMEN(2,19).EQ.NTRAC) THEN
IF(TROUVE_KEY(2,19).GE.1.AND.DIMEN(2,19).EQ.NTRAC) THEN
DO I=1,NTRAC
DNUTAV(I) = MOTREA(ADRESS(2,19)+I-1)
ENDDO
ELSEIF(TROUVE(2,19).GE.1.AND.
ELSEIF(TROUVE_KEY(2,19).GE.1.AND.
& DIMEN(2,19).LT.NTRAC.AND.DIMEN(2,19).GT.0) THEN
! READING WHAT HAS BEEN GIVEN
DO I=1,DIMEN(2,19)
......@@ -1291,7 +1291,7 @@
!
!
IF(NTRAC.GT.0) THEN
IF(TROUVE(2,20).EQ.2.AND.DIMEN(2,20).GE.NTRAC) THEN
IF(TROUVE_KEY(2,20).EQ.2.AND.DIMEN(2,20).GE.NTRAC) THEN
DO I=1,NTRAC
TRAC0(I) = MOTREA(ADRESS(2,20)+I-1)
ENDDO
......@@ -1380,7 +1380,7 @@
DO I=1,NTRAC
TRAIN(I) = 0.D0
ENDDO
IF(TROUVE(2,32).EQ.2) THEN
IF(TROUVE_KEY(2,32).EQ.2) THEN
DO I=1,DIMEN(2,32)
TRAIN(I) = MOTREA(ADRESS(2,32)+I-1)
ENDDO
......@@ -1437,7 +1437,7 @@
! CHECKING THE SIZE OF KEY-WORD TREATMENT OF FLUXES AT THE BOUNDARIES
! SOME USERS THINK IT IS A SINGLE VALUE FOR ALL BOUNDARIES
!
IF(TROUVE(1,97).EQ.2.AND.
IF(TROUVE_KEY(1,97).EQ.2.AND.
& DIMEN(1,97).LT.MAX(NDEBIT,NCOTE,NVIT)) THEN
WRITE(LU,*) 'THE KEY-WORD'
WRITE(LU,*) 'TREATMENT OF FLUXES AT THE BOUNDARIES'
......@@ -1770,6 +1770,7 @@
CUMFLO = MOTLOG(ADRESS(3,25))
COMFLU = MOTLOG(ADRESS(3,26))
PRESSBC = MOTLOG(ADRESS(3,27))
MAX_PREV = MOTLOG(ADRESS(3,28))
KEEP_LONLAT = MOTLOG(ADRESS(3,31))
S3D_TASSE = MOTLOG(ADRESS(3,51))
FREE_ATMO = MOTLOG(ADRESS(3,59))
......@@ -2875,6 +2876,11 @@
IF(ITURBH.EQ.7.OR.ITURBV.EQ.7) THEN
SOREST(35)=.TRUE.
ENDIF
! HIGHEST ELEVATION AND ASSOCIATED TIME
IF(SORG2D(35).OR.SORG2D(36)) THEN
! MAXZ AND TMXZ
SOREST(36)=.TRUE.
ENDIF
! TRACERS
IF(NTRAC.GT.0) THEN
DO I=1,NTRAC
......
......@@ -5,7 +5,7 @@
&(TEXT3,TEXTP3,MNEMO,NTRAC,MAXTRA,NAMETRAC)
!
!***********************************************************************
! TELEMAC3D V8P5
! TELEMAC3D V9P0
!***********************************************************************
!
!brief GIVES THE VARIABLE NAMES FOR THE RESULTS AND GEOMETRY
......@@ -115,6 +115,7 @@
TEXT3(33) = 'O2 SAT PERC PERCENT '
TEXT3(34) = 'NUTILD SA M2/S '
TEXT3(35) = 'VORTICITY /S '
TEXT3(36) = 'MAXZTMAXZ M OR S '
!
! TEXTPR IS USED FOR READING PREVIOUS COMPUTATION FILES.
! IN GENERAL TEXTPR=TEXTE BUT YOU CAN FOLLOW UP A COMPUTATION
......@@ -156,6 +157,7 @@
TEXTP3(33) = 'O2 SAT PERC PERCENT '
TEXTP3(34) = 'NUTILD SA M2/S '
TEXTP3(35) = 'VORTICITY /S '
TEXTP3(36) = 'MAXZTMAXZ M OR S '
!
!-----------------------------------------------------------------------
!
......@@ -198,6 +200,7 @@
TEXT3(33) = 'POURCENT SAT O2 PERCENT '
TEXT3(34) = 'NUTILD SA M2/S '
TEXT3(35) = 'VORTICITE /S '
TEXT3(36) = 'MAXZTMAXZ M OU S '
!
! TEXTPR SERT A LA LECTURE DES FICHIERS DE CALCULS PRECEDENTS
! A PRIORI TEXTPR=TEXTE MAIS ON PEUT ESSAYER DE FAIRE UNE SUITE
......@@ -238,12 +241,13 @@
TEXTP3(33) = 'POURCENT SAT O2 PERCENT '
TEXTP3(34) = 'NUTILD SA M2/S '
TEXTP3(35) = 'VORTICITE /S '
TEXTP3(36) = 'MAXZTMAXZ M OU S '
!
ENDIF
!
! WHATEVER THE LANGUAGE: TRACERS
!
NVAR_T3D = 35
NVAR_T3D = 36
ADR_TRAC = NVAR_T3D + 1
NEXT = ADR_TRAC
!
......@@ -315,6 +319,7 @@
MNEMO(33) = 'O2SAT '
MNEMO(34) = 'NUTILD '
MNEMO(35) = 'ROTAT '
MNEMO(36) = 'MAXZTMXZ'
!
! MNEMO FOR TRACERS IS DONE ABOVE
!
......
......@@ -4,7 +4,7 @@
!
!
!***********************************************************************
! TELEMAC3D V8P5
! TELEMAC3D V9P0
!***********************************************************************
!
!brief ALLOCATES TELEMAC3D STRUCTURES.
......@@ -807,6 +807,11 @@
ELSE
CALL BIEF_ALLVEC(1,TMAXZ,'TMAXZ ',0 ,1,0 ,MESH2D)
ENDIF
IF(SORG2D(35).OR.SORG2D(36)) THEN
CALL BIEF_ALLVEC(1, MAXZTMAXZ, 'MXZTMZ', IELM3, 1, 1, MESH3D)
ELSE
CALL BIEF_ALLVEC(1, MAXZTMAXZ, 'MXZTMZ', 0 , 1, 0, MESH3D)
ENDIF
!
!-----------------------------------------------------------------------
!
......@@ -1828,8 +1833,10 @@
CALL ADDBLO(VARSO3,NU)
! 35 : ROTAT (K-OMEGA)
CALL ADDBLO(VARSO3,ROTAT)
! 36 : MAXZ AND TMAXZ
CALL ADDBLO(VARSO3,MAXZTMAXZ)
!
! THE FOLLOWING ADDRESS FOR TRACERS IS ADR_TRAC = 35 (+1)
! THE FOLLOWING ADDRESS FOR TRACERS IS ADR_TRAC = 36 (+1)
! THIS NUMBER IS HARDCODED IN NOMVAR_TELEMAC3D
!
IF(NVAR_T3D.NE.VARSO3%N) THEN
......
......@@ -4,7 +4,7 @@
!
!
!***********************************************************************
! TELEMAC3D V8P5
! TELEMAC3D V9P0
!***********************************************************************
!
!brief PREPARES THE VARIABLES WHICH WILL BE WRITTEN TO
......@@ -103,8 +103,10 @@
!
IF(SORG2D(35)) THEN
IF(.NOT.DEJA) THEN
CALL OS('X=Y ',X=MAXZ ,Y=ZF)
CALL OS('X=C ',X=TMAXZ,C=AT)
IF(DEBU.OR..NOT.MAX_PREV.OR.TROUVE(36).NE.1) THEN
CALL OS('X=Y ',X=MAXZ ,Y=ZF)
CALL OS('X=C ',X=TMAXZ,C=AT)
ENDIF
DEJA=.TRUE.
ELSE
DO I=1,NPOIN2
......@@ -124,8 +126,10 @@
!
! CASE WHERE OUTINI=.TRUE. : PRIORITY ON PTINIG, VALUES FOR LT=0
! OTHERWISE THEY WOULD NOT BE INITIALISED
IF(SORG2D(35)) CALL OS('X=Y ',X=MAXZ ,Y=ZF)
IF(SORG2D(36)) CALL OS('X=C ',X=TMAXZ,C=AT)
IF(DEBU.OR..NOT.MAX_PREV.OR.TROUVE(36).NE.1) THEN
IF(SORG2D(35)) CALL OS('X=Y ',X=MAXZ ,Y=ZF)
IF(SORG2D(36)) CALL OS('X=C ',X=TMAXZ,C=AT)
ENDIF
!
ENDIF
!
......@@ -413,6 +417,22 @@
ENDIF
!
!=======================================================================
! FOR RESTARTS, STORAGE OF MAXZ AND TMAXZ IN A 3D ARRAY
!=======================================================================
!
IF(LEO.AND.(SORG3D(36).OR.SOREST(36))) THEN
DO I=1,NPOIN2
MAXZTMAXZ%R(I ) = MAXZ%R(I)
MAXZTMAXZ%R(I+NPOIN2) = TMAXZ%R(I)
ENDDO
IF(NPLAN.GT.2) THEN
DO I=2*NPOIN2+1,NPLAN*NPOIN2
MAXZTMAXZ%R(I) = 0.D0
ENDDO
ENDIF
ENDIF
!
!=======================================================================
!
! USER FUNCTION
CALL USER_PRERES_TELEMAC3D(LEO)
......
......@@ -25,7 +25,7 @@
/
/ INTEGER INDEX USED: 1-40,42-43,45-77,79-82,84-87,89-92,95-101,103-127 OUT OF 119
/ REAL INDEX USED: 1-6,8-42,51-107 OUT OF 98
/ LOGICAL INDEX USED: 2-2,5-18,21-27,31-34,51-51,58-61,68-72,76-76,81-84,86-87,90-93 OUT OF 47
/ 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
/
/-------------------------------------------------------------------------------
......@@ -2047,6 +2047,29 @@ Default = -1 means the \telkey{RESTART FILE} is only written at the last
time step and/or periodically at the period
\telkey{RESTART FILE PRINTOUT PERIOD}.'
/
NOM = 'UTILISE LES VALEURS MAXIMUM DU FICHIER DU CALCUL PRECEDENT'
NOM1 = 'USE MAXIMUM VALUES FROM PREVIOUS COMPUTATION FILE'
TYPE = LOGICAL
INDEX = 28
TAILLE = 1
DEFAUT = OUI
DEFAUT1 = YES
MNEMO = 'MAX\_PREV'
RUBRIQUE =
'ENVIRONNEMENT DE CALCUL';'REPRISE DE CALCUL';''
RUBRIQUE1 =
'COMPUTATION ENVIRONMENT';'RESTART';''
NIVEAU = 2
AIDE =
'Si OUI, calcule les valeurs maximum pour les variables MAXZ, TMXZ
a partir du \telkey{FICHIER DU CALCUL PRECEDENT} et du calcul en cours.
Si NON, les variables sont seulement calculees a partir du calcul en
cours.'
AIDE1 =
'If YES, computes maximum values for variables MAXZ, TMXZ
from \telkey{PREVIOUS COMPUTATION FILE} and current computation.
If NO, the variables are only computed from current computation.'
/
NOM = 'FICHIER POUR SUITE 2D'
NOM1 = 'FILE FOR 2D CONTINUATION'
TYPE = STRING
......@@ -8007,14 +8030,19 @@ AIDE1 =
active tracers. The sediment is considered active with its own
law by default. The possible choices are:
\begin{itemize}
\item 0: nothing (and sediment if present),
\item 0: no variation of density with tracers such as temperature or
salinity, but variation of density with sediment if present,
\item 1: function of the temperature (and sediment if present),
\item 2: function of the salinity (and sediment if present),
\item 3: function of the temperature and salinity
(and sediment if present),
\item 4: user-defined BETA coefficients (and effect of the
sediment with its own behaviour if present),
\item 5: the sediment and other tracers are forced to be passive,
\item 5: no variation of density. No tracer is considered to compute
density (in particular temperature, salinity or sediment).
Density is then constant, equal to the value given by
\telkey{AVERAGE WATER DENSITY} (default = 1,025~kg/m$^3$).
The sediment and other tracers are forced to be passive,
\item 6: Jackett et al. 2006.
\end{itemize}'
/
......
......@@ -43,7 +43,6 @@
INTEGER DATE(3),TIME(3)
INTEGER :: ISOUSI
LOGICAL :: TRAC
INTEGER TROUVE(MAXVAR+10)
INTEGER IBID,I,II,K,NFRLIQ0
CHARACTER(LEN=24), PARAMETER :: CODE1='TELEMAC3D '
INTEGER ITRAC,IERR
......@@ -423,6 +422,14 @@
ALIRE3D(35)=1
ENDIF
!
! FOR READING MAXZ,TMXZ
!
IF(MAX_PREV) THEN
IF(SORG2D(35).OR.SORG2D(36)) THEN
ALIRE3D(36) = 1
ENDIF
ENDIF
!
! DO NOT READ DYNAMIC PRESSURE IF NOT NECESSARY
!
IF(.NOT.NONHYD) ALIRE3D(12)=0
......@@ -476,6 +483,14 @@
HN%R(I)=H%R(I)
ENDDO
ENDIF
!
IF(TROUVE(36).EQ.1) THEN
! RETRIEVING MAXZ AND TMAXZ
DO I=1,NPOIN2
MAXZ%R(I) = MAXZTMAXZ%R(I)
TMAXZ%R(I) = MAXZTMAXZ%R(I+NPOIN2)
ENDDO
ENDIF
!
ENDIF
!
......@@ -1042,6 +1057,7 @@
IF(SORG3D(26)) CALL OS('X=0 ',X=PRIVE%ADR(2)%P)
IF(SORG3D(27)) CALL OS('X=0 ',X=PRIVE%ADR(3)%P)
IF(SORG3D(28)) CALL OS('X=0 ',X=PRIVE%ADR(4)%P)
IF(SORG3D(36)) CALL OS('X=0 ',X=MAXZTMAXZ)
!
! TIME SERIES FILES
!
......@@ -1078,6 +1094,7 @@
CALL OS('X=0 ',X=WCONV)
CALL OS('X=0 ',X=WD)
ENDIF
CALL OS('X=0 ',X=MAXZTMAXZ)
IF(DEBUG.GT.0) WRITE(LU,*) 'APPEL DE BIEF_DESIMP RESTART MODE'
CALL BIEF_DESIMP(T3D_FILES(T3DRST)%FMT,VARSO3,NPOIN3,
& T3D_FILES(T3DRST)%LU,AT,LT,
......
......@@ -798,18 +798,18 @@
CALL OS( 'X=X+CY ' , X=UCONVC, Y=U , C= TETAU )
CALL OS( 'X=CY ' , X=VCONVC, Y=VN , C=1.D0-TETAU )
CALL OS( 'X=X+CY ' , X=VCONVC, Y=V , C= TETAU )
ENDIF
!
! MERCATOR PROJECTION, ADVECTING FIELD MODIFIED FOR CHARACTERISTICS
!
IF(SPHERI) THEN
DO IPLAN=1,NPLAN
DO I=1,NPOIN2
I3D=(IPLAN-1)*NPOIN2+I
UCONVC%R(I3D)=UCONVC%R(I3D)/MESH3D%COSLAT%R(I)
VCONVC%R(I3D)=VCONVC%R(I3D)/MESH3D%COSLAT%R(I)
IF(SPHERI) THEN
DO IPLAN=1,NPLAN
DO I=1,NPOIN2
I3D=(IPLAN-1)*NPOIN2+I
UCONVC%R(I3D)=UCONVC%R(I3D)/MESH3D%COSLAT%R(I)
VCONVC%R(I3D)=VCONVC%R(I3D)/MESH3D%COSLAT%R(I)
ENDDO
ENDDO
ENDDO
ENDIF
ENDIF
!
!-----------------------------------------------------------------------
......
......@@ -395,8 +395,11 @@
IF(SPHERI) THEN
!
IF(PRESENT(MESH2D)) THEN
CALL LONGITU(MESH2D%XEL%R,MESH%COSLAT%R,MESH2D%IKLE%I,
& NELMAX2,NELEM2)
! CALL LONGITU(MESH2D%XEL%R,MESH%COSLAT%R,MESH2D%IKLE%I,
! & NELMAX2,NELEM2)
! FIX TO REMOVE THE DOUBLE CALL TO LONGITU ON THE 2D MESH
! IT IS MANDATORY THAT THE 1ST CALL TO INBIEF IS REALLY DONE
! PREVIOUSLY FOR THE 2D MESH
NELCOU = (NPLAN-1)*NELMAX2
DO IPLAN=1,NPLAN-1
DO IELEM=1,NELEM2
......