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

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

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

revision 1.3 by jmc, Mon Mar 13 03:53:40 2006 UTC revision 1.4 by jmc, Thu May 25 18:03:24 2006 UTC
# Line 6  C $Name$ Line 6  C $Name$
6  C     !ROUTINE: THSICE_CHECK_CONSERV  C     !ROUTINE: THSICE_CHECK_CONSERV
7  C     !INTERFACE:  C     !INTERFACE:
8        SUBROUTINE THSICE_CHECK_CONSERV(        SUBROUTINE THSICE_CHECK_CONSERV(
9       I             dBug, i, j, bi, bj, iceStart,       I             dBugFlag, i, j, bi, bj, iceStart,
10       I             iceFrac, compact, hIce, hSnow, qicen,       I             iceFrac, compact, hIce, hSnow, qicen,
11       I             qleft, ffresh, fsalt, flxAtm, frwAtm,       I             qleft, ffresh, fsalt,
12       I             myTime, myIter, myThid )       I             myTime, myIter, myThid )
13  C     *==========================================================*  C     *==========================================================*
14  C     | S/R  THSICE_CHECK_CONSERV  C     | S/R  THSICE_CHECK_CONSERV
# Line 31  C     === Routine arguments === Line 31  C     === Routine arguments ===
31  C     myIter :: iteration counter for this thread  C     myIter :: iteration counter for this thread
32  C     myTime :: time counter for this thread  C     myTime :: time counter for this thread
33  C     myThid :: thread number for this instance of the routine.  C     myThid :: thread number for this instance of the routine.
34        LOGICAL dBug        LOGICAL dBugFlag
35        INTEGER i,j, bi,bj        INTEGER i,j, bi,bj
36        INTEGER iceStart        INTEGER iceStart
37        _RL iceFrac        _RL iceFrac
38        _RL compact, hIce, hSnow, qicen(nlyr)        _RL compact, hIce, hSnow, qicen(nlyr)
39        _RL qleft, fsalt, ffresh        _RL qleft, fsalt, ffresh
       _RL flxAtm, frwAtm  
40        _RL  myTime        _RL  myTime
41        INTEGER myIter        INTEGER myIter
42        INTEGER myThid        INTEGER myThid
# Line 47  C     !LOCAL VARIABLES: Line 46  C     !LOCAL VARIABLES:
46  C     === Local variables ===  C     === Local variables ===
47        _RL dEnerg, dWater, dSalt        _RL dEnerg, dWater, dSalt
48        _RL flxFrac        _RL flxFrac
49          _RL flxAtm, frwAtm
50          LOGICAL dBugLoc
51    
52    C-    define grid-point location where to print debugging values
53    #include "THSICE_DEBUG.h"
54    
55   1010 FORMAT(A,1P4E14.6)   1010 FORMAT(A,1P4E14.6)
56    
57              dBugLoc = .FALSE.
58    #ifdef ALLOW_DBUG_THSICE
59              dBugLoc = dBug(i,j,bi,bj)
60    #endif
61            flxFrac = iceFrac            flxFrac = iceFrac
62              flxAtm = icFlxAtm(i,j,bi,bj)
63              frwAtm = icFrwAtm(i,j,bi,bj)
64            IF (iceStart.EQ.1) flxFrac = 1.            IF (iceStart.EQ.1) flxFrac = 1.
65    
66  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
# Line 59  C---+----1----+----2----+----3----+----4 Line 69  C---+----1----+----2----+----3----+----4
69       &             *(Qice1(i,j,bi,bj)+Qice2(i,j,bi,bj))*0.5       &             *(Qice1(i,j,bi,bj)+Qice2(i,j,bi,bj))*0.5
70            dWater = rhos*snowheight(i,j,bi,bj)+rhoi*iceHeight(i,j,bi,bj)            dWater = rhos*snowheight(i,j,bi,bj)+rhoi*iceHeight(i,j,bi,bj)
71            dSalt =  rhoi*iceHeight(i,j,bi,bj)*saltice            dSalt =  rhoi*iceHeight(i,j,bi,bj)*saltice
72           IF (dBug) WRITE(6,1010) 'ThSI_CHK: Ener0,Water0,Salt0 =',           IF (dBugLoc) WRITE(6,1010) 'ThSI_CHK: Ener0,Water0,Salt0 =',
73       &    dEnerg, dWater, dSalt       &    dEnerg, dWater, dSalt
74  C--  C--
75            dEnerg = dEnerg*iceFrac            dEnerg = dEnerg*iceFrac
# Line 71  C-- Line 81  C--
81            dSalt =  dSalt*iceFrac            dSalt =  dSalt*iceFrac
82       &     - compact* rhoi*hIce*saltice       &     - compact* rhoi*hIce*saltice
83    
84           IF (dBug) WRITE(6,1010) 'ThSI_CHK: dEner,dH20,dSal /dt=',           IF (dBugLoc) WRITE(6,1010) 'ThSI_CHK: dEner,dH20,dSal /dt=',
85       &    dEnerg/thSIce_deltaT,dWater/thSIce_deltaT,dSalt/thSIce_deltaT       &    dEnerg/thSIce_deltaT,dWater/thSIce_deltaT,dSalt/thSIce_deltaT
86           IF (dBug) WRITE(6,1010) 'ThSI_CHK: fxH,fxW,fxS=',flxAtm-qleft,           IF (dBugLoc) WRITE(6,1010) 'ThSI_CHK: fxH,fxW,fxS=',
87       &     -ffresh-frwAtm,-fsalt       &    flxAtm-qleft, -ffresh-frwAtm,-fsalt
88            dEnerg = dEnerg + thSIce_deltaT*flxFrac*(flxAtm-qleft)            dEnerg = dEnerg + thSIce_deltaT*flxFrac*(flxAtm-qleft)
89            dWater = dWater - thSIce_deltaT*flxFrac*(ffresh+frwAtm)            dWater = dWater - thSIce_deltaT*flxFrac*(ffresh+frwAtm)
90            dSalt  = dSalt  - thSIce_deltaT*flxFrac*fsalt            dSalt  = dSalt  - thSIce_deltaT*flxFrac*fsalt
# Line 88  C-- Line 98  C--
98       &          + dSalt       &          + dSalt
99  #endif /*ALLOW_TIMEAVE*/  #endif /*ALLOW_TIMEAVE*/
100  C--  C--
101           IF (dBug) WRITE(6,1010) 'ThSI_CHK: resid.H,W,S=',           IF (dBugLoc) WRITE(6,1010) 'ThSI_CHK: resid.H,W,S=',
102       &    dEnerg/thSIce_deltaT,dWater/thSIce_deltaT,dSalt/thSIce_deltaT       &    dEnerg/thSIce_deltaT,dWater/thSIce_deltaT,dSalt/thSIce_deltaT
103           IF (dBug) WRITE(6,1010) 'ThSI_CHK: hIc,hSn,snow*dt=',           IF (dBugLoc) WRITE(6,1010) 'ThSI_CHK: hIc,hSn,snow*dt=',
104       &    hIce, hSnow, snowPrc(i,j,bi,bj)*thSIce_deltaT/rhos       &    hIce, hSnow, snowPrc(i,j,bi,bj)*thSIce_deltaT/rhos
105    
106  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|  C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.4

  ViewVC Help
Powered by ViewVC 1.1.22