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

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

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


Revision 1.1 - (hide annotations) (download) (as text)
Wed Jan 28 19:56:21 2004 UTC (21 years, 6 months ago) by jmc
Branch: MAIN
File MIME type: application/x-tex
add package description.

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

  ViewVC Help
Powered by ViewVC 1.1.22