/[MITgcm]/MITgcm/pkg/shelfice/shelfice_readparms.F
ViewVC logotype

Annotation of /MITgcm/pkg/shelfice/shelfice_readparms.F

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


Revision 1.28 - (hide annotations) (download)
Fri Dec 15 19:37:08 2017 UTC (6 years, 5 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint66o, checkpoint66n, HEAD
Changes since 1.27: +6 -2 lines
Replace CPP option: SHI_USTAR_WETPOINT with run-time parameter: SHELFICE_oldCalcUStar
 (default=F) but keep only original (old) formula in SHELFICEboundaryLayer code.

1 jmc 1.28 C $Header: /u/gcmpack/MITgcm/pkg/shelfice/shelfice_readparms.F,v 1.27 2017/12/12 19:38:55 jmc Exp $
2 jmc 1.27 C $Name: $
3 mlosch 1.1
4     #include "SHELFICE_OPTIONS.h"
5    
6     CBOP
7     C !ROUTINE: SHELFICE_READPARMS
8    
9     C !INTERFACE: ==========================================================
10     SUBROUTINE SHELFICE_READPARMS( myThid )
11    
12     C !DESCRIPTION:
13     C Initialize SHELFICE parameters, read in data.shelfice
14    
15     C !USES: ===============================================================
16     IMPLICIT NONE
17     #include "SIZE.h"
18     #include "EEPARAMS.h"
19 heimbach 1.10 #include "PARAMS.h"
20 mlosch 1.1 #include "SHELFICE.h"
21 mlosch 1.11 #ifdef ALLOW_COST
22     # include "SHELFICE_COST.h"
23     #endif /* ALLOW_COST */
24 mlosch 1.1 #ifdef ALLOW_MNC
25     # include "MNC_PARAMS.h"
26     #endif
27    
28     C !INPUT PARAMETERS: ===================================================
29     C myThid :: thread number
30     INTEGER myThid
31    
32     C !OUTPUT PARAMETERS: ==================================================
33     C none
34    
35     #ifdef ALLOW_SHELFICE
36    
37     C !LOCAL VARIABLES: ====================================================
38 jmc 1.9 C iUnit :: unit number for I/O
39     C msgBuf :: message buffer
40 mlosch 1.1 INTEGER iUnit
41     CHARACTER*(MAX_LEN_MBUF) msgBuf
42     CEOP
43    
44     NAMELIST /SHELFICE_PARM01/
45 mlosch 1.3 & SHELFICEheatTransCoeff,
46     & SHELFICEsaltTransCoeff,
47 jmc 1.21 & SHELFICEMassStepping,
48 mlosch 1.3 & rhoShelfice, SHELFICEkappa,
49     & SHELFICElatentHeat, SHELFICEHeatCapacity_Cp,
50 jmc 1.27 & no_slip_shelfice, SHELFICEDragLinear,
51     & SHELFICEDragQuadratic, SHELFICEselectDragQuadr,
52 mlosch 1.3 & SHELFICEthetaSurface,
53 jmc 1.27 & useISOMIPTD,
54 mlosch 1.6 & SHELFICEconserve, SHELFICEboundaryLayer,
55 mlosch 1.1 & SHELFICEwriteState,
56     & SHELFICE_dumpFreq,
57     & SHELFICE_taveFreq,
58     & SHELFICE_tave_mnc,
59 mlosch 1.2 & SHELFICE_dump_mnc,
60 jmc 1.17 & SHELFICEtopoFile,
61     & SHELFICEmassFile, SHELFICEloadAnomalyFile,
62 dimitri 1.25 & SHELFICEMassDynTendFile, SHELFICETransCoeffTFile,
63 dgoldberg 1.24 & SHELFICEDynMassOnly,
64 mlosch 1.14 & SHELFICEadvDiffHeatFlux,
65 jmc 1.28 & SHELFICEuseGammaFrict, SHELFICE_oldCalcUStar,
66 heimbach 1.13 & shiCdrag, shiZetaN, shiRc,
67     & shiPrandtl, shiSchmidt, shiKinVisc
68 heimbach 1.10 #ifdef ALLOW_COST
69     & , mult_shelfice
70 mlosch 1.11 & , mult_shifwflx, wshifwflx0, shifwflx_errfile
71 heimbach 1.10 #endif
72 mlosch 1.1
73 jmc 1.18 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
74    
75     IF ( .NOT.useShelfIce ) THEN
76     C- pkg SHELFICE is not used
77     _BEGIN_MASTER(myThid)
78     C- Track pkg activation status:
79 jmc 1.19 SHELFICEisOn = .FALSE.
80 jmc 1.18 C print a (weak) warning if data.shelfice is found
81     CALL PACKAGES_UNUSED_MSG( 'useShelfIce', ' ', ' ' )
82     _END_MASTER(myThid)
83     RETURN
84     ENDIF
85    
86 jmc 1.5 _BEGIN_MASTER(myThid)
87    
88 mlosch 1.1 C This routine has been called by the main model so we set our
89     C internal flag to indicate we are in business
90 jmc 1.21 SHELFICEisOn = .TRUE.
91 mlosch 1.1
92     C Set defaults values for parameters in SHELFICE.h
93 mlosch 1.3 useISOMIPTD = .FALSE.
94 mlosch 1.6 SHELFICEconserve = .FALSE.
95 mlosch 1.4 SHELFICEboundaryLayer = .FALSE.
96 jmc 1.21 SHELFICEMassStepping = .FALSE.
97 dgoldberg 1.24 SHELFICEDynMassOnly = .FALSE.
98 jmc 1.17 SHELFICEtopoFile = ' '
99     SHELFICEmassFile = ' '
100 mlosch 1.2 SHELFICEloadAnomalyFile = ' '
101 jmc 1.21 SHELFICEMassDynTendFile = ' '
102 dimitri 1.25 SHELFICETransCoeffTFile = ' '
103 mlosch 1.3 SHELFICElatentHeat = 334.0 _d 3
104     SHELFICEHeatCapacity_Cp = 2000.0 _d 0
105     rhoShelfIce = 917.0 _d 0
106     SHELFICEheatTransCoeff = 1.0 _d -04
107     SHELFICEsaltTransCoeff = UNSET_RL
108     SHELFICEkappa = 1.54 _d -06
109     SHELFICEthetaSurface = - 20.0 _d 0
110 mlosch 1.1 no_slip_shelfice = no_slip_bottom
111     SHELFICEDragLinear = bottomDragLinear
112 heimbach 1.15 SHELFICEDragQuadratic = UNSET_RL
113 jmc 1.22 SHELFICEselectDragQuadr = -1
114 mlosch 1.1 SHELFICEwriteState = .FALSE.
115     SHELFICE_dumpFreq = dumpFreq
116     SHELFICE_taveFreq = taveFreq
117 mlosch 1.14 SHELFICEadvDiffHeatFlux = .FALSE.
118 heimbach 1.12 SHELFICEuseGammaFrict = .FALSE.
119 jmc 1.28 SHELFICE_oldCalcUStar = .FALSE.
120 heimbach 1.13 C these params. are default of Holland and Jenkins (1999)
121 heimbach 1.12 shiCdrag = 0.0015 _d 0
122     shiZetaN = 0.052 _d 0
123     shiRc = 0.2 _d 0
124 heimbach 1.13 shiPrandtl = 13.8 _d 0
125     shiSchmidt = 2432.0 _d 0
126     shiKinVisc = 1.95 _d -6
127 heimbach 1.10 #ifdef ALLOW_COST
128     mult_shelfice = 0. _d 0
129 mlosch 1.11 mult_shifwflx = 0. _d 0
130     wshifwflx0 = 0. _d 0
131     shifwflx_errfile = ' '
132 heimbach 1.10 #endif
133 mlosch 1.1 #ifdef ALLOW_MNC
134     SHELFICE_tave_mnc = timeave_mnc
135     SHELFICE_dump_mnc = snapshot_mnc
136     #else
137     SHELFICE_tave_mnc = .FALSE.
138     SHELFICE_dump_mnc = .FALSE.
139     #endif
140    
141     C Open and read the data.shelfice file
142     WRITE(msgBuf,'(A)') ' SHELFICE_READPARMS: opening data.shelfice'
143     CALL PRINT_MESSAGE(msgBuf, standardMessageUnit,
144 jmc 1.5 & SQUEEZE_RIGHT, myThid )
145 mlosch 1.1 CALL OPEN_COPY_DATA_FILE(
146     I 'data.shelfice', 'SHELFICE_READPARMS',
147     O iUnit,
148     I myThid )
149     READ(UNIT=iUnit,NML=SHELFICE_PARM01)
150     WRITE(msgBuf,'(A)')
151     & ' SHELFICE_READPARMS: finished reading data.shelfice'
152     CALL PRINT_MESSAGE(msgBuf, standardMessageUnit,
153 jmc 1.5 & SQUEEZE_RIGHT, myThid )
154 mlosch 1.1
155     C Close the open data file
156 mlosch 1.26 #ifdef SINGLE_DISK_IO
157 mlosch 1.1 CLOSE(iUnit)
158 mlosch 1.26 #else
159     CLOSE(iUnit,STATUS='DELETE')
160     #endif /* SINGLE_DISK_IO */
161 mlosch 1.1
162 jmc 1.5 C Now set-up any remaining parameters that result from the input parameters
163 mlosch 1.3 IF ( SHELFICEsaltTransCoeff .EQ. UNSET_RL )
164 jmc 1.5 & SHELFICEsaltTransCoeff =
165 mlosch 1.3 & 5.05 _d -3 *SHELFICEheatTransCoeff
166 mlosch 1.1
167 jmc 1.28 C New calcUstar expression not available with SHELFICEboundaryLayer:
168     IF ( SHELFICEboundaryLayer ) SHELFICE_oldCalcUStar = .TRUE.
169    
170 heimbach 1.15 C Set quadratic bottom drag depending on choices:
171     IF ( SHELFICEDragQuadratic .EQ. UNSET_RL) THEN
172     IF ( SHELFICEuseGammaFrict ) THEN
173 heimbach 1.16 SHELFICEDragQuadratic = shiCdrag
174     ELSE
175     SHELFICEDragQuadratic = bottomDragQuadratic
176     ENDIF
177 heimbach 1.15 ENDIF
178 jmc 1.22 IF ( SHELFICEDragQuadratic.EQ.0. _d 0 ) THEN
179     SHELFICEselectDragQuadr = -1
180     ELSEIF ( SHELFICEselectDragQuadr.EQ.-1 ) THEN
181     SHELFICEselectDragQuadr = MAX( 0, selectBotDragQuadr )
182     ENDIF
183 heimbach 1.15
184 mlosch 1.1 C- Set Output type flags :
185     SHELFICE_tave_mdsio = .TRUE.
186     SHELFICE_dump_mdsio = .TRUE.
187     #ifdef ALLOW_MNC
188     IF (useMNC) THEN
189     IF ( .NOT.outputTypesInclusive
190     & .AND. SHELFICE_tave_mnc ) SHELFICE_tave_mdsio = .FALSE.
191     IF ( .NOT.outputTypesInclusive
192     & .AND. SHELFICE_dump_mnc ) SHELFICE_dump_mdsio = .FALSE.
193     ENDIF
194     #endif
195    
196 jmc 1.5 _END_MASTER(myThid)
197     C Everyone else must wait for the parameters to be loaded
198     _BARRIER
199    
200 mlosch 1.1 #endif /* ALLOW_SHELFICE */
201    
202     RETURN
203     END

  ViewVC Help
Powered by ViewVC 1.1.22