From d3e4f80baa001ae16adef29b232f7b4530106dca Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Wed, 23 Aug 2023 16:31:04 -0400 Subject: [PATCH 01/20] Updating transfer subroutines to not use move spatially and temporally static variable values --- src/DomainType.f90 | 28 ++++++++++++++++++++++++++-- src/DomainTypeTransfer.f90 | 2 +- 2 files changed, 27 insertions(+), 3 deletions(-) diff --git a/src/DomainType.f90 b/src/DomainType.f90 index b4223d86..c055045e 100644 --- a/src/DomainType.f90 +++ b/src/DomainType.f90 @@ -1,7 +1,7 @@ module DomainType - use NamelistRead, only: namelist_type - + use NamelistRead, only: namelist_type + use DomainGridType, only: domaingrid_type implicit none save private @@ -43,6 +43,7 @@ module DomainType procedure, public :: Init procedure, private :: InitAllocate procedure, private :: InitDefault + procedure, public :: InitTransfer end type domain_type @@ -108,6 +109,29 @@ subroutine InitDefault(this) end subroutine InitDefault + subroutine InitTransfer(this,domaingrid) + + class(domain_type) :: this + class(domaingrid_type) :: domaingrid + + this%DT = domaingrid%DT + this%dx = domaingrid%dx + this%dy = domaingrid%dy + this%n_x = domaingrid%n_x + this%n_y = domaingrid%n_y + this%startdate = domaingrid%startdate + this%enddate = domaingrid%enddate + this%nowdate = domaingrid%nowdate + this%start_datetime = domaingrid%start_datetime + this%end_datetime = domaingrid%end_datetime + this%curr_datetime = domaingrid%sim_datetimes(domaingrid%itime) + this%itime = domaingrid%itime + this%ntime = domaingrid%ntime + this%time_dbl = domaingrid%time_dbl + this%ZREF = domaingrid%ZREF + + end subroutine InitTransfer + end module DomainType \ No newline at end of file diff --git a/src/DomainTypeTransfer.f90 b/src/DomainTypeTransfer.f90 index bac9d553..25fa1783 100644 --- a/src/DomainTypeTransfer.f90 +++ b/src/DomainTypeTransfer.f90 @@ -60,7 +60,7 @@ subroutine DomainVarOutTransfer(domain, domaingrid, ix, iy) domaingrid%zsoil(ix,iy,:) = domain%zsoil(:) domaingrid%dzsnso(ix,iy,:) = domain%dzsnso(:) domaingrid%zsnso(ix,iy,:) = domain%zsnso(:) - domaingrid%nowdate = domain%nowdate !this needs to be kept here until nowdate is updated in domaingriddedDriverModule + domaingrid%nowdate = domain%nowdate end subroutine DomainVarOutTransfer From 0b8d74bb4da4d062e0382be720412a39927644f0 Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Wed, 23 Aug 2023 16:32:19 -0400 Subject: [PATCH 02/20] Updating transfer of spatially and temporally static variable values --- src/LevelsType.f90 | 15 ++++++++++++++- src/LevelsTypeTransfer.f90 | 4 +--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/LevelsType.f90 b/src/LevelsType.f90 index 450e09b2..905acd9a 100644 --- a/src/LevelsType.f90 +++ b/src/LevelsType.f90 @@ -1,5 +1,6 @@ module LevelsType +use LevelsGridType, only: levelsgrid_type implicit none save private @@ -13,7 +14,8 @@ module LevelsType contains procedure, public :: Init - procedure, private :: InitDefault + procedure, private :: InitDefault + procedure, public :: InitTransfer end type levels_type @@ -37,4 +39,15 @@ subroutine InitDefault(this) end subroutine InitDefault + subroutine InitTransfer(this,levelsgrid) + + class(levels_type) :: this + type(levelsgrid_type) :: levelsgrid + + this%nsoil = levelsgrid%nsoil + this%nsnow = levelsgrid%nsnow + this%nveg = levelsgrid%nveg + + end subroutine InitTransfer + end module LevelsType diff --git a/src/LevelsTypeTransfer.f90 b/src/LevelsTypeTransfer.f90 index e7390809..ac38dd68 100644 --- a/src/LevelsTypeTransfer.f90 +++ b/src/LevelsTypeTransfer.f90 @@ -16,9 +16,7 @@ subroutine LevelsVarInTransfer(levels, levelsgrid, ix, iy) integer, intent(in) :: ix integer, intent(in) :: iy - levels%nsoil = levelsgrid%nsoil - levels%nsnow = levelsgrid%nsnow - levels%nveg = levelsgrid%nveg + ! Nothing to do end subroutine LevelsVarInTransfer From ba93adb8f603612409d8ca244807abd3781b7ecb Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Wed, 23 Aug 2023 16:33:14 -0400 Subject: [PATCH 03/20] Cleanup --- src/OptionsTypeTransfer.f90 | 26 +++++++------------------- 1 file changed, 7 insertions(+), 19 deletions(-) diff --git a/src/OptionsTypeTransfer.f90 b/src/OptionsTypeTransfer.f90 index d992ffe9..067ceb5e 100644 --- a/src/OptionsTypeTransfer.f90 +++ b/src/OptionsTypeTransfer.f90 @@ -7,39 +7,27 @@ module OptionsTypeTransfer contains - subroutine OptionsVarInTransfer(options, optionsgrid) + subroutine OptionsVarInTransfer(options, optionsgrid, ix, iy) implicit none type(options_type), intent(inout) :: options type(optionsgrid_type), intent(in) :: optionsgrid + integer, intent(in) :: ix + integer, intent(in) :: iy - options%opt_snf = optionsgrid%opt_snf - options%opt_run = optionsgrid%opt_run - options%opt_drn = optionsgrid%opt_drn - options%opt_inf = optionsgrid%opt_inf - options%opt_infdv = optionsgrid%opt_infdv - options%dveg = optionsgrid%dveg - options%opt_alb = optionsgrid%opt_alb - options%opt_rad = optionsgrid%opt_rad - options%opt_sfc = optionsgrid%opt_sfc - options%opt_crs = optionsgrid%opt_crs - options%opt_crop = optionsgrid%opt_crop - options%opt_stc = optionsgrid%opt_stc - options%opt_tbot = optionsgrid%opt_tbot - options%opt_frz = optionsgrid%opt_frz - options%opt_btr = optionsgrid%opt_btr - options%opt_rsf = optionsgrid%opt_rsf - options%opt_sub = optionsgrid%opt_sub + ! Nothing to do end subroutine OptionsVarInTransfer - subroutine OptionsVarOutTransfer(options, optionsgrid) + subroutine OptionsVarOutTransfer(options, optionsgrid, ix, iy) implicit none type(options_type), intent(in) :: options type(optionsgrid_type), intent(inout) :: optionsgrid + integer, intent(in) :: ix + integer, intent(in) :: iy ! Nothing to do From 5c7f60f0ae47be6166a24c018b8be02168da9bca Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Wed, 23 Aug 2023 16:33:32 -0400 Subject: [PATCH 04/20] Adding calls to re-added InitTransfer functions for column model --- src/RunModule.f90 | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/RunModule.f90 b/src/RunModule.f90 index 4ea30e07..cecba994 100644 --- a/src/RunModule.f90 +++ b/src/RunModule.f90 @@ -350,11 +350,14 @@ SUBROUTINE solve_noahowp_grid(noahowpgrid) #endif !--------------------------------------------------------------------- - ! Initialize noahowp_type variables + ! Initialize noahowp_type variables and transfer values !--------------------------------------------------------------------- call levels%Init() + call levels%InitTransfer(levelsgrid) call domain%Init(namelist) + call domain%InitTransfer(domaingrid) call options%Init() + call options%InitTransfer(optionsgrid) call parameters%Init(namelist) call forcing%Init() call energy%Init(namelist) @@ -373,7 +376,7 @@ SUBROUTINE solve_noahowp_grid(noahowpgrid) call LevelsVarInTransfer (levels, levelsgrid, ix, iy) call EnergyVarInTransfer (energy, energygrid, ix, iy) call ForcingVarInTransfer (forcing, forcinggrid, ix, iy) - call OptionsVarInTransfer (options, optionsgrid ) + call OptionsVarInTransfer (options, optionsgrid, ix, iy) ) call ParametersVarInTransfer (parameters, parametersgrid, ix, iy) call WaterVarInTransfer (water, watergrid, ix, iy) @@ -389,7 +392,7 @@ SUBROUTINE solve_noahowp_grid(noahowpgrid) call LevelsVarOutTransfer (levels, levelsgrid, ix, iy) call EnergyVarOutTransfer (energy, energygrid, ix, iy) call ForcingVarOutTransfer (forcing, forcinggrid, ix, iy) - call OptionsVarOutTransfer (options, optionsgrid ) + call OptionsVarOutTransfer (options, optionsgrid, ix, iy) call ParametersVarOutTransfer (parameters, parametersgrid, ix, iy) call WaterVarOutTransfer (water, watergrid, ix, iy) From 8dc5a999331ae2cae1b12a29c6787d0bb9c5285f Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Thu, 24 Aug 2023 11:14:55 -0400 Subject: [PATCH 05/20] Adding InitTransfer type-bound procedures back into code for column model types --- src/EnergyType.f90 | 13 +++++---- src/ForcingType.f90 | 12 +++++++++ src/OptionsType.f90 | 29 +++++++++++++++++++- src/ParametersType.f90 | 61 +++++++++++++++++++++++++++++++++++++++++- src/WaterType.f90 | 16 +++++++++-- 5 files changed, 122 insertions(+), 9 deletions(-) diff --git a/src/EnergyType.f90 b/src/EnergyType.f90 index a28c8e20..75e2fbaa 100644 --- a/src/EnergyType.f90 +++ b/src/EnergyType.f90 @@ -1,7 +1,8 @@ module EnergyType - use NamelistRead, only: namelist_type - + use NamelistRead, only: namelist_type + use EnergyGridType, only: energygrid_type + implicit none save private @@ -361,11 +362,13 @@ subroutine InitDefault(this) end subroutine InitDefault - subroutine InitTransfer(this, namelist) + subroutine InitTransfer(this, energygrid) - class(energy_type) :: this - type(namelist_type) :: namelist + class(energy_type), intent(inout) :: this + type(energygrid_type), intent(in) :: energygrid + !Nothing to do + end subroutine InitTransfer end module EnergyType \ No newline at end of file diff --git a/src/ForcingType.f90 b/src/ForcingType.f90 index 1be174f3..5f8dc566 100644 --- a/src/ForcingType.f90 +++ b/src/ForcingType.f90 @@ -1,5 +1,6 @@ module ForcingType +use ForcingGridType, only: forcinggrid_type implicit none save private @@ -47,6 +48,7 @@ module ForcingType procedure, public :: Init procedure, private :: InitAllocate procedure, private :: InitDefault + procedure, public :: InitTransfer end type forcing_type @@ -119,4 +121,14 @@ subroutine InitDefault(this) end subroutine InitDefault + subroutine InitTransfer(this,forcinggrid) + + class(forcing_type), intent(inout) :: this + type(forcinggrid_type), intent(in) :: forcinggrid + + this%JULIAN = forcinggrid%JULIAN + this%YEARLEN = forcinggrid%YEARLEN + + end subroutine InitTransfer + end module ForcingType diff --git a/src/OptionsType.f90 b/src/OptionsType.f90 index 69d8b85d..ac009770 100644 --- a/src/OptionsType.f90 +++ b/src/OptionsType.f90 @@ -1,5 +1,6 @@ module OptionsType +use OptionsGridType, only: optionsgrid_type implicit none save private @@ -107,7 +108,8 @@ module OptionsType contains procedure, public :: Init - procedure, private :: InitDefault + procedure, private :: InitDefault + procedure, public :: InitTransfer end type options_type @@ -145,4 +147,29 @@ subroutine InitDefault(this) end subroutine InitDefault + subroutine InitTransfer(this,optionsgrid) + + class(options_type), intent(inout) :: this + type(optionsgrid_type), intent(in) :: optionsgrid + + this%opt_snf = optionsgrid%opt_snf + this%opt_run = optionsgrid%opt_run + this%opt_drn = optionsgrid%opt_drn + this%opt_inf = optionsgrid%opt_inf + this%opt_infdv = optionsgrid%opt_infdv + this%dveg = optionsgrid%dveg + this%opt_alb = optionsgrid%opt_alb + this%opt_rad = optionsgrid%opt_rad + this%opt_sfc = optionsgrid%opt_sfc + this%opt_crs = optionsgrid%opt_crs + this%opt_crop = optionsgrid%opt_crop + this%opt_stc = optionsgrid%opt_stc + this%opt_tbot = optionsgrid%opt_tbot + this%opt_frz = optionsgrid%opt_frz + this%opt_btr = optionsgrid%opt_btr + this%opt_rsf = optionsgrid%opt_rsf + this%opt_sub = optionsgrid%opt_sub + + end subroutine InitTransfer + end module OptionsType diff --git a/src/ParametersType.f90 b/src/ParametersType.f90 index 8d2c932b..a02253e6 100644 --- a/src/ParametersType.f90 +++ b/src/ParametersType.f90 @@ -1,6 +1,7 @@ module ParametersType - use NamelistRead, only: namelist_type + use NamelistRead, only: namelist_type + use ParametersGridType, only: parametersgrid_type implicit none save @@ -147,6 +148,7 @@ module ParametersType procedure, public :: Init procedure, private :: InitAllocate procedure, private :: InitDefault + procedure, public :: InitTransfer end type parameters_type @@ -205,5 +207,62 @@ subroutine InitDefault(this) end subroutine InitDefault + subroutine InitTransfer(this,parametersgrid) + + implicit none + class(parameters_type), intent(inout) :: this + type(parametersgrid_type), intent(in) :: parametersgrid + + this%ISURBAN = parametersgrid%ISURBAN + this%ISWATER = parametersgrid%ISWATER + this%ISBARREN = parametersgrid%ISBARREN + this%ISICE = parametersgrid%ISICE + this%ISCROP = parametersgrid%ISCROP + this%EBLFOREST = parametersgrid%EBLFOREST + this%NATURAL = parametersgrid%NATURAL + this%LOW_DENSITY_RESIDENTIAL = parametersgrid%LOW_DENSITY_RESIDENTIAL + this%HIGH_DENSITY_RESIDENTIAL = parametersgrid%HIGH_DENSITY_RESIDENTIAL + this%HIGH_INTENSITY_INDUSTRIAL = parametersgrid%HIGH_INTENSITY_INDUSTRIAL + this%SB = parametersgrid%SB + this%VKC = parametersgrid%VKC + this%TFRZ = parametersgrid%TFRZ + this%HSUB = parametersgrid%HSUB + this%HVAP = parametersgrid%HVAP + this%HFUS = parametersgrid%HFUS + this%CWAT = parametersgrid%CWAT + this%CICE = parametersgrid%CICE + this%CPAIR = parametersgrid%CPAIR + this%TKWAT = parametersgrid%TKWAT + this%TKICE = parametersgrid%TKICE + this%TKAIR = parametersgrid%TKAIR + this%RAIR = parametersgrid%RAIR + this%RW = parametersgrid%RW + this%DENH2O = parametersgrid%DENH2O + this%DENICE = parametersgrid%DENICE + this%THKW = parametersgrid%THKW + this%THKO = parametersgrid%THKO + this%THKQTZ = parametersgrid%THKQTZ + this%SWEMX = parametersgrid%SWEMX + this%TAU0 = parametersgrid%TAU0 + this%GRAIN_GROWTH = parametersgrid%GRAIN_GROWTH + this%EXTRA_GROWTH = parametersgrid%EXTRA_GROWTH + this%DIRT_SOOT = parametersgrid%DIRT_SOOT + this%BATS_COSZ = parametersgrid%BATS_COSZ + this%BATS_VIS_NEW = parametersgrid%BATS_VIS_NEW + this%BATS_NIR_NEW = parametersgrid%BATS_NIR_NEW + this%BATS_VIS_AGE = parametersgrid%BATS_VIS_AGE + this%BATS_NIR_AGE = parametersgrid%BATS_NIR_AGE + this%BATS_VIS_DIR = parametersgrid%BATS_VIS_DIR + this%BATS_NIR_DIR = parametersgrid%BATS_NIR_DIR + this%BETADS = parametersgrid%BETADS + this%BETAIS = parametersgrid%BETAIS + this%NBAND = parametersgrid%NBAND + this%MPE = parametersgrid%MPE + this%O2 = parametersgrid%O2 + this%CO2 = parametersgrid%CO2 + this%GRAV = parametersgrid%GRAV + + end subroutine InitTransfer + end module ParametersType \ No newline at end of file diff --git a/src/WaterType.f90 b/src/WaterType.f90 index fac81e0e..3c260b8e 100644 --- a/src/WaterType.f90 +++ b/src/WaterType.f90 @@ -1,6 +1,7 @@ module WaterType -use NamelistRead, only: namelist_type +use NamelistRead, only: namelist_type +use WaterGridType, only: watergrid_type implicit none save @@ -83,7 +84,8 @@ module WaterType procedure, public :: Init procedure, private :: InitAllocate - procedure, private :: InitDefault + procedure, private :: InitDefault + procedure, public :: InitTransfer end type water_type @@ -202,4 +204,14 @@ subroutine InitDefault(this) end subroutine InitDefault + subroutine InitTransfer(this,watergrid) + + class(water_type), intent(inout) :: this + type(watergrid_type), intent(in) :: watergrid + + ! Nothing to do + + end subroutine InitTransfer + + end module WaterType From 0083bd1b3db67bb485c817a4b0d56c39b442624f Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Thu, 24 Aug 2023 11:16:22 -0400 Subject: [PATCH 06/20] Removing transfer of variables that will be transferred before/outside the spatial loop --- src/DomainTypeTransfer.f90 | 17 +----- src/ForcingTypeTransfer.f90 | 2 - src/ParametersTypeTransfer.f90 | 96 ---------------------------------- 3 files changed, 2 insertions(+), 113 deletions(-) diff --git a/src/DomainTypeTransfer.f90 b/src/DomainTypeTransfer.f90 index 25fa1783..9474c996 100644 --- a/src/DomainTypeTransfer.f90 +++ b/src/DomainTypeTransfer.f90 @@ -16,25 +16,12 @@ subroutine DomainVarInTransfer(domain, domaingrid, ix, iy) integer, intent(in) :: ix integer, intent(in) :: iy - domain%DT = domaingrid%DT + !domain%DT = domaingrid%DT domain%ix = ix domain%iy = iy - domain%dx = domaingrid%dx - domain%dy = domaingrid%dy - domain%n_x = domaingrid%n_x - domain%n_y = domaingrid%n_y - domain%startdate = domaingrid%startdate - domain%enddate = domaingrid%enddate - domain%nowdate = domaingrid%nowdate - domain%start_datetime = domaingrid%start_datetime - domain%end_datetime = domaingrid%end_datetime domain%curr_datetime = domaingrid%sim_datetimes(domaingrid%itime) - domain%itime = domaingrid%itime - domain%ntime = domaingrid%ntime - domain%time_dbl = domaingrid%time_dbl domain%lat = domaingrid%lat(ix,iy) - domain%lon = domaingrid%lon(ix,iy) - domain%ZREF = domaingrid%ZREF + domain%lon = domaingrid%lon(ix,iy) domain%terrain_slope = domaingrid%terrain_slope(ix,iy) domain%azimuth = domaingrid%azimuth(ix,iy) domain%vegtyp = domaingrid%vegtyp(ix,iy) diff --git a/src/ForcingTypeTransfer.f90 b/src/ForcingTypeTransfer.f90 index e932c988..f47b8413 100644 --- a/src/ForcingTypeTransfer.f90 +++ b/src/ForcingTypeTransfer.f90 @@ -41,8 +41,6 @@ subroutine ForcingVarInTransfer(forcing, forcinggrid, ix, iy) forcing%RHOAIR = forcinggrid%RHOAIR(ix,iy) forcing%FPICE = forcinggrid%FPICE(ix,iy) forcing%SWDOWN = forcinggrid%SWDOWN(ix,iy) - forcing%JULIAN = forcinggrid%JULIAN - forcing%YEARLEN = forcinggrid%YEARLEN forcing%SOLAD(:) = forcinggrid%SOLAD(ix,iy,:) forcing%SOLAI(:) = forcinggrid%SOLAI(ix,iy,:) diff --git a/src/ParametersTypeTransfer.f90 b/src/ParametersTypeTransfer.f90 index 4c97a5a6..c7747d95 100644 --- a/src/ParametersTypeTransfer.f90 +++ b/src/ParametersTypeTransfer.f90 @@ -83,50 +83,9 @@ subroutine ParametersVarInTransfer(parameters, parametersgrid, ix, iy) parameters%RHOS(:) = parametersgrid%RHOS(ix,iy,:) parameters%TAUL(:) = parametersgrid%TAUL(ix,iy,:) parameters%TAUS(:) = parametersgrid%TAUS(ix,iy,:) - parameters%ISURBAN = parametersgrid%ISURBAN - parameters%ISWATER = parametersgrid%ISWATER - parameters%ISBARREN = parametersgrid%ISBARREN - parameters%ISICE = parametersgrid%ISICE - parameters%ISCROP = parametersgrid%ISCROP - parameters%EBLFOREST = parametersgrid%EBLFOREST - parameters%NATURAL = parametersgrid%NATURAL - parameters%LOW_DENSITY_RESIDENTIAL = parametersgrid%LOW_DENSITY_RESIDENTIAL - parameters%HIGH_DENSITY_RESIDENTIAL = parametersgrid%HIGH_DENSITY_RESIDENTIAL - parameters%HIGH_INTENSITY_INDUSTRIAL = parametersgrid%HIGH_INTENSITY_INDUSTRIAL - parameters%SB = parametersgrid%SB - parameters%VKC = parametersgrid%VKC - parameters%TFRZ = parametersgrid%TFRZ - parameters%HSUB = parametersgrid%HSUB - parameters%HVAP = parametersgrid%HVAP - parameters%HFUS = parametersgrid%HFUS - parameters%CWAT = parametersgrid%CWAT - parameters%CICE = parametersgrid%CICE - parameters%CPAIR = parametersgrid%CPAIR - parameters%TKWAT = parametersgrid%TKWAT - parameters%TKICE = parametersgrid%TKICE - parameters%TKAIR = parametersgrid%TKAIR - parameters%RAIR = parametersgrid%RAIR - parameters%RW = parametersgrid%RW - parameters%DENH2O = parametersgrid%DENH2O - parameters%DENICE = parametersgrid%DENICE - parameters%THKW = parametersgrid%THKW - parameters%THKO = parametersgrid%THKO - parameters%THKQTZ = parametersgrid%THKQTZ parameters%SSI = parametersgrid%SSI(ix,iy) parameters%MFSNO = parametersgrid%MFSNO(ix,iy) parameters%Z0SNO = parametersgrid%Z0SNO(ix,iy) - parameters%SWEMX = parametersgrid%SWEMX - parameters%TAU0 = parametersgrid%TAU0 - parameters%GRAIN_GROWTH = parametersgrid%GRAIN_GROWTH - parameters%EXTRA_GROWTH = parametersgrid%EXTRA_GROWTH - parameters%DIRT_SOOT = parametersgrid%DIRT_SOOT - parameters%BATS_COSZ = parametersgrid%BATS_COSZ - parameters%BATS_VIS_NEW = parametersgrid%BATS_VIS_NEW - parameters%BATS_NIR_NEW = parametersgrid%BATS_NIR_NEW - parameters%BATS_VIS_AGE = parametersgrid%BATS_VIS_AGE - parameters%BATS_NIR_AGE = parametersgrid%BATS_NIR_AGE - parameters%BATS_VIS_DIR = parametersgrid%BATS_VIS_DIR - parameters%BATS_NIR_DIR = parametersgrid%BATS_NIR_DIR parameters%RSURF_SNOW = parametersgrid%RSURF_SNOW(ix,iy) parameters%RSURF_EXP = parametersgrid%RSURF_EXP(ix,iy) parameters%ALBSAT(:) = parametersgrid%ALBSAT(ix,iy,:) @@ -134,20 +93,13 @@ subroutine ParametersVarInTransfer(parameters, parametersgrid, ix, iy) parameters%ALBICE(:) = parametersgrid%ALBICE(:) parameters%ALBLAK(:) = parametersgrid%ALBLAK(:) parameters%OMEGAS(:) = parametersgrid%OMEGAS(:) - parameters%BETADS = parametersgrid%BETADS - parameters%BETAIS = parametersgrid%BETAIS parameters%EG(:) = parametersgrid%EG(ix,iy,:) parameters%WSLMAX = parametersgrid%WSLMAX(ix,iy) parameters%max_liq_mass_fraction = parametersgrid%max_liq_mass_fraction(ix,iy) parameters%SNOW_RET_FAC = parametersgrid%SNOW_RET_FAC(ix,iy) - parameters%NBAND = parametersgrid%NBAND - parameters%MPE = parametersgrid%MPE parameters%TOPT = parametersgrid%TOPT(ix,iy) - parameters%O2 = parametersgrid%O2 - parameters%CO2 = parametersgrid%CO2 parameters%PSIWLT = parametersgrid%PSIWLT(ix,iy) parameters%TBOT = parametersgrid%TBOT(ix,iy) - parameters%GRAV = parametersgrid%GRAV parameters%rain_snow_thresh = parametersgrid%rain_snow_thresh(ix,iy) end subroutine @@ -228,50 +180,9 @@ subroutine ParametersVarOutTransfer(parameters, parametersgrid, ix, iy) parametersgrid%RHOS(ix,iy,:) = parameters%RHOS(:) parametersgrid%TAUL(ix,iy,:) = parameters%TAUL(:) parametersgrid%TAUS(ix,iy,:) = parameters%TAUS(:) - parametersgrid%ISURBAN = parameters%ISURBAN - parametersgrid%ISWATER = parameters%ISWATER - parametersgrid%ISBARREN = parameters%ISBARREN - parametersgrid%ISICE = parameters%ISICE - parametersgrid%ISCROP = parameters%ISCROP - parametersgrid%EBLFOREST = parameters%EBLFOREST - parametersgrid%NATURAL = parameters%NATURAL - parametersgrid%LOW_DENSITY_RESIDENTIAL = parameters%LOW_DENSITY_RESIDENTIAL - parametersgrid%HIGH_DENSITY_RESIDENTIAL = parameters%HIGH_DENSITY_RESIDENTIAL - parametersgrid%HIGH_INTENSITY_INDUSTRIAL = parameters%HIGH_INTENSITY_INDUSTRIAL - parametersgrid%SB = parameters%SB - parametersgrid%VKC = parameters%VKC - parametersgrid%TFRZ = parameters%TFRZ - parametersgrid%HSUB = parameters%HSUB - parametersgrid%HVAP = parameters%HVAP - parametersgrid%HFUS = parameters%HFUS - parametersgrid%CWAT = parameters%CWAT - parametersgrid%CICE = parameters%CICE - parametersgrid%CPAIR = parameters%CPAIR - parametersgrid%TKWAT = parameters%TKWAT - parametersgrid%TKICE = parameters%TKICE - parametersgrid%TKAIR = parameters%TKAIR - parametersgrid%RAIR = parameters%RAIR - parametersgrid%RW = parameters%RW - parametersgrid%DENH2O = parameters%DENH2O - parametersgrid%DENICE = parameters%DENICE - parametersgrid%THKW = parameters%THKW - parametersgrid%THKO = parameters%THKO - parametersgrid%THKQTZ = parameters%THKQTZ parametersgrid%SSI(ix,iy) = parameters%SSI parametersgrid%MFSNO(ix,iy) = parameters%MFSNO parametersgrid%Z0SNO(ix,iy) = parameters%Z0SNO - parametersgrid%SWEMX = parameters%SWEMX - parametersgrid%TAU0 = parameters%TAU0 - parametersgrid%GRAIN_GROWTH = parameters%GRAIN_GROWTH - parametersgrid%EXTRA_GROWTH = parameters%EXTRA_GROWTH - parametersgrid%DIRT_SOOT = parameters%DIRT_SOOT - parametersgrid%BATS_COSZ = parameters%BATS_COSZ - parametersgrid%BATS_VIS_NEW = parameters%BATS_VIS_NEW - parametersgrid%BATS_NIR_NEW = parameters%BATS_NIR_NEW - parametersgrid%BATS_VIS_AGE = parameters%BATS_VIS_AGE - parametersgrid%BATS_NIR_AGE = parameters%BATS_NIR_AGE - parametersgrid%BATS_VIS_DIR = parameters%BATS_VIS_DIR - parametersgrid%BATS_NIR_DIR = parameters%BATS_NIR_DIR parametersgrid%RSURF_SNOW(ix,iy) = parameters%RSURF_SNOW parametersgrid%RSURF_EXP(ix,iy) = parameters%RSURF_EXP parametersgrid%ALBSAT(ix,iy,:) = parameters%ALBSAT(:) @@ -279,19 +190,12 @@ subroutine ParametersVarOutTransfer(parameters, parametersgrid, ix, iy) parametersgrid%ALBICE(:) = parameters%ALBICE(:) parametersgrid%ALBLAK(:) = parameters%ALBLAK(:) parametersgrid%OMEGAS(:) = parameters%OMEGAS(:) - parametersgrid%BETADS = parameters%BETADS - parametersgrid%BETAIS = parameters%BETAIS parametersgrid%EG(ix,iy,:) = parameters%EG(:) parametersgrid%WSLMAX(ix,iy) = parameters%WSLMAX parametersgrid%max_liq_mass_fraction(ix,iy) = parameters%max_liq_mass_fraction parametersgrid%SNOW_RET_FAC(ix,iy) = parameters%SNOW_RET_FAC - parametersgrid%NBAND = parameters%NBAND - parametersgrid%MPE = parameters%MPE parametersgrid%TOPT(ix,iy) = parameters%TOPT - parametersgrid%O2 = parameters%O2 - parametersgrid%CO2 = parameters%CO2 parametersgrid%PSIWLT(ix,iy) = parameters%PSIWLT - parametersgrid%GRAV = parameters%GRAV parametersgrid%rain_snow_thresh(ix,iy) = parameters%rain_snow_thresh end subroutine ParametersVarOutTransfer From 594a39d3fec2312c551223826426fc3af66f82f5 Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Thu, 24 Aug 2023 11:17:25 -0400 Subject: [PATCH 07/20] Adding calls to column model InitTransfer subroutines to transfer spatially-static values prior to spatial loop --- src/RunModule.f90 | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/RunModule.f90 b/src/RunModule.f90 index cecba994..fb7c4075 100644 --- a/src/RunModule.f90 +++ b/src/RunModule.f90 @@ -350,7 +350,7 @@ SUBROUTINE solve_noahowp_grid(noahowpgrid) #endif !--------------------------------------------------------------------- - ! Initialize noahowp_type variables and transfer values + ! Initialize noahowp_type variables and transfer values for variables that do not vary in x and y dimensions !--------------------------------------------------------------------- call levels%Init() call levels%InitTransfer(levelsgrid) @@ -359,9 +359,13 @@ SUBROUTINE solve_noahowp_grid(noahowpgrid) call options%Init() call options%InitTransfer(optionsgrid) call parameters%Init(namelist) + call parameters%InitTransfer(parametersgrid) call forcing%Init() + call forcing%InitTransfer(forcinggrid) call energy%Init(namelist) + call energy%InitTransfer(energygrid) call water%Init(namelist) + call water%InitTransfer(watergrid) !--------------------------------------------------------------------- ! Iterate over x and y dimensions @@ -370,13 +374,13 @@ SUBROUTINE solve_noahowp_grid(noahowpgrid) do iy = 1, noahowpgrid%domaingrid%n_y !--------------------------------------------------------------------- - ! Transfer variable values from noahowpgrid_type to noahowp_type + ! Transfer variable values from noahowpgrid_type to noahowp_type for variables that do vary in x and y dimensions !--------------------------------------------------------------------- call DomainVarInTransfer (domain, domaingrid, ix, iy) call LevelsVarInTransfer (levels, levelsgrid, ix, iy) call EnergyVarInTransfer (energy, energygrid, ix, iy) call ForcingVarInTransfer (forcing, forcinggrid, ix, iy) - call OptionsVarInTransfer (options, optionsgrid, ix, iy) ) + call OptionsVarInTransfer (options, optionsgrid, ix, iy) call ParametersVarInTransfer (parameters, parametersgrid, ix, iy) call WaterVarInTransfer (water, watergrid, ix, iy) From a2b08310a7225d2372238cd8ad322b18451c068d Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Fri, 25 Aug 2023 15:51:23 -0400 Subject: [PATCH 08/20] Cleanup --- src/DomainTypeTransfer.f90 | 1 - 1 file changed, 1 deletion(-) diff --git a/src/DomainTypeTransfer.f90 b/src/DomainTypeTransfer.f90 index 9474c996..e38869fd 100644 --- a/src/DomainTypeTransfer.f90 +++ b/src/DomainTypeTransfer.f90 @@ -16,7 +16,6 @@ subroutine DomainVarInTransfer(domain, domaingrid, ix, iy) integer, intent(in) :: ix integer, intent(in) :: iy - !domain%DT = domaingrid%DT domain%ix = ix domain%iy = iy domain%curr_datetime = domaingrid%sim_datetimes(domaingrid%itime) From e1910ec619ad82d60fabb5b6d1fd63cc55640905 Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Fri, 25 Aug 2023 15:52:58 -0400 Subject: [PATCH 09/20] Remove unnecessary transferring-out of parameter_type variables --- src/ParametersTypeTransfer.f90 | 77 ---------------------------------- 1 file changed, 77 deletions(-) diff --git a/src/ParametersTypeTransfer.f90 b/src/ParametersTypeTransfer.f90 index c7747d95..d673065c 100644 --- a/src/ParametersTypeTransfer.f90 +++ b/src/ParametersTypeTransfer.f90 @@ -113,90 +113,13 @@ subroutine ParametersVarOutTransfer(parameters, parametersgrid, ix, iy) integer, intent(in) :: ix integer, intent(in) :: iy - parametersgrid%bexp(ix,iy,:) = parameters%bexp(:) - parametersgrid%smcmax(ix,iy,:) = parameters%smcmax(:) - parametersgrid%smcwlt(ix,iy,:) = parameters%smcwlt(:) - parametersgrid%smcref(ix,iy,:) = parameters%smcref(:) - parametersgrid%dksat(ix,iy,:) = parameters%dksat(:) - parametersgrid%dwsat(ix,iy,:) = parameters%dwsat(:) - parametersgrid%psisat(ix,iy,:) = parameters%psisat(:) - parametersgrid%bvic(ix,iy) = parameters%bvic - parametersgrid%AXAJ(ix,iy) = parameters%AXAJ - parametersgrid%BXAJ(ix,iy) = parameters%BXAJ - parametersgrid%XXAJ(ix,iy) = parameters%XXAJ - parametersgrid%BBVIC(ix,iy) = parameters%BBVIC - parametersgrid%G(ix,iy) = parameters%G - parametersgrid%QUARTZ(ix,iy) = parameters%QUARTZ - parametersgrid%kdt(ix,iy) = parameters%kdt - parametersgrid%refkdt(ix,iy) = parameters%refkdt - parametersgrid%refdk(ix,iy) = parameters%refdk - parametersgrid%csoil(ix,iy) = parameters%csoil - parametersgrid%Z0(ix,iy) = parameters%Z0 - parametersgrid%CZIL(ix,iy) = parameters%CZIL - parametersgrid%ZBOT(ix,iy) = parameters%ZBOT - parametersgrid%frzx(ix,iy) = parameters%frzx - parametersgrid%slope(ix,iy) = parameters%slope - parametersgrid%timean(ix,iy) = parameters%timean - parametersgrid%fsatmx(ix,iy) = parameters%fsatmx - parametersgrid%ZWT_INIT(ix,iy) = parameters%ZWT_INIT - parametersgrid%urban_flag(ix,iy) = parameters%urban_flag - parametersgrid%LAIM(ix,iy,:) = parameters%LAIM(:) - parametersgrid%SAIM(ix,iy,:) = parameters%SAIM(:) parametersgrid%LAI(ix,iy) = parameters%LAI parametersgrid%SAI(ix,iy) = parameters%SAI - parametersgrid%CH2OP(ix,iy) = parameters%CH2OP - parametersgrid%NROOT(ix,iy) = parameters%NROOT - parametersgrid%HVT(ix,iy) = parameters%HVT - parametersgrid%HVB(ix,iy) = parameters%HVB - parametersgrid%TMIN(ix,iy) = parameters%TMIN - parametersgrid%SHDFAC(ix,iy) = parameters%SHDFAC - parametersgrid%SHDMAX(ix,iy) = parameters%SHDMAX - parametersgrid%Z0MVT(ix,iy) = parameters%Z0MVT - parametersgrid%RC(ix,iy) = parameters%RC - parametersgrid%XL(ix,iy) = parameters%XL - parametersgrid%BP(ix,iy) = parameters%BP - parametersgrid%FOLNMX(ix,iy) = parameters%FOLNMX - parametersgrid%QE25(ix,iy) = parameters%QE25 - parametersgrid%VCMX25(ix,iy) = parameters%VCMX25 - parametersgrid%MP(ix,iy) = parameters%MP - parametersgrid%RGL(ix,iy) = parameters%RGL - parametersgrid%RSMIN(ix,iy) = parameters%RSMIN - parametersgrid%HS(ix,iy) = parameters%HS - parametersgrid%AKC(ix,iy) = parameters%AKC - parametersgrid%AKO(ix,iy) = parameters%AKO - parametersgrid%AVCMX(ix,iy) = parameters%AVCMX - parametersgrid%RSMAX(ix,iy) = parameters%RSMAX - parametersgrid%CWP(ix,iy) = parameters%CWP - parametersgrid%C3PSN(ix,iy) = parameters%C3PSN - parametersgrid%DLEAF(ix,iy) = parameters%DLEAF - parametersgrid%KC25(ix,iy) = parameters%KC25 - parametersgrid%KO25(ix,iy) = parameters%KO25 parametersgrid%ELAI(ix,iy) = parameters%ELAI parametersgrid%ESAI(ix,iy) = parameters%ESAI parametersgrid%VAI(ix,iy) = parameters%VAI parametersgrid%VEG(ix,iy) = parameters%VEG parametersgrid%FVEG(ix,iy) = parameters%FVEG - parametersgrid%RHOL(ix,iy,:) = parameters%RHOL(:) - parametersgrid%RHOS(ix,iy,:) = parameters%RHOS(:) - parametersgrid%TAUL(ix,iy,:) = parameters%TAUL(:) - parametersgrid%TAUS(ix,iy,:) = parameters%TAUS(:) - parametersgrid%SSI(ix,iy) = parameters%SSI - parametersgrid%MFSNO(ix,iy) = parameters%MFSNO - parametersgrid%Z0SNO(ix,iy) = parameters%Z0SNO - parametersgrid%RSURF_SNOW(ix,iy) = parameters%RSURF_SNOW - parametersgrid%RSURF_EXP(ix,iy) = parameters%RSURF_EXP - parametersgrid%ALBSAT(ix,iy,:) = parameters%ALBSAT(:) - parametersgrid%ALBDRY(ix,iy,:) = parameters%ALBDRY(:) - parametersgrid%ALBICE(:) = parameters%ALBICE(:) - parametersgrid%ALBLAK(:) = parameters%ALBLAK(:) - parametersgrid%OMEGAS(:) = parameters%OMEGAS(:) - parametersgrid%EG(ix,iy,:) = parameters%EG(:) - parametersgrid%WSLMAX(ix,iy) = parameters%WSLMAX - parametersgrid%max_liq_mass_fraction(ix,iy) = parameters%max_liq_mass_fraction - parametersgrid%SNOW_RET_FAC(ix,iy) = parameters%SNOW_RET_FAC - parametersgrid%TOPT(ix,iy) = parameters%TOPT - parametersgrid%PSIWLT(ix,iy) = parameters%PSIWLT - parametersgrid%rain_snow_thresh(ix,iy) = parameters%rain_snow_thresh end subroutine ParametersVarOutTransfer From fdccb17fb5490ce2a6b01499af2c23d21b5a17ce Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Mon, 28 Aug 2023 09:14:55 -0400 Subject: [PATCH 10/20] Removing unnecessary transfer-outs --- src/ForcingTypeTransfer.f90 | 54 ++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/src/ForcingTypeTransfer.f90 b/src/ForcingTypeTransfer.f90 index f47b8413..32ba936a 100644 --- a/src/ForcingTypeTransfer.f90 +++ b/src/ForcingTypeTransfer.f90 @@ -55,33 +55,33 @@ subroutine ForcingVarOutTransfer(forcing, forcinggrid, ix, iy) integer, intent(in) :: ix integer, intent(in) :: iy - forcinggrid%SFCPRS(ix,iy) = forcing%SFCPRS - forcinggrid%SFCTMP(ix,iy) = forcing%SFCTMP - forcinggrid%Q2(ix,iy) = forcing%Q2 - forcinggrid%PRCP(ix,iy) = forcing%PRCP - forcinggrid%PRCPCONV(ix,iy) = forcing%PRCPCONV - forcinggrid%PRCPNONC(ix,iy) = forcing%PRCPNONC - forcinggrid%PRCPSHCV(ix,iy) = forcing%PRCPSHCV - forcinggrid%PRCPSNOW(ix,iy) = forcing%PRCPSNOW - forcinggrid%PRCPGRPL(ix,iy) = forcing%PRCPGRPL - forcinggrid%PRCPHAIL(ix,iy) = forcing%PRCPHAIL - forcinggrid%SOLDN(ix,iy) = forcing%SOLDN - forcinggrid%LWDN(ix,iy) = forcing%LWDN - forcinggrid%FOLN(ix,iy) = forcing%FOLN - forcinggrid%O2PP(ix,iy) = forcing%O2PP - forcinggrid%CO2PP(ix,iy) = forcing%CO2PP - forcinggrid%UU(ix,iy) = forcing%UU - forcinggrid%VV(ix,iy) = forcing%VV - forcinggrid%TBOT(ix,iy) = forcing%TBOT - forcinggrid%UR(ix,iy) = forcing%UR - forcinggrid%THAIR(ix,iy) = forcing%THAIR - forcinggrid%QAIR(ix,iy) = forcing%QAIR - forcinggrid%EAIR(ix,iy) = forcing%EAIR - forcinggrid%RHOAIR(ix,iy) = forcing%RHOAIR - forcinggrid%FPICE(ix,iy) = forcing%FPICE - forcinggrid%SWDOWN(ix,iy) = forcing%SWDOWN - forcinggrid%SOLAD(ix,iy,:) = forcing%SOLAD(:) - forcinggrid%SOLAI(ix,iy,:) = forcing%SOLAI(:) + !forcinggrid%SFCPRS(ix,iy) = forcing%SFCPRS + !forcinggrid%SFCTMP(ix,iy) = forcing%SFCTMP + !forcinggrid%Q2(ix,iy) = forcing%Q2 + !forcinggrid%PRCP(ix,iy) = forcing%PRCP + !forcinggrid%PRCPCONV(ix,iy) = forcing%PRCPCONV + !forcinggrid%PRCPNONC(ix,iy) = forcing%PRCPNONC + !forcinggrid%PRCPSHCV(ix,iy) = forcing%PRCPSHCV + !forcinggrid%PRCPSNOW(ix,iy) = forcing%PRCPSNOW + !forcinggrid%PRCPGRPL(ix,iy) = forcing%PRCPGRPL + !forcinggrid%PRCPHAIL(ix,iy) = forcing%PRCPHAIL + !forcinggrid%SOLDN(ix,iy) = forcing%SOLDN + !forcinggrid%LWDN(ix,iy) = forcing%LWDN + !forcinggrid%FOLN(ix,iy) = forcing%FOLN + !forcinggrid%O2PP(ix,iy) = forcing%O2PP + !forcinggrid%CO2PP(ix,iy) = forcing%CO2PP + !forcinggrid%UU(ix,iy) = forcing%UU + !forcinggrid%VV(ix,iy) = forcing%VV + !forcinggrid%TBOT(ix,iy) = forcing%TBOT + !forcinggrid%UR(ix,iy) = forcing%UR + !forcinggrid%THAIR(ix,iy) = forcing%THAIR + !forcinggrid%QAIR(ix,iy) = forcing%QAIR + !forcinggrid%EAIR(ix,iy) = forcing%EAIR + !forcinggrid%RHOAIR(ix,iy) = forcing%RHOAIR + !forcinggrid%FPICE(ix,iy) = forcing%FPICE + !forcinggrid%SWDOWN(ix,iy) = forcing%SWDOWN + !orcinggrid%SOLAD(ix,iy,:) = forcing%SOLAD(:) + !forcinggrid%SOLAI(ix,iy,:) = forcing%SOLAI(:) end subroutine ForcingVarOutTransfer From df81139ee05d0ae08c314d2b3ccb9f62b3ce8e96 Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Mon, 28 Aug 2023 09:16:51 -0400 Subject: [PATCH 11/20] Cleanup --- src/ForcingTypeTransfer.f90 | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/src/ForcingTypeTransfer.f90 b/src/ForcingTypeTransfer.f90 index 32ba936a..15836e5f 100644 --- a/src/ForcingTypeTransfer.f90 +++ b/src/ForcingTypeTransfer.f90 @@ -55,33 +55,7 @@ subroutine ForcingVarOutTransfer(forcing, forcinggrid, ix, iy) integer, intent(in) :: ix integer, intent(in) :: iy - !forcinggrid%SFCPRS(ix,iy) = forcing%SFCPRS - !forcinggrid%SFCTMP(ix,iy) = forcing%SFCTMP - !forcinggrid%Q2(ix,iy) = forcing%Q2 - !forcinggrid%PRCP(ix,iy) = forcing%PRCP - !forcinggrid%PRCPCONV(ix,iy) = forcing%PRCPCONV - !forcinggrid%PRCPNONC(ix,iy) = forcing%PRCPNONC - !forcinggrid%PRCPSHCV(ix,iy) = forcing%PRCPSHCV - !forcinggrid%PRCPSNOW(ix,iy) = forcing%PRCPSNOW - !forcinggrid%PRCPGRPL(ix,iy) = forcing%PRCPGRPL - !forcinggrid%PRCPHAIL(ix,iy) = forcing%PRCPHAIL - !forcinggrid%SOLDN(ix,iy) = forcing%SOLDN - !forcinggrid%LWDN(ix,iy) = forcing%LWDN - !forcinggrid%FOLN(ix,iy) = forcing%FOLN - !forcinggrid%O2PP(ix,iy) = forcing%O2PP - !forcinggrid%CO2PP(ix,iy) = forcing%CO2PP - !forcinggrid%UU(ix,iy) = forcing%UU - !forcinggrid%VV(ix,iy) = forcing%VV - !forcinggrid%TBOT(ix,iy) = forcing%TBOT - !forcinggrid%UR(ix,iy) = forcing%UR - !forcinggrid%THAIR(ix,iy) = forcing%THAIR - !forcinggrid%QAIR(ix,iy) = forcing%QAIR - !forcinggrid%EAIR(ix,iy) = forcing%EAIR - !forcinggrid%RHOAIR(ix,iy) = forcing%RHOAIR - !forcinggrid%FPICE(ix,iy) = forcing%FPICE - !forcinggrid%SWDOWN(ix,iy) = forcing%SWDOWN - !orcinggrid%SOLAD(ix,iy,:) = forcing%SOLAD(:) - !forcinggrid%SOLAI(ix,iy,:) = forcing%SOLAI(:) + !Nothing to do end subroutine ForcingVarOutTransfer From 55b9b7bbd53dda1d566db295a433e3522d366a49 Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Mon, 28 Aug 2023 14:36:38 -0400 Subject: [PATCH 12/20] Cleanup --- src/DomainType.f90 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/DomainType.f90 b/src/DomainType.f90 index c055045e..ece074c2 100644 --- a/src/DomainType.f90 +++ b/src/DomainType.f90 @@ -111,8 +111,8 @@ end subroutine InitDefault subroutine InitTransfer(this,domaingrid) - class(domain_type) :: this - class(domaingrid_type) :: domaingrid + class(domain_type), intent(inout) :: this + type(domaingrid_type), intent(in) :: domaingrid this%DT = domaingrid%DT this%dx = domaingrid%dx From 62d3135c9ed6ec216ed43227a3adb517d8cb1bd3 Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Mon, 28 Aug 2023 15:28:58 -0400 Subject: [PATCH 13/20] Re-adding variables to transfer-out subroutine --- src/ForcingTypeTransfer.f90 | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/ForcingTypeTransfer.f90 b/src/ForcingTypeTransfer.f90 index 15836e5f..6d90e1da 100644 --- a/src/ForcingTypeTransfer.f90 +++ b/src/ForcingTypeTransfer.f90 @@ -55,7 +55,33 @@ subroutine ForcingVarOutTransfer(forcing, forcinggrid, ix, iy) integer, intent(in) :: ix integer, intent(in) :: iy - !Nothing to do + forcinggrid%SFCPRS(ix,iy) = forcing%SFCPRS + forcinggrid%SFCTMP(ix,iy) = forcing%SFCTMP + forcinggrid%Q2(ix,iy) = forcing%Q2 + forcinggrid%PRCP(ix,iy) = forcing%PRCP + forcinggrid%PRCPCONV(ix,iy) = forcing%PRCPCONV + forcinggrid%PRCPNONC(ix,iy) = forcing%PRCPNONC + forcinggrid%PRCPSHCV(ix,iy) = forcing%PRCPSHCV + forcinggrid%PRCPSNOW(ix,iy) = forcing%PRCPSNOW + forcinggrid%PRCPGRPL(ix,iy) = forcing%PRCPGRPL + forcinggrid%PRCPHAIL(ix,iy) = forcing%PRCPHAIL + forcinggrid%SOLDN(ix,iy) = forcing%SOLDN + forcinggrid%LWDN(ix,iy) = forcing%LWDN + forcinggrid%FOLN(ix,iy) = forcing%FOLN + forcinggrid%O2PP(ix,iy) = forcing%O2PP + forcinggrid%CO2PP(ix,iy) = forcing%CO2PP + forcinggrid%UU(ix,iy) = forcing%UU + forcinggrid%VV(ix,iy) = forcing%VV + forcinggrid%TBOT(ix,iy) = forcing%TBOT + forcinggrid%UR(ix,iy) = forcing%UR + forcinggrid%THAIR(ix,iy) = forcing%THAIR + forcinggrid%QAIR(ix,iy) = forcing%QAIR + forcinggrid%EAIR(ix,iy) = forcing%EAIR + forcinggrid%RHOAIR(ix,iy) = forcing%RHOAIR + forcinggrid%FPICE(ix,iy) = forcing%FPICE + forcinggrid%SWDOWN(ix,iy) = forcing%SWDOWN + forcinggrid%SOLAD(ix,iy,:) = forcing%SOLAD(:) + forcinggrid%SOLAI(ix,iy,:) = forcing%SOLAI(:) end subroutine ForcingVarOutTransfer From 95f8cec441ee74c561aeb614adb4ce1679dbf32f Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Mon, 28 Aug 2023 15:33:22 -0400 Subject: [PATCH 14/20] Cleanup --- src/ForcingTypeTransfer.f90 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ForcingTypeTransfer.f90 b/src/ForcingTypeTransfer.f90 index 6d90e1da..f47b8413 100644 --- a/src/ForcingTypeTransfer.f90 +++ b/src/ForcingTypeTransfer.f90 @@ -64,7 +64,7 @@ subroutine ForcingVarOutTransfer(forcing, forcinggrid, ix, iy) forcinggrid%PRCPSHCV(ix,iy) = forcing%PRCPSHCV forcinggrid%PRCPSNOW(ix,iy) = forcing%PRCPSNOW forcinggrid%PRCPGRPL(ix,iy) = forcing%PRCPGRPL - forcinggrid%PRCPHAIL(ix,iy) = forcing%PRCPHAIL + forcinggrid%PRCPHAIL(ix,iy) = forcing%PRCPHAIL forcinggrid%SOLDN(ix,iy) = forcing%SOLDN forcinggrid%LWDN(ix,iy) = forcing%LWDN forcinggrid%FOLN(ix,iy) = forcing%FOLN From a251dab85d50294df96a7cdebe607021afa10536 Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Tue, 29 Aug 2023 07:59:55 -0400 Subject: [PATCH 15/20] Cleanup --- src/RunModule.f90 | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/src/RunModule.f90 b/src/RunModule.f90 index fb7c4075..93919c83 100644 --- a/src/RunModule.f90 +++ b/src/RunModule.f90 @@ -312,7 +312,6 @@ SUBROUTINE solve_noahowp_grid(noahowpgrid) integer :: iunit = 10 real :: read_UU, read_VV, read_SFCTMP, read_Q2, read_SFCPRS !to read in forcing real :: read_SOLDN, read_LWDN, read_PRCP !to read in forcing - integer :: idt !to iterate nowdate associate(namelist => noahowpgrid%namelist, & domain => noahowp%domain, & @@ -350,7 +349,7 @@ SUBROUTINE solve_noahowp_grid(noahowpgrid) #endif !--------------------------------------------------------------------- - ! Initialize noahowp_type variables and transfer values for variables that do not vary in x and y dimensions + ! Initialize noahowp_type variables and transfer values for spatial constants !--------------------------------------------------------------------- call levels%Init() call levels%InitTransfer(levelsgrid) @@ -374,7 +373,7 @@ SUBROUTINE solve_noahowp_grid(noahowpgrid) do iy = 1, noahowpgrid%domaingrid%n_y !--------------------------------------------------------------------- - ! Transfer variable values from noahowpgrid_type to noahowp_type for variables that do vary in x and y dimensions + ! Transfer all other variable values from noahowpgrid_type to noahowp_type !--------------------------------------------------------------------- call DomainVarInTransfer (domain, domaingrid, ix, iy) call LevelsVarInTransfer (levels, levelsgrid, ix, iy) @@ -410,10 +409,6 @@ END SUBROUTINE solve_noahowp_grid SUBROUTINE solve_noahowp(noahowp) type (noahowp_type), intent (inout) :: noahowp - integer, parameter :: iunit = 10 ! Fortran unit number to attach to the opened file - integer :: forcing_timestep ! integer time step (set to dt) for some subroutine calls - integer :: ierr ! error code for reading forcing data - integer :: curr_yr, curr_mo, curr_dy, curr_hr, curr_min, curr_sec ! current UNIX timestep details associate(levels => noahowp%levels, & domain => noahowp%domain, & From e3654d189a95b3e5f1825b8dac65d271f309973e Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Tue, 29 Aug 2023 08:27:05 -0400 Subject: [PATCH 16/20] Giving namelist_type instance to all init subroutines for sake of consistency --- src/ForcingType.f90 | 10 ++++++---- src/LevelsType.f90 | 6 ++++-- src/OptionsType.f90 | 8 +++++--- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/src/ForcingType.f90 b/src/ForcingType.f90 index 5f8dc566..bb4342fe 100644 --- a/src/ForcingType.f90 +++ b/src/ForcingType.f90 @@ -1,5 +1,6 @@ module ForcingType +use NamelistRead, only: namelist_type use ForcingGridType, only: forcinggrid_type implicit none save @@ -54,9 +55,10 @@ module ForcingType contains - subroutine Init(this) + subroutine Init(this,namelist) - class(forcing_type) :: this + class(forcing_type), intent(inout) :: this + type(namelist_type), intent(in) :: namelist call this%InitAllocate() call this%InitDefault() @@ -65,7 +67,7 @@ end subroutine Init subroutine InitAllocate(this) - class(forcing_type) :: this + class(forcing_type), intent(inout) :: this if(.NOT.allocated(this%SOLAD)) allocate(this%SOLAD (2)) if(.NOT.allocated(this%SOLAI)) allocate(this%SOLAI (2)) @@ -74,7 +76,7 @@ end subroutine InitAllocate subroutine InitDefault(this) - class(forcing_type) :: this + class(forcing_type), intent(inout) :: this this%SFCPRS = huge(1.0) this%SFCPRS = huge(1.0) diff --git a/src/LevelsType.f90 b/src/LevelsType.f90 index 905acd9a..eddd1dc7 100644 --- a/src/LevelsType.f90 +++ b/src/LevelsType.f90 @@ -1,5 +1,6 @@ module LevelsType +use NamelistRead, only: namelist_type use LevelsGridType, only: levelsgrid_type implicit none save @@ -21,9 +22,10 @@ module LevelsType contains - subroutine Init(this) + subroutine Init(this,namelist) - class(levels_type) :: this + class(levels_type), intent(inout) :: this + type(namelist_type), intent(in) :: namelist call this%InitDefault() diff --git a/src/OptionsType.f90 b/src/OptionsType.f90 index ac009770..d54b9367 100644 --- a/src/OptionsType.f90 +++ b/src/OptionsType.f90 @@ -1,5 +1,6 @@ module OptionsType +use NamelistRead, only: namelist_type use OptionsGridType, only: optionsgrid_type implicit none save @@ -115,9 +116,10 @@ module OptionsType contains - subroutine Init(this) + subroutine Init(this,namelist) - class(options_type), intent(out) :: this + class(options_type), intent(inout) :: this + type(namelist_type), intent(in) :: namelist call this%InitDefault() @@ -125,7 +127,7 @@ end subroutine Init subroutine InitDefault(this) - class(options_type), intent(out) :: this + class(options_type), intent(inout) :: this this%opt_snf = huge(1) this%opt_run = huge(1) From 5641a70163f6db5321389213a05b07a1aabbf58f Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Tue, 29 Aug 2023 08:27:47 -0400 Subject: [PATCH 17/20] Give namelist_type instance to Init calls --- src/RunModule.f90 | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/RunModule.f90 b/src/RunModule.f90 index 93919c83..f63a8379 100644 --- a/src/RunModule.f90 +++ b/src/RunModule.f90 @@ -351,15 +351,15 @@ SUBROUTINE solve_noahowp_grid(noahowpgrid) !--------------------------------------------------------------------- ! Initialize noahowp_type variables and transfer values for spatial constants !--------------------------------------------------------------------- - call levels%Init() + call levels%Init(namelist) call levels%InitTransfer(levelsgrid) call domain%Init(namelist) call domain%InitTransfer(domaingrid) - call options%Init() + call options%Init(namelist) call options%InitTransfer(optionsgrid) call parameters%Init(namelist) call parameters%InitTransfer(parametersgrid) - call forcing%Init() + call forcing%Init(namelist) call forcing%InitTransfer(forcinggrid) call energy%Init(namelist) call energy%InitTransfer(energygrid) From 4ac620143c36cc517443e22e3ec6cc8e55581d0b Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Thu, 31 Aug 2023 10:29:32 -0400 Subject: [PATCH 18/20] InitTransfer now private in all noahowp_type subtypes and is called within Init --- src/DomainType.f90 | 10 ++++++---- src/EnergyType.f90 | 14 ++++++++------ src/ForcingType.f90 | 10 ++++++---- src/LevelsType.f90 | 16 +++++++++------- src/OptionsType.f90 | 10 ++++++---- src/ParametersType.f90 | 14 ++++++++------ src/WaterType.f90 | 16 +++++++++------- 7 files changed, 52 insertions(+), 38 deletions(-) diff --git a/src/DomainType.f90 b/src/DomainType.f90 index ece074c2..4848c949 100644 --- a/src/DomainType.f90 +++ b/src/DomainType.f90 @@ -43,19 +43,21 @@ module DomainType procedure, public :: Init procedure, private :: InitAllocate procedure, private :: InitDefault - procedure, public :: InitTransfer + procedure, private :: InitTransfer end type domain_type contains - subroutine Init(this, namelist) + subroutine Init(this, namelist, domaingrid) - class(domain_type) :: this - type(namelist_type) :: namelist + class(domain_type), intent(inout) :: this + type(namelist_type), intent(in) :: namelist + type(domaingrid_type), intent(in) :: domaingrid call this%InitAllocate(namelist) call this%InitDefault() + call this%InitTransfer(domaingrid) end subroutine Init diff --git a/src/EnergyType.f90 b/src/EnergyType.f90 index 75e2fbaa..bd76b803 100644 --- a/src/EnergyType.f90 +++ b/src/EnergyType.f90 @@ -162,26 +162,28 @@ module EnergyType procedure, public :: Init procedure, private :: InitAllocate procedure, private :: InitDefault - procedure, public :: InitTransfer + procedure, private :: InitTransfer end type energy_type contains - subroutine Init(this, namelist) + subroutine Init(this, namelist, energygrid) - class(energy_type) :: this - type(namelist_type) :: namelist + class(energy_type), intent(inout) :: this + type(namelist_type), intent(in) :: namelist + type(energygrid_type), intent(in) :: energygrid call this%InitAllocate(namelist) call this%InitDefault() + call this%InitTransfer(energygrid) end subroutine Init subroutine InitAllocate(this, namelist) - class(energy_type) :: this - type(namelist_type) :: namelist + class(energy_type), intent(inout) :: this + type(namelist_type), intent(in) :: namelist associate(nsnow => namelist%nsnow, & nsoil => namelist%nsoil) diff --git a/src/ForcingType.f90 b/src/ForcingType.f90 index bb4342fe..67fcf98a 100644 --- a/src/ForcingType.f90 +++ b/src/ForcingType.f90 @@ -49,19 +49,21 @@ module ForcingType procedure, public :: Init procedure, private :: InitAllocate procedure, private :: InitDefault - procedure, public :: InitTransfer + procedure, private :: InitTransfer end type forcing_type contains - subroutine Init(this,namelist) + subroutine Init(this,namelist,forcinggrid) - class(forcing_type), intent(inout) :: this - type(namelist_type), intent(in) :: namelist + class(forcing_type), intent(inout) :: this + type(namelist_type), intent(in) :: namelist + type(forcinggrid_type), intent(in) :: forcinggrid call this%InitAllocate() call this%InitDefault() + call this%InitTransfer(forcinggrid) end subroutine Init diff --git a/src/LevelsType.f90 b/src/LevelsType.f90 index eddd1dc7..e2bbf046 100644 --- a/src/LevelsType.f90 +++ b/src/LevelsType.f90 @@ -16,24 +16,26 @@ module LevelsType procedure, public :: Init procedure, private :: InitDefault - procedure, public :: InitTransfer + procedure, private :: InitTransfer end type levels_type contains - subroutine Init(this,namelist) + subroutine Init(this,namelist,levelsgrid) - class(levels_type), intent(inout) :: this - type(namelist_type), intent(in) :: namelist + class(levels_type), intent(inout) :: this + type(namelist_type), intent(in) :: namelist + type(levelsgrid_type), intent(in) :: levelsgrid call this%InitDefault() + call this%InitTransfer(levelsgrid) end subroutine Init subroutine InitDefault(this) - class(levels_type) :: this + class(levels_type), intent(inout) :: this this%nsoil = huge(1) this%nsnow = huge(1) @@ -43,8 +45,8 @@ end subroutine InitDefault subroutine InitTransfer(this,levelsgrid) - class(levels_type) :: this - type(levelsgrid_type) :: levelsgrid + class(levels_type), intent(inout) :: this + type(levelsgrid_type), intent(in) :: levelsgrid this%nsoil = levelsgrid%nsoil this%nsnow = levelsgrid%nsnow diff --git a/src/OptionsType.f90 b/src/OptionsType.f90 index d54b9367..a9640b15 100644 --- a/src/OptionsType.f90 +++ b/src/OptionsType.f90 @@ -110,18 +110,20 @@ module OptionsType procedure, public :: Init procedure, private :: InitDefault - procedure, public :: InitTransfer + procedure, private :: InitTransfer end type options_type contains - subroutine Init(this,namelist) + subroutine Init(this,namelist,optionsgrid) - class(options_type), intent(inout) :: this - type(namelist_type), intent(in) :: namelist + class(options_type), intent(inout) :: this + type(namelist_type), intent(in) :: namelist + type(optionsgrid_type), intent(in) :: optionsgrid call this%InitDefault() + call this%InitTransfer(optionsgrid) end subroutine Init diff --git a/src/ParametersType.f90 b/src/ParametersType.f90 index a02253e6..b983bb8b 100644 --- a/src/ParametersType.f90 +++ b/src/ParametersType.f90 @@ -148,28 +148,30 @@ module ParametersType procedure, public :: Init procedure, private :: InitAllocate procedure, private :: InitDefault - procedure, public :: InitTransfer + procedure, private :: InitTransfer end type parameters_type contains - subroutine Init(this, namelist) + subroutine Init(this, namelist, parametersgrid) implicit none - class(parameters_type) :: this - class(namelist_type), intent(in) :: namelist + class(parameters_type), intent(inout) :: this + type(namelist_type), intent(in) :: namelist + type(parametersgrid_type), intent(in) :: parametersgrid call this%InitAllocate(namelist) call this%InitDefault() + call this%InitTransfer(parametersgrid) end subroutine Init subroutine InitAllocate(this, namelist) implicit none - class(parameters_type) :: this - class(namelist_type), intent(in) :: namelist + class(parameters_type), intent(inout) :: this + type(namelist_type), intent(in) :: namelist associate(nsoil => namelist%nsoil) diff --git a/src/WaterType.f90 b/src/WaterType.f90 index 3c260b8e..36df7585 100644 --- a/src/WaterType.f90 +++ b/src/WaterType.f90 @@ -85,26 +85,28 @@ module WaterType procedure, public :: Init procedure, private :: InitAllocate procedure, private :: InitDefault - procedure, public :: InitTransfer + procedure, private :: InitTransfer end type water_type contains - subroutine Init(this, namelist) + subroutine Init(this, namelist, watergrid) - class(water_type) :: this - type(namelist_type) :: namelist + class(water_type), intent(inout) :: this + type(namelist_type), intent(in) :: namelist + type(watergrid_type), intent(in) :: watergrid call this%InitAllocate(namelist) call this%InitDefault() + call this%InitTransfer(watergrid) end subroutine Init subroutine InitAllocate(this, namelist) - class(water_type) :: this - type(namelist_type) :: namelist + class(water_type), intent(inout) :: this + type(namelist_type), intent(in) :: namelist associate(nsoil => namelist%nsoil, & nsnow => namelist%nsnow) @@ -131,7 +133,7 @@ end subroutine InitAllocate subroutine InitDefault(this) - class(water_type) :: this + class(water_type), intent(inout) :: this this%qinsur = huge(1.0) this%qseva = huge(1.0) From 7f29ff4889cd26b4f742fbeff1d3d843dc2eb2e4 Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Thu, 31 Aug 2023 10:32:31 -0400 Subject: [PATCH 19/20] Revising noahowp_type subtype Init calls --- src/RunModule.f90 | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/src/RunModule.f90 b/src/RunModule.f90 index f63a8379..e708fce3 100644 --- a/src/RunModule.f90 +++ b/src/RunModule.f90 @@ -349,22 +349,15 @@ SUBROUTINE solve_noahowp_grid(noahowpgrid) #endif !--------------------------------------------------------------------- - ! Initialize noahowp_type variables and transfer values for spatial constants + ! Initialize noahowp_type subtypes !--------------------------------------------------------------------- - call levels%Init(namelist) - call levels%InitTransfer(levelsgrid) - call domain%Init(namelist) - call domain%InitTransfer(domaingrid) - call options%Init(namelist) - call options%InitTransfer(optionsgrid) - call parameters%Init(namelist) - call parameters%InitTransfer(parametersgrid) - call forcing%Init(namelist) - call forcing%InitTransfer(forcinggrid) - call energy%Init(namelist) - call energy%InitTransfer(energygrid) - call water%Init(namelist) - call water%InitTransfer(watergrid) + call levels%Init (namelist, levelsgrid ) + call domain%Init (namelist, domaingrid ) + call options%Init (namelist, optionsgrid ) + call parameters%Init (namelist, parametersgrid) + call forcing%Init (namelist, forcinggrid ) + call energy%Init (namelist, energygrid ) + call water%Init (namelist, watergrid ) !--------------------------------------------------------------------- ! Iterate over x and y dimensions From ee4750560526b2292b652901a3449fb2d56788c2 Mon Sep 17 00:00:00 2001 From: GreyEvenson-NOAA Date: Fri, 1 Sep 2023 08:37:44 -0400 Subject: [PATCH 20/20] Cleanup --- src/DomainTypeTransfer.f90 | 1 - 1 file changed, 1 deletion(-) diff --git a/src/DomainTypeTransfer.f90 b/src/DomainTypeTransfer.f90 index e38869fd..24962f23 100644 --- a/src/DomainTypeTransfer.f90 +++ b/src/DomainTypeTransfer.f90 @@ -46,7 +46,6 @@ subroutine DomainVarOutTransfer(domain, domaingrid, ix, iy) domaingrid%zsoil(ix,iy,:) = domain%zsoil(:) domaingrid%dzsnso(ix,iy,:) = domain%dzsnso(:) domaingrid%zsnso(ix,iy,:) = domain%zsnso(:) - domaingrid%nowdate = domain%nowdate end subroutine DomainVarOutTransfer