C $Header: /u/gcmpack/MITgcm/pkg/bulk_force/bulkf_readparms.F,v 1.3 2003/11/23 01:36:55 jmc Exp $
C $Name:  $

#include "BULK_FORCE_OPTIONS.h"

      SUBROUTINE BULKF_READPARMS( myThid )
C     /==========================================================\
C     | SUBROUTINE BULKF_READPARMS                               |
C     | o Routine to initialize BULKF variables and constants.   |
C     |==========================================================|
C     | Initialize BULKF    parameters, read in data.blk         |
C     \==========================================================/
      IMPLICIT NONE

C     === Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "BULKF_PARAMS.h"
#include "BULKF.h"
#ifdef CONSERV_BULKF
#include "BULKF_CONSERV.h"
#endif

C     === Routine arguments ===
      INTEGER myThid

#ifdef ALLOW_BULK_FORCE
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--   Bulk Formula parameter
      NAMELIST //BULKF_CONST
     &  rhoa, rhofw,
     &  cpair, cpwv,
     &  Lvap, Lfresh,
     &  Tf0kel,
     &  cdrag_1, cdrag_2, cdrag_3,
     &  stefan, xkar, Rvap,
     &  p0,
     &  humid_fac, saltsat, gamma_blk,
     &  Lvap_ice, Rgas,
     &  atm_emissivity, ocean_emissivity,
     &  snow_emissivity, ice_emissivity,
     &         blk_taveFreq

      NAMELIST //BULKF_PARM01
     &         AirTempFile, AirHumidityFile, RainFile,
     &         SolarFile, LongwaveFile, UWindFile,
     &         VWindFile,  RunoffFile, WSpeedFile, QnetFile,
     &         EmPFile, CloudFile, readwindstress, readsurface

#ifdef CONSERV_BULKF
c-    conserving qnet, empmr
      NAMELIST //BULKF_PARM02
     &         qnet_off, empmr_off, conservcycle
#endif


      _BEGIN_MASTER(myThid)

      WRITE(msgBuf,'(A)') ' BULKF_READPARMS: opening data.blk'
      CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
     &                    SQUEEZE_RIGHT , 1)
    

      CALL OPEN_COPY_DATA_FILE(
     I                          'data.blk', 'BULKF_READPARMS',
     O                          iUnit,
     I                          myThid )

C--   Default values 
C-    Physical constant :
      rhoa   = 1.3 _d 0
      rhofw  = rhoConstFresh
      cpair  = atm_Cp
      cpwv   = 1.81 _d 3
      Lvap   = 2.5 _d 6
      Lfresh = 3.34 _d 5
      Tf0kel = celsius2K
      cdrag_1= 0.0027000 _d 0
      cdrag_2= 0.0001420 _d 0
      cdrag_3= 0.0000764 _d 0
      stefan = 5.67 _d -8
      xkar   = 0.4  _d 0
      Rvap   = 461. _d 0
      p0     = atm_Po / 100.
      humid_fac =  0.606 _d 0
      saltsat   =  0.980 _d 0
      gamma_blk =  0.010 _d 0
      Lvap_ice  = 2.83 _d 6
      Rgas   = atm_Rd
      atm_emissivity  = .90 _d 0
      ocean_emissivity= .985 _d 0
      snow_emissivity = .98 _d 0
      ice_emissivity  = .98 _d 0

C-    bulk-forcing parameters:
      blk_taveFreq = taveFreq

C-    Input data files names :
      AirTempFile=' '
      AirHumidityFile=' '
      RainFile=' '
      SolarFile=' '
      LongwaveFile=' '
      UWindFile=' '
      VWindFile=' '
      WspeedFile=' '
      RunoffFile=' '
      QnetFile=' '
      EmPFile=' '
      CloudFile=' '
      SnowFile=' '
      readwindstress=.TRUE.
      readsurface=.TRUE.

C--   Read parameters from open data file
      READ(UNIT=iUnit,NML=BULKF_CONST)
      WRITE(msgBuf,'(A)') ' BULKF_READPARMS: read BULKF_CONST'
      CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
     &                    SQUEEZE_RIGHT , 1)

      READ(UNIT=iUnit,NML=BULKF_PARM01)
      WRITE(msgBuf,'(A)') ' BULKF_READPARMS: read BULKF_PARM01'
      CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
     &                    SQUEEZE_RIGHT , 1)

#ifdef CONSERV_BULKF
c -- default
      qnet_off=0.d0
      empmr_off=0.d0
      READ(UNIT=iUnit,NML=BULKF_PARM02)
      WRITE(msgBuf,'(A)') ' BULKF_READPARMS: read BULKF_PARM02'
      CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
     &                    SQUEEZE_RIGHT , 1)

#endif /* CONSERV_BULKF */

C--   Close the open data file
      CLOSE(iUnit)

C-    Define other constants (from previous ones):
      Qcoef  = 6.11 _d 0 * 0.622 _d 0 / p0
      Sha    = Rgas / .286 _d 0

C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
      iUnit = standardMessageUnit
c     iUnit=88
c     OPEN(iUnit,file='bulkf_check_params',status='unknown')
      WRITE(iUnit,*) 'BlkF: rhoa     =',rhoa
      WRITE(iUnit,*) 'BlkF: rhofw    =',rhofw
      WRITE(iUnit,*) 'BlkF: cpair    =',cpair
      WRITE(iUnit,*) 'BlkF: cpwv     =',cpwv
      WRITE(iUnit,*) 'BlkF: Lvap     =',Lvap
      WRITE(iUnit,*) 'BlkF: Lfresh   =',Lfresh
      WRITE(iUnit,*) 'BlkF: Tf0kel   =',Tf0kel
      WRITE(iUnit,*) 'BlkF: cdrag_1  =',cdrag_1
      WRITE(iUnit,*) 'BlkF: cdrag_2  =',cdrag_2
      WRITE(iUnit,*) 'BlkF: cdrag_3  =',cdrag_3
      WRITE(iUnit,*) 'BlkF: stefan   =',stefan
      WRITE(iUnit,*) 'BlkF: xkar     =',xkar
      WRITE(iUnit,*) 'BlkF: Rvap     =',Rvap
      WRITE(iUnit,*) 'BlkF: p0       =',p0
      WRITE(iUnit,*) 'BlkF: Qcoef    =',Qcoef
      WRITE(iUnit,*) 'BlkF: humid_fac=',humid_fac
      WRITE(iUnit,*) 'BlkF: saltsat  =',saltsat
      WRITE(iUnit,*) 'BlkF: gamma_blk=',gamma_blk
      WRITE(iUnit,*) 'BlkF: Lvap_ice =',Lvap_ice
      WRITE(iUnit,*) 'BlkF: Rgas     =',Rgas
      WRITE(iUnit,*) 'BlkF: Sha      =',Sha
      WRITE(iUnit,*) 'BlkF: atm_emissivity  =',atm_emissivity
      WRITE(iUnit,*) 'BlkF: ocean_emissivity=',ocean_emissivity
      WRITE(iUnit,*) 'BlkF: snow_emissivity =',snow_emissivity
      WRITE(iUnit,*) 'BlkF: ice_emissivity  =',ice_emissivity
      WRITE(iUnit,*) 'BlkF: blk_taveFreq=',blk_taveFreq
      IF (iUnit.EQ.88) 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_BULK_FORCE */

      RETURN
      END