ROMS/TOMS Developers

Algorithms Update Web Log

arango - September 3, 2006 @ 16:40
Updated Weak Constraint 4DVAR Algorithms- Comments (0)

Corrected a couple of parallel and observation-processing bugs in the weak contraint algorithms:

  • Corrected a parallel bug in the convolution of the adjoint solution in drivers: convolution.h, symmetry.h, w4dpsas_ocean.h, and w4dvar_ocean.h. Now, the adjoint solution is read in the tangent linear state arrays with a call to routine get_state, using iTLM instead of iADM in the calling arguments. Then, the routines load_TLtoAD and load_ADtoTL are used to load the solution to convolve into the appropriated state arrays before applying the adjoint and tangent linear squared-root diffusion operators, repectively. Only the interior solution is loaded (recall that get_state also puts the appropriate data in the ghost points). This is critial in parallel adjoint applications. Many thanks to Andy for finding this ellusive bug.
  • Changed the order of the squared-root adjoint and tangent linear diffusion operators in the weak constraint drivers to be consistent with the computation of the error covariance normalization coefficients and other 4DVAR related algorithms. The squared-root adjoint operator is applied first for half of the diffusion steps. The resulting solution is then filtered with the tangent linear operator for the other half of diffusion steps. Recall, that both squared-root operators are used to impose symmetry.
  • Corrected a parallel bug in the processing of the tangent linear vector TLmodVal in the weak constraint algorithms. This tangent linear vector is no longer read in routine obs_read to avoid accumulating their values with mp_collect during parallel exchanges. In weak constraint, the entire observation operator is maintained in memory. It includes all the observations for different time surveys. This requires additional logic in routines obs_write.F and ad_htobs.F. In addition, another parallel bug was fixed for more than one observation time survey applications. Only the relevant section of the observation vector is proccessed, for a particular time, using the datum indices Mstr and Mend.
  • Corrected the processing of the tangent linear model forcing terms with the adjoint vector ADmodVal in ad_htobs.F. Previously, it was processing all time surveys at once in the f_* arrays. Now, only the relevant observation time survey is processed and applied as impulse forcing.

If you get a compilation error about missing tl_balance.F and/or ad_balance.F, just do a make depend to solve the problem.

For the current updated file list .

No Comments »

No comments yet.

RSS feed for comments on this post.

Leave a comment

You must be logged in to post a comment.