Hi Hernan and Enrique,
I have done more work on the ice shelf startup. The problem with the current setup is that it assumes that the water in which the ice is floating is always rho(zice), but since the density changes along the base of the ice, this leads to unphysical pressure gradients. Also, the pressure under the ice is based on a reference density of 1000 instead of 1000+rho(zice).
I have attached a short document with the calculation of the pressure under the ice assuming that the ice is floating in the ocean. Doing this correctly requires one more array and a calculation at the initial time of the pressure under the ice. The code that was added only works in serial mode. It can be made to work with openmp by doing the short segment in one thread. I am not sure how to do this in MPI.
http://www.myroms.org/links/ice.13nov03.pdf
This fix also assumes that there is no masking and that the path integral is done from north to south.
I have run a one day calculation with the ice shelf test case. The KE increases to about 4.0E-5 and oscillates thereafter. Mike gets a smaller initial disturbance, so I may have to account for the 200 m of ice at the northern boundary.
There is likely a more graceful way to add this calculation to the model.
Let me know what you think of this.
John Klinck
Ice Shelf for ROMS
- arango
- Site Admin
- Posts: 1367
- Joined: Wed Feb 26, 2003 4:41 pm
- Location: DMCS, Rutgers University
- Contact:
Hi John,
Thank you for the information. I think that you are in the right track to solve this problem. When I heard about your problem, the first think that came to mind was a density mismatch during initialization. However, a pressure mismatch makes more sense. You can create big flows during the adjustment process and blow-up.
I looked for the computation of IcePress this morning. We need to compute this term in a routine different than initial. This array needs to be computed inside a parallel region. Now, the computation of IcePress inside of a parallel region is not trivial. This integration is very nasty because it is not really a parallel reduction since the cumulative sum of the integral is stored at each (i,j) pairs.
I think that the best place to compute IcePress is in the pressure gradient routine itself during the first time step (first pass only). I need to think more about it. This would need to be tested to make such that I doing the parallel computation correctly.
Of course, there is an alternative. In real applications, we can compute IcePress outside and save it in one of the NetCDF files. A good candidate is the grid or initial NetCDF file. In this way the integration direction can be done according to the application. Of course, the problem here is that IcePress depends on the initial conditions and the choice of equation of state which is part of the free options in any configuration.
Hernan G. Arango
arango@iimcs.rutgers.edu
Thank you for the information. I think that you are in the right track to solve this problem. When I heard about your problem, the first think that came to mind was a density mismatch during initialization. However, a pressure mismatch makes more sense. You can create big flows during the adjustment process and blow-up.
I looked for the computation of IcePress this morning. We need to compute this term in a routine different than initial. This array needs to be computed inside a parallel region. Now, the computation of IcePress inside of a parallel region is not trivial. This integration is very nasty because it is not really a parallel reduction since the cumulative sum of the integral is stored at each (i,j) pairs.
I think that the best place to compute IcePress is in the pressure gradient routine itself during the first time step (first pass only). I need to think more about it. This would need to be tested to make such that I doing the parallel computation correctly.
Of course, there is an alternative. In real applications, we can compute IcePress outside and save it in one of the NetCDF files. A good candidate is the grid or initial NetCDF file. In this way the integration direction can be done according to the application. Of course, the problem here is that IcePress depends on the initial conditions and the choice of equation of state which is part of the free options in any configuration.
Hernan G. Arango
arango@iimcs.rutgers.edu