= 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. [[PageOutline(2, , inline)]] == 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_r12377_KERNEL-06_techene_e3 || ||=Previewer(s) || Madec, Chanut, Masson || ||=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 {{{#!box width=35em help Describe flow chart of the changes in the code. \\ List the Fortran modules and subroutines to be created/edited/deleted. \\ Detailed list of new variables to be defined (including namelists), \\ give for each the chosen name and description wrt coding rules. }}} Step 1 : Check the error for e3t, e3w between the current way to compute e3 at T-, W-point and the proposed way to compute e3 at T-, W-point. Because this change is likely to induce changes in the code we need to insure and because we need backward compatibility, we will duplicate the modules that will be modified and implement changes gradually. Step 2 : First we change only the core routine in domvvl which should be changed into domQE. - add new variables, duplicate step into steplf and domvvl into domQE - change interpolation routines into scaling routines in domQE Step 3 : Then we change the Asselin filtering routine indeed because water forcing are applied locally. - change Asselin routines (maybe not required since e3 scale with vertical with JC modif) Step 4 : Finally we remove the interpol routine in the whole code - remove interpolating routine in all the code (AGRIF, OFF,...) - use a SUBSTITUTE when there are e3 CALL - make some changes in step and domQE to have the whole thing consistent ''...'' === Documentation updates {{{#!box width=55em help Using previous parts, define the main changes to be done in the NEMO literature (manuals, guide, web pages, …). }}} ''...'' == Preview {{{#!box width=50em info [[Include(wiki:Developers/DevProcess#preview_)]] }}} ''...'' == Tests {{{#!box width=50em info [[Include(wiki:Developers/DevProcess#tests)]] }}} ''...'' We want to track and maybe explain the differences observed at every steps. Reference set up : For that we produce a reference data set with the trunk -r 12377 using the GYRE_PISCES configuration where top cpp_key has been removed. We run it on 120 time steps. The drag coefficient is zero. We XIOS output an averaged field every 5 days. == Review {{{#!box width=50em info [[Include(wiki:Developers/DevProcess#review)]] }}} ''...''