Skip to content

Add an option to be able to update ice concentration (from data assimilation or retrievals/products)#1060

Merged
apcraig merged 22 commits into
CICE-Consortium:mainfrom
sanAkel:alan_ssmi
Nov 5, 2025
Merged

Add an option to be able to update ice concentration (from data assimilation or retrievals/products)#1060
apcraig merged 22 commits into
CICE-Consortium:mainfrom
sanAkel:alan_ssmi

Conversation

@sanAkel
Copy link
Copy Markdown
Contributor

@sanAkel sanAkel commented Oct 10, 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 (DA), performed using RTOFS-DA.
    • 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.
    • 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 , 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 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.
    I'm unable to do that. Alerting @apcraig for his help.

  • 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 Add an option to be able to _insert_ ice concentration (from data assimilation or retrievals/products) Add an option to be able to update ice concentration (from data assimilation or retrievals/products) Oct 10, 2025
@apcraig apcraig self-assigned this Oct 10, 2025
Comment thread cicecore/cicedyn/infrastructure/ice_restart_driver.F90 Outdated
Comment thread cicecore/cicedyn/infrastructure/ice_restart_driver.F90 Outdated
Comment thread cicecore/cicedyn/infrastructure/ice_restart_driver.F90
Comment thread cicecore/cicedyn/infrastructure/ice_restart_driver.F90
@lbertino
Copy link
Copy Markdown

Hi @sanAkel

  1. I am generally not recommending an IAU unless you really need to avoid instabilities. The IAU is inherently diffusive so it defeats the purpose of the - otherwise excellent - model.
  2. We have a project with MET Norway (Marina Duran-Moro) to assimilate passive microwave Tb for sea ice, so there is a Radiative Transfer Model in Python you can use convert CICE data to Tb here: https://github.com/marinadmo/rtm_da/blob/main/rtm_enkf_notebook.ipynb Our plan is to use data assimilation to invert Tb into CICE model variables.
    Hope that helps!

@sanAkel
Copy link
Copy Markdown
Contributor Author

sanAkel commented Oct 17, 2025

Hi @sanAkel

1. I am generally not recommending an IAU unless you really need to avoid instabilities. The IAU is inherently diffusive so it defeats the purpose of the - otherwise excellent - model.

@lbertino Glad to hear from you and thanks for chiming in.
AFAIK, we do not have an IAU for CICE anyway- good to you know your opinion. We can have further discussion based on the planned course of action suggested by others- @TillRasmussen, @eclare108213, @apcraig, @DmitryDukhovskoy, ..

2. We have a project with MET Norway (Marina Duran-Moro) to assimilate passive microwave Tb for sea ice, so there is a Radiative Transfer Model in Python you can use convert CICE data to Tb here: https://github.com/marinadmo/rtm_da/blob/main/rtm_enkf_notebook.ipynb Our plan is to use data assimilation to invert Tb into CICE model variables.
   Hope that helps!

This is great progress at your end! 🏆 👏
I'll take a look at this and as time permits revive my (old/archived) repository. Thanks for pointing me to it.

@sanAkel
Copy link
Copy Markdown
Contributor Author

sanAkel commented Oct 20, 2025

Checking if anything is pending on this PR: @apcraig ?

@apcraig
Copy link
Copy Markdown
Contributor

apcraig commented Oct 22, 2025

The implementation looks pretty clean to me at this point. I appreciate the updates that were done and resuse of existing infrastructure. Thanks for all the earlier comments from others and all the work. The new subroutine, direct_insert_sic, does have a lot of hardwired logic. I'm not the right person to suggest what "science" parameters should become namelist. If there is consensus about what to do, that's great, maybe do it now. It could also come in as a separate PR.

My only comment might be that insert_sic as a logical namelist might be limiting. Do we want to have a string instead of a logical, basically supporting multiple options via a single namelist. So false would be "none" or "off" and true would be "adjust_aice" or similar. "sic" isn't really a CICE term, but I'm OK using it if others like it, but maybe aice is the better term for CICE? And maybe the namelist could be "modify_restart" instead of "insert_sic" as well? So modify_restart = "adjust_aice" instead of insert_sic = .true. providing extensibility in the future? With the idea that we might have "adjust_aice_hi" or "adjust_aicev2" or other options later. It's better to implement flexible namelist now to avoid changing namelist later, especially if that namelist needs to be removed.

The other thing is that maybe we want a namelist to specify the input file instead of hardwiring it in the code to 'sic.nc'. Maybe that namelist could be called "modify_restart_filename"? This is less critical because we could also add it later without any backwards compatibility issues.

