Custom Query (986 matches)

Filters
 
Or
 
  
 
Columns

Show under each result:


Results (406 - 408 of 986)

Ticket Owner Reporter Resolution Summary
#511 arango arango Done Time-averaged and diagnostic fields in the 4D-Var algorithms
Description

The following time-averaged CPP options are now available:

  • AVERAGES: use if writing out time-averaged nonlinear model fields.
  • AD_AVERAGES: use if writing out time-averaged adjoint model fields. Used primarily in adjoint sensitivity simulations.
  • RP_AVERAGES: use if writing out time-averaged representer model fields. Used only in the R4D-Var algorithm (W4DVAR) to save the representer model time-averaged fields for each outer loop in separated files.
  • TL_AVERAGES: use if writing out time-averaged tangent linear model fields. It will used in future to load averages of the TLM kernel.

Notice that only one of these CPP options can be activated at the same time. They are mutually exclusive! This is because the same internal arrays (declared in mod_averages.F) are uses to stored the accumulated field sums.

Now, the I4D-Var and 4D-PSAS algorithms (IS4DVAR and W4DPSAS, respectively) will write out the time-averaged and diagnostic fields for each outer loop in separated files if the AVERAGES and/or DIAGNOSTICS_TS/DIAGNOSTICS_UV options are activated.

Warning: The CPP directives associated with AVERAGES where modified in several routines (like biology and sediment) to include instead:

#if defined AVERAGES    || \
   (defined AD_AVERAGES && defined ADJOINT) || \
   (defined RP_AVERAGES && defined TL_IOMS) || \
   (defined TL_AVERAGES && defined TANGENT)

Many thanks to Andy Moore for suggesting this useful capabilities for the 4D-Var data assimilation algorithms. This will become handy in 4D-Var reanalysis of ocean circulation for a particular region.

#512 arango arango Fixed Corrected shared-memory bug in step3d_uv.F
Description

I have been looking for a shared-memory parallel bug, on and off for several months, in North-South periodic (NS_PERIODIC) applications. This bug appeared when TS_MPDATA is activated. I have re-written and analyzed mpdata_adiff.F several times but I still get the same problem. I don't get identical solutions with different partitions. I came to the conclusion that the problem was somewhere else. This has been a very difficult bug to track in the debugger.

Currently, I am removing all the CPP options associated with lateral boundary conditions which allow me to look at the code in great detail. I found the problem in step3d_uv.F. We need to have the following conditionals around line 1122:

# if !defined EW_PERIODIC && !defined COMPOSED_GRID
        IF (DOMAIN(ng)%Western_Edge(tile)) THEN
          ...
        END IF
        IF (DOMAIN(ng)%Eastern_Edge(tile)) THEN
          ...
        END IF
# endif
# if !defined NS_PERIODIC && !defined COMPOSED_GRID
        IF (DOMAIN(ng)%Southern_Edge(tile)) THEN
          ...
        END IF
        IF (DOMAIN(ng)%Northern_Edge(tile)) THEN
          ...
        END IF
# endif

instead of

# if !defined EW_PERIODIC && !defined COMPOSED_GRID
        IF (Istr.eq.1)THEN
          ...
        END IF
        IF (Iend.eq.Lm(ng)) THEN
          ...
        END IF
# endif
# if !defined NS_PERIODIC && !defined COMPOSED_GRID
        IF (j.eq.0) THEN
          ...
        END IF
        IF (j.eq.Mm(ng)+1) THEN
          ...
        END IF
# endif

when replacing the incorrect vertical mean with more accurate barotropic component at only the boundary points. I introduced this bug long time ago when removing redundant operations that are illegal in the adjoint algorithms. This bug only affected NS_PERIODIC applications. Recall that I- and J-ranges are different in periodic applications. Well, shared-memory code is very delicate.

After the above fix, I can get identical solutions with TS_MPDATA in shared-memory applications. However, there is still a bug in serial with partitions when both NS_PERIODIC and TS_MPDATA are activated together. In the past, I thought that both problems were related... Well, I will continue looking. This type of bugs takes a lot of time to fix. Sometimes we are lucky and find them pretty fast. I think that this one is related to the 3 ghost-points required for TS_MPDATA or more probably an illegal call inside a parallel region. This will be even nastier because implies splitting the call to mpdata_adiff.F to a different parallel region. A nasty proposition. This is the kind of solutions that were required in the past for serial with partitions bugs...

I also corrected a small bug in ana_smflux.h when the LMD_TEST is activated. Many thanks to Chris Edwards for reporting this bug.

#513 arango backkom Fixed Bug for TIDE(ng)%Vid
Description

The variable TIDE(ng)%Vid is defined in mod_tides.F as following:

allocate ( TIDE(ng)%Vid(NV) )

while it is used in def_tides.F like this:

TIDE(ng)%Vid(idCosW,ng)=var_id(i)

The 2th dimension ng does not exits. It needs to be removed.

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