| 20 | Purposes : |
| 21 | - add flexibility for outputs |
| 22 | - eventually use dedicated processors for output |
| 23 | Using histwrite is still the default behaviour for safety. Nevertheless, iom_put can be activated with the cpp_key key_iomput and should become the default (only) in the future. |
| 24 | Iom_put allows to distribute and add desired output fields everywhere in the code without specific declaration in diawri : |
| 25 | Ex : CALL iom_put( "ssh" , sshn ) in sshwzv |
| 26 | It is based on : |
| 27 | - a XML-F90 parser, svn co http://forge.ipsl.jussieu.fr/ioserver/svn/XMLF90 |
| 28 | - an additional library svn co http://forge.ipsl.jussieu.fr/ioserver/svn/XMLIO_SERVER |
| 29 | 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. |
| 30 | Actually two levels of functionalities are available : |
| 31 | 1- Just use iom_put to output the variable easily |
| 32 | 2- Use in addition dedicated processors for output (server mode), then an additional executable is needed |
| 33 | At execution time, when key_iomput has been activated, two additional files are required (and provided with the standard configuration): |
| 34 | - xmlio_server.def : a namelist to define if we are in server mode or not |
| 35 | - iodef.xml : an xml file to be completed with precision on the variable called by iom_put in nemo (name for output, frequency, file) |
| 36 | In server mode only, user has to define a mpi configuration file (for instance mpi.conf) looking like: |
| 37 | -p 10 -e ./opa <-------- means 10 cpu for opa |
| 38 | -p 2-e ./ioserver <--------- means 2 cpu for IO |
| 39 | Then mpirun –f mpi.conf |
| 40 | 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. |
| 41 | |
| 42 | 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 : |
| 43 | Nemo_v3.1: |
| 44 | *-----*-----*-----*-----*-----*-----*-----*-----*-----*-----* |
| 45 | |
| 46 | |
| 47 | Nemo_v3.2 : |
| 48 | *-----*-----*-----*-----*-----*-----*-----*-----*-----*-----* |
| 49 | |
| 50 | |
| 51 | |
| 55 | |
| 56 | correct bugs and missing calls for variable volume |
| 57 | revisit free-surface time-splitting algorithm to reach stability and satisfying results |
| 58 | have vvl option available for all type of coordinates (z, zps, s) |
| 59 | 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 a bit doubtful for obc and agrif cases (key_obc or key_agrif). |
| 60 | |
| 61 | Repartition 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 : |
| 62 | |
| 63 | # define fsdept_n(i,j,k) (fsdept_0(i,j,k)*(1+sshn(i,j)*mut(i,j,k))) |
| 64 | For use of vvl, we introduced, time varying scale factors(_b,_n_a). Without vvl, we have obviously : fse3t_a = fse3t_n = fse3t_b = fse3t |
| 65 | 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. |
| 66 | Time stepping routines (tranxt and dynnxt) have been modified to work either on vertically averaged values in vvl case. |
| 67 | Regarding the time-splitting algorithm : |
| 68 | - for stability reason, we came back to an average on 2 time steps (2*nn_baro) |
| 69 | - because of vvl, we are now computing velocities instead of transport. BDY routines have been changed in consequence, OBC not. |
| 70 | It has been tested with bdy (zps*) and on global ORCA025 configuration. |
| 71 | VVL restartability is not ensured. |
| 72 | |