@sanAkel
Copy link
Copy Markdown
Contributor Author

sanAkel commented Oct 23, 2025

Thanks @apcraig for reviewing and suggestions.

The implementation looks pretty clean to me at this point. I appreciate the updates that were done and resuse of existing infrastructure. Thanks for all the earlier comments from others and all the work. The new subroutine, direct_insert_sic, does have a lot of hardwired logic. I'm not the right person to suggest what "science" parameters should become namelist. If there is consensus about what to do, that's great, maybe do it now. It could also come in as a separate PR.

👍

My only comment might be that insert_sic as a logical namelist might be limiting. Do we want to have a string instead of a logical, basically supporting multiple options via a single namelist. So false would be "none" or "off" and true would be "adjust_aice" or similar. "sic" isn't really a CICE term, but I'm OK using it if others like it, but maybe aice is the better term for CICE? And maybe the namelist could be "modify_restart" instead of "insert_sic" as well? So modify_restart = "adjust_aice" instead of insert_sic = .true. providing extensibility in the future? With the idea that we might have "adjust_aice_hi" or "adjust_aicev2" or other options later. It's better to implement flexible namelist now to avoid changing namelist later, especially if that namelist needs to be removed.

If other reviewers ( @TillRasmussen, @eclare108213 ?) also suggest same/similar, to move this PR along,

(1) I can change the logical (still boolean flag, unless someone asks for otherwise): insert_sic to adjust_aice.

The other thing is that maybe we want a namelist to specify the input file instead of hardwiring it in the code to 'sic.nc'. Maybe that namelist could be called "modify_restart_filename"? This is less critical because we could also add it later without any backwards compatibility issues.

(2) Instead of hard coded read of sic.nc, I can read a file name character :: data_aice_file ⬅️ user can then set whatever file they want.

Please let me know if should proceed with (1) and (2)?

@apcraig
Copy link
Copy Markdown
Contributor

apcraig commented Oct 28, 2025

I would like the logical namelist insert_sic to be changed to a character string. How about restart_modification with two valid options, "none" and "adjust_aice". This should be in the setup.nml. I'm OK if the other namelist options are deferred.

We also need some documentation in the doc directory. At the very least, the new namelist needs to be added to the documentation. It would also be helpful to have a brief description of the implementation added somewhere.

I could help make some of these changes and PR them to the sanAkel:alan_ssmi branch if that's helpful and others don't have time.

@sanAkel
Copy link
Copy Markdown
Contributor Author

sanAkel commented Oct 29, 2025

I would like the logical namelist insert_sic to be changed to a character string. How about restart_modification with two valid options, "none" and "adjust_aice". This should be in the setup.nml. I'm OK if the other namelist options are deferred.

We also need some documentation in the doc directory. At the very least, the new namelist needs to be added to the documentation. It would also be helpful to have a brief description of the implementation added somewhere.

I could help make some of these changes and PR them to the sanAkel:alan_ssmi branch if that's helpful and others don't have time.

@apcraig Appreciate the suggestions and offering to take a stab at it. Would you please go ahead and send me a PR? Thanks so much!

- Rename insert_sic to restart_mod, char string
- Add 'none', 'adjust_aice', and 'adjust_aice_test' restart_mod options
- Update documentation, add data assimilation section
- Add adjust_aice_test testcase
@apcraig
Copy link
Copy Markdown
Contributor

apcraig commented Oct 29, 2025

OK, I just submitted a PR to the alan_ssmi branch that updates the namelist input, adds a "test" mode, and updates the documentation. I added a section on data assimilation and the Posey reference, but if anyone wants to clarify/contribute to that documentation, that would be great.

@sanAkel
Copy link
Copy Markdown
Contributor Author

sanAkel commented Oct 30, 2025

OK, I just submitted a PR to the alan_ssmi branch that updates the namelist input, adds a "test" mode, and updates the documentation. I added a section on data assimilation and the Posey reference, but if anyone wants to clarify/contribute to that documentation, that would be great.

Thank you @apcraig I'll:

  • Test your updates (including the test case option; I like it!)
  • All ok (do not expect any issues) will merge your PR and alert all here.

@sanAkel
Copy link
Copy Markdown
Contributor Author

sanAkel commented Nov 3, 2025

OK, I just submitted a PR to the alan_ssmi branch that updates the namelist input, adds a "test" mode, and updates the documentation. I added a section on data assimilation and the Posey reference, but if anyone wants to clarify/contribute to that documentation, that would be great.

Thank you @apcraig I'll:

