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

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

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

revision 1.1 by mlosch, Thu Dec 14 08:36:20 2006 UTC revision 1.8 by mlosch, Wed Jun 24 08:25:05 2009 UTC
# Line 8  CStartOfInterface Line 8  CStartOfInterface
8       I     UG,       I     UG,
9       U     TSURF,       U     TSURF,
10       O     netHeatFlux, SWHeatFlux,       O     netHeatFlux, SWHeatFlux,
11       I     bi, bj )       I     bi, bj, myTime, myIter, myThid )
12  C     /================================================================\  C     /================================================================\
13  C     | SUBROUTINE seaice_budget_ocean                                 |  C     | SUBROUTINE seaice_budget_ocean                                 |
14  C     | o Calculate surface heat fluxes over open ocean                |  C     | o Calculate surface heat fluxes over open ocean                |
# Line 24  C     === Global variables === Line 24  C     === Global variables ===
24  #include "EEPARAMS.h"  #include "EEPARAMS.h"
25  #include "FFIELDS.h"  #include "FFIELDS.h"
26  #include "SEAICE_PARAMS.h"  #include "SEAICE_PARAMS.h"
 #include "SEAICE_FFIELDS.h"  
27  #ifdef SEAICE_VARIABLE_FREEZING_POINT  #ifdef SEAICE_VARIABLE_FREEZING_POINT
28  #include "DYNVARS.h"  # include "DYNVARS.h"
29  #endif /* SEAICE_VARIABLE_FREEZING_POINT */  #endif
30    #ifdef ALLOW_EXF
31    # include "EXF_OPTIONS.h"
32    # include "EXF_FIELDS.h"
33    #endif
34    #ifdef SEAICE_CLIM_AIR
35          COMMON/SEAICE_DYNVARS_1/AREA
36          _RL AREA       (1-OLx:sNx+OLx,1-OLy:sNy+OLy,3,nSx,nSy)
37    #endif
38    
39  C     === Routine arguments ===  C     === Routine arguments ===
40  C     INPUT:  C     INPUT:
41  C     UG      :: thermal wind of atmosphere  C     UG      :: thermal wind of atmosphere
42  C     TSURF   :: surface temperature of ocean in Kelvin  C     TSURF   :: surface temperature of ocean in Kelvin
43  C     bi,bj   :: loop indices  C     bi,bj   :: loop indices
44    C     myTime  :: Simulation time
45    C     myIter  :: Simulation timestep number
46    C     myThid  :: Thread no. that called this routine.
47  C     OUTPUT:  C     OUTPUT:
48  C     netHeatFlux :: net surface heat flux over open water or under ice  C     netHeatFlux :: net surface heat flux over open water or under ice
49  C     SWHeatFlux  :: short wave heat flux over open water or under ice  C     SWHeatFlux  :: short wave heat flux over open water or under ice
50        _RL UG         (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL UG         (1:sNx,1:sNy)
51        _RL TSURF      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL TSURF      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
52        _RL netHeatFlux(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL netHeatFlux(1:sNx,1:sNy)
53        _RL SWHeatFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL SWHeatFlux (1:sNx,1:sNy)
54        INTEGER bi, bj        _RL myTime
55          INTEGER bi, bj, myIter, myThid
56  CEndOfInterface  CEndOfInterface
57    
58  C     === Local variables ===  C     === Local variables ===
# Line 49  C     i,j - Loop counters Line 60  C     i,j - Loop counters
60        INTEGER i, j        INTEGER i, j
61  #ifndef SEAICE_EXTERNAL_FLUXES  #ifndef SEAICE_EXTERNAL_FLUXES
62        INTEGER ITER        INTEGER ITER
63        _RL  QS1, C1, C2, C3, C4, C5, TB, D1, D1W, D1I, D3        _RL  QS1, TB, D1, D1W, D3, TMELT
       _RL  TMELT, TMELTP, XKI, XKS, HCUT, ASNOW, XIO  
64  C     effective conductivity of combined ice and snow  C     effective conductivity of combined ice and snow
65        _RL  effConduct        _RL  effConduct
66  C     specific humidity at ice surface  C     specific humidity at ice surface
# Line 59  C     powers of temperature Line 69  C     powers of temperature
69        _RL  t1, t2, t3, t4        _RL  t1, t2, t3, t4
70    
71  C     local copies of global variables  C     local copies of global variables
72        _RL tsurfLoc   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL tsurfLoc   (1:sNx,1:sNy)
73        _RL atempLoc   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL atempLoc   (1:sNx,1:sNy)
74        _RL lwdownLoc  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL lwdownLoc  (1:sNx,1:sNy)
75        _RL ALB        (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL ALB        (1:sNx,1:sNy)
76  C     coefficients of Hibler (1980), appendix B  C     coefficients of Hibler (1980), appendix B
77        _RL A1         (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL A1         (1:sNx,1:sNy)
78        _RL A2         (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL A2         (1:sNx,1:sNy)
       _RL A3         (1-OLx:sNx+OLx,1-OLy:sNy+OLy)  
79  C     auxiliary variable  C     auxiliary variable
80        _RL B          (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL B          (1:sNx,1:sNy)
81    
82    #ifdef SEAICE_CLIM_AIR
83          _RL aqhLoc     (1:sNx,1:sNy)
84          _RL fac
85          logical first, changed
86          integer count0, count1
87    
88    C--   Compute indices and weights for seasonal interpolation
89          call cal_GetMonthsRec(
90         O     fac, first, changed,
91         O     count0, count1,
92         I     mytime, myiter, mythid
93         &     )
94    #endif /* SEAICE_CLIM_AIR */
95    
96  C NOW DEFINE ASSORTED CONSTANTS  C NOW DEFINE ASSORTED CONSTANTS
97  C SATURATION VAPOR PRESSURE CONSTANT  C SATURATION VAPOR PRESSURE CONSTANT
98        QS1=0.622 _d +00/1013.0 _d +00        QS1=0.622 _d +00/1013.0 _d +00
 C MAYKUTS CONSTANTS FOR SAT. VAP. PRESSURE TEMP. POLYNOMIAL  
       C1=2.7798202 _d -06  
       C2=-2.6913393 _d -03  
       C3=0.97920849 _d +00  
       C4=-158.63779 _d +00  
       C5=9653.1925 _d +00  
99  C FREEZING TEMPERATURE OF SEAWATER  C FREEZING TEMPERATURE OF SEAWATER
100        TB=271.2 _d +00        TB=271.2 _d +00
101  C SENSIBLE HEAT CONSTANT  C SENSIBLE HEAT CONSTANT
102        D1=SEAICE_sensHeat        D1=SEAICE_sensHeat
103  C WATER LATENT HEAT CONSTANT  C WATER LATENT HEAT CONSTANT
104        D1W=SEAICE_latentWater        D1W=SEAICE_latentWater
 C ICE LATENT HEAT CONSTANT  
       D1I=SEAICE_latentIce  
105  C STEFAN BOLTZMAN CONSTANT TIMES 0.97 EMISSIVITY  C STEFAN BOLTZMAN CONSTANT TIMES 0.97 EMISSIVITY
106        D3=SEAICE_emissivity        D3=SEAICE_emissivity
107  C MELTING TEMPERATURE OF ICE  C MELTING TEMPERATURE OF ICE
108        TMELT=273.16 _d +00        TMELT=273.16 _d +00
       TMELTP=273.159 _d +00  
 C ICE CONDUCTIVITY  
       XKI=SEAICE_iceConduct  
 C SNOW CONDUCTIVITY  
       XKS=SEAICE_snowConduct  
 C CUTOFF SNOW THICKNESS  
       HCUT=SEAICE_snowThick  
 C PENETRATION SHORTWAVE RADIATION FACTOR  
       XIO=SEAICE_shortwave  
109    
110        DO J=1,sNy        DO J=1,sNy
111         DO I=1,sNx         DO I=1,sNx
# Line 107  C PENETRATION SHORTWAVE RADIATION FACTOR Line 113  C PENETRATION SHORTWAVE RADIATION FACTOR
113          SWHeatFlux (I,J) = 0. _d 0          SWHeatFlux (I,J) = 0. _d 0
114  C      C    
115          tsurfLoc (I,J) = MIN(273.16 _d 0+MAX_TICE,TSURF(I,J,bi,bj))          tsurfLoc (I,J) = MIN(273.16 _d 0+MAX_TICE,TSURF(I,J,bi,bj))
116    # ifdef ALLOW_ATM_TEMP
117  C     Is this necessary?  C     Is this necessary?
118          atempLoc (I,J) = MAX(273.16 _d 0+MIN_ATEMP,ATEMP(I,J,bi,bj))          atempLoc (I,J) = MAX(273.16 _d 0+MIN_ATEMP,ATEMP(I,J,bi,bj))
119    # endif
120    #ifdef SEAICE_CLIM_AIR
121            atempLoc (I,J) = AREA(I,J,bi,bj) *
122         &       ( fac * SEAICE_clim_atemp(count0) + (1-fac) *
123         &       SEAICE_clim_atemp(count1) ) +
124         &       (1-AREA(I,J,bi,bj)) * atempLoc(I,J)
125            aqhLoc (I,J)   = AREA(I,J,bi,bj) *
126         &       ( fac * SEAICE_clim_aqh(count0) + (1-fac) *
127         &       SEAICE_clim_aqh(count1) ) +
128         &       (1-AREA(I,J,bi,bj)) * aqh(I,J,bi,bj)
129    #endif /* SEAICE_CLIM_AIR */
130    # ifdef ALLOW_DOWNWARD_RADIATION
131          lwdownLoc(I,J) = MAX(MIN_LWDOWN,LWDOWN(I,J,bi,bj))          lwdownLoc(I,J) = MAX(MIN_LWDOWN,LWDOWN(I,J,bi,bj))
132    # endif
133         ENDDO         ENDDO
134        ENDDO        ENDDO
135  #endif /* SEAICE_EXTERNAL_FLUXES */  #endif /* SEAICE_EXTERNAL_FLUXES */
# Line 123  C WATER ALBEDO IS ASSUMED TO BE THE CONS Line 143  C WATER ALBEDO IS ASSUMED TO BE THE CONS
143          SWHeatFlux (I,J) =  Qsw(I,J,bi,bj)          SWHeatFlux (I,J) =  Qsw(I,J,bi,bj)
144  #else /* SEAICE_EXTERNAL_FLUXES undefined */  #else /* SEAICE_EXTERNAL_FLUXES undefined */
145          ALB(I,J)=SEAICE_waterAlbedo                                          ALB(I,J)=SEAICE_waterAlbedo                                
146    # ifdef ALLOW_DOWNWARD_RADIATION
147    # ifdef SEAICE_CLIM_AIR
148            A1(I,J)=(ONE-ALB(I,J))*SWDOWN(I,J,bi,bj)
149         &       +lwdownLoc(I,J)*0.97 _d 0
150         &       +D1*UG(I,J)*atempLoc(I,J)+D1W*UG(I,J)*aqhLoc (I,J)
151    #else
152          A1(I,J)=(ONE-ALB(I,J))*SWDOWN(I,J,bi,bj)          A1(I,J)=(ONE-ALB(I,J))*SWDOWN(I,J,bi,bj)
153       &       +lwdownLoc(I,J)*0.97 _d 0       &       +lwdownLoc(I,J)*0.97 _d 0
154       &       +D1*UG(I,J)*atempLoc(I,J)+D1W*UG(I,J)*AQH(I,J,bi,bj)       &       +D1*UG(I,J)*atempLoc(I,J)+D1W*UG(I,J)*AQH(I,J,bi,bj)
155    #endif /* SEAICE_CLIM_AIR */
156          B(I,J)=QS1*6.11 _d +00*EXP(17.2694 _d +00          B(I,J)=QS1*6.11 _d +00*EXP(17.2694 _d +00
157       &       *(tsurfLoc(I,J)-TMELT)       &       *(tsurfLoc(I,J)-TMELT)
158       &       /(tsurfLoc(I,J)-TMELT+237.3 _d +00))       &       /(tsurfLoc(I,J)-TMELT+237.3 _d +00))
# Line 133  C WATER ALBEDO IS ASSUMED TO BE THE CONS Line 160  C WATER ALBEDO IS ASSUMED TO BE THE CONS
160       &       -D3*(tsurfLoc(I,J)**4)       &       -D3*(tsurfLoc(I,J)**4)
161          netHeatFlux(I,J)=-A1(I,J)-A2(I,J)              netHeatFlux(I,J)=-A1(I,J)-A2(I,J)    
162          SWHeatFlux (I,J)=-(ONE-ALB(I,J))*SWDOWN(I,J,bi,bj)          SWHeatFlux (I,J)=-(ONE-ALB(I,J))*SWDOWN(I,J,bi,bj)
163    # endif /* ALLOW_DOWNWARD_RADIATION */
164  #endif /* SEAICE_EXTERNAL_FLUXES */  #endif /* SEAICE_EXTERNAL_FLUXES */
165         ENDDO         ENDDO
166        ENDDO        ENDDO

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.22