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 (4)
......@@ -759,6 +759,7 @@ files: declarations_gaia.f
gaia_suspension_erode.f
predes_gaia.f
gaia_write_results.f
predes_restart_gaia.f
gaia_step.F
eqcae_bc_gaia.f
gaia_suspension_conv.f
......
......@@ -929,6 +929,26 @@
!> LISTING PRINTOUT PERIOD
INTEGER LISPR
!
! COUNTER FOR RESTART OUTPUTS
!
INTEGER, TARGET :: COMPRST
!
!> RESTART FILE
!
INTEGER GAIRST
!
!> RECORD NUMBER FOR RESTART
!
INTEGER, TARGET :: START_RECORD
!
!> PRINTOUT PERIOD FOR RESTART FILE
!
INTEGER, TARGET :: RSTPRD
!
!> RECORD NUMBER IN RESTART FILE
!
INTEGER, TARGET :: RESTART_RECORD
!
!-----------------------------------------------------------------------
!
! 5) LOGICAL VALUES
......@@ -951,6 +971,11 @@
!
LOGICAL :: SORIMP(MAXVAR)
!
!> ARRAYS SAYING IF A VARIABLE IS TO BE PRINTED IN RESTART FILE
! OR LISTING
!
LOGICAL SOREST(MAXVAR),SORIS2(MAXVAR)
!
!> Include masking
!
LOGICAL :: MSK
......@@ -1097,6 +1122,10 @@
!
LOGICAL :: OUTPUT_MOFAC
!
!> RESTART MODE (TO GENERATE A RESTART FILE)
!
LOGICAL RESTART_MODE_GAI
!
!-----------------------------------------------------------------------
!
! 6) REALS
......@@ -1778,13 +1807,13 @@
!! 0 : DISCARD
!! 1 : READ (SEE SUBROUTINE NOMVAR)
!!
!! BED EVOLUTION
INTEGER :: ALIRE(MAXVAR) =
& (/ (0,KKK=1,9),(0,KKK=10,MAXVAR) /)
!! BED EVOLUTION B
INTEGER :: ALIRE(MAXVAR) = (/ 0,0,0,0,1,(0,KKK=6,MAXVAR) /)
!
! WAVES ONLY
INTEGER :: ALIRH(MAXVAR) =
& (/ (0,KKK=1,10),(1,KKK=11,13),(0,KKK=14,MAXVAR) /)
& (/ (0,KKK=1,10),(1,KKK=11,13),(0,KKK=14,20),1,
& (0,KKK=22,MAXVAR) /)
!
!> For validation, each variable in the file is compared
!
......
......@@ -24,10 +24,10 @@
/---SYSTEME-TELEMAC--------------------------------------GAIA-----------
/
/ INDICES IN USE SO FAR:
/ INTEGER INDEX USED: 1-3,7-9,11-12,15-16,20-20,23-30,33-34,39-47,51-52,54-54,58-67,251 OUT OF 44
/ INTEGER INDEX USED: 1-3,7-9,11-12,15-20,23-30,33-34,39-47,51-52,54-54,58-67,251 OUT OF 47
/ REAL INDEX USED: 3-13,16-16,21-22,24-29,32-38,40-45,51-54,258-262 OUT OF 42
/ LOGICAL INDEX USED: 1-11,14-16,18-18,22-22,25-27,29-32,34-34,59-59,61 OUT OF 26
/ STRING INDEX USED: 1-3,6-9,11-13,16-16,22-22,27-27,30-31,33-42,53-53,55-55,59-60,64-64,69-70,100 OUT OF 33
/ LOGICAL INDEX USED: 1-11,14-18,22-22,25-27,29-32,34-34,59-59,61 OUT OF 27
/ STRING INDEX USED: 1-9,11-13,16-16,22-22,27-27,30-31,33-42,53-53,55-55,59-60,64-64,69-70,100 OUT OF 35
/
/-----------------------------------------------------------------------
////////////////////////////////////////////////////////////////////////
......@@ -1359,6 +1359,9 @@ earlier sedimentological computation which was made
on the same mesh. The last recorded time step will provide
the initial conditions for the new computation.'
/
////////////////////////////////////////////////////////////////////////
///// 8.1-RESTART
////////////////////////////////////////////////////////////////////////
NOM = 'SUITE DE CALCUL'
NOM1 = 'COMPUTATION CONTINUED'
TYPE = LOGICAL
......@@ -1368,9 +1371,9 @@ DEFAUT = NON
DEFAUT1 = NO
MNEMO = 'DEBU'
RUBRIQUE =
'CONDITIONS INITIALES';'';''
'CONDITIONS INITIALES';'REPRISE DE CALCUL';''
RUBRIQUE1 =
'INITIAL CONDITIONS';'';''
'INITIAL CONDITIONS';'RESTART';''
NIVEAU = 1
AIDE =
'Determine si le calcul en cours est independant de tout autre
......@@ -1418,6 +1421,180 @@ AIDE =
AIDE1 =
'Time in seconds after which bed updates are taken into account'
/
NOM = 'ENREGISTREMENT POUR SUITE DE CALCUL'
NOM1 = 'RECORD NUMBER FOR RESTART'
TYPE = INTEGER
INDEX = 17
TAILLE = 1
DEFAUT = -1
DEFAUT1 = -1
MNEMO = 'START\_RECORD'
RUBRIQUE =
'CONDITIONS INITIALES';'REPRISE DE CALCUL';''
RUBRIQUE1 =
'INITIAL CONDITIONS';'RESTART';''
NIVEAU = 0
AIDE =
'En cas de suite de calcul, numero de l enregistrement
de depart dans le \telkey{FICHIER PRECEDENT SEDIMENTOLOGIQUE}.
-1 signifie que l on prend le dernier enregistrement.'
AIDE1 =
'In case of \telkey{COMPUTATION CONTINUED} = YES, record number
to start from in the
\telkey{PREVIOUS SEDIMENTOLOGICAL COMPUTATION FILE}.
-1 means the last record is taken.'
/
NOM = 'MODE SUITE'
NOM1 = 'RESTART MODE'
TYPE = LOGICAL
INDEX = 17
TAILLE = 1
DEFAUT = NON
DEFAUT1 = NO
MNEMO = 'RESTART\_MODE\_GAI'
RUBRIQUE =
'CONDITIONS INITIALES';'REPRISE DE CALCUL';''
RUBRIQUE1 =
'INITIAL CONDITIONS';'RESTART';''
NIVEAU = 1
AIDE =
'Declenche le remplissage du
\telkey{FICHIER POUR SUITE}, qui permet une suite de calcul
parfaite, contrairement au \telkey{FICHIER DES RESULTATS}.'
AIDE1 =
'Triggers the filling of the \telkey{RESTART FILE},
which ensures a perfect restart of a computation,
unlike using the \telkey{RESULTS FILE}.'
/
NOM = 'FICHIER POUR SUITE'
NOM1 = 'RESTART FILE'
TYPE = STRING
INDEX = 4
TAILLE = 1
SUBMIT = 'GAIRST-WRITE;GAIRST;FACUL;BIN;ECR;SELAFIN'
DEFAUT = ''
DEFAUT1 = ''
MNEMO = 'GAI\_FILES(GAIRST)\%NAME'
RUBRIQUE =
'CONDITIONS INITIALES';'REPRISE DE CALCUL';''
RUBRIQUE1 =
'INITIAL CONDITIONS';'RESTART';''
NIVEAU = 1
AIDE =
'Nom du fichier dans lequel seront ecrits les resultats du
calcul pour obtenir une suite de calcul parfaite.
C est donc un fichier de sortie pour le calcul en cours,
qui servira de fichier d entree lors de la suite de calcul que l on
souhaite parfaite (le mot-cle \telkey{FICHIER DU CALCUL PRECEDENT}
est alors utilise).
Le \telkey{FORMAT DU FICHIER POUR SUITE} et le
\telkey{FORMAT DU FICHIER DU CALCUL PRECEDENT} doivent alors etre mis a
''SERAFIND'' ou ''MED''.'
AIDE1 =
'Name of the file into which the computation results shall
be written in order to get a perfect continued computation.
It is then an output file for the current computation,
which will be used as an input file when a continued computation
is expected to be perfect (the keyword
\telkey{PREVIOUS COMPUTATION FILE} is then used).
The \telkey{RESTART FILE FORMAT} and the
\telkey{PREVIOUS COMPUTATION FILE FORMAT} have to be set with
''SERAFIND'' or ''MED''.'
/
NOM = 'FORMAT DU FICHIER POUR SUITE'
NOM1 = 'RESTART FILE FORMAT'
TYPE = STRING
INDEX = 5
TAILLE = 1
DEFAUT = 'SERAFIND'
DEFAUT1 = 'SERAFIND'
MNEMO = 'GAI\_FILES(GAIRST)\%FMT'
CHOIX =
'SERAFIN';
'SERAFIND';
'MED'
CHOIX1 =
'SERAFIN';
'SERAFIND';
'MED'
RUBRIQUE =
'CONDITIONS INITIALES';'REPRISE DE CALCUL';''
RUBRIQUE1 =
'INITIAL CONDITIONS';'RESTART';''
NIVEAU = 2
AIDE =
'Format du \telkey{FICHIER POUR SUITE}.
Les valeurs possibles sont :
\begin{itemize}
\item SERAFIN : format standard simple precision pour \tel ;
\item SERAFIND: format standard double precision pour \tel ;
\item MED : format MED double precision base sur HDF5.
\end{itemize}
Seul les formats double precision assurent une suite parfaite.'
AIDE1 =
'Format of the \telkey{RESTART FILE}.
Possible choices are:
\begin{itemize}
\item SERAFIN : classical single precision format in \tel,
\item SERAFIND: classical double precision format in \tel,
\item MED : MED double precision format based on HDF5.
\end{itemize}
Only double precision formats ensure a perfect restart.'
/
NOM = 'PERIODE POUR LES SORTIES DU FICHIER POUR SUITE'
NOM1 = 'RESTART FILE PRINTOUT PERIOD'
TYPE = INTEGER
INDEX = 18
TAILLE = 1
DEFAUT = 0
DEFAUT1 = 0
MNEMO = 'RSTPRD'
RUBRIQUE =
'CONDITIONS INITIALES';'REPRISE DE CALCUL';''
RUBRIQUE1 =
'INITIAL CONDITIONS';'RESTART';''
NIVEAU = 2
AIDE =
'Determine la periode en nombre de pas de temps d''impression des
variables a sauver pour une reprise parfaite
dans le \telkey{FICHIER POUR SUITE}.
La valeur par defaut 0 signifie que le \telkey{FICHIER POUR SUITE}
est seulement ecrit au dernier pas de temps ou au
\telkey{NUMERO DE L''ENREGISTREMENT DANS LE FICHIER POUR SUITE}.'
AIDE1 =
'Determines, in number of time steps, the printout period for the
variables to be saved for a perfect restart in the
\telkey{RESTART FILE}.
Default = 0 means the \telkey{RESTART FILE} is only written at the last
time step or at the \telkey{RECORD NUMBER IN RESTART FILE}.'
/
NOM = 'NUMERO DE L''ENREGISTREMENT DANS LE FICHIER POUR SUITE'
NOM1 = 'RECORD NUMBER IN RESTART FILE'
TYPE = INTEGER
INDEX = 19
TAILLE = 1
DEFAUT = -1
DEFAUT1 = -1
MNEMO = 'RESTART\_RECORD'
RUBRIQUE =
'CONDITIONS INITIALES';'REPRISE DE CALCUL';''
RUBRIQUE1 =
'INITIAL CONDITIONS';'RESTART';''
NIVEAU = 2
AIDE =
'Determine le numero de pas de temps d''impression des
variables a sauver pour une reprise parfaite
dans le \telkey{FICHIER POUR SUITE}.
La valeur par defaut -1 signifie que le \telkey{FICHIER POUR SUITE}
est seulement ecrit au dernier pas de temps et/ou periodiquement a la
periode \telkey{PERIODE POUR LES SORTIES DU FICHIER POUR SUITE}.'
AIDE1 =
'Determines the number of time step when printing the variables to be
saved for a perfect restart in the \telkey{RESTART FILE}.
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}.'
/
////////////////////////////////////////////////////////////////////////
/// 9-INPUT-OUTPUT, GRAPHICS AND LISTING
......
......@@ -114,34 +114,38 @@
! READS REFERENCE LEVEL FOR NESTOR
IF(NESTOR) ALIRE(22)=1 ! Nestor
! READS RATIO_SAND FROM THE PREVIOUS COMPUTATION FILE
DO I=1,NSAND*NOMBLAY
ALIRE(NVAR_RATIOS+I)=1
ENDDO
! READS MASS_S FROM THE PREVIOUS COMPUTATION FILE
IF(NSAND.GT.0) THEN
DO I=1,NSAND*NOMBLAY
ALIRE(NVAR_RATIOS+I)=1
ALIRE(NVAR_MASS_S+I)=1
ENDDO
ENDIF
! READS RATIO_MUD FROM THE PREVIOUS COMPUTATION FILE
DO I=1,NMUD*NOMBLAY
ALIRE(NVAR_RATIOM+I)=1
ENDDO
! READS MASS_M FROM THE PREVIOUS COMPUTATION FILE
IF(NMUD.GT.0) THEN
DO I=1,NMUD*NOMBLAY
ALIRE(NVAR_RATIOM+I)=1
ALIRE(NVAR_MASS_M+I)=1
ENDDO
ENDIF
! READS THE LAYER THICKNESSES
DO I=1,NOMBLAY
ALIRE(NVAR_LAYTHI+I)=1
ENDDO
! READS MASS_S FROM THE PREVIOUS COMPUTATION FILE
DO I=1,NSAND*NOMBLAY
ALIRE(NVAR_MASS_S+I)=1
ENDDO
! READS MASS_M FROM THE PREVIOUS COMPUTATION FILE
DO I=1,NMUD*NOMBLAY
ALIRE(NVAR_MASS_M+I)=1
ENDDO
! READS LAYER CONCENTRATION, CRITICAL SHEAR STRESS,
! PARTHENIADES CONSTANT EROSION RATE, MASS TRANSFER RATE FROM
! THE PREVIOUS COMPUTATION FILE
DO I=1,NOMBLAY
ALIRE(NVAR_LAYCONC+I)=1
ALIRE(NVAR_TOCEMUD+I)=1
ALIRE(NVAR_PARTHE+I)=1
ALIRE(NVAR_MTRANS+I)=1
ENDDO
IF(NMUD.GT.0) THEN
DO I=1,NOMBLAY
ALIRE(NVAR_LAYCONC+I)=1
ALIRE(NVAR_TOCEMUD+I)=1
ALIRE(NVAR_PARTHE+I)=1
IF(BED_MODEL.EQ.2) THEN
ALIRE(NVAR_MTRANS+I)=1
ENDIF
ENDDO
ENDIF
! DIFFERENTIATED VARIABLES
! FOR READING GRADIENTS IN SELAFIN FILES
!
......@@ -310,6 +314,32 @@
& GEOFORMAT=GAI_FILES(GAIGEO)%FMT)
IF(DEBUG.GT.0) WRITE(LU,*) 'END_WRITE_MESH'
!
! OUTPUT FOR RESTART
!
IF(RESTART_MODE_GAI.AND.GAI_FILES(GAIRST)%NAME(1:1).NE.' ') THEN
IF(DEBUG.GT.0) WRITE(LU,*) 'CALLING WRITE_HEADER EN RESTART'
CALL WRITE_HEADER(GAI_FILES(GAIRST)%FMT, ! RESULT FILE FORMAT
& GAI_FILES(GAIRST)%LU, ! RESULT FILE LU
& TITCA, ! TITLE
& MAXVAR, ! MAX NUMBER OF OUTPUT VARIABLES
& TEXTE, ! NAMES OF OUTPUT VARIABLES
& SOREST) ! OUTPUT OR NOT
IF(DEBUG.GT.0) WRITE(LU,*) 'BACK FROM WRITE_HEADER EN RESTART'
!
IF(DEBUG.GT.0) WRITE(LU,*) 'CALLING WRITE_MESH EN RESTART'
CALL WRITE_MESH(GAI_FILES(GAIRST)%FMT, ! RESULT FILE FORMAT
& GAI_FILES(GAIRST)%LU, ! RESULT FILE LU
& MESH,
& 1, ! NUMBER OF PLANES /NA/
& MARDAT, ! START DATE
& MARTIM, ! START HOUR
& T1,T2, ! WORKING ARRAYS
& NCSIZE.GT.1, NPTIR,
& NGEO=GAI_FILES(GAIGEO)%LU,
& GEOFORMAT=GAI_FILES(GAIGEO)%FMT)
IF(DEBUG.GT.0) WRITE(LU,*) 'BACK FROM WRITE_MESH EN RESTART'
ENDIF
!
! FILLS IN MASKEL BY DEFAULT
!
IF(MSK) CALL OS ('X=C ', X=MASKEL, C=1.D0)
......@@ -558,18 +588,20 @@
ENDDO
ENDIF
!
IF(HIRANO) THEN
IF(DEBUG.GT.0) WRITE(LU,*)'BED1_UPDATE 1'
CALL BED1_UPDATE(ZR,ZF,VOLU2D)
IF(DEBUG.GT.0) WRITE(LU,*)'END BED1_UPDATE 1'
IF(HIRANO) THEN
IF(DEBUG.GT.0) WRITE(LU,*)'BED1_UPDATE 1'
CALL BED1_UPDATE(ZR,ZF,VOLU2D)
IF(DEBUG.GT.0) WRITE(LU,*)'END BED1_UPDATE 1'
IF(.NOT.DEBU) THEN
IF(DEBUG.GT.0) WRITE(LU,*)'BED1_UPDATE_ACTIVELAYER_HIRANO'
CALL BED1_UPDATE_ACTIVELAYER_HIRANO
CALL BED1_UPDATE_ACTIVELAYER_HIRANO
IF(DEBUG.GT.0) THEN
WRITE(LU,*)'END BED1_UPDATE_ACTIVELAYER_HIRANO'
ENDIF
IF(DEBUG.GT.0) WRITE(LU,*)'BED1_UPDATE 2'
ENDIF
IF(DEBUG.GT.0) WRITE(LU,*)'BED1_UPDATE 2'
CALL BED1_UPDATE(ZR,ZF,VOLU2D)
IF(DEBUG.GT.0) WRITE(LU,*)'END BED1_UPDATE 2'
IF(DEBUG.GT.0) WRITE(LU,*)'END BED1_UPDATE 2'
ENDIF
!
! INITIALIZATION OF CVSM MODEL
IF(VSMTYPE.EQ.1) THEN
......@@ -733,6 +765,21 @@
& ILEO=YAGOUT)
IF(DEBUG.GT.0) WRITE(LU,*) 'END BIEF_DESIMP'
!
! INITIAL CONDITIONS OF GAI OUTPUT FOR RESTART (NOT USED BY NOW MANDATORY)
!
IF(RESTART_MODE_GAI.AND.GAI_FILES(GAIRST)%NAME(1:1).NE.' ') THEN
! PREPARES AND COMPUTES VARIABLES FOR RESTART FILE
CALL PREDES_RESTART_GAIA(0,AT0,.TRUE.,CODE)
IF(DEBUG.GT.0) WRITE(LU,*) 'CALLING BIEF_DESIMP RESTART MODE'
c$$$ COMPRST = 0
CALL BIEF_DESIMP(GAI_FILES(GAIRST)%FMT,VARSOR,NPOIN,
& GAI_FILES(GAIRST)%LU,AT0,0,
c$$$ & 1,NIT,SOREST,SORIS2,MAXVAR,TEXTE,0,0,
c$$$ & IIMP=.FALSE., COMPGRAPH=COMPRST)
& 1,NIT,SOREST,SORIS2,MAXVAR,TEXTE,0,0)
IF(DEBUG.GT.0) WRITE(LU,*) 'BACK FROM BIEF_DESIMP RESTART'
ENDIF
!
! COUPLING
!
......
......@@ -249,6 +249,47 @@
& (CODE,GRAFCOUNT,GGRCOMP,COMP,LISTCOUNT,YAGOUT,T_RES)
!
! SENDS THE NEW ZF TO TELEMAC-2D OR 3D
!
! OUTPUT FOR RESTART
!
IF(RESTART_MODE_GAI.AND.GAI_FILES(GAIRST)%NAME(1:1).NE.' ') THEN
! PREPARES AND COMPUTES VARIABLES FOR RESTART FILE
CALL PREDES_RESTART_GAIA(LT,T_RES,YAGOUT,CODE)
IF(RSTPRD.NE.0) THEN
IF(MOD(LT,RSTPRD).EQ.0) THEN
IF(DEBUG.GT.0) WRITE(LU,*) 'CALLING BIEF_DESIMP RESTART'
c$$$ COMPRST = COMPRST + 1
CALL BIEF_DESIMP(GAI_FILES(GAIRST)%FMT,VARSOR,NPOIN,
& GAI_FILES(GAIRST)%LU,T_RES,LT,1,RSTPRD,
c$$$ & SOREST,SORIS2,MAXVAR,TEXTE,0,0,
c$$$ & IIMP=.FALSE.,COMPGRAPH=COMPRST)
& SOREST,SORIS2,MAXVAR,TEXTE,0,0)
IF(DEBUG.GT.0) WRITE(LU,*) 'BACK FROM BIEF_DESIMP RESTART'
ELSEIF(RESTART_RECORD.EQ.-1.AND.LT.EQ.TELNIT
& .OR.RESTART_RECORD.NE.-1.AND.LT.EQ.RESTART_RECORD) THEN
c$$$ COMPRST = COMPRST + 1
IF(DEBUG.GT.0) WRITE(LU,*) 'CALLING BIEF_DESIMP RESTART'
CALL BIEF_DESIMP(GAI_FILES(GAIRST)%FMT,VARSOR,NPOIN,
& GAI_FILES(GAIRST)%LU,T_RES,LT,1,LT,
c$$$ & SOREST,SORIS2,MAXVAR,TEXTE,0,0,
c$$$ & IIMP=.FALSE.,COMPGRAPH=COMPRST)
& SOREST,SORIS2,MAXVAR,TEXTE,0,0)
IF(DEBUG.GT.0) WRITE(LU,*) 'BACK FROM BIEF_DESIMP RESTART'
ENDIF
ELSE
IF(RESTART_RECORD.EQ.-1.AND.LT.EQ.TELNIT
& .OR.RESTART_RECORD.NE.-1.AND.LT.EQ.RESTART_RECORD) THEN
c$$$ COMPRST = COMPRST + 1
IF(DEBUG.GT.0) WRITE(LU,*) 'CALLING BIEF_DESIMP RESTART'
CALL BIEF_DESIMP(GAI_FILES(GAIRST)%FMT,VARSOR,NPOIN,
& GAI_FILES(GAIRST)%LU,T_RES,LT,1,LT,
c$$$ & SOREST,SORIS2,MAXVAR,TEXTE,0,0,
c$$$ & IIMP=.FALSE.,COMPGRAPH=COMPRST)
& SOREST,SORIS2,MAXVAR,TEXTE,0,0)
IF(DEBUG.GT.0) WRITE(LU,*) 'BACK FROM BIEF_DESIMP RESTART'
ENDIF
ENDIF
ENDIF
!
CALL OV ('X=Y ', X=ZF_TEL%R, Y=ZF%R, DIM1=NPOIN)
!
......
......@@ -404,6 +404,16 @@
LOGICAL,INTENT(IN) :: YAGOUT
END SUBROUTINE
END INTERFACE
!
INTERFACE
SUBROUTINE PREDES_RESTART_GAIA(LLT,AAT,YAGOUT,CODE)
IMPLICIT NONE
INTEGER, INTENT(IN) :: LLT
DOUBLE PRECISION, INTENT(IN) :: AAT
CHARACTER(LEN=24), INTENT(IN) :: CODE
LOGICAL,INTENT(IN) :: YAGOUT
END SUBROUTINE
END INTERFACE
!
INTERFACE
SUBROUTINE READ_FIC_CONC_GAIA(CGL_GAIA, WHAT, AT, NFIC, LISTIN,
......
......@@ -165,6 +165,8 @@
! ===
ELSEIF(GAI_FILES(I)%TELNAME.EQ.'VSPRES') THEN
VSPRES=I
ELSEIF(GAI_FILES(I)%TELNAME.EQ.'GAIRST') THEN
GAIRST=I
!
ENDIF
ENDDO
......@@ -227,7 +229,11 @@
MARTIM(3) = MOTINT( ADRESS(1, 16) + 2 )
!
SLIDE = MOTINT( ADRESS(1, 20) )
!
START_RECORD = MOTINT( ADRESS(1, 17) )
RSTPRD = MOTINT( ADRESS(1, 18) )
RESTART_RECORD = MOTINT( ADRESS(1, 19) )
!
NPRIV = MOTINT( ADRESS(1, 23) )
NADVAR = MOTINT( ADRESS(1,30) )
! NUMBER OF DIRECTIONS FOR DIFFERENTIATED VARIABLES
......@@ -660,6 +666,8 @@
!##< RK @ BAW
HINDER= MOTLOG( ADRESS(3,9))
FLOC = MOTLOG( ADRESS(3,34))
!
RESTART_MODE_GAI = MOTLOG( ADRESS(3,17))
!
! ################################### !
! CHARACTER STRING KEYWORDS !
......@@ -668,6 +676,9 @@
TITCA = MOTCAR( ADRESS(4, 1) )(1:72)
SORTIS = MOTCAR( ADRESS(4, 2) )(1:72)
VARIM = MOTCAR( ADRESS(4, 3) )(1:72)
GAI_FILES(GAIRST)%NAME=MOTCAR( ADRESS(4,4) )
GAI_FILES(GAIRST)%FMT = MOTCAR( ADRESS(4,5) )(1:8)
CALL MAJUS(GAI_FILES(GAIRST)%FMT)
GAI_FILES(GAIGEO)%NAME=MOTCAR( ADRESS(4,6) )
GAI_FILES(GAICLI)%NAME=MOTCAR( ADRESS(4,9) )
GAI_FILES(GAIPRE)%NAME=MOTCAR( ADRESS(4,11) )
......@@ -878,6 +889,15 @@
ENDDO
!
!-----------------------------------------------------------------------
!
! FOR RESTART FILE
!
DO I=1,MAXVAR
SORIS2(I)=.FALSE.
SOREST(I)=.FALSE.
ENDDO
!
!-----------------------------------------------------------------------
! DISABLE OUTPUT OF BEDLOAD SEDIMENT FLOWRATES QS_C, QSCX, QSCY
! IN CASE THERE IS NO BEDLOAD
! THE SEDIMENT FLOWRATES SPECIFIC TO SUSPENSION ARE NOT IN THE
......@@ -893,19 +913,57 @@
ENDIF
!
!-----------------------------------------------------------------------
!
! B
SOREST(5)=.TRUE.
! R: RIGID BED
SOREST(9)=.TRUE.
! M: SOLID DISCHARGE
SOREST(14)=.TRUE.
! N: SOLID DISCHARGE X
SOREST(15)=.TRUE.
! P: SOLID DISCHARGE Y
SOREST(16)=.TRUE.
! E: EVOLUTION
SOREST(17)=.TRUE.
! KS
SOREST(18)=.TRUE.
! MU
SOREST(19)=.TRUE.
! D50
SOREST(20)=.TRUE.
! READS REFERENCE LEVEL FOR NESTOR
IF(NESTOR) SOREST(22)=.TRUE. ! Nestor
!
DO I=1,NOMBLAY
SOREST(NVAR_LAYTHI+I)=.TRUE.
ENDDO
!
IF(NSAND.GT.0) THEN
DO I=1,NOMBLAY*NSAND
SOREST(NVAR_MASS_S+I)=.TRUE.
ENDDO
ENDIF
!
!-----------------------------------------------------------------------
!
! FORCE THE VARIABLES NECESSARY FOR RESTARTING TO BE IN THE OUTPUT
! WITH MUD THE MUD CONCENTRATION, TOCE_MUD, PARTHENIADES AND
! TRANS_MASS (IF BED_MODEL.EQ.2) ARE REQUIRED
! COEFFICIENT IN THE LAYERS
!
IF(NMUD.GT.0) THEN
DO I=1,NOMBLAY
SORLEO(NVAR_LAYCONC+I)=.TRUE.
SORLEO(NVAR_TOCEMUD+I)=.TRUE.
SORLEO(NVAR_PARTHE+I)=.TRUE.
SOREST(NVAR_LAYCONC+I)=.TRUE.
SOREST(NVAR_TOCEMUD+I)=.TRUE.
SOREST(NVAR_PARTHE+I)=.TRUE.
IF(BED_MODEL.EQ.2) THEN
SORLEO(NVAR_MTRANS+I)=.TRUE.
SOREST(NVAR_MTRANS+I)=.TRUE.
ENDIF
ENDDO
DO I=1,NOMBLAY*NMUD
SOREST(NVAR_MASS_M+I)=.TRUE.
ENDDO
ENDIF
!
!-----------------------------------------------------------------------
......
! ******************************
SUBROUTINE PREDES_RESTART_GAIA
! ******************************
!
&(LLT,AAT,YAGOUT,CODE)
!
!***********************************************************************
! GAIA
!***********************************************************************
!
!>@brief Prepares the variables which will be written to
!! the restart file.
!! Creation from predes_gaia (for the result file)
!
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!>@param[in] AAT Current time (for building solutions)
!>@param[in] CODE Name of calling programme (telemac2d or 3d)
!>@param[in] LLT Local lt
!>@param[in] YAGOUT If yes graphic output anyway (steered by t2d)
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
!
USE BIEF
USE DECLARATIONS_GAIA
IMPLICIT NONE
!
!!-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!
INTEGER , INTENT(IN) :: LLT
DOUBLE PRECISION , INTENT(IN) :: AAT
CHARACTER(LEN=24) , INTENT(IN) :: CODE
LOGICAL , INTENT(IN) :: YAGOUT
!
!!-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
!
INTEGER I,J,K
LOGICAL LEO
!
!-----------------------------------------------------------------------
!
! THE OUTPUT VARIABLES ARE BUILT ONLY IF NECESSARY, HENCE THE
! FOLLOWING TESTS, WHICH MUST BE THE SAME AS IN DESIMP (BIEF LIBRARY)
!
LEO=.FALSE.
! IF CODE =TELEMAC2D OUTOUT IS MANAGED BY T2D
IF(CODE(8:9).EQ.'2D'.OR.CODE(8:9).EQ.'3D') LEO=YAGOUT
!
! NO PRINTOUTS REQUIRED: LEAVING
IF (.NOT.LEO) GO TO 1000
!
!=======================================================================
!
! VARIABLES WHICH ARE NOT INITIALISED AT THE FIRST CALL OF
! PREDES_RESTART_GAIA
!
IF(LLT.EQ.0) THEN
! JMH ON 27/11/2009
IF(LEO.AND.SOREST(19)) THEN
CALL OS('X=0 ',X=KS)
ENDIF
ENDIF
!
!=======================================================================
! UPDATE THE Values of the writing blocks
!=======================================================================
!
! For memory optimisation (from intel debug)
! For RATIOS
IF (LEO.AND.SOREST(NVAR_RATIOS+1)) THEN
DO K=1,NOMBLAY
DO I=1,NSAND
RATIOS%ADR(K+(I-1)*NOMBLAY)%P%R=RATIO_SAND(I,K,1:NPOIN)
ENDDO
ENDDO
ENDIF
! For RATIOM
IF(LEO.AND.SOREST(NVAR_RATIOM+1)) THEN
DO K=1,NOMBLAY
DO I=1,NMUD
RATIOM%ADR(K+(I-1)*NOMBLAY)%P%R=RATIO_MUD(I,K,1:NPOIN)
ENDDO
ENDDO
ENDIF
! For Layconc
IF(LEO.AND.SOREST(NVAR_LAYCONC+1)) THEN
DO K=1,NOMBLAY
LAYCONC%ADR(K)%P%R=CONC_MUD(K,1:NPOIN)
ENDDO
ENDIF
! For mass_s
IF(LEO.AND.SOREST(NVAR_MASS_S+1)) THEN
DO K=1,NOMBLAY
DO I=1,NSAND
MASS_S%ADR(K+(I-1)*NOMBLAY)%P%R=MASS_SAND(I,K,1:NPOIN)
ENDDO
ENDDO
ENDIF
! For mass_m
IF(LEO.AND.SOREST(NVAR_MASS_M+1)) THEN
DO K=1,NOMBLAY
DO I=1,NMUD
MASS_M%ADR(K+(I-1)*NOMBLAY)%P%R=MASS_MUD(I,K,1:NPOIN)
ENDDO
ENDDO
ENDIF
! For mtransfer
IF(LEO.AND.SOREST(NVAR_MTRANS+1)) THEN
DO K=1,NOMBLAY
MTRANSFER%ADR(K)%P%R=TRANS_MASS(K,1:NPOIN)
ENDDO
ENDIF
! For tocemud
IF(LEO.AND.SOREST(NVAR_TOCEMUD+1)) THEN
DO K=1,NOMBLAY
TOCEMUD%ADR(K)%P%R=TOCE_MUD(K,1:NPOIN)
ENDDO
ENDIF
! For partheniades
IF(LEO.AND.SOREST(NVAR_PARTHE+1)) THEN
DO K=1,NOMBLAY
PARTHE%ADR(K)%P%R=PARTHENIADES(K,1:NPOIN)
ENDDO
ENDIF
!
!=======================================================================
! UPDATE THE POINTERS TO THE DIFFERENTIATED VARIABLES
!=======================================================================
!
J = NVAR_ADVAR
DO I = 1,NADVAR
IF(LEO.AND.SOREST(J)) THEN
CALL AD_GET_GAIA(I,ADVAR%ADR(I)%P)
J = J + 1
ENDIF
ENDDO
!
!=======================================================================
!
1000 CONTINUE
!
!=======================================================================
!
RETURN
END
......@@ -89,12 +89,12 @@
! -------------
IF((ALIRE(3).EQ.1).AND.(TROUVE(3).NE.1)) THEN
IF(TROUVE(4).EQ.1.AND.TROUVE(5).EQ.1) THEN
IF (LISTI) THEN
IF(LISTI) THEN
WRITE(LU,401)
ENDIF
CALL OV('X=Y-Z ', X=H, Y=S, Z=ZF, DIM1=NPOIN)
ELSE
IF (LISTI) THEN
IF(LISTI) THEN
WRITE(LU,421)
ENDIF
CALL PLANTE(1)
......@@ -179,7 +179,7 @@
IF(ALIRE(5).EQ.1.AND.TROUVE(5).EQ.0) THEN
!
IF(TROUVE(4).EQ.1.AND.TROUVE(3).EQ.1) THEN
IF (LISTI) THEN
IF(LISTI) THEN
WRITE(LU,411)
411 FORMAT(1X,'BATHYMETRY COMPUTED FROM WATER DEPTH',
& /,1X,'AND SURFACE ELEVATION')
......@@ -256,7 +256,7 @@
! XKV READ IN THE STEERING FILE
DEBU_MASS=.FALSE.
WRITE(LU,*)'MASSES COMPUTED USING RATIOS,POROSITY AND '//
& 'THICKNESS RETREIVED IN THE PREVIOUS FILE'
& 'THICKNESS RETRIEVED IN THE PREVIOUS FILE'
ELSE
! NOT ENOUGH DATA TO RESTART COMPUTATION
WRITE(LU,1111)
......@@ -272,7 +272,7 @@
!
! CHECK ALL THE NECESSARY VARIABLES FOR SUSPENSION ARE HERE
!
IF (NMUD.NE.0) THEN
IF(NMUD.NE.0) THEN
CHECK_CONC=0
CHECK_TOCEMUD=0
CHECK_PARTHENIADES=0
......@@ -305,23 +305,23 @@
PARTHENIADES_FOUND = .TRUE.
WRITE(LU,*)'PARTHENIADES READ FROM PREVIOUS FILE'
ENDIF
IF (BED_MODEL.EQ.2) THEN
IF(BED_MODEL.EQ.2) THEN
CHECK_MTRANS=0
DO I=1,NOMBLAY
IF(TROUVE(NVAR_MTRANS+1).EQ.1) THEN
IF(TROUVE(NVAR_MTRANS+I).EQ.1) THEN
! Updating mtransfer with what was read in file
TRANS_MASS(I,1:NPOIN)=MTRANSFER%ADR(I)%P%R
CHECK_MTRANS=CHECK_MTRANS+1
WRITE(LU,*)'MASS TRANSFER READ FROM PREVIOUS FILE'
ENDIF
ENDDO
IF(CHECK_MTRANS.EQ.NOMBLAY) THEN
MTRANS_FOUND = .TRUE.
WRITE(LU,*)'MASS TRANSFER READ FROM PREVIOUS FILE'
ENDIF
ENDIF
ENDIF
!
IF (PASS.AND.LISTI) THEN
IF(PASS.AND.LISTI) THEN
WRITE(LU,970)
970 FORMAT(80('-'))
ENDIF
......
......@@ -2103,6 +2103,10 @@
SOREST(2)=.TRUE.
! H
SOREST(4)=.TRUE.
! B
IF(INCLUS(COUPLING,'GAIA')) THEN
SOREST(6)=.TRUE.
ENDIF
! K AND EPSILON
IF(ITURB.EQ.3) THEN
SOREST(10)=.TRUE.
......
......@@ -659,6 +659,7 @@ files: declarations_gaia.f
ad_get_gaia.F
predes_gaia.f
gaia_write_results.f
predes_restart_gaia.f
gaia_step.F
eqcae_bc_gaia.f
gaia_suspension_conv.f
......
......@@ -631,6 +631,7 @@ files: declarations_gaia.f
gaia_suspension_erode.f
predes_gaia.f
gaia_write_results.f
predes_restart_gaia.f
gaia_step.F
user_bed_init.f
bed1_init_sediment_gaia.f
......