Skip to content

Initial WIEMIP usermods#3950

Draft
wwieder wants to merge 5 commits into
ESCOMP:wetlandsfrom
wwieder:wetlands_usermods
Draft

Initial WIEMIP usermods#3950
wwieder wants to merge 5 commits into
ESCOMP:wetlandsfrom
wwieder:wetlands_usermods

Conversation

@wwieder
Copy link
Copy Markdown
Contributor

@wwieder wwieder commented Apr 23, 2026

Initial draft of usermods I'm using in WIEMIP spinups (currently for AD, only)

@wwieder wwieder added the enhancement new capability or improved behavior of existing capability label Apr 23, 2026
@wwieder wwieder changed the title initial wiemip usermods Initial WIEMIP usermods Apr 23, 2026
@wwieder
Copy link
Copy Markdown
Contributor Author

wwieder commented Apr 28, 2026

@lawrencepj1 can you suggest additional history output we need for WIEMIP simulations?

@swensosc the list of variables I have for hillslope output is below. Does this seem appropriate?

!---------------------
! History output
!---------------------

hist_nhtfrq = 0,0,0
hist_mfilt = 1,1,1
hist_dov2xy = .true., .false., .false.
hist_type1d_pertape = 'GRID','COLS','PFTS'

hist_fincl1 = 'STREAM_WATER_DEPTH','STREAM_WATER_VOLUME','FROST_TABLE',
   'CWDC_HR','LIT_MET_HR','LIT_CEL_HR','LIT_LIG_HR',
   'SOM_ACT_HR_S2','SOM_ACT_HR_S3','SOM_SLO_HR_S1',
   'SOM_SLO_HR_S3','SOM_PAS_HR','FCO2','FROST_TABLE',
   'LIT_MET_N_TO_SOM_ACT_N','LIT_CEL_N_TO_SOM_ACT_N',
   'LIT_LIG_N_TO_SOM_SLO','TAF','LITFIRE',
   'M_DEADROOTC_STORAGE_TO_FIRE','M_DEADROOTC_TO_FIRE',
   'M_DEADROOTC_XFER_TO_FIRE','M_DEADSTEMC_STORAGE_TO_FIRE',
   'M_DEADSTEMC_TO_FIRE','M_DEADSTEMC_XFER_TO_FIRE',
   'M_FROOTC_STORAGE_TO_FIRE','M_FROOTC_TO_FIRE',
   'M_FROOTC_XFER_TO_FIRE','M_LEAFC_STORAGE_TO_FIRE',
   'M_LEAFC_TO_FIRE','M_LEAFC_XFER_TO_FIRE',
   'M_LIVEROOTC_STORAGE_TO_FIRE','M_LIVEROOTC_TO_FIRE',
   'M_LIVEROOTC_XFER_TO_FIRE','M_LIVESTEMC_STORAGE_TO_FIRE',
   'M_LIVESTEMC_TO_FIRE','M_LIVESTEMC_XFER_TO_FIRE',
   'M_GRESP_STORAGE_TO_FIRE','M_GRESP_XFER_TO_FIRE'

hist_fincl2 = 'H2OSFC','H2OSNO','ZWT','ZWT_PERCH','FROST_TABLE',
   'TWS','SOILLIQ','SOILICE','FSNO','FH2OSFC','ALT','QLATFLOWOUT',
   'QDRAI','QOVER','QVEGT','QVEGE','QSOIL','TSOI','FINUNDATED',
   'CH4_SURF_DIFF_SAT','CH4_SURF_DIFF_UNSAT','CH4_EBUL_TOTAL_SAT',
   'CH4_EBUL_TOTAL_UNSAT','CH4_SURF_EBUL_SAT','CH4_SURF_EBUL_UNSAT',
   'CH4_SURF_AERE_SAT','CH4_SURF_AERE_UNSAT','TOTCOLCH4','CONC_CH4_SAT',
   'CONC_CH4_UNSAT','CH4_PROD_COL','CH4_OXID_COL',
   'CH4_OXID_DEPTH_SAT','CH4_OXID_DEPTH_UNSAT',
   'CH4_PROD_DEPTH_SAT','CH4_PROD_DEPTH_UNSAT',
   'SNOWDP', 'SNOW_DEPTH','ALTMAX','BTRANMN'

