set parameter maps from separate files
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(IniList), | intent(in) | :: | iniDB | |||
integer(kind=short), | intent(in) | :: | model |
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