From a3f27e2c94e2ca7bad83556aa4e18c95ae9cd382 Mon Sep 17 00:00:00 2001 From: Gennadi Lessin <58948398+glessin@users.noreply.github.com> Date: Thu, 20 Oct 2022 16:06:35 +0100 Subject: [PATCH] Adding nemo1d tutorial (#82) * Create nemo1d initialise 1D NEMO-FABM-ERSEM tutorial * Update nemo1d * Rename nemo1d to nemo1d.rst * Update nemo1d.rst * Update nemo1d.rst * added link to C1D_PAPA inputs * added compilation instructions * added further instructions * corrected steps numbering * Update nemo1d.rst * specify input file name * python plotting example * python code and text updates * Add C1D example plot via upload * Update nemo1d.rst * Update nemo1d.rst * Update index.rst * Update docs/source/tutorials/nemo1d.rst Co-authored-by: Michael Wathen * Update docs/source/tutorials/nemo1d.rst Co-authored-by: Michael Wathen * Update nemo1d.rst * Update docs/source/tutorials/nemo1d.rst Co-authored-by: Michael Wathen * Swap make command order * Do not load mpi module as it is a 1D case * refer to cfgs dir for NEMO configuration * Update docs/source/tutorials/nemo1d.rst Co-authored-by: Michael Wathen * link to fabm.yaml in C1D ERSEM configuration Co-authored-by: Michael Wathen Co-authored-by: Michael Wathen --- docs/images/C1D_PAPA_ERSEM_plots.png | Bin 0 -> 66938 bytes docs/source/tutorials/index.rst | 1 + docs/source/tutorials/nemo1d.rst | 121 +++++++++++++++++++++++++++ 3 files changed, 122 insertions(+) create mode 100644 docs/images/C1D_PAPA_ERSEM_plots.png create mode 100644 docs/source/tutorials/nemo1d.rst diff --git a/docs/images/C1D_PAPA_ERSEM_plots.png b/docs/images/C1D_PAPA_ERSEM_plots.png new file mode 100644 index 0000000000000000000000000000000000000000..9f122abf33651941996430f47fd20ddeea63dba5 GIT binary patch literal 66938 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 X$!VU#o34ut{H3j_w<$y2>eT-L0(x58 literal 0 HcmV?d00001 diff --git a/docs/source/tutorials/index.rst b/docs/source/tutorials/index.rst index 273d81e..9c0ef24 100644 --- a/docs/source/tutorials/index.rst +++ b/docs/source/tutorials/index.rst @@ -22,6 +22,7 @@ Here we describe several tutorials for the common use cases for ERSEM. gotm fvcom nemo + nemo1d .. _conda-install: diff --git a/docs/source/tutorials/nemo1d.rst b/docs/source/tutorials/nemo1d.rst new file mode 100644 index 0000000..fe201b6 --- /dev/null +++ b/docs/source/tutorials/nemo1d.rst @@ -0,0 +1,121 @@ + +.. _nemo: + +############################# +NEMO-ERSEM in a water column +############################# + +This tutorial demonstrates how to configure and run NEMO 1D (water-column) reference configuration C1D_PAPA with ERSEM biogeochemistry. This example is a demonstration of the concept, as it combines hydrodynamics of ocean station `PAPA `_ in the North Pacific Ocean with biogeochemistry of `L4 station `_ in the Western English Channel. Users are encouraged to modify this example to fit their own purposes. + +We recommend to read the brief description of the NEMO `C1D_PAPA configuration `__ before continuing with this tutorial. + +Step 1: Obtaining the code +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The input data contained in ``INPUTS_C1D_PAPA_v4.0.tar`` file must be obtained from `NEMO Reference configurations inputs `__ repository on Zenodo and unpacked into the working directory. + +NEMO4 code base with FABM support can be obtained in the corresponding `repository `__. The next step is to download `FABM `__ and `ERSEM `__. Finally, I/O server `XIOS-2.5 `__ must be downloaded and `installed `__. The compiled `xios_server.exe` executable should be copied into the working directory. + + +Step 2: Compiling the code +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +First, FABM must be compiled with ERSEM support, specifying nemo as a physical host model. The following commands can be run in a command line or wrapped into an executable file for easy recompilation at any future point: + + .. code-block:: bash + + old=$(pwd) #remember current (working) directory + mkdir -p ~/build/nemo-fabm-ersem # create directory for the build + cd ~/build/nemo-fabm-ersem # go to the build directory + cmake -DFABM_HOST=nemo -DFABM_ERSEM_BASE= -DCMAKE_INSTALL_PREFIX=~/local/fabm/nemo-fabm-ersem + #replace and with the corresponding directories the FABM and ERSEM code bases were downloaded to. + make -j4 + make install + cd $old # return to the working directory + +Thereafter, it is time to compile the NEMO executable. Users may refer to the `C1D_PAPA_FABM_ERSEM` configuration provided with the NEMO4.0-FABM in *cfgs* directory. The critical point is to specify all the necessary compilation keys in ``cpp_X.fcm`` file, i.e. key_c1d for compilation in 1D, and key_fabm for FABM support: + + .. code-block:: bash + + bld::tool::fppkeys key_c1d key_mpp_mpi key_iomput key_nosignedzero key_top key_fabm + +Next, compile the model by executing the following lines: + + .. code-block:: bash + + #!/bin/bash + + NEMO_BUILD_DIR=$ + RUN_DIR=$ + export XIOS_HOME=$ + export FABM_HOME=$HOME/local/fabm/nemo-fabm-ersem + # replace and with the path to the corresponding code bases and with the working directory. FABM_HOME in this example corresponds to the directory where FABM-ERSEM was installed. + + ARCH=GCC_PMPC # specify build architecture + + cd $NEMO_BUILD_DIR + ./makenemo -m $ARCH -r C1D_PAPA_FABM_ERSEM -n C1D_PAPA_FABM_ERSEM_BLD_SCRATCH | tee compile.log + mv $NEMO_BUILD_DIR/cfgs/C1D_PAPA_FABM_ERSEM_BLD_SCRATCH/BLD/bin/nemo.exe $RUN_DIR/ + echo "Done." + +The script above will compile the model and move the nemo executable into the working directory. + +Note that the architecture file might require some editing depending on the machine the model is compiled and run on. This will include compiler version, compiler flags and links to netCDF libraries. Here, we are pointing our compilation to arch-GCC_PMPC.fcm file (available within NEMO4.0-FABM repository) to compile on a typical PML workstation running Fedora Linux distribution and using a GNU Fortran compiler. + +Step 3: Getting ready to run the model +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Within the working directory, create a link to the desired model configuration file. For this tutorial, we will link fabm.yaml provided with the cfgs/C1D_PAPA_FABM_ERSEM configuration: + + .. code-block:: bash + + ln -sf /cgfs/C1D_PAPA_FABM_ERSEM/fabm.yaml.ersem_c1d fabm.yaml + # replace with the directory containing the ERSEM code. + +ERSEM requires some external inputs, which must be provided. The following lines have been appended to the fabm.yaml file we are using (for simplicity we are using constant parameter values here). Depending on the configuration, the list of required external inputs will vary. + + .. code-block:: bash + + pco2a: + model: horizontal_constant + parameters: + value: 400. + standard_name: mole_fraction_of_carbon_dioxide_in_air + ADY_0: + model: horizontal_constant + parameters: + value: 1.0e-10 + standard_name: gelbstoff_absorption_satellite + +Create links to, or copy namelist files from NEMO cfgs/C1D_PAPA_FABM_ERSEM folder into the working directory. Repeat the same procedure for *.xml files. file_def_nemo.xml defines which outputs will be saved, and at what frequency. For the purpose of this example, we will save a range of daily averaged pelagic and benthic state and diagnostic variables. This file can be used as a template to specify the desired range of model outputs. + +Step 4: Running the model and visualising the outputs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The model is deployed by running the executable file in the working directory: + +.. code-block:: bash + + ./nemo.exe + +As a result, several output files will be generated according to specifications in file_def_nemo.xml file. Additionally, NEMO will generate restart files. The outputs can be visualised using netCDF viewer (e.g. `ncview `_ or `PyNcView `_), or in Python using `xarray `_: + +.. code-block:: python + + import xarray as xr # import xarray + import matplotlib.pyplot as plt # import matplotlib + dat = xr.open_dataset('C1D_PAPA_1d_20100615_20110614_ptrc_T.nc') # open dataset with ERSEM variables + fig,axes=plt.subplots(nrows=2,figsize=(8,6)) # create figure with 2 subplots + dat.N3_n[:,0:35,1,1].plot(x='time_counter',yincrease=False,ax=axes[0]) # plot Hovmöller diagram for nitrate + dat.O2_o[:,0:35,1,1].plot(x='time_counter',yincrease=False,ax=axes[1]) # plot Hovmöller diagram for oxygen + axes[0].set_title('Modelled nitrate at PAPA') # add title + axes[1].set_title('Modelled dissolved oxygen at PAPA') # add another title + fig.tight_layout() # make it look nice + +In the example above we plot the variables over the entire modelled period, but only in the upper 35 vertical layers (from surface down to ~300 m depth). We also have to specify spatial dimensions of the output, as 1D configuration in NEMO actually has horizontal resolution of 3x3 grid points. + +The resulting figure should look like this: + +.. image:: ../../images/C1D_PAPA_ERSEM_plots.png + :alt: Example C1D_PAPA_FABM_ERSEM output + :width: 100.0%