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.
2009WP/Release_v3.2 – NEMO
wiki:2009WP/Release_v3.2

TOC(heading=Release_v3.2)?

Release 3.2

Last edited Timestamp?

Major improvements

New Physics

  • tidal mixing parametrisation (bottom intensification) + Indonesian specific tidal mixing
  • RGB light penetration + ocean color
  • TKE / TKE_old : simplification of the restart strategy and its plug in step
  • TKE change in the surface boundary condition, especially in coupled mode (mean stress module send by the atmosphere)

System simplification

  • Suppression of rigid-lid option and no more island specific treatment
  • Cleaning of lib_mpp
  • SHMEM option has been removed
  • north fold treatment is now done once for all in a new routine lbcnfd.F909 instead of being duplicated
  • suppression of redundant east-west communication phase (ORCA grid case)

IOM for the output

  • Purposes :
    • add flexibility for outputs
    • eventually use dedicated processors for output

Using histwrite is still the default behaviour. Nevertheless, iom_put can be activated with the cpp_key key_iomput and should become the default (only) in the future. Iom_put allows to distribute and add desired output fields everywhere in the code without specific declaration in diawri : Ex : CALL iom_put( "ssh" , sshn ) in sshwzv

When using modipsl environment, they are extracting automatically with NEMO. Both are delivered under GPL licence but not under the responsibility of the NEMO team. Actually two levels of functionalities are available : 

  • Functionalities
    • Just use iom_put to output the variable easily 
    • Use in addition dedicated processors for output (server mode), then an additional executable is needed (server mode)
  • How to use it : at execution time, when key_iomput has been activated, two additional files are required (and provided with the standard configuration): 
    • xmlio_server.def : a namelist to define if we are in server mode or not 
    • iodef.xml : an xml file to be completed with precision on the variable called by iom_put in nemo (name for output, frequency, file) 
    • In server mode only, user has to define a mpi configuration file (for instance mpi.conf) looking like: 
-p 10 -e ./opa                                 <-------- means 10 cpu for opa
-p 2  -e ./ioserver                           <--------- means 2 cpu for IO 

Then mpirun –f mpi.conf

IOM for output has been implemented in OPA, TOP, LIM3 and LIM3, it is tested in NVTK, it is currently not compatible with AGRIF (key_agrif) and not implemented in diaptr.

  • Nota

As a consequence of the code reorganisation, average of output fields have been shift of one time step, for instance with nwrite=5, nit000=1, nitend=10 : Nemo_v3.1:

Nemo_v3.1 :  
 *-----(*-----*-----*-----*-----*)-----(*-----*-----*-----*-----*)
Nemo_v3.2 : 
 (*-----*-----*-----*-----*)-----(*-----*-----*-----*-----*)-----*

Achievement of the coupled interface

VVL reactivation

  • Purpose
    • correct bugs and missing calls for variable volume
    • revisit free-surface time-splitting algorithm to reach stability and satisfying results
    • have vvl option available for all type of coordinates (z, zps, s)

This part has induced a full restructuration of the code (even when not using vvl option) , since we made the choice to compute the ssh at the beginning of each time step (from continuity equation), instead of deducing it immediately from barotropic contribution as it was done before (dynspg_* routines). As a consequence, ssh should not be corrected in the rest of the code, which is still a bit doubtful for obc and agrif cases (key_obc or key_agrif) and to be checked for 3.3.

  • In practice
    • The repartition of ssh is now done on the whole water column, so key_sigma_vll has been suppressed.
    • Reference coordinate is referred as e3t_0 for instance, and pre-processing (in domzgr_substitute.h90) is used to define before, now, after scale factors, for instance :

# define fsdept_n(i,j,k) (fsdept_0(i,j,k)*(1+sshn(i,j)*mut(i,j,k)))

  • we introduced, time varying scale factors(_b,_n_a). Without vvl, we have obviously : fse3t_a = fse3t_n = fse3t_b = fse3t

When using vvl, it would be more consistent to use exactly corresponding scale factors (for instance before for diffusion). It has been done only vertical diffusion for tracers at this time. Time stepping routines (tranxt and dynnxt) have been modified to work either on vertically averaged values in vvl case. Regarding the time-splitting algorithm : - for stability reason, we came back to an average on 2 time steps (2*nn_baro) - because of vvl, we are now computing velocities instead of transport. BDY routines have been changed in consequence, OBC not. It has been tested with bdy (zps*) and on global ORCA025 configuration. VVL restartability is not ensured.


