calibration_data_module.f90 [src] Revision: default Date:
module calibration_data_module
implicit none
type calibration_parameters
character(len=16) :: name = "default" ! |cn2, esco, awc, etc.
character(len=16) :: ob_typ = "plt" ! |object type the parameter is associated with (hru, chan, res, basin, etc)
real :: absmin = 0. ! |minimum range for variable
real :: absmax = 1.e6 ! |maximum change for variable
character(len=16) :: units = "null" ! |units used for each parameter
end type calibration_parameters
type (calibration_parameters), dimension (:), allocatable :: cal_parms !dimensioned to db_mx%cal_parms_tot
type calibration_conditions
character(len=16) :: var
character(len=16) :: alt
real :: targ
character(len=16) :: targc
end type calibration_conditions
type update_parameters
character(len=16) :: name !! cn2, terrace, land use, mgt, etc.
integer :: num_db = 0 !! crosswalk number of parameter, structure or land use to get database array number
character(len=16) :: chg_typ !! type of change (absval,abschg,pctchg)
real :: val !! value of change
integer :: conds !! number of conditions
integer :: lyr1 !! first layer in range for soil variables (0 assumes all layers are modified)
integer :: lyr2 !! last layer in range for soil variables (0 assumes through last layer)
integer :: year1 !! first year for precip and temp
integer :: year2 !! last year for precip and temp
integer :: day1 !! first day in range for precip and temp
integer :: day2 !! last day in range for precip and temp
integer :: num_tot = 0 !! total number of integers read in
integer :: num_elem = 0 !! total number of elements modified (ie - 1 -5 18; num_tot=3 and num_elem=6)
integer, dimension(:), allocatable :: num
integer :: num_cond
type (calibration_conditions), dimension(:), allocatable :: cond
end type update_parameters
type (update_parameters), dimension (:), allocatable :: cal_upd !dimensioned to db_mx%cal_parms
type (update_parameters) :: chg
type update_conditional
character(len=16) :: typ !! type of update schedule (parameter, structure, land_use_mgt)
character(len=16) :: name !! name of update schedule
character(len=16) :: cond !! points to ruleset in conditional.ctl for scheduling the update
integer :: cond_num !! integer pointer to d_table in conditional.ctl
end type update_conditional
type (update_conditional), dimension (:), allocatable :: upd_cond
type soft_calibration_codes
character (len=1) :: hyd_hru = "n" !! if y, calibrate hydrologic balance for hru by land use in each region
character (len=1) :: hyd_hrul = "n" !! if y, calibrate hydrologic balance for hru_lte by land use in each region
character (len=1) :: plt = "n" !! if y, calibrate plant growth by land use (by plant) in each region
character (len=1) :: sed = "n" !! if y, calibrate sediment yield by land use in each region
character (len=1) :: nut = "n" !! if y, calibrate nutrient balance by land use in each region
character (len=1) :: chsed = "n" !! if y, calibrate channel widening and bank accretion by stream order
character (len=1) :: chnut = "n" !! if y, calibrate channel nutrient balance by stream order
character (len=1) :: res = "n" !! if y, calibrate reservoir budgets by reservoir
end type soft_calibration_codes
type (soft_calibration_codes) :: cal_codes
character (len=1) :: cal_soft = "n" !! if y, calibrate at least one balance
character (len=1) :: cal_hard = "n" !! if y, perform hard calibration
type soft_calib_parms
character(len=16) :: name !! cn2, terrace, land use, mgt, etc.
integer :: num_db = 0 !! crosswalk number of parameter, structure or land use to get database array number
character(len=16) :: chg_typ !! type of change (absval,abschg,pctchg)
real :: neg !! negative limit of change
real :: pos !! positive limit of change
real :: lo !! lower limit of parameter
real :: up !! upper limit of parameter
end type soft_calib_parms
type (soft_calib_parms), dimension(:), allocatable :: ls_prms
type (soft_calib_parms), dimension(:), allocatable :: ch_prms
type soft_calib_ls_adjust
real :: cn = 0. !+/- or 0/1 |cn2 adjustment or at limit
real :: esco = 0. !+/- or 0/1 |esco adjustment or at limit
real :: lat_len = 0. !+/- or 0/1 |lateral flow soil length adjustment or at limit
real :: k_lo = 0. !+/- or 0/1 |k (lowest layer) adjustment or at limit
real :: slope = 0. !+/- or 0/1 |slope adjustment or at limit
real :: tconc = 0. !+/- or 0/1 |time of concentration adjustment or at limit
real :: etco = 0. !+/- or 0/1 |etco adjustment or at limit
real :: perco = 0. !+/- or 0/1 |percolation coefficient adjustment or at limit
real :: revapc = 0. !+/- or 0/1 |slope adjustment or at limit
real :: cn3_swf = 0. !+/- or 0/1 |cn3_swf adjustment or at limit
end type soft_calib_ls_adjust
type soft_calib_ls_processes
!database of soft ave annual landscape calibration values
character(len=16) :: name = "default"
! srr + lfr + pcr + etr + tfr = 1
real :: srr = 0. !- or m3 |surface runoff ratio - surface runoff/precip
real :: lfr = 0. !- or m3 |lateral flow ratio - soil lat flow/precip
real :: pcr = 0. !- or m3 |percolation ratio - perc/precip
real :: etr = 0. !- or m3 |et ratio - et/precip
real :: tfr = 0. !- or m3 |tile flow ratio - tile flow/total runoff
real :: pet = 0. !- or m3 |ave annual potential et
real :: sed = 0. !t/ha or t |sediment yield
!real :: orgn = 0. !kg/ha or kg |organic n yield
real :: orgp = 0. !kg/ha or kg |organic p yield
real :: no3 = 0. !kg/ha or kg |nitrate yield
real :: solp = 0. !kg/ha or kg |soluble p yield
end type soft_calib_ls_processes
type (soft_calib_ls_processes) :: lscal_z !to zero values
type ls_calib_regions
character(len=16) :: name = "default"
integer :: lum_no !xwalk lum()%name with lscal()%lum()%name
real :: ha !ha of each land use
integer :: nbyr = 0 !number of years the land use occurred
type (soft_calib_ls_processes) :: meas !input soft calibration parms of each land use - ratio,t/ha,kg/ha
real :: precip = 0. !model precip for each land use to determine ratios
real :: precip_aa = 0. !model ave annual precip for each land use to determine ratios
real :: precip_aa_sav = 0. !model ave annual precip for each land use to determine ratios for final output
real :: pet = 0. !model precip for each land use to determine ratios
real :: pet_aa = 0. !model ave annual precip for each land use to determine ratios
real :: petco = 0. !potential et coefficient - linear adjustment, no iterating
type (soft_calib_ls_processes) :: sim !simulated sum of soft calibration parms of each land use - m3,t,kg
type (soft_calib_ls_processes) :: aa !average annual soft calibration parms of each land use - mm,t/ha,kg/ha
type (soft_calib_ls_processes) :: prev !simulated sum of soft calibration parms of previous run - m3,t,kg
type (soft_calib_ls_adjust) :: prm !parameter adjustments used in landscape calibration
type (soft_calib_ls_adjust) :: prm_prev !parameter adjustments used in landscape calibration
type (soft_calib_ls_adjust) :: prm_lim !code if parameters are at limits
end type ls_calib_regions
type soft_data_calib_landscape
character(len=16) :: name = "default" !name of region - (number of regions = db_mx%lsu_reg)
integer :: lum_num !number of land uses in each region
integer :: num_tot !number of hru"s in each region
integer, dimension(:), allocatable :: num !hru"s that are included in the region
integer :: num_reg !number of regions the soft data applies to
character(len=16), dimension(:), allocatable :: reg !name of regions the soft data applies to
integer, dimension(:), allocatable :: ireg !name of regions the soft data applies to
type (ls_calib_regions), dimension(:), allocatable :: lum !dimension for land uses within a region
end type soft_data_calib_landscape
type (soft_data_calib_landscape), dimension(:), allocatable :: lscal !dimension by region for hru"s
type (soft_data_calib_landscape), dimension(:), allocatable :: lscalt !dimension by region for hru_lte"s
type pl_parms_cal
character(len=16) :: var = "default"
character(len=16) :: name = "default"
real :: init_val !! xwalk lum()%name with lscal()%lum()%name
character(len=16) :: chg_typ !! type of change (absval,abschg,pctchg)
real :: neg !! negative limit of change
real :: pos !! positive limit of change
real :: lo !! lower limit of parameter
real :: up !! upper limit of parameter
end type pl_parms_cal
type pl_parm_region
character(len=16) :: name = "default" !name of region - (number of regions = db_mx%lsu_reg)
integer :: lum_num !number of land uses in each region
integer :: parms = 2 !number of plant parameters used in calibration
integer :: num_tot !number of hru"s in each region
integer, dimension(:), allocatable :: num !hru"s that are included in the region
type (pl_parms_cal), dimension(:), allocatable :: prm !dimension for land uses within a region
end type pl_parm_region
type (pl_parm_region), dimension(:), allocatable :: pl_prms !dimension by region for hru"s
type cataloging_units
character(len=16) :: name = "basin" !name of region - (number of regions = db_mx%lsu_reg)
real :: area_ha !area of landscape cataloging unit -hectares
integer :: num_tot !number of hru"s in each region
integer, dimension(:), allocatable :: num !hru"s that are included in the region
integer :: nlum !number of land use and mgt in the region
character(len=16), dimension(:), allocatable :: lumc !land use groups
integer, dimension(:), allocatable :: lum_num !db number of land use in the region - dimensioned by lum in the region
integer, dimension(:), allocatable :: lum_num_tot !db number of land use in the region each year- dimensioned by lum in database
real, dimension(:), allocatable :: lum_ha !area (ha) of land use in the region - dimensioned by lum in the region
real, dimension(:), allocatable :: lum_ha_tot !sum of area (ha) of land use in the region each year- dimensioned by lum in database
real, dimension(:), allocatable :: hru_ha !area (ha) of hrus in the region
end type cataloging_units
type (cataloging_units), dimension(:), allocatable :: region !dimension by region for hru"s
type (cataloging_units), dimension(:), allocatable :: ccu_cal !channel cataoging unit region
type (cataloging_units), dimension(:), allocatable :: acu_cal !aquifer cataoging unit region
type (cataloging_units), dimension(:), allocatable :: rcu_cal !reservoir cataoging unit region
type (cataloging_units), dimension(:), allocatable :: pcu_cal !point source cataoging unit region
type landscape_units
character(len=16) :: name = "basin" !name of region - (number of regions = db_mx%lsu_out)
real :: area_ha !area of landscape cataloging unit -hectares
integer :: num_tot !number of hru"s in each region
integer, dimension(:), allocatable :: num !hru"s that are included in the region
end type landscape_units
type (landscape_units), dimension(:), allocatable :: lsu_out !dimension by region for hrus
type (landscape_units), dimension(:), allocatable :: lsu_reg !dimension by region for hrus
type (landscape_units), dimension(:), allocatable :: acu_out !dimension by region for aquifers
type (landscape_units), dimension(:), allocatable :: acu_reg !dimension by region for aquifers
type (landscape_units), dimension(:), allocatable :: ccu_out !dimension by region for channels
type (landscape_units), dimension(:), allocatable :: ccu_reg !dimension by region for channels
type (landscape_units), dimension(:), allocatable :: rcu_out !dimension by region for reservoirs
type (landscape_units), dimension(:), allocatable :: rcu_reg !dimension by region for reservoirs
type (landscape_units), dimension(:), allocatable :: pcu_out !dimension by region for point sources
type (landscape_units), dimension(:), allocatable :: pcu_reg !dimension by region for point sources
type landscape_region_elements
character(len=16) :: name
real :: ha !area of reegion element -hectares
integer :: obj = 1 !object number
character (len=3) :: obtyp !object type- hru, hru_lte, lsu, etc
integer :: obtypno = 0 !2-number of hru_lte"s or 1st hru_lte command
end type landscape_region_elements
type (landscape_region_elements), dimension(:), allocatable :: reg_elem !landscape region elements
type landscape_elements
character(len=16) :: name
integer :: obj = 1 !object number
character (len=3) :: obtyp !object type- 1=hru, 2=hru_lte, 11=export coef, etc
integer :: obtypno = 0 !2-number of hru_lte"s or 1st hru_lte command
real :: bsn_frac = 0 !fraction of element in basin (expansion factor)
real :: ru_frac = 0 !fraction of element in ru (expansion factor)
real :: reg_frac = 0 !fraction of element in calibration region (expansion factor)
end type landscape_elements
type (landscape_elements), dimension(:), allocatable :: lsu_elem !landscape cataoging unit
type (landscape_elements), dimension(:), allocatable :: ccu_elem !channel cataoging unit
type (landscape_elements), dimension(:), allocatable :: acu_elem !aquifer cataoging unit
type (landscape_elements), dimension(:), allocatable :: rcu_elem !reservoir cataoging unit
type (landscape_elements), dimension(:), allocatable :: pcu_elem !point source cataoging unit
type soft_calib_pl_adjust
real :: harv_idx = 0. !+/- or 0/1 |harvest index
real :: lai_pot = 0. !+/- or 0/1 |potential leaf area index
end type soft_calib_pl_adjust
type soft_calib_pl_processes
!database of soft ave annual landscape calibration values
character(len=16) :: name = "default"
real :: yield = 0. !t/ha or t |crop yield
real :: npp = 0. !t/ha or t |net primary productivity (biomass) dry weight
real :: lai_mx = 0. ! |maximum leaf area index
real :: wstress = 0. ! |sum of water (drought) stress
real :: astress = 0. ! |sum of water (aeration) stress
real :: tstress = 0. ! |sum of temperature stress
end type soft_calib_pl_processes
type (soft_calib_pl_processes) :: plcal_z !to zero values
type pl_calib_regions
character(len=16) :: name = "default"
integer :: plant_no !xwalk lum()%name with lscal()%lum()%name
real :: ha !ha of each land use
integer :: nbyr = 0 !number of years the land use occurred
type (soft_calib_pl_processes) :: meas !input soft calibration parms of each land use - ratio,t/ha,kg/ha
real :: precip = 0. !model precip for each land use to determine ratios
real :: precip_aa = 0. !model ave annual precip for each land use to determine ratios
real :: precip_aa_sav = 0. !model ave annual precip for each land use to determine ratios for final output
type (soft_calib_pl_processes) :: sim !simulated sum of soft calibration parms of each land use - m3,t,kg
type (soft_calib_pl_processes) :: aa !average annual soft calibration parms of each land use - mm,t/ha,kg/ha
type (soft_calib_pl_processes) :: prev !simulated sum of soft calibration parms of previous run - m3,t,kg
type (soft_calib_pl_adjust) :: prm !parameter adjustments used in landscape calibration
type (soft_calib_pl_adjust) :: prm_prev !parameter adjustments used in landscape calibration
type (soft_calib_pl_adjust) :: prm_lim !code if parameters are at limits
end type pl_calib_regions
type soft_data_calib_plant
character(len=16) :: name = "default" !name of region - (number of regions = db_mx%lsu_reg)
integer :: lum_num !number of land uses in each region
integer :: num_tot !number of hru"s in each region
integer, dimension(:), allocatable :: num !hru"s that are included in the region
type (pl_calib_regions), dimension(:), allocatable :: lum !dimension for land uses within a region
end type soft_data_calib_plant
type (soft_data_calib_plant), dimension(:), allocatable :: plcal !dimension by region for plants
type soft_calib_chan_adjust
real :: cov = 0. !+/- or 0/1 |cover adjustment or at limit
real :: erod = 0. !+/- or 0/1 |channel erodibility adjustment or at limit
real :: shear_bnk = 0. !+/- or 0/1 |bank shear coefficient adjustment or at limit
real :: hc_erod = 0. !+/- or 0/1 |head cut erodibility adjustment or at limit
end type soft_calib_chan_adjust
type soft_calib_chan_processes
!database of soft ave annual landscape calibration values
character(len=16) :: name
real :: chw = 0. !mm/yr |channel widening
real :: chd = 0. !mm/yr |channel downcutting or accretion
real :: hc = 0. !m/yr |head cut advance
real :: fpd = 0. !mm/yr |flood plain accretion
end type soft_calib_chan_processes
type (soft_calib_chan_processes) :: chcal_z !to zero values
type chan_calib_regions
character(len=16) :: name = "default"
real :: length !ha of each land use
integer :: nbyr = 0 !number of years the land use occurred
type (soft_calib_chan_processes) :: meas !input soft calibration parms of each land use - ratio,t/ha,kg/ha
type (soft_calib_chan_processes) :: sim !simulated sum of soft calibration parms of each land use - m3,t,kg
type (soft_calib_chan_processes) :: aa !average annual soft calibration parms of each land use - mm,t/ha,kg/ha
type (soft_calib_chan_processes) :: prev !simulated sum of soft calibration parms of previous run - m3,t,kg
type (soft_calib_chan_adjust) :: prm !parameter adjustments used in landscape calibration
type (soft_calib_chan_adjust) :: prm_prev !parameter adjustments used in landscape calibration
type (soft_calib_chan_adjust) :: prm_lim !code if parameters are at limits
end type chan_calib_regions
type soft_data_calib_channel
character(len=16) :: name = "default" !name of region - (number of regions = db_mx%lsu_reg)
integer :: ord_num !number of stream orders in each region
integer :: num_tot !number of channels in each region
integer, dimension(:), allocatable :: num !channels that are included in the region
type (chan_calib_regions), dimension(:), allocatable :: ord !dimension for stream order within a region
end type soft_data_calib_channel
type (soft_data_calib_channel), dimension(:), allocatable :: chcal !dimension by region
end module calibration_data_module