/[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.5 by dimitri, Wed Dec 5 07:28:29 2007 UTC revision 1.9 by dimitri, Fri Jul 31 03:09: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, myThid )       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 37  C     INPUT: Line 37  C     INPUT:
37  C     UG      :: thermal wind of atmosphere  C     UG      :: thermal wind of atmosphere
38  C     TSURF   :: surface temperature of ocean in Kelvin  C     TSURF   :: surface temperature of ocean in Kelvin
39  C     bi,bj   :: loop indices  C     bi,bj   :: loop indices
40    C     myTime  :: Simulation time
41    C     myIter  :: Simulation timestep number
42  C     myThid  :: Thread no. that called this routine.  C     myThid  :: Thread no. that called this routine.
43  C     OUTPUT:  C     OUTPUT:
44  C     netHeatFlux :: net surface heat flux over open water or under ice  C     netHeatFlux :: net surface heat flux over open water or under ice
45  C     SWHeatFlux  :: short wave heat flux over open water or under ice  C     SWHeatFlux  :: short wave heat flux over open water or under ice
46        _RL UG         (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL UG         (1:sNx,1:sNy)
47        _RL TSURF      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)        _RL TSURF      (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
48        _RL netHeatFlux(1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL netHeatFlux(1:sNx,1:sNy)
49        _RL SWHeatFlux (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL SWHeatFlux (1:sNx,1:sNy)
50        INTEGER bi, bj, myThid        _RL myTime
51          INTEGER bi, bj, myIter, myThid
52  CEndOfInterface  CEndOfInterface
53    
54  C     === Local variables ===  C     === Local variables ===
# Line 62  C     powers of temperature Line 65  C     powers of temperature
65        _RL  t1, t2, t3, t4        _RL  t1, t2, t3, t4
66    
67  C     local copies of global variables  C     local copies of global variables
68        _RL tsurfLoc   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL tsurfLoc   (1:sNx,1:sNy)
69        _RL atempLoc   (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL atempLoc   (1:sNx,1:sNy)
70        _RL lwdownLoc  (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL lwdownLoc  (1:sNx,1:sNy)
71        _RL ALB        (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL ALB        (1:sNx,1:sNy)
72  C     coefficients of Hibler (1980), appendix B  C     coefficients of Hibler (1980), appendix B
73        _RL A1         (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL A1         (1:sNx,1:sNy)
74        _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)  
75  C     auxiliary variable  C     auxiliary variable
76        _RL B          (1-OLx:sNx+OLx,1-OLy:sNy+OLy)        _RL B          (1:sNx,1:sNy)
77    
78  C NOW DEFINE ASSORTED CONSTANTS  C NOW DEFINE ASSORTED CONSTANTS
79  C SATURATION VAPOR PRESSURE CONSTANT  C SATURATION VAPOR PRESSURE CONSTANT
# Line 93  C MELTING TEMPERATURE OF ICE Line 95  C MELTING TEMPERATURE OF ICE
95          SWHeatFlux (I,J) = 0. _d 0          SWHeatFlux (I,J) = 0. _d 0
96  C      C    
97          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))
98    # ifdef ALLOW_ATM_TEMP
99  C     Is this necessary?  C     Is this necessary?
 #ifdef ALLOW_ATM_TEMP  
100          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))
101  #else /* ALLOW_ATM_TEMP */  # endif
102          STOP 'ABNORMAL END: S/R SEAICE_BUDGET_OCE: ATM_TEMP undef'  # ifdef ALLOW_DOWNWARD_RADIATION
 #endif /* ALLOW_ATM_TEMP */  
 #ifdef ALLOW_DOWNWARD_RADIATION  
103          lwdownLoc(I,J) = MAX(MIN_LWDOWN,LWDOWN(I,J,bi,bj))          lwdownLoc(I,J) = MAX(MIN_LWDOWN,LWDOWN(I,J,bi,bj))
104  #else  # endif
         STOP  
      & 'ABNORMAL END: S/R SEAICE_BUDGET_OCE: DOWNWARD_RADIATION undef'  
 #endif  
105         ENDDO         ENDDO
106        ENDDO        ENDDO
107  #endif /* SEAICE_EXTERNAL_FLUXES */  #endif /* SEAICE_EXTERNAL_FLUXES */
# Line 118  C WATER ALBEDO IS ASSUMED TO BE THE CONS Line 115  C WATER ALBEDO IS ASSUMED TO BE THE CONS
115          SWHeatFlux (I,J) =  Qsw(I,J,bi,bj)          SWHeatFlux (I,J) =  Qsw(I,J,bi,bj)
116  #else /* SEAICE_EXTERNAL_FLUXES undefined */  #else /* SEAICE_EXTERNAL_FLUXES undefined */
117          ALB(I,J)=SEAICE_waterAlbedo                                          ALB(I,J)=SEAICE_waterAlbedo                                
118  #if defined(ALLOW_DOWNWARD_RADIATION) && defined(ALLOW_ATM_TEMP)  # ifdef ALLOW_DOWNWARD_RADIATION
119          A1(I,J)=(ONE-ALB(I,J))*SWDOWN(I,J,bi,bj)          A1(I,J)=(ONE-ALB(I,J))*SWDOWN(I,J,bi,bj)
120       &       +lwdownLoc(I,J)*0.97 _d 0       &       +lwdownLoc(I,J)*0.97 _d 0
121       &       +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)
# Line 129  C WATER ALBEDO IS ASSUMED TO BE THE CONS Line 126  C WATER ALBEDO IS ASSUMED TO BE THE CONS
126       &       -D3*(tsurfLoc(I,J)**4)       &       -D3*(tsurfLoc(I,J)**4)
127          netHeatFlux(I,J)=-A1(I,J)-A2(I,J)              netHeatFlux(I,J)=-A1(I,J)-A2(I,J)    
128          SWHeatFlux (I,J)=-(ONE-ALB(I,J))*SWDOWN(I,J,bi,bj)          SWHeatFlux (I,J)=-(ONE-ALB(I,J))*SWDOWN(I,J,bi,bj)
129  #else  # endif /* ALLOW_DOWNWARD_RADIATION */
         STOP  
      & 'ABNORMAL END: S/R SEAICE_BUDGET_OCE: DOWNWARD_RADIATION undef'  
 #endif  
130  #endif /* SEAICE_EXTERNAL_FLUXES */  #endif /* SEAICE_EXTERNAL_FLUXES */
131         ENDDO         ENDDO
132        ENDDO        ENDDO

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.9

  ViewVC Help
Powered by ViewVC 1.1.22