Skip to content

Insert a sea ice concentration field (possibly generated from data assimilation)#104

Closed
sanAkel wants to merge 5 commits into
NOAA-EMC:developfrom
sanAkel:alan_ssmi
Closed

Insert a sea ice concentration field (possibly generated from data assimilation)#104
sanAkel wants to merge 5 commits into
NOAA-EMC:developfrom
sanAkel:alan_ssmi

Conversation

@sanAkel
Copy link
Copy Markdown

@sanAkel sanAkel commented Sep 20, 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

PR checklist

  • Short (1 sentence) summary of your PR:
    This feature is being ported from CICE4, that is used in RTOFS:
    • We use the sea ice concentration from data assimilation.
    • In this (CICE6) version usage is turned ON (default: OFF) via a logical: insert_sic variable.
    • See similar/same implementation in the old (CICE4) version of ice_restart.F90, search for insert_ssmi.
    • @awallcraft ported the code he wrote (and is used in CICE4) to CICE6.

[@NickSzapiro-NOAA in reply to: Can you add some text/description in comments see ⬇️]
One of the main goals of a data assimilation (DA)/prediction system that strives to provide close to observed sea ice concentrations and ice edge is to be able to reconcile the differences in modeled and observed sea ice concentrations derived from space borne instruments. Posey et al., 2025 implemented such a method with CICE4, it is hereby ported to CICE6. By default this feature is turned OFF. To turn it ON, set insert_sic to .true. in ice_in (input) namelist file and provide sic.nc to be able to nudge the modeled ice concentration to that from data assimilated (or observed) concentration.

  • Developer(s):
    @awallcraft

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

  • Please copy the PR test results link or provide a summary of testing completed below.

    • Tested against the develop branch of the NOAA-EMC CICE fork: https://github.com/NOAA-EMC/CICE.git

    • Test was datm_cdeps_mx025_gefs. At orion/hercules, paths:

      • Baseline (develop branch): /work/noaa/stmp/santa/stmp/santa/FV3_RT/rt_3352132/datm_cdeps_mx025_gefs_intel/BASL/
      • Control (sanAkel:alan_ssmi branch, i.e., this PR) with insert_sic= .false. : /work/noaa/stmp/santa/stmp/santa/FV3_RT/rt_3352132/datm_cdeps_mx025_gefs_intel/CTRL
      • Experiment (Same as above Control, but with insert_sic= .true.): /work/noaa/stmp/santa/stmp/santa/FV3_RT/rt_3352132/datm_cdeps_mx025_gefs_intel/EXP
    • Results:

      • Control and Baseline: No change in answers, i.e., bit wise identical RESTART/iced.2011-10-02-00000.nc.
      • Experiment and Control: Answers changed in regions as expected. See below for details.
  • How much do the PR code changes differ from the unmodified code?

    • bit for bit; identical results (when inputs are kept same as now with their default values).
    • different at roundoff level
    • more substantial
  • Does this PR create or have dependencies on Icepack or any other models?

    • Yes; Icepack.
    • 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. (No update to Icepack is needed.)
  • 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
  • Please document the changes in detail, including why the changes are made. This will become part of the PR commit log.

Further details on results:

Exp insert_sic Remarks
BASL N/A Feature not available/implemented; see Fig.1
CTRL .false. (default value) No change in answers from BASL
EXP .true. See test SIC data in Fig.2 Changes in sea ice concentration that correspond to those in Fig.2, see Fig.3.
  • Fig.1 Sea Ice Concentration (SIC): Initial (left) and Final - Initial (right) after 1-day integration.
  • Fig.2 Test SIC data. See both Arctic and Antarctic, where SIC values have been set to 1 and 0.5 respectively.
  • Fig.3 Difference in final restart SIC: EXP - CTRL; note the correspondence to regions that were modified in the test SIC data (Fig.2).

Remarks:

@sanAkel sanAkel changed the title Alan ssmi Insert a sea ice concentration field (possibly generated from data assimilation) Sep 21, 2025
@sanAkel sanAkel marked this pull request as ready for review September 21, 2025 07:06
@sanAkel sanAkel marked this pull request as draft September 21, 2025 07:30
@NickSzapiro-NOAA
Copy link
Copy Markdown
Collaborator

Hi @sanAkel . Can you add some text/description in comments or to PR on what the code should do? Then, do you have a test exercising the ported feature?

On first pass, one place I'm confused about is the warming/cooling SST logic. Doesn't SST come from coupled ocean model? I don't know that "adjusting" sst in ice_restart is effective for coupled ice-ocean applications

