/[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.3 - (show annotations) (download)
Mon Apr 16 22:43:01 2007 UTC (17 years, 1 month ago) by mlosch
Branch: MAIN
CVS Tags: checkpoint59a, checkpoint59
Changes since 1.2: +4 -3 lines
- add myThid to argument list of seaice_budget_ice/ocean

1 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_budget_ocean.F,v 1.2 2006/12/15 14:36:05 mlosch 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 #include "SEAICE_FFIELDS.h"
28 #ifdef SEAICE_VARIABLE_FREEZING_POINT
29 #include "DYNVARS.h"
30 #endif /* SEAICE_VARIABLE_FREEZING_POINT */
31
32 C === Routine arguments ===
33 C INPUT:
34 C UG :: thermal wind of atmosphere
35 C TSURF :: surface temperature of ocean in Kelvin
36 C bi,bj :: loop indices
37 C myThid :: Thread no. that called this routine.
38 C OUTPUT:
39 C netHeatFlux :: net surface heat flux over open water or under ice
40 C SWHeatFlux :: short wave heat flux over open water or under ice
41 _RL UG (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
42 _RL TSURF (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
43 _RL netHeatFlux(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
44 _RL SWHeatFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
45 INTEGER bi, bj, myThid
46 CEndOfInterface
47
48 C === Local variables ===
49 C i,j - Loop counters
50 INTEGER i, j
51 #ifndef SEAICE_EXTERNAL_FLUXES
52 INTEGER ITER
53 _RL QS1, TB, D1, D1W, D3, TMELT
54 C effective conductivity of combined ice and snow
55 _RL effConduct
56 C specific humidity at ice surface
57 _RL qhIce
58 C powers of temperature
59 _RL t1, t2, t3, t4
60
61 C local copies of global variables
62 _RL tsurfLoc (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
63 _RL atempLoc (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
64 _RL lwdownLoc (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
65 _RL ALB (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
66 C coefficients of Hibler (1980), appendix B
67 _RL A1 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
68 _RL A2 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
69 _RL A3 (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
70 C auxiliary variable
71 _RL B (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
72
73 C NOW DEFINE ASSORTED CONSTANTS
74 C SATURATION VAPOR PRESSURE CONSTANT
75 QS1=0.622 _d +00/1013.0 _d +00
76 C FREEZING TEMPERATURE OF SEAWATER
77 TB=271.2 _d +00
78 C SENSIBLE HEAT CONSTANT
79 D1=SEAICE_sensHeat
80 C WATER LATENT HEAT CONSTANT
81 D1W=SEAICE_latentWater
82 C STEFAN BOLTZMAN CONSTANT TIMES 0.97 EMISSIVITY
83 D3=SEAICE_emissivity
84 C MELTING TEMPERATURE OF ICE
85 TMELT=273.16 _d +00
86
87 DO J=1,sNy
88 DO I=1,sNx
89 netHeatFlux(I,J) = 0. _d 0
90 SWHeatFlux (I,J) = 0. _d 0
91 C
92 tsurfLoc (I,J) = MIN(273.16 _d 0+MAX_TICE,TSURF(I,J,bi,bj))
93 C Is this necessary?
94 atempLoc (I,J) = MAX(273.16 _d 0+MIN_ATEMP,ATEMP(I,J,bi,bj))
95 lwdownLoc(I,J) = MAX(MIN_LWDOWN,LWDOWN(I,J,bi,bj))
96 ENDDO
97 ENDDO
98 #endif /* SEAICE_EXTERNAL_FLUXES */
99
100 C NOW DETERMINE OPEN WATER HEAT BUD. ASSUMING TSURF=WATER TEMP.
101 C WATER ALBEDO IS ASSUMED TO BE THE CONSTANT SEAICE_waterAlbedo
102 DO J=1,sNy
103 DO I=1,sNx
104 #ifdef SEAICE_EXTERNAL_FLUXES
105 netHeatFlux(I,J) = Qnet(I,J,bi,bj)
106 SWHeatFlux (I,J) = Qsw(I,J,bi,bj)
107 #else /* SEAICE_EXTERNAL_FLUXES undefined */
108 ALB(I,J)=SEAICE_waterAlbedo
109 A1(I,J)=(ONE-ALB(I,J))*SWDOWN(I,J,bi,bj)
110 & +lwdownLoc(I,J)*0.97 _d 0
111 & +D1*UG(I,J)*atempLoc(I,J)+D1W*UG(I,J)*AQH(I,J,bi,bj)
112 B(I,J)=QS1*6.11 _d +00*EXP(17.2694 _d +00
113 & *(tsurfLoc(I,J)-TMELT)
114 & /(tsurfLoc(I,J)-TMELT+237.3 _d +00))
115 A2(I,J)=-D1*UG(I,J)*tsurfLoc(I,J)-D1W*UG(I,J)*B(I,J)
116 & -D3*(tsurfLoc(I,J)**4)
117 netHeatFlux(I,J)=-A1(I,J)-A2(I,J)
118 SWHeatFlux (I,J)=-(ONE-ALB(I,J))*SWDOWN(I,J,bi,bj)
119 #endif /* SEAICE_EXTERNAL_FLUXES */
120 ENDDO
121 ENDDO
122
123 RETURN
124 END

  ViewVC Help
Powered by ViewVC 1.1.22