/[MITgcm]/MITgcm/pkg/thsice/thsice_check_conserv.F
ViewVC logotype

Annotation of /MITgcm/pkg/thsice/thsice_check_conserv.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Sun Nov 23 01:20:13 2003 UTC (20 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint52l_pre, checkpoint52e_pre, hrcube4, checkpoint52j_post, checkpoint52e_post, hrcube_1, branch-netcdf, checkpoint52d_pre, checkpoint52l_post, checkpoint52k_post, checkpoint52d_post, checkpoint52b_post, checkpoint52f_post, checkpoint52c_post, hrcube5, checkpoint52i_post, checkpoint52j_pre, checkpoint52i_pre, checkpoint52h_pre, checkpoint52f_pre, hrcube_2, hrcube_3
Branch point for: netcdf-sm0
new pkg "thSIce" (replace therm_seaice).

1 jmc 1.1 C $Header: $
2     C $Name: $
3    
4     #include "THSICE_OPTIONS.h"
5    
6     C !ROUTINE: THSICE_CHECK_CONSERV
7     C !INTERFACE:
8     SUBROUTINE THSICE_CHECK_CONSERV(
9     I dBug, i, j, bi, bj, iceStart,
10     I iceFrac, compact, hIce, hSnow, qicen,
11     I qleft, ffresh, fsalt, flxAtm, frwAtm,
12     I myTime, myIter, myThid )
13     C *==========================================================*
14     C | SUBROUTINE THSICE_CHECK_CONSERV
15     C | o Check Conservation of Energy, water and salt
16     C *==========================================================*
17    
18     C !USES:
19     IMPLICIT NONE
20     C === Global variables ===
21     #include "SIZE.h"
22     #include "EEPARAMS.h"
23     c #include "PARAMS.h"
24     #include "THSICE_SIZE.h"
25     #include "THSICE_PARAMS.h"
26     #include "THSICE.h"
27     #include "THSICE_DIAGS.h"
28    
29     C !INPUT/OUTPUT PARAMETERS:
30     C === Routine arguments ===
31     C myIter :: iteration counter for this thread
32     C myTime :: time counter for this thread
33     C myThid :: thread number for this instance of the routine.
34     LOGICAL dBug
35     INTEGER i,j, bi,bj
36     INTEGER iceStart
37     _RL iceFrac
38     _RL compact, hIce, hSnow, qicen(nlyr)
39     _RL qleft, fsalt, ffresh
40     _RL flxAtm, frwAtm
41     _RL myTime
42     INTEGER myIter
43     INTEGER myThid
44    
45     #ifdef ALLOW_THSICE
46     C !LOCAL VARIABLES:
47     C === Local variables ===
48     _RL dEnerg, dWater, dSalt
49     _RL flxFrac
50    
51     1010 FORMAT(A,1P4E11.3)
52    
53     c iceFrac = iceMask(i,j,bi,bj)
54     flxFrac = iceFrac
55     IF (iceStart.EQ.1) flxFrac = 1.
56    
57     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
58     dEnerg= -rhos*snowHeight(i,j,bi,bj)*qsnow
59     & -rhoi*iceHeight(i,j,bi,bj)
60     & *(Qice1(i,j,bi,bj)+Qice2(i,j,bi,bj))*0.5
61     dWater = rhos*snowheight(i,j,bi,bj)+rhoi*iceHeight(i,j,bi,bj)
62     dSalt = rhoi*iceHeight(i,j,bi,bj)*saltice
63     IF (dBug) WRITE(6,1010) 'ThSI_CHK: Ener0,Water0,Salt0 =',
64     & dEnerg, dWater, dSalt
65     C--
66     dEnerg = dEnerg*iceFrac
67     & + compact*( rhos*hSnow*qsnow
68     & + rhoi*hIce*(qicen(1)+qicen(2))*0.5
69     & )
70     dWater = dWater*iceFrac
71     & - compact*( rhos*hSnow + rhoi*hIce )
72     dSalt = dSalt*iceFrac
73     & - compact* rhoi*hIce*saltice
74    
75     IF (dBug) WRITE(6,1010) 'ThSI_CHK: dEner,dH20,dSal /dt=',
76     & dEnerg/thSIce_deltaT,dWater/thSIce_deltaT,dSalt/thSIce_deltaT
77     IF (dBug) WRITE(6,1010) 'ThSI_CHK: fxH,fxW,fxS=',flxAtm-qleft,
78     & -ffresh-frwAtm*rhofw,-fsalt
79     dEnerg = dEnerg + thSIce_deltaT*flxFrac*(flxAtm-qleft)
80     dWater = dWater - thSIce_deltaT*flxFrac*(ffresh+frwAtm*rhofw)
81     dSalt = dSalt - thSIce_deltaT*flxFrac*fsalt
82    
83     #ifdef ALLOW_TIMEAVE
84     ICE_qleft_AVE(i,j,bi,bj) = ICE_qleft_AVE(i,j,bi,bj)
85     & + dEnerg
86     ICE_fresh_AVE(i,j,bi,bj) = ICE_fresh_AVE(i,j,bi,bj)
87     & + dWater
88     ICE_salFx_AVE(i,j,bi,bj) = ICE_salFx_AVE(i,j,bi,bj)
89     & + dSalt
90     #endif /*ALLOW_TIMEAVE*/
91     C--
92     IF (dBug) WRITE(6,1010) 'ThSI_CHK: resid.H,W,S=',
93     & dEnerg/thSIce_deltaT,dWater/thSIce_deltaT,dSalt/thSIce_deltaT
94     IF (dBug) WRITE(6,1010) 'ThSI_CHK: hIc,hSn,snow*dt=',
95     & hIce, hSnow, snow(i,j,bi,bj)*thSIce_deltaT
96    
97     C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
98    
99     #endif /*ALLOW_THSICE*/
100    
101     RETURN
102     END

  ViewVC Help
Powered by ViewVC 1.1.22