SetParametersFromFile Subroutine

private subroutine SetParametersFromFile(iniDB, model)

set parameter maps from separate files

Arguments

Type IntentOptional Attributes Name
type(IniList), intent(in) :: iniDB
integer(kind=short), intent(in) :: model

Source Code

SUBROUTINE SetParametersFromFile   & 
!
  (iniDB, model)

IMPLICIT NONE

! Arguments with intent(in):

TYPE (IniList), INTENT(IN) :: iniDB
INTEGER (KIND = short), INTENT(IN) :: model !infiltration model

!Local declaration:

!------------end of declaration------------------------------------------------ 

!Set parameter maps used by all models

!Saturated Conductivity
IF (SectionIsPresent('conductivity', iniDB)) THEN
    CALL GridByIni (iniDB, ksat, section = 'conductivity')
    CALL Catch ('info', 'SoilBalance: ', 'loading saturated conductivity from file: ', &
          argument = IniReadString('file', iniDB, section = 'conductivity'))
    IF  ( .NOT. CRSisEqual (mask = mask, grid = ksat, checkCells = .TRUE.) ) THEN
        CALL Catch ('error', 'SoilBalance',   &
			    'wrong spatial reference in conductivity map' )
    END IF
ELSE
    CALL Catch ('error', 'SoilBalance: ',   &
			    'missing conductivity section in configuration file' )
END IF
 
!Saturated water content
IF (SectionIsPresent('saturated-water-content', iniDB)) THEN
    CALL GridByIni (iniDB, thetas, section = 'saturated-water-content')
    CALL Catch ('info', 'SoilBalance: ', 'loading saturated water content from file: ', &
          argument = IniReadString('file', iniDB, section = 'saturated-water-content'))
    IF  ( .NOT. CRSisEqual (mask = mask, grid = thetas, checkCells = .TRUE.) ) THEN
        CALL Catch ('error', 'SoilBalance',   &
			    'wrong spatial reference in saturated-water-content' )
    END IF
ELSE
    CALL Catch ('error', 'SoilBalance: ',   &
			    'missing saturated-water-content section in configuration file' )
END IF

!Residual water content
IF (SectionIsPresent('residual-water-content', iniDB)) THEN
    CALL GridByIni (iniDB, thetar, section = 'residual-water-content')
    CALL Catch ('info', 'SoilrBalance: ', 'loading residual water content from file: ', &
          argument = IniReadString('file', iniDB, section = 'residual-water-content'))
    IF  ( .NOT. CRSisEqual (mask = mask, grid = thetar, checkCells = .TRUE.) ) THEN
        CALL Catch ('error', 'SoilBalance',   &
			    'wrong spatial reference in residual-water-content' )
    END IF
ELSE
    CALL Catch ('error', 'SoilWaterBalance: ',   &
			    'missing residual-water-content section in configuration file' )
END IF


!Wilting Point
IF (SectionIsPresent('wilting-point', iniDB)) THEN
    CALL GridByIni (iniDB, wiltingPoint, section = 'wilting-point')
    CALL Catch ('info', 'SoilBalance: ', 'loading wilting point from file: ', &
          argument = IniReadString('file', iniDB, section = 'wilting-point'))
    IF  ( .NOT. CRSisEqual (mask = mask, grid = wiltingPoint, checkCells = .TRUE.) ) THEN
        CALL Catch ('error', 'SoilBalance',   &
			    'wrong spatial reference in wilting-point' )
    END IF
ELSE
    CALL Catch ('error', 'SoilBalance: ',   &
			    'missing wilting-point section in configuration file' )
END IF
    
!Field Capacity
IF (SectionIsPresent('field-capacity', iniDB)) THEN
    CALL GridByIni (iniDB, fieldCapacity, section = 'field-capacity')
    CALL Catch ('info', 'SoilBalance: ', 'loading field capacity from file: ', &
          argument = IniReadString('file', iniDB, section = 'field-capacity'))
    IF  ( .NOT. CRSisEqual (mask = mask, grid = fieldCapacity, checkCells = .TRUE.) ) THEN
        CALL Catch ('error', 'SoilBalance',   &
			    'wrong spatial reference in field-capacity' )
    END IF
ELSE
    CALL Catch ('error', 'SoilBalance: ',   &
			    'missing field-capacity section in configuration file' )
END IF

!Pore size distribution index
IF (SectionIsPresent('pore-size-index', iniDB)) THEN
    CALL GridByIni (iniDB, psdi, section = 'pore-size-index')
    CALL Catch ('info', 'SoilBalance: ', 'loading pore size index from file: ', &
          argument = IniReadString('file', iniDB, section = 'pore-size-index'))
    IF  ( .NOT. CRSisEqual (mask = mask, grid = psdi, checkCells = .TRUE.) ) THEN
        CALL Catch ('error', 'SoilBalance',   &
			    'wrong spatial reference in pore-size-index')
    END IF
