** Warning **
Issuing rollback() due to DESTROY without explicit disconnect() of DBD::mysql::db handle dbname=MITgcm at /usr/local/share/lxr/lib/LXR/Common.pm line 1224.
Last-Modified: Wed, 4 Nov 2025 06:09:27 GMT
Content-Type: text/html; charset=utf-8
MITgcm/MITgcm/pkg/seaice/seaice_budget_ocean.F
File indexing completed on 2023-05-06 05:10:22 UTC
view on github raw file Latest commit 8377b8ee on 2023-05-05 23:17:05 UTC
500c623734 Mart* 0001 #include "SEAICE_OPTIONS.h "
8377b8ee87 Mart* 0002 #ifdef ALLOW_EXF
0003 # include "EXF_OPTIONS.h "
0004 #endif
500c623734 Mart* 0005
0006
0007 SUBROUTINE SEAICE_BUDGET_OCEAN (
0008 I UG ,
4dbf9a1125 Jean* 0009 I TSURF ,
500c623734 Mart* 0010 O netHeatFlux , SWHeatFlux ,
1ce2a5cdfd Dimi* 0011 I bi , bj , myTime , myIter , myThid )
4dbf9a1125 Jean* 0012
0013
0014
0015
0016
0017
0018
500c623734 Mart* 0019 IMPLICIT NONE
0020
0021
0022 #include "SIZE.h "
0023 #include "EEPARAMS.h "
0024 #include "FFIELDS.h "
b4e48588dd Mart* 0025 #ifndef SEAICE_EXTERNAL_FLUXES
0026 # include "PARAMS.h "
0027 # include "GRID.h "
7303eab4f2 Patr* 0028 # include "SEAICE_SIZE.h "
b4e48588dd Mart* 0029 # include "SEAICE_PARAMS.h "
0030 # ifdef ALLOW_EXF
0031 # include "EXF_FIELDS.h "
0032 # endif
ae1fb66b64 Dimi* 0033 #endif
500c623734 Mart* 0034
0035
0036
0037
4dbf9a1125 Jean* 0038
500c623734 Mart* 0039
1ce2a5cdfd Dimi* 0040
0041
7a1536dd10 Mart* 0042
500c623734 Mart* 0043
0044
0045
6eb23881b9 Dimi* 0046 _RL UG (1:sNx ,1:sNy )
4dbf9a1125 Jean* 0047 _RL TSURF (1:sNx ,1:sNy )
6eb23881b9 Dimi* 0048 _RL netHeatFlux (1:sNx ,1:sNy )
0049 _RL SWHeatFlux (1:sNx ,1:sNy )
1ce2a5cdfd Dimi* 0050 _RL myTime
0051 INTEGER bi , bj , myIter , myThid
500c623734 Mart* 0052
0053
0054
0055
0056 INTEGER i , j
0057 #ifndef SEAICE_EXTERNAL_FLUXES
5552aab1d3 Dimi* 0058 _RL QS1 , D1 , D1W , D3 , TMELT
500c623734 Mart* 0059
0060
6eb23881b9 Dimi* 0061 _RL tsurfLoc (1:sNx ,1:sNy )
0062 _RL atempLoc (1:sNx ,1:sNy )
0063 _RL lwdownLoc (1:sNx ,1:sNy )
362c253f5c Mart* 0064
500c623734 Mart* 0065
362c253f5c Mart* 0066 _RL ssq , sstdegC
0067 _RL recip_rhoConstFresh , recip_lhEvap
500c623734 Mart* 0068
0069
0070
4dbf9a1125 Jean* 0071 QS1 =0.622 _d 0/1013.0 _d 0
500c623734 Mart* 0072
fff6be1885 Mart* 0073 D1 =SEAICE_dalton *SEAICE_cpAir *SEAICE_rhoAir
500c623734 Mart* 0074
fff6be1885 Mart* 0075 D1W =SEAICE_dalton *SEAICE_lhEvap *SEAICE_rhoAir
d778130a13 Mart* 0076
0077 D3 =SEAICE_emissivity *SEAICE_boltzmann
500c623734 Mart* 0078
adff6dba40 Jean* 0079 TMELT = celsius2K
4dbf9a1125 Jean* 0080
362c253f5c Mart* 0081 recip_lhEvap = 1./SEAICE_lhEvap
0082 recip_rhoConstFresh = 1./rhoConstFresh
500c623734 Mart* 0083
8377b8ee87 Mart* 0084 DO j =1,sNy
0085 DO i =1,sNx
0086 netHeatFlux (i ,j ) = 0. _d 0
0087 SWHeatFlux (i ,j ) = 0. _d 0
4dbf9a1125 Jean* 0088
042d274f05 Mart* 0089
0090
8377b8ee87 Mart* 0091 tsurfLoc (i ,j ) = TSURF (i ,j )
1ce2a5cdfd Dimi* 0092 # ifdef ALLOW_ATM_TEMP
500c623734 Mart* 0093
8377b8ee87 Mart* 0094 atempLoc (i ,j ) = MAX(celsius2K +MIN_ATEMP ,ATEMP (i ,j ,bi ,bj ))
1ce2a5cdfd Dimi* 0095 # endif
0096 # ifdef ALLOW_DOWNWARD_RADIATION
8377b8ee87 Mart* 0097 lwdownLoc (i ,j ) = MAX(MIN_LWDOWN ,LWDOWN (i ,j ,bi ,bj ))
1ce2a5cdfd Dimi* 0098 # endif
500c623734 Mart* 0099 ENDDO
0100 ENDDO
0101 #endif /* SEAICE_EXTERNAL_FLUXES */
0102
0103
0104
8377b8ee87 Mart* 0105 DO j =1,sNy
0106 DO i =1,sNx
500c623734 Mart* 0107 #ifdef SEAICE_EXTERNAL_FLUXES
8377b8ee87 Mart* 0108 netHeatFlux (i ,j ) = Qnet (i ,j ,bi ,bj )
0109 SWHeatFlux (i ,j ) = Qsw (i ,j ,bi ,bj )
500c623734 Mart* 0110 #else /* SEAICE_EXTERNAL_FLUXES undefined */
4dbf9a1125 Jean* 0111
b4e48588dd Mart* 0112
0113
4dbf9a1125 Jean* 0114
0115
b4e48588dd Mart* 0116
1ce2a5cdfd Dimi* 0117 # ifdef ALLOW_DOWNWARD_RADIATION
362c253f5c Mart* 0118
8377b8ee87 Mart* 0119 SWHeatFlux (i ,j ) = (SEAICE_waterAlbedo - 1. _d 0)
0120 & *swdown (i ,j ,bi ,bj )
d778130a13 Mart* 0121
0122
0123
8377b8ee87 Mart* 0124 lwflux (i ,j ,bi ,bj ) = - lwdownLoc (i ,j )*SEAICE_emissivity
0125 & + D3 *tsurfLoc (i ,j )**4
0126 sstdegC = tsurfLoc (i ,j ) - TMELT
362c253f5c Mart* 0127
8377b8ee87 Mart* 0128 hs (i ,j ,bi ,bj ) = D1 *UG (i ,j )*(atempLoc (i ,j )-tsurfLoc (i ,j ))
362c253f5c Mart* 0129
4dbf9a1125 Jean* 0130 ssq = QS1 *6.11 _d 0 *EXP( 17.2694 _d 0
0131 & *sstdegC /(sstdegC +237.3 _d 0) )
362c253f5c Mart* 0132
8377b8ee87 Mart* 0133 hl (i ,j ,bi ,bj ) = D1W *UG (i ,j )*(AQH (i ,j ,bi ,bj )-ssq )
362c253f5c Mart* 0134
8377b8ee87 Mart* 0135 netHeatFlux (i ,j )=SWHeatFlux (i ,j )
0136 & + lwflux (i ,j ,bi ,bj )
0137 & - hs (i ,j ,bi ,bj ) - hl (i ,j ,bi ,bj )
4dbf9a1125 Jean* 0138
362c253f5c Mart* 0139
8377b8ee87 Mart* 0140 evap (i ,j ,bi ,bj ) = -hl (i ,j ,bi ,bj )
b4e48588dd Mart* 0141 & *recip_lhEvap *recip_rhoConstFresh
0142
0143 sflux (i ,j ,bi ,bj ) = evap (i ,j ,bi ,bj ) - precip (i ,j ,bi ,bj )
0144 # ifdef ALLOW_RUNOFF
0145 sflux (i ,j ,bi ,bj ) = sflux (i ,j ,bi ,bj ) - runoff (i ,j ,bi ,bj )
0146 # endif
ec0d7df165 Mart* 0147 sflux (i ,j ,bi ,bj ) = sflux (i ,j ,bi ,bj )
b4e48588dd Mart* 0148 empmr (i ,j ,bi ,bj ) = sflux (i ,j ,bi ,bj )*rhoConstFresh
1ce2a5cdfd Dimi* 0149 # endif /* ALLOW_DOWNWARD_RADIATION */
500c623734 Mart* 0150 #endif /* SEAICE_EXTERNAL_FLUXES */
0151 ENDDO
0152 ENDDO
0153
0154 RETURN
0155 END