From f0063188e63136f63f0ffa98d4fe9f7d641c383c Mon Sep 17 00:00:00 2001 From: "Srbinovsky, Jhan (O&A, Aspendale)" Date: Tue, 27 May 2025 16:36:23 +1000 Subject: [PATCH 1/8] benchcabbed - 2025-05-27 16:39:08,315 - INFO - benchcab.benchcab.py:391 - 0 failed, 20 passed reading subroutine for namelist that can be used aacross apps --- CMakeLists.txt | 1 + src/offline/cable_driver_common.F90 | 53 +++------- src/offline/read_namelists_mod_cbl.F90 | 133 +++++++++++++++++++++++++ 3 files changed, 147 insertions(+), 40 deletions(-) create mode 100644 src/offline/read_namelists_mod_cbl.F90 diff --git a/CMakeLists.txt b/CMakeLists.txt index a186c1f27..66fd8b884 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -219,6 +219,7 @@ else() src/shared/casa_offline_inout.F90 src/shared/casa_ncdf.F90 src/offline/cable_iovars.F90 + src/offline/read_namelists_mod_cbl.F90 src/offline/cable_surface_types.F90 src/offline/cable_define_types.F90 src/shared/cable_phenology.F90 diff --git a/src/offline/cable_driver_common.F90 b/src/offline/cable_driver_common.F90 index 9fc5b92c0..a60cc4fb9 100644 --- a/src/offline/cable_driver_common.F90 +++ b/src/offline/cable_driver_common.F90 @@ -42,6 +42,8 @@ MODULE cable_driver_common_mod USE CABLE_PLUME_MIP, ONLY : PLUME_MIP_TYPE, PLUME_MIP_INIT USE CABLE_CRU, ONLY : CRU_TYPE, CRU_INIT USE CABLE_site, ONLY : site_TYPE, site_INIT +USE read_namelists_mod_cbl, ONLY: read_cable_namelist + IMPLICIT NONE PRIVATE @@ -64,42 +66,9 @@ MODULE cable_driver_common_mod REAL, SAVE, PUBLIC :: delsoilT ! allowed variation in soil temperature for spin up REAL, SAVE, PUBLIC :: delgwM = 1e-4 - INTEGER, SAVE, PUBLIC :: LALLOC = 0 ! allocation coefficient for passing to spincasa - - NAMELIST /CABLE/ & - filename, & ! TYPE, containing input filenames - vegparmnew, & ! use new soil param. method - soilparmnew, & ! use new soil param. method - calcsoilalbedo, & ! albedo considers soil color Ticket #27 - spinup, & ! spinup model (soil) to steady state - delsoilM, & - delsoilT, & - delgwM, & - output, & - patchout, & - check, & - verbose, & - leaps, & - logn, & - fixedCO2, & - spincasa, & - l_casacnp, & - l_landuse, & - l_laiFeedbk, & - l_vcmaxFeedbk, & - CASAONLY, & - icycle, & - casafile, & - ncciy, & - gswpfile, & - globalMetfile, & - redistrb, & - wiltParam, & - satuParam, & - snmin, & - cable_user, & ! additional USER switches - gw_params - +INTEGER, SAVE, PUBLIC :: LALLOC = 0 ! alloc coeff passed to spincasa +INTEGER, PARAMETER :: nmlunitnumber = 88813 ! this is to satisfy UM method + ! where a shared_unitnumber is used PUBLIC :: cable_driver_init PUBLIC :: cable_driver_init_gswp PUBLIC :: cable_driver_init_plume @@ -131,10 +100,14 @@ SUBROUTINE cable_driver_init(mpi_grp, NRRRR) WRITE(*,*) "THE NAME LIST IS ", CABLE_NAMELIST END IF - ! Open, read and close the namelist file. - OPEN(NEWUNIT=unit, FILE=CABLE_NAMELIST, STATUS="OLD", ACTION="READ") - READ(unit, NML=CABLE) - CLOSE(unit) + CALL read_cable_namelist( nmlunitnumber, CABLE_NAMELIST, vegparmnew, & + spinup , & + spincasa , & + CASAONLY , & + l_casacnp , & + l_landuse , & + l_laiFeedbk , & + l_vcmaxFeedbk ) cable_runtime%offline = .TRUE. diff --git a/src/offline/read_namelists_mod_cbl.F90 b/src/offline/read_namelists_mod_cbl.F90 new file mode 100644 index 000000000..513dae7db --- /dev/null +++ b/src/offline/read_namelists_mod_cbl.F90 @@ -0,0 +1,133 @@ +MODULE read_namelists_mod_cbl + +IMPLICIT NONE + +CHARACTER(LEN=*), PARAMETER, PRIVATE :: ModuleName='READ_NAMELISTS_MOD_CBL' + +CONTAINS + +SUBROUTINE read_cable_namelist( unitnumber, cable_namelist, vegparmnew, & + spinup , & + spincasa , & + CASAONLY , & + l_casacnp , & + l_landuse , & + l_laiFeedbk , & + l_vcmaxFeedbk ) +! Description: +! Read the cable namelist + +USE cable_common_module, ONLY: & + filename, & + calcsoilalbedo, & + redistrb, & + wiltParam, & + satuParam, & + snmin, & + cable_user, & + gw_params + +USE cable_IO_vars_module, ONLY: & + soilparmnew, & + output, & + patchout, & + check, & + verbose, & + leaps, & + logn, & + fixedCO2, & + ncciy, & + gswpfile, & + globalMetfile + +USE casadimension, ONLY: icycle +USE casavariable, ONLY: casafile + +IMPLICIT NONE + +! Subroutine arguments +INTEGER, INTENT(IN) :: unitnumber +CHARACTER(LEN=*), INTENT(IN) :: cable_namelist + +! additional declarations to satisfy namelist dec +CHARACTER(LEN=*), PARAMETER :: RoutineName='read_cable_namelist' +LOGICAL, INTENT(OUT) :: vegparmnew ! using new format input file (BP dec 2007) +LOGICAL, INTENT(OUT) :: spinup ! model spinup to soil state equilibrium? +LOGICAL, INTENT(OUT) :: spincasa ! TRUE: CASA-CNP Will spin mloop times, FALSE: no spin up +LOGICAL, INTENT(OUT) :: CASAONLY ! ONLY Run CASA-CNP +LOGICAL, INTENT(OUT) :: l_casacnp ! using CASA-CNP with CABLE +LOGICAL, INTENT(OUT) :: l_landuse ! using CASA-CNP with CABLE +LOGICAL, INTENT(OUT) :: l_laiFeedbk ! using prognostic LAI +LOGICAL, INTENT(OUT) :: l_vcmaxFeedbk ! using prognostic Vcmax + +REAL :: delsoilM ! allowed variation in soil moisture for spin up +REAL :: delsoilT ! allowed variation in soil temperature for spin up +REAL :: delgwM = 1e-4 + +INTEGER :: LALLOC = 0 ! alloc coeff passed to spincasa + +NAMELIST /CABLE/ & +filename, & ! TYPE, containing input filenames +vegparmnew, & ! use new soil param. method +soilparmnew, & ! use new soil param. method +calcsoilalbedo, & ! albedo considers soil color Ticket #27 +spinup, & ! spinup model (soil) to steady state +delsoilM, & +delsoilT, & +delgwM, & +output, & +patchout, & +check, & +verbose, & +leaps, & +logn, & +fixedCO2, & +spincasa, & +l_casacnp, & +l_landuse, & +l_laiFeedbk, & +l_vcmaxFeedbk, & +CASAONLY, & +icycle, & +casafile, & +ncciy, & +gswpfile, & +globalMetfile, & +redistrb, & +wiltParam, & +satuParam, & +snmin, & +cable_user, & ! additional USER switches +gw_params + +! Open, read and close the namelist file. +OPEN( UNIT=unitnumber, FILE=CABLE_NAMELIST, STATUS="OLD", ACTION="READ" ) + READ( unitnumber, NML=CABLE ) +CLOSE( unitnumber ) + +RETURN +END SUBROUTINE read_cable_namelist + +!SUBROUTINE read_cable_model_environment(unitnumber) +! +!! Description: +!! Read the cable namelist +! +!USE cable_model_env_mod, ONLY: read_nml_cable_model_env +!USE cable_model_env_mod, ONLY: set_derived_variables_cable_model_env +! +!IMPLICIT NONE +! +!! Subroutine arguments +!INTEGER, INTENT(IN) :: unitnumber +! +!CHARACTER(LEN=*), PARAMETER :: RoutineName='READ_CABLE_MODEL_ENVIRONMENT' +! +!CALL read_nml_cable_model_env(unitnumber) +! +!CALL set_derived_variables_cable_model_env() +! +!RETURN +!END SUBROUTINE read_cable_model_environment + +END MODULE read_namelists_mod_cbl From 16ef3667190aac6ccb65af70c5f278aecd5df36a Mon Sep 17 00:00:00 2001 From: "Srbinovsky, Jhan (O&A, Aspendale)" Date: Wed, 28 May 2025 08:16:33 +1000 Subject: [PATCH 2/8] mv to shared --- src/{offline => shared}/read_namelists_mod_cbl.F90 | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/{offline => shared}/read_namelists_mod_cbl.F90 (100%) diff --git a/src/offline/read_namelists_mod_cbl.F90 b/src/shared/read_namelists_mod_cbl.F90 similarity index 100% rename from src/offline/read_namelists_mod_cbl.F90 rename to src/shared/read_namelists_mod_cbl.F90 From ecb5ee507d935053eb161e8093cc34ff4595394c Mon Sep 17 00:00:00 2001 From: "Srbinovsky, Jhan (O&A, Aspendale)" Date: Wed, 28 May 2025 11:45:42 +1000 Subject: [PATCH 3/8] run benchcab again --- CMakeLists.txt | 3 +- src/offline/cable.nml | 73 ------------- src/offline/cable_driver_common.F90 | 36 ++----- src/offline/cable_serial.F90 | 25 ++--- src/shared/read_namelists_mod_cbl.F90 | 143 +++++++++++++++++--------- 5 files changed, 122 insertions(+), 158 deletions(-) delete mode 100644 src/offline/cable.nml diff --git a/CMakeLists.txt b/CMakeLists.txt index 66fd8b884..ab3793bf3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -219,7 +219,8 @@ else() src/shared/casa_offline_inout.F90 src/shared/casa_ncdf.F90 src/offline/cable_iovars.F90 - src/offline/read_namelists_mod_cbl.F90 + src/offline/temp_module.F90 + src/shared/read_namelists_mod_cbl.F90 src/offline/cable_surface_types.F90 src/offline/cable_define_types.F90 src/shared/cable_phenology.F90 diff --git a/src/offline/cable.nml b/src/offline/cable.nml deleted file mode 100644 index 196869489..000000000 --- a/src/offline/cable.nml +++ /dev/null @@ -1,73 +0,0 @@ -&cable - filename%met = 'TumbaFluxnet.1.3_met.nc' - filename%out = 'out_cable.nc' - filename%log = 'log_cable.txt' - filename%restart_in = ' ' - filename%restart_out = './restart_out.nc' - filename%type = 'gridinfo_CSIRO_1x1.nc' - filename%veg = '' - filename%soil ='' - vegparmnew = .TRUE. ! using new format when true - soilparmnew = .TRUE. ! using new format when true - spinup = .FALSE. ! do we spin up the model? - delsoilM = 0.001 ! allowed variation in soil moisture for spin up - delsoilT = 0.01 ! allowed variation in soil temperature for spin up - output%restart = .TRUE. ! should a restart file be created? - output%met = .TRUE. ! input met data - output%flux = .TRUE. ! convective, runoff, NEE - output%soil = .FALSE. !see #354 soil statescrews up dimensions for ferret - output%snow = .TRUE. ! snow states - output%radiation = .TRUE. ! net rad, albedo - output%carbon = .TRUE. ! NEE, GPP, NPP, stores - output%veg = .TRUE. ! vegetation states - output%params = .TRUE. ! input parameters used to produce run - output%patch = .TRUE. ! write per patch - output%balances = .TRUE. ! energy and water balances - check%ranges = 0 ! variable ranges, input and output - check%energy_bal = .TRUE. ! energy balance - check%mass_bal = .TRUE. ! water/mass balance - verbose = .TRUE. ! write details of every grid cell init and params to log? - leaps = .TRUE. ! calculate timing with leap years? - logn = 88 ! log file number - declared in input module - fixedCO2 = 350.0 ! if not found in met file, in ppmv - spincasa = .FALSE. ! spin casa before running the model if TRUE - l_casacnp = .FALSE. ! using casaCNP with CABLE - l_laiFeedbk = .FALSE. ! using prognostic LAI - l_vcmaxFeedbk = .FALSE. ! using prognostic Vcmax - icycle = 0 ! BP pull it out from casadimension and put here; 0 for not using casaCNP, 1 for C, 2 for C+N, 3 for C+N+P - casafile%cnpipool='/projects/access/from_raijin/CABLE-AUX/core/biogeochem/poolcnpInTumbarumba.csv' ! - casafile%cnpbiome='pftlookup.csv' ! biome specific BGC parameters - casafile%cnpepool='poolcnpOut.csv' ! end of run pool size - casafile%cnpmetout='casamet.nc' ! output daily met forcing for spinning casacnp - casafile%cnpmetin='' ! list of daily met files for spinning casacnp - casafile%phen='/projects/access/from_raijin/CABLE-AUX/core/biogeochem/modis_phenology_csiro.txt' ! modis phenology - casafile%cnpflux='cnpfluxOut.csv' - ncciy = 0 ! 0 for not using gswp; 4-digit year input for year of gswp met - gswpfile%rainf = 'gswp/Rainf_gswp1987.nc' - gswpfile%snowf = 'gswp/Snowf_gswp1987.nc' - gswpfile%LWdown= 'gswp/LWdown_srb1987.nc' - gswpfile%SWdown= 'gswp/SWdown_srb1987.nc' - gswpfile%PSurf = 'gswp/PSurf_ecor1987.nc' - gswpfile%Qair = 'gswp/Qair_cru1987.nc' - gswpfile%Tair = 'gswp/Tair_cru1987.nc' - gswpfile%wind = 'gswp/Wind_ncep1987.nc' - redistrb = .FALSE. ! Turn on/off the hydraulic redistribution - wiltParam = 0.5 - satuParam = 0.8 - snmin = 1.0 - cable_user%FWSOIL_SWITCH = 'standard' ! choices are: - ! 1. standard - ! 2. non-linear extrapolation - ! 3. Lai and Ktaul 2000 - cable_user%GS_SWITCH = 'leuning' - cable_user%DIAG_SOIL_RESP = 'ON ' - cable_user%LEAF_RESPIRATION = 'ON ' - cable_user%RUN_DIAG_LEVEL= 'BASIC' ! choices are: - ! 1. BASIC - ! 1. NONE - cable_user%CONSISTENCY_CHECK= .TRUE. ! TRUE outputs combined fluxes at each timestep for comparisson to A control run - cable_user%CASA_DUMP_READ = .FALSE. ! TRUE reads CASA forcing from netcdf format - cable_user%CASA_DUMP_WRITE = .FALSE. ! TRUE outputs CASA forcing in netcdf format - cable_user%SSNOW_POTEV= 'HDM' ! Humidity Deficit Method - cable_user%l_ice_consistency = .FALSE. ! TRUE add QA step for ice tiles input. -&end diff --git a/src/offline/cable_driver_common.F90 b/src/offline/cable_driver_common.F90 index a60cc4fb9..e5368c63c 100644 --- a/src/offline/cable_driver_common.F90 +++ b/src/offline/cable_driver_common.F90 @@ -42,7 +42,15 @@ MODULE cable_driver_common_mod USE CABLE_PLUME_MIP, ONLY : PLUME_MIP_TYPE, PLUME_MIP_INIT USE CABLE_CRU, ONLY : CRU_TYPE, CRU_INIT USE CABLE_site, ONLY : site_TYPE, site_INIT -USE read_namelists_mod_cbl, ONLY: read_cable_namelist +USE read_namelists_mod_cbl, ONLY: read_cable_namelists + +USE temp_module, ONLY: spincasa, & + spinup, & + CASAONLY, & + l_casacnp, & + l_laiFeedbk, & + l_vcmaxFeedbk, & + LALLOC IMPLICIT NONE PRIVATE @@ -52,21 +60,6 @@ MODULE cable_driver_common_mod !! Number of GSWP met forcing variables (rain, snow, lw, sw, ps, qa, ta, wd) REAL, PARAMETER :: CONSISTENCY_CHECK_TOLERANCE = 1.e-7 !! Max tolerance value for quasi-bit reproducibility checks - - LOGICAL, SAVE, PUBLIC :: vegparmnew = .FALSE. ! using new format input file (BP dec 2007) - LOGICAL, SAVE, PUBLIC :: spinup = .FALSE. ! model spinup to soil state equilibrium? - LOGICAL, SAVE, PUBLIC :: spincasa = .FALSE. ! TRUE: CASA-CNP Will spin mloop times, FALSE: no spin up - LOGICAL, SAVE, PUBLIC :: CASAONLY = .FALSE. ! ONLY Run CASA-CNP - LOGICAL, SAVE, PUBLIC :: l_casacnp = .FALSE. ! using CASA-CNP with CABLE - LOGICAL, SAVE, PUBLIC :: l_landuse = .FALSE. ! using CASA-CNP with CABLE - LOGICAL, SAVE, PUBLIC :: l_laiFeedbk = .FALSE. ! using prognostic LAI - LOGICAL, SAVE, PUBLIC :: l_vcmaxFeedbk = .FALSE. ! using prognostic Vcmax - - REAL, SAVE, PUBLIC :: delsoilM ! allowed variation in soil moisture for spin up - REAL, SAVE, PUBLIC :: delsoilT ! allowed variation in soil temperature for spin up - REAL, SAVE, PUBLIC :: delgwM = 1e-4 - -INTEGER, SAVE, PUBLIC :: LALLOC = 0 ! alloc coeff passed to spincasa INTEGER, PARAMETER :: nmlunitnumber = 88813 ! this is to satisfy UM method ! where a shared_unitnumber is used PUBLIC :: cable_driver_init @@ -100,17 +93,10 @@ SUBROUTINE cable_driver_init(mpi_grp, NRRRR) WRITE(*,*) "THE NAME LIST IS ", CABLE_NAMELIST END IF - CALL read_cable_namelist( nmlunitnumber, CABLE_NAMELIST, vegparmnew, & - spinup , & - spincasa , & - CASAONLY , & - l_casacnp , & - l_landuse , & - l_laiFeedbk , & - l_vcmaxFeedbk ) - cable_runtime%offline = .TRUE. + CALL read_cable_namelists( nmlunitnumber ) + ! Open log file: IF (mpi_grp%rank == 0) THEN OPEN(logn, FILE=filename%log) diff --git a/src/offline/cable_serial.F90 b/src/offline/cable_serial.F90 index 366aa58de..973c2ca29 100644 --- a/src/offline/cable_serial.F90 +++ b/src/offline/cable_serial.F90 @@ -62,18 +62,6 @@ MODULE cable_serial !! Offline serial driver for CABLE. USE cable_driver_common_mod, ONLY : & cable_driver_init, & - vegparmnew, & - spinup, & - spincasa, & - CASAONLY, & - l_casacnp, & - l_landuse, & - l_laiFeedbk, & - l_vcmaxFeedbk, & - delsoilM, & - delsoilT, & - delgwM, & - LALLOC, & prepareFiles, & prepareFiles_princeton, & LUCdriver, & @@ -150,6 +138,19 @@ MODULE cable_serial USE landuse_variable USE bgcdriver_mod, ONLY : bgcdriver USE casa_offline_inout_module, ONLY : WRITE_CASA_RESTART_NC, WRITE_CASA_OUTPUT_NC +USE temp_module, ONLY: vegparmnew, & + spinup, & + spincasa, & + CASAONLY, & + l_landuse, & + l_casacnp, & + l_laiFeedbk, & + l_vcmaxFeedbk, & + delsoilM, & + delsoilT, & + delgwM, & + LALLOC + IMPLICIT NONE PRIVATE diff --git a/src/shared/read_namelists_mod_cbl.F90 b/src/shared/read_namelists_mod_cbl.F90 index 513dae7db..fdd13ee82 100644 --- a/src/shared/read_namelists_mod_cbl.F90 +++ b/src/shared/read_namelists_mod_cbl.F90 @@ -1,24 +1,45 @@ MODULE read_namelists_mod_cbl - + IMPLICIT NONE CHARACTER(LEN=*), PARAMETER, PRIVATE :: ModuleName='READ_NAMELISTS_MOD_CBL' CONTAINS -SUBROUTINE read_cable_namelist( unitnumber, cable_namelist, vegparmnew, & - spinup , & - spincasa , & - CASAONLY , & - l_casacnp , & - l_landuse , & - l_laiFeedbk , & - l_vcmaxFeedbk ) +SUBROUTINE read_cable_namelists( unitnumber ) + +! Description: +! Organize reading ALL cable namelists + +USE cable_common_module, ONLY: cable_runtime +USE cable_namelist_util, ONLY: cable_namelist + +IMPLICIT NONE + +! Subroutine arguments +INTEGER, INTENT(IN) :: unitnumber + +CHARACTER(LEN=*), PARAMETER :: RoutineName='read_cable_namelists' + +CALL read_cable_namelist( unitnumber, cable_namelist ) + +IF( cable_runtime%offline ) THEN + CALL read_offline_namelist( "offline.nml" ) +ENDIF + +RETURN +END SUBROUTINE read_cable_namelists + + + +SUBROUTINE read_cable_namelist( unitnumber, cable_namelist ) ! Description: ! Read the cable namelist +!!USE cable_common_module_temp, ONLY: calcsoilalbedo, redistrb, wiltParam, & +!! satuParam, snmin, cable_user, gw_params + USE cable_common_module, ONLY: & - filename, & calcsoilalbedo, & redistrb, & wiltParam, & @@ -27,6 +48,56 @@ SUBROUTINE read_cable_namelist( unitnumber, cable_namelist, vegparmnew, cable_user, & gw_params +USE temp_module, ONLY: l_casacnp, & + l_landuse, & + l_laiFeedbk, & + l_vcmaxFeedbk + +USE cable_IO_vars_module, ONLY: fixedCO2 + +USE casadimension, ONLY: icycle +USE casavariable, ONLY: casafile + +IMPLICIT NONE + +! Subroutine arguments +INTEGER, INTENT(IN) :: unitnumber +CHARACTER(LEN=*), INTENT(IN) :: cable_namelist + +CHARACTER(LEN=*), PARAMETER :: RoutineName='read_cable_namelist' + +NAMELIST /CABLE/ & +calcsoilalbedo, & ! albedo considers soil color Ticket #27 +fixedCO2, & +l_casacnp, & +l_landuse, & +l_laiFeedbk, & +l_vcmaxFeedbk, & +icycle, & +redistrb, & +wiltParam, & +satuParam, & +snmin, & +cable_user, & +gw_params + +! Open, read and close the namelist file. +OPEN( UNIT=unitnumber, FILE=CABLE_NAMELIST, STATUS="OLD", ACTION="READ" ) + READ( unitnumber, NML=CABLE ) +CLOSE( unitnumber ) + +RETURN +END SUBROUTINE read_cable_namelist + + + +SUBROUTINE read_offline_namelist( offline_namelist ) +! Description: +! Read the cable namelist for offline apps only + +USE cable_common_module, ONLY: filename +USE casavariable, ONLY: casafile + USE cable_IO_vars_module, ONLY: & soilparmnew, & output, & @@ -35,42 +106,30 @@ SUBROUTINE read_cable_namelist( unitnumber, cable_namelist, vegparmnew, verbose, & leaps, & logn, & - fixedCO2, & ncciy, & gswpfile, & globalMetfile -USE casadimension, ONLY: icycle -USE casavariable, ONLY: casafile - +USE temp_module, ONLY: vegparmnew, & + spinup, & + spincasa, & + CASAONLY, & + delsoilM, & + delsoilT, & + delgwM, & + LALLOC IMPLICIT NONE ! Subroutine arguments -INTEGER, INTENT(IN) :: unitnumber -CHARACTER(LEN=*), INTENT(IN) :: cable_namelist +CHARACTER(LEN=*), INTENT(IN) :: offline_namelist -! additional declarations to satisfy namelist dec +INTEGER :: unitnumber CHARACTER(LEN=*), PARAMETER :: RoutineName='read_cable_namelist' -LOGICAL, INTENT(OUT) :: vegparmnew ! using new format input file (BP dec 2007) -LOGICAL, INTENT(OUT) :: spinup ! model spinup to soil state equilibrium? -LOGICAL, INTENT(OUT) :: spincasa ! TRUE: CASA-CNP Will spin mloop times, FALSE: no spin up -LOGICAL, INTENT(OUT) :: CASAONLY ! ONLY Run CASA-CNP -LOGICAL, INTENT(OUT) :: l_casacnp ! using CASA-CNP with CABLE -LOGICAL, INTENT(OUT) :: l_landuse ! using CASA-CNP with CABLE -LOGICAL, INTENT(OUT) :: l_laiFeedbk ! using prognostic LAI -LOGICAL, INTENT(OUT) :: l_vcmaxFeedbk ! using prognostic Vcmax - -REAL :: delsoilM ! allowed variation in soil moisture for spin up -REAL :: delsoilT ! allowed variation in soil temperature for spin up -REAL :: delgwM = 1e-4 - -INTEGER :: LALLOC = 0 ! alloc coeff passed to spincasa NAMELIST /CABLE/ & filename, & ! TYPE, containing input filenames vegparmnew, & ! use new soil param. method soilparmnew, & ! use new soil param. method -calcsoilalbedo, & ! albedo considers soil color Ticket #27 spinup, & ! spinup model (soil) to steady state delsoilM, & delsoilT, & @@ -81,32 +140,22 @@ SUBROUTINE read_cable_namelist( unitnumber, cable_namelist, vegparmnew, verbose, & leaps, & logn, & -fixedCO2, & spincasa, & -l_casacnp, & -l_landuse, & -l_laiFeedbk, & -l_vcmaxFeedbk, & CASAONLY, & -icycle, & casafile, & ncciy, & gswpfile, & -globalMetfile, & -redistrb, & -wiltParam, & -satuParam, & -snmin, & -cable_user, & ! additional USER switches -gw_params +globalMetfile ! Open, read and close the namelist file. -OPEN( UNIT=unitnumber, FILE=CABLE_NAMELIST, STATUS="OLD", ACTION="READ" ) +OPEN( NEWUNIT=unitnumber, FILE=offline_namelist, STATUS="OLD", ACTION="READ" ) READ( unitnumber, NML=CABLE ) CLOSE( unitnumber ) RETURN -END SUBROUTINE read_cable_namelist +END SUBROUTINE read_offline_namelist + + !SUBROUTINE read_cable_model_environment(unitnumber) ! From 9665572e94709949762b054cfd94f8c8ed4a69b9 Mon Sep 17 00:00:00 2001 From: "Srbinovsky, Jhan (O&A, Aspendale)" Date: Wed, 28 May 2025 13:10:31 +1000 Subject: [PATCH 4/8] refine --- src/offline/cable_driver_common.F90 | 1 - src/shared/read_namelists_mod_cbl.F90 | 9 ++++----- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/offline/cable_driver_common.F90 b/src/offline/cable_driver_common.F90 index e5368c63c..2be61d075 100644 --- a/src/offline/cable_driver_common.F90 +++ b/src/offline/cable_driver_common.F90 @@ -22,7 +22,6 @@ MODULE cable_driver_common_mod verbose, & leaps, & logn, & - fixedCO2, & ncciy, & gswpfile, & globalMetfile, & diff --git a/src/shared/read_namelists_mod_cbl.F90 b/src/shared/read_namelists_mod_cbl.F90 index fdd13ee82..80ed5c186 100644 --- a/src/shared/read_namelists_mod_cbl.F90 +++ b/src/shared/read_namelists_mod_cbl.F90 @@ -53,8 +53,6 @@ SUBROUTINE read_cable_namelist( unitnumber, cable_namelist ) l_laiFeedbk, & l_vcmaxFeedbk -USE cable_IO_vars_module, ONLY: fixedCO2 - USE casadimension, ONLY: icycle USE casavariable, ONLY: casafile @@ -68,7 +66,6 @@ SUBROUTINE read_cable_namelist( unitnumber, cable_namelist ) NAMELIST /CABLE/ & calcsoilalbedo, & ! albedo considers soil color Ticket #27 -fixedCO2, & l_casacnp, & l_landuse, & l_laiFeedbk, & @@ -100,6 +97,7 @@ SUBROUTINE read_offline_namelist( offline_namelist ) USE cable_IO_vars_module, ONLY: & soilparmnew, & + fixedCO2, & output, & patchout, & check, & @@ -124,9 +122,9 @@ SUBROUTINE read_offline_namelist( offline_namelist ) CHARACTER(LEN=*), INTENT(IN) :: offline_namelist INTEGER :: unitnumber -CHARACTER(LEN=*), PARAMETER :: RoutineName='read_cable_namelist' +CHARACTER(LEN=*), PARAMETER :: RoutineName='read_offline_cable_namelist' -NAMELIST /CABLE/ & +NAMELIST /offline/ & filename, & ! TYPE, containing input filenames vegparmnew, & ! use new soil param. method soilparmnew, & ! use new soil param. method @@ -134,6 +132,7 @@ SUBROUTINE read_offline_namelist( offline_namelist ) delsoilM, & delsoilT, & delgwM, & +fixedCO2, & output, & patchout, & check, & From 45201f714bc8a9f5bdeaeec5d3ae50f9de9cd5c7 Mon Sep 17 00:00:00 2001 From: "Srbinovsky, Jhan (O&A, Aspendale)" Date: Wed, 28 May 2025 15:01:51 +1000 Subject: [PATCH 5/8] set general and offline namelists --- namelists/cable.nml | 30 ++++++++++++ {src/offline => namelists}/cable_soilparm.nml | 0 namelists/canopy.nml | 2 + namelists/casa-cnp.nml | 16 +++++++ namelists/gw_hydro.nml | 1 + namelists/landuse.nml | 1 + namelists/offline.nml | 48 +++++++++++++++++++ {src/offline => namelists}/pft_params.nml | 0 namelists/pop.nml | 1 + namelists/sli.nml | 1 + namelists/soilsnow.nml | 4 ++ src/shared/read_namelists_mod_cbl.F90 | 2 +- 12 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 namelists/cable.nml rename {src/offline => namelists}/cable_soilparm.nml (100%) create mode 100644 namelists/canopy.nml create mode 100644 namelists/casa-cnp.nml create mode 100644 namelists/gw_hydro.nml create mode 100644 namelists/landuse.nml create mode 100644 namelists/offline.nml rename {src/offline => namelists}/pft_params.nml (100%) create mode 100644 namelists/pop.nml create mode 100644 namelists/sli.nml create mode 100644 namelists/soilsnow.nml diff --git a/namelists/cable.nml b/namelists/cable.nml new file mode 100644 index 000000000..5a1287a43 --- /dev/null +++ b/namelists/cable.nml @@ -0,0 +1,30 @@ +&cable + + !BGC + l_casacnp = .FALSE. ! using casaCNP with CABLE + l_laiFeedbk = .FALSE. ! using prognostic LAI + l_vcmaxFeedbk = .FALSE. ! using prognostic Vcmax + icycle = 0 ! [0 (=NO casaCNP), 1 (=C), 2 (=C+N), 3 (=C+N+P) ] + cable_user%DIAG_SOIL_RESP = 'ON ' + cable_user%LEAF_RESPIRATION = 'ON ' + + !canopy + wiltParam = 0.5 ! + satuParam = 0.8 ! + cable_user%FWSOIL_SWITCH = 'standard' ! ['standard', 'non-linear extrapolation', + 'Lai and Ktaul' 2000, 'Haverd2013' ] + cable_user%GS_SWITCH = 'leuning' ! stomata model ['leuning', 'Medlyn'] + cable_user%SSNOW_POTEV = 'HDM' ! ['HDM' (Humidity Deficit Method), + 'P-M' (Penmann-Monteith model) ] + !soilsnow + redistrb = .FALSE. ! Execute hydraulic redistribution model + snmin = 1.0 ! minimum snow depth to use 3 layer model + + ! offline ONLY + cable_user%l_ice_consistency = .FALSE. ! TRUE add QA step for ice tiles input. + cable_user%RUN_DIAG_LEVEL = 'BASIC' ! [ 'BASIC', 'NONE' ] + cable_user%CONSISTENCY_CHECK = .TRUE. ! TRUE outputs combined fluxes at each timestep for comparisson to A control run + cable_user%CASA_DUMP_READ = .FALSE. ! TRUE reads CASA forcing from netcdf format + cable_user%CASA_DUMP_WRITE = .FALSE. ! TRUE outputs CASA forcing in netcdf format + +&end diff --git a/src/offline/cable_soilparm.nml b/namelists/cable_soilparm.nml similarity index 100% rename from src/offline/cable_soilparm.nml rename to namelists/cable_soilparm.nml diff --git a/namelists/canopy.nml b/namelists/canopy.nml new file mode 100644 index 000000000..313d64019 --- /dev/null +++ b/namelists/canopy.nml @@ -0,0 +1,2 @@ + + cable_user%GS_SWITCH = 'medlyn' ! alternative is 'leuning' - used for ESM1.5 diff --git a/namelists/casa-cnp.nml b/namelists/casa-cnp.nml new file mode 100644 index 000000000..e39205339 --- /dev/null +++ b/namelists/casa-cnp.nml @@ -0,0 +1,16 @@ + l_luc = .FALSE. + l_thinforest = .FALSE. + l_casacnp = .TRUE. ! redundant? actually controlled by icycle + icycle = 3 ! Controls whether CASA-CNP is run and for which species + ! Choices are: + ! 0 CASA-CNP not run + ! 1 Carbon only + ! 2 Carbon and nitrogen + ! 3 Carbon, nitrogen and phosphorus + l_laiFeedbk = .TRUE. ! using prognostic LAI + l_vcmaxFeedbk = .TRUE. ! using prognostic Vcmax +! filenames for CASA-CNP input files +! updated pftlookup file for CABLE3 format + casafile%cnpbiome='INPUT/pftlookup_cable3.csv' ! biome specific BGC parameters + casafile%phen='INPUT/modis_phenology_csiro.txt' ! phenology by latitude (modis derived) + diff --git a/namelists/gw_hydro.nml b/namelists/gw_hydro.nml new file mode 100644 index 000000000..6ba2ff4fa --- /dev/null +++ b/namelists/gw_hydro.nml @@ -0,0 +1 @@ +!!NA in ESM1.6 diff --git a/namelists/landuse.nml b/namelists/landuse.nml new file mode 100644 index 000000000..3c4ccf22e --- /dev/null +++ b/namelists/landuse.nml @@ -0,0 +1 @@ +!!NA in ESM1.6 YET diff --git a/namelists/offline.nml b/namelists/offline.nml new file mode 100644 index 000000000..e6d86381f --- /dev/null +++ b/namelists/offline.nml @@ -0,0 +1,48 @@ +&offline + + filename%met = 'TumbaFluxnet.1.3_met.nc' + filename%out = 'out_cable.nc' + filename%log = 'log_cable.txt' + filename%restart_in = ' ' + filename%restart_out = './restart_out.nc' + filename%type = 'gridinfo_CSIRO_1x1.nc' + + vegparmnew = .TRUE. ! using new format when true + soilparmnew = .TRUE. ! using new format when true + + spinup = .FALSE. ! do we spin up the model? + delsoilM = 0.001 ! threshold variation in soil moisture for spin up + delsoilT = 0.01 ! threshold variation in soil temperature for spin up + spincasa = .FALSE. ! spin casa before running the model if TRUE + + output%restart = .TRUE. ! should a restart file be created? + output%met = .TRUE. ! input met data + output%flux = .TRUE. ! convective, runoff, NEE + output%soil = .FALSE. !see #354 soil statescrews up dimensions for ferret + output%snow = .TRUE. ! snow states + output%radiation = .TRUE. ! net rad, albedo + output%carbon = .TRUE. ! NEE, GPP, NPP, stores + output%veg = .TRUE. ! vegetation states + output%params = .TRUE. ! input parameters used to produce run + output%patch = .TRUE. ! write per patch + output%balances = .TRUE. ! energy and water balances + check%ranges = 0 ! variable ranges, input and output + check%energy_bal = .TRUE. ! energy balance + check%mass_bal = .TRUE. ! water/mass balance + + verbose = .TRUE. ! write details of every grid cell init and params to log? + leaps = .TRUE. ! calculate timing with leap years? + logn = 88 ! log file number - declared in input module + fixedCO2 = 350.0 ! if not found in met file, in ppmv + + ncciy = 0 ! 0 = NO GSWP2; 4-digit year input for year of GSWP2 met + gswpfile%rainf = 'gswp/Rainf_gswp1987.nc' + gswpfile%snowf = 'gswp/Snowf_gswp1987.nc' + gswpfile%LWdown= 'gswp/LWdown_srb1987.nc' + gswpfile%SWdown= 'gswp/SWdown_srb1987.nc' + gswpfile%PSurf = 'gswp/PSurf_ecor1987.nc' + gswpfile%Qair = 'gswp/Qair_cru1987.nc' + gswpfile%Tair = 'gswp/Tair_cru1987.nc' + gswpfile%wind = 'gswp/Wind_ncep1987.nc' + +&end diff --git a/src/offline/pft_params.nml b/namelists/pft_params.nml similarity index 100% rename from src/offline/pft_params.nml rename to namelists/pft_params.nml diff --git a/namelists/pop.nml b/namelists/pop.nml new file mode 100644 index 000000000..6ba2ff4fa --- /dev/null +++ b/namelists/pop.nml @@ -0,0 +1 @@ +!!NA in ESM1.6 diff --git a/namelists/sli.nml b/namelists/sli.nml new file mode 100644 index 000000000..6ba2ff4fa --- /dev/null +++ b/namelists/sli.nml @@ -0,0 +1 @@ +!!NA in ESM1.6 diff --git a/namelists/soilsnow.nml b/namelists/soilsnow.nml new file mode 100644 index 000000000..7247b440c --- /dev/null +++ b/namelists/soilsnow.nml @@ -0,0 +1,4 @@ + + redistrb = .FALSE. ! Turn on/off the hydraulic redistribution + wiltParam = 0.5 ! only used if hydraulic redistribution .true. + satuParam = 0.8 ! only used if hydraulic redistribution .true. diff --git a/src/shared/read_namelists_mod_cbl.F90 b/src/shared/read_namelists_mod_cbl.F90 index 80ed5c186..64e9332ae 100644 --- a/src/shared/read_namelists_mod_cbl.F90 +++ b/src/shared/read_namelists_mod_cbl.F90 @@ -148,7 +148,7 @@ SUBROUTINE read_offline_namelist( offline_namelist ) ! Open, read and close the namelist file. OPEN( NEWUNIT=unitnumber, FILE=offline_namelist, STATUS="OLD", ACTION="READ" ) - READ( unitnumber, NML=CABLE ) + READ( unitnumber, NML=offline) CLOSE( unitnumber ) RETURN From aba465ebc8a4bc5108ccf56f741e9b609120dbcf Mon Sep 17 00:00:00 2001 From: "Srbinovsky, Jhan (O&A, Aspendale)" Date: Wed, 28 May 2025 15:16:55 +1000 Subject: [PATCH 6/8] WS --- namelists/cable.nml | 50 ++++++++++++++++++++++----------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/namelists/cable.nml b/namelists/cable.nml index 5a1287a43..cc5603955 100644 --- a/namelists/cable.nml +++ b/namelists/cable.nml @@ -1,30 +1,30 @@ &cable - !BGC - l_casacnp = .FALSE. ! using casaCNP with CABLE - l_laiFeedbk = .FALSE. ! using prognostic LAI - l_vcmaxFeedbk = .FALSE. ! using prognostic Vcmax - icycle = 0 ! [0 (=NO casaCNP), 1 (=C), 2 (=C+N), 3 (=C+N+P) ] - cable_user%DIAG_SOIL_RESP = 'ON ' - cable_user%LEAF_RESPIRATION = 'ON ' +!BGC +l_casacnp = .FALSE. ! using casaCNP with CABLE +l_laiFeedbk = .FALSE. ! using prognostic LAI +l_vcmaxFeedbk = .FALSE. ! using prognostic Vcmax +icycle = 0 ! [0 (=NO casaCNP), 1 (=C), 2 (=C+N), 3 (=C+N+P) ] +cable_user%DIAG_SOIL_RESP = 'ON ' +cable_user%LEAF_RESPIRATION = 'ON ' - !canopy - wiltParam = 0.5 ! - satuParam = 0.8 ! - cable_user%FWSOIL_SWITCH = 'standard' ! ['standard', 'non-linear extrapolation', - 'Lai and Ktaul' 2000, 'Haverd2013' ] - cable_user%GS_SWITCH = 'leuning' ! stomata model ['leuning', 'Medlyn'] - cable_user%SSNOW_POTEV = 'HDM' ! ['HDM' (Humidity Deficit Method), - 'P-M' (Penmann-Monteith model) ] - !soilsnow - redistrb = .FALSE. ! Execute hydraulic redistribution model - snmin = 1.0 ! minimum snow depth to use 3 layer model - - ! offline ONLY - cable_user%l_ice_consistency = .FALSE. ! TRUE add QA step for ice tiles input. - cable_user%RUN_DIAG_LEVEL = 'BASIC' ! [ 'BASIC', 'NONE' ] - cable_user%CONSISTENCY_CHECK = .TRUE. ! TRUE outputs combined fluxes at each timestep for comparisson to A control run - cable_user%CASA_DUMP_READ = .FALSE. ! TRUE reads CASA forcing from netcdf format - cable_user%CASA_DUMP_WRITE = .FALSE. ! TRUE outputs CASA forcing in netcdf format +!canopy +wiltParam = 0.5 ! +satuParam = 0.8 ! +cable_user%FWSOIL_SWITCH = 'standard' ! ['standard', 'non-linear extrapolation', + 'Lai and Ktaul' 2000, 'Haverd2013' ] +cable_user%GS_SWITCH = 'leuning' ! stomata model ['leuning', 'Medlyn'] +cable_user%SSNOW_POTEV = 'HDM' ! ['HDM' (Humidity Deficit Method), + 'P-M' (Penmann-Monteith model) ] +!soilsnow +redistrb = .FALSE. ! Execute hydraulic redistribution model +snmin = 1.0 ! minimum snow depth to use 3 layer model + +! offline ONLY +cable_user%l_ice_consistency = .FALSE. ! TRUE add QA step for ice tiles input. +cable_user%RUN_DIAG_LEVEL = 'BASIC' ! [ 'BASIC', 'NONE' ] +cable_user%CONSISTENCY_CHECK = .TRUE. ! TRUE outputs combined fluxes at each timestep for comparisson to A control run +cable_user%CASA_DUMP_READ = .FALSE. ! TRUE reads CASA forcing from netcdf format +cable_user%CASA_DUMP_WRITE = .FALSE. ! TRUE outputs CASA forcing in netcdf format &end From f66b176c9ecfb37c782dabbd88065d720e72754f Mon Sep 17 00:00:00 2001 From: "Srbinovsky, Jhan (O&A, Aspendale)" Date: Wed, 28 May 2025 15:19:03 +1000 Subject: [PATCH 7/8] WS --- namelists/offline.nml | 88 +++++++++++++++++++++---------------------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/namelists/offline.nml b/namelists/offline.nml index e6d86381f..7df4adbba 100644 --- a/namelists/offline.nml +++ b/namelists/offline.nml @@ -1,48 +1,48 @@ &offline - filename%met = 'TumbaFluxnet.1.3_met.nc' - filename%out = 'out_cable.nc' - filename%log = 'log_cable.txt' - filename%restart_in = ' ' - filename%restart_out = './restart_out.nc' - filename%type = 'gridinfo_CSIRO_1x1.nc' - - vegparmnew = .TRUE. ! using new format when true - soilparmnew = .TRUE. ! using new format when true - - spinup = .FALSE. ! do we spin up the model? - delsoilM = 0.001 ! threshold variation in soil moisture for spin up - delsoilT = 0.01 ! threshold variation in soil temperature for spin up - spincasa = .FALSE. ! spin casa before running the model if TRUE - - output%restart = .TRUE. ! should a restart file be created? - output%met = .TRUE. ! input met data - output%flux = .TRUE. ! convective, runoff, NEE - output%soil = .FALSE. !see #354 soil statescrews up dimensions for ferret - output%snow = .TRUE. ! snow states - output%radiation = .TRUE. ! net rad, albedo - output%carbon = .TRUE. ! NEE, GPP, NPP, stores - output%veg = .TRUE. ! vegetation states - output%params = .TRUE. ! input parameters used to produce run - output%patch = .TRUE. ! write per patch - output%balances = .TRUE. ! energy and water balances - check%ranges = 0 ! variable ranges, input and output - check%energy_bal = .TRUE. ! energy balance - check%mass_bal = .TRUE. ! water/mass balance - - verbose = .TRUE. ! write details of every grid cell init and params to log? - leaps = .TRUE. ! calculate timing with leap years? - logn = 88 ! log file number - declared in input module - fixedCO2 = 350.0 ! if not found in met file, in ppmv - - ncciy = 0 ! 0 = NO GSWP2; 4-digit year input for year of GSWP2 met - gswpfile%rainf = 'gswp/Rainf_gswp1987.nc' - gswpfile%snowf = 'gswp/Snowf_gswp1987.nc' - gswpfile%LWdown= 'gswp/LWdown_srb1987.nc' - gswpfile%SWdown= 'gswp/SWdown_srb1987.nc' - gswpfile%PSurf = 'gswp/PSurf_ecor1987.nc' - gswpfile%Qair = 'gswp/Qair_cru1987.nc' - gswpfile%Tair = 'gswp/Tair_cru1987.nc' - gswpfile%wind = 'gswp/Wind_ncep1987.nc' +filename%met = 'TumbaFluxnet.1.3_met.nc' +filename%out = 'out_cable.nc' +filename%log = 'log_cable.txt' +filename%restart_in = ' ' +filename%restart_out = './restart_out.nc' +filename%type = 'gridinfo_CSIRO_1x1.nc' + +vegparmnew = .TRUE. ! using new format when true +soilparmnew = .TRUE. ! using new format when true + +spinup = .FALSE. ! do we spin up the model? +delsoilM = 0.001 ! threshold variation in soil moisture for spin up +delsoilT = 0.01 ! threshold variation in soil temperature for spin up +spincasa = .FALSE. ! spin casa before running the model if TRUE + +output%restart = .TRUE. ! should a restart file be created? +output%met = .TRUE. ! input met data +output%flux = .TRUE. ! convective, runoff, NEE +output%soil = .FALSE. !see #354 soil statescrews up dimensions for ferret +output%snow = .TRUE. ! snow states +output%radiation = .TRUE. ! net rad, albedo +output%carbon = .TRUE. ! NEE, GPP, NPP, stores +output%veg = .TRUE. ! vegetation states +output%params = .TRUE. ! input parameters used to produce run +output%patch = .TRUE. ! write per patch +output%balances = .TRUE. ! energy and water balances +check%ranges = 0 ! variable ranges, input and output +check%energy_bal = .TRUE. ! energy balance +check%mass_bal = .TRUE. ! water/mass balance + +verbose = .TRUE. ! write details of every grid cell init and params to log? +leaps = .TRUE. ! calculate timing with leap years? +logn = 88 ! log file number - declared in input module +fixedCO2 = 350.0 ! if not found in met file, in ppmv + +ncciy = 0 ! 0 = NO GSWP2; 4-digit year input for year of GSWP2 met +gswpfile%rainf = 'gswp/Rainf_gswp1987.nc' +gswpfile%snowf = 'gswp/Snowf_gswp1987.nc' +gswpfile%LWdown= 'gswp/LWdown_srb1987.nc' +gswpfile%SWdown= 'gswp/SWdown_srb1987.nc' +gswpfile%PSurf = 'gswp/PSurf_ecor1987.nc' +gswpfile%Qair = 'gswp/Qair_cru1987.nc' +gswpfile%Tair = 'gswp/Tair_cru1987.nc' +gswpfile%wind = 'gswp/Wind_ncep1987.nc' &end From fdf1b9a4005972b97db78660473e94ab10735678 Mon Sep 17 00:00:00 2001 From: "Srbinovsky, Jhan (O&A, Aspendale)" Date: Wed, 28 May 2025 16:56:27 +1000 Subject: [PATCH 8/8] add file --- src/offline/temp_module.F90 | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 src/offline/temp_module.F90 diff --git a/src/offline/temp_module.F90 b/src/offline/temp_module.F90 new file mode 100644 index 000000000..6ff9d5bd9 --- /dev/null +++ b/src/offline/temp_module.F90 @@ -0,0 +1,18 @@ +MODULE temp_module + +LOGICAL, SAVE, PUBLIC :: vegparmnew = .FALSE. ! using new format input file (BP dec 2007) +LOGICAL, SAVE, PUBLIC :: spinup = .FALSE. ! model spinup to soil state equilibrium? +LOGICAL, SAVE, PUBLIC :: spincasa = .FALSE. ! TRUE: CASA-CNP Will spin mloop times, FALSE: no spin up +LOGICAL, SAVE, PUBLIC :: CASAONLY = .FALSE. ! ONLY Run CASA-CNP +LOGICAL, SAVE, PUBLIC :: l_casacnp = .FALSE. ! using CASA-CNP with CABLE +LOGICAL, SAVE, PUBLIC :: l_landuse = .FALSE. ! using CASA-CNP with CABLE +LOGICAL, SAVE, PUBLIC :: l_laiFeedbk = .FALSE. ! using prognostic LAI +LOGICAL, SAVE, PUBLIC :: l_vcmaxFeedbk = .FALSE. ! using prognostic Vcmax + +REAL, SAVE, PUBLIC :: delsoilM ! allowed variation in soil moisture for spin up +REAL, SAVE, PUBLIC :: delsoilT ! allowed variation in soil temperature for spin up +REAL, SAVE, PUBLIC :: delgwM = 1e-4 + +INTEGER, SAVE, PUBLIC :: LALLOC = 0 ! alloc coeff passed to spincasa + +END MODULE temp_module