Scheduled Downtime
On Tuesday 24 October 2023 @ 5pm MT the forums will be in read only mode in preparation for the downtime. On Wednesday 25 October 2023 @ 5am MT, this website will be down for maintenance and expected to return online later in the morning.
Normal Operations
The forums are back online with normal operations. If you notice any issues or errors related to the forums, please reach out to help@ucar.edu

use_soil_moisture_streams problem

Status
Not open for further replies.

yangx2

xinyi yang
Member
Hi everyone,
I got errors when I set "use_soil_mositure_stream=.ture. ".
Here shows the commands
+++++++++++++++++++++++++
./create_newcase --case ~/cases/IHistClm50Sp --compset IHistClm50Sp --res f09_g17
cd ~/cases/IHistClm50Sp
./case.setup
./xmlchange STOP_N=2
./xmlchange STOP_OPTION=nyears
./xmlchange RUN_REFDATE=1979-01=01
./case.build
+++++++++++++++++++++++++

After case building, I add several lines in user_nl_clm shown below
+++++++++++++++++++++++++
use_soil_moisture_streams = .true.
stream_fldfilename_soilm = '/home/yangx2/prescribed_data/LFMIP-pdLC-SST.H2OSOI.0.9x1.25.20levsoi.natveg.1980-2014.MONS_climo.c190716.nc
soilm_offset = 0
soilm_tintalgo = 'linear'
stream_year_first_soilm = 1979
stream_year_last_soilm = 1979
+++++++++++++++++++++++++

Then I execute "./preview_namelist" and I got errors shown below
++++++++++++++++++++++++++++++++++
Setting resource.RLIMIT_STACK to -1 from (-1, -1)
Creating component namelists
Calling /home/yangx2/my_cesm_sandbox/cime/src/components/data_comps/datm/cime_config/buildnml
File not found: domainfile = "/home/yangx2/inputdata/share/domains/domain.lnd.fv0.9x1.25_gx1v7.151020.nc", will attempt to download in check_input_data phase
Calling /home/yangx2/my_cesm_sandbox/components/clm//cime_config/buildnml
ERROR: Command /home/yangx2/my_cesm_sandbox/components/clm/bld/build-namelist failed rc=255
out=CLM adding use_case 20thC_transient defaults for var 'clm_demand' with val 'flanduse_timeseries'
CLM adding use_case 20thC_transient defaults for var 'clm_start_type' with val 'arb_ic'
CLM adding use_case 20thC_transient defaults for var 'model_year_align_urbantv' with val '1850'
CLM adding use_case 20thC_transient defaults for var 'sim_year' with val '1850'
CLM adding use_case 20thC_transient defaults for var 'sim_year_range' with val '1850-2000'
CLM adding use_case 20thC_transient defaults for var 'stream_year_first_urbantv' with val '1850'
CLM adding use_case 20thC_transient defaults for var 'stream_year_last_urbantv' with val '2106'
CLM adding use_case 20thC_transient defaults for var 'use_case_desc' with val 'Simulate transient land-use, and aerosol deposition changes from 1850 to 2015'
err=File::Glob::glob() will disappear in perl 5.30. Use File::Glob::bsd_glob() instead. at /home/yangx2/my_cesm_sandbox/components/clm/bld/CLMBuildNamelist.pm line 4335.
Warning : CLM build-namelist::CLMBuildNamelist::setup_logic_soilm_streams() : For a transient case, soil moisture streams, should NOT use soilm_tintalgo='linear' since vegetated areas could go from missing to not missing or vice versa
-- Add -ignore_warnings option to CLM_BLDNML_OPTS to ignore this warning
++++++++++++++++++++++++++++++++++
Any hints would be helpful! Thanks in advance!
Best,
Skylar
 

erik

Erik Kluzek
CSEG and Liaisons
Staff member
OK so the critical part of this is this message:

Warning : CLM build-namelist::CLMBuildNamelist::setup_logic_soilm_streams() : For a transient case, soil moisture streams, should NOT use soilm_tintalgo='linear' since vegetated areas could go from missing to not missing or vice versa
-- Add -ignore_warnings option to CLM_BLDNML_OPTS to ignore this warning

