Skip to content

Set rheology to zero for the C-grid when concentration is very small#1078

Open
JFLemieux73 wants to merge 7 commits intoCICE-Consortium:mainfrom
JFLemieux73:set_rheo_to_zero_in_MIZ_2
Open

Set rheology to zero for the C-grid when concentration is very small#1078
JFLemieux73 wants to merge 7 commits intoCICE-Consortium:mainfrom
JFLemieux73:set_rheo_to_zero_in_MIZ_2

Conversation

@JFLemieux73
Copy link
Copy Markdown
Contributor

@JFLemieux73 JFLemieux73 commented Dec 23, 2025

For detailed information about submitting Pull Requests (PRs) to the CICE-Consortium,
please refer to: https://github.com/CICE-Consortium/About-Us/wiki/Resource-Index#information-for-developers

THIS IS A DRAFT...I need to finalize some of the testing.

PR checklist

  • Short (1 sentence) summary of your PR:
    Set rheology term to zero for the C-grid for low concentration values at the E and N points (<1e-3)

  • Developer(s):
    @JFLemieux73

  • Suggest PR reviewers from list in the column to the right.
    @eclare108213

  • Please copy the PR test results link or provide a summary of testing completed below.
    385 measured results of 385 total results
    385 of 385 tests PASSED
    0 of 385 tests PENDING
    0 of 385 tests MISSING data
    0 of 385 tests FAILED

    note: this is for dyn_area_min = 0.001d0 and dyn_mass_min = 0.01d0

    with the same values as for the B-grid (i.e. dyn_area_min = 1e-11 and dyn_mass_min = 1e-10) the C-grid is now stable but the results are of course not BFB. I will add more info later.

  • How much do the PR code changes differ from the unmodified code?

    • bit for bit
    • different at roundoff level
    • more substantial
  • Does this PR create or have dependencies on Icepack or any other models?

    • Yes
    • No
  • Does this PR update the Icepack submodule? If so, the Icepack submodule must point to a hash on Icepack's main branch.

    • Yes
    • No
  • Does this PR add any new test cases?

    • Yes
    • No
  • Is the documentation being updated? ("Documentation" includes information on the wiki or in the .rst files from doc/source/, which are used to create the online technical docs at https://readthedocs.org/projects/cice-consortium-cice/. A test build of the technical docs will be performed as part of the PR testing.)

    • Yes
    • No, does the documentation need to be updated at a later time?
      • Yes
      • No

    Do we need to write in the doc that rheology is set to zero for aice<1e-3 ?

  • Please document the changes in detail, including why the changes are made. This will become part of the PR commit log.

Reducing dyn_area_min and dyn_mass_min (see PR #1055) led to instability with the C-grid. The modifications to the code in this PR correct this problem by setting the rheology term to zero for small values of concentration (<1e-3).

@JFLemieux73 JFLemieux73 changed the title Set rheo to zero in miz 2 Set rheology to zero for the C-grid when concentration is very small Dec 24, 2025
@JFLemieux73
Copy link
Copy Markdown
Contributor Author

When using dyn_area_min=1e-11 and dyn_mass_min=1e-10, it is not BFB with the previous. I ran the QC test:

INFO:main:Running QC test on the following directories:
INFO:main: /home/jfl001/data/cice/runs/ppp6_intel_smoke_gx1_44x1_medium_qc.qc_base
INFO:main: /home/jfl001/data/cice/runs/ppp6_intel_smoke_gx1_44x1_medium_qc.qc_test
INFO:main:Number of files: 1825
INFO:main:2 Stage Test Passed
INFO:main:Quadratic Skill Test Passed for Northern Hemisphere
INFO:main:Quadratic Skill Test Passed for Southern Hemisphere

Copy link
Copy Markdown
Contributor

@eclare108213 eclare108213 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some first impressions.

umassdti , & ! mass of U-cell/dte (kg/m^2 s)
rheofactU ! mult. factor = 1, set to 0 if aiU <= rheo_area_min
! rheofactU is not used but added for consistency with
! C-grid rheofactN and rheofactE (for call dyn_prep2)
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it's not used, I wouldn't add it. Just put a note in the docs (along with something about this functionality in general) that says it's not been implemented. Here, does the C-grid work at all with EAP?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for your comments @eclare108213. The C-grid does not work for EAP.

rheofactE and N (for the C-grid EVP) are calculated in dyn_prep2. As dyn_prep2 is called by all the 'solvers', this is why I added rheofactU for the B-grid EVP, VP and EAP.

I could add a comment that it is calculated but not used for the moment.

Do you have a better solution?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you prefer rheofact to be an optional argument?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think an optional argument would be better.

etax2U (:,:,:) ! etax2T averaged to U points
etax2U (:,:,:) , & ! etax2T averaged to U points
rheofactU(:,:,:) ! mult. factor = 1, set to 0 if aiU <= rheo_area_min
! rheofactU is not used but added for consistency with
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again, I wouldn't include rheofactU in evp.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same answer as above...

u0 = 5e-5_dbl_kind, & ! residual velocity for seabed stress (m/s)
cosw = c1 , & ! cos(ocean turning angle) ! turning angle = 0
sinw = c0 ! sin(ocean turning angle) ! turning angle = 0
rheo_area_min = 1e-3_dbl_kind, & ! minimum ice area concentration to activate rheology
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rheo_area_min should not be hardwired. (u0 probably shouldn't be, either.)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am not sure I want to give a lot of flexibility to the users for this. I would be inclined to keep it this way.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1.e-3 is plenty small to activate the rheology, maybe even smaller than it should be, physically. Can this parameter be constrained by data? A quick search online asserts free drift concentration values are from 0 to somewhere in the range of 60-80%. The rheological model already captures this change qualitatively by reducing the magnitude of the internal stress term for smaller concentrations, although not completely to free drift. This PR puts the ice into free drift (as defined by the balance of other momentum equation terms) for very small ice concentrations, and I agree that 1.e-3 is a reasonable cutoff value for modeling. I think hardwiring it is okay, although it would be interesting to test its sensitivity at some point. If someone argues that it needs to be adjustable, then they/we can move it into namelist later.

@dupontf
Copy link
Copy Markdown

dupontf commented Mar 13, 2026

To @eclare108213 : JF is letting us decide what to do with it. Since you said it is a useful PR, I would conclude that it is worth cleaning it up to CICE standards and merge it.

@eclare108213
Copy link
Copy Markdown
Contributor

To @eclare108213 : JF is letting us decide what to do with it. Since you said it is a useful PR, I would conclude that it is worth cleaning it up to CICE standards and merge it.

Perfect. For now, we might just clean up the C-grid version, add comments in places where a B-grid version would need updates, and create an issue for the B-grid work itself. If it's straightforward then perhaps we'll do all of it at once, with full QC testing. Thank you!

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants