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

Diff of /MITgcm/pkg/thsice/thsice_readparms.F

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

revision 1.9 by jmc, Sun Jun 25 22:31:02 2006 UTC revision 1.17 by dfer, Wed Sep 23 20:24:47 2009 UTC
# Line 32  C     === Global variables === Line 32  C     === Global variables ===
32    
33  C     !INPUT/OUTPUT PARAMETERS:  C     !INPUT/OUTPUT PARAMETERS:
34  C     === Routine arguments ===  C     === Routine arguments ===
35    C     myThid    :: My Thread Id. number
36        INTEGER myThid        INTEGER myThid
37  CEOP  CEOP
38    
39  #ifdef ALLOW_THSICE  #ifdef ALLOW_THSICE
40    
41  C     === Local variables ===  C     === Local variables ===
42  C     msgBuf      - Informational/error message buffer  C     msgBuf    :: Informational/error message buffer
43  C     iUnit       - Work variable for IO unit number  C     iUnit     :: Work variable for IO unit number
44        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
45        INTEGER iUnit        INTEGER iUnit
46    
47  C--   Th-Sea-ICE parameter  C--   Th-Sea-ICE parameter
48        NAMELIST /THSICE_CONST/        NAMELIST /THSICE_CONST/
49       &  rhos, rhoi, rhosw, rhofw,       &  rhos, rhoi, rhosw, rhofw,
50       &  cpice, cpwater,       &  cpIce, cpWater,
51       &  kice, ksnow,       &  kIce, kSnow,
52       &  transcoef, Lfresh, qsnow,       &  bMeltCoef, Lfresh, qsnow,
53       &  albColdSnow, albWarmSnow, albOldSnow,       &  albColdSnow, albWarmSnow, tempSnowAlb,
54       &  hNewSnowAge, snowAgTime,       &  albOldSnow, hNewSnowAge, snowAgTime,
55       &  albIceMax, albIceMin, hAlbIce, hAlbSnow,       &  albIceMax, albIceMin, hAlbIce, hAlbSnow,
56       &  i0, ksolar,       &  i0swFrac, ksolar, dhSnowLin,
57       &  saltice, S_winton, mu_Tf,       &  saltIce, S_winton, mu_Tf,
58       &  Tf0kel,       &  Tf0kel, Terrmax, nitMaxTsf,
59       &  himin, Terrmax, nitMaxTsf, hiMax, hsMax,       &  hIceMin, hiMax, hsMax, iceMaskMax, iceMaskMin,
60       &  iceMaskmax, iceMaskmin, himin0,       &  fracEnMelt, fracEnFreez, hThinIce, hThickIce, hNewIceMax
      &  frac_energy, hihig  