This is because you set soilm_tintalgo='linear' in the user_nl_clm file and the fact that it's a transient compset. It's just a warning to say that this is potentially problematic for points where the input soil moisture field becomes the missing value (usually set to 1.e36) from time to time as the simulation proceeds forward. If this is the case that point will linearly interpolate the 1.e36 value with the valid value from the next month -- which obviously could give you bad data and potentially crash the simulation. If all points are 1.e36 in time it will handle it correctly, but it will cause problems if it goes in and out of existence.

If you are confident this is NOT a problem and want to run anyway, you can do this...

./xmlchange --append CLM_BLDNML_OPTS="-ignore_warnings"

If you don't set this in your user_nl_clm file and only set use_soil_moisture_streams = .true. it'll default to a setting for the time interpolation where the closest value in time is used, and hence won't have the problem of bad interpolation in between. So I would recommend doing that if you think your input data file might go from points coming into and out of existence. In your example, since this only happens on Jan/1, it won't be a problem because you are only using a single year -- but potentially could be when cycling over multiple years.

Part of the reason for the warning is that if you do have points going into and out of existence this is likely to either cause the model to crash in an intractable way, or to cause bad results for those points. Neither of those are good so we wanted to make sure the user knew this was a potential subtle problem.
 

yangx2

xinyi yang
Member
OK so the critical part of this is this message:

Warning : CLM build-namelist::CLMBuildNamelist::setup_logic_soilm_streams() : For a transient case, soil moisture streams, should NOT use soilm_tintalgo='linear' since vegetated areas could go from missing to not missing or vice versa
-- Add -ignore_warnings option to CLM_BLDNML_OPTS to ignore this warning

This is because you set soilm_tintalgo='linear' in the user_nl_clm file and the fact that it's a transient compset. It's just a warning to say that this is potentially problematic for points where the input soil moisture field becomes the missing value (usually set to 1.e36) from time to time as the simulation proceeds forward. If this is the case that point will linearly interpolate the 1.e36 value with the valid value from the next month -- which obviously could give you bad data and potentially crash the simulation. If all points are 1.e36 in time it will handle it correctly, but it will cause problems if it goes in and out of existence.

If you are confident this is NOT a problem and want to run anyway, you can do this...

./xmlchange --append CLM_BLDNML_OPTS="-ignore_warnings"

If you don't set this in your user_nl_clm file and only set use_soil_moisture_streams = .true. it'll default to a setting for the time interpolation where the closest value in time is used, and hence won't have the problem of bad interpolation in between. So I would recommend doing that if you think your input data file might go from points coming into and out of existence. In your example, since this only happens on Jan/1, it won't be a problem because you are only using a single year -- but potentially could be when cycling over multiple years.

Part of the reason for the warning is that if you do have points going into and out of existence this is likely to either cause the model to crash in an intractable way, or to cause bad results for those points. Neither of those are good so we wanted to make sure the user knew this was a potential subtle problem.
Hi Erik,
Thanks for your help. Following your suggestion, this time (re-create new case) I only set "use_soil_moisture_streams = .true. ". The weird thing here I get the same error. Then I execute "./xmlchange --append CLM_BLDNML_OPTS="-ignore_warnings", it seems problem solved.
One more thing I am confused is "LFMIP-pdLC-SST.H2OSOI.0.9x1.25.20levsoi.natveg.1980-2014.MONS_climo.c190716.nc" I download from NCAR website has 12-month data. We set "use_soil_mositure_streams=T" and "stream_fldfilename_soilm=*H20SOI*.nc" to tell the model we are using the prescribed soil moisture by the user instead of model prognostically determining soil moisture. So my question is if I want to run 30 model-year, the corresponding *.nc specified by ed "stream_fldfilename_soilm" has to expand to a 30-year timespan?

In case you may be confused about what I am doing now. I want to carry out an experiment by setting surface soil moisture as prescribed values (climatology) at a specific domain. Outside of this domain is freely coupled. It is very similar to the Pacific pacemaker experiment which is usually applied in POP.

Thanks again for your help!
Best,
Skylar
 
Status
Not open for further replies.
Top