Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
d176556
modify noahmp driver for lis 1
cenlinhe Jul 13, 2023
a4ccc77
create new lis noahmp parameter type
cenlinhe Jul 14, 2023
1d778fc
update lis-noahmp driver 3
cenlinhe Jul 14, 2023
0234965
update integration 3
cenlinhe Jul 14, 2023
186c61e
update initialization
cenlinhe Jul 20, 2023
9a6d21b
remove un-used file
cenlinhe Jul 25, 2023
8e88d30
bug fix for compilation error
cenlinhe Jul 26, 2023
34d9368
bug fix
cenlinhe Jul 27, 2023
b166014
Merge pull request #8 from cenlinhe/develop
cenlinhe Nov 15, 2023
3a32db7
Merge pull request #100 from NCAR/develop
cenlinhe Nov 15, 2023
743dba8
Merge pull request #9 from NCAR/release-v5.0-LIS
cenlinhe Nov 15, 2023
2647b9b
Merge pull request #103 from NCAR/develop
cenlinhe Nov 30, 2023
e908e6a
Merge branch 'release-v5.0-LIS' into release-v5.0-LIS
cenlinhe Nov 30, 2023
be5e9d0
Merge pull request #10 from NCAR/release-v5.0-LIS
cenlinhe Nov 30, 2023
bff4116
Merge pull request #109 from NCAR/develop
cenlinhe Jan 5, 2024
be0be26
bug fix for LIS albedo output
cenlinhe Jan 5, 2024
b9182e6
bug fix for leaf mass initialization for urban pixel
cenlinhe Jan 5, 2024
ac989ec
Merge branch 'NCAR:release-v5.0-LIS' into release-v5.0-LIS
cenlinhe Jan 5, 2024
4f6f0fe
remove redundant LIS variable
cenlinhe Jan 5, 2024
e1cfe42
Merge branch 'NCAR:release-v5.0-LIS' into release-v5.0-LIS
cenlinhe Jan 5, 2024
bc5f7bf
fix for gridsize calc with different dx dy
cenlinhe Apr 23, 2024
0dabba9
Merge pull request #126 from NCAR/develop
cenlinhe Apr 23, 2024
ef703ae
Merge branch 'NCAR:release-v5.0-LIS' into release-v5.0-LIS
cenlinhe Apr 23, 2024
0cd3385
Merge pull request #127 from cenlinhe/release-v5.0-LIS
cenlinhe Apr 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion drivers/hrldas/ConfigVarInTransferMod.F90
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ subroutine ConfigVarInTransfer(noahmp, NoahmpIO)
noahmp%config%domain%GridIndexJ = NoahmpIO%J
noahmp%config%domain%MainTimeStep = NoahmpIO%DTBL
noahmp%config%domain%SoilTimeStep = NoahmpIO%DTBL * NoahmpIO%soil_update_steps
noahmp%config%domain%GridSize = NoahmpIO%DX
noahmp%config%domain%GridSize = sqrt(NoahmpIO%DX * NoahmpIO%DY)
noahmp%config%domain%LandUseDataName = NoahmpIO%LLANDUSE
noahmp%config%domain%VegType = NoahmpIO%IVGTYP(I,J)
noahmp%config%domain%CropType = NoahmpIO%CROPCAT(I,J)
Expand Down
151 changes: 151 additions & 0 deletions drivers/lis/BiochemVarInTransferMod.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
module BiochemVarInTransferMod

!!! Transfer input 2-D NoahmpIO Biochemistry variables to 1-D column variable
!!! 1-D variables should be first defined in /src/BiochemVarType.F90
!!! 2-D variables should be first defined in NoahmpIOVarType.F90

! ------------------------ Code history -----------------------------------
! Original code: Guo-Yue Niu and Noah-MP team (Niu et al. 2011)
! Refactered code: C. He, P. Valayamkunnath, & refactor team (He et al. 2023)
! -------------------------------------------------------------------------

use Machine
use NoahmpIOVarType
use NoahmpVarType
use LisNoahmpParamType

