New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
2020WP/KERNEL-06_techene_better_e3_management – NEMO
wiki:2020WP/KERNEL-06_techene_better_e3_management

Version 5 (modified by techene, 4 years ago) (diff)

--

Name and subject of the action

Last edition: Wikinfo(changed_ts)? by Wikinfo(changed_by)?

The PI is responsible to closely follow the progress of the action, and especially to contact NEMO project manager if the delay on preview (or review) are longer than the 2 weeks expected.

  1. Summary
  2. Preview
  3. Tests
  4. Review

Summary

Action optimisation of the vertical scale factor e3 computation
PI(S) Techene, Madec
Digest compute e3 on the fly from e3_0(:,:,:,Ktl) * ( 1 + ssh(:,:,Ktl) / h_0( :,: ) * mask( :,:,: ) instead of storing e3t/u/v/w/f...
Dependencies If any
Branch source:/NEMO/branches/2020/dev_r{REV}_{ACTION_NAME}
Previewer(s) Madec
Reviewer(s) Madec
Ticket #2385

Description

The current e3[P] at P-point computation uses interpolation of the r3t 4D table at P = {u-, v-, w-, f-, uw-, vw-} points. This means 7 4D tables stored in memory. The proposed optimisation consists in computing e3[P](ji,jj,jk,Ktl) on the fly using the r3[P] = ssh[P] / h_0 and the e3[P]_0. r3[P] is a 2D table, then this means only 4 2D tables stored in memory. z-tilde management is done through e3[P]_0 that may varies with time in the z-tilde case. Asselin filter management is done recomputing r3[P] directly with the filtered ssh.

Implementation

Error: Failed to load processor box
No macro or processor named 'box' found

1/ REFERENCE version change the way to compute the e3 using ssh instead of interpolating
For this we need to modify :

  • cfgs/GYRE_PISCES/cpp_GYRE_PISCES.fcm (top de-activation)
  • src/OCE/DOM/dom_oce.F90 (declaration and allocation of new variable)
  • src/OCE/DOM/domain.F90 (initialisation of h new variables)
  • src/OCE/DOM/dommsk.F90 (initialisation of mask new variable)
  • src/OCE/DOM/domvvl.F90 (dom_vvl_interpol and dom_vvl interpol_3d)
  • src/OCE/DYN/dynatf.F90 (change but no effect since ln_dynadv_vec = .true.)
  • src/OCE/TRA/traatf.F90 (change the e3t update with Asselin filter)
  • src/OCE/step.F90 (change the ordering ssh >> tra >> dyn)

2/

...

Documentation updates

Error: Failed to load processor box
No macro or processor named 'box' found

...

Preview

Error: Failed to load processor box
No macro or processor named 'box' found

...

Tests

Error: Failed to load processor box
No macro or processor named 'box' found

...

Review

Error: Failed to load processor box
No macro or processor named 'box' found

...