Minor bug fixes / enhancements

Ticket in bold includes some severe BUGs that have to be corrected in the release v3.2.

  • AGRIF
#443Coordinates cannot be read under AGRIF
#415runtime array allocation error with AGRIF
#341Interpolation on the fly with AGRIFRachid ?
#261AGRIF syntax problem with allocation of FLD arrays
#108AGRIF with ice
#107AGRIF with time-splitting
#106AGRIF with time-splitting
#73tradmp.F90 never called when using AGRIF ...
  • ENVironment
#409ins_make [ -t "target host" ]Done
#407alias and cshDone
#396Add a first guess of ORCA2_LIM_PISCES configuration in libIGCM
#240setting up and running NVTK on new targetDoneNVTK
  • LIM2
#194LIM-2 damping optiontrue identified bug. No real pressure to solve it urgentlylimdmp_2.F90 ==> v3.3 or later
#364wrong sign in lbc_lnk for gradients in limadv.F90Done
  • LIM3
#464Hard coded number of ice categoriestrue identified bug. No simple solution.limdia.F90 ==> v3.3 or later
#439Array index out of bounds in limsbc.F90Done
#400LIM3 : useless akappa and alambd arrays ?We agree, a cleaning of useless array is required. Should be done latter, when introducing EVP rheology in LIM2.==> v3.3
#364wrong sign in lbc_lnk for gradients in limadv.F90Done
#354ORCA-LIM3 MPI problem?Apparently, it was a user error. The ticket can be closed. Rachid, do you agree?invalid
#243simplification of computation of snow-ice energy in limthd_entI (Gurvan) don't understand this ticket. Ask Martin for further info.postponed form v3.3
#195LIM-3 a damping option should be added for regional configurationspending issue, can be included in Brice timetable==> v3.3 or later
  • OFF
#320update modules of the off-lineChristian, off-line should be OK for v3.2, no?OFF
  • OPA

Physics

#462Bug in zdftmx when using zdfddmchange the order of the call in step. Donestep.F90
#459RGB light penetration + ocean color: paper documentationGurvanDOC
#458tidal mixing: paper documentationGurvanDOC
#457tidal mixing: optimisationDonezdftmx.F90
#435wrong index in ldfslp.F90Doneldfslp.F90
#371Mixed laplacian and bilaplacian operatorsLap-bilap option, code provided and checked through the NVTK. Gurvan for code review: as provided it does not work, waiting for a reply from ed.blockley. probably not in v3.2dynldf.F90 , ldfdyn.F90 , ldfdyn_oce.F90
#361Proposal for diaptrRequired for IPPC runs, routines provided. Claude + Gurvan ?diaptr.F90 + namelist
#239diaptr code duplication / deficienciesclearly a problem to be solved... who? Claude/Sebastian??diaptr.F90
#356eosbn2: should we update the equation of state ?This should be added in the roadmap 2010 together with an option for P instead of z in eos==> v3.4 or later
#331No bottom friction if mbathy=2to be solved together with #233. See Andrew work
#233bottom friction issue...true identified bug. A clean solution is under development by Andrew. To be done in v3.2

Vertical coordinate

#434mesh_zgr inconsistency when using zpsdonedomwri.F90
#381bugs in "subroutine zgr_sco"to be checkeddomzgr.F90
#366sbot_min not properly used in hybrid coordinate option (zgr_sco module in domzgr)small true identified bug. easy to fix. To be done in v3.2 (Gurvan)domzgr.F90

VVL re-activation

#382bugs in "subroutine dom_vvl" fse3w computationAlready corrected see domzgr_substitute.h90ticket to be closed
#337partial cells and vvlThis contains an improvement to the hydrostatic pressure gradient correction in vvl case. To be checked by Rachid + Gurvan. In the trunk, we are currently using the sco correction which works==> v3.2 or v3.3
#232Optimization of dynspg_ts with key_vvlAlready included in the trunk (see dynspg_ts).ticket to be closed
#329vvl and time splitting2 points here: (1) correct thickness timestep : should be OK in Rachid's latest version of dynspg_ts ; to be checked in v3.2. (2) removal of asselin filter on the barotropic part in dynnxt.F90 : I (Gurvan) don't think it is a good idea.dynspg_ts.F90
#328vertical velocity and key_vvlWe agree. In the current trunk, the call to wzv (now ssh_wzv) is done at the begining of step. The vertical velocity has to be removed from the restart file To be done in v3.2 Rachid + Gurvanrestart.F90
#209Bug in domvvl : wrong e3u e3v and e3f scale factors + change name of mut to ee_tpartly solved in the trunk (see domvvl). The suppression of 3D arrays (mut, muu, muv, muf) does not work, we don't understand why (it will not be done in v3.2). The change in trazdf_imp and exp are still a pending issue to be solved in v3.2 (Rachid + Gurvan)trazdf_imp.F90 , trazdf_exp.F90

