11 |
I qleft, ffresh, fsalt, flxAtm, frwAtm, |
I qleft, ffresh, fsalt, flxAtm, frwAtm, |
12 |
I myTime, myIter, myThid ) |
I myTime, myIter, myThid ) |
13 |
C *==========================================================* |
C *==========================================================* |
14 |
C | SUBROUTINE THSICE_CHECK_CONSERV |
C | S/R THSICE_CHECK_CONSERV |
15 |
C | o Check Conservation of Energy, water and salt |
C | o Check Conservation of Energy, water and salt |
16 |
C *==========================================================* |
C *==========================================================* |
17 |
|
|
23 |
c #include "PARAMS.h" |
c #include "PARAMS.h" |
24 |
#include "THSICE_SIZE.h" |
#include "THSICE_SIZE.h" |
25 |
#include "THSICE_PARAMS.h" |
#include "THSICE_PARAMS.h" |
26 |
#include "THSICE.h" |
#include "THSICE_VARS.h" |
27 |
#include "THSICE_DIAGS.h" |
#include "THSICE_TAVE.h" |
28 |
|
|
29 |
C !INPUT/OUTPUT PARAMETERS: |
C !INPUT/OUTPUT PARAMETERS: |
30 |
C === Routine arguments === |
C === Routine arguments === |
50 |
|
|
51 |
1010 FORMAT(A,1P4E11.3) |
1010 FORMAT(A,1P4E11.3) |
52 |
|
|
|
c iceFrac = iceMask(i,j,bi,bj) |
|
53 |
flxFrac = iceFrac |
flxFrac = iceFrac |
54 |
IF (iceStart.EQ.1) flxFrac = 1. |
IF (iceStart.EQ.1) flxFrac = 1. |
55 |
|
|
74 |
IF (dBug) WRITE(6,1010) 'ThSI_CHK: dEner,dH20,dSal /dt=', |
IF (dBug) WRITE(6,1010) 'ThSI_CHK: dEner,dH20,dSal /dt=', |
75 |
& dEnerg/thSIce_deltaT,dWater/thSIce_deltaT,dSalt/thSIce_deltaT |
& dEnerg/thSIce_deltaT,dWater/thSIce_deltaT,dSalt/thSIce_deltaT |
76 |
IF (dBug) WRITE(6,1010) 'ThSI_CHK: fxH,fxW,fxS=',flxAtm-qleft, |
IF (dBug) WRITE(6,1010) 'ThSI_CHK: fxH,fxW,fxS=',flxAtm-qleft, |
77 |
& -ffresh-frwAtm*rhofw,-fsalt |
& -ffresh-frwAtm,-fsalt |
78 |
dEnerg = dEnerg + thSIce_deltaT*flxFrac*(flxAtm-qleft) |
dEnerg = dEnerg + thSIce_deltaT*flxFrac*(flxAtm-qleft) |
79 |
dWater = dWater - thSIce_deltaT*flxFrac*(ffresh+frwAtm*rhofw) |
dWater = dWater - thSIce_deltaT*flxFrac*(ffresh+frwAtm) |
80 |
dSalt = dSalt - thSIce_deltaT*flxFrac*fsalt |
dSalt = dSalt - thSIce_deltaT*flxFrac*fsalt |
81 |
|
|
82 |
#ifdef ALLOW_TIMEAVE |
#ifdef ALLOW_TIMEAVE |
83 |
ICE_qleft_AVE(i,j,bi,bj) = ICE_qleft_AVE(i,j,bi,bj) |
ice_flx2oc_Ave(i,j,bi,bj) = ice_flx2oc_Ave(i,j,bi,bj) |
84 |
& + dEnerg |
& + dEnerg |
85 |
ICE_fresh_AVE(i,j,bi,bj) = ICE_fresh_AVE(i,j,bi,bj) |
ice_frw2oc_Ave(i,j,bi,bj) = ice_frw2oc_Ave(i,j,bi,bj) |
86 |
& + dWater |
& + dWater |
87 |
ICE_salFx_AVE(i,j,bi,bj) = ICE_salFx_AVE(i,j,bi,bj) |
ice_salFx_Ave(i,j,bi,bj) = ice_salFx_Ave(i,j,bi,bj) |
88 |
& + dSalt |
& + dSalt |
89 |
#endif /*ALLOW_TIMEAVE*/ |
#endif /*ALLOW_TIMEAVE*/ |
90 |
C-- |
C-- |
91 |
IF (dBug) WRITE(6,1010) 'ThSI_CHK: resid.H,W,S=', |
IF (dBug) WRITE(6,1010) 'ThSI_CHK: resid.H,W,S=', |
92 |
& dEnerg/thSIce_deltaT,dWater/thSIce_deltaT,dSalt/thSIce_deltaT |
& dEnerg/thSIce_deltaT,dWater/thSIce_deltaT,dSalt/thSIce_deltaT |
93 |
IF (dBug) WRITE(6,1010) 'ThSI_CHK: hIc,hSn,snow*dt=', |
IF (dBug) WRITE(6,1010) 'ThSI_CHK: hIc,hSn,snow*dt=', |
94 |
& hIce, hSnow, snow(i,j,bi,bj)*thSIce_deltaT |
& hIce, hSnow, snowPrc(i,j,bi,bj)*thSIce_deltaT/rhos |
95 |
|
|
96 |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| |
97 |
|
|