Opened 8 years ago

Closed 8 years ago

#709 closed upgrade (Done)

NADJ paramerter and 4D-Var dual formulation

Reported by: arango Owned by: arango
Priority: major Milestone: Adjoint Based Algorithms
Component: Adjoint Version: 3.7
Keywords: Cc:

Description

It had come to my attention that some users set NADJ in ocean.in to a large number to trigger strong constraint in 4D-Var dual formulation alogorithms (W4DPSAS or W4DVAR). Well, this is not a good idea because the algorithms will become unstable.

In the dual formulation, we need to set NADJ to NTIMES for strong constraint or to an exact multiple of NTIMES for weak constraint. For example, in ocean.in we can have:

      NTIMES == 192
...
        NADJ == 48                              ! weak constraint
or
        NADJ == 192                             ! strong constraint

In the primal formulation (IS4DVAR), you can put any number for NADJ because it is over-written internally in read_phypar.F:

#if defined IS4DVAR
!
!  If strong constraint, write only final adjoint solution since only
!  we are estimating initial conditions.
!
        nADJ(ng)=ntimes(ng)
#endif

To avoid similar problems in the future, a safeguard is added in read_phypar.F for the dual formulation:

#if defined W4DPSAS || defined W4DVAR
!
!  If dual formulation and strong constraint, limit writing the adjoint
!  solution to the end of time-stepping.
!
        IF (nADJ(ng).gt.ntimes(ng)) THEN
          nADJ(ng)=ntimes(ng)
        END IF
#endif

Change History (1)

comment:1 by arango, 8 years ago

Resolution: Done
Status: newclosed
Note: See TracTickets for help on using tickets.