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

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

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


Revision 1.3 - (hide annotations) (download)
Fri Feb 10 00:30:32 2006 UTC (18 years, 3 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint58e_post, checkpoint58d_post, checkpoint58c_post, checkpoint58a_post, checkpoint58b_post
Changes since 1.2: +3 -3 lines
put the right units in Qice description (change only commented lines)

1 jmc 1.3 C $Header: /u/gcmpack/MITgcm/pkg/thsice/thsice_extend.F,v 1.2 2004/12/17 03:44:52 jmc Exp $
2 jmc 1.1 C $Name: $
3    
4     #include "THSICE_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: THSICE_EXTEND
8     C !INTERFACE:
9     SUBROUTINE THSICE_EXTEND(
10     I esurp, Tf,
11     U sst, compact, iceThick, snowThick, qicen,
12     O qleft, fresh, fsalt,
13     I dBugFlag, myThid )
14     C !DESCRIPTION: \bv
15     C *==========================================================*
16     C | S/R THSICE_EXTEND
17     C | o Extend sea-ice area incresing ice fraction
18     C *==========================================================*
19     C | o incorporate surplus of energy to
20     C | make new ice or make ice grow laterally
21     C *==========================================================*
22     C \ev
23    
24     C !USES:
25     IMPLICIT NONE
26    
27     C == Global variables ==
28 jmc 1.2 #include "EEPARAMS.h"
29 jmc 1.1 #include "THSICE_SIZE.h"
30     #include "THSICE_PARAMS.h"
31    
32     C !INPUT/OUTPUT PARAMETERS:
33     C == Routine Arguments ==
34     C esurp :: energy available for freezing [W/m2]
35     C Tf :: freezing temperature [oC]
36     C sst :: Sea Surf Temp. [oC]
37     C compact :: fraction of grid area covered in ice
38     C iceThick :: ice height [m]
39     C snowThick:: snow height [m]
40 jmc 1.3 C qicen :: ice enthalpy [J/kg]
41 jmc 1.1 C qleft :: (additional) heat flux to ocean [W/m2]
42     C fsalt :: (additional) salt flux to ocean [ g/m2/s]
43     C fresh :: (additional) fresh water flux to ocean [kg/m2/s]
44     C dBugFlag :: allow to print debugging stuff (e.g. on 1 grid point).
45     C myThid :: thread number for this instance of the routine.
46     _RL esurp
47     _RL Tf
48     _RL sst
49     _RL compact
50     _RL iceThick
51     _RL snowThick
52     _RL qicen(nlyr)
53     _RL qleft
54     _RL fresh
55     _RL fsalt
56     LOGICAL dBugFlag
57     INTEGER myThid
58     CEOP
59    
60     #ifdef ALLOW_THSICE
61    
62     C !LOCAL VARIABLES:
63     C == Local variables ==
64 jmc 1.3 C qicAv :: mean enthalpy of ice (layer 1 & 2) [J/m^3]
65 jmc 1.1 _RL deltaTice ! time-step for ice model
66     _RL newIce
67     _RL newIceFrac
68     _RL iceFraction
69     _RL qicAv
70     LOGICAL dBug
71    
72     1010 FORMAT(A,I3,3F8.3)
73     1020 FORMAT(A,1P4E11.3)
74     dBug = .FALSE.
75     c dBug = dBugFlag
76    
77     C-- start ice
78     deltaTice = thSIce_deltaT
79     iceFraction = compact
80     newIceFrac = 0. _d 0
81    
82     C- enthalpy of new ice to form :
83     IF ( compact.LE.0. _d 0 ) THEN
84     qicen(1)= -cpwater*Tmlt1
85     & + cpice *(Tmlt1-Tf) + Lfresh*(1. _d 0-Tmlt1/Tf)
86     qicen(2)= -cpice *Tf + Lfresh
87     ENDIF
88     qicAv = rhoi*(qicen(1)+qicen(2))*0.5 _d 0
89     newIce = esurp*deltaTice/qicAv
90    
91     IF (iceFraction.EQ.0. _d 0) THEN
92     c IF (newIce.GE.himin*iceMaskmax) THEN
93     C- jmc: above is the original version, but below seems more logical:
94     IF (newIce.GE.himin0*iceMaskmin) THEN
95     C- if there is no ice in grid and enough ice to form:
96     iceThick = MAX(himin0,newIce/iceMaskmax)
97     newIceFrac = MIN(newIce/himin0,iceMaskmax)
98     compact = newIceFrac
99     sst=Tf
100     ENDIF
101     ELSE
102     C- if there is already some ice
103     newIceFrac=MIN(newIce/iceThick,iceMaskmax-iceFraction)
104     compact = iceFraction + newIceFrac
105     C- spread snow out over ice
106     snowThick = snowThick*iceFraction/compact
107     sst=(1. _d 0-newIceFrac)*sst+newIceFrac*Tf
108     ENDIF
109     qleft= iceThick*newIceFrac*qicAv/deltaTice
110     fresh=-(rhoi*iceThick)*newIceFrac/deltaTice
111     fsalt=-(rhoi*iceThick*saltice)*newIceFrac/deltaTice
112    
113     IF (dBug) WRITE(6,1020) 'ThSI_EXT: iceH, newIce, newIceFrac=',
114     & iceThick, newIce, newIceFrac
115    
116     #endif /* ALLOW_THSICE */
117    
118     RETURN
119     END

  ViewVC Help
Powered by ViewVC 1.1.22