File indexing completed on 2025-11-07 06:08:53 UTC
view on githubraw file Latest commit b7411f1a on 2025-11-06 19:05:26 UTC
fc7306ba7d Jean*0001 #include "THSICE_OPTIONS.h"
17fd302697 Jean*0002
fc7306ba7d Jean*0003
0004
0005 SUBROUTINE THSICE_CHECK_CONSERV(
7269783f6f Jean*0006 I dBugFlag, i, j, bi, bj, iceStart,
fc7306ba7d Jean*0007 I iceFrac, compact, hIce, hSnow, qicen,
7269783f6f Jean*0008 I qleft, ffresh, fsalt,
fc7306ba7d Jean*0009 I myTime, myIter, myThid )
0010
17fd302697 Jean*0011
fc7306ba7d Jean*0012
0013
0014
0015
0016 IMPLICIT NONE
0017
0018 #include "SIZE.h"
0019 #include "EEPARAMS.h"
0020
0021 #include "THSICE_SIZE.h"
0022 #include "THSICE_PARAMS.h"
87ea84cac6 Jean*0023 #include "THSICE_VARS.h"
17fd302697 Jean*0024
fc7306ba7d Jean*0025
0026
0027
0028
0029
7269783f6f Jean*0030 LOGICAL dBugFlag
fc7306ba7d Jean*0031 INTEGER i,j, bi,bj
0032 INTEGER iceStart
0033 _RL iceFrac
0034 _RL compact, hIce, hSnow, qicen(nlyr)
0035 _RL qleft, fsalt, ffresh
0036 _RL myTime
0037 INTEGER myIter
0038 INTEGER myThid
0039
0040 #ifdef ALLOW_THSICE
0041
0042
0043 _RL dEnerg, dWater, dSalt
0044 _RL flxFrac
7269783f6f Jean*0045 _RL flxAtm, frwAtm
0046 LOGICAL dBugLoc
0047
0048
0049 #include "THSICE_DEBUG.h"
fc7306ba7d Jean*0050
17fd302697 Jean*0051 1010 FORMAT(A,1P4E14.6)
fc7306ba7d Jean*0052
7269783f6f Jean*0053 dBugLoc = .FALSE.
0054 #ifdef ALLOW_DBUG_THSICE
0055 dBugLoc = dBug(i,j,bi,bj)
0056 #endif
fc7306ba7d Jean*0057 flxFrac = iceFrac
7269783f6f Jean*0058 flxAtm = icFlxAtm(i,j,bi,bj)
0059 frwAtm = icFrwAtm(i,j,bi,bj)
fc7306ba7d Jean*0060 IF (iceStart.EQ.1) flxFrac = 1.
0061
0062
17fd302697 Jean*0063 dEnerg= -rhos*snowHeight(i,j,bi,bj)*qsnow
fc7306ba7d Jean*0064 & -rhoi*iceHeight(i,j,bi,bj)
0065 & *(Qice1(i,j,bi,bj)+Qice2(i,j,bi,bj))*0.5
0066 dWater = rhos*snowheight(i,j,bi,bj)+rhoi*iceHeight(i,j,bi,bj)
0067 dSalt = rhoi*iceHeight(i,j,bi,bj)*saltice
7269783f6f Jean*0068 IF (dBugLoc) WRITE(6,1010) 'ThSI_CHK: Ener0,Water0,Salt0 =',
fc7306ba7d Jean*0069 & dEnerg, dWater, dSalt
0070
0071 dEnerg = dEnerg*iceFrac
17fd302697 Jean*0072 & + compact*( rhos*hSnow*qsnow
fc7306ba7d Jean*0073 & + rhoi*hIce*(qicen(1)+qicen(2))*0.5
0074 & )
0075 dWater = dWater*iceFrac
0076 & - compact*( rhos*hSnow + rhoi*hIce )
0077 dSalt = dSalt*iceFrac
0078 & - compact* rhoi*hIce*saltice
0079
7269783f6f Jean*0080 IF (dBugLoc) WRITE(6,1010) 'ThSI_CHK: dEner,dH20,dSal /dt=',
fc7306ba7d Jean*0081 & dEnerg/thSIce_deltaT,dWater/thSIce_deltaT,dSalt/thSIce_deltaT
7269783f6f Jean*0082 IF (dBugLoc) WRITE(6,1010) 'ThSI_CHK: fxH,fxW,fxS=',
0083 & flxAtm-qleft, -ffresh-frwAtm,-fsalt
fc7306ba7d Jean*0084 dEnerg = dEnerg + thSIce_deltaT*flxFrac*(flxAtm-qleft)
87ea84cac6 Jean*0085 dWater = dWater - thSIce_deltaT*flxFrac*(ffresh+frwAtm)
fc7306ba7d Jean*0086 dSalt = dSalt - thSIce_deltaT*flxFrac*fsalt
0087
b7411f1a84 Jean*0088
0089
0090
0091
0092
0093
0094
0095
fc7306ba7d Jean*0096
7269783f6f Jean*0097 IF (dBugLoc) WRITE(6,1010) 'ThSI_CHK: resid.H,W,S=',
fc7306ba7d Jean*0098 & dEnerg/thSIce_deltaT,dWater/thSIce_deltaT,dSalt/thSIce_deltaT
7269783f6f Jean*0099 IF (dBugLoc) WRITE(6,1010) 'ThSI_CHK: hIc,hSn,snow*dt=',
8d49675495 Jean*0100 & hIce, hSnow
0101
fc7306ba7d Jean*0102
0103
0104
0105 #endif /*ALLOW_THSICE*/
0106
0107 RETURN
0108 END