diff --git a/src/MNH/modd_fmout.f90 b/src/MNH/modd_fmout.f90 index ef8b218403f97c6a963b4b469ea3e95dfaa53c7c..df8ddd54ecabc5030aa2c1c5c3d33aabcf6163a0 100644 --- a/src/MNH/modd_fmout.f90 +++ b/src/MNH/modd_fmout.f90 @@ -63,6 +63,10 @@ INTEGER,SAVE,DIMENSION(JPMODELMAX) :: NBAK_STEP_FREQ = NNEGUNDEF ! Number ! of timesteps between 2 backups for each model INTEGER,SAVE,DIMENSION(JPMODELMAX) :: NBAK_STEP_FREQ_FIRST = 1 ! First ! timestep numbers between 2 backups for each model (if NBAK_STEP_FREQ is set) +REAL,SAVE,DIMENSION(JPMODELMAX) :: XBAK_TIME_FREQ = XNEGUNDEF ! Time between +! 2 backups for each model +REAL,SAVE,DIMENSION(JPMODELMAX) :: XBAK_TIME_FREQ_FIRST = 0. ! Time for first +! backup for each model (if XBAK_TIME_FREQ is set) ! ! END MODULE MODD_FMOUT diff --git a/src/MNH/modn_fmout.f90 b/src/MNH/modn_fmout.f90 index 07bd48ca1ea71dcba6f3887c3f396b087c81819f..eba6b91ccbceac39f00d95ec296e646e0158820a 100644 --- a/src/MNH/modn_fmout.f90 +++ b/src/MNH/modn_fmout.f90 @@ -48,6 +48,9 @@ USE MODD_FMOUT ! IMPLICIT NONE ! -NAMELIST/NAM_FMOUT/LBAK_BEG,LBAK_END,XBAK_TIME,NBAK_STEP,NBAK_STEP_FREQ,NBAK_STEP_FREQ_FIRST +NAMELIST/NAM_FMOUT/LBAK_BEG,LBAK_END,& + XBAK_TIME,NBAK_STEP,& + NBAK_STEP_FREQ,NBAK_STEP_FREQ_FIRST,& + XBAK_TIME_FREQ,XBAK_TIME_FREQ_FIRST ! END MODULE MODN_FMOUT diff --git a/src/MNH/set_grid.f90 b/src/MNH/set_grid.f90 index 34c138d0e19f83dc21e7081673f42413f69f2ec8..564184109fee3529b55ff6c0e34345d408a79bb8 100644 --- a/src/MNH/set_grid.f90 +++ b/src/MNH/set_grid.f90 @@ -528,6 +528,27 @@ DO IMI = 1, NMODEL ISTEP_MAX = NINT(XSEGLEN/DYN_MODEL(IMI)%XTSTEP)+1 IF (IMI == 1) ISTEP_MAX = ISTEP_MAX - ISUP ! + !* 2.3.1a0 Insert regular backups into XBAK_TIME array + ! + IF (XBAK_TIME_FREQ(IMI)>0.) THEN + IDX = 1 + ZOUT = XBAK_TIME_FREQ_FIRST(IMI) + ZOUTMAX = PSEGLEN - PTSTEP*ISUP + DO WHILE ( ZOUT <= ZOUTMAX ) + !Find first non 'allocated' element + DO WHILE ( XBAK_TIME(IMI,IDX) >= 0. ) + IDX = IDX + 1 + IF (IDX > JPOUTMAX) THEN + PRINT *,'Error in SET_GRID when treating output list (JPOUTMAX too small)' + CALL ABORT + STOP + END IF + END DO + XBAK_TIME(IMI,IDX) = ZOUT + ZOUT = ZOUT + XBAK_TIME_FREQ(IMI) + END DO + END IF + ! !* 2.3.1a Synchronization between nested models through XBAK_TIME arrays (MODD_FMOUT) ! DO JOUT = 1,JPOUTMAX @@ -699,7 +720,8 @@ DO IMI = 1, NMODEL END IF IF (NDAD(IMI) == IMI .OR. IMI == 1) THEN OUT_MODEL(IMI)%TOUTBAKN(:)%NOUTDAD = 0 - OUT_MODEL(IMI)%TOUTBAKN(IPOS)%CDADFILENAME = OUT_MODEL(IMI)%TOUTBAKN(IPOS)%CFILENAME + !Check IPOS>0 because TOUTBAKN(0) does not exist (IPOS=0 only if no backups) + IF(IPOS>0) OUT_MODEL(IMI)%TOUTBAKN(IPOS)%CDADFILENAME = OUT_MODEL(IMI)%TOUTBAKN(IPOS)%CFILENAME ELSE DO IPOS = 1,OUT_MODEL(IMI)%NOUT_NUMB IDX = 0