Surface module (SBC)

#436Implementation of CICE and UM coupling code as part of S0.1 and S0.3On-going work. Waiting for Exeter input==> v3.3 or later
#406optimize sbcssr.F90 routineDonesbcssr.F90

Bugs

#433 #363potential non initialized value in trazdf_impDone
#424missing lbc_lnk in sbcmodSebastian answer properly to this ticket. Don't think we need to do somethinginvalid
#419Bug in dynvor_een when flux form is activatedadd to CALL lbc_lnk( zwz, 'F', 1. ), Donedynvor.F90
#403Calculation of avmb in zdf_tke_initDone
#377SBC fldread additionsImprovment to SBC, code provided and checked through the NVTK. Sebastian for code review?fldread.F90 , iom.F90 , bdydta.F90 , sbcblk_clio.F90 , sbcflx.F90 , sbcice_if.F90 , sbcrnf.F90 , sbc_ssr.F90 , domain.F90 , in_out_manager.F90
#375fldread and Interpolation on the FlySeem easy to do, waiting for steven feedback...fldread.F90
#365wrong scale factors used in bdyvolDone
#368bug in calendar of lim and top outputsdone for lim. status of top? Christian?to be closed if Christian is ok
#342 #468wrong computation of the heat containdone + associated with a full review for mld diag...done
#332Mistake in comment in nam_dynvorInvalid
#244tradmpA priori, this was done intentionally by Gurvan. Gurvan check it again||no action?
#129Use of F95 signed zero causes incorrect resultsTrue identified problem. Specific compiler option added to circumvent it. A cleaner solution is to remove all SIGN instruction from the code, especially in sea-ice.==> v3.3 or later
#127Arrays go out of boundstrue identified bug. rather easy to fix but using a other technique than the one proposed in the ticket. To be done in v3.2 (for diafwb.F90, see gm's comments and routines attached to the ticket. There is 2 other bug corrected in diafwb. For cla.F90, there is several other bugs, so at the end I completely re-wrote the module, merging cla, cla_div and cla_dynspg. See gm's comments and routines attached to the ticket. )cla.F90 , diafwb.F90 suppress cla_div, cla_dynspg

IO issues

#437Distribution of "CALL iom_put" in NEMO-TOPBrice, Christian. On going work in the trunk. To be achieved in v3.2whole NEMO
#410PGF90-F-0004-Unable to open MODULE file netcdf.mod (fliocom.f90: 5)???
#405bug in diawri_dimg.h90Done
#374Addition of clobber and chunksize when opening NetCDF filesDone. Wait for ioipsl improvement to extent modifications to all NetCDF files created in the code, and really close the ticketwait for ioipsl
#372problem with netcdf syncingInvalid bug report Closedclosed
#359cleaning of calendar variablesSebastian + Gurvan action?phycst.F90 and others...
#343no more runoff in outputs...keep runoff in the output only with IOM outputs, no more with standard one. Donedone in changeset:1482
#314wrong name of trends output file : key_trdmld, key_trmld_trcChristian : Done for trdmld_trc.F90 ; for trdmld, we need to re-organize the initialization part==> v3.3
#296obcdta_bt out of dateTo be solved together with major rewriting of OBC by MERCATOR. Rachid, you agree?==> v3.3 or later
#237Undefined behaviour writing to ocean.output from multiple pesdonedone
#201simplified definition of the model time stepMinor improvement. in v3.2 only if we have enough time==> v3.2 or later

Misc. staff

#447IOF and cutting along latitudewaiting for steven feedback...
#445Performance of NEMO 3.1idem as for #447
#200dtatem & dtasal : cleaning - move the call from step to tradmp - merge in 1 moduleThis should be added in the roadmap 2010 together with the system consolidation / simplification==> v3.4 or later
#379clean lib_mppDonelib_mpp.F90, lbcnfd .F90 , lbclnk.F90
Last modified 14 years ago Last modified on 2009-11-27T10:46:24+01:00