hist_fincl3 = 'FCTR','FGEV','FROOTC_ALLOC','FSH',
   'FSRND','FSRNI','FSRVD','FSRVI','FSDSND',
   'FSDSNI','FSDSVD','FSDSVI',
   'GPP','HTOP','LEAFC_ALLOC','NPP','BTRANMN',
   'MEG_acetone','MEG_isoprene','MEG_methanol',
   'NFIX','FFIX_TO_SMINN','PFT_FIRE_CLOSS',
   'Rnet','TOTVEGC','TOTVEGN','WOODC_ALLOC','TLAI'

@swensosc
Copy link
Copy Markdown
Contributor

swensosc commented Apr 28, 2026 via email

@lawrencepj1
Copy link
Copy Markdown

Hi @wwieder and @swensosc

This is directly from Adrianna's user_nl_clm files used for TRENDY 2025 S3 (full transient) simulation:

hist_mfilt = 1,1,1
hist_nhtfrq = 0,0,-24

! monthly global gridded
hist_fincl1 = 'AR', 'COL_FIRE_CLOSS', 'CROPPROD1C_LOSS', 'CWD_C', 'CWD_C_TO_LIT_CEL_C',
'CWD_C_TO_LIT_LIG_C', 'DEADCROOTC', 'DEADCROOTC_STORAGE', 'DEADCROOTC_XFER',
'DEADCROOTN_STORAGE', 'DEADCROOTN_XFER', 'DEADSTEMN_STORAGE', 'DEADSTEMN_XFER',
'LIVECROOTN_STORAGE', 'LIVECROOTN_XFER', 'LIVESTEMN_STORAGE', 'LIVESTEMN_XFER',
'DEADCROOTN', 'DEADSTEMN', 'DENIT', 'DWT_CONV_CFLUX', 'F_N2O_DENIT',
'F_N2O_NIT', 'FAREA_BURNED', 'FFIX_TO_SMINN', 'FROOTC', 'FROOTC_STORAGE',
'FROOTC_TO_LITTER', 'FROOTC_XFER', 'FROOTN', 'FSDS', 'GPP', 'HR', 'H2OSNO',
'FSR', 'FGEV', 'FCTR', 'FSRNI', 'FSRVI', 'FSDSNI', 'FSDSVI', 'FSH',
'FLDS', 'FIRE',
'LEAFC', 'LEAFC_STORAGE', 'LEAFC_TO_LITTER', 'LEAFC_XFER', 'LEAFN',
'LEAFN_STORAGE', 'LEAFN_XFER', 'LIT_CEL_C_TO_SOM_ACT_C',
'LIT_LIG_C_TO_SOM_SLO_C', 'LIT_MET_C_TO_SOM_ACT_C', 'LITFALL', 'LITFIRE',
'LIVECROOTC', 'LIVECROOTC_STORAGE', 'LIVECROOTC_XFER', 'LIVECROOTN',
'LIVESTEMN', 'M_DEADROOTC_STORAGE_TO_FIRE', 'M_DEADROOTC_TO_FIRE',
'M_DEADROOTC_XFER_TO_FIRE', 'M_DEADSTEMC_STORAGE_TO_FIRE',
'M_DEADSTEMC_TO_FIRE', 'M_DEADSTEMC_XFER_TO_FIRE',
'M_FROOTC_STORAGE_TO_FIRE', 'M_FROOTC_TO_FIRE', 'M_FROOTC_XFER_TO_FIRE',
'M_GRESP_STORAGE_TO_FIRE', 'M_GRESP_XFER_TO_FIRE', 'M_LEAFC_STORAGE_TO_FIRE',
'M_LEAFC_TO_FIRE', 'M_LEAFC_XFER_TO_FIRE', 'M_LIVEROOTC_STORAGE_TO_FIRE',
'M_LIVEROOTC_TO_FIRE', 'M_LIVEROOTC_XFER_TO_FIRE',
'M_LIVESTEMC_STORAGE_TO_FIRE', 'M_LIVESTEMC_TO_FIRE',
'M_LIVESTEMC_XFER_TO_FIRE', 'NBP', 'NDEP_TO_SMINN', 'NET_NMIN', 'NFIX',
'NPP', 'QRUNOFF', 'QSOIL', 'QVEGE', 'QVEGT', 'RAIN', 'RR', 'QIRRIG_DRIP',
'SMIN_NO3_LEACHED', 'SMIN_NO3_RUNOFF', 'SMINN', 'SMINN_TO_PLANT', 'SNOW',
'SOILICE', 'SOILLIQ', 'SOM_ACT_C', 'SOM_ACT_C_1m', 'SOM_ACT_C_TO_SOM_PAS_C',
'SOM_ACT_C_TO_SOM_SLO_C', 'SOM_PAS_C', 'SOM_PAS_C_1m',
'SOM_PAS_C_TO_SOM_ACT_C', 'SOM_SLO_C', 'SOM_SLO_C_1m',
'SOM_SLO_C_TO_SOM_ACT_C', 'SOM_SLO_C_TO_SOM_PAS_C', 'SOMC_FIRE', 'SOMFIRE',
'TLAI', 'TOT_WOODPRODC', 'TOT_WOODPRODC_LOSS', 'TOT_WOODPRODN', 'TOTLITC',
'TOTLITN', 'TOTSOILICE', 'TOTSOILLIQ', 'TOTSOMC', 'TOTSOMN', 'TOTVEGC',
'TOTVEGN', 'TSA', 'TSOI', 'WOODC',
'FROOTN_STORAGE', 'FROOTN_XFER', "FSRND", "FSRVD", "FSDSND", "FSDSVD"