implicit none

contains

!=== initialize with input data or table values

subroutine BiochemVarInTransfer(noahmp, NoahmpIO, LISparam)

implicit none

type(noahmp_type), intent(inout) :: noahmp
type(NoahmpIO_type), intent(inout) :: NoahmpIO
type(LisNoahmpParam_type), intent(in) :: LISparam

! -------------------------------------------------------------------------
associate( &
I => noahmp%config%domain%GridIndexI ,&
J => noahmp%config%domain%GridIndexJ ,&
VegType => noahmp%config%domain%VegType ,&
CropType => noahmp%config%domain%CropType ,&
OptCropModel => noahmp%config%nmlist%OptCropModel &
)
! -------------------------------------------------------------------------

! biochem state variables
noahmp%biochem%state%PlantGrowStage = NoahmpIO%PGSXY (I,J)
noahmp%biochem%state%LeafMass = NoahmpIO%LFMASSXY(I,J)
noahmp%biochem%state%RootMass = NoahmpIO%RTMASSXY(I,J)
noahmp%biochem%state%StemMass = NoahmpIO%STMASSXY(I,J)
noahmp%biochem%state%WoodMass = NoahmpIO%WOODXY (I,J)
noahmp%biochem%state%CarbonMassDeepSoil = NoahmpIO%STBLCPXY(I,J)
noahmp%biochem%state%CarbonMassShallowSoil = NoahmpIO%FASTCPXY(I,J)
noahmp%biochem%state%GrainMass = NoahmpIO%GRAINXY (I,J)
noahmp%biochem%state%GrowDegreeDay = NoahmpIO%GDDXY (I,J)
noahmp%biochem%state%NitrogenConcFoliage = 1.0 ! for now, set to nitrogen saturation