ELSE
    CALL Catch ('error', 'SoilBalance: ',   &
			    'missing pore-size-idex section in configuration file' )
END IF

!bubbling pressure, air entry value
IF (SectionIsPresent('bubble-pressure', iniDB)) THEN
    CALL GridByIni (iniDB, psic, section = 'bubble-pressure')
    CALL Catch ('info', 'SoilBalance: ', 'loading bubbling pressure from file: ', &
            argument = IniReadString('file', iniDB, section = 'bubble-pressure'))
    IF  ( .NOT. CRSisEqual (mask = mask, grid = psic, checkCells = .TRUE.) ) THEN
        CALL Catch ('error', 'SoilBalance',   &
			    'wrong spatial reference in bubbling pressure')
    END IF
ELSE
      CALL Catch ('error', 'SoilBalance: ',   &
			      'missing bubble-pressure section in configuration file' )
END IF


IF (model == SCS_CN) THEN !read supplementary parameters required by Curve Number 
  
  !Curve Number
	IF (SectionIsPresent('curve-number', iniDB)) THEN
        CALL GridByIni (iniDB, curveNumber, section = 'curve-number')
        CALL Catch ('info', 'SoilBalance: ', 'loading curve number from file: ', &
             argument = IniReadString('file', iniDB, section = 'curve-number'))
        IF  ( .NOT. CRSisEqual (mask = mask, grid = curveNumber, checkCells = .TRUE.) ) THEN
           CALL Catch ('error', 'SoilBalance',   &
			        'wrong spatial reference in curve number')
        END IF
  ELSE
      CALL Catch ('error', 'SoilBalance: ',   &
			      'missing curve-number section in configuration file' )
  END IF
  
  
  !Initial abstraction ratio
	IF (SectionIsPresent('abstraction-ratio', iniDB)) THEN
        CALL GridByIni (iniDB, abstractionRatio, section = 'abstraction-ratio')
        CALL Catch ('info', 'SoilBalance: ', 'loading initial abstraction ratio from file: ', &
             argument = IniReadString('file', iniDB, section = 'abstraction-ratio'))
        IF  ( .NOT. CRSisEqual (mask = mask, grid = abstractionRatio, checkCells = .TRUE.) ) THEN
           CALL Catch ('error', 'SoilBalance',   &
			        'wrong spatial reference in initial abstraction ratio')
        END IF
  ELSE
      CALL Catch ('error', 'SoilBalance: ',   &
			      'missing abstraction-ratio section in configuration file' )
  END IF
  
  !SCS-CN storativity
	IF (SectionIsPresent('storativity', iniDB)) THEN
        CALL GridByIni (iniDB, storativity, section = 'storativity')
        CALL Catch ('info', 'SoilBalance: ', 'loading storativity from file: ', &
             argument = IniReadString('file', iniDB, section = 'storativity'))
        IF  ( .NOT. CRSisEqual (mask = mask, grid = storativity, checkCells = .TRUE.) ) THEN
           CALL Catch ('error', 'SoilBalance',   &
			        'wrong spatial reference in storativity')
        END IF
  ELSE
      CALL Catch ('error', 'SoilBalance: ',   &
			      'missing storativity section in configuration file' )
  END IF
  
END IF  

!IF (model == PHILIPEQ) THEN !read supplementary parameters required by Philips 
!  
!  !bubbling pressure, air entry value
!	IF (SectionIsPresent('bubble-pressure', iniDB)) THEN
!        CALL GridByIni (iniDB, psic, section = 'bubble-pressure')
!        CALL Catch ('info', 'SoilBalance: ', 'loading bubbling pressure from file: ', &
!             argument = IniReadString('file', iniDB, section = 'bubble-pressure'))
!        IF  ( .NOT. CRSisEqual (mask = mask, grid = psic, checkCells = .TRUE.) ) THEN
!           CALL Catch ('error', 'SoilBalance',   &
!			        'wrong spatial reference in bubbling pressure')
!        END IF
!  ELSE
!      CALL Catch ('error', 'SoilBalance: ',   &
!			      'missing bubble-pressure section in configuration file' )
!  END IF
!
!END IF

IF (model == GREEN_AMPT) THEN !read supplementary parameters required by Green Ampt 
  
  !wetting front soil suction head
	IF (SectionIsPresent('front-suction-head', iniDB)) THEN
        CALL GridByIni (iniDB, phy, section = 'front-suction-head')
        CALL Catch ('info', 'SoilBalance: ', 'loading wetting front suction head from file: ', &
             argument = IniReadString('file', iniDB, section = 'front-suction-head'))
        IF  ( .NOT. CRSisEqual (mask = mask, grid = phy, checkCells = .TRUE.) ) THEN
           CALL Catch ('error', 'SoilBalance',   &
			        'wrong spatial reference in wetting front suction head')
        END IF
  ELSE
      CALL Catch ('error', 'SoilBalance: ',   &
			      'missing front-suction-head section in configuration file' )
  END IF
  
END IF

