1 | # *Station Air-Sea Fluxes* demonstration case |
---|
2 | |
---|
3 | Last successful test done with NEMOGCM trunk: `r13263` |
---|
4 | |
---|
5 | Author: Laurent Brodeau, 2020 |
---|
6 | |
---|
7 | NOTE: if working with the trunk of NEMO, you are strongly advised to use the same test-case but on the `NEMO-examples` GitHub depo: |
---|
8 | https://github.com/NEMO-ocean/NEMO-examples/tree/master/STATION_ASF |
---|
9 | |
---|
10 | ## Objectives |
---|
11 | |
---|
12 | ```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. |
---|
13 | |
---|
14 | ```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). |
---|
15 | |
---|
16 | ```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. |
---|
17 | |
---|
18 | As input ```STATION_ASF``` will require the traditional *bulk* sea surface parameters: |
---|
19 | |
---|
20 | - Bulk sea surface temperature (SST) at _z<sub>SST</sub>_ meters below the surface |
---|
21 | - Surface current vector |
---|
22 | - Sea surface salinity |
---|
23 | |
---|
24 | as well as the usual surface atmospheric state: |
---|
25 | |
---|
26 | - air temperature at _z<sub>t</sub>_ meters above the surface |
---|
27 | - air humidity at _z<sub>t</sub>_ meters above the surface (specific humidity or relative humidity or dew-point temperature) |
---|
28 | - wind speed vector at _z<sub>u</sub>_ meters above the surface |
---|
29 | - Sea level atmospheric pressure (SLP) |
---|
30 | - Downwelling solar radiation |
---|
31 | - Downwelling longwave radiation |
---|
32 | |
---|
33 | ### Example of diagnostics from `STATION_ASF` |
---|
34 | |
---|
35 | (Generated with script `./EXPREF/plot_station_asf_simple.py`) |
---|
36 | |
---|
37 | ![plot](https://github.com/NEMO-ocean/NEMO-examples/blob/master/STATION_ASF/figs/01_temperatures_ECMWF.svg) |
---|
38 | |
---|
39 | ![plot](https://github.com/NEMO-ocean/NEMO-examples/blob/master/STATION_ASF/figs/Cd.svg) |
---|
40 | |
---|
41 | ![plot](https://github.com/NEMO-ocean/NEMO-examples/blob/master/STATION_ASF/figs/dT_skin.svg) |
---|
42 | |
---|
43 | ![plot](https://github.com/NEMO-ocean/NEMO-examples/blob/master/STATION_ASF/figs/Qlat.svg) |
---|
44 | |
---|
45 | |
---|
46 | ## Physical description |
---|
47 | |
---|
48 | ### Important namelist parameters specific to STATION_ASF |
---|
49 | |
---|
50 | * ```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! |
---|
51 | |
---|
52 | * ```rn_lat1d,rn_lon1d@namc1d:``` fixed coordinates of the location of the station (buoy, platform, etc). |
---|
53 | |
---|
54 | * ```namsbc_blk:``` to be filled carefully, just as for "C1D", the prescribed surface ATMOSPHERIC state (files) are time series of shape 3x3 in space |
---|
55 | |
---|
56 | * ```namsbc_sas:``` to be filled carefully, just as for "C1D", the prescribed surface OCEAN state (files) are time series of shape 3x3 in space |
---|
57 | |
---|
58 | |
---|
59 | |
---|
60 | ## Input files to test STATION ASF |
---|
61 | |
---|
62 | One full year (2018) of processed hourly data from the PAPA station (buoy) is found into the `input_data` directory. |
---|
63 | These three files are everything you need to play with the set of *namelists* provided for this test-case. |
---|
64 | |
---|
65 | - ```Station_PAPA_50N-145W_atm_hourly_y2018.nc``` → contains hourly surface atmospheric state |
---|
66 | - ```Station_PAPA_50N-145W_precip_daily_y2018.nc``` → contains daily precipitation |
---|
67 | - ```Station_PAPA_50N-145W_oce_hourly_y2018.nc``` → contains hourly sea surface state |
---|
68 | |
---|
69 | For 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: |
---|
70 | |
---|
71 | - `&namusr_def` |
---|
72 | - ```rn_dept1 = 1. ``` |
---|
73 | - `&namc1d` |
---|
74 | - ```rn_lat1d = 50.1 ``` |
---|
75 | - ```rn_lon1d = 215.1``` |
---|
76 | - `&namsbc_blk` |
---|
77 | - ```rn_zqt = 2.5``` |
---|
78 | - ```rn_zu = 4.``` |
---|
79 | |
---|
80 | |
---|
81 | |
---|
82 | ## Testing the sanity of the SBCBLK (bulk atmospheric forcing) interface of NEMO |
---|
83 | |
---|
84 | `STATION_ASF` can be used to perform a sanity test of the SBCBLK interface of |
---|
85 | NEMO. It will test all the bulk-parameterization algorithms using an idealized |
---|
86 | forcing that includes a wide range of *SSX / surface atmospheric state* |
---|
87 | conditions to detect potential error / inconsitencies. Both a short report and |
---|
88 | boolean output: *passed* or *failed* is provided as an output. |
---|
89 | |
---|
90 | First compile the `STATION_ASF` test-case as follows (compile with xios-2.5 support → check your ARCH file): |
---|
91 | |
---|
92 | ```./makenemo -a STATION_ASF -m <your_arch> -n STATION_ASF2 -j 4``` |
---|
93 | |
---|
94 | (successfull compilation generates ```tests/STATION_ASF2/BLD/bin/nemo.exe``` |
---|
95 | |
---|
96 | Move to: ```tests/STATION_ASF/EXPREF/``` |
---|
97 | |
---|
98 | There, in script ``sbcblk_sanity_check.sh``, double check that the variables given a value in the first lines are consistent with your setup (it should). |
---|
99 | |
---|
100 | Launch the script: |
---|
101 | |
---|
102 | $ ./sbcblk_sanity_check.sh |
---|
103 | |
---|
104 | |
---|
105 | The report is both interactively shown in the standard output and spwaned in the report file: |
---|
106 | |
---|
107 | - `SBCBLK.success` the test passed :) |
---|
108 | - `SBCBLK.fail` the test failed :( |
---|
109 | |
---|
110 | In case of failure, read the rapport to know which algorithm/computed variables did not pass the test... You should also re-run the script ``sbcblk_sanity_check.sh`` with the "more" argument: |
---|
111 | |
---|
112 | $ ./sbcblk_sanity_check.sh more |
---|
113 | |
---|
114 | This will generate more output such as figure of time series for the tested variables. |
---|
115 | |
---|
116 | ### Dependencies |
---|
117 | |
---|
118 | In order for the python script `analyze_output.py` to work, you need `Python 3` with the following modules: |
---|
119 | - numpy |
---|
120 | - netCDF4 |
---|
121 | - (matplotlib) |
---|
122 | |
---|
123 | |
---|
124 | |
---|
125 | |
---|
126 | |
---|
127 | |
---|
128 | ## Playing with STATION_ASF |
---|
129 | |
---|
130 | First compile the test-case as follows (compile with xios-2.5 support → check your ARCH file): |
---|
131 | |
---|
132 | ```./makenemo -a STATION_ASF -m <your_arch> -n STATION_ASF2 -j 4``` |
---|
133 | |
---|
134 | Move to: ```tests/STATION_ASF/EXPREF/``` |
---|
135 | |
---|
136 | |
---|
137 | |
---|
138 | |
---|
139 | to launch 3 simulations (one for each bulk parameterization available). You need to adapt the following variable to your environment in the script: |
---|
140 | |
---|
141 | - ```NEMO_ROOT_DIR``` : NEMO root directory where to fetch compiled STATION_ASF ```nemo.exe``` + setup (such as ```${NEMO_ROOT_DIR}/tests/STATION_ASF```) |
---|
142 | |
---|
143 | - ```PROD_DIR``` : Directory where to run the simulation |
---|
144 | |
---|
145 | - ```DATA_IN_DIR``` : Directory containing sea-surface + atmospheric forcings (found here in ```input_data/```) |
---|
146 | |
---|
147 | If everything goes according to plan, ``launch_sasf.sh`` should have generated the 3 following sets of output files into `${PROD_DIR}/output`: |
---|
148 | |
---|
149 | STATION_ASF-COARE3p6_1h_20180101_20181231_gridT.nc |
---|
150 | STATION_ASF-COARE3p6_1h_20180101_20181231_gridU.nc |
---|
151 | STATION_ASF-COARE3p6_1h_20180101_20181231_gridV.nc |
---|
152 | STATION_ASF-ECMWF_1h_20180101_20181231_gridT.nc |
---|
153 | STATION_ASF-ECMWF_1h_20180101_20181231_gridU.nc |
---|
154 | STATION_ASF-ECMWF_1h_20180101_20181231_gridV.nc |
---|
155 | STATION_ASF-NCAR_1h_20180101_20181231_gridT.nc |
---|
156 | STATION_ASF-NCAR_1h_20180101_20181231_gridU.nc |
---|
157 | STATION_ASF-NCAR_1h_20180101_20181231_gridV.nc |
---|
158 | |
---|
159 | --- |
---|
160 | |
---|
161 | */Laurent, July 2020.* |
---|
162 | |
---|