File indexing completed on 2023-05-06 05:10:22 UTC
view on githubraw 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