/[MITgcm]/manual/s_phys_pkgs/text/bulk_force.tex
ViewVC logotype

Contents of /manual/s_phys_pkgs/text/bulk_force.tex

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.2 - (show annotations) (download) (as text)
Tue Oct 12 18:16:03 2004 UTC (20 years, 9 months ago) by edhill
Branch: MAIN
CVS Tags: checkpoint57l_post
Changes since 1.1: +4 -0 lines
File MIME type: application/x-tex
 o add HTML reference tags so that URLs are more permanent and legible
 o update MNC

1 % \documentclass[12pt]{article}
2 % \usepackage{amssymb}
3 %
4 % \usepackage{graphics}
5 %
6 %
7 % \oddsidemargin -4mm \evensidemargin 0mm
8 % \textwidth 165mm
9 % \textheight 230mm
10 % \topmargin -2mm \headsep -2mm
11 % \renewcommand{\baselinestretch}{1.5}
12 % \begin{document}
13 %
14
15 %%%--------------------------------------%%%
16 \def\deg{$^o$}
17 \section{Bulk Formula Package}
18 \label{sec:pkg:bulk_formula}
19 \begin{rawhtml}
20 <!-- CMIREDIR:package_bulk_formula: -->
21 \end{rawhtml}
22
23 author: Stephanie Dutkiewicz\\
24
25 \noindent
26 Instead of forcing the model with heat and fresh water flux data,
27 this package calculates these fluxes using the changing sea surface
28 temperature. We need to read in some atmospheric data:
29 {\bf air temperature, air humidity, down shortwave radiation,
30 down longwave radiation, precipitation, wind speed}.
31 The current setup also reads in {\bf wind stress}, but this
32 can be changed so that the stresses are calculated from the
33 wind speed.
34
35 The current setup requires that there is the thermodynamic-seaice package
36 ({\it pkg/thsice}, also refered below as seaice)
37 is also used. It would be useful though to have it also
38 setup to run with some very simple parametrization of the sea ice.
39
40 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
41
42 \vspace{1cm}
43
44 \noindent
45 The heat and fresh water fluxes are calculated in {\it bulkf\_forcing.F}
46 called from {\it forward\_step.F}. These fluxes are used over open water,
47 fluxes over seaice are recalculated in the sea-ice package.
48 Before the call to {\it bulkf\_forcing.F} we call
49 {\it bulkf\_fields\_load.F} to find the current atmospheric conditions.
50 The only other changes to the model code come from the initializing
51 and writing diagnostics of these fluxes.
52
53 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
54 \vspace{1cm}
55 \noindent
56 {\bf \underline{subroutine BULKF\_FIELDS\_LOAD}}
57
58 \noindent
59 Here we find the atmospheric data needed for the bulk formula
60 calculations. These are read in at periodic intervals and
61 values are interpolated to the current time. The data file names
62 come from {\bf data.blk}. The values that can be read in are:
63 air temperature, air humidity, precipitation,
64 down solar radiation, down long
65 wave radiation, zonal and meridional wind speeds, total wind
66 speed, net heat flux, net freshwater forcing, cloud cover,
67 snow fall, zonal and meridional wind stresses, and SST and SSS
68 used for relaxation terms.
69 Not all these files are necessary or used. For instance cloud
70 cover and snow fall are not used in the current bulk formula
71 calculation. If total wind speed is not supplied, wind speed
72 is calculate from the zonal and meridional components. If
73 wind stresses are not read in, then the stresses are calculated
74 from the wind speed. Net heat flux and net freshwater can be
75 read in and used over open ocean instead of the bulk formula
76 calculations (but over seaice the bulkf formula is always
77 used). This is "hardwired" into {\it bulkf\_forcing} and
78 the "ch" in the variable names suggests that this is "cheating".
79 SST and SSS need to be read in if there is any relaxation used.
80
81
82 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
83
84
85 \vspace{1cm}
86 \noindent
87 {\bf \underline{subroutine BULKF\_FORCING}}
88
89 \noindent
90 In {\it bulkf\_forcing.F}, we calculate heat and fresh water
91 fluxes (and wind stress, if necessary) for each grid cell.
92 First we determine if the grid cell is open water or seaice
93 and this information is carried by {\bf iceornot}. There is
94 a provision here for a different designation if there is
95 snow cover (but currently this does not make any difference).
96 We then call {\it bulkf\_formula\_lanl.F} which provides
97 values for: up long wave radiation, latent and sensible heat
98 fluxes, the derivative of these three with respect to surface
99 temperature, wind stress, evaporation.
100 Net long wave radiation is calculated from the combination
101 of the down long wave read in and the up long wave calculated.
102
103 We then find the albedo of the surface - with a call to
104 {\it sfc\_albedo} if there is sea-ice (see the seaice package
105 for information on the subroutine). If the grid cell is open
106 ocean the albedo is set as 0.1. Note that this is a parameter
107 that can be used to tune the results. The net short wave
108 radiation is then the down shortwave radiation minus the
109 amount reflected.
110
111 If the wind stress needed to be calculated in {\it bulkf\_formula\_lanl.F},
112 it was calculated to grid cell center points, so in {\it bulkf\_forcing.F}
113 we regrid to {\bf u} and {\bf v} points. We let the model know
114 if it has read in stresses or calculated stresses by the switch
115 {\bf readwindstress} which is can be set in data.blk, and defaults
116 to {\bf .TRUE.}.
117
118 We then calculate {\bf Qnet} and {\bf EmPmR} that will be used
119 as the fluxes over the open ocean. There is a provision for
120 using runoff. If we are "cheating" and using observed fluxes
121 over the open ocean, then there is a provision here to
122 use read in {\bf Qnet} and {\bf EmPmR}.
123
124 The final call is to calculate averages of the terms found
125 in this subroutine.
126
127 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
128 \vspace{1cm}
129 \noindent
130 {\bf {\underline{ subroutine BULKF\_FORMULA\_LANL}}}
131
132 \noindent
133 This is the main program of the package where the
134 heat fluxes and freshwater fluxes over ice and
135 open water are calculated. Note that this subroutine
136 is also called from the seaice package during the
137 iterations to find the ice surface temperature.
138
139 Latent heat ($L$) used in this subroutine
140 depends on the state of the surface: vaporization for
141 open water, fusion and vaporization for ice surfaces.
142 Air temperature is converted from Celsius to Kelvin.
143 If there is no wind speed ($u_s$) given, then the wind speed
144 is calculated from the zonal and meridional components.
145
146 We calculate the virtual temperature:
147 \[
148 T_o = T_{air} (1+\gamma q_{air})
149 \]
150 where $T_{air}$ is the air temperature at $h_T$, $q_{air}$ is
151 humidity at $h_q$ and $\gamma$ is a constant.
152
153 The saturated vapor pressure is calculate (QQ ref):
154 \[
155 q_{sat} = \frac{a}{p_o} e^{L (b-\frac{c}{T_{srf}})}
156 \]
157 where $a,b,c$ are constants, $T_{srf}$ is surface temperature
158 and $p_o$ is the surface pressure.
159
160 The two values crucial for the bulk formula calculations are
161 the difference between air at sea surface and sea surface temperature:
162 \[
163 \Delta T = T_{air} - T_{srf} +\alpha h_T
164 \]
165 where $\alpha$ is adiabatic lapse rate and $h_T$ is the height
166 where the air temperature was taken; and the difference
167 between the air humidity and the saturated humidity
168 \[
169 \Delta q = q_{air} - q_{sat}.
170 \]
171
172 We then calculate the turbulent exchange coefficients
173 following Bryan et al (1996) and the numerical scheme
174 of Hunke and Lipscombe (1998).
175 We estimate initial values for the exchange coefficients, $c_u$,
176 $c_T$ and $c_q$ as
177 \[
178 \frac{\kappa}{ln(z_{ref}/z_{rou})}
179 \]
180 where $\kappa$ is the Von Karman constant, $z_{ref}$ is a
181 reference height and $z_{rou}$ is a roughness length scale
182 which could be a function of type of surface, but is here set
183 as a constant. Turbulent scales are:
184 \begin{eqnarray}
185 u^* & = & c_u u_s \nonumber\\
186 T^* & = & c_T \Delta T \nonumber\\
187 q^* & = & c_q \Delta q \nonumber
188 \end{eqnarray}
189
190 We find the "integrated flux profile" for momentum and stability
191 if there are stable QQ conditions ($\Upsilon>0$) :
192 \[
193 \psi_m = \psi_s = -5 \Upsilon
194 \]
195 and for unstable QQ conditions ($\Upsilon<0$):
196 \begin{eqnarray}
197 \psi_m & = & 2 ln(0.5(1+\chi)) + ln(0.5(1+\chi^2)) - 2 \tan^{-1} \chi + \pi/2
198 \nonumber \\
199 \psi_s & = & 2 ln(0.5(1+\chi^2)) \nonumber
200 \end{eqnarray}
201 where
202 \[
203 \Upsilon = \frac{\kappa g z_{ref}}{u^{*2}} (\frac{T^*}{T_o} +
204 \frac{q^*}{1/\gamma + q_a})
205 \]
206 and $\chi=(1-16\Upsilon)^{1/2}$.
207
208 The coefficients are updated through 5 iterations as:
209 \begin{eqnarray}
210 c_u & = & \frac {\hat{c_u}}{1+\hat{c_u}(\lambda - \psi_m)/\kappa} \nonumber \\
211 c_T & = & \frac {\hat{c_T}}{1+\hat{c_T}(\lambda - \psi_s)/\kappa} \nonumber \\
212 c_q & = & c'_T
213 \end{eqnarray}
214 where $\lambda =ln(h_T/z_{ref})$.
215
216 We can then find the bulk formula heat fluxes:
217
218 \vspace{.2cm}
219 \noindent
220 Sensible heat flux:
221 \[
222 Q_s=\rho_{air} c_{p_{air}} u_s c_u c_T \Delta T
223 \]
224
225 \vspace{.2cm}
226 \noindent
227 Latent heat flux:
228 \[
229 Q_l=\rho_{air} L u_s c_u c_q \Delta q
230 \]
231
232 \vspace{.2cm}
233 \noindent
234 Up long wave radiation
235 \[
236 Q_{lw}^{up}=\epsilon \sigma T_{srf}^4
237 \]
238 where $\epsilon$ is emissivity (which can be different for
239 open ocean, ice and snow), $\sigma$ is Stefan-Boltzman constant.
240
241 We calculate the derivatives of the three above functions
242 with respect to surface temperature
243 \begin{eqnarray}
244 \frac{dQ_s}{d_T} & = & \rho_{air} c_{p_{air}} u_s c_u c_T \nonumber \\
245 \frac{dQ_l}{d_T} & = & \frac{\rho_{air} L^2 u_s c_u c_q c}{T_{srf}^2} \nonumber \\
246 \frac{dQ_{]lw}^{up}}{d_T} & = & 4 \epsilon \sigma t_{srf}^3 \nonumber
247 \end{eqnarray}
248
249 And total derivative $\frac{dQ_o}{dT}= \frac{dQ_s}{dT} +
250 \frac{dQ_l}{dT} + \frac{dQ_{lw}^{up}}{dT}$.
251
252
253
254
255 If we do not read in the wind stress, it is calculated here.
256
257 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
258
259 \vspace{1cm}
260
261 \noindent
262 {\bf {\underline{Initializing subroutines}}}
263
264 \noindent
265 {\it bulkf\_init.F}:
266 Set bulkf variables to zero.
267
268 \noindent
269 {\it bulkf\_readparms.F}:
270 Reads {\bf data.blk}
271
272 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
273
274 \vspace{1cm}
275
276 \noindent
277 {\bf {\underline{Diagnostic subroutines}}}
278
279 \noindent
280 {\it bulkf\_ave.F}:
281 Keeps track of means of the bulkf variables
282
283 \noindent
284 {\it bulkf\_diags.F}:
285 Finds averages and writes out diagnostics
286
287 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
288 \vspace{1cm}
289
290 \noindent
291 {\bf {\underline{Common Blocks}}}
292
293 \noindent
294 {\it BULKF.h}: BULKF Variables, data file names, and logicals
295 {\bf readwindstress} and {\bf readsurface}
296
297 \noindent
298 {\it BULKF\_DIAGS.h}: matrices for diagnostics: averages of fields
299 from {\it bulkf\_diags.F}
300
301 \noindent
302 {\it BULKF\_ICE\_CONSTANTS.h}:
303 all the parameters need by the ice model and in the bulkf formula
304 calculations.
305
306 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
307 \vspace{1cm}
308
309 \noindent
310 {\bf {\underline{Input file DATA.ICE}}}
311
312 \noindent
313 We read in the file names of atmospheric data used in
314 the bulk formula calculations. Here we can also set
315 the logicals: {\bf readwindstress} if we read in the
316 wind stress rather than calculate it from the wind
317 speed; and {\bf readsurface} to read in the surface
318 temperature and salinity if these will be used as
319 part of a relaxing term.
320
321 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
322 \vspace{1cm}
323
324 \noindent
325 {\bf {\underline{Important Notes}}}
326
327 \noindent
328 {\bf 1)} heat fluxes have different signs in the ocean and ice
329 models.
330
331 \noindent
332 {\bf 2)} {\bf StartIceModel} must be changed in {\bf data.ice}:
333 1 (if starting from no ice), 0 (if using pickup.ic file).
334
335 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
336
337 \vspace{1cm}
338
339 \noindent
340 {\bf {\underline{References}}}
341
342
343 \vspace{.2cm}
344
345 \noindent
346 Bryan F.O., B.G Kauffman, W.G. Large, P.R. Gent, 1996:
347 The NCAR CSM flux coupler. Technical note TN-425+STR,
348 NCAR.
349
350 \vspace{.2cm}
351
352 \noindent
353 Hunke, E.C and W.H. Lipscomb, circa 2001: CICE: the Los Alamos
354 Sea Ice Model Documentation and Software User's Manual.
355 LACC-98-16v.2.\\
356 (note: this documentation is no longer available as CICE has progressed
357 to a very different version 3)
358
359
360
361
362
363 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
364 % \end{document}

  ViewVC Help
Powered by ViewVC 1.1.22