C $Header: /u/gcmpack/MITgcm/pkg/atm_phys/atm_phys_readparms.F,v 1.5 2017/08/09 15:23:39 mlosch Exp $
C $Name:  $

#include "ATM_PHYS_OPTIONS.h"

C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
CBOP 0
C !ROUTINE: ATM_PHYS_READPARMS

C !INTERFACE:
      SUBROUTINE ATM_PHYS_READPARMS( myThid )

C     !DESCRIPTION:
C     Initialize AtmPhys parameters and constants.

C     !USES:
      IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "ATM_PHYS_PARAMS.h"

C     !INPUT PARAMETERS:
      INTEGER myThid
CEOP

#ifdef ALLOW_ATM_PHYS

C     !LOCAL VARIABLES:
C     msgBuf     :: Informational/error message buffer
C     iUnit      :: Work variable for IO unit number
      CHARACTER*(MAX_LEN_MBUF) msgBuf
      INTEGER iUnit
      INTEGER k

      NAMELIST //ATM_PHYS_PARM01
     &       atmPhys_addTendT, atmPhys_addTendS,
     &       atmPhys_addTendU, atmPhys_addTendV,
     &       atmPhys_tauDampUV, atmPhys_dampUVfac,
     &       atmPhys_stepSST,
     &       atmPhys_sstFile,  atmPhys_qFlxFile,
     &       atmPhys_mxldFile, atmPhys_albedoFile

      _BEGIN_MASTER(myThid)

      IF ( .NOT.useAtm_Phys ) THEN
C-    pkg ATM_PHYS is not used
        _BEGIN_MASTER(myThid)
C-    Track pkg activation status:
C     print a (weak) warning if data.atm_phys is found
         CALL PACKAGES_UNUSED_MSG( 'useAtm_Phys', ' ', ' ' )
        _END_MASTER(myThid)
        RETURN
      ENDIF

C--   Default values for ATM_PHYS
      atmPhys_addTendT  = .TRUE.
      atmPhys_addTendS  = .TRUE.
      atmPhys_addTendU  = .TRUE.
      atmPhys_addTendV  = .TRUE.
      atmPhys_tauDampUV = 0. _d 0
      DO k=1,Nr
        atmPhys_dampUVfac(k) = 1. _d 0
      ENDDO
C-    additional parameters:
      atmPhys_stepSST   = .FALSE.
      atmPhys_sstFile   = ' '
      atmPhys_qFlxFile  = ' '
      atmPhys_mxldFile  = ' '
      atmPhys_albedoFile= ' '

      WRITE(msgBuf,'(A)') 'ATM_PHYS_READPARMS: opening data.atm_phys'
      CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
     &                    SQUEEZE_RIGHT, myThid )
      CALL OPEN_COPY_DATA_FILE(
     I                     'data.atm_phys', 'ATM_PHYS_READPARMS',
     O                     iUnit,
     I                     myThid )

C     Read parameters from open data file
      READ(UNIT=iUnit,NML=ATM_PHYS_PARM01)
      WRITE(msgBuf,'(A)')
     &    'ATM_PHYS_READPARMS: finished reading data.atm_phys'
      CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
     &                    SQUEEZE_RIGHT, myThid )
C     Close the open data file
#ifdef SINGLE_DISK_IO
      CLOSE(iUnit)
#else
      CLOSE(iUnit,STATUS='DELETE')
#endif /* SINGLE_DISK_IO */

      IF ( atmPhys_tauDampUV.LE.zeroRL ) THEN
       DO k=1,Nr
        atmPhys_dampUVfac(k) = 0. _d 0
       ENDDO
      ELSE
       DO k=1,Nr
        atmPhys_dampUVfac(k) = atmPhys_dampUVfac(k)/atmPhys_tauDampUV
       ENDDO
      ENDIF

C     Make sure that we locally honor the global MNC on/off flag
c     myPa_MNC = myPa_MNC .AND. useMNC
#ifndef ALLOW_MNC
C     Fix to avoid running without getting any output:
c     myPa_MNC = .FALSE.
#endif
c     myPa_MDSIO = (.NOT. myPa_MNC) .OR. outputTypesInclusive

      _END_MASTER(myThid)

C--   Everyone else must wait for the parameters to be loaded
      _BARRIER

#endif /* ALLOW_ATM_PHYS */

      RETURN
      END