! biochem parameter variables
noahmp%biochem%param%NitrogenConcFoliageMax = LISparam%FOLNMX
noahmp%biochem%param%QuantumEfficiency25C = LISparam%QE25
noahmp%biochem%param%CarboxylRateMax25C = LISparam%VCMX25
noahmp%biochem%param%CarboxylRateMaxQ10 = LISparam%AVCMX
noahmp%biochem%param%PhotosynPathC3 = LISparam%C3PSN
noahmp%biochem%param%SlopeConductToPhotosyn = LISparam%MP
noahmp%biochem%param%RespMaintQ10 = LISparam%ARM
noahmp%biochem%param%RespMaintLeaf25C = LISparam%RMF25
noahmp%biochem%param%RespMaintStem25C = LISparam%RMS25
noahmp%biochem%param%RespMaintRoot25C = LISparam%RMR25
noahmp%biochem%param%WoodToRootRatio = LISparam%WRRAT
noahmp%biochem%param%WoodPoolIndex = LISparam%WDPOOL
noahmp%biochem%param%TurnoverCoeffLeafVeg = LISparam%LTOVRC
noahmp%biochem%param%TemperaureLeafFreeze = LISparam%TDLEF
noahmp%biochem%param%LeafDeathWaterCoeffVeg = LISparam%DILEFW
noahmp%biochem%param%LeafDeathTempCoeffVeg = LISparam%DILEFC
noahmp%biochem%param%GrowthRespFrac = LISparam%FRAGR
noahmp%biochem%param%MicroRespCoeff = LISparam%MRP
noahmp%biochem%param%TemperatureMinPhotosyn = LISparam%TMIN
noahmp%biochem%param%LeafAreaPerMass1side = LISparam%SLA
noahmp%biochem%param%StemAreaIndexMin = LISparam%XSAMIN
noahmp%biochem%param%WoodAllocFac = LISparam%BF
noahmp%biochem%param%WaterStressCoeff = LISparam%WSTRC
noahmp%biochem%param%LeafAreaIndexMin = LISparam%LAIMIN
noahmp%biochem%param%TurnoverCoeffRootVeg = LISparam%RTOVRC
noahmp%biochem%param%WoodRespCoeff = LISparam%RSWOODC
! crop model specific parameters
if ( (OptCropModel > 0) .and. (CropType > 0) ) then
noahmp%biochem%param%DatePlanting = LISparam%PLTDAY
noahmp%biochem%param%DateHarvest = LISparam%HSDAY
noahmp%biochem%param%NitrogenConcFoliageMax = LISparam%FOLNMX
noahmp%biochem%param%QuantumEfficiency25C = LISparam%QE25
noahmp%biochem%param%CarboxylRateMax25C = LISparam%VCMX25
noahmp%biochem%param%CarboxylRateMaxQ10 = LISparam%AVCMX
noahmp%biochem%param%PhotosynPathC3 = LISparam%C3PSN
noahmp%biochem%param%SlopeConductToPhotosyn = LISparam%MP
noahmp%biochem%param%RespMaintQ10 = LISparam%Q10MR
noahmp%biochem%param%RespMaintLeaf25C = LISparam%LFMR25
noahmp%biochem%param%RespMaintStem25C = LISparam%STMR25
noahmp%biochem%param%RespMaintRoot25C = LISparam%RTMR25
noahmp%biochem%param%GrowthRespFrac = LISparam%FRA_GR
noahmp%biochem%param%TemperaureLeafFreeze = LISparam%LEFREEZ
noahmp%biochem%param%LeafAreaPerBiomass = LISparam%BIO2LAI
noahmp%biochem%param%TempBaseGrowDegDay = LISparam%GDDTBASE
noahmp%biochem%param%TempMaxGrowDegDay = LISparam%GDDTCUT
noahmp%biochem%param%GrowDegDayEmerg = LISparam%GDDS1
noahmp%biochem%param%GrowDegDayInitVeg = LISparam%GDDS2
noahmp%biochem%param%GrowDegDayPostVeg = LISparam%GDDS3
noahmp%biochem%param%GrowDegDayInitReprod = LISparam%GDDS4
noahmp%biochem%param%GrowDegDayMature = LISparam%GDDS5
noahmp%biochem%param%PhotosynRadFrac = LISparam%I2PAR
noahmp%biochem%param%TempMinCarbonAssim = LISparam%TASSIM0
noahmp%biochem%param%TempMaxCarbonAssim = LISparam%TASSIM1
noahmp%biochem%param%TempMaxCarbonAssimMax = LISparam%TASSIM2
noahmp%biochem%param%CarbonAssimRefMax = LISparam%AREF
noahmp%biochem%param%LightExtCoeff = LISparam%K
noahmp%biochem%param%LightUseEfficiency = LISparam%EPSI
noahmp%biochem%param%CarbonAssimReducFac = LISparam%PSNRF
noahmp%biochem%param%RespMaintGrain25C = LISparam%GRAINMR25
noahmp%biochem%param%LeafDeathTempCoeffCrop = LISparam%DILE_FC
noahmp%biochem%param%LeafDeathWaterCoeffCrop = LISparam%DILE_FW
noahmp%biochem%param%CarbohydrLeafToGrain = LISparam%LFCT
noahmp%biochem%param%CarbohydrStemToGrain = LISparam%STCT
noahmp%biochem%param%CarbohydrRootToGrain = LISparam%RTCT
noahmp%biochem%param%CarbohydrFracToLeaf = LISparam%LFPT
noahmp%biochem%param%CarbohydrFracToStem = LISparam%STPT
noahmp%biochem%param%CarbohydrFracToRoot = LISparam%RTPT
noahmp%biochem%param%CarbohydrFracToGrain = LISparam%GRAINPT
noahmp%biochem%param%TurnoverCoeffLeafCrop = LISparam%LF_OVRC
noahmp%biochem%param%TurnoverCoeffStemCrop = LISparam%ST_OVRC
noahmp%biochem%param%TurnoverCoeffRootCrop = LISparam%RT_OVRC