IF (model == ROSS_BC) THEN !read supplementary parameters required by Ross Brooks and Corey 
  
  !bubbling pressure, air entry value
	IF (SectionIsPresent('bubble-pressure', iniDB)) THEN
        CALL GridByIni (iniDB, psic, section = 'bubble-pressure')
        CALL Catch ('info', 'SoilBalance: ', 'loading bubbling pressure from file: ', &
             argument = IniReadString('file', iniDB, section = 'bubble-pressure'))
        IF  ( .NOT. CRSisEqual (mask = mask, grid = psic, checkCells = .TRUE.) ) THEN
           CALL Catch ('error', 'SoilBalance',   &
			        'wrong spatial reference in bubbling pressure')
        END IF
  ELSE
      CALL Catch ('error', 'SoilBalance: ',   &
			      'missing bubble-pressure section in configuration file' )
  END IF

  
END IF

IF (model == ROSS_VG) THEN !read supplementary parameters required by Ross Van Genuchten 
  
  !bubbling pressure, air entry value
	IF (SectionIsPresent('bubble-pressure', iniDB)) THEN
        CALL GridByIni (iniDB, psic, section = 'bubble-pressure')
        CALL Catch ('info', 'SoilBalance: ', 'loading bubbling pressure from file: ', &
             argument = IniReadString('file', iniDB, section = 'bubble-pressure'))
        IF  ( .NOT. CRSisEqual (mask = mask, grid = psic, checkCells = .TRUE.) ) THEN
           CALL Catch ('error', 'SoilBalance',   &
			        'wrong spatial reference in bubbling pressure')
        END IF
  ELSE
      CALL Catch ('error', 'SoilBalance: ',   &
			      'missing bubble-pressure section in configuration file' )
  END IF
  
  !n shape parameter for Van Genuchten SWRC
	IF (SectionIsPresent('n-van-genuchten', iniDB)) THEN
        CALL GridByIni (iniDB, nvg, section = 'n-van-genuchten')
        CALL Catch ('info', 'SoilBalance: ', 'loading n shape parameter from file: ', &
             argument = IniReadString('file', iniDB, section = 'n-van-genuchten'))
        IF  ( .NOT. CRSisEqual (mask = mask, grid = nvg, checkCells = .TRUE.) ) THEN
           CALL Catch ('error', 'SoilBalance',   &
			        'wrong spatial reference in n shape parameter')
        END IF
  ELSE
      CALL Catch ('error', 'SoilBalance: ',   &
			      'missing n-van-genuchten section in configuration file' )
  END IF
  
  !m shape parameter for Van Genuchten SWRC
	IF (SectionIsPresent('m-van-genuchten', iniDB)) THEN
        CALL GridByIni (iniDB, mvg, section = 'm-van-genuchten')
        CALL Catch ('info', 'SoilBalance: ', 'loading m shape parameter from file: ', &
             argument = IniReadString('file', iniDB, section = 'm-van-genuchten'))
        IF  ( .NOT. CRSisEqual (mask = mask, grid = mvg, checkCells = .TRUE.) ) THEN
           CALL Catch ('error', 'SoilBalance',   &
			        'wrong spatial reference in m shape parameter')
        END IF
  ELSE
      CALL Catch ('error', 'SoilBalance: ',   &
			      'missing m-van-genuchten section in configuration file' )
  END IF
  
  !tortuosity index
	IF (SectionIsPresent('tortuosity-index', iniDB)) THEN
        CALL GridByIni (iniDB, ptort, section = 'tortuosity-index')
        CALL Catch ('info', 'SoilBalance: ', 'loading tortuosity index from file: ', &
             argument = IniReadString('file', iniDB, section = 'tortuosity-index'))
        IF  ( .NOT. CRSisEqual (mask = mask, grid = ptort, checkCells = .TRUE.) ) THEN
           CALL Catch ('error', 'SoilBalance',   &
			        'wrong spatial reference in tortuosity index')
        END IF
  ELSE
      CALL Catch ('error', 'SoilBalance: ',   &
			      'missing tortuosity-index section in configuration file' )
  END IF
  
  !saturated conductivity of soil "matrix"
	IF (SectionIsPresent('conductivity-matrix', iniDB)) THEN
        CALL GridByIni (iniDB, ksatMatrix, section = 'conductivity-matrix')
        CALL Catch ('info', 'SoilBalance: ', 'loading soil matrix conductivity from file: ', &
             argument = IniReadString('file', iniDB, section = 'conductivity-matrix'))
        IF  ( .NOT. CRSisEqual (mask = mask, grid = ksatMatrix, checkCells = .TRUE.) ) THEN
           CALL Catch ('error', 'SoilBalance',   &
			        'wrong spatial reference in soil matrix conductivity')
        END IF
  ELSE
      CALL Catch ('error', 'SoilBalance: ',   &
			      'missing conductivity-matrix section in configuration file' )
  END IF

END IF

RETURN
  END SUBROUTINE SetParametersFromFile