/[MITgcm]/MITgcm/pkg/seaice/seaice_budget_ocean.F
ViewVC logotype

Contents of /MITgcm/pkg/seaice/seaice_budget_ocean.F

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


Revision 1.6 - (show annotations) (download)
Wed Dec 5 15:37:12 2007 UTC (16 years, 6 months ago) by dimitri
Branch: MAIN
CVS Tags: checkpoint60, checkpoint61, checkpoint59q, checkpoint59p, checkpoint59r, checkpoint59m, checkpoint59l, checkpoint59o, checkpoint59n, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61b, checkpoint61c, checkpoint61a, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i
Changes since 1.5: +11 -12 lines
pkg/seaice: removed some unused halos

1 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_budget_ocean.F,v 1.5 2007/12/05 07:28:29 dimitri Exp $
2 C $Name: $
3
4 #include "SEAICE_OPTIONS.h"
5
6 CStartOfInterface
7 SUBROUTINE SEAICE_BUDGET_OCEAN(
8 I UG,
9 U TSURF,
10 O netHeatFlux, SWHeatFlux,
11 I bi, bj, myThid )
12 C /================================================================\
13 C | SUBROUTINE seaice_budget_ocean |
14 C | o Calculate surface heat fluxes over open ocean |
15 C | see Hibler, MWR, 108, 1943-1973, 1980 |
16 C | If SEAICE_EXTERNAL_FLUXES is defined this routine simply |
17 C | simply copies the global fields to the seaice-local fields. |
18 C |================================================================|
19 C \================================================================/
20 IMPLICIT NONE
21
22 C === Global variables ===
23 #include "SIZE.h"
24 #include "EEPARAMS.h"
25 #include "FFIELDS.h"
26 #include "SEAICE_PARAMS.h"
27 #ifdef SEAICE_VARIABLE_FREEZING_POINT
28 # include "DYNVARS.h"
29 #endif
30 #ifdef ALLOW_EXF
31 # include "EXF_OPTIONS.h"
32 # include "EXF_FIELDS.h"
33 #endif
34
35 C === Routine arguments ===
36 C INPUT:
37 C UG :: thermal wind of atmosphere
38 C TSURF :: surface temperature of ocean in Kelvin
39 C bi,bj :: loop indices
40 C myThid :: Thread no. that called this routine.
41 C OUTPUT:
42 C netHeatFlux :: net surface heat flux over open water or under ice
43 C SWHeatFlux :: short wave heat flux over open water or under ice
44 _RL UG (1:sNx,1:sNy)
45 _RL TSURF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
46 _RL netHeatFlux(1:sNx,1:sNy)
47 _RL SWHeatFlux (1:sNx,1:sNy)
48 INTEGER bi, bj, myThid
49 CEndOfInterface
50
51 C === Local variables ===
52 C i,j - Loop counters
53 INTEGER i, j
54 #ifndef SEAICE_EXTERNAL_FLUXES
55 INTEGER ITER
56 _RL QS1, TB, D1, D1W, D3, TMELT
57 C effective conductivity of combined ice and snow
58 _RL effConduct
59 C specific humidity at ice surface
60 _RL qhIce
61 C powers of temperature
62 _RL t1, t2, t3, t4
63
64 C local copies of global variables
65 _RL tsurfLoc (1:sNx,1:sNy)
66 _RL atempLoc (1:sNx,1:sNy)
67 _RL lwdownLoc (1:sNx,1:sNy)
68 _RL ALB (1:sNx,1:sNy)
69 C coefficients of Hibler (1980), appendix B
70 _RL A1 (1:sNx,1:sNy)
71 _RL A2 (1:sNx,1:sNy)
72 C auxiliary variable
73 _RL B (1:sNx,1:sNy)
74
75 C NOW DEFINE ASSORTED CONSTANTS
76 C SATURATION VAPOR PRESSURE CONSTANT
77 QS1=0.622 _d +00/1013.0 _d +00
78 C FREEZING TEMPERATURE OF SEAWATER
79 TB=271.2 _d +00
80 C SENSIBLE HEAT CONSTANT
81 D1=SEAICE_sensHeat
82 C WATER LATENT HEAT CONSTANT
83 D1W=SEAICE_latentWater
84 C STEFAN BOLTZMAN CONSTANT TIMES 0.97 EMISSIVITY
85 D3=SEAICE_emissivity
86 C MELTING TEMPERATURE OF ICE
87 TMELT=273.16 _d +00
88
89 DO J=1,sNy
90 DO I=1,sNx
91 netHeatFlux(I,J) = 0. _d 0
92 SWHeatFlux (I,J) = 0. _d 0
93 C
94 tsurfLoc (I,J) = MIN(273.16 _d 0+MAX_TICE,TSURF(I,J,bi,bj))
95 C Is this necessary?
96 #ifdef ALLOW_ATM_TEMP
97 atempLoc (I,J) = MAX(273.16 _d 0+MIN_ATEMP,ATEMP(I,J,bi,bj))
98 #else /* ALLOW_ATM_TEMP */
99 STOP 'ABNORMAL END: S/R SEAICE_BUDGET_OCE: ATM_TEMP undef'
100 #endif /* ALLOW_ATM_TEMP */
101 #ifdef ALLOW_DOWNWARD_RADIATION
102 lwdownLoc(I,J) = MAX(MIN_LWDOWN,LWDOWN(I,J,bi,bj))
103 #else
104 STOP
105 & 'ABNORMAL END: S/R SEAICE_BUDGET_OCE: DOWNWARD_RADIATION undef'
106 #endif
107 ENDDO
108 ENDDO
109 #endif /* SEAICE_EXTERNAL_FLUXES */
110
111 C NOW DETERMINE OPEN WATER HEAT BUD. ASSUMING TSURF=WATER TEMP.
112 C WATER ALBEDO IS ASSUMED TO BE THE CONSTANT SEAICE_waterAlbedo
113 DO J=1,sNy
114 DO I=1,sNx
115 #ifdef SEAICE_EXTERNAL_FLUXES
116 netHeatFlux(I,J) = Qnet(I,J,bi,bj)
117 SWHeatFlux (I,J) = Qsw(I,J,bi,bj)
118 #else /* SEAICE_EXTERNAL_FLUXES undefined */
119 ALB(I,J)=SEAICE_waterAlbedo
120 #if defined(ALLOW_DOWNWARD_RADIATION) && defined(ALLOW_ATM_TEMP)
121 A1(I,J)=(ONE-ALB(I,J))*SWDOWN(I,J,bi,bj)
122 & +lwdownLoc(I,J)*0.97 _d 0
123 & +D1*UG(I,J)*atempLoc(I,J)+D1W*UG(I,J)*AQH(I,J,bi,bj)
124 B(I,J)=QS1*6.11 _d +00*EXP(17.2694 _d +00
125 & *(tsurfLoc(I,J)-TMELT)
126 & /(tsurfLoc(I,J)-TMELT+237.3 _d +00))
127 A2(I,J)=-D1*UG(I,J)*tsurfLoc(I,J)-D1W*UG(I,J)*B(I,J)
128 & -D3*(tsurfLoc(I,J)**4)
129 netHeatFlux(I,J)=-A1(I,J)-A2(I,J)
130 SWHeatFlux (I,J)=-(ONE-ALB(I,J))*SWDOWN(I,J,bi,bj)
131 #else
132 STOP
133 & 'ABNORMAL END: S/R SEAICE_BUDGET_OCE: DOWNWARD_RADIATION undef'
134 #endif
135 #endif /* SEAICE_EXTERNAL_FLUXES */
136 ENDDO
137 ENDDO
138
139 RETURN
140 END

  ViewVC Help
Powered by ViewVC 1.1.22