/[MITgcm]/MITgcm/pkg/thsice/thsice_get_bulkf.F
ViewVC logotype

Contents of /MITgcm/pkg/thsice/thsice_get_bulkf.F

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


Revision 1.3 - (show annotations) (download)
Sun Jan 22 15:58:59 2006 UTC (18 years, 4 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint58e_post, checkpoint58d_post, checkpoint58c_post, checkpoint58a_post, checkpoint58b_post
Changes since 1.2: +43 -10 lines
- add option and parameters to use AIM surface-flux formulae.

1 C $Header: /u/gcmpack/MITgcm/pkg/thsice/thsice_get_bulkf.F,v 1.2 2004/04/07 23:40:34 jmc Exp $
2 C $Name: $
3
4 #include "THSICE_OPTIONS.h"
5 #ifdef ALLOW_BULK_FORCE
6 #include "BULK_FORCE_OPTIONS.h"
7 #endif
8
9 CBOP
10 C !ROUTINE: THSICE_GET_BULKF
11 C !INTERFACE:
12 SUBROUTINE THSICE_GET_BULKF(
13 I iceornot, Tsf,
14 O flxExceptSw, df0dT, evap, dEvdT,
15 I i,j,bi,bj,myThid )
16 C !DESCRIPTION: \bv
17 C *==========================================================*
18 C | S/R THSICE_GET_BULKF
19 C *==========================================================*
20 C | Interface S/R : get Surface Fluxes from pkg BULK_FORCE
21 C *==========================================================*
22 C \ev
23
24 C !USES:
25 IMPLICIT NONE
26
27 C == Global data ==
28 #ifdef ALLOW_BULK_FORCE
29 #include "SIZE.h"
30 #include "EEPARAMS.h"
31 #include "BULKF_PARAMS.h"
32 #include "BULKF.h"
33 #endif
34
35 C !INPUT/OUTPUT PARAMETERS:
36 C === Routine arguments ===
37 C iceornot :: 0=open water, 1=ice cover
38 C Tsf :: surface (ice or snow) temperature (oC)
39 C flxExceptSw :: net (downward) surface heat flux, except short-wave [W/m2]
40 C df0dT :: deriv of flx with respect to Tsf [W/m/K]
41 C evap :: surface evaporation (>0 if evaporate) [kg/m2/s]
42 C dEvdT :: deriv of evap. with respect to Tsf [kg/m2/s/K]
43 C i,j, bi,bj :: current grid point indices
44 C myThid :: Thread no. that called this routine.
45 INTEGER i,j, bi,bj
46 INTEGER myThid
47 INTEGER iceornot
48 _RL Tsf
49 _RL flxExceptSw
50 _RL df0dT
51 _RL evap
52 _RL dEvdT
53 CEOP
54
55 #ifdef ALLOW_THSICE
56 #ifdef ALLOW_BULK_FORCE
57
58 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
59 C === Local variables ===
60
61 _RL flwup ! upward LW at surface (W m-2)
62 _RL flwNet_dwn ! net (downward) LW at surface (W m-2)
63 _RL fsh ! surface downward sensible heat (W m-2)
64 _RL flh ! surface downward latent heat (W m-2)
65 _RL ust, vst, ssq
66 #ifdef ALLOW_FORMULA_AIM
67 _RL Tsurf(1), SHF(1), EVPloc(1), SLRU(1)
68 _RL dEvp(1), sFlx(0:2)
69 #endif
70
71 #ifdef ALLOW_FORMULA_AIM
72 IF ( useFluxFormula_AIM ) THEN
73
74 Tsurf(1) = Tsf
75 CALL BULKF_FORMULA_AIM(
76 I Tsurf, flwdwn(i,j,bi,bj),
77 I ThAir(i,j,bi,bj), Tair(i,j,bi,bj),
78 I Qair(i,j,bi,bj), wspeed(i,j,bi,bj),
79 O SHF, EVPloc, SLRU,
80 O dEvp, sFlx,
81 I iceornot, myThid )
82
83 flxExceptSw = sFlx(1)
84 df0dT = sFlx(2)
85 C- convert from [g/m2/s] to [kg/m2/s]
86 evap = EVPloc(1) * 1. _d -3
87 dEvdT = dEvp(1) * 1. _d -3
88
89 ELSE
90 #else /* ALLOW_FORMULA_AIM */
91 IF ( .TRUE. ) THEN
92 #endif /* ALLOW_FORMULA_AIM */
93
94 ust = 0.
95 vst = 0.
96 ssq = 0.
97
98 CALL BULKF_FORMULA_LANL(
99 I uwind(i,j,bi,bj), vwind(i,j,bi,bj), wspeed(i,j,bi,bj),
100 I Tair(i,j,bi,bj), Qair(i,j,bi,bj), cloud(i,j,bi,bj), Tsf,
101 O flwup, flh, fsh, df0dT, ust, vst, evap, ssq, dEvdT,
102 I iceornot, myThid )
103
104 flwNet_dwn = flwdwn(i,j,bi,bj) - flwup
105 flxExceptSw = flwNet_dwn + fsh + flh
106
107 ENDIF
108
109 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
110
111 #endif /* ALLOW_BULK_FORCE */
112 #endif /* ALLOW_THSICE */
113
114 RETURN
115 END

  ViewVC Help
Powered by ViewVC 1.1.22