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?
Problems reading ice boundary conditions
Re: Problems reading ice boundary conditions
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
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
Re: Problems reading ice boundary conditions
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.
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.
- dylanrs617
- Posts: 9
- Joined: Tue Oct 27, 2020 3:16 pm
- Location: Los Alamos National Laboratory
- Contact:
Re: Problems reading ice boundary conditions
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
gives the following error because the infrastructure has not been built in Modules/mod_clima.F
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
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
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....
Thanks,
Dylan
- arango
- Site Admin
- Posts: 1394
- Joined: Wed Feb 26, 2003 4:41 pm
- Location: DMCS, Rutgers University
- Contact:
Re: Problems reading ice boundary conditions
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.
The sea ice work is not funded, so I do whatever I can in my spare time or when needed in our group projects.
- arango
- Site Admin
- Posts: 1394
- Joined: Wed Feb 26, 2003 4:41 pm
- Location: DMCS, Rutgers University
- Contact:
Re: Problems reading ice boundary conditions
It should be uiclm and viclm to indicate ice velocity components.
- dylanrs617
- Posts: 9
- Joined: Tue Oct 27, 2020 3:16 pm
- Location: Los Alamos National Laboratory
- Contact:
Re: Problems reading ice boundary conditions
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):
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.
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
Re: Problems reading ice boundary conditions
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
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
- arango
- Site Admin
- Posts: 1394
- Joined: Wed Feb 26, 2003 4:41 pm
- Location: DMCS, Rutgers University
- Contact:
Re: Problems reading ice boundary conditions
Thank you, Tale.
I will take a look when I get a chance.
