Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Icepack #1

Merged
merged 4 commits into from
Mar 17, 2021
Merged

Icepack #1

merged 4 commits into from
Mar 17, 2021

Conversation

MJHarrison-GFDL
Copy link

Modifications to enable Icepack APIs for ridging.

  - These modifications enable ridging code for SIS2 C-grid
    configurations (not yet implemented for B-grid) using APIs
    provided by the Icepack module from the CICE consortium
    (https://github.com/CICE-Consortium/Icepack)
  - These APIs are reproduced in the config_src/external/Icepack
    directory in order to remove SIS2 dependency on Icepack by default.
    In order to activate Icepack, remove the config_src/external/Icepack
    diretory from your compile list, compile a shared Icepack library
    and link to SIS2.
  - Sea-ice ridging rate diagnostics (rdg_rate) report the fractional
    rate of sea-ice coverage decrease (s-1) due to the ridging scheme.
  - WARNING:Sea-ice enthalpy diagnostics indicate a decrease in numerical closure
    from roundoff (10-17) without ridging enabled to values greater
    than roundoff (10-7) in initial testing. Mass and salinity,
    however, are consistent to roundoff. The issue should be addressed
    before using this option to generate scientific results.
  - The default Icepack ridging options are enabled.  Additional options
    can be enabled easily using the SIS_parameter file and calls to
    icepack_init_parameters

Hallberg-NOAA and others added 3 commits March 4, 2021 11:57
  Corrected two runtime issues with missing openMP directives by combining
expressions to eliminate the recently added variables that were missing from
openMP directive lists.  All answers are bitwise identical in all cases that
compiled.
  - These modifications enable ridging code for SIS2 C-grid
    configurations (not yet implemented for B-grid) using APIs
    provided by the Icepack module from the CICE consortium
    (https://github.com/CICE-Consortium/Icepack)
  - These APIs are reproduced in the config_src/external/Icepack
    directory in order to remove SIS2 dependency on Icepack by default.
    In order to activate Icepack, remove the config_src/external/Icepack
    diretory from your compile list, compile a shared Icepack library
    and link to SIS2.
  - Sea-ice ridging rate diagnostics (rdg_rate) report the fractional
    rate of sea-ice coverage decrease (s-1) due to the ridging scheme.
  - WARNING:Sea-ice enthalpy diagnostics indicate a decrease in numerical closure
    from roundoff (10-17) without ridging enabled to values greater
    than roundoff (10-7) in initial testing. Mass and salinity,
    however, are consistent to roundoff. The issue should be addressed
    before using this option to generate scientific results.
  - The default Icepack ridging options are enabled.  Additional options
    can be enabled easily using the SIS_parameter file and calls to
    icepack_init_parameters
@kshedstrom
Copy link

Matt, are you getting ice concentrations above 1.0? I am. It's going above 2.5 for me in the Bering domain.

@kshedstrom
Copy link

Screen Shot 2021-03-13 at 7 53 38 PM

Here's the value of part_size for some point that both SIS2 and Icepack are complaining about. Negative ocean fraction!

@MJHarrison-GFDL
Copy link
Author

Matt, are you getting ice concentrations above 1.0? I am. It's going above 2.5 for me in the Bering domain.

Kate, I only have enough OBC/river data to do a single day test. No errors reported within day 1. At what point in the run does this appear for you?

seaice.stats (LEMIEUX_LANDFAST = True)

 0,  734501.000,      0, Area 1.1214373381347363E+12 0.0000000000000000E+00, Ext 1.2228E+12 0.0000E+00, CFL 0.240, M 7.01969E+14 0.00000E+00, Enth -2.52040E+20  0.00000E+00, S   2.9410  0.0000, Me  0.00E+00, Te  0.00E+00, Se  0.00E+00
 6,  734501.250,      0, Area 1.1132647984668135E+12 0.0000000000000000E+00, Ext 1.2280E+12 0.0000E+00, CFL 0.197, M 7.06922E+14 0.00000E+00, Enth -2.53833E+20  0.00000E+00, S   2.9416  0.0000, Me -7.75E-18, Te -1.98E-07, Se -9.55E-18
12,  734501.500,      0, Area 1.1114046213255344E+12 0.0000000000000000E+00, Ext 1.2264E+12 0.0000E+00, CFL 0.124, M 7.12079E+14 0.00000E+00, Enth -2.55647E+20  0.00000E+00, S   2.9423  0.0000, Me  3.48E-18, Te -1.86E-07, Se -5.56E-18
18,  734501.750,      0, Area 1.1143215648800378E+12 0.0000000000000000E+00, Ext 1.2254E+12 0.0000E+00, CFL 0.178, M 7.17263E+14 0.00000E+00, Enth -2.57444E+20  0.00000E+00, S   2.9430  0.0000, Me  4.12E-18, Te -1.64E-07, Se  4.96E-18
24,  734502.000,      0, Area 1.1112426645431003E+12 0.0000000000000000E+00, Ext 1.2233E+12 0.0000E+00, CFL 0.210, M 7.22373E+14 0.00000E+00, Enth -2.59196E+20  0.00000E+00, S   2.9436  0.0000, Me  1.87E-18, Te -1.91E-07, Se  4.76E-18

@kshedstrom
Copy link

I am starting from a restart in late December, once some ice has formed. I'm getting the errors pretty much right away. Raf and Bob have an OBC file that goes through all of January. Can you ask them for it?

@MJHarrison-GFDL
Copy link
Author

MJHarrison-GFDL commented Mar 15, 2021

I am also starting with initial conditions from 12/31/2011. Adjusted the date to 1/1/2012 and now able to run a 10 day test.

I get 3 warnings from icepack starting around day 7

(ridge_shift) Ridging error: aice0 < 0
(ridge_shift)aice0: -2.7386816669912480E-005
(icepack_warnings_aborted) ... (ridge_ice)
(ridge_shift) Ridging error: aice0 < 0
(ridge_shift)aice0: -2.2426003967072654E-005
(icepack_warnings_aborted) ... (ridge_ice)
(ridge_shift) Ridging error: aice0 < 0
(ridge_shift)aice0: -2.0057528930384004E-005
(icepack_warnings_aborted) ... (ridge_ice)

@kshedstrom
Copy link

This is the state of that same point before the first call to ice_ridging:
Screen Shot 2021-03-15 at 9 39 31 AM
chinook03.rcs.alaska.edu 202% git branch

  • (HEAD detached at matt/Icepack)

  - This appears to be needed to avoid propagation of
    negative ice free categories. Residual ice excess values
    of order 10-5 are being renormalized.
@MJHarrison-GFDL
Copy link
Author

MJHarrison-GFDL commented Mar 15, 2021 via email

@kshedstrom
Copy link

I have not tried other advection schemes - good idea.

The ice fraction larger than one is not in the restart file. It is happening in ice_cat_transport, where m_ice started as 72.3 and goes to 73.6 while mh_ice started at 73.44 and goes to 72.94. The part_size array then gets filled in in the call to cell_ave_state_to_ice_state. In single-category ice models, you advect everything, then bring ice concentration back to 1.0 or less by brute force. @Hallberg-NOAA would know how SIS2 does it.

@kshedstrom kshedstrom merged commit b662f69 into ESMG:dev/esmg Mar 17, 2021
@kshedstrom
Copy link

OK, so the ice concentration greater than one is a cue to the ridging scheme to ridge. I'm still getting some small amount of ice concentrations over 1.0, but just barely so.

@MJHarrison-GFDL
Copy link
Author

Yes. I was seeing values O(10^-5) after calling ridging. I re-normalized before applying back to the ice state and that fixes the issue in my tests with no loss in precision.

https://github.com/MJHarrison-GFDL/SIS2/blob/Icepack/src/ice_ridge.F90#L447

@Hallberg-NOAA
Copy link

Hallberg-NOAA commented Mar 17, 2021 via email

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.

3 participants