/[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.2 - (hide 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 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 edhill 1.2 \label{sec:pkg:bulk_formula}
19     \begin{rawhtml}
20     <!-- CMIREDIR:package_bulk_formula: -->
21     \end{rawhtml}
22 jmc 1.1
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