C $Header: /u/gcmpack/MITgcm/pkg/aim/aim_read_physparms.F,v 1.1 2002/10/09 01:01:24 jmc Exp $
C $Name: $
#include "AIM_OPTIONS.h"
CBOP
C !ROUTINE: AIM_READ_PHYSPARMS
C !INTERFACE:
SUBROUTINE AIM_READ_PHYSPARMS( myThid )
C !DESCRIPTION: \bv
C *==========================================================*
C | S/R AIM_READ_PHYSPARMS
C | o Read AIM physics package parameters
C *==========================================================*
C | Initialized parameter in common blocks:
C | FORCON, SFLCON, CNVCON, LSCCON, RADCON, VDICON
C *==========================================================*
C \ev
C !USES:
IMPLICIT NONE
C == Global variables ===
#include "AIM_SIZE.h"
#include "EEPARAMS.h"
c #include "PARAMS.h"
C- Physical constants + functions of sigma and latitude
c #include "com_physcon.h"
C- Constants for sub-grid-scale physics
#include "com_forcon.h"
#include "com_sflcon.h"
#include "com_cnvcon.h"
#include "com_lsccon.h"
#include "com_radcon.h"
#include "com_vdicon.h"
C !INPUT/OUTPUT PARAMETERS:
C == Routine Arguments ==
C myThid - Number of this instance
INTEGER myThid
CEOP
#ifdef ALLOW_AIM
C == Local Variables ==
C msgBuf - Informational/error meesage buffer
C iUnit - Work variable for IO unit number
CHARACTER*(MAX_LEN_MBUF) msgBuf
INTEGER iUnit
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
C-- Physical constants (common PHYCON) :
C P0 = reference pressure
C GG = gravity accel.
C RD = gas constant for dry air
C CP = specific heat at constant pressure
C ALHC = latent heat of condensation
C SBC = Stefan-Boltzmann constant
C-- Constants for forcing fields (common FORCON) :
C SOLC = Solar constant (area averaged) in W/m^2
C ALBSEA = Albedo over sea
C ALBICE = Albedo over sea ice (for ice fraction = 1)
C ALBSN = Albedo over snow (for snow depth > SDALB)
C SDALB = Snow depth corresponding to maximum albedo
C SWCAP = Soil wetness capacity
C SWWIL = Soil wetness at wilting point
NAMELIST //AIM_PAR_FOR
& SOLC, ALBSEA, ALBICE, ALBSN,
& SDALB, SWCAP, SWWIL
C-- Constants for surface fluxes (common SFLCON) :
C FWIND0 = ratio of near-sfc wind to lowest-level wind
C FTEMP0 = weight for near-sfc temperature extrapolation (0-1) :
C 1 : linear extrapolation from two lowest levels
C 0 : constant potential temperature ( = lowest level)
C FHUM0 = weight for near-sfc specific humidity extrapolation (0-1) :
C 1 : extrap. with constant relative hum. ( = lowest level)
C 0 : constant specific hum. ( = lowest level)
C CDL = drag coefficient for momentum over land
C CDS = drag coefficient for momentum over sea
C CHL = heat exchange coefficient over land
C CHS = heat exchange coefficient over sea
C VGUST = wind speed for sub-grid-scale gusts
C SWMAX = Soil wetness (in mm) corresp. to potential evapotranspiration
NAMELIST //AIM_PAR_SFL
& FWIND0, FTEMP0, FHUM0,
& CDL, CDS, CHL, CHS, VGUST,
& SWMAX
C-- Convection constants (common CNVCON) :
C RHBL = relative hum. threshold in the boundary (lowest) layer
C TRCNV = time of relaxation (in hours) towards neutral equilibrium
C ENTMAX = max. entrainment as a fraction of cloud-base mass flux
NAMELIST //AIM_PAR_CNV
& RHBL, TRCNV, ENTMAX
C-- Constants for large-scale condendation (common LSCCON) :
C RHLSC = Relative humidity threshold
C TRLSC = Relaxation time (in hours) for supersat. specific humidity
NAMELIST //AIM_PAR_LSC
& RHLSC, TRLSC
C-- Radiation constants (common RADCON) :
C ABSSW = shortwave absorptivity for dry air (per dp = 10^5 Pa)
C ABSLW = longwave absorptivity for dry air (per dp = 10^5 Pa)
C ABWSW = shortwave absorptivity for water vapour (per dq = 1 g/kg)
C ABWLW = longwave absorptivity for water vapour (per dq = 1 g/kg)
C ABCSW = shortwave absorptivity for cloud fraction
C ABCLW = longwave absorptivity for cloud fraction
C EPSSW = fraction of incoming solar radiation absorbed by ozone
C EPSLW = fraction of surface LW radiation emitted directly to space
C ALBCL = cloud albedo (for cloud cover = 1)
C RHCL1 = relative hum. corresponding to cloud cover = 0
C RHCL2 = relative hum. corresponding to cloud cover = 1
C QACL = specific hum. threshold for cloud cover
NAMELIST //AIM_PAR_RAD
& ABSSW, ABSLW, ABWSW, ABWLW, ABCSW, ABCLW,
& EPSSW, EPSLW,
& ALBCL, RHCL1, RHCL2, QACL
C-- Constants for vertical dif. and sh. conv. (common VDICON) :
C TRVDI = relaxation time (in hours) for moisture diffusion
C TRSHC = relaxation time (in hours) for shallow convection
NAMELIST //AIM_PAR_VDI
& TRVDI, TRSHC
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
_BEGIN_MASTER(myThid)
WRITE(msgBuf,'(A)') ' AIM_READ_PHYSPARMS: opening data.aimphys'
CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
CALL OPEN_COPY_DATA_FILE( 'data.aimphys', 'AIM_READ_PHYSPARMS',
O iUnit, myThid )
C-- Read parameters from open data file:
C- Constants for boundary forcing
READ(UNIT=iUnit,NML=AIM_PAR_FOR)
C- Constants for surface fluxes
READ(UNIT=iUnit,NML=AIM_PAR_SFL)
C- Constants for convection
READ(UNIT=iUnit,NML=AIM_PAR_CNV)
C- Constants for large-scale condensation
READ(UNIT=iUnit,NML=AIM_PAR_LSC)
C- Constants for radiation
READ(UNIT=iUnit,NML=AIM_PAR_RAD)
C- Constants for vertical diffusion and sh. conv.
READ(UNIT=iUnit,NML=AIM_PAR_VDI)
WRITE(msgBuf,'(A)')
& ' AIM_READ_PHYSPARMS: finished reading data.aimphys'
CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
C-- Close the open data file
CLOSE(iUnit)
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
C-- Print out parameter values :
WRITE(msgBuf,'(A)') ' '
CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
WRITE(msgBuf,'(A)') '// ==================================='
CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
WRITE(msgBuf,'(A)') '// AIM physics parameters :'
CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
WRITE(msgBuf,'(A)') '// ==================================='
CALL PRINT_MESSAGE(msgBuf,standardMessageUnit,SQUEEZE_RIGHT,1)
C- namelist AIM_PAR_FOR:
CALL WRITE_0D_R8( SOLC, INDEX_NONE,'AIM_FOR: SOLC =',
& ' /* Solar constant (area averaged) in W/m2 */')
C- namelist AIM_PAR_SFL:
CALL WRITE_0D_R8( FWIND0,INDEX_NONE,'AIM_SFL: FWIND0 =',
& ' /* ratio of near-sfc wind to lowest-level wind */')
CALL WRITE_0D_R8( FTEMP0,INDEX_NONE,'AIM_SFL: FTEMP0 =',
& ' /* weight for near-sfc temp. extrapolation (0-1)*/')
CALL WRITE_0D_R8( FHUM0, INDEX_NONE,'AIM_SFL: FHUM0 =',
& ' /* weight for near-sfc spec.humid. extrap. (0-1)*/')
CALL WRITE_0D_R8( CDL, INDEX_NONE,'AIM_SFL: CDL =',
& ' /* drag coefficient for momentum over land */')
CALL WRITE_0D_R8( CDS, INDEX_NONE,'AIM_SFL: CDS =',
& ' /* drag coefficient for momentum over sea */')
CALL WRITE_0D_R8( CHL, INDEX_NONE,'AIM_SFL: CHL =',
& ' /* heat exchange coefficient over land */')
CALL WRITE_0D_R8( CHS, INDEX_NONE,'AIM_SFL: CHS =',
& ' /* heat exchange coefficient over sea */')
CALL WRITE_0D_R8( VGUST, INDEX_NONE,'AIM_SFL: VGUST =',
& ' /* wind speed [m/s] for sub-grid-scale gusts */')
C- namelist AIM_PAR_CNV:
CALL WRITE_0D_R8( RHBL, INDEX_NONE,'AIM_CNV: RHBL =',
& ' /* rel. hum. threshold in the B.(lowest) layer */')
CALL WRITE_0D_R8( TRCNV, INDEX_NONE,'AIM_CNV: TRCNV =',
& ' /* time of relaxation [h] towards neutral eq. */')
CALL WRITE_0D_R8( ENTMAX,INDEX_NONE,'AIM_CNV: ENTMAX =',
& ' /* time of relaxation [h] towards neutral eq. */')
C- namelist AIM_PAR_LSC:
CALL WRITE_0D_R8( RHLSC, INDEX_NONE,'AIM_LSC: RHLSC =',
& ' /* Relative humidity threshold */')
CALL WRITE_0D_R8( TRLSC, INDEX_NONE,'AIM_LSC: TRLSC =',
& ' /* relaxation time [h] for supersat. spec.hum. */')
C- namelist AIM_PAR_RAD:
CALL WRITE_0D_R8( ABSSW, INDEX_NONE,'AIM_RAD: ABSSW =',
& ' /* ShortW. absorptivity for dry air (/dp, 1e5 Pa)*/')
CALL WRITE_0D_R8( ABSLW, INDEX_NONE,'AIM_RAD: ABSLW =',
& ' /* LongW. absorptivity for dry air (/dp, 1e5 Pa)*/')
CALL WRITE_0D_R8( ABWSW, INDEX_NONE,'AIM_RAD: ABWSW =',
& ' /* ShortW. absorptivity for WaterVap.(/dq, 1g/kg)*/')
CALL WRITE_0D_R8( ABWLW, INDEX_NONE,'AIM_RAD: ABWLW =',
& ' /* LongW. absorptivity for WaterVap.(/dq, 1g/kg)*/')
CALL WRITE_0D_R8( ABCSW, INDEX_NONE,'AIM_RAD: ABCSW =',
& ' /* ShortW. absorptivity for cloud fraction */')
CALL WRITE_0D_R8( ABCLW, INDEX_NONE,'AIM_RAD: ABCLW =',
& ' /* LongW. absorptivity for cloud fraction */')
CALL WRITE_0D_R8( EPSSW, INDEX_NONE,'AIM_RAD: EPSSW =',
& ' /* fraction of inc.solar rad. absorbed by ozone */')
CALL WRITE_0D_R8( EPSLW, INDEX_NONE,'AIM_RAD: EPSLW =',
& ' /* fraction of sfc LW emitted directly to space */')
CALL WRITE_0D_R8( ALBCL, INDEX_NONE,'AIM_RAD: ALBCL =',
& ' /* cloud albedo (for cloud cover = 1) */')
CALL WRITE_0D_R8( RHCL1, INDEX_NONE,'AIM_RAD: RHCL1 =',
& ' /* rel.hum. corresponding to cloud cover = 0 */')
CALL WRITE_0D_R8( RHCL2, INDEX_NONE,'AIM_RAD: RHCL2 =',
& ' /* rel.hum. corresponding to cloud cover = 1 */')
CALL WRITE_0D_R8( QACL, INDEX_NONE,'AIM_RAD: QACL =',
& ' /* specific hum. threshold for cloud cover */')
C- namelist AIM_PAR_VDI:
CALL WRITE_0D_R8( TRVDI, INDEX_NONE,'AIM_VDI: TRVDI =',
& ' /* relaxation time [h] for moisture diffusion */')
CALL WRITE_0D_R8( TRSHC, INDEX_NONE,'AIM_VDI: TRSHC =',
& ' /* relaxation time [h] for shallow convection */')
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_AIM */
RETURN
END