61    
62        NAMELIST /THSICE_PARM01/        NAMELIST /THSICE_PARM01/
63       &     startIceModel, stepFwd_oceMxL,       &     startIceModel, stepFwd_oceMxL, thSIce_calc_albNIR,
64       &     thSIce_deltaT, ocean_deltaT, tauRelax_MxL,       &     thSIce_deltaT, thSIce_dtTemp,
65         &     ocean_deltaT, tauRelax_MxL, tauRelax_MxL_salt,
66       &     hMxL_default, sMxL_default, vMxL_default,       &     hMxL_default, sMxL_default, vMxL_default,
67       &     stressReduction,       &     thSIce_diffK, thSIceAdvScheme, stressReduction,
68       &     thSIce_taveFreq, thSIce_diagFreq, thSIce_monFreq,       &     thSIce_taveFreq, thSIce_diagFreq, thSIce_monFreq,
69       &     thSIce_tave_mnc, thSIce_snapshot_mnc, thSIce_mon_mnc,       &     thSIce_tave_mnc, thSIce_snapshot_mnc, thSIce_mon_mnc,
70       &     thSIce_pickup_read_mnc, thSIce_pickup_write_mnc,       &     thSIce_pickup_read_mnc, thSIce_pickup_write_mnc,
# Line 87  C--   Default values (constants) Line 88  C--   Default values (constants)
88        rhoi     = 900. _d 0        rhoi     = 900. _d 0
89        rhosw    = rhoConst        rhosw    = rhoConst
90        rhofw    = rhoConstFresh        rhofw    = rhoConstFresh
91        cpice    = 2106. _d 0        cpIce    = 2106. _d 0
92        cpwater  = HeatCapacity_Cp        cpWater  = HeatCapacity_Cp
93        kice     = 2.03 _d 0        kIce     = 2.03 _d 0
94        ksnow    = 0.30 _d 0        kSnow    = 0.30 _d 0
95        transcoef=0.006 _d 0        bMeltCoef=0.006 _d 0
96        Lfresh   = 3.34 _d 5        Lfresh   = 3.34 _d 5
97        qsnow    = Lfresh        qsnow    = Lfresh
98        albColdSnow= 0.85 _d 0        albColdSnow= 0.85 _d 0
99        albWarmSnow= 0.70 _d 0        albWarmSnow= 0.70 _d 0
100          tempSnowAlb= -10. _d 0
101        albOldSnow = 0.55 _d 0        albOldSnow = 0.55 _d 0
102        albIceMax  = 0.65 _d 0        albIceMax  = 0.65 _d 0
103        albIceMin  = 0.20 _d 0        albIceMin  = 0.20 _d 0
# Line 103  C--   Default values (constants) Line 105  C--   Default values (constants)
105        hAlbSnow   = 0.30 _d 0        hAlbSnow   = 0.30 _d 0
106        hNewSnowAge= 2. _d -3        hNewSnowAge= 2. _d -3
107        snowAgTime = 50. _d 0 * 86400. _d 0        snowAgTime = 50. _d 0 * 86400. _d 0
108        i0       = 0.3 _d 0        i0swFrac = 0.3 _d 0
109        ksolar   = 1.5 _d 0        ksolar   = 1.5 _d 0
110        saltice  = 4. _d 0        dhSnowLin= 0. _d 0
111          saltIce  = 4. _d 0
112        S_winton = 1. _d 0        S_winton = 1. _d 0
113        mu_Tf    = 0.054 _d 0        mu_Tf    = 0.054 _d 0
114        Tf0kel   = celsius2K        Tf0kel   = celsius2K
       himin    = 0.01 _d 0  
115        Terrmax  = 5.0 _d -1        Terrmax  = 5.0 _d -1
116        nitMaxTsf= 20        nitMaxTsf= 20
117          hIceMin    = 1. _d -2
118        hiMax      = 10. _d 0        hiMax      = 10. _d 0
119        hsMax      = 10. _d 0        hsMax      = 10. _d 0
120        iceMaskmax = 1.  _d 0        iceMaskMax =  1. _d 0
121        iceMaskmin =  .1 _d 0        iceMaskMin = 0.1 _d 0
122        himin0     = 0.2 _d 0        fracEnMelt = 0.4 _d 0
123        frac_energy=  .4 _d 0        fracEnFreez=  0. _d 0
124        hihig      = 2.5 _d 0        hThinIce   = 0.2 _d 0
125          hThickIce  = 2.5 _d 0
126          hNewIceMax = UNSET_RL
127    
128  C--   Default values (parameters)  C--   Default values (parameters)
129        stepFwd_oceMxL  = .FALSE.        stepFwd_oceMxL  = .FALSE.
130          thSIce_calc_albNIR  = .FALSE.
131        startIceModel   = 0        startIceModel   = 0
132        thSIce_deltaT   = dTtracerLev(1)        thSIce_deltaT   = dTtracerLev(1)
133          thSIce_dtTemp  = UNSET_RL
134        ocean_deltaT    = dTtracerLev(1)        ocean_deltaT    = dTtracerLev(1)
135        tauRelax_MxL    = 0. _d 0        tauRelax_MxL    = 0. _d 0
136          tauRelax_MxL_salt = UNSET_RL
137        hMxL_default    = 50. _d 0        hMxL_default    = 50. _d 0
138        sMxL_default    = 35. _d 0        sMxL_default    = 35. _d 0
139        vMxL_default    = 5. _d -2        vMxL_default    = 5. _d -2
140          thSIce_diffK    = 0. _d 0
141          thSIceAdvScheme = 0
142        stressReduction = 1. _d 0        stressReduction = 1. _d 0
143        IF ( useSEAICE ) stressReduction = 0. _d 0        IF ( useSEAICE ) stressReduction = 0. _d 0
144        thSIce_taveFreq = taveFreq        thSIce_taveFreq = taveFreq
# Line 169  C--   Read parameters from open data fil Line 179  C--   Read parameters from open data fil
179  C--   Close the open data file  C--   Close the open data file
180        CLOSE(iUnit)        CLOSE(iUnit)
181    
182    C-    neutral default:
183          IF ( hNewIceMax .EQ. UNSET_RL ) hNewIceMax = hiMax
184    
185    C     If using the same time step for both icetop temp solver
186    C     and ice thickness/growth, use thSIce_deltaT value
187          IF ( thSIce_dtTemp .EQ. UNSET_RL ) thSIce_dtTemp=thSIce_deltaT
188    
189    C-    If undef, set salt relax to temperature relax
190          IF ( tauRelax_MxL_salt .EQ. UNSET_RL ) THEN
191               tauRelax_MxL_salt = tauRelax_MxL
192          ENDIF
193    
194  C-    Define other constants (from previous ones):  C-    Define other constants (from previous ones):
195        Tmlt1=-mu_Tf*S_winton        Tmlt1=-mu_Tf*S_winton
196        rhoiw = rhosw - rhoi        floodFac = (rhosw - rhoi)/rhos
197    
198  C     Set I/O parameters  C     Set I/O parameters
199        thSIce_tave_mdsio     = .TRUE.        thSIce_tave_mdsio     = .TRUE.
# Line 193  C     Set I/O parameters Line 215  C     Set I/O parameters
215        ENDIF        ENDIF
216  #endif  #endif
217    
218    C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
219  C--   Check parameter consistency:  C--   Check parameter consistency:
220          IF ( thSIceAdvScheme.EQ.0 .AND. thSIce_diffK.NE.0. ) THEN
221            WRITE(msgBuf,'(2A)')
222         &   'THSICE_READPARMS: to use thSIce_diffK, needs to select',
223         &   ' one advection scheme (thSIceAdvScheme<>0)'
224            CALL PRINT_ERROR( msgBuf , myThid )
225            STOP 'ABNORMAL END: THSICE_READPARMS'
226          ENDIF
227    #ifndef ALLOW_GENERIC_ADVDIFF
228          IF ( thSIceAdvScheme.NE.0 ) THEN
229            WRITE(msgBuf,'(2A)')
230         &   'THSICE_READPARMS: Need to compile "generic_advdiff" pkg',
231         &   ' in order to use thSIceAdvScheme'
232            CALL PRINT_ERROR( msgBuf , myThid )
233            STOP 'ABNORMAL END: THSICE_READPARMS'
234          ENDIF
235    #endif /* ndef ALLOW_GENERIC_ADVDIFF */
236    
237        IF ( useSEAICE .AND. stressReduction.NE.0. _d 0 ) THEN        IF ( useSEAICE .AND. stressReduction.NE.0. _d 0 ) THEN
238  C--     If useSEAICE=.true., the stress is computed in seaice_model,  C--     If useSEAICE=.true., the stress is computed in seaice_model,
239  C--     so that it does not need any further reduction  C--     so that it does not need any further reduction
# Line 213  C---+----1----+----2----+----3----+----4 Line 253  C---+----1----+----2----+----3----+----4
253        iUnit = standardMessageUnit        iUnit = standardMessageUnit
254  c     CALL MDSFINDUNIT( iUnit, mythid )  c     CALL MDSFINDUNIT( iUnit, mythid )
255  c     OPEN(iUnit,file='thsice_check_params',status='unknown')  c     OPEN(iUnit,file='thsice_check_params',status='unknown')
256        WRITE(iUnit,*) 'ThSI: rhos    =',rhos        WRITE(iUnit,*) 'ThSI: rhos      =',rhos
257        WRITE(iUnit,*) 'ThSI: rhoi    =',rhoi        WRITE(iUnit,*) 'ThSI: rhoi      =',rhoi
258        WRITE(iUnit,*) 'ThSI: rhosw   =',rhosw        WRITE(iUnit,*) 'ThSI: rhosw     =',rhosw
259        WRITE(iUnit,*) 'ThSI: rhofw   =',rhofw        WRITE(iUnit,*) 'ThSI: rhofw     =',rhofw
260        WRITE(iUnit,*) 'ThSI: rhoiw   =',rhoiw        WRITE(iUnit,*) 'ThSI: floodFac  =',floodFac
261        WRITE(iUnit,*) 'ThSI: cpice   =',cpice        WRITE(iUnit,*) 'ThSI: cpIce     =',cpIce
262        WRITE(iUnit,*) 'ThSI: cpwater =',cpwater        WRITE(iUnit,*) 'ThSI: cpWater   =',cpWater
263        WRITE(iUnit,*) 'ThSI: kice    =',kice        WRITE(iUnit,*) 'ThSI: kIce      =',kIce
264        WRITE(iUnit,*) 'ThSI: ksnow   =',ksnow        WRITE(iUnit,*) 'ThSI: kSnow     =',kSnow
265        WRITE(iUnit,*) 'ThSI: transcoef=',transcoef        WRITE(iUnit,*) 'ThSI: bMeltCoef =',bMeltCoef
266        WRITE(iUnit,*) 'ThSI: Lfresh  =',Lfresh        WRITE(iUnit,*) 'ThSI: Lfresh    =',Lfresh
267        WRITE(iUnit,*) 'ThSI: qsnow   =',qsnow        WRITE(iUnit,*) 'ThSI: qsnow     =',qsnow
268        WRITE(iUnit,*) 'ThSI: albColdSnow=',albColdSnow        WRITE(iUnit,*) 'ThSI: albColdSnow=',albColdSnow
269        WRITE(iUnit,*) 'ThSI: albWarmSnow=',albWarmSnow        WRITE(iUnit,*) 'ThSI: albWarmSnow=',albWarmSnow
270          WRITE(iUnit,*) 'ThSI: tempSnowAlb=',tempSnowAlb
271        WRITE(iUnit,*) 'ThSI: albOldSnow =',albOldSnow        WRITE(iUnit,*) 'ThSI: albOldSnow =',albOldSnow
272          WRITE(iUnit,*) 'ThSI: hNewSnowAge=',hNewSnowAge
273          WRITE(iUnit,*) 'ThSI: snowAgTime =',snowAgTime
274        WRITE(iUnit,*) 'ThSI: albIceMax =',albIceMax        WRITE(iUnit,*) 'ThSI: albIceMax =',albIceMax
275        WRITE(iUnit,*) 'ThSI: albIceMin =',albIceMin        WRITE(iUnit,*) 'ThSI: albIceMin =',albIceMin
276        WRITE(iUnit,*) 'ThSI: hAlbIce   =',hAlbIce        WRITE(iUnit,*) 'ThSI: hAlbIce   =',hAlbIce
277        WRITE(iUnit,*) 'ThSI: hAlbSnow  =',hAlbSnow        WRITE(iUnit,*) 'ThSI: hAlbSnow  =',hAlbSnow
278        WRITE(iUnit,*) 'ThSI: hNewSnowAge=',hNewSnowAge        WRITE(iUnit,*) 'ThSI: i0swFrac  =',i0swFrac
279        WRITE(iUnit,*) 'ThSI: snowAgTime =',snowAgTime        WRITE(iUnit,*) 'ThSI: ksolar    =',ksolar
280        WRITE(iUnit,*) 'ThSI: i0      =',i0        WRITE(iUnit,*) 'ThSI: dhSnowLin =',dhSnowLin
281        WRITE(iUnit,*) 'ThSI: ksolar  =',ksolar        WRITE(iUnit,*) 'ThSI: saltIce   =',saltIce
282        WRITE(iUnit,*) 'ThSI: saltice =',saltice        WRITE(iUnit,*) 'ThSI: S_winton  =',S_winton
283        WRITE(iUnit,*) 'ThSI: S_winton=',S_winton        WRITE(iUnit,*) 'ThSI: mu_Tf     =',mu_Tf
284        WRITE(iUnit,*) 'ThSI: mu_Tf   =',mu_Tf        WRITE(iUnit,*) 'ThSI: Tf0kel    =',Tf0kel
285        WRITE(iUnit,*) 'ThSI: Tf0kel  =',Tf0kel        WRITE(iUnit,*) 'ThSI: Tmlt1     =',Tmlt1
286        WRITE(iUnit,*) 'ThSI: Tmlt1   =',Tmlt1        WRITE(iUnit,*) 'ThSI: Terrmax   =',Terrmax
287        WRITE(iUnit,*) 'ThSI: himin   =',himin        WRITE(iUnit,*) 'ThSI: nitMaxTsf =',nitMaxTsf
288        WRITE(iUnit,*) 'ThSI: Terrmax =',Terrmax        WRITE(iUnit,*) 'ThSI: hIceMin   =',hIceMin
289        WRITE(iUnit,*) 'ThSI: nitMaxTsf=',nitMaxTsf        WRITE(iUnit,*) 'ThSI: hiMax     =',hiMax
290        WRITE(iUnit,*) 'ThSI: hiMax   =',hiMax        WRITE(iUnit,*) 'ThSI: hsMax     =',hsMax
291        WRITE(iUnit,*) 'ThSI: hsMax   =',hsMax        WRITE(iUnit,*) 'ThSI: iceMaskMax =',iceMaskMax
292        WRITE(iUnit,*) 'ThSI: iceMaskmax=',iceMaskmax        WRITE(iUnit,*) 'ThSI: iceMaskMin =',iceMaskMin
293        WRITE(iUnit,*) 'ThSI: iceMaskmin=',iceMaskmin        WRITE(iUnit,*) 'ThSI: fracEnMelt =',fracEnMelt
294        WRITE(iUnit,*) 'ThSI: himin0  =',himin0        WRITE(iUnit,*) 'ThSI: fracEnFreez=',fracEnFreez
295        WRITE(iUnit,*) 'ThSI: frac_energy',frac_energy        WRITE(iUnit,*) 'ThSI: hThinIce   =',hThinIce
296        WRITE(iUnit,*) 'ThSI: hihig   =',hihig        WRITE(iUnit,*) 'ThSI: hThickIce  =',hThickIce
297          WRITE(iUnit,*) 'ThSI: hNewIceMax =',hNewIceMax
298        WRITE(iUnit,*) 'ThSI: stressReduction =',stressReduction        WRITE(iUnit,*) 'ThSI: stressReduction =',stressReduction
299          WRITE(iUnit,*) 'ThSI: thSIceAdvScheme =',thSIceAdvScheme
300          WRITE(iUnit,*) 'ThSI: thSIce_diffK  =',thSIce_diffK
301        WRITE(iUnit,*) 'ThSI: thSIce_deltaT =',thSIce_deltaT        WRITE(iUnit,*) 'ThSI: thSIce_deltaT =',thSIce_deltaT
302        WRITE(iUnit,*) 'ThSI: ocean_deltaT  =',ocean_deltaT        WRITE(iUnit,*) 'ThSI: ocean_deltaT  =',ocean_deltaT
303        WRITE(iUnit,*) 'ThSI: stepFwd_oceMxL=',stepFwd_oceMxL        WRITE(iUnit,*) 'ThSI: stepFwd_oceMxL=',stepFwd_oceMxL
304        WRITE(iUnit,*) 'ThSI: tauRelax_MxL  =',tauRelax_MxL        WRITE(iUnit,*) 'ThSI: tauRelax_MxL  =',tauRelax_MxL
305          WRITE(iUnit,*) 'ThSI: tauRelax_MxL_salt  =',tauRelax_MxL_salt
306        WRITE(iUnit,*) 'ThSI: hMxL_default  =',hMxL_default        WRITE(iUnit,*) 'ThSI: hMxL_default  =',hMxL_default
307        WRITE(iUnit,*) 'ThSI: sMxL_default  =',sMxL_default        WRITE(iUnit,*) 'ThSI: sMxL_default  =',sMxL_default
308        WRITE(iUnit,*) 'ThSI: vMxL_default  =',vMxL_default        WRITE(iUnit,*) 'ThSI: vMxL_default  =',vMxL_default

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.17

  ViewVC Help
Powered by ViewVC 1.1.22