/[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.1 - (show annotations) (download)
Wed Apr 7 23:40:34 2004 UTC (20 years, 1 month ago) by jmc
Branch: MAIN
CVS Tags: checkpoint52n_post, checkpoint53d_post, checkpoint54a_pre, checkpoint55c_post, checkpoint54e_post, checkpoint54a_post, checkpoint53c_post, checkpoint55d_pre, checkpoint55j_post, checkpoint56b_post, checkpoint55h_post, checkpoint53b_post, checkpoint54b_post, checkpoint53b_pre, checkpoint55b_post, checkpoint54d_post, checkpoint56c_post, checkpoint52m_post, checkpoint55, checkpoint53a_post, checkpoint57a_post, checkpoint54, checkpoint54f_post, checkpoint55g_post, checkpoint55f_post, checkpoint57a_pre, checkpoint55i_post, checkpoint57, checkpoint56, checkpoint53, checkpoint53g_post, checkpoint55e_post, checkpoint53f_post, checkpoint55a_post, checkpoint53d_pre, checkpoint54c_post, checkpoint56a_post, checkpoint55d_post
major changes in pkg/thsice: allows atmospheric model (AIM) to use thsice.
- split thsice_therm.F in 2 S/R: thsice_solve4temp.F & thsice_calc_thickn.F
- move most of the ocean & bulk_force interface in thsice_main.F
- add a "slab ocean" component to be used with atmospheric model

1 C $Header: $
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 "THSICE_SIZE.h"
29 #include "THSICE_PARAMS.h"
30
31 C !INPUT/OUTPUT PARAMETERS:
32 C == Routine Arguments ==
33 C esurp :: energy available for freezing [W/m2]
34 C Tf :: freezing temperature [oC]
35 C sst :: Sea Surf Temp. [oC]
36 C compact :: fraction of grid area covered in ice
37 C iceThick :: ice height [m]
38 C snowThick:: snow height [m]
39 C qicen :: ice enthalpy [J/m3]
40 C qleft :: (additional) heat flux to ocean [W/m2]
41 C fsalt :: (additional) salt flux to ocean [ g/m2/s]
42 C fresh :: (additional) fresh water flux to ocean [kg/m2/s]
43 C dBugFlag :: allow to print debugging stuff (e.g. on 1 grid point).
44 C myThid :: thread number for this instance of the routine.
45 _RL esurp
46 _RL Tf
47 _RL sst
48 _RL compact
49 _RL iceThick
50 _RL snowThick
51 _RL qicen(nlyr)
52 _RL qleft
53 _RL fresh
54 _RL fsalt
55 LOGICAL dBugFlag
56 INTEGER myThid
57 CEOP
58
59 #ifdef ALLOW_THSICE
60
61 C !LOCAL VARIABLES:
62 C == Local variables ==
63 C qicAv :: mean enthalphy of ice (layer 1 & 2) [J/kg]
64 _RL deltaTice ! time-step for ice model
65 _RL newIce
66 _RL newIceFrac
67 _RL iceFraction
68 _RL qicAv
69 LOGICAL dBug
70
71 1010 FORMAT(A,I3,3F8.3)
72 1020 FORMAT(A,1P4E11.3)
73 dBug = .FALSE.
74 c dBug = dBugFlag
75
76 C-- start ice
77 deltaTice = thSIce_deltaT
78 iceFraction = compact
79 newIceFrac = 0. _d 0
80
81 C- enthalpy of new ice to form :
82 IF ( compact.LE.0. _d 0 ) THEN
83 qicen(1)= -cpwater*Tmlt1
84 & + cpice *(Tmlt1-Tf) + Lfresh*(1. _d 0-Tmlt1/Tf)
85 qicen(2)= -cpice *Tf + Lfresh
86 ENDIF
87 qicAv = rhoi*(qicen(1)+qicen(2))*0.5 _d 0
88 newIce = esurp*deltaTice/qicAv
89
90 IF (iceFraction.EQ.0. _d 0) THEN
91 c IF (newIce.GE.himin*iceMaskmax) THEN
92 C- jmc: above is the original version, but below seems more logical:
93 IF (newIce.GE.himin0*iceMaskmin) THEN
94 C- if there is no ice in grid and enough ice to form:
95 iceThick = MAX(himin0,newIce/iceMaskmax)
96 newIceFrac = MIN(newIce/himin0,iceMaskmax)
97 compact = newIceFrac
98 sst=Tf
99 ENDIF
100 ELSE
101 C- if there is already some ice
102 newIceFrac=MIN(newIce/iceThick,iceMaskmax-iceFraction)
103 compact = iceFraction + newIceFrac
104 C- spread snow out over ice
105 snowThick = snowThick*iceFraction/compact
106 sst=(1. _d 0-newIceFrac)*sst+newIceFrac*Tf
107 ENDIF
108 qleft= iceThick*newIceFrac*qicAv/deltaTice
109 fresh=-(rhoi*iceThick)*newIceFrac/deltaTice
110 fsalt=-(rhoi*iceThick*saltice)*newIceFrac/deltaTice
111
112 IF (dBug) WRITE(6,1020) 'ThSI_EXT: iceH, newIce, newIceFrac=',
113 & iceThick, newIce, newIceFrac
114
115 #endif /* ALLOW_THSICE */
116
117 RETURN
118 END

  ViewVC Help
Powered by ViewVC 1.1.22