C $Header: /u/gcmpack/MITgcm/model/src/packages_readparms.F,v 1.41 2005/06/22 21:24:18 heimbach Exp $
C $Name:  $

#include "PACKAGES_CONFIG.h"
#include "CPP_OPTIONS.h"

CStartOfInterface
CBOP
C     !ROUTINE: PACKAGES_READPARMS
C     !INTERFACE:
      SUBROUTINE PACKAGES_READPARMS(myThid)

C     !DESCRIPTION: \bv
C     *==========================================================*
C     | SUBROUTINE PACKAGES_READPARMS                             
C     | o Read runtime package configuration parameters           
C     *==========================================================*
C     |   Packages can have internal runtime configuration        
C     |   parameters. A package provides a routine                
C     |   ${PKGNAME}_READ_PARMS to read these parameters. In      
C     |   general this routine should read parameters from a file 
C     |   called data.${pkgname}.                                 
C     |   This routine (S/R PACKAGES_READPARMS) calls per-package 
C     |   parameter reading routines.                             
C     *==========================================================*
C     \ev

C     !CALLING SEQUENCE:
C     PACKAGES_READPARMS
C       |
C       |-- MNC_READPARMS + MNC_INIT + MNC_CW_INIT
C       |
C       |-- RUNCLOCK_READPARMS
C       |
C       |-- GMREDI_READPARMS
C       |
C       |-- KPP_READPARMS
C       |
C       |-- PP81_READPARMS
C       |
C       |-- MY82_READPARMS
C       |
C       |-- GGL90_READPARMS
C       |
C       |-- OPPS_READPARMS
C       |
C       |-- SBO_READPARMS
C       |
C       |-- SEAICE_READPARMS
C       |
C       |-- SHAP_FILT_READPARMS
C       |
C       |-- ZONAL_FILT_READPARMS
C       |
C       |-- OBCS_READPARMS
C       |
C       |-- OFFLINE_READPARMS
C       |
C       |-- BULKF_READPARMS
C       |
C       |-- THSICE_READPARMS
C       |
C       |-- GCHEM_READPARMS
C       |
C       |-- OPTIM_READPARMS
C       |
C       |-- CTRL_READPARMS
C       |
C       |-- COST_READPARMS
C       |
C       |-- GRDCHK_READPARMS
C       |
C       |-- CAL_READPARMS
C       |
C       |-- EXF_READPARMS
C       |
C       |-- EBM_READPARMS
C       |
C       |-- ECCO_READPARMS
C       |
C       |-- CPL_READPARMS
C       |
C       |-- FIZHI_READPARMS
C       |
C       |-- CPL_READPARMS
C       |
C       |-- DIAGNOSTICS_READPARMS


C     !USES:
      IMPLICIT NONE
C     == Global variables ==
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"

C     == Routine arguments ==
      INTEGER myThid
CEOP

#ifdef ALLOW_MNC
C     Read run-time flags and initialize look-up tables for MNC
      IF (useMNC) THEN
        CALL MNC_READPARMS( myThid )
        CALL MNC_INIT(myThid)
        CALL MNC_CW_INIT(sNx,sNy,OLx,OLy,nSx,nSy,nPx,nPy,
     &       Nr,myThid)
CEH3       IF ( mnc_echo_gvtypes ) THEN
CEH3       CALL MNC_CW_DUMP( myThid )
CEH3       ENDIF
      ENDIF
#endif

#ifdef ALLOW_RUNCLOCK
C--   Initialize RUNCLOCK parameters
      IF (useRunClock) CALL RUNCLOCK_READPARMS( myThid )
#endif

#ifdef ALLOW_GMREDI
C--   Initialize GM/Redi parameters
      IF (useGMRedi) CALL GMREDI_READPARMS( myThid )
#endif

#ifdef ALLOW_KPP
C--   Initialize KPP parameters
      IF (useKPP) CALL KPP_READPARMS( myThid )
#endif

#ifdef ALLOW_PP81
C--   Initialize PP81 parameters
      IF (usePP81) CALL PP81_READPARMS( myThid )
