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

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

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


Revision 1.3 - (show annotations) (download)
Fri Feb 10 00:30:32 2006 UTC (18 years, 2 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 C $Header: /u/gcmpack/MITgcm/pkg/thsice/thsice_extend.F,v 1.2 2004/12/17 03:44:52 jmc Exp $
2 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 #include "EEPARAMS.h"
29 #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 C qicen :: ice enthalpy [J/kg]
41 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 C qicAv :: mean enthalpy of ice (layer 1 & 2) [J/m^3]
65 _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