Version 5 (modified by techene, 3 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.
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
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
...
Preview
...
Tests
...
Review
...