What version of the code are you using?
CESM version: CESM2.1.5
Have you made any changes to files in the source tree?
No source-code changes (only case-level settings / user_nl_pop / input files).
Describe every step you took leading up to the problem:
1. Create a fully coupled PI control case (any standard PI compset is fine for this question), then run long enough to create a climatology for surface salinity (e.g., 100-yr monthly climatology).
2. Build a target restoring file from POP history output:
- Start from a climatology of salinity (3D).
- Apply a regional perturbation only within a limited Southern Hemisphere mid/high-latitude band (example: a latitude band like ~<lat1>–<lat2>), e.g. target = climatology + 0.5 (psu or g/kg; only surface) inside the region, unchanged elsewhere.
3. Prepare a regional mask file so that restoring is applied only in the selected region (land points excluded, ocean points outside region excluded).
4. Enable salinity restoring/nudging in POP via user_nl_pop (I think it is handled by forcing_s_interior / pop_in namelist).
- I am not fully sure about the correct namelist variables and the expected netCDF variable names / dimensions (details below).
-----------------------my user_nl_pop ---------------------------------
&forcing_s_interior_nml
s_interior_formulation = 'restoring'
s_interior_data_type = 'annual'
s_interior_file_fmt = 'nc'
s_interior_filename = '/path/to/your/annual_SALINITY_3D_clim.nc'
s_interior_surface_restore = .true.
s_interior_restore_max_level = 1
s_interior_variable_restore = .true.
s_interior_restore_file_fmt = 'nc'
s_interior_restore_filename = '/path/to/your/S_RESTORE_MAX_LEVEL_and_S_RESTORE_RTAU_2D.nc'
/
----------------------------------------------------------------------------
I am attempting to apply regional restoring of surface salinity in POP (CESM2.1.5) using forcing_s_interior_nml, with restoring restricted to the top model level only (s_interior_surface_restore=.true. and s_interior_restore_max_level=1) and with a user-generated target climatology.
My main issue is that the model crashes shortly after enabling salinity restoring. The run aborts with a MARBL/CO2SYS pH solver error shortly after enabling restoring; I suspect salinity restoring may be triggering unphysical states, but I am not yet sure. I am not sure whether this indicates:
1. a misunderstanding on my side about how forcing_s_interior restoring should be configured for surface-only and regional-only salinity restoring, or
2. POP/MARBL (and possibly sea ice) being very sensitive to salinity restoring if the input target/mask has any issues (units, missing values, land points, sharp boundaries, etc.).
Additional context:
1. I also tested a configuration with only ocean + sea ice coupling (to simplify debugging), but the run still fails after enabling salinity restoring, and in some attempts the sea ice component (CICE) aborts soon after the run begins.
2. Without salinity restoring (same case otherwise), the model runs normally.
What I would like to confirm / ask:
1. Is forcing_s_interior_nml the recommended/supported pathway to do surface-only (k=1) and regional-only salinity restoring in POP?
2. Are there known best practices / pitfalls to avoid pH/chemistry failures when restoring salinity (e.g., required handling of land points, fill values, units, tapering at the boundary, recommended restoring strength)?
3. What are the key sanity checks you recommend to verify that the restoring target and mask are not introducing unphysical salinity tendencies (e.g., min/max checks, ensuring restoring is strictly zero outside the region/over land, etc.)?
The error I had met:
----
ERROR: bounding bracket for pH solution not found
co2calc.F90: drtsafe_row
----
CESM version: CESM2.1.5
Have you made any changes to files in the source tree?
No source-code changes (only case-level settings / user_nl_pop / input files).
Describe every step you took leading up to the problem:
1. Create a fully coupled PI control case (any standard PI compset is fine for this question), then run long enough to create a climatology for surface salinity (e.g., 100-yr monthly climatology).
2. Build a target restoring file from POP history output:
- Start from a climatology of salinity (3D).
- Apply a regional perturbation only within a limited Southern Hemisphere mid/high-latitude band (example: a latitude band like ~<lat1>–<lat2>), e.g. target = climatology + 0.5 (psu or g/kg; only surface) inside the region, unchanged elsewhere.
3. Prepare a regional mask file so that restoring is applied only in the selected region (land points excluded, ocean points outside region excluded).
4. Enable salinity restoring/nudging in POP via user_nl_pop (I think it is handled by forcing_s_interior / pop_in namelist).
- I am not fully sure about the correct namelist variables and the expected netCDF variable names / dimensions (details below).
-----------------------my user_nl_pop ---------------------------------
&forcing_s_interior_nml
s_interior_formulation = 'restoring'
s_interior_data_type = 'annual'
s_interior_file_fmt = 'nc'
s_interior_filename = '/path/to/your/annual_SALINITY_3D_clim.nc'
s_interior_surface_restore = .true.
s_interior_restore_max_level = 1
s_interior_variable_restore = .true.
s_interior_restore_file_fmt = 'nc'
s_interior_restore_filename = '/path/to/your/S_RESTORE_MAX_LEVEL_and_S_RESTORE_RTAU_2D.nc'
/
----------------------------------------------------------------------------
I am attempting to apply regional restoring of surface salinity in POP (CESM2.1.5) using forcing_s_interior_nml, with restoring restricted to the top model level only (s_interior_surface_restore=.true. and s_interior_restore_max_level=1) and with a user-generated target climatology.
My main issue is that the model crashes shortly after enabling salinity restoring. The run aborts with a MARBL/CO2SYS pH solver error shortly after enabling restoring; I suspect salinity restoring may be triggering unphysical states, but I am not yet sure. I am not sure whether this indicates:
1. a misunderstanding on my side about how forcing_s_interior restoring should be configured for surface-only and regional-only salinity restoring, or
2. POP/MARBL (and possibly sea ice) being very sensitive to salinity restoring if the input target/mask has any issues (units, missing values, land points, sharp boundaries, etc.).
Additional context:
1. I also tested a configuration with only ocean + sea ice coupling (to simplify debugging), but the run still fails after enabling salinity restoring, and in some attempts the sea ice component (CICE) aborts soon after the run begins.
2. Without salinity restoring (same case otherwise), the model runs normally.
What I would like to confirm / ask:
1. Is forcing_s_interior_nml the recommended/supported pathway to do surface-only (k=1) and regional-only salinity restoring in POP?
2. Are there known best practices / pitfalls to avoid pH/chemistry failures when restoring salinity (e.g., required handling of land points, fill values, units, tapering at the boundary, recommended restoring strength)?
3. What are the key sanity checks you recommend to verify that the restoring target and mask are not introducing unphysical salinity tendencies (e.g., min/max checks, ensuring restoring is strictly zero outside the region/over land, etc.)?
The error I had met:
----
ERROR: bounding bracket for pH solution not found
co2calc.F90: drtsafe_row
----