/[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.1 - (hide annotations) (download)
Wed Apr 7 23:40:34 2004 UTC (20 years, 2 months 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 jmc 1.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