119 lines
4.9 KiB
ReStructuredText
Executable File
119 lines
4.9 KiB
ReStructuredText
Executable File
============
|
|
REBUILD_NEMO
|
|
============
|
|
REBUILD_NEMO is a tool to rebuild NEMO output files from multiple processors (mesh_mask, restart or XIOS output files) into one file.
|
|
|
|
Description
|
|
===========
|
|
|
|
NEMO rebuild has the following features:
|
|
* dynamically works out what variables require rebuilding
|
|
* does not copy subdomain halo regions
|
|
* works for 1,2,3 and 4d arrays or types for all valid NetCDF types
|
|
* utilises OMP shared memory parallelisation where applicable
|
|
* time 'slicing' for lower memory use (only for 4D vars with unlimited dimension)
|
|
|
|
The code reads the filestem and number of subdomains from the namelist file nam_rebuild.
|
|
| The 1st subdomain file is used to determine the dimensions and variables in all the input files.
|
|
It is also used to find which dimensions (and hence which variables) require rebuilding
|
|
as well as information about the global domain.
|
|
| It then opens all the input files (unbuffered) and creates an array of netcdf identifiers
|
|
before looping through all the variables and updating the rebuilt output file (either by direct
|
|
copying or looping over the number of domains and rebuilding as appropriate).
|
|
| The code looks more complicated than it is because it has lots of case statements to deal with all
|
|
the various NetCDF data types and with various data dimensions (up to 4d).
|
|
| Diagnostic output is written to numout (default 6 - stdout)
|
|
and errors are written to numerr (default 0 - stderr).
|
|
| If time slicing is specified the code will use less memory but take a little longer.
|
|
It does this by breaking down the 4D input variables over their 4th dimension
|
|
(generally time) by way of a while loop.
|
|
|
|
How to compile it
|
|
=================
|
|
REBUILD_NEMO is compiled in the same manner as all the other tools.
|
|
The compilation script is maketools and the option are very similar to makenemo.
|
|
|
|
Here an example of how to compile REBUILD_NEMO on the MetOffice XC40 HPC:
|
|
|
|
.. code-block:: console
|
|
|
|
$ ./maketools -n REBUILD_NEMO -m XC40_METO
|
|
|
|
Usage
|
|
=====
|
|
There is 2 manners to use REBUILD_NEMO:
|
|
|
|
* **rebuild_nemo shell script**
|
|
|
|
If the rebuild_nemo shell script it used, the namelist is filled automatically depending on the on-line arguments.
|
|
|
|
.. code-block:: console
|
|
|
|
$ ./rebuild_nemo
|
|
|
|
NEMO Rebuild
|
|
************
|
|
|
|
usage: rebuild_nemo [-l -p -s -m -n -r -d -x -y -z -t -c] filebase ndomain [rebuild dimensions]
|
|
|
|
flags: -l arch submit to compute node
|
|
-p num use num threads
|
|
-s num split 4D vars into time slice of size num
|
|
-m force masking of global arrays (zero if no mdi)
|
|
-n namelist full path to namelist file to be created (otherwise default nam_rebuild+_process_id is used)
|
|
-r memory Memory to request on compute node including units (Default = 10Gb)
|
|
|
|
key_netcdf4 only
|
|
-d deflate_level deflate level for output files
|
|
-x chunksize along x
|
|
-y chunksize along y
|
|
-z chunksize along z
|
|
-t chunksize along t
|
|
-c total size of the chunk cache
|
|
|
|
In case the option '-l arch' is used, a template for the batch script and parameter for job submission has to be provided in BATCH_TEMPLATES (param_arch and rebuild_nemo_batch_arch).
|
|
Exemple from the XC40_METO architecture can be found in the directory.
|
|
Some keywords (NTHREADS, MEMORY, INDIR, NAMELIST and NOPEN) from the template are replaced by the rebuild_nemo script.
|
|
|
|
* **rebuild_nemo.exe + namelist**
|
|
|
|
If rebuild_nemo.exe is used directly, a namelist has to be provided. Default name is nam_rebuild. A specific name can be provided as argument.
|
|
The minimal namelist required is (here example to rebuild a mesh_mask split in 36 files):
|
|
|
|
.. code-block:: console
|
|
|
|
&nam_rebuild
|
|
filebase='mesh_mask'
|
|
ndomain=36
|
|
/
|
|
|
|
Some option can be added (the value mentioned here are the default value):
|
|
|
|
.. code-block:: console
|
|
|
|
l_maskout=.false !(-m option: useful if input file comes from a run using land suppression)
|
|
nslicesize=0 !(-s option: 0 means no splitting in time slice)
|
|
deflate_level=0 !(-d option)
|
|
nc4_xchunk=206 !(-x option)
|
|
nc4_ychunk=135 !(-y option)
|
|
nc4_zchunk=1 !(-z option)
|
|
nc4_tchunk=1 !(-t option)
|
|
fchunksize=32000000 !(-c option)
|
|
|
|
Example
|
|
=======
|
|
|
|
Here is an example of usage of rebuild_nemo shelf script
|
|
(rebuild mesh_mask files on the XC40_METO computer with deflation level set to 1 and chunksize to (1,1,100,100)):
|
|
|
|
.. code-block:: console
|
|
|
|
$ rebuild_nemo -l XC40_METO -m -d 1 -x 100 -y 100 -z 1 -t 1 mesh_mask 36
|
|
|
|
output is mask using netcdf missing value (_Fillvalue attribute) or 0 if missing value not in the netcdf.
|
|
|
|
file mesh_mask, num_domains 36, num_threads 1
|
|
Submitting job to compute node
|
|
8510610.xcs00
|
|
$
|