! monthly pft
hist_fincl2 = 'AGNPP', 'FCEV', 'FCTR', 'FGEV', 'FIRE', 'FLDS', 'FROOTC_ALLOC', 'FSDS', 'FSDSND',
'FSDSNI', 'FSDSVD', 'FSDSVI', 'FSH', 'FSR', 'FSRND', 'FSRNI', 'FSRVD',
'FSRVI', 'GPP', 'HR', 'HTOP', 'LEAFC_ALLOC', 'NPP', 'QIRRIG_DRIP', 'TLAI',
'TOTVEGC', 'TV', 'WOODC_ALLOC', 'GRAINC_TO_FOOD', 'QVEGE', 'QVEGT', 'QSOIL',
'Rnet'

! daily global gridded
hist_fincl3 = 'TLAI'

hist_dov2xy = .true., .false., .true.

@lawrencepj1
Copy link
Copy Markdown

@wwieder

Can you point me to the default history files being produced in your flat spin up?

Thanks
Peter

@slevis-lmwg slevis-lmwg moved this to In progress - release/externals / MOSART / RTM / mizu etc. tags in CTSM: Upcoming tags Apr 28, 2026
@wwieder
Copy link
Copy Markdown
Contributor Author

wwieder commented Apr 29, 2026

@lawrencepj1, sample default h0 files available are here:
/glade/derecho/scratch/wwieder/archive/wetlands.n03.ctsm5.4.029_f09noCrop_HH_165_testCTRL

@wwieder
Copy link
Copy Markdown
Contributor Author

wwieder commented Apr 30, 2026

@slevis-lmwg noted in this comment. I'm migrating this thread to the CTSM-side PR here.

@wwieder I noticed the following (may or may not be of concern):

  1. In BGC and RAD, should co2 align be 1850 and last be 1869 or 2000?
co2tseries.cmip6_20tr:year_first=1850
co2tseries.cmip6_20tr:year_last=1850
co2tseries.cmip6_20tr:year_align=1
  1. I have one or two more comments but glade has frozen on me... Adding now:
    Two paramfiles and two hillslope files appear in user_nl_clm. Which one of each is correct?

  2. We may have already discussed the topic of transient vs. fixed ndep, and we decided that fixed made more sense? In any case, that's what you're using.

@wwieder
Copy link
Copy Markdown
Contributor Author

wwieder commented Apr 30, 2026

Thanks for looking at these, Sam.

I'm constantly baffled by year_align. Can you help me on this?

CO2 year_last should be:

  • 2000 for BGC (where we cycle climate 1850-1869) and
  • 1850 for RAD (constant CO2, but time evolving climate).

@olyson
Copy link
Copy Markdown
Contributor

olyson commented Apr 30, 2026