Also, what is the dependency on icepack you check-boxed above?

@sanAkel
Copy link
Copy Markdown
Author

sanAkel commented Sep 21, 2025

@NickSzapiro-NOAA thanks for these comments and feedback.

Does the following address your comments?

Hi @sanAkel . Can you add some text/description in comments or to PR on what the code should do? Then, do you have a test exercising the ported feature?

✅ Please see ⬆️ .

On first pass, one place I'm confused about is the warming/cooling SST logic. Doesn't SST come from coupled ocean model? I don't know that "adjusting" sst in ice_restart is effective for coupled ice-ocean applications

  1. CICE knows what the SST is. Yes, it comes from the coupled model; more precisely from the ocean model within the coupled model.
  2. I don't know that "adjusting" sst in ice_restart is effective for coupled ice-ocean applications
  • Section 2.1 of Posey et al., 2015 first described this methodology; their implementation was within CICE4.
  • Their Sec 2.4 describes the algorithm.
  • Sec 3 shows the effectiveness of this algorithm for a data assimilation (DA) system that is comprised of sea ice and ocean-only- exactly as RTOFS (in their case, it was the Navy's GOFS 3.1).
  • They provide a summary of all their improvements in Sec 4.

@awallcraft would you be able to add any details I missed⬆️?

Also, what is the dependency on icepack you check-boxed above?

Ice thickness distribution/redistrubtion because of the change in sea ice concentration that is made to "insert" it from a data assimilated concentration. The "main" dependency is via call to: icepack_itd.

@sanAkel
Copy link
Copy Markdown
Author

sanAkel commented Sep 22, 2025

FYI: @DmitryDukhovskoy

@awallcraft
Copy link
Copy Markdown

In GOFS 3.1, CICE4 has a prognostic SST field and this is relaxed to HYCOM's SST and HYCOM has its own prognostic sea ice concentration field which is relaxed to CICE4 sic. If the ocean model's SST is being used directly by CICE 6, then adjusting it in CICE may not work depending on the order of coupling vs the direct insertion step.

@sanAkel
Copy link
Copy Markdown
Author

sanAkel commented Oct 10, 2025

Fig.1: Sea Ice Concentration (SIC): Initial (left) and Final - Initial (right) after 1-day integration.

image

Fig. 2: Test SIC data. See both Arctic and Antarctic, where SIC values have been set to 1 and 0.5 respectively.

image

Fig. 3: Difference in final restart SIC: EXP - CTRL; note the correspondence to regions that are shown in the ⬆️ Fig.2.

image

@sanAkel sanAkel marked this pull request as ready for review October 10, 2025 04:45
@NickSzapiro-NOAA
Copy link
Copy Markdown
Collaborator

Thanks for showing the test @sanAkel . Please always feel welcome to make PR at CICE-Consortium.

I do think some testing that the sst(i,j,iblk) = sst(i,j,iblk) + p2 strategy works as needed, as I don't know how MOM6 or CMEPS could get involved here.

More fundamentally, when would we use this since we can just make new component restarts directly offline instead of reading in old ice restart and then making particular changes?

@sanAkel
Copy link
Copy Markdown
Author

sanAkel commented Oct 10, 2025

Thanks for showing the test @sanAkel . Please always feel welcome to make PR at CICE-Consortium.

Thank you @NickSzapiro-NOAA, will do today/soon!

I do think some testing that the sst(i,j,iblk) = sst(i,j,iblk) + p2 strategy works as needed, as I don't know how MOM6 or CMEPS could get involved here.

Agreed! I plan to investigate the coupling and with MOM6 next week...

Now ✅, @NickSzapiro-NOAA please see this figure.

More fundamentally, when would we use this since we can just make new component restarts directly offline instead of reading in old ice restart and then making particular changes?

We would use this in applications like RTOFS that do NOT "make new component restarts". RTOFS with its DA makes use of this flag/ new feature proposed here.

Please confirm if I addressed your questions/concerns.

@sanAkel
Copy link
Copy Markdown
Author

sanAkel commented Oct 10, 2025

Thanks for showing the test @sanAkel . Please always feel welcome to make PR at CICE-Consortium.

Thank you @NickSzapiro-NOAA, will do today/soon!

See this PR.

@sanAkel sanAkel closed this Oct 10, 2025
@DmitryDukhovskoy
Copy link
Copy Markdown

I would still be interested to implement SIS2 ice concentration / thickness relaxation in CICE6 that allows for IAU instead of direct insertion.

@sanAkel
Copy link
Copy Markdown
Author

sanAkel commented Oct 10, 2025

I would still be interested to implement SIS2 ice concentration / thickness relaxation in CICE6 that allows for IAU instead of direct insertion.

Of course @DmitryDukhovskoy we can always set the insert_sic = .false. and use IAU when ready.

apcraig added a commit to CICE-Consortium/CICE that referenced this pull request Nov 5, 2025
…ilation or retrievals/products) (#1060)

Add an option to be able to update ice concentration (from data assimilation or retrievals/products) at restart.

- This feature is being ported from CICE4, that is used in RTOFS:
    - We use the sea ice concentration from data assimilation (DA), performed using RTOFS-DA.
    - In this (CICE6) version usage is turned ON (default: OFF) via restart_mod="adjust_aice".
    - See similar/same implementation in the old (CICE4) version of ice_restart.F90, search for insert_ssmi.
    - @awallcraft ported the code he wrote (and is used in CICE4) to CICE6.
    - This PR was originally sent to the NOAA-EMC/CICE fork and following @NickSzapiro-NOAA's recommendation, being redirected here; that PR is now closed.
    - All the comments and conversations (@NickSzapiro-NOAA and @awallcraft) can be read via NOAA-EMC#104, however, for the sake of self-completeness

A brief text/description follows:
One of the main goals of a data assimilation (DA)/prediction system that strives to provide close to observed sea ice concentrations and ice edge is to be able to reconcile the differences in modeled and observed sea ice concentrations derived from space borne instruments. Posey et al., 2025 implemented such a method with CICE4, it is hereby ported to CICE6. By default this feature is turned OFF. To turn it ON, set restart_mod='adjust_aice' in ice_in (input) namelist file and provide sic.nc to be able to nudge the modeled ice concentration to that from data assimilated (or observed) concentration.  By default, restart_mod='none'.  There is also a test mode, restart_mod='adjust_aice_test' which modifies aice read on restart to the nearest 5/100ths just to test the algorithm.


- With this proposed addition, an ability to insert data assimilated sea ice concentration is provided. Implementation is similar/same as in CICE4; see https://github.com/NOAA-EMC/RTOFS_GLO/blob/develop/sorc/rtofs_hycom.fd/src_2.2.99DHMTi-dist2B_relo_cice_v4.0e/source/ice_restart.F90 ; search for insert_ssmi. @awallcraft ported the code he wrote (and is used in CICE4) to CICE6.
- There is an acknowledgement that the coupler and/or MOM6 will need some modifications, but that is beyond the scope of this (CICE) repository. Such work will be taken up in future.

Co-authored-by: Nicholas Szapiro <149816583+NickSzapiro-NOAA@users.noreply.github.com>
Co-authored-by: Nick Szapiro <Nick.Szapiro@noaa.gov>
Co-authored-by: Till Rasmussen <tar@dmi.dk>
Co-authored-by: apcraig <anthony.p.craig@gmail.com>
eclare108213 pushed a commit to eclare108213/CICE that referenced this pull request Nov 21, 2025
…ilation or retrievals/products) (CICE-Consortium#1060)

Add an option to be able to update ice concentration (from data assimilation or retrievals/products) at restart.

- This feature is being ported from CICE4, that is used in RTOFS:
    - We use the sea ice concentration from data assimilation (DA), performed using RTOFS-DA.
    - In this (CICE6) version usage is turned ON (default: OFF) via restart_mod="adjust_aice".
    - See similar/same implementation in the old (CICE4) version of ice_restart.F90, search for insert_ssmi.
    - @awallcraft ported the code he wrote (and is used in CICE4) to CICE6.
    - This PR was originally sent to the NOAA-EMC/CICE fork and following @NickSzapiro-NOAA's recommendation, being redirected here; that PR is now closed.
    - All the comments and conversations (@NickSzapiro-NOAA and @awallcraft) can be read via NOAA-EMC#104, however, for the sake of self-completeness

A brief text/description follows:
One of the main goals of a data assimilation (DA)/prediction system that strives to provide close to observed sea ice concentrations and ice edge is to be able to reconcile the differences in modeled and observed sea ice concentrations derived from space borne instruments. Posey et al., 2025 implemented such a method with CICE4, it is hereby ported to CICE6. By default this feature is turned OFF. To turn it ON, set restart_mod='adjust_aice' in ice_in (input) namelist file and provide sic.nc to be able to nudge the modeled ice concentration to that from data assimilated (or observed) concentration.  By default, restart_mod='none'.  There is also a test mode, restart_mod='adjust_aice_test' which modifies aice read on restart to the nearest 5/100ths just to test the algorithm.


- With this proposed addition, an ability to insert data assimilated sea ice concentration is provided. Implementation is similar/same as in CICE4; see https://github.com/NOAA-EMC/RTOFS_GLO/blob/develop/sorc/rtofs_hycom.fd/src_2.2.99DHMTi-dist2B_relo_cice_v4.0e/source/ice_restart.F90 ; search for insert_ssmi. @awallcraft ported the code he wrote (and is used in CICE4) to CICE6.
- There is an acknowledgement that the coupler and/or MOM6 will need some modifications, but that is beyond the scope of this (CICE) repository. Such work will be taken up in future.

Co-authored-by: Nicholas Szapiro <149816583+NickSzapiro-NOAA@users.noreply.github.com>
Co-authored-by: Nick Szapiro <Nick.Szapiro@noaa.gov>
Co-authored-by: Till Rasmussen <tar@dmi.dk>
Co-authored-by: apcraig <anthony.p.craig@gmail.com>
eclare108213 pushed a commit to eclare108213/CICE that referenced this pull request Nov 22, 2025
…ilation or retrievals/products) (CICE-Consortium#1060)

Add an option to be able to update ice concentration (from data assimilation or retrievals/products) at restart.

- This feature is being ported from CICE4, that is used in RTOFS:
    - We use the sea ice concentration from data assimilation (DA), performed using RTOFS-DA.
    - In this (CICE6) version usage is turned ON (default: OFF) via restart_mod="adjust_aice".
    - See similar/same implementation in the old (CICE4) version of ice_restart.F90, search for insert_ssmi.
    - @awallcraft ported the code he wrote (and is used in CICE4) to CICE6.
    - This PR was originally sent to the NOAA-EMC/CICE fork and following @NickSzapiro-NOAA's recommendation, being redirected here; that PR is now closed.
    - All the comments and conversations (@NickSzapiro-NOAA and @awallcraft) can be read via NOAA-EMC#104, however, for the sake of self-completeness

A brief text/description follows:
One of the main goals of a data assimilation (DA)/prediction system that strives to provide close to observed sea ice concentrations and ice edge is to be able to reconcile the differences in modeled and observed sea ice concentrations derived from space borne instruments. Posey et al., 2025 implemented such a method with CICE4, it is hereby ported to CICE6. By default this feature is turned OFF. To turn it ON, set restart_mod='adjust_aice' in ice_in (input) namelist file and provide sic.nc to be able to nudge the modeled ice concentration to that from data assimilated (or observed) concentration.  By default, restart_mod='none'.  There is also a test mode, restart_mod='adjust_aice_test' which modifies aice read on restart to the nearest 5/100ths just to test the algorithm.


- With this proposed addition, an ability to insert data assimilated sea ice concentration is provided. Implementation is similar/same as in CICE4; see https://github.com/NOAA-EMC/RTOFS_GLO/blob/develop/sorc/rtofs_hycom.fd/src_2.2.99DHMTi-dist2B_relo_cice_v4.0e/source/ice_restart.F90 ; search for insert_ssmi. @awallcraft ported the code he wrote (and is used in CICE4) to CICE6.
- There is an acknowledgement that the coupler and/or MOM6 will need some modifications, but that is beyond the scope of this (CICE) repository. Such work will be taken up in future.

Co-authored-by: Nicholas Szapiro <149816583+NickSzapiro-NOAA@users.noreply.github.com>
Co-authored-by: Nick Szapiro <Nick.Szapiro@noaa.gov>
Co-authored-by: Till Rasmussen <tar@dmi.dk>
Co-authored-by: apcraig <anthony.p.craig@gmail.com>
eclare108213 pushed a commit to eclare108213/CICE that referenced this pull request Nov 22, 2025
…ilation or retrievals/products) (CICE-Consortium#1060)

Add an option to be able to update ice concentration (from data assimilation or retrievals/products) at restart.

- This feature is being ported from CICE4, that is used in RTOFS:
    - We use the sea ice concentration from data assimilation (DA), performed using RTOFS-DA.
    - In this (CICE6) version usage is turned ON (default: OFF) via restart_mod="adjust_aice".
    - See similar/same implementation in the old (CICE4) version of ice_restart.F90, search for insert_ssmi.
    - @awallcraft ported the code he wrote (and is used in CICE4) to CICE6.
    - This PR was originally sent to the NOAA-EMC/CICE fork and following @NickSzapiro-NOAA's recommendation, being redirected here; that PR is now closed.
    - All the comments and conversations (@NickSzapiro-NOAA and @awallcraft) can be read via NOAA-EMC#104, however, for the sake of self-completeness

A brief text/description follows:
One of the main goals of a data assimilation (DA)/prediction system that strives to provide close to observed sea ice concentrations and ice edge is to be able to reconcile the differences in modeled and observed sea ice concentrations derived from space borne instruments. Posey et al., 2025 implemented such a method with CICE4, it is hereby ported to CICE6. By default this feature is turned OFF. To turn it ON, set restart_mod='adjust_aice' in ice_in (input) namelist file and provide sic.nc to be able to nudge the modeled ice concentration to that from data assimilated (or observed) concentration.  By default, restart_mod='none'.  There is also a test mode, restart_mod='adjust_aice_test' which modifies aice read on restart to the nearest 5/100ths just to test the algorithm.


- With this proposed addition, an ability to insert data assimilated sea ice concentration is provided. Implementation is similar/same as in CICE4; see https://github.com/NOAA-EMC/RTOFS_GLO/blob/develop/sorc/rtofs_hycom.fd/src_2.2.99DHMTi-dist2B_relo_cice_v4.0e/source/ice_restart.F90 ; search for insert_ssmi. @awallcraft ported the code he wrote (and is used in CICE4) to CICE6.
- There is an acknowledgement that the coupler and/or MOM6 will need some modifications, but that is beyond the scope of this (CICE) repository. Such work will be taken up in future.

Co-authored-by: Nicholas Szapiro <149816583+NickSzapiro-NOAA@users.noreply.github.com>
Co-authored-by: Nick Szapiro <Nick.Szapiro@noaa.gov>
Co-authored-by: Till Rasmussen <tar@dmi.dk>
Co-authored-by: apcraig <anthony.p.craig@gmail.com>
andrewpauling pushed a commit to andrewpauling/CICE that referenced this pull request Nov 30, 2025
…ilation or retrievals/products) (CICE-Consortium#1060)

Add an option to be able to update ice concentration (from data assimilation or retrievals/products) at restart.

- This feature is being ported from CICE4, that is used in RTOFS:
    - We use the sea ice concentration from data assimilation (DA), performed using RTOFS-DA.
    - In this (CICE6) version usage is turned ON (default: OFF) via restart_mod="adjust_aice".
    - See similar/same implementation in the old (CICE4) version of ice_restart.F90, search for insert_ssmi.
    - @awallcraft ported the code he wrote (and is used in CICE4) to CICE6.
    - This PR was originally sent to the NOAA-EMC/CICE fork and following @NickSzapiro-NOAA's recommendation, being redirected here; that PR is now closed.
    - All the comments and conversations (@NickSzapiro-NOAA and @awallcraft) can be read via NOAA-EMC#104, however, for the sake of self-completeness

A brief text/description follows:
One of the main goals of a data assimilation (DA)/prediction system that strives to provide close to observed sea ice concentrations and ice edge is to be able to reconcile the differences in modeled and observed sea ice concentrations derived from space borne instruments. Posey et al., 2025 implemented such a method with CICE4, it is hereby ported to CICE6. By default this feature is turned OFF. To turn it ON, set restart_mod='adjust_aice' in ice_in (input) namelist file and provide sic.nc to be able to nudge the modeled ice concentration to that from data assimilated (or observed) concentration.  By default, restart_mod='none'.  There is also a test mode, restart_mod='adjust_aice_test' which modifies aice read on restart to the nearest 5/100ths just to test the algorithm.


- With this proposed addition, an ability to insert data assimilated sea ice concentration is provided. Implementation is similar/same as in CICE4; see https://github.com/NOAA-EMC/RTOFS_GLO/blob/develop/sorc/rtofs_hycom.fd/src_2.2.99DHMTi-dist2B_relo_cice_v4.0e/source/ice_restart.F90 ; search for insert_ssmi. @awallcraft ported the code he wrote (and is used in CICE4) to CICE6.
- There is an acknowledgement that the coupler and/or MOM6 will need some modifications, but that is beyond the scope of this (CICE) repository. Such work will be taken up in future.

Co-authored-by: Nicholas Szapiro <149816583+NickSzapiro-NOAA@users.noreply.github.com>
Co-authored-by: Nick Szapiro <Nick.Szapiro@noaa.gov>
Co-authored-by: Till Rasmussen <tar@dmi.dk>
Co-authored-by: apcraig <anthony.p.craig@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants