Problems reading ice boundary conditions

Discussion about modeling ice with ROMS

Moderators: arango, robertson

Post Reply
Message
Author
talebu
Posts: 3
Joined: Fri Aug 22, 2025 3:17 pm
Location: Norwegian meteorological institute

Problems reading ice boundary conditions

#1 Unread post by talebu »

Hi everyone,

I am currently testing the seaice module in ROMS v. 4.3. My code compiles and runs, but it seems the boundary conditions are not read from my bry-file. I have the following boundary setup in my roms.in file:

! Ice boundary conditions

LBC(isAice) == Cla Clo Clo Clo ! ice concentration
LBC(isHice) == Cla Clo Clo Clo ! ice thickness
LBC(isHsno) == Clo Clo Clo Clo ! snow thickness
LBC(isTice) == Clo Clo Clo Clo ! ice temperature
LBC(isHmel) == Clo Clo Clo Clo ! surface water
LBC(isIage) == Clo Clo Clo Clo ! Ice age
LBC(isISxx) == Clo Clo Clo Clo ! xx-stress
LBC(isISxy) == Clo Clo Clo Clo ! xy-stress
LBC(isISyy) == Clo Clo Clo Clo ! yy-stress
LBC(isUice) == Clo Clo Clo Clo ! ice U-momentum
LBC(isVice) == Clo Clo Clo Clo ! ice V-momentum

The boundary conditions are available in my bry-file as Aice_west and ice_thickness_west, but it seems the boundary values are not read from the bry-file.

Has anyone else tried to use boundary conditions for the ice-variables? Is it something I need to add in order for ROMS to actually read the boundary data?

brun1463
Posts: 1
Joined: Tue Aug 31, 2021 8:12 pm
Location: CU Boulder

Re: Problems reading ice boundary conditions

#2 Unread post by brun1463 »

Thank you for bringing this up and posting about it! I am having a similar experience...

I am in the process of adding ice to a previously implemented ROMS model for the Alaskan Beaufort Sea shelf using the ROMS-Budgell code. Since the hydrodynamics is already stable, I started by simply turning on the sea ice model and creating ice boundary and climatology files using Copernicus Arctic Ocean sea ice data. The model ran stably for 1 month and ~14 days and started crashing as soon as sea ice appeared (September 1, 2019 - October 15, 2019). I also tried a run starting with nearly full sea ice coverage (December 7, 2019) and the model crashed on the third time step with the ice velocities and ice stresses all output as nans for all three time steps.

Following advice from Hernan, Kate, and John Wilkin, I deconstructed the model to better match the Lake Ice test case so that the only inputs I am giving it are my grid and initial conditions. Now, if I initialize the model without any sea ice and use the same analytical forcings that the Lake Ice test case uses, the model runs for ~11 hours model time before crashing. I did a version with this that had all closed boundaries and then turned the hydrodynamic boundaries back to Rad and played around with different sea ice boundaries but it looks like no matter what I set the sea ice boundaries to, ROMS doesn't actually use the ice boundary file I am giving it. I tried runs with Cla, Gra, and Rad ice boundaries but regardless it ignores the ice boundary file and doesn't ask for it if I don't list it in ocean.in. I think the ice boundaries could be part of the reason the full model is crashing and is likely part of the reason the deconstructed model is crashing.

Therefore, I was wondering if anyone has had success using ROMS-Budgell with ice boundary conditions other than closed? And if so, how did you go about implementing them? It looks like all of the math is there but for some reason it is not actually using the ice input files. I have attached a few different log files and header files for reference. Any thoughts are appreciated!

Files:
- Header file matching Lake Ice test case: beaufort_2020_dvd_myroms_ice_30vert_lake_ice.h
- Header file for full/complicated run: beaufort_2020_dvd_myroms_ice_30vert_og.h
- Log file for full model starting December 7: beaufort_dvd_myroms_ice_32x8_u3c4_30vert_start_with_ice_0004.out.zip
- Log file for test case starting without sea ice with all closed matching the test case: beaufort_dvd_myroms_ice_32x8_u3c4_30vert_start_with_ice_0001.out.zip
- Log file for test case starting without sea ice with Rad hydro boundaries and non-closed ice boundaries: beaufort_dvd_myroms_ice_32x8_u3c4_30vert_start_with_ice_0005.out.zip
Attachments
beaufort_dvd_myroms_ice_32x8_u3c4_30vert_start_with_ice_0005.out.zip
(32.08 KiB) Downloaded 10 times
beaufort_dvd_myroms_ice_32x8_u3c4_30vert_start_with_ice_0004.out.zip
(24.25 KiB) Downloaded 12 times
beaufort_dvd_myroms_ice_32x8_u3c4_30vert_start_with_ice_0001.out.zip
(30.32 KiB) Downloaded 11 times
beaufort_2020_dvd_myroms_ice_30vert_og.h
(4.18 KiB) Downloaded 8 times
beaufort_2020_dvd_myroms_ice_30vert_lake_ice.h
(2.22 KiB) Downloaded 7 times

talebu
Posts: 3
Joined: Fri Aug 22, 2025 3:17 pm
Location: Norwegian meteorological institute

Re: Problems reading ice boundary conditions

#3 Unread post by talebu »

Hello

I have figured out that in the current version of ROMS the boundary conditions for ice variables are not read in the get_data.F file in ROMS/Nonlinear/. I have implemented this and also fixed some other small bugs, and I will upload the code to https://github.com/taleMET/roms-seaice when I am done testing it. It should be available in a few days. I will let you know when it is ready.

User avatar
dylanrs617
Posts: 9
Joined: Tue Oct 27, 2020 3:16 pm
Location: Los Alamos National Laboratory
Contact:

Re: Problems reading ice boundary conditions

#4 Unread post by dylanrs617 »

Hi Tale and others,

I'm working with Brianna on the Beaufort setup. I figured out last night that the code to process BRY files was missing in get_data.F. Varinfo.yaml needs to be updated as well. My impression is that ice nudging and the ability to read in ice CLM files is also broken?

Compiling with

Code: Select all

# define MICLM_NUDGING 
# define AICLM_NUDGING 
gives the following error because the infrastructure has not been built in Modules/mod_clima.F

Code: Select all

ice_elastic.f90:87:47:

   87 |      &                       CLIMA(ng) % uiclm,                         &
      |                                               1
Error: ‘uiclm’ at (1) is not a member of the ‘t_clima’ structure; did you mean ‘uclm’?
make: *** [ROMS/Nonlinear/SeaIce/Module.mk:14: /pscratch/sd/d/dylan617/roms/beaufort_runs/Build_romsM/ice_elastic.o] Error 1
make: *** Waiting for unfinished jobs....
Fixing at compile time isn't too hard, but ROMS still can't read the CLM files and nudging coefficients for the same reason as the BRY files. Thankfully, nudging is applied in various ice files (e.g., Nonlinear/SeaIce/ice_elastic.F) once the values are read in. Is this something you've come across or fixed too? If not, maybe you'd be willing to share your BRY fixes early so I can get started on CLM + nudging support? It's no problem if your fixes aren't complete, anything to help speed up the process. You can reach me at dschlichting@lanl.gov if you prefer not to push incomplete code to github.

Thanks,
Dylan

User avatar
arango
Site Admin
Posts: 1394
Joined: Wed Feb 26, 2003 4:41 pm
Location: DMCS, Rutgers University
Contact:

Re: Problems reading ice boundary conditions

#5 Unread post by arango »

I suspected that was the case because I didn't recall coding and testing that part in refactoring the sea ice module. I didn't have a realistic application with open boundary conditions. Many years ago, Kate Hedstrom gave her Arctic configuration application, but I lost it when my data disk broke, and we could not restore its content. I have been swamped lately and haven't had the chance to check it out, but it is my work priority list. Nowadays, I am separating the I/O of the additional models in ROMS to facilitate expansion and functionality. For example, any I/O will be coded in a separate module, see ice_output.F.

The sea ice work is not funded, so I do whatever I can in my spare time or when needed in our group projects.

User avatar
arango
Site Admin
Posts: 1394
Joined: Wed Feb 26, 2003 4:41 pm
Location: DMCS, Rutgers University
Contact:

Re: Problems reading ice boundary conditions

#6 Unread post by arango »

It should be uiclm and viclm to indicate ice velocity components.

User avatar
dylanrs617
Posts: 9
Joined: Tue Oct 27, 2020 3:16 pm
Location: Los Alamos National Laboratory
Contact:

Re: Problems reading ice boundary conditions

#7 Unread post by dylanrs617 »

Agreed, I think something like this has to be added to mod_clima.F (likely just the start to actually get CLM support to work):

Code: Select all

 # ifdef ICE_MODEL
 #  if defined AICLM_NUDGING || defined MICLM_NUDGING
           real(r8), pointer :: aiclm(:,:)
           real(r8), pointer :: hiclm(:,:)
           real(r8), pointer :: uiclm(:,:)
           real(r8), pointer :: viclm(:,:)
           real(r8), pointer :: MInudgcof(:,:)
           real(r8), pointer :: AInudgcof(:,:)
 #  endif
# endif
This is a quick hack (could be cleaned up) to fix the compile error, but I will hold off going further until seeing Tale's BRY fixes.

talebu
Posts: 3
Joined: Fri Aug 22, 2025 3:17 pm
Location: Norwegian meteorological institute

Re: Problems reading ice boundary conditions

#8 Unread post by talebu »

Hello everyone

I have uploaded my code here: https://github.com/taleMET/roms-seaice/ ... undary-fix

Please note that the code is not fully tested yet, but I can confirm that the boundary data are read from file in my setup using this fix. NB: In my setup I use ROMS v 4.2, not the develop branch.

My updates include:
Adding ice boundary variables to varinfo.yaml
Adding functionality to read and set boundary data for ice variables
Changing the location of ice boundary data from the ice module to the boundary module, to make sure the boundary data are read correctly when running in parallel
Fixing an index problem for the ibICE variable
Change the number of ice state variables from 11 to 15 in order to include enthalpy variables

User avatar
arango
Site Admin
Posts: 1394
Joined: Wed Feb 26, 2003 4:41 pm
Location: DMCS, Rutgers University
Contact:

Re: Problems reading ice boundary conditions

#9 Unread post by arango »

Thank you, Tale. 8) I will take a look when I get a chance.

Post Reply