if ( OptCropModel == 1 ) then
noahmp%biochem%param%DatePlanting = NoahmpIO%PLANTING(I,J)
noahmp%biochem%param%DateHarvest = NoahmpIO%HARVEST(I,J)
noahmp%biochem%param%GrowDegDayEmerg = NoahmpIO%SEASON_GDD(I,J) / 1770.0 * &
noahmp%biochem%param%GrowDegDayEmerg
noahmp%biochem%param%GrowDegDayInitVeg = NoahmpIO%SEASON_GDD(I,J) / 1770.0 * &
noahmp%biochem%param%GrowDegDayInitVeg
noahmp%biochem%param%GrowDegDayPostVeg = NoahmpIO%SEASON_GDD(I,J) / 1770.0 * &
noahmp%biochem%param%GrowDegDayPostVeg
noahmp%biochem%param%GrowDegDayInitReprod = NoahmpIO%SEASON_GDD(I,J) / 1770.0 * &
noahmp%biochem%param%GrowDegDayInitReprod
noahmp%biochem%param%GrowDegDayMature = NoahmpIO%SEASON_GDD(I,J) / 1770.0 * &
noahmp%biochem%param%GrowDegDayMature
endif
endif ! activate crop parameters

if ( noahmp%config%nmlist%OptIrrigation == 2 ) then
noahmp%biochem%param%DatePlanting = NoahmpIO%PLANTING(I,J)
noahmp%biochem%param%DateHarvest = NoahmpIO%HARVEST (I,J)
endif

end associate

end subroutine BiochemVarInTransfer

end module BiochemVarInTransferMod
55 changes: 55 additions & 0 deletions drivers/lis/BiochemVarOutTransferMod.F90
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
module BiochemVarOutTransferMod

!!! Transfer column (1-D) biochemistry variables to 2D NoahmpIO for output

! ------------------------ Code history -----------------------------------
! Original code: Guo-Yue Niu and Noah-MP team (Niu et al. 2011)
! Refactered code: C. He, P. Valayamkunnath, & refactor team (He et al. 2023)
! -------------------------------------------------------------------------

use Machine
use NoahmpIOVarType
use NoahmpVarType

implicit none

contains

!=== Transfer model states to output =====

subroutine BiochemVarOutTransfer(noahmp, NoahmpIO)

implicit none

type(noahmp_type), intent(inout) :: noahmp
type(NoahmpIO_type), intent(inout) :: NoahmpIO

! ---------------------------------------------------------------------
associate( &
I => noahmp%config%domain%GridIndexI ,&
J => noahmp%config%domain%GridIndexJ &
)
! ---------------------------------------------------------------------

! biochem state variables
NoahmpIO%LFMASSXY(I,J) = noahmp%biochem%state%LeafMass
NoahmpIO%RTMASSXY(I,J) = noahmp%biochem%state%RootMass
NoahmpIO%STMASSXY(I,J) = noahmp%biochem%state%StemMass
NoahmpIO%WOODXY (I,J) = noahmp%biochem%state%WoodMass
NoahmpIO%STBLCPXY(I,J) = noahmp%biochem%state%CarbonMassDeepSoil
NoahmpIO%FASTCPXY(I,J) = noahmp%biochem%state%CarbonMassShallowSoil
NoahmpIO%GDDXY (I,J) = noahmp%biochem%state%GrowDegreeDay
NoahmpIO%PGSXY (I,J) = noahmp%biochem%state%PlantGrowStage
NoahmpIO%GRAINXY (I,J) = noahmp%biochem%state%GrainMass

! biochem flux variables
NoahmpIO%NEEXY (I,J) = noahmp%biochem%flux%NetEcoExchange
NoahmpIO%GPPXY (I,J) = noahmp%biochem%flux%GrossPriProduction
NoahmpIO%NPPXY (I,J) = noahmp%biochem%flux%NetPriProductionTot
NoahmpIO%PSNXY (I,J) = noahmp%biochem%flux%PhotosynTotal

end associate

end subroutine BiochemVarOutTransfer

end module BiochemVarOutTransferMod
Loading