#endif

#ifdef ALLOW_MY82
C--   Initialize MY82 parameters
      IF (useMY82) CALL MY82_READPARMS( myThid )
#endif

#ifdef ALLOW_GGL90
C--   Initialize GGL90 parameters
      IF (useGGL90) CALL GGL90_READPARMS( myThid )
#endif

#ifdef ALLOW_OPPS
C--   Initialize OPPS parameters
      IF (useOPPS) CALL OPPS_READPARMS( myThid )
#endif

#ifdef ALLOW_SBO
C--   Initialize SBO parameters
      IF (useSBO) CALL SBO_READPARMS( myThid )
#endif

#ifdef ALLOW_SEAICE
C--   Initialize SEAICE parameters
      IF (useSEAICE) CALL SEAICE_READPARMS( myThid )
#endif

#ifdef ALLOW_SHAP_FILT 
      IF (useSHAP_FILT) CALL SHAP_FILT_READPARMS( myThid )
#endif

#ifdef ALLOW_ZONAL_FILT 
      IF (useZONAL_FILT) CALL ZONAL_FILT_READPARMS( myThid )
#endif

#ifdef ALLOW_OBCS
      IF (useOBCS) CALL OBCS_READPARMS( myThid )
#endif

#ifdef ALLOW_OFFLINE
      call OFFLINE_READPARMS( myThid )
#endif

#ifdef ALLOW_BULK_FORCE
C -- initialize Bulkf parameters
      IF (useBulkForce) CALL BULKF_READPARMS( myThid )
#endif

#ifdef ALLOW_THSICE
C -- initialize Therm.Sea-Ice parameters
      IF (useThSIce) CALL THSICE_READPARMS( myThid )
#endif

#ifdef ALLOW_PTRACERS
      IF (usePTRACERS) CALL PTRACERS_READPARMS( myThid )
#endif

cswdptr -- add --
#ifdef ALLOW_GCHEM
      IF (useGCHEM) CALL GCHEM_READPARMS( myThid )
#endif
cswdptr -- end add ---

#ifdef ALLOW_CTRL
C--   Initialise the optim. parameters.
      call OPTIM_READPARMS( myThid )
C--   Initialise the control parameters
      call CTRL_READPARMS( myThid )
#endif

#ifdef ALLOW_COST
C--   Initialise the cost parameters
      call COST_READPARMS( mythid )
#endif

#ifdef ALLOW_GRDCHK
C--   Initialise gradient check parameters
      if (useGrdchk) call GRDCHK_READPARMS( myThid )
#endif

#ifdef ALLOW_CAL
C--   Initialise the calendar package.
ceh3 should have an IF ( useCAL ) THEN
      call CAL_READPARMS( myThid )
#endif

C--   Custom routine to set forcing fields.
#ifdef ALLOW_EXF
ceh3 needs an IF ( useEXF ) THEN
      call EXF_READPARMS  ( mythid )
#endif

#ifdef ALLOW_EBM
      IF (useEBM) call EBM_READPARMS( mythid )
#endif

#ifdef ALLOW_ECCO
c--   Initialize ECCO package parameters
      call ECCO_READPARMS ( myThid )
#endif

#ifdef COMPONENT_MODULE
C--   set Coupling parameters
      IF ( useCoupler ) CALL CPL_READPARMS( myThid )
#endif /* COMPONENT_MODULE */

CAMM
#ifdef ALLOW_FIZHI
C--   set model date and time and other fizhi parameters
      IF ( usefizhi ) call FIZHI_READPARMS(myThid )
#endif /* ALLOW_FIZHI */
CAMM

#ifdef ALLOW_DIAGNOSTICS
C--   set diagnostics choices
      IF ( useDiagnostics ) CALL DIAGNOSTICS_READPARMS( myThid )
#endif /* ALLOW_DIAGNOSTICS */

#ifdef ALLOW_MATRIX
C--    Initialize matrix package parameters
       IF (useMATRIX) CALL MATRIX_READPARMS ( myThid )
#endif

      RETURN
      END