Custom Query (964 matches)
Results (712 - 714 of 964)
Ticket | Owner | Reporter | Resolution | Summary |
---|---|---|---|---|
#685 | Fixed | IMPORTANT: Corrected two-way nesting in layers with more than one grid | ||
Description |
In applications with more than one refined grid in a nested layer (GridsInLayer(ng) > 1), the two-way nesting was applied only to the first grid in that layer. The other grid(s) interactions in such layer were just one-way. This was corrected by just changing function do_twoway (in nesting.F) and changing main2d.F and main3d.F from: DO il=NestLayers,1,-1 IF (do_twoway(nl,il,istep,ng)) THEN CALL nesting (ng, iNLM, n2way) END IF END DO to DO il=NestLayers,1,-1 DO ig=1,GridsInLayer(il) ng=GridNumber(ig,il) IF (do_twoway(nl,il,ng,istep)) THEN CALL nesting (ng, iNLM, n2way) END IF END DO END DO Notice that the loop DO ig=1,1GridsInLayer(il) was removed from function do_twoway and put it in main2d.F and main3d.F instead. This is not fatal for a particular application. It is just that all grids interactions is not two-way. It only affect application with more than one refinement grid in a particular nested layer, GridsInLayer(ng) > 1. Many thanks to Francisco López for bringing this to my attention. |
|||
#689 | Done | Important: Big update the Tracer Diffusion Algorithms | ||
Description |
In src:ticket:627 update, The CPP option TCLIMATOLOGY that was used to process tracer climatology fields was eliminated and replaced with logical switch LtracerCLM, which is read from input script ocean.in: ! Logical switches (TRUE/FALSE) to read and process climatology fields. ! See glossary below for details. LsshCLM == F ! sea-surface height Lm2CLM == F ! 2D momentum Lm3CLM == F ! 3D momentum LtracerCLM == T T ! temperature, salinity, inert This was done to facilitate processing or not climatology fields in multiple nesting grids. This change affected the horizontal diffusion of tracers in routines t3dmix2_s.h, t3dmix2_geo.h, t3dmix2_iso.h, t3dmix4_s.h, t3dmix4_geo.h, and t3dmix4_iso.h when the tracer climatology is used in the diffusion operator. We need now to provide code to using the LtracerCLM(itrc,ng) logical instead of a CPP option that is now obsolete. For example, in t3dmix2_s.h we now have: ! ! Compute XI- and ETA-components of diffusive tracer flux (T m3/s). ! DO j=Jstr,Jend DO i=Istr,Iend+1 #ifdef DIFF_3DCOEF cff=0.25_r8*(diff3d_r(i,j,k)+diff3d_r(i-1,j,k))* & & pmon_u(i,j) #else cff=0.25_r8*(diff2(i,j,itrc)+diff2(i-1,j,itrc))* & & pmon_u(i,j) #endif #if defined TS_MIX_STABILITY FX(i,j)=cff* & & (Hz(i,j,k)+Hz(i-1,j,k))* & & (0.75_r8*(t(i ,j,k,nrhs,itrc)- & & t(i-1,j,k,nrhs,itrc))+ & & 0.25_r8*(t(i ,j,k,nstp,itrc)- & & t(i-1,j,k,nstp,itrc))) #elif defined TS_MIX_CLIMA IF (LtracerCLM(itrc,ng)) THEN FX(i,j)=cff* & & (Hz(i,j,k)+Hz(i-1,j,k))* & & ((t(i ,j,k,nrhs,itrc)-tclm(i ,j,k,itrc))- & & (t(i-1,j,k,nrhs,itrc)-tclm(i-1,j,k,itrc))) ELSE FX(i,j)=cff* & & (Hz(i,j,k)+Hz(i-1,j,k))* & & (t(i,j,k,nrhs,itrc)-t(i-1,j,k,nrhs,itrc)) END IF #else FX(i,j)=cff* & & (Hz(i,j,k)+Hz(i-1,j,k))* & & (t(i,j,k,nrhs,itrc)-t(i-1,j,k,nrhs,itrc)) #endif END DO END DO This update is complicated because include changes the NLM, TLM, RPM, and ADM versions of these routines. This changes get a little complex in the geopotential and isopycnic (epineutral) diffudion tensors. Notice that we now have the following CPP options to characterize the tracer diffusion:
Many thanks to Dezhou Yang for bringing this issue to my attention. |
|||
#690 | Done | Important: Updated Tracer Point Sources and Sinks | ||
Description |
Notice that the Point Sources and Sinks (like river runoff, etc) in ROMS are implemented in two ways:
From now on, we are making sure that only one of the above methods are allowed for a particular nested grid, ng. Otherwise, the Point Sources/Sinks will be applied twice. In this update, the logic to use LuvSrc and LwSrc is cleaned to use either of the above methodologies. The method (2) is also added to the tracer predictor step in pre_step3d.F in the same way as the corrector step in step3d_t.F. |