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