* Test your updates (including the test case option; I like it!)

* All ok (do not expect any issues) will merge your PR and alert _all_ here.

@apcraig Requesting a trivial update of your branch

@apcraig
Copy link
Copy Markdown
Contributor

apcraig commented Nov 3, 2025

Thanks @sanAkel, will push an update today. I was thinking separately that the adjust_aice_test is rounding the aice to the nearest 1/100th. With your algorithm for adjusting aice, my guess is that a lot of the if blocks are not being used because the adjustment is too small? I'm going to test a rounding to the nearest 5/100ths. What's your general sense of 1/100th vs 5/100th vs something else you might recommend?

@sanAkel
Copy link
Copy Markdown
Contributor Author

sanAkel commented Nov 3, 2025

Thanks @sanAkel, will push an update today. I was thinking separately that the adjust_aice_test is rounding the aice to the nearest 1/100th. With your algorithm for adjusting aice, my guess is that a lot of the if blocks are not being used because the adjustment is too small? I'm going to test a rounding to the nearest 5/100ths. What's your general sense of 1/100th vs 5/100th vs something else you might recommend?

@apcraig 5 percent is fine! Suspect 10/100 will be okay too- I did not test! But I guess you will while updating your branch?

Overall, I'm working in a cycled data assimilation set up, so kind of hard to tell such subtle differences.

Update rounding to 5/100th from 1/100th.  Tested with the standalone gx3 case.
One thing that is not tested with the adjust_aice_test option is adding
sea ice where there was none originally.
@apcraig
Copy link
Copy Markdown
Contributor

apcraig commented Nov 3, 2025

OK, I pushed an update to sanAkel#3 with updated sic.nc filename and 5/100th rounding. adjust_aice_test works in standlone mode with 5/100. If you can confirm adjust_aice (using sic.nc) works, that would be great. Thanks.

@sanAkel
Copy link
Copy Markdown
Contributor Author

sanAkel commented Nov 3, 2025

OK, I pushed an update to sanAkel#3 with updated sic.nc filename and 5/100th rounding. adjust_aice_test works in standlone mode with 5/100. If you can confirm adjust_aice (using sic.nc) works, that would be great. Thanks.

Thanks @apcraig

If you can confirm adjust_aice (using sic.nc) works, that would be great.

Already tested it with / - it works!

Copy link
Copy Markdown
Contributor

@apcraig apcraig left a comment

Choose a reason for hiding this comment

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

I ran several tests and everything looks good. Thanks!

@apcraig
Copy link
Copy Markdown
Contributor

apcraig commented Nov 3, 2025

I will merge this week unless I hear some other feedback.

@sanAkel
Copy link
Copy Markdown
Contributor Author

sanAkel commented Nov 4, 2025

I will merge this week unless I hear some other feedback.

Thank you @apcraig and @TillRasmussen for your help that improved this feature.

Merging it will keep our system move forward once @NickSzapiro-NOAA syncs our fork.

@apcraig apcraig merged commit 61701f0 into CICE-Consortium:main Nov 5, 2025
2 checks passed
@sanAkel sanAkel deleted the alan_ssmi branch November 5, 2025 22:25
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>
Comment on lines +1390 to +1403
! --- remove part of this category
q = (aicen(i,j,n,iblk) - aice_i) &
/aicen(i,j,n,iblk) !<1
aice_i = c0

! reduce aicen, vicen, vsnon by q
! do not alter Tsfc since there is already
! ice here.
aicen(i,j,n,iblk) = q*aicen(i,j,n,iblk)
vicen(i,j,n,iblk) = q*vicen(i,j,n,iblk)
vsnon(i,j,n,iblk) = q*vsnon(i,j,n,iblk)
endif ! aice_i.gt.p001 and aice_i.lt.aicen
enddo ! n
endif ! aice_o.lt.p01
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.

Here aicen, vicen, vsnon are rescaled to match the target concentration

Are there (extensive?) CICE thermodynamic and tracer variables that depend on concentration/volume/... that should rescale too? @eclare108213 @apcraig @dabail10 ?

https://cice-consortium-cice.readthedocs.io/en/main/science_guide/sg_fundvars.html

https://cice-consortium-cice.readthedocs.io/en/main/developer_guide/dg_other.html#averages

I don't think they are, if I understand

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.

Especially as

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.

@NickSzapiro-NOAA

RTOFS at this point (as in v3.0- when it gets implemented) has no connection whatsoever to anything from github.com/JCSDA

Please let's leave this conversation at that.

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.

ok, moved to #1096

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.

5 participants