Opened 11 years ago
Last modified 11 years ago
#624 closed bug
IMPORTANT: Few corrections — at Initial Version
Reported by: | arango | Owned by: | arango |
---|---|---|---|
Priority: | major | Milestone: | Release ROMS/TOMS 3.7 |
Component: | Nonlinear | Version: | 3.7 |
Keywords: | Cc: |
Description
I have been working on a big ROMS update for the last three weeks but I am still not ready to release it. Some users have reported few problems, so here I am including few important updates:
- Modified logic on how to initialize the structure BRY_CONTACT in mod_nesting.F with the correct nested grid contact points information. I have been looking for a generic way to code this. I have rewritten this logic several times so it can handle all the possible nesting capabilities. I think that we need to compute the information for the conjugate contact region (CRR) points at the same time of the regular contact points. I hope that this logic is now robust and I don't have to change it again.
- Added couple of CPP options for nesting:
NO_CORRECT_TRACER: Switch to avoid correcting coarser grid tracers next (outside) to the physical of the boundary of the finer grid in two-way refinement. See routine correct_tracer in nesting.F for details. The default behavior is to correct the tracer values so this option can be used to turn off such two-way adjustment.
TIME_INTERP_FLUX: Switch to time interpolate coarser grid mass flux when computing finer grid boundary conditions for (ubar, vbar) in the finner grid physical boundary in routine put_refine2d. The default is to persist in time the coarser grid mass flux during the RefineScale sub-timesteps.
- A safeguard is added to routine z_weights in nesting.F to bound i-1, i+1, j-1, and j+1 operations. Their values are bounded to the maximum possible values at the edge of the contact region. In such cases, Hweight(1,m)=1 and Hweight(2:3,m)=0. This is done to avoid out of range errors. This is relevant in mosaic grids when the vertical interpolation is activated. That is, interpolate = 1 in the input contact points NetCDF file. For example, for the RHO-points we have:
DO Kdg=1,N(dg) DO m=1,Npoints Idg =Rcontact(cr)%Idg(m) Idgp1=MIN(Idg+1, BOUNDS(dg)%UBi(-1)) Jdg =Rcontact(cr)%Jdg(m) Jdgp1=MIN(Jdg+1, BOUNDS(dg)%UBj(-1)) IF (((IminD.le.Idg).and.(Idg.le.ImaxD)).and. & & ((JminD.le.Jdg).and.(Jdg.le.JmaxD))) THEN Zd(1,Kdg,m)=GRID(dg)%z_r(Idg ,Jdg ,Kdg) Zd(2,Kdg,m)=GRID(dg)%z_r(Idgp1,Jdg ,Kdg) Zd(3,Kdg,m)=GRID(dg)%z_r(Idgp1,Jdgp1,Kdg) Zd(4,Kdg,m)=GRID(dg)%z_r(Idg ,Jdgp1,Kdg) END IF END DO END DO
- Corrected minor bug in extract_sta.F. Many thanks to Kelly Kearney bringing this to my attention.
- Corrected an adjoint bug in ad_npzd_iron.h. The variables ad_ExpAtt and ad_Itop need to be initialized to zero at the top of the routine. Many thanks to Paul Mattern for reporting this problem.