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