Custom Query (986 matches)
Results (496 - 498 of 986)
Ticket | Owner | Reporter | Resolution | Summary |
---|---|---|---|---|
#605 | Fixed | Corrected FLOATS restart | ||
Description |
Corrected a problem in def_floats.F when setting the DRIFTER(ng)%bounded switch during restart. If the floats have not been released yet at restart time, the values of Xgrid, Ygrid, and Zgrid will be _FillValue (i.e. 1.0E+37) in the FLOATS NetCDF file. The calls to netcdf_get_fvar in def_floats.F will replace such values with zeros. Therefore, we need to read Zgrid first so the DRIFTER(ng)%bounded switch is FALSE in such cases to trigger the release. This switch will be set corrected if Xgrid and Ygrid are read last. The zero values in Xgrid and/or Ygrid due to unreleased floats will set DRIFTER(ng)%bounded=FALSE because of the lower bound is 0.5 in fractional coordinates. So the order of operations in def_floats.F is very important during restart. The correct code is then: # ifdef SOLVE3D CALL netcdf_get_fvar (ng, iNLM, ncname, 'Zgrid', & & Tinp, & & ncid = FLT(ng)%ncid, & & start = (/1,FLT(ng)%Rindex/), & & total = (/Nfloats(ng),1/)) IF (exit_flag.ne.NoError) RETURN DO l=1,Nfloats(ng) IF ((Tinp(l).gt.REAL(N(ng),r8)).or. & & (Tinp(l).lt.0.0_r8)) THEN DRIFTER(ng)%bounded(l)=.FALSE. ELSE DRIFTER(ng)%bounded(l)=.TRUE. DO i=0,NFT DRIFTER(ng)%track(izgrd,i,l)=Tinp(l) DRIFTER(ng)%track(izrhs,i,l)=0.0_r8 END DO END IF END DO ! # endif CALL netcdf_get_fvar (ng, iNLM, ncname, 'Xgrid', & & Tinp, & & ncid = FLT(ng)%ncid, & & start = (/1,FLT(ng)%Rindex/), & & total = (/Nfloats(ng),1/)) IF (exit_flag.ne.NoError) RETURN DO l=1,Nfloats(ng) IF ((Tinp(l).gt.REAL(Lm(ng)+1,r8)-0.5_r8).or. & & (Tinp(l).lt.0.5_r8)) THEN DRIFTER(ng)%bounded(l)=.FALSE. ELSE DRIFTER(ng)%bounded(l)=.TRUE. DO i=0,NFT DRIFTER(ng)%track(ixgrd,i,l)=Tinp(l) DRIFTER(ng)%track(ixrhs,i,l)=0.0_r8 END DO END IF END DO ! CALL netcdf_get_fvar (ng, iNLM, ncname, 'Ygrid', & & Tinp, & & ncid = FLT(ng)%ncid, & & start = (/1,FLT(ng)%Rindex/), & & total = (/Nfloats(ng),1/)) IF (exit_flag.ne.NoError) RETURN DO l=1,Nfloats(ng) IF ((Tinp(l).gt.REAL(Mm(ng)+1,r8)-0.5_r8).or. & & (Tinp(l).lt.0.5_r8)) THEN DRIFTER(ng)%bounded(l)=.FALSE. ELSE DRIFTER(ng)%bounded(l)=.TRUE. DO i=0,NFT DRIFTER(ng)%track(iygrd,i,l)=Tinp(l) DRIFTER(ng)%track(iyrhs,i,l)=0.0_r8 END DO END IF END DO Many thanks to Diego Narvaez for bringing this issue to my attention. This issue was also discussed in forum sometime ago but I was not able to reproduce it. We didn't have enough information. I also correct a bug in packing.F when computing the norm in parallel. Many thanks to Andy for reporting this problem. |
|||
#606 | Done | Added new color palettes for the plotting package | ||
Description |
I added several new palettes to the plotting package based on the vivid colormap from Matlab Central. This palette is good for salinity (vivid1_128.pal): and free-surface (vivid2_128.pal) The above palettes are still linear. |
|||
#607 | Fixed | IMPORTANT: Corrected bug in t3dbc_im.F | ||
Description |
A bug was corrected in t3dbc_im.F when computing the passive/active boundary conditions for tracers. In the western boundary we need to have: IF (LBC(iwest,isTvar(itrc),ng)%nudging) THEN IF ((dTdt*dTdx).lt.0.0_r8) THEN tau=Tobc_in(itrc,ng,iwest) ELSE tau=Tobc_out(itrc,ng,iwest) END IF tau=tau*dt(ng) END IF instead of IF (LBC(iwest,isTvar(itrc),ng)%nudging) THEN tau=Tobc_out(itrc,ng,iwest) IF ((dTdt*dTdx).lt.0.0_r8) THEN tau=Tobc_in(itrc,ng,iwest) ELSE tau=tau*dt(ng) END IF END IF Similar corrections are done for the eastern, southern, and northern boundaries. This error implies that the inflow tracer values are not nudged as strongly as we thought by a factor of dt in days. In some applications with long time scales, this bug is not that significant. However, it effects are more noticeable when the nudging scales are comparable with the length of a single time-step (dt). Once corrected, you will not be able to reproduce previous solutions unless that you increase the nudging time scale, tnudg(itrc), by a factor of dt in days (dt/86400). The change in that nudging scale may not be that significant and you get the save tracer behavior at the boundary. Similar boundary conditions for other model state variables were correct. Many thanks to Tingting ZU for bringing this to my attention! |