--- MITgcm/model/inc/PARAMS.h 2002/02/09 23:38:55 1.68 +++ MITgcm/model/inc/PARAMS.h 2004/04/05 06:01:07 1.107 @@ -1,4 +1,4 @@ -C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/model/inc/PARAMS.h,v 1.68 2002/02/09 23:38:55 jmc Exp $ +C $Header: /home/ubuntu/mnt/e9_copy/MITgcm/model/inc/PARAMS.h,v 1.107 2004/04/05 06:01:07 edhill Exp $ C $Name: $ C CBOP @@ -69,8 +69,11 @@ C surfQswfile :: File containing surface shortwave radiation C dQdTfile :: File containing thermal relaxation coefficient C EmPmRfile :: File containing surface fresh water flux +C pLoadFile :: File containing pressure loading C buoyancyRelation :: Flag used to indicate which relation to use to C get buoyancy. +C eosType :: choose the equation of state: +C LINEAR, POLY3, UNESCO, JMD95Z, JMD95P, MDJWF, IDEALGAS COMMON /PARM_C/ checkPtSuff, & bathyFile, topoFile, & hydrogThetaFile, hydrogSaltFile, @@ -78,7 +81,9 @@ & saltClimFile, buoyancyRelation, & EmPmRfile, surfQfile, surfQswfile, & uVelInitFile, vVelInitFile, pSurfInitFile, - & dQdTfile + & dQdTfile, ploadFile, + & eosType, pickupSuff, + & mdsioLocalDir CHARACTER*(5) checkPtSuff(maxNoChkptLev) CHARACTER*(MAX_LEN_FNAM) bathyFile, topoFile CHARACTER*(MAX_LEN_FNAM) hydrogThetaFile @@ -95,6 +100,10 @@ CHARACTER*(MAX_LEN_FNAM) vVelInitFile CHARACTER*(MAX_LEN_FNAM) pSurfInitFile CHARACTER*(MAX_LEN_FNAM) dQdTfile + CHARACTER*(MAX_LEN_FNAM) ploadFile + CHARACTER*(MAX_LEN_FNAM) mdsioLocalDir + CHARACTER*(6) eosType + CHARACTER*(10) pickupSuff C-- COMMON /PARM_I/ Integer valued parameters used by the model. C cg2dMaxIters :: Maximum number of iterations in the @@ -115,6 +124,8 @@ C nCheckLev :: Holds current checkpoint level C nonlinFreeSurf :: option related to non-linear free surface C =0 Linear free surface ; >0 Non-linear +C select_rStar :: option related to r* vertical coordinate +C =0 (default) use r coord. ; > 0 use r* COMMON /PARM_I/ & cg2dMaxIters, @@ -125,8 +136,9 @@ & numStepsPerPickup, & writeStatePrec, nCheckLev, & writeBinaryPrec, readBinaryPrec, - & nonlinFreeSurf, - & tempAdvScheme, saltAdvScheme, tracerAdvScheme + & nonlinFreeSurf, select_rStar, + & tempAdvScheme, saltAdvScheme, tracerAdvScheme, + & debugLevel INTEGER cg2dMaxIters INTEGER cg2dChkResFreq INTEGER cg3dMaxIters @@ -140,9 +152,19 @@ INTEGER readBinaryPrec INTEGER nCheckLev INTEGER nonlinFreeSurf + INTEGER select_rStar INTEGER tempAdvScheme INTEGER saltAdvScheme INTEGER tracerAdvScheme + INTEGER debugLevel + +C + INTEGER debLevZero + PARAMETER(debLevZero=0) + INTEGER debLevA + PARAMETER(debLevA=1) + INTEGER debLevB + PARAMETER(debLevB=2) C-- COMMON /PARM_L/ Logical valued parameters used by the model. C usingCartesianGrid :: If TRUE grid generation will be in a cartesian @@ -160,6 +182,7 @@ C on and off. C metricTerms :: Flag which turns metric terms on or off. C usingSphericalPolarMTerms :: If TRUE use spherical polar metric terms. +C useNHMTerms :: If TRUE use non-hydrostatic metric terms. C useCoriolis :: Flag which turns the coriolis terms on and off. C tempDiffusion :: Flag which turns diffusion of temperature on C and off. @@ -167,15 +190,15 @@ C and off. C tempForcing :: Flag which turns external forcing of temperature on C and off. -C saltDiffusion :: Flag which turns diffusion of salinit on +C saltDiffusion :: Flag which turns diffusion of salinity on C and off. -C saltAdvection :: Flag which turns advection of salinit on +C saltAdvection :: Flag which turns advection of salinity on C and off. -C saltForcing :: Flag which turns external forcing of salinit on +C saltForcing :: Flag which turns external forcing of salinity on C and off. -C useRealFreshWaterFlux :: if true (=Natural BCS), treats P+R-E flux -C as a real Fresh Water (=> changes the seal level) -C if false, converts P+R-E to virtual salt flux +C useRealFreshWaterFlux :: if True (=Natural BCS), treats P+R-E flux +C as a real Fresh Water (=> changes the Sea Level) +C if F, converts P+R-E to salt flux (no SL effect) C rigidLid :: Set to true to use rigid lid C implicitFreeSurface :: Set to true to use implcit free surface C exactConserv :: Set to true to conserve exactly the total Volume @@ -188,22 +211,38 @@ C useConstantF :: Coriolis parameter set to f0 C useBetaPlaneF :: Coriolis parameter set to f0 + beta.y C useSphereF :: Coriolis parameter set to 2.omega.sin(phi) +C useCDscheme :: use CD-scheme to calculate Coriolis terms. +C useJamartWetPoints :: Use wet-point method for Coriolis (Jamart and Ozer, 1986) C implicitDiffusion :: Turns implicit vertical diffusion on C implicitViscosity :: Turns implicit vertical viscosity on +C tempImplVertAdv :: Turns on implicit vertical advection for Temperature +C saltImplVertAdv :: Turns on implicit vertical advection for Salinity +C momImplVertAdv :: Turns on implicit vertical advection for Momentum +C multiDimAdvection :: Flag that enable multi-dimension advection +C forcing_In_AB :: if False, put forcing (Temp,Salt,Tracers) contribution +C out off Adams-Bashforth time stepping. C doThetaClimRelax :: Set true if relaxation to temperature C climatology is required. C doSaltClimRelax :: Set true if relaxation to salinity C climatology is required. C periodicExternalForcing :: Set true if forcing is time-dependant C usingPCoords :: Set to indicate that we are working in pressure -C coords. +C coords. (jmc: is it still used ?) C usingZCoords :: Set to indicate that we are working in height -C coords. +C coords. (jmc: is it still used ?) +C useDynP_inEos_Zc :: use the dynamical pressure in EOS (with Z-coord.) +C this requires specific code for restart & exchange +C setCenterDr :: set cell Center depth and put Interface at the middle C nonHydrostatic :: Using non-hydrostatic terms +C quasiHydrostatic :: Using non-hydrostatic terms in hydrostatic algorithm C globalFiles :: Selects between "global" and "tiled" files -C allowFreezing :: Allows water to freeze and form ice +C useSingleCpuIO :: On SGI platforms, option globalFiles is either +C slow (f77) or does not work (f90). When +C useSingleCpuIO is set, mdsio_writefield.F +C outputs from master mpi process only. +C allowFreezing :: Allows surface water to freeze and form ice +C useOldFreezing :: use the old version (before checkpoint52a_pre, 2003-11-12) C groundAtK1 :: put the surface(k=1) at the Lower Boundary (=ground) -C useJamartWetPoints :: Use wet-point method for Coriolis (Jamart and Ozer, 1986) COMMON /PARM_L/ usingCartesianGrid, usingSphericalPolarGrid, & usingCurvilinearGrid, & no_slip_sides,no_slip_bottom, @@ -215,21 +254,25 @@ & useRealFreshWaterFlux, & rigidLid, implicitFreeSurface, exactConserv, uniformLin_PhiSurf, & momStepping, tempStepping, saltStepping, tr1Stepping, - & metricTerms, usingSphericalPolarMTerms, + & metricTerms, usingSphericalPolarMTerms, useNHMTerms, & useConstantF, useBetaPlaneF, useSphereF, + & useCDscheme, + & useEnergyConservingCoriolis, useJamartWetPoints, & implicitDiffusion, implicitViscosity, + & tempImplVertAdv, saltImplVertAdv, momImplVertAdv, + & multiDimAdvection, forcing_In_AB, & doThetaClimRelax, doSaltClimRelax, doTr1ClimRelax, - & periodicExternalForcing, usingPCoords, usingZCoords, - & nonHydrostatic, globalFiles, - & allowFreezing, groundAtK1, + & periodicExternalForcing, + & usingPCoords, usingZCoords, useDynP_inEos_Zc, setCenterDr, + & nonHydrostatic, quasiHydrostatic, globalFiles, useSingleCpuIO, + & allowFreezing, useOldFreezing, groundAtK1, & usePickupBeforeC35, debugMode, - & readPickupWithTracer, writePickupWithTracer, - & multiDimAdvection, useEnergyConservingCoriolis, - & useJamartWetPoints + & readPickupWithTracer, writePickupWithTracer LOGICAL usingCartesianGrid LOGICAL usingSphericalPolarGrid LOGICAL usingCurvilinearGrid LOGICAL usingSphericalPolarMTerms + LOGICAL useNHMTerms LOGICAL no_slip_sides LOGICAL no_slip_bottom LOGICAL staggerTimeStep @@ -258,25 +301,35 @@ LOGICAL useConstantF LOGICAL useBetaPlaneF LOGICAL useSphereF + LOGICAL useCDscheme + LOGICAL useEnergyConservingCoriolis + LOGICAL useJamartWetPoints LOGICAL implicitDiffusion LOGICAL implicitViscosity + LOGICAL tempImplVertAdv + LOGICAL saltImplVertAdv + LOGICAL momImplVertAdv + LOGICAL multiDimAdvection + LOGICAL forcing_In_AB LOGICAL doThetaClimRelax LOGICAL doSaltClimRelax LOGICAL doTr1ClimRelax LOGICAL periodicExternalForcing LOGICAL usingPCoords LOGICAL usingZCoords + LOGICAL useDynP_inEos_Zc + LOGICAL setCenterDr LOGICAL nonHydrostatic + LOGICAL quasiHydrostatic LOGICAL globalFiles + LOGICAL useSingleCpuIO LOGICAL allowFreezing + LOGICAL useOldFreezing LOGICAL groundAtK1 LOGICAL usePickupBeforeC35 LOGICAL debugMode LOGICAL readPickupWithTracer LOGICAL writePickupWithTracer - LOGICAL multiDimAdvection - LOGICAL useEnergyConservingCoriolis - LOGICAL useJamartWetPoints C-- COMMON /PARM_R/ "Real" valued parameters used by the model. C gg2dTargetResidual @@ -299,16 +352,16 @@ C drop form 192 -> 134! Need to investigate this further! C For now I have introduced a parameter cg2dpcOffDFac which C defaults to 0.51 but can be set at runtime. -C delP :: Vertical grid spacing ( Pa ). -C delZ :: Vertical grid spacing ( m ). C delR :: Vertical grid spacing ( units of r ). +C delRc :: Vertical grid spacing between cell centers (r unit). C delX :: Separation between cell faces (m) or (deg), depending C delY on input flags. C gravity :: Accel. due to gravity ( m/s^2 ) C recip_gravity and its inverse C gBaro :: Accel. due to gravity used in barotropic equation ( m/s^2 ) -C ronil :: Reference density +C rhoNil :: Reference density for the linear equation of state C rhoConst :: Vertically constant reference density +C rhoConstFresh :: Constant reference density for fresh water (rain) C startTime :: Start time for model ( s ) C phiMin :: Latitude of southern most cell face. C thetaMin :: Longitude of western most cell face (this @@ -320,32 +373,27 @@ C ( Southern edge f for beta plane ) C beta :: df/dy ( s^-1.m^-1 ) C omega :: Angular velocity ( rad/s ) +C rotationPeriod :: Rotation period (s) (= 2.pi/omega) C viscAh :: Eddy viscosity coeff. for mixing of C momentum laterally ( m^2/s ) -C viscAz :: Eddy viscosity coeff. for mixing of -C momentum vertically ( m^2/s ) -C viscAp :: Eddy viscosity coeff. for mixing of -C momentum vertically ( Pa^2/s ) C viscAr :: Eddy viscosity coeff. for mixing of C momentum vertically ( units of r^2/s ) C viscA4 :: Biharmonic viscosity coeff. for mixing of C momentum laterally ( m^4/s ) +C viscAhMax :: Maximum eddy viscosity coeff. for mixing of +C momentum laterally ( m^2/s ) +C viscA4Max :: Maximum biharmonic viscosity coeff. for mixing of +C momentum laterally ( m^4/s ) +C viscAhGrid:: non-dimensional grid-size dependent viscosity +C viscA4Grid:: non-dimensional grid-size dependent bi-harmonic viscosity C diffKhT :: Laplacian diffusion coeff. for mixing of C heat laterally ( m^2/s ) -C diffKzT :: Laplacian diffusion coeff. for mixing of -C heat vertically ( m^2/s ) -C diffKpT :: Laplacian diffusion coeff. for mixing of -C heat vertically ( Pa^2/s ) C diffKrT :: Laplacian diffusion coeff. for mixing of C heat vertically ( units of r^2/s ) C diffK4T :: Biharmonic diffusion coeff. for mixing of C heat laterally ( m^4/s ) C diffKhS :: Laplacian diffusion coeff. for mixing of C salt laterally ( m^2/s ) -C diffKzS :: Laplacian diffusion coeff. for mixing of -C salt vertically ( m^2/s ) -C diffKpS :: Laplacian diffusion coeff. for mixing of -C salt vertically ( Pa^2/s ) C diffKrS :: Laplacian diffusion coeff. for mixing of C salt vertically ( units of r^2/s ) C diffK4S :: Biharmonic diffusion coeff. for mixing of @@ -359,6 +407,7 @@ C are referenced to this clock. ( s ) C deltaTMom :: Timestep for momemtum equations ( s ) C deltaTtracer :: Timestep for tracer equations ( s ) +C deltaTfreesurf :: Timestep for free-surface equation ( s ) C freesurfFac :: Parameter to turn implicit free surface term on or off C freesurfac = 1. uses implicit free surface C freesurfac = 0. uses rigid lid @@ -391,12 +440,17 @@ C cosPower :: Power of cosine of latitude to multiply viscosity C cAdjFreq :: Frequency of convective adjustment C -C taveFreq :: Frequency with which time-averaged model state is written to -C post-processing files ( s ). +C taveFreq :: Frequency with which time-averaged model state +C is written to post-processing files ( s ). +C tave_lastIter :: (for state variable only) fraction of the last time +C step (of each taveFreq period) put in the time average. +C (fraction for 1rst iter = 1 - tave_lastIter) C tauThetaClimRelax :: Relaxation to climatology time scale ( s ). C lambdaThetaClimRelax :: Inverse time scale for relaxation ( 1/s ). C tauSaltClimRelax :: Relaxation to climatology time scale ( s ). C lambdaSaltClimRelax :: Inverse time scale for relaxation ( 1/s ). +C latBandClimRelax :: latitude band where Relaxation to Clim. is applied, +C i.e. where |yC| <= latBandClimRelax C externForcingPeriod :: Is the period of which forcing varies (eg. 1 month) C externForcingCycle :: Is the repeat time of the forcing (eg. 1 year) C (note: externForcingCycle must be an integer @@ -418,27 +472,31 @@ C --"-"-- Quadratic ( linear: 1/s, quadratic: 1/m ) COMMON /PARM_R/ cg2dTargetResidual, cg2dTargetResWunit, & cg2dpcOffDFac, cg3dTargetResidual, - & delP, delZ, delR, delX, delY, - & deltaT,deltaTmom, deltaTtracer, deltaTClock,abeps, startTime, + & delR, delRc, delX, delY, + & deltaT, deltaTmom, deltaTtracer, deltaTfreesurf, deltaTClock, + & abeps, startTime, & phiMin, thetaMin, rSphere, recip_RSphere, f0, beta, - & fCori, fCoriG, - & viscAh, viscAz, viscA4, viscAr, viscAstrain, viscAtension, - & diffKhT, diffKzT, diffK4T, diffKrT, - & diffKhS, diffKzS, diffK4S, diffKrS, + & fCori, fCoriG, fCoriCos, + & viscAh, viscAhMax, viscAhGrid, + & viscA4, viscA4Max, viscA4Grid, + & viscAr, viscAstrain, viscAtension, + & diffKhT, diffK4T, diffKrT, + & diffKhS, diffK4S, diffKrS, & delT, tauCD, rCD, freeSurfFac, implicSurfPress, implicDiv2Dflow, & hFacMin, hFacMinDz, hFacInf, hFacSup, & gravity, recip_Gravity, gBaro, rhonil, recip_rhonil, - & recip_rhoConst, rhoConst, tRef, sRef, - & endTime, chkPtFreq, pchkPtFreq, dumpFreq, - & diagFreq, taveFreq, monitorFreq, + & recip_rhoConst, rhoConst, + & rhoConstFresh, convertEmP2rUnit, tRef, sRef, + & endTime, chkPtFreq, pchkPtFreq, dumpFreq, adjDumpFreq, + & diagFreq, taveFreq, tave_lastIter, monitorFreq, & afFacMom, vfFacMom, pfFacMom, cfFacMom, foFacMom, mtFacMom, - & cosPower, cAdjFreq, omega, + & cosPower, cAdjFreq, omega, rotationPeriod, & tauThetaClimRelax, lambdaThetaClimRelax, & tauSaltClimRelax, lambdaSaltClimRelax, - & tauTr1ClimRelax, lambdaTr1ClimRelax, + & tauTr1ClimRelax, lambdaTr1ClimRelax, latBandClimRelax, & externForcingCycle, externForcingPeriod, & convertFW2Salt, temp_EvPrRn, salt_EvPrRn, trac_EvPrRn, - & viscAp, diffKpT, diffKpS, hFacMinDr, hFacMinDp, + & hFacMinDr, hFacMinDp, & horiVertRatio, recip_horiVertRatio, & ivdc_kappa, Ro_SeaLevel, & bottomDragLinear,bottomDragQuadratic @@ -447,15 +505,15 @@ _RL cg2dTargetResWunit _RL cg3dTargetResidual _RL cg2dpcOffDFac - _RL delZ(Nr) - _RL delP(Nr) _RL delR(Nr) + _RL delRc(Nr+1) _RL delX(Nx) _RL delY(Ny) _RL deltaT _RL deltaTClock _RL deltaTmom _RL deltaTtracer + _RL deltaTfreesurf _RL abeps _RL phiMin _RL thetaMin @@ -473,21 +531,19 @@ _RL hFacSup _RL beta _RL viscAh + _RL viscAhMax + _RL viscAhGrid _RL viscAstrain _RL viscAtension - _RL viscAz - _RL viscAp _RL viscAr _RL viscA4 + _RL viscA4Max + _RL viscA4Grid _RL diffKhT _RL diffKrT - _RL diffKzT - _RL diffKpT _RL diffK4T _RL diffKhS _RL diffKrS - _RL diffKzS - _RL diffKpS _RL diffK4S _RL delt _RL tauCD @@ -499,17 +555,22 @@ _RL recip_rhonil _RL rhoConst _RL recip_rhoConst + _RL rhoConstFresh + _RL convertEmP2rUnit _RL tRef(Nr) _RL sRef(Nr) _RS fCori(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RS fCoriG(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) + _RS fCoriCos(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy) _RL startTime _RL endTime _RL chkPtFreq _RL pChkPtFreq _RL dumpFreq + _RL adjDumpFreq _RL diagFreq _RL taveFreq + _RL tave_lastIter _RL monitorFreq _RL afFacMom _RL vfFacMom @@ -520,12 +581,14 @@ _RL cosPower _RL cAdjFreq _RL omega + _RL rotationPeriod _RL tauThetaClimRelax _RL lambdaThetaClimRelax _RL tauSaltClimRelax _RL lambdaSaltClimRelax _RL tauTr1ClimRelax _RL lambdaTr1ClimRelax + _RL latBandClimRelax _RL externForcingCycle _RL externForcingPeriod _RL convertFW2Salt @@ -539,45 +602,72 @@ _RL bottomDragLinear _RL bottomDragQuadratic - COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp, - & Lamba_theta +C-- COMMON /PARM_A/ Thermodynamics constants ? + COMMON /PARM_A/ HeatCapacity_Cp,recip_Cp _RL HeatCapacity_Cp - _RL Lamba_theta _RL recip_Cp -C Equation of State (polynomial coeffients) - COMMON /PARM_EOS_NL/ eosC,eosSig0,eosRefT,eosRefS - _RL eosC(9,Nr+1),eosSig0(Nr+1),eosRefT(Nr+1),eosRefS(Nr+1) -C Linear equation of state -C tAlpha :: Linear EOS thermal expansion coefficient ( 1/degree ). -C sBeta :: Linear EOS haline contraction coefficient. - COMMON /PARM_EOS_LIN/ tAlpha,sBeta,eosType - _RL tAlpha - _RL sBeta - character*(6) eosType - -C Atmospheric physical parameters (Ideal Gas EOS, ...) -C atm_po :: standard reference pressure -C atm_cp :: specific heat (Cp) of the (dry) air at constant pressure +C-- COMMON /PARM_ATM/ Atmospheric physical parameters (Ideal Gas EOS, ...) +C celsius2K :: convert centigrade (Celsius) degree to Kelvin +C atm_Po :: standard reference pressure +C atm_Cp :: specific heat (Cp) of the (dry) air at constant pressure +C atm_Rd :: gas constant for dry air C atm_kappa :: kappa = R/Cp (R: constant of Ideal Gas EOS) -C Integr_GeoPot :: option to select the way we integrate the geopotential +C atm_Rq :: water vapour specific volume anomaly relative to dry air +C (e.g. typical value = (29/18 -1) 10^-3 with q [g/kg]) +C integr_GeoPot :: option to select the way we integrate the geopotential C (still a subject of discussions ...) - COMMON /PARM_ATM/ atm_cp, atm_kappa, atm_po, - & Integr_GeoPot - _RL atm_cp, atm_kappa, atm_po - INTEGER Integr_GeoPot +C selectFindRoSurf :: select the way surf. ref. pressure (=Ro_surf) is +C derived from the orography. Implemented: 0,1 (see INI_P_GROUND) + COMMON /PARM_ATM/ + & celsius2K, + & atm_Cp, atm_Rd, atm_kappa, atm_Rq, atm_Po, + & integr_GeoPot, selectFindRoSurf + _RL celsius2K + _RL atm_Po, atm_Cp, atm_Rd, atm_kappa, atm_Rq + INTEGER integr_GeoPot, selectFindRoSurf C Logical flags for selecting packages LOGICAL useKPP LOGICAL useGMRedi LOGICAL useOBCS LOGICAL useAIM + LOGICAL useLand LOGICAL useGrdchk LOGICAL useECCO LOGICAL useSHAP_FILT LOGICAL useZONAL_FILT LOGICAL useFLT + LOGICAL usePTRACERS + LOGICAL useSBO + LOGICAL useSEAICE + LOGICAL useBulkForce + LOGICAL useThSIce + LOGICAL usefizhi + LOGICAL usegridalt + LOGICAL usediagnostics COMMON /PARM_PACKAGES/ - & useKPP, useGMRedi, useOBCS, useAIM, useECCO, - & useSHAP_FILT, useZONAL_FILT, useGrdchk, useFLT - + & useKPP, useGMRedi, useOBCS, useAIM, useLand, useECCO, + & useSHAP_FILT, useZONAL_FILT, useGrdchk, useFLT, + & usePTRACERS, useSBO, useSEAICE, useThSIce, useBulkForce, + & usefizhi, usegridalt, usediagnostics + +C Run-time flags for early-initialization of MNC + LOGICAL + & useMNC, + & mnc_use_indir, mnc_use_outdir, mnc_outdir_date, + & mnc_echo_gvtypes, mnc_pickup_create, mnc_pickup_read, + & mnc_use_for_mon + CHARACTER*(MAX_LEN_FNAM) mnc_outdir_str + CHARACTER*(MAX_LEN_FNAM) mnc_indir_str + COMMON /PARM_MNC/ + & useMNC, + & mnc_use_indir, mnc_use_outdir, mnc_outdir_date, + & mnc_echo_gvtypes, mnc_pickup_create, mnc_pickup_read, + & mnc_outdir_str, mnc_indir_str, + & mnc_use_for_mon + + +CEH3 ;;; Local Variables: *** +CEH3 ;;; mode:fortran *** +CEH3 ;;; End: ***