Changes between Version 2 and Version 3 of 2020WP/KERNEL-06_techene_better_e3_management


Ignore:
Timestamp:
2020-01-22T10:27:31+01:00 (9 months ago)
Author:
techene
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • 2020WP/KERNEL-06_techene_better_e3_management

    v2 v3  
    1111== Summary 
    1212 
    13 ||=Action       || improve e3* management                        || 
     13||=Action       || optimisation of the vertical scale factor e3 computation          || 
    1414||=PI(S)        || Techene, Madec                                                 || 
    15 ||=Digest       || get rid of the very large number of e3* arrays and improve some of the e3* computation || 
     15||=Digest       || compute e3 on the fly from e3_0(:,:,:,Klt) * ( 1 + ssh(:,:,Klt) / h_0(:,:) * mask(:,:,:) instead of storing e3t/u/v/w/f... || 
    1616||=Dependencies || If any                                                || 
    1717||=Branch       || source:/NEMO/branches/2020/dev_r{REV}_{ACTION_NAME} || 
     
    2323 
    2424 
    25 use e3_0 and eta to recompute all e3* when needed. 
     25The 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.  
     26The 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. 
     27z-tilde management is done through e3[P]_0 that may varies with time in the z-tilde case. 
     28Asselin filter management is done recomputing r3[P] directly with the filtered ssh. 
    2629 
    2730 
     
    3437give for each the chosen name and description wrt coding rules. 
    3538}}} 
     39 
     401/ REFERENCE version change the way to compute the e3 using ssh instead of interpolating \\ 
     41For this we need to modify : \\ 
     42- cfgs/GYRE_PISCES/cpp_GYRE_PISCES.fcm (top de-activation) \\ 
     43- src/OCE/DOM/dom_oce.F90 (declaration and allocation of new variable) \\ 
     44- src/OCE/DOM/domain.F90 (initialisation of h new variables) \\ 
     45- src/OCE/DOM/dommsk.F90 (initialisation of mask new variable) \\ 
     46- src/OCE/DOM/domvvl.F90 (dom_vvl_interpol and dom_vvl interpol_3d) \\ 
     47- src/OCE/DYN/dynatf.F90 (change but no effect since ln_dynadv_vec = .true.) 
     48- src/OCE/TRA/traatf.F90 (change the e3t update with Asselin filter) 
     49- src/OCE/step.F90 (change the ordering ssh >> tra >> dyn) \\ 
     50 
     51 
     522/  
     53 
    3654 
    3755''...''