[13781] | 1 | *Station Air-Sea Fluxes* demonstration case |
---|
| 2 | =========================================== |
---|
| 3 | |
---|
| 4 | Last successful test done with NEMOGCM trunk: ``r13263`` |
---|
| 5 | |
---|
| 6 | Author: Laurent Brodeau, 2020 |
---|
| 7 | |
---|
| 8 | NOTE: if working with the trunk of NEMO, you are strongly advised to use |
---|
| 9 | the same test-case but on the ``NEMO-examples`` GitHub depo: |
---|
| 10 | `https://github.com/NEMO-ocean/NEMO-examples/tree/master/STATION_ASF <https://github.com/NEMO-ocean/NEMO-examples/tree/master/STATION_ASF>`__ |
---|
| 11 | |
---|
| 12 | Objectives |
---|
| 13 | ---------- |
---|
| 14 | |
---|
| 15 | ``STATION_ASF`` is a demonstration test-case that mimics a (static) |
---|
| 16 | in-situ station (buoy, platform) dedicated to the estimation of surface |
---|
| 17 | air-sea fluxes by means of *widely-measured* (bulk) meteorological |
---|
| 18 | surface parameters. |
---|
| 19 | |
---|
| 20 | ``STATION_ASF`` has been constructed by merging the *single column* and |
---|
| 21 | the *standalone surface module* configurations of NEMO. In short, it can |
---|
| 22 | be defined as "SAS meets C1D". As such, the spatial domain of |
---|
| 23 | ``STATION_ASF`` is punctual (1D, well actually 3 x 3 as in C1D). |
---|
| 24 | |
---|
| 25 | ``STATION_ASF`` is therefore a versatile tool, and extremely lightweight |
---|
| 26 | in terms of computing requirements, to test the different bulk |
---|
| 27 | algorithms and cool-skin/warm-layer parameterization options included in |
---|
| 28 | NEMO. |
---|
| 29 | |
---|
| 30 | As input ``STATION_ASF`` will require the traditional *bulk* sea surface |
---|
| 31 | parameters: |
---|
| 32 | |
---|
| 33 | - Bulk sea surface temperature (SST) at *zSST* meters below the surface |
---|
| 34 | - Surface current vector |
---|
| 35 | - Sea surface salinity |
---|
| 36 | |
---|
| 37 | as well as the usual surface atmospheric state: |
---|
| 38 | |
---|
| 39 | - air temperature at *zt* meters above the surface |
---|
| 40 | - air humidity at *zt* meters above the surface (specific humidity or |
---|
| 41 | relative humidity or dew-point temperature) |
---|
| 42 | - wind speed vector at *zu* meters above the surface |
---|
| 43 | - Sea level atmospheric pressure (SLP) |
---|
| 44 | - Downwelling solar radiation |
---|
| 45 | - Downwelling longwave radiation |
---|
| 46 | |
---|
| 47 | Example of diagnostics from ``STATION_ASF`` |
---|
| 48 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
| 49 | |
---|
| 50 | (Generated with script ``./EXPREF/plot_station_asf_simple.py``) |
---|
| 51 | |
---|
| 52 | |plot| |
---|
| 53 | |
---|
| 54 | |plot| |
---|
| 55 | |
---|
| 56 | |plot| |
---|
| 57 | |
---|
| 58 | |plot| |
---|
| 59 | |
---|
| 60 | Physical description |
---|
| 61 | -------------------- |
---|
| 62 | |
---|
| 63 | Important namelist parameters specific to STATION_ASF |
---|
| 64 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
---|
| 65 | |
---|
| 66 | - ``rn_dept1@namusr_def:`` depth (m) at which the prescribed SST is |
---|
| 67 | taken (*i.e.* depth of first T-point); important due to impact on |
---|
| 68 | warm-layer estimate, the deeper, the more pronounced! |
---|
| 69 | |
---|
| 70 | - ``rn_lat1d,rn_lon1d@namc1d:`` fixed coordinates of the location of |
---|
| 71 | the station (buoy, platform, etc). |
---|
| 72 | |
---|
| 73 | - ``namsbc_blk:`` to be filled carefully, just as for "C1D", the |
---|
| 74 | prescribed surface ATMOSPHERIC state (files) are time series of shape |
---|
| 75 | 3x3 in space |
---|
| 76 | |
---|
| 77 | - ``namsbc_sas:`` to be filled carefully, just as for "C1D", the |
---|
| 78 | prescribed surface OCEAN state (files) are time series of shape 3x3 |
---|
| 79 | in space |
---|
| 80 | |
---|
| 81 | Input files to test STATION ASF |
---|
| 82 | ------------------------------- |
---|
| 83 | |
---|
| 84 | One full year (2018) of processed hourly data from the PAPA station |
---|
| 85 | (buoy) is found into the ``input_data`` directory. These three files are |
---|
| 86 | everything you need to play with the set of *namelists* provided for |
---|
| 87 | this test-case. |
---|
| 88 | |
---|
| 89 | - ``Station_PAPA_50N-145W_atm_hourly_y2018.nc`` → contains hourly |
---|
| 90 | surface atmospheric state |
---|
| 91 | - ``Station_PAPA_50N-145W_precip_daily_y2018.nc`` → contains daily |
---|
| 92 | precipitation |
---|
| 93 | - ``Station_PAPA_50N-145W_oce_hourly_y2018.nc`` → contains hourly sea |
---|
| 94 | surface state |
---|
| 95 | |
---|
| 96 | For station PAPA (50.1 N, 144.9 W), air temperature and humidity are |
---|
| 97 | measured at 2.5 m, the wind speed at 4 m, and the SST at 1 m below the |
---|
| 98 | surface, hence the following namelist parameters are given: |
---|
| 99 | |
---|
| 100 | - ``&namusr_def`` |
---|
| 101 | |
---|
| 102 | - ``rn_dept1 = 1.`` |
---|
| 103 | |
---|
| 104 | - ``&namc1d`` |
---|
| 105 | |
---|
| 106 | - ``rn_lat1d = 50.1`` |
---|
| 107 | - ``rn_lon1d = 215.1`` |
---|
| 108 | |
---|
| 109 | - ``&namsbc_blk`` |
---|
| 110 | |
---|
| 111 | - ``rn_zqt = 2.5`` |
---|
| 112 | - ``rn_zu = 4.`` |
---|
| 113 | |
---|
| 114 | Testing the sanity of the SBCBLK (bulk atmospheric forcing) interface of NEMO |
---|
| 115 | ----------------------------------------------------------------------------- |
---|
| 116 | |
---|
| 117 | ``STATION_ASF`` can be used to perform a sanity test of the SBCBLK |
---|
| 118 | interface of NEMO. It will test all the bulk-parameterization algorithms |
---|
| 119 | using an idealized forcing that includes a wide range of *SSX / surface |
---|
| 120 | atmospheric state* conditions to detect potential error / |
---|
| 121 | inconsitencies. Both a short report and boolean output: *passed* or |
---|
| 122 | *failed* is provided as an output. |
---|
| 123 | |
---|
| 124 | First compile the ``STATION_ASF`` test-case as follows (compile with |
---|
| 125 | xios-2.5 support → check your ARCH file): |
---|
| 126 | |
---|
| 127 | ``./makenemo -a STATION_ASF -m <your_arch> -n STATION_ASF2 -j 4`` |
---|
| 128 | |
---|
| 129 | (successfull compilation generates |
---|
| 130 | ``tests/STATION_ASF2/BLD/bin/nemo.exe`` |
---|
| 131 | |
---|
| 132 | Move to: ``tests/STATION_ASF/EXPREF/`` |
---|
| 133 | |
---|
| 134 | There, in script ``sanity_check_SBCBLK.sh``, double check that the |
---|
| 135 | variables given a value in the first lines are consistent with your |
---|
| 136 | setup (it should). |
---|
| 137 | |
---|
| 138 | Launch the script: |
---|
| 139 | |
---|
| 140 | :: |
---|
| 141 | |
---|
| 142 | $ ./sanity_check_SBCBLK.sh |
---|
| 143 | |
---|
| 144 | The report is both interactively shown in the standard output and |
---|
| 145 | spwaned in the report file: |
---|
| 146 | |
---|
| 147 | - ``SBCBLK.success`` the test passed :) |
---|
| 148 | - ``SBCBLK.fail`` the test failed :( |
---|
| 149 | |
---|
| 150 | In case of failure, read the rapport to know which algorithm/computed |
---|
| 151 | variables did not pass the test... You should also re-run the script |
---|
| 152 | ``sanity_check_SBCBLK.sh`` with the "more" argument: |
---|
| 153 | |
---|
| 154 | :: |
---|
| 155 | |
---|
| 156 | $ ./sanity_check_SBCBLK.sh more |
---|
| 157 | |
---|
| 158 | This will generate more output such as figure of time series for the |
---|
| 159 | tested variables. |
---|
| 160 | |
---|
| 161 | Dependencies |
---|
| 162 | ~~~~~~~~~~~~ |
---|
| 163 | |
---|
| 164 | In order for the python script ``analyze_output.py`` to work, you need |
---|
| 165 | ``Python 3`` with the following modules: |
---|
| 166 | |
---|
| 167 | - numpy |
---|
| 168 | - netCDF4 |
---|
| 169 | - (matplotlib) |
---|
| 170 | |
---|
| 171 | Playing with STATION_ASF |
---|
| 172 | ------------------------ |
---|
| 173 | |
---|
| 174 | First compile the test-case as follows (compile with xios-2.5 support → |
---|
| 175 | check your ARCH file): |
---|
| 176 | |
---|
| 177 | ``./makenemo -a STATION_ASF -m <your_arch> -n STATION_ASF2 -j 4`` |
---|
| 178 | |
---|
| 179 | Move to: ``tests/STATION_ASF/EXPREF/`` |
---|
| 180 | |
---|
| 181 | to launch 3 simulations (one for each bulk parameterization available). |
---|
| 182 | You need to adapt the following variable to your environment in the |
---|
| 183 | script: |
---|
| 184 | |
---|
| 185 | - ``NEMO_ROOT_DIR`` : NEMO root directory where to fetch compiled |
---|
| 186 | STATION_ASF ``nemo.exe`` + setup (such as |
---|
| 187 | ``${NEMO_ROOT_DIR}/tests/STATION_ASF``) |
---|
| 188 | |
---|
| 189 | - ``PROD_DIR`` : Directory where to run the simulation |
---|
| 190 | |
---|
| 191 | - ``DATA_IN_DIR`` : Directory containing sea-surface + atmospheric |
---|
| 192 | forcings (found here in ``input_data/``) |
---|
| 193 | |
---|
| 194 | If everything goes according to plan, ``launch_sasf.sh`` should have |
---|
| 195 | generated the 3 following sets of output files into |
---|
| 196 | ``${PROD_DIR}/output``: |
---|
| 197 | |
---|
| 198 | :: |
---|
| 199 | |
---|
| 200 | STATION_ASF-COARE3p6_1h_20180101_20181231_gridT.nc |
---|
| 201 | STATION_ASF-COARE3p6_1h_20180101_20181231_gridU.nc |
---|
| 202 | STATION_ASF-COARE3p6_1h_20180101_20181231_gridV.nc |
---|
| 203 | STATION_ASF-ECMWF_1h_20180101_20181231_gridT.nc |
---|
| 204 | STATION_ASF-ECMWF_1h_20180101_20181231_gridU.nc |
---|
| 205 | STATION_ASF-ECMWF_1h_20180101_20181231_gridV.nc |
---|
| 206 | STATION_ASF-NCAR_1h_20180101_20181231_gridT.nc |
---|
| 207 | STATION_ASF-NCAR_1h_20180101_20181231_gridU.nc |
---|
| 208 | STATION_ASF-NCAR_1h_20180101_20181231_gridV.nc |
---|
| 209 | |
---|
| 210 | -------------- |
---|
| 211 | |
---|
| 212 | */Laurent, July 2020.* |
---|
| 213 | |
---|
| 214 | .. |plot| image:: https://github.com/NEMO-ocean/NEMO-examples/blob/master/STATION_ASF/figs/01_temperatures_ECMWF.svg |
---|
| 215 | .. |plot| image:: https://github.com/NEMO-ocean/NEMO-examples/blob/master/STATION_ASF/figs/Cd.svg |
---|
| 216 | .. |plot| image:: https://github.com/NEMO-ocean/NEMO-examples/blob/master/STATION_ASF/figs/dT_skin.svg |
---|
| 217 | .. |plot| image:: https://github.com/NEMO-ocean/NEMO-examples/blob/master/STATION_ASF/figs/Qlat.svg |
---|
| 218 | |
---|