SaveHotStart Subroutine

subroutine SaveHotStart(time)

Save state variables for starting a new simulation from the current condition

to do

Arguments

Type IntentOptional Attributes Name
type(DateTime), optional :: time

Variables

Type Visibility Attributes Name Initial
character(len=300), public :: file
character(len=26), public :: prefix

Source Code

SUBROUTINE SaveHotStart &
!
(time)

IMPLICIT NONE


TYPE(DateTime), OPTIONAL :: time
CHARACTER (LEN = 26)   :: prefix
CHARACTER (LEN = 300)  :: file


!-------------------------end of declarations----------------------------------

IF (PRESENT(time)) THEN
	prefix = time
	prefix = prefix (1:19) // '_'
	prefix (14:14) = '-'
	prefix (17:17) = '-'
		
ELSE
	prefix = '                    '
END IF

!snow
IF ( dtSnow > 0 ) THEN
    
    !swe
    file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'swe'
    
    CALL ExportGrid (layer = swe, fileName = file, &
                     fileFormat = ESRI_BINARY)
    
    !water in snow
    file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'water-snow'
    
    CALL ExportGrid (layer = waterInSnow, fileName = file, &
                     fileFormat = ESRI_BINARY)

END IF

!glaciers
IF ( dtIce > 0 ) THEN
    
    !ice water equivalent
    file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'icewe'
    
    CALL ExportGrid (layer = icewe, fileName = file, &
                     fileFormat = ESRI_BINARY)
    
    !water in ice
    file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'water-ice'
    
    CALL ExportGrid (layer = waterInIce, fileName = file, &
                     fileFormat = ESRI_BINARY)

END IF

!soil balance
IF ( dtSoilBalance > 0 ) THEN

    !soil saturation root zone
    file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'sat-rz'
    
    CALL ExportGrid (layer = soilSatRZ, fileName = file, &
                     fileFormat = ESRI_BINARY)
    
    !soil saturation transmission zone
    file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'sat-tz'
    
    CALL ExportGrid (layer = soilSatTZ, fileName = file, &
                    fileFormat = ESRI_BINARY)
    
    !precipitation status
    file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'rainflag'
    
    CALL ExportGrid (layer = rainFlag, fileName = file, &
                    fileFormat = ESRI_BINARY)
    
    !interstorm duration
    file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'interstorm'
    
    CALL ExportGrid (layer = interstormDuration, fileName = file, &
                    fileFormat = ESRI_BINARY)
    
    IF ( infiltrationModel == SCS_CN ) THEN
        
        !soil retention
        file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'seff'
    
        CALL ExportGrid (layer = sEff, fileName = file, &
                         fileFormat = ESRI_BINARY)
        
        !cumulative precipitation
        file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'raincum'
    
        CALL ExportGrid (layer = raincum, fileName = file, &
                         fileFormat = ESRI_BINARY)
    END IF
    
    IF ( infiltrationModel == PHILIPEQ .OR. &
         infiltrationModel == GREEN_AMPT ) THEN
        
        !cumulative infiltration
        file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'cuminf'
    
        CALL ExportGrid (layer = cuminf, fileName = file, &
                         fileFormat = ESRI_BINARY)
    END IF
END IF

! discharge routing
IF ( dtDischargeRouting > 0 ) THEN
    !Qin
    file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'Qin'
    
    CALL ExportGrid (layer = Qin, fileName = file, &
                     fileFormat = ESRI_BINARY)
    
    !Qout
    file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'Qout'
    
    CALL ExportGrid (layer = Qout, fileName = file, &
                     fileFormat = ESRI_BINARY)
    
    !Qlat
    file = pathHotstart (1:LEN_TRIM (pathHotstart)) // &
	                  prefix (1:LEN_TRIM(prefix)) // 'Qlat'
    
    CALL ExportGrid (layer = Plat, fileName = file, &
                     fileFormat = ESRI_BINARY)
    ! diversions
    IF ( dtDiversion > 0 ) THEN
        IF ( PRESENT (time) ) THEN
           CALL DiversionSaveStatus ( pathHotstart, time )
        ELSE
           CALL DiversionSaveStatus ( pathHotstart )
        END IF
    END IF
    
    ! reservoirs
    IF ( dtReservoir > 0 ) THEN
        IF ( PRESENT (time) ) THEN
           CALL ReservoirSaveStatus ( pathHotstart, time )
        ELSE
           CALL ReservoirSaveStatus ( pathHotstart )
        END IF
    END IF
END IF

!	!Falda
!IF (dtGroundwater > 0) THEN
!	DO I=1,AltezzaPiezometrica%NumeroStrati             
!		                           
!	     CALL write_raster_bin(path_hotstart(1:LEN_TRIM(path_hotstart))// &
!	                  pref_s(1:LEN_TRIM(pref_s))//'strato'//CHAR(64+I), &
!	                  matrice_real=AltezzaPiezometrica%piezometria(I))
!	                                           
!		 IF (interazione_falda_fiume ) THEN
!		  
!		    CALL write_raster_bin(path_hotstart(1:LEN_TRIM(path_hotstart))// &
!	                  pref_s(1:LEN_TRIM(pref_s))//'baseflow_falda', &
!	                  matrice_real=BaseFlow_falda)
!	                  
!	        CALL write_raster_bin(path_hotstart(1:LEN_TRIM(path_hotstart))// &
!	                  pref_s(1:LEN_TRIM(pref_s))//'ricarica_falda', &
!	                  matrice_real=ricarica_falda_fiume)
!	                                            
!		 END IF
!	ENDDO
!END IF
	
!sediment
!IF (dtCalcSediment > 0) THEN
!  CALL write_raster_bin(path_hotstart(1:LEN_TRIM(path_hotstart))// &
!	                  pref_s(1:LEN_TRIM(pref_s))//'deltaSed',matrice_real=deltaSed)
!END IF
!
!IF (dtCalcSedimentRouting > 0) THEN
!
!!to do
!
!END IF
	


END SUBROUTINE SaveHotStart