@wwieder I think you had a question about the urbantv streams (not sure where the question was but I'm posting here). Currently, the urbantv streams are just a way to turn off air conditioning (AC) in the 1850-1949 part of the transient. For 1950-2100 AC is on but the values of the variables on the file are the same for every year.
For an 1850 spinup the settings should show up explicitly in the namelist as:

stream_year_first_urbantv = 1850
stream_year_last_urbantv = 1850

AC will thus be off.
For a historical the settings should show up explicitly in the namelist as:

model_year_align_urbantv = 1850
stream_year_first_urbantv = 1850
stream_year_last_urbantv = 2106

Happy to talk about what settings might be appropriate for your particular simulations.

@slevis-lmwg
Copy link
Copy Markdown
Contributor

@wwieder I added a couple more comments to my post above for you to look at.

Regarding year_align, it confused me, too, for a while. Now I think it's simpler than it appears:

  • year_first and last give the range of stream data to use in the simulation
  • year_align represents the simulation year that you want aligned with the data in year_first, and it really just matters most in transient cases; examples:
  1. In transient simulations from 1850 to 1920 where we cycle stream data from 1901 to 1920, the most intuitive year_align = 1901 because I want the same data year as model year. For the sake of argument, you could less intuitively offset year_align by 20 yrs (1881, 1921, etc.), and you would have the same outcome.
  2. In 1850 simulations that start with model year 1 and cycle stream data from 1901 to 1920, year_align doesn't really matter. If you set it to 1, then the model will align the first year of stream data (1901) with the first year of the simulation (1).
  3. A workflow that would likely still confuse me is Peter Thornton's. His logic makes sense, but I do not think that we do this anymore. Peter wanted the stream data at the end of AD to line up with the stream data at the beginning of postAD and similarly the stream data at the end of postAD to line up with the stream data at the beginning of the next simulation, and so forth. In other words if AD ended with stream data year 1907, then I should make sure to start postAD with stream data year 1908. I sometimes spent hours trying to figure out how things would line up correctly...

@wwieder
Copy link
Copy Markdown
Contributor Author

wwieder commented May 1, 2026

@lawrencepj1, sorry to nag, but have you made any progress on going through the WIEMIP data request to make sure we're writing out the history needed form the experiments? (if it's easier, see also #3949)

@wwieder wwieder mentioned this pull request May 1, 2026
@slevis-lmwg
Copy link
Copy Markdown
Contributor

slevis-lmwg commented May 6, 2026

From meeting with @lawrencepj1 and @ekluzek
Based on the time this will take, Peter expects to resolve this by next week.

Notes:

@slevis-lmwg slevis-lmwg removed their assignment May 11, 2026
@rosiealice
Copy link
Copy Markdown
Contributor

What are y'all thinking we should report for 'surface wind' here? I found U10 - wind at 10m, which is the standard output, and U_S_MEAN, which is in the dust model and is the wind at 0.1m above the surface. The latter seems to correspond more to the actual surface wind but I don't know if it has any dust model calibration terms baked into it? Can you advise, @dmleung ? :)

u_mean_slt(p) = (wnd_frc_slt/k) * log(hgt_sal / z0a_glob) ! translating from ustar (velocity scale) to actual wind

tagging @JessicaNeedham too...

@rosiealice
Copy link
Copy Markdown
Contributor

rosiealice commented May 26, 2026

On a similar note, what are you using for:

  • frozen layer thickness? ( "Freeze depth; depth to zero centigrade isotherm in non-permafrost"). I wondered if this was FROST_TABLE ?

  • Total soil wetness (Vertically integrated soil moisture divided by maximum allowable soil moisture above wilting point) . This seems like a sketchy version of BTRAN, but what is 'allowable' here? Is it the maximum possible SWC or field capacity? I don't think that moisture above field capacity is super interesting functionally?

Fractional Ocean Cover? I guess this is probably a surface dataset variable?

FWIW, here is the table where we are filling in the output fields:
https://docs.google.com/spreadsheets/d/1MG_x52Uf5T9TSANtw34VqDi2WBr-57-gZrEJaBzl_ok/edit?usp=sharing
The highlighting scheme is:
Blue: Things I am still unsure of.
Orange: Things CLM-FATES could output in theory but can't without some code mods
Green: things I think we can output on the CLM PFT machinery (but aren't doing yet by default).

If you see anything odd then please say!

@dmleung
Copy link
Copy Markdown
Contributor

dmleung commented May 26, 2026

What are y'all thinking we should report for 'surface wind' here? I found U10 - wind at 10m, which is the standard output, and U_S_MEAN, which is in the dust model and is the wind at 0.1m above the surface. The latter seems to correspond more to the actual surface wind but I don't know if it has any dust model calibration terms baked into it? Can you advise, @dmleung ? :)

u_mean_slt(p) = (wnd_frc_slt/k) * log(hgt_sal / z0a_glob) ! translating from ustar (velocity scale) to actual wind

tagging @JessicaNeedham too...

Hi @rosiealice :) yes this is the 0.1 m wind speed calculated from friction velocity fv. The z0a_glob term you see is the soil roughness, assumed to be a constant of 10^-4 m for dust emission modeling. Apart from this there is no other dust model calibration in this line. Does this help?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement new capability or improved behavior of existing capability

Projects

Status: In progress - release/externals / MOSART / RTM / mizu etc. tags
Status: Todo

Development

Successfully merging this pull request may close these issues.

7 participants