OMEGA_IMPLICIT in estuaries
OMEGA_IMPLICIT in estuaries
If you run ROMS domains that have realistic bathymetry, resolution <=500m, tides, and your timestep is dictated by Cw, you might want to give OMEGA_IMPLICIT a try (Shchepetkin 2015 https://doi.org/10.1016/j.ocemod.2015.03.006). It's available inside the feature/kernel branch. In our case, the benefits outweighted the trouble of switching to feature/kernel. Pierre
- arango
- Site Admin
- Posts: 1384
- Joined: Wed Feb 26, 2003 4:41 pm
- Location: DMCS, Rutgers University
- Contact:
Re: OMEGA_IMPLICIT in estuaries
Hi Pierre, I am glad to hear that. I must return to that branch and check what I need to do to merge it into the develop branch. In the ROMS GitHub version, we can switch branches in the build script very quickly by the command:
It creates the src subdirectory in your project directory containing the code for the specific branch. We always recommend that users update the cloned copy of the ROMS code.
Code: Select all
build_roms.sh -j 10 -b feature/kernel
Re: OMEGA_IMPLICIT in estuaries
I wanted to update my earlier post and mention that OMEGA_IMPLICIT (Shchepetkin 2015) is now directly available in the standard/official branch ("develop").
Re: OMEGA_IMPLICIT in estuaries
Pierre, Thanks for pointing this out. I will try it.
Question: how do you determine that your time step is limited by Cw? I must confess that even after years of using ROMS I still have very limited understanding of exactly what causes my models to blowup.
Thanks, Parker
Question: how do you determine that your time step is limited by Cw? I must confess that even after years of using ROMS I still have very limited understanding of exactly what causes my models to blowup.
Thanks, Parker
Re: OMEGA_IMPLICIT in estuaries
The Courant numbers (Cu, Cv, Cw) are reported at every timestep in the standard output:
The 2015 paper discusses Cw and the hybrid explicit/implicit fix for cases when it becomes high.
Code: Select all
TIME-STEP YYYY-MM-DD hh:mm:ss.ss KINETIC_ENRG POTEN_ENRG TOTAL_ENRG NET_VOLUME
C => (i,j,k) Cu Cv Cw Max Speed
Re: OMEGA_IMPLICIT in estuaries
Pierre, thanks for pointing out this Courant number part of the log file.
Question: What does the (i,j,k) refer to? I assume it is the indices of one of the Courant numbers, but which of the three?
Also, I am rerunning a model using OMEGA_IMPLICIT and it appears to have fixed some blowup issues. I believe the new version (develop) also includes some bug fixes in advection/turbulence that Ramsey Harcourt pointed out, and these may also be helping.
Cheers, Parker
Question: What does the (i,j,k) refer to? I assume it is the indices of one of the Courant numbers, but which of the three?
Also, I am rerunning a model using OMEGA_IMPLICIT and it appears to have fixed some blowup issues. I believe the new version (develop) also includes some bug fixes in advection/turbulence that Ramsey Harcourt pointed out, and these may also be helping.
Cheers, Parker
Re: OMEGA_IMPLICIT in estuaries
The relevant code is in Nonlinear/diag.F, but I believe it is the (i,j,k) for which the sum of the three (i.e. Cu+Cv+Cw) is greatest.
- arango
- Site Admin
- Posts: 1384
- Joined: Wed Feb 26, 2003 4:41 pm
- Location: DMCS, Rutgers University
- Contact:
Re: OMEGA_IMPLICIT in estuaries
The (i,j,k) are the 3D state array indices of where the maximum value of the velocities occurs. It is an indication of possible trouble spots if the model blows up. In our experience, ROMS typically fails due to vertical CFL violations in shallow regions with extremely thin vertical level thicknesses. The OMEGA_IMPLICIT helps in those situations. Also, with OMEGA_IMPLICIT, we can try a larger time step. If the (i,j,k) is near the grid's open boundaries, it can indicate that we need to be concerned about a possible trouble spot due to lateral boundary conditions. Thus, it is a handy diagnostic value.