1 |
dimitri |
1.3 |
c $Header: /u/gcmpack/MITgcm/pkg/exf/README,v 1.1.4.3 2003/02/12 07:55:53 dimitri Exp $ |
2 |
heimbach |
1.1 |
c |
3 |
|
|
c |
4 |
|
|
c ========================================= |
5 |
|
|
c External Forcing Package for the MITgcmUV |
6 |
|
|
c ========================================= |
7 |
|
|
c |
8 |
dimitri |
1.3 |
c Current Version: 0.2.2 (11-Jan-2003) |
9 |
heimbach |
1.1 |
c |
10 |
|
|
c |
11 |
|
|
c General Outline: |
12 |
|
|
c ---------------- |
13 |
|
|
c |
14 |
|
|
c This package contains routines to handle external forcing of the |
15 |
|
|
c MITgcmUV general circulation model. The following features are |
16 |
|
|
c available: |
17 |
|
|
c |
18 |
dimitri |
1.2 |
c (a) Reading-in atmospheric state and/or surface fluxes from files |
19 |
|
|
c and bi-linear interpolation in time. |
20 |
|
|
c |
21 |
|
|
c (b) Surface flux forcing by: |
22 |
heimbach |
1.1 |
c |
23 |
|
|
c surface heat flux --> qnet |
24 |
dimitri |
1.2 |
c short wave radiation --> qsw (optional) |
25 |
heimbach |
1.1 |
c fresh water flux --> empmr |
26 |
|
|
c zonal wind stress --> fu |
27 |
|
|
c meridional wind stress --> fv |
28 |
|
|
c |
29 |
|
|
c In order to get the appropriate fluxes users can either use |
30 |
dimitri |
1.2 |
c flux data directly or they can provide atmospheric state |
31 |
heimbach |
1.1 |
c (atmospheric temperature, atmospheric specific humidity, etc.) |
32 |
dimitri |
1.2 |
c which is subsequently used to estimate the fluxes by using |
33 |
heimbach |
1.1 |
c bulk parameterizations. |
34 |
|
|
c |
35 |
dimitri |
1.2 |
c (c) Relaxation to monthly climatologies of: |
36 |
heimbach |
1.1 |
c |
37 |
dimitri |
1.2 |
c sea surface temperature --> theta( k = 1 ) |
38 |
|
|
c sea surface salinity --> salt ( k = 1 ) |
39 |
heimbach |
1.1 |
c potential temperature --> theta( k = 1,nr ) |
40 |
|
|
c salinity --> salt ( k = 1,nr ) |
41 |
|
|
c |
42 |
dimitri |
1.2 |
c As of version 0.2.1, pkg/exf only supports the reading-in |
43 |
|
|
c of the relaxation fields. See TODO.txt for suggestions on |
44 |
|
|
c completing the relaxation package. |
45 |
heimbach |
1.1 |
c |
46 |
|
|
c |
47 |
dimitri |
1.2 |
c Interface to MITgcm release1: |
48 |
heimbach |
1.1 |
c ----------------------------- |
49 |
dimitri |
1.2 |
c |
50 |
|
|
c The following MITgcm files are affected by pkg/exf: |
51 |
|
|
c |
52 |
|
|
c CPPOPTIONS.h - Define INCLUDE_EXTERNAL_FORCING_PACKAGE |
53 |
|
|
c and append desired pkg/exf CPP options. |
54 |
|
|
c |
55 |
|
|
c packages_readparms.F - EXF_READPARMS |
56 |
|
|
c |
57 |
|
|
c packages_init_variables.F - EXF_INIT |
58 |
|
|
c |
59 |
|
|
c the_main_loop.F - Adjoint compiler directives. |
60 |
|
|
c |
61 |
|
|
c forward_step.F - EXF_GETFORCING |
62 |
heimbach |
1.1 |
c |
63 |
|
|
c |
64 |
|
|
c CPP options: |
65 |
|
|
c ------------ |
66 |
|
|
c |
67 |
dimitri |
1.3 |
c See EXF_CPPOPTIONS.h for definition of pkg/exf CPP options. |
68 |
heimbach |
1.1 |
c |
69 |
|
|
c |
70 |
|
|
c Data files: |
71 |
|
|
c ----------- |
72 |
|
|
c |
73 |
dimitri |
1.2 |
c data.exf :: variables related to surface fluxes |
74 |
|
|
c data.exf_clim :: variables for relaxation to climatological fields |
75 |
heimbach |
1.1 |
c |
76 |
dimitri |
1.3 |
c |
77 |
heimbach |
1.1 |
c Routines: |
78 |
|
|
c ---------- |
79 |
|
|
c |
80 |
|
|
c The package consists of two sets of routines. The first set is |
81 |
|
|
c related to surface fluxes, the second set allows one to include |
82 |
|
|
c relaxation to climatological fields. |
83 |
|
|
c |
84 |
dimitri |
1.3 |
c |
85 |
heimbach |
1.1 |
c Call trees: |
86 |
|
|
c ----------- |
87 |
|
|
c |
88 |
dimitri |
1.2 |
c exf_readparms |
89 |
|
|
c | |
90 |
|
|
c |---- exf_summary |
91 |
|
|
c |---- exf_clim_readparms |
92 |
|
|
c |---- exf_clim_summary |
93 |
|
|
c |
94 |
heimbach |
1.1 |
c |
95 |
|
|
c exf_Init |
96 |
|
|
c | |
97 |
dimitri |
1.2 |
c |---- exf_init_hflux |
98 |
|
|
c |---- exf_init_sflux |
99 |
|
|
c |---- exf_init_ustress |
100 |
|
|
c |---- exf_init_vstress |
101 |
|
|
c |---- exf_init_evap |
102 |
|
|
c |---- exf_init_runoff |
103 |
|
|
c |---- exf_init_atemp |
104 |
|
|
c |---- exf_init_aqh |
105 |
|
|
c |---- exf_init_lwflux |
106 |
|
|
c |---- exf_init_swflux |
107 |
|
|
c |---- exf_init_precip |
108 |
|
|
c |---- exf_init_uwind |
109 |
|
|
c |---- exf_init_vwind |
110 |
|
|
c |---- exf_clim_init |
111 |
heimbach |
1.1 |
c |
112 |
|
|
c |
113 |
|
|
c exf_GetForcing |
114 |
|
|
c | |
115 |
dimitri |
1.2 |
c |---- exf_getclim |
116 |
|
|
c |---- exf_getffields |
117 |
heimbach |
1.1 |
c |---- exf_GetSurfaceFluxes |
118 |
|
|
c |---- exf_MapFields |
119 |
|
|
c |
120 |
|
|
c |
121 |
|
|
c =============== |
122 |
|
|
c Surface fluxes: |
123 |
|
|
c =============== |
124 |
|
|
c |
125 |
|
|
c Getting the forcing fields: |
126 |
|
|
c |
127 |
dimitri |
1.2 |
c o exf_init_??? - Initialise external forcing fields ???. |
128 |
heimbach |
1.1 |
c |
129 |
|
|
c o exf_GetsurfaceFluxes - Mid-level routine for adding fluxes as |
130 |
|
|
c control variables. |
131 |
|
|
c |
132 |
|
|
c o exf_GetFFields - Get the current field values. |
133 |
|
|
c |
134 |
|
|
c o exf_SwapFFields - Swap data fields. |
135 |
|
|
c |
136 |
|
|
c Routines specific to bulk formulae: |
137 |
|
|
c |
138 |
dimitri |
1.2 |
c o exf_bulkqsat - Compute the saturation specific humidity. |
139 |
heimbach |
1.1 |
c |
140 |
dimitri |
1.2 |
c o exf_bulkcdn - Evaluate the neutral drag coefficient as a |
141 |
heimbach |
1.1 |
c function of the mean wind speed at a given |
142 |
|
|
c height. |
143 |
|
|
c |
144 |
dimitri |
1.2 |
c o exf_bulkrhn - Evaluate the Stanton number. |
145 |
heimbach |
1.1 |
c |
146 |
|
|
c Getting the time data (calendar): |
147 |
|
|
c |
148 |
|
|
c o exf_GetFFieldsRec - Get the record number for the current |
149 |
|
|
c timestep of a given field, some flags, |
150 |
|
|
c and the linear interpolation factor. |
151 |
|
|
c |
152 |
|
|
c Reading the forcing data: |
153 |
|
|
c |
154 |
dimitri |
1.2 |
c o exf_set_atemp - Read an atmospheric temperature record. |
155 |
heimbach |
1.1 |
c |
156 |
dimitri |
1.2 |
c o exf_set_aqh - Read an atmospheric humidity record. |
157 |
heimbach |
1.1 |
c |
158 |
dimitri |
1.2 |
c o exf_set_hflux - Read an atmospheric heat flux record. |
159 |
heimbach |
1.1 |
c |
160 |
dimitri |
1.2 |
c o exf_set_ustress - Read an atmospheric zonal wind stress record. |
161 |
heimbach |
1.1 |
c |
162 |
dimitri |
1.2 |
c o exf_set_vstress - Read an atmospheric meridional wind stress |
163 |
heimbach |
1.1 |
c record. |
164 |
|
|
c |
165 |
dimitri |
1.2 |
c o exf_set_uwind - Read an atmospheric zonal wind record. |
166 |
heimbach |
1.1 |
c |
167 |
dimitri |
1.2 |
c o exf_set_vwind - Read an atmospheric meridional wind record. |
168 |
heimbach |
1.1 |
c |
169 |
dimitri |
1.2 |
c o exf_set_precip - Read a precipitation record. |
170 |
heimbach |
1.1 |
c |
171 |
dimitri |
1.2 |
c o exf_set_sflux - Read a salt flux record. |
172 |
heimbach |
1.1 |
c |
173 |
dimitri |
1.2 |
c o exf_set_lwflux - Read a long wave radiative flux record. |
174 |
heimbach |
1.1 |
c |
175 |
dimitri |
1.2 |
c o exf_set_swflux - Read a short wave radiative flux record. |
176 |
heimbach |
1.1 |
c |
177 |
|
|
c |
178 |
|
|
c At the moment, a basic premise of this package is that the external |
179 |
|
|
c forcing fields are available as data sets that are regularly spaced |
180 |
|
|
c in time and space. In later versions this assumption will be relaxed |
181 |
|
|
c for time as well as for space. |
182 |
|
|
c |
183 |
|
|
c |
184 |
|
|
c ============ |
185 |
|
|
c Climatology: |
186 |
|
|
c ============ |
187 |
|
|
c |
188 |
dimitri |
1.2 |
c o exf_clim_init - Initialise the climatology code. |
189 |
heimbach |
1.1 |
c |
190 |
dimitri |
1.2 |
c o exf_set_climtemp - Get the temperature climatology's |
191 |
heimbach |
1.1 |
c value for a given model timestep. |
192 |
|
|
c |
193 |
dimitri |
1.2 |
c o exf_set_climsalt - Get the salinity climatology's |
194 |
heimbach |
1.1 |
c value for a given model timestep. |
195 |
|
|
c |
196 |
dimitri |
1.2 |
c o exf_set_climsst - Get the sea surface temp. climatology's |
197 |
heimbach |
1.1 |
c value for a given model timestep. |
198 |
|
|
c |
199 |
dimitri |
1.2 |
c o exf_set_climsss - Get the sea surface salin. climatology's |
200 |
heimbach |
1.1 |
c value for a given model timestep. |
201 |
|
|
c |
202 |
|
|
c |
203 |
|
|
c HOW TO GET STARTED? |
204 |
|
|
c |
205 |
dimitri |
1.2 |
c There are two verification experiments, global_with_exf and |
206 |
|
|
c lab_sea that use pkg/exf. Experiment verification/global_with_exf |
207 |
|
|
c is a repeat of verification/global_ocean.90x40x15, except that it |
208 |
|
|
c uses the pkg/exf and pkg/cal instead of the external_fields_load |
209 |
|
|
c routine. Experiment verification/lab_sea gives exaples of using |
210 |
|
|
c pkg/exf in conjunction with pkg/seaice. |
211 |
heimbach |
1.1 |
c |
212 |
|
|
c |
213 |
|
|
c ATTENTION: |
214 |
|
|
c ========== |
215 |
|
|
c |
216 |
|
|
c Users of this package are urged to CHECK THE SIGNS AND UNITS of |
217 |
|
|
c their data sets, especially in relation to the sign conventions |
218 |
|
|
c of the MITgcmUV! |
219 |
|
|
c |
220 |
|
|
c Relevant MITgcmUV routines are: |
221 |
|
|
c |
222 |
|
|
c calc_gt.F |
223 |
|
|
c calc_gs.F |
224 |
|
|
c calc_mom_rhs.F |
225 |
|
|
c external_forcing.F |
226 |
|
|
c |
227 |
|
|
c Relevant external forcing package routines are: |
228 |
|
|
c |
229 |
dimitri |
1.2 |
c exf_set_hflux |
230 |
heimbach |
1.1 |
c . |
231 |
|
|
c . |
232 |
dimitri |
1.2 |
c exf_set_vwind |
233 |
heimbach |
1.1 |
c exf_MapFields |
234 |
|
|
c |
235 |
|
|
c All adaptations of signs and units to specific data sets should be |
236 |
|
|
c done in the routines that read the respective data. Users should |
237 |
|
|
c neither modify "external_forcing" nor "exf_MapFields" for this |
238 |
|
|
c purpose.Each data set has its own read routine. This eases customi- |
239 |
|
|
c zation (signs and units etc.). |
240 |
|
|
c |
241 |
|
|
c Some routines have to be customized for the current specific |
242 |
|
|
c application: |
243 |
|
|
c |
244 |
dimitri |
1.2 |
c e.g. exf_set_climtemp |
245 |
|
|
c exf_set_climsalt |
246 |
|
|
c exf_set_climsst |
247 |
|
|
c exf_set_climsss |
248 |
heimbach |
1.1 |
c |
249 |
|
|
c |
250 |
|
|
c ======== |
251 |
|
|
c HISTORY: |
252 |
|
|
c ======== |
253 |
|
|
c |
254 |
|
|
c started: Christian Eckert eckert@mit.edu 30-Jun-1999 |
255 |
|
|
c |
256 |
|
|
c changed: Christian Eckert eckert@mit.edu 11-Jan-2000 |
257 |
|
|
c - Restructured the code in order to create a package |
258 |
|
|
c for the MITgcmUV. |
259 |
|
|
c |
260 |
|
|
c Christian Eckert eckert@mit.edu 12-Feb-2000 |
261 |
|
|
c - Changed Routine names (package prefix: exf_) |
262 |
|
|
c |
263 |
|
|
c Christian Eckert eckert@mit.edu 02-May-2000 |
264 |
|
|
c - CVS version of the package. |
265 |
|
|
c |
266 |
|
|
c Patrick Heimbach, heimbach@mit.edu 04-May-2000 |
267 |
|
|
c - Added computation of evaporation rate for |
268 |
|
|
c ALLOW_ATM_TEMP case |
269 |
|
|
c - changed the handling of precip and sflux with respect |
270 |
|
|
c to CPP options ALLOW_BULKFORMULAE and ALLOW_ATM_TEMP |
271 |
|
|
c - included some CPP flags ALLOW_BULKFORMULAE to make |
272 |
|
|
c sure ALLOW_ATM_TEMP, ALLOW_ATM_WIND are used only in |
273 |
|
|
c conjunction with defined ALLOW_BULKFORMULAE |
274 |
|
|
c - statement functions discarded and external functions |
275 |
|
|
c initialised. |
276 |
|
|
c - file precision and field type are now prescribed in |
277 |
|
|
c data.exf; |
278 |
|
|
c separately possible for exf_sflx.h and exf_clim.h |
279 |
|
|
c related fields. |
280 |
|
|
c - created exf_constants.h that contains |
281 |
|
|
c 1. numbers |
282 |
|
|
c 2. physical constants |
283 |
|
|
c 3. empirical parameters |
284 |
|
|
c 4. control parameters |
285 |
|
|
c |
286 |
|
|
c Ralf Giering ralf.giering@fastopt.de 18-Jun-2000 |
287 |
|
|
c - exf_getffields.F: |
288 |
|
|
c Swapping of forcing fields has to be switched off |
289 |
|
|
c if TAMC is used, because of generation of spurious |
290 |
|
|
c dependencies. (P.H.) |
291 |
|
|
c |
292 |
|
|
c Patrick Heimbach heimbach@mit.edu 20-Jun-2000 |
293 |
|
|
c - sign change of ustress/vstress incorporated into |
294 |
|
|
c scaling factors scal_ust, scal_vst in exf_mapfields.F |
295 |
|
|
c - Corrected description on how to implement exf package |
296 |
|
|
c for c27 onwards. |
297 |
|
|
c - Included unit and sign conventions valid for c28 |
298 |
|
|
c in README. |
299 |
dimitri |
1.2 |
c |
300 |
dimitri |
1.3 |
c mods for pkg/seaice: menemenlis@jpl.nasa.gov 20-Dec-2002 |
301 |
heimbach |
1.1 |
c |
302 |
|
|
c ================================================================== |