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.
README.md in NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/tests/STATION_ASF – NEMO

source: NEMO/branches/2020/dev_r13648_ASINTER-04_laurent_bulk_ice/tests/STATION_ASF/README.md @ 13868

Last change on this file since 13868 was 13868, checked in by laurent, 3 years ago

Updating README for test STATION_ASF...

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