C $Header: /u/gcmpack/MITgcm/pkg/thsice/thsice_readparms.F,v 1.7 2005/06/24 04:36:54 edhill Exp $
C $Name: $
#include "THSICE_OPTIONS.h"
CBOP
C !ROUTINE: THSICE_READPARMS
C !INTERFACE:
SUBROUTINE THSICE_READPARMS( myThid )
C !DESCRIPTION: \bv
C *==========================================================*
C | S/R THSICE_READPARMS
C | o Routine to initialize THSICE parameters and constants
C *==========================================================*
C | Initialize Th-Sea-ICE parameters, read in data.ice
C *==========================================================*
C \ev
C !USES:
IMPLICIT NONE
C === Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "GRID.h"
#include "THSICE_PARAMS.h"
#ifdef ALLOW_MNC
#include "MNC_PARAMS.h"
#endif
C !INPUT/OUTPUT PARAMETERS:
C === Routine arguments ===
INTEGER myThid
CEOP
#ifdef ALLOW_THSICE
C === Local variables ===
C msgBuf - Informational/error message buffer
C iUnit - Work variable for IO unit number
CHARACTER*(MAX_LEN_MBUF) msgBuf
INTEGER iUnit
C-- Th-Sea-ICE parameter
NAMELIST //THSICE_CONST
& rhos, rhoi, rhosw, rhofw,
& cpice, cpwater,
& kice, ksnow,
& transcoef, Lfresh, qsnow,
& albColdSnow, albWarmSnow, albOldSnow, hNewSnowAge,
& albIceMax, albIceMin, hAlbIce, hAlbSnow,
& i0, ksolar,
& saltice, S_winton, mu_Tf,
& Tf0kel,
& himin, Terrmax, nitMaxTsf, hiMax, hsMax,
& iceMaskmax, iceMaskmin, himin0,
& frac_energy, hihig
NAMELIST //THSICE_PARM01
& startIceModel, stepFwd_oceMxL,
& thSIce_deltaT, ocean_deltaT, tauRelax_MxL,
& hMxL_default, sMxL_default, vMxL_default,
& stressReduction,
& thSIce_taveFreq, thSIce_diagFreq, thSIce_monFreq,
& thSIce_tave_mnc, thSIce_snapshot_mnc, thSIce_mon_mnc,
& thSIce_pickup_read_mnc, thSIce_pickup_write_mnc,
& thSIceFract_InitFile, thSIceThick_InitFile,
& thSIceSnowH_InitFile, thSIceSnowA_InitFile,
& thSIceEnthp_InitFile, thSIceTsurf_InitFile
_BEGIN_MASTER(myThid)
WRITE(msgBuf,'(A)') ' THSICE_READPARMS: opening data.ice'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
CALL OPEN_COPY_DATA_FILE(
I 'data.ice', 'THSICE_READPARMS',
O iUnit,
I myThid )
C-- Default values (constants)
rhos = 330. _d 0
rhoi = 900. _d 0
rhosw = rhoConst
rhofw = rhoConstFresh
cpice = 2106. _d 0
cpwater = HeatCapacity_Cp
kice = 2.03 _d 0
ksnow = 0.30 _d 0
transcoef=0.006 _d 0
Lfresh = 3.34 _d 5
qsnow = Lfresh
albColdSnow= 0.85 _d 0
albWarmSnow= 0.70 _d 0
albOldSnow = 0.55 _d 0
albIceMax = 0.65 _d 0
albIceMin = 0.20 _d 0
hAlbIce = 0.50 _d 0
hAlbSnow = 0.30 _d 0
hNewSnowAge= 2. _d -3
i0 = 0.3 _d 0
ksolar = 1.5 _d 0
saltice = 4. _d 0
S_winton = 1. _d 0
mu_Tf = 0.054 _d 0
Tf0kel = celsius2K
himin = 0.01 _d 0
Terrmax = 5.0 _d -1
nitMaxTsf= 20
hiMax = 10. _d 0
hsMax = 10. _d 0
iceMaskmax = 1. _d 0
iceMaskmin = .1 _d 0
himin0 = 0.2 _d 0
frac_energy= .4 _d 0
hihig = 2.5 _d 0
C-- Default values (parameters)
stepFwd_oceMxL = .FALSE.
startIceModel = 0
thSIce_deltaT = dTtracerLev(1)
ocean_deltaT = dTtracerLev(1)
tauRelax_MxL = 0. _d 0
hMxL_default = 50. _d 0
sMxL_default = 35. _d 0
vMxL_default = 5. _d -2
stressReduction = 1. _d 0
thSIce_taveFreq = taveFreq
thSIce_diagFreq = dumpFreq
thSIce_monFreq = monitorFreq
#ifdef ALLOW_MNC
thSIce_tave_mnc = timeave_mnc
thSIce_snapshot_mnc = snapshot_mnc
thSIce_mon_mnc = monitor_mnc
thSIce_pickup_read_mnc = pickup_read_mnc
thSIce_pickup_write_mnc = pickup_write_mnc
#else
thSIce_tave_mnc = .FALSE.
thSIce_snapshot_mnc = .FALSE.
thSIce_mon_mnc = .FALSE.
thSIce_pickup_read_mnc = .FALSE.
thSIce_pickup_write_mnc = .FALSE.
#endif
thSIceFract_InitFile = ' '
thSIceThick_InitFile = ' '
thSIceSnowH_InitFile = ' '
thSIceSnowA_InitFile = ' '
thSIceEnthp_InitFile = ' '
thSIceTsurf_InitFile = ' '
C-- Read parameters from open data file
READ(UNIT=iUnit,NML=THSICE_CONST)
WRITE(msgBuf,'(A)') ' THSICE_READPARMS: read THSICE_CONST'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
READ(UNIT=iUnit,NML=THSICE_PARM01)
WRITE(msgBuf,'(A)') ' THSICE_READPARMS: read THSICE_PARM01'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
C-- Close the open data file
CLOSE(iUnit)
C- Define other constants (from previous ones):
Tmlt1=-mu_Tf*S_winton
rhoiw = rhosw - rhoi
C Set I/O parameters
thSIce_tave_mdsio = .TRUE.
thSIce_snapshot_mdsio = .TRUE.
thSIce_mon_stdio = .TRUE.
thSIce_pickup_write_mdsio = .TRUE.
#ifdef ALLOW_MNC
IF (useMNC) THEN
IF ( .NOT.outputTypesInclusive
& .AND. thSIce_tave_mnc ) thSIce_tave_mdsio = .FALSE.
IF ( .NOT.outputTypesInclusive
& .AND. thSIce_snapshot_mnc )
& thSIce_snapshot_mdsio = .FALSE.
IF ( .NOT.outputTypesInclusive
& .AND. thSIce_mon_mnc ) thSIce_mon_stdio = .FALSE.
IF ( .NOT.outputTypesInclusive
& .AND. thSIce_pickup_write_mnc )
& thSIce_pickup_write_mdsio = .FALSE.
ENDIF
#endif
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
iUnit = standardMessageUnit
c CALL MDSFINDUNIT( iUnit, mythid )
c OPEN(iUnit,file='thsice_check_params',status='unknown')
WRITE(iUnit,*) 'ThSI: rhos =',rhos
WRITE(iUnit,*) 'ThSI: rhoi =',rhoi
WRITE(iUnit,*) 'ThSI: rhosw =',rhosw
WRITE(iUnit,*) 'ThSI: rhofw =',rhofw
WRITE(iUnit,*) 'ThSI: rhoiw =',rhoiw
WRITE(iUnit,*) 'ThSI: cpice =',cpice
WRITE(iUnit,*) 'ThSI: cpwater =',cpwater
WRITE(iUnit,*) 'ThSI: kice =',kice
WRITE(iUnit,*) 'ThSI: ksnow =',ksnow
WRITE(iUnit,*) 'ThSI: transcoef=',transcoef
WRITE(iUnit,*) 'ThSI: Lfresh =',Lfresh
WRITE(iUnit,*) 'ThSI: qsnow =',qsnow
WRITE(iUnit,*) 'ThSI: albColdSnow=',albColdSnow
WRITE(iUnit,*) 'ThSI: albWarmSnow=',albWarmSnow
WRITE(iUnit,*) 'ThSI: albOldSnow =',albOldSnow
WRITE(iUnit,*) 'ThSI: hNewSnowAge=',hNewSnowAge
WRITE(iUnit,*) 'ThSI: albIceMax =',albIceMax
WRITE(iUnit,*) 'ThSI: albIceMin =',albIceMin
WRITE(iUnit,*) 'ThSI: hAlbIce =',hAlbIce
WRITE(iUnit,*) 'ThSI: hAlbSnow =',hAlbSnow
WRITE(iUnit,*) 'ThSI: i0 =',i0
WRITE(iUnit,*) 'ThSI: ksolar =',ksolar
WRITE(iUnit,*) 'ThSI: saltice =',saltice
WRITE(iUnit,*) 'ThSI: S_winton=',S_winton
WRITE(iUnit,*) 'ThSI: mu_Tf =',mu_Tf
WRITE(iUnit,*) 'ThSI: Tf0kel =',Tf0kel
WRITE(iUnit,*) 'ThSI: Tmlt1 =',Tmlt1
WRITE(iUnit,*) 'ThSI: himin =',himin
WRITE(iUnit,*) 'ThSI: Terrmax =',Terrmax
WRITE(iUnit,*) 'ThSI: nitMaxTsf=',nitMaxTsf
WRITE(iUnit,*) 'ThSI: hiMax =',hiMax
WRITE(iUnit,*) 'ThSI: hsMax =',hsMax
WRITE(iUnit,*) 'ThSI: iceMaskmax=',iceMaskmax
WRITE(iUnit,*) 'ThSI: iceMaskmin=',iceMaskmin
WRITE(iUnit,*) 'ThSI: himin0 =',himin0
WRITE(iUnit,*) 'ThSI: frac_energy',frac_energy
WRITE(iUnit,*) 'ThSI: hihig =',hihig
WRITE(iUnit,*) 'ThSI: stressReduction =',stressReduction
WRITE(iUnit,*) 'ThSI: thSIce_deltaT =',thSIce_deltaT
WRITE(iUnit,*) 'ThSI: ocean_deltaT =',ocean_deltaT
WRITE(iUnit,*) 'ThSI: stepFwd_oceMxL=',stepFwd_oceMxL
WRITE(iUnit,*) 'ThSI: tauRelax_MxL =',tauRelax_MxL
WRITE(iUnit,*) 'ThSI: hMxL_default =',hMxL_default
WRITE(iUnit,*) 'ThSI: sMxL_default =',sMxL_default
WRITE(iUnit,*) 'ThSI: vMxL_default =',vMxL_default
WRITE(iUnit,*) 'ThSI: thSIce_taveFreq=',thSIce_taveFreq
WRITE(iUnit,*) 'ThSI: thSIce_diagFreq=',thSIce_diagFreq
WRITE(iUnit,*) 'ThSI: thSIce_monFreq =',thSIce_monFreq
WRITE(iUnit,*) 'ThSI: startIceModel =',startIceModel
IF (iUnit.NE.standardMessageUnit) CLOSE(iUnit)
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
_END_MASTER(myThid)
C-- Everyone else must wait for the parameters to be loaded
_BARRIER
#endif /* ALLOW_THSICE */
RETURN
END