-
Notifications
You must be signed in to change notification settings - Fork 321
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
adding a new feature to CTSM: excess ground ice physics #1229
Comments
Hi @billsacks, @dlawrenncar, @swensosc.
Cold StartRight now the public variables that are associated with the excess_ice execution are appeneded to the real(r8), pointer :: excess_ice_col (:,:) ! ammount of excess ice per soil layer in a column (kg/m2)
real(r8), pointer :: init_exice (:,:) ! initial value (begining of a timestep) of col excess ice per soil layer (kg/m2)
real(r8), pointer :: exice_melt_lev (:,:) ! excess ice melting per soil layer (m)
real(r8), pointer :: exice_melt (:) ! excess ice melting per soil column (m) The method This is not consistent with the rest of the model. In any case, there are couple of questions:
SoilTemperatureMod.F90The flow is controlled with
Right now SummaryDecisions have to be made:
|
For 1., I think the best way to proceed is to use the input streams functionality. The streams functionality will read in input data from a separate file, and the spatial interpolation will be handled by the model (in this case, there will not be time varying fields). That way, the spatial resolution of the input data does not have to be modified for every surface data file. The 'use_excess_ice' flag can be used to determine whether to read from an excess ice stream file. If it is false, the excess ice variable can be set to zero. To see some examples of how the streams files are used, look for the prescribed soil moisture stream, or the dynamic lai stream. Erik should also be able to give advice on how to set up the stream for the initial condition. For 2., I think the code can/should be written such that when excess ice is zero, the model behavior reverts to the original code. Specifically, variables like z2 (btw, a more descriptive variable name should be used) and the variables related to the soil thermal properties should revert to z when excess ice is zero. That way, the flag itself is not needed in those routines. Additionally, that is the behavior that should occur for an excess ice simulation after the excess ice has melted, so the case with no initial excess ice, and all excess ice melted should be identical (aside from transient differences resulting from the time when excess ice was nonzero). |
Should it be within the existing
Would not that be too taxing computationally for use cases where @ekluzek what's the best source on making data stream dataset? |
It should be a separate module for excess ice. If you think that it might add significant computational cost, then testing the performance would be a good idea. |
I would create a new module for excess ice streams, named something like excessSoilIceStreams.F90. This should go in the src/cpl/nuopc directory. Another module should handle applying the excess ice streams to the model state. You should also create a stub for MCT in src/cpl/mct that doesn't do anything, but just provides a stub interface so you can build with MCT. For clarity you can add an abort if excess ice is tried to be used for MCT and not NUOPC.
I doubt it will matter, as long as the switch is at a high level. If the switch is imbedded deep within a patch loop or something -- then yes maybe it would make a small difference. I would just look at the performance difference with the new code compared to the baseline code version.
I would look at the examples of the existing stream datasets. You might especially look at the ch4 finundated stream dataset, since it's similar in only having a single time. The soil moisture stream dataset will also be useful as your dataset willl be in 3D. The MCT implementation for 3D fields requires the stream dataset to be on the same resolution as the model is running at -- but NUOPC doesn't require that. @mvertens is implementing more streams in NUOPC so when that work is done, it should be helpful for you to see how to do this. |
@erik @mvdebolskiy - I have an upcoming PR that I am finalizing that translates all of the mct stream functionality to calling cdeps share code. |
@erik @mvdebolskiy - just to clarify - all of the MCT stream functionality is sitll in place. Its just if you use CMEPS, you will use the new CDEPS stream functionality. |
@ekluzek the datastream will be 2d and the redistribution of the data within the column will be handled by a couple of parameters. I've already made .nc files with 0.9x1.25 resolution (since there was no example of interpolation in @mvertens does that mean that I can write with the old mct instructions? Also, what would be the proper version of ESMF for me to get on sigma2 machine? If I understood correctly 8.1 should be enough. Is it ok to build it with |
@mvdebolskiy - I would encourage you to use the new CDEPS framework since that is what we are moving to with all the new science being added to the model. My comment is to clarify that the older MCT streams will be kept around for backwards compatibility (they will now reside in the src/cpl/mct) but no new development will be done with them. We are currently using intel19.1.1. @jedwards4b - can you please respond regarding intel-2019b? |
I'm not sure what intel-2019b is but it's probably okay as long as you are consistent with the cesm build. |
Hi, sorry for the delay, I managed to run latest master with nuopc and cdeps/cmeps on the Norwegian machines with intel-2021b. |
@mvdebolskiy two issues that talk about mesh files are here: #1397and #1513. One of the tools we use is an ESMF tool that converts files from SCRIP grid format to ESMF mesh format ESMF_Scrip2Unstruct. It's an executable built with the ESMF library under the "bin" directory. The ESMF documentation gives the specifications for contents of the SCRIP grid files and the ESMF mesh files. The SCRIP grid format is simpler as it just needs the gridcell center latitude/longitudes and the latitude/longitudes of the four vertices. |
Purpose with this issue:
We propose to add excess ground ice physics into the ctsm5.1.dev014 for better solving soil physics and hydrological impacts associated with the thawing process in the permafrost regions. This will imply changes in the following 8 files:
Brief science information:
The current CTSM does not include excess ground ice for the permafrost region, which inevitably leads to biases in calculating the soil physics and hydrological change along with the permafrost degradataion process (Burn and Nelson, 2006). We propose to add a feature of excess ice physics, which was initially developed based on CLM4.5 (Lee et al., 2014). Compared to the original development, we suggest to add a namelist entry and switches in the code so ctsm users could to turn on and off the excess ice physics easily.
Pseudocode for all file changes:
Long term goal:
To add the suggested feature to the master branch of CTSM.
People involved:
@lca041, Hanna Lee ([email protected]), @kjetilaas, @sunnivin, @dlawrenncar, @swensosc.
The text was updated successfully, but these errors were encountered: