Opened 7 years ago

Closed 7 years ago

#624 closed bug (Done)

IMPORTANT: Few corrections

Reported by: arango Owned by: arango
Priority: major Milestone: Release ROMS/TOMS 3.7
Component: Nonlinear Version: 3.7
Keywords: Cc:

Description (last modified by arango)

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.
  • Updated the contact NetCDF files (dogbone_ngc_composite.nc and dogbone_ngc_refined.nc) for the DOGBONE test case.
  • Updated few files in the test reposiotry.

Change History (1)

comment:1 Changed 7 years ago by arango

  • Description modified (diff)
  • Resolution set to Done
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.