Custom Query (964 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (319 - 321 of 964)

Ticket Owner Reporter Resolution Summary
#237 arango arango Fixed Missing arguments in wrt_hessian.F
Description

There a couple of missing arguments in wrt_hessian.F when writing ad_svstr when ADJUST_WSTRESS is activated. Also remove the allocation of SF_time in mod_scalars.F. We already allocate this variable in inp_par.F which is the correct place to do so. We need to allocate this variable after the input parameter nSFF is read.

#238 arango arango Fixed Problem in input routines nf_fread*d when scale is not unity
Description

There is a problem in routines nf_fread2d.F, nf_fread3d.F, and nf_fread4d.F when the scale (Ascl) value used to multiply input fields is different than unity and land points are replaced with the _FillValue. The read field was scaled first and then checked for the fill value. This logic needs to be changed to:

            DO i=1,Npts
              IF (wrk(i).ge.spval) THEN
                wrk(i)=0.0_r8           ! land/sea maked with _FillValue
              ELSE
                wrk(i)=Ascl*wrk(i)
                Amin=MIN(Amin,wrk(i))
                Amax=MAX(Amax,wrk(i))
              END IF
            END DO

That is, the read field is unmodified when the conditional wrk(i).ge.spval is executed. Many thanks to Andy Moore for bringing this to my attention.

I also initialized local arrays in the IO routines to avoid denormalized numbers that are treated differently by various compilers. This facilitates processing and debugging. I also initialized such fields in the mp_gather and mp_scatter routines.

#240 arango arango Done Updated 4DVar observation operator
Description

Changed the 4DVar observation operator extract_obs.F and ad_extract_obs.F to check viable observations in terms of the fractional coordinates lower and upper bounds real values (rXmin, rXmax, rYmin, rYmax, and similar values for u- and v-observations) instead of the integer values. In distributed-memory, these bounds are a function of the tile partition. The strategy here is to add a small value (epsilon=1E-8) to the eastern and northern boundary values of Xmax and Ymax so observations at such boundaries locations are processed. This is needed because the .lt. operator in the following conditional in the above routines:

      IF (...
     &    ((Xmin.le.Xobs(iobs)).and.(Xobs(iobs).lt.Xmax)).and.          &
     &    ((Ymin.le.Yobs(iobs)).and.(Yobs(iobs).lt.Ymax))) THEN

In distributed-memory, a unity value is added to rXmax and rYmax (and others) to all tiles except those next to the eastern and northern boundaries, so observations are processed and not excluded between tile boundaries.

All the observations are assumed to be in fractional coordinates with respect to the RHO-points. The outside world locations is at RHO-points since the C-grid locations is a numerical abstraction. This implies that the fractional X-coordinate for u-type observations and the fractional Y-coordinates for v-type observations need to be shifted by +0.5, as follows:

   M      r..u..r..u..r..u..r..u..r..u..r..u..r..u..r..u..r..u..r
          :                                                     :
   Mm+.5  v  p++v++p++v++p++v++p++v++p++v++p++v++p++v++p++v++p  v
          :  +     |     |     |     |     |     |     |     +  :
   Mm     r  u  r  u  r  u  r  u  r  u  r  u  r  u  r  u  r  u  r
          :  +     |     |     |     |     |     |     |     +  :
   Mm-.5  v  p--v--p--v--p--v--p--v--p--v--p--v--p--v--p--v--p  v
          :  +     |     |     |     |     |     |     |     +  :
          r  u  r  u  r  u  r  u  r  u  r  u  r  u  r  u  r  u  r
          :  +     |     |     |     |     |     |     |     +  :
          v  p--v--p--v--p--v--p--v--p--v--p--v--p--v--p--v--p  v
          :  +     |     |     |     |     |     |     |     +  :
          r  u  r  u  r  u  r  u  r  u  r  u  r  u  r  u  r  u  r
          :  +     |     |     |     |     |     |     |     +  :
   2.5    v  p--v--p--v--p--v--p--v--p--v--p--v--p--v--p--v--p  v
          :  +     |     |     |     |     |     |     |     +  :
   2.0    r  u  r  u  r  u  r  u  r  u  r  u  r  u  r  u  r  u  r
          :  +     |     |     |     |     |     |     |     +  :
   1.5    v  p--v--p--v--p--v--p--v--p--v--p--v--p--v--p--v--p  v
          :  +     |     |     |     |     |     |     |     +  :
   1.0    r  u  r  u  r  u  r  u  r  u  r  u  r  u  r  u  r  u  r
          :  +     |     |     |     |     |     |     |     +  :
   0.5    v  p++v++p++v++p++v++p++v++p++v++p++v++p++v++p++v++p  v
          :                                                     :
   0.0    r..u..r..u..r..u..r..u..r..u..r..u..r..u..r..u..r..u..r

            0.5   1.5   2.5                          Lm-.5 Lm+.5
   Y/X
         0.0   1.0   2.0                                  Lm    L

Notice that in the above diagram the domain physical boundary is marked with ++ whereas the artifial boundary is marked with ...

For those of you that processed the velocity observations without the 0.5 offset, the error is small and may not be significant. I will recommend you to consider such offset in the future.

I also modified extract_sta.F for consistency and to avoid out-of-bounds whe the station is located exactly at the eastern or northern boundaries.

Many thanks to Andy Moore for bringing the out-bounds and scanning conditional to my attention.

Batch Modify
Note: See TracBatchModify for help on using batch modify.
Note: See TracQuery for help on using queries.