C $Header: /u/gcmpack/MITgcm/pkg/salt_plume/salt_plume_readparms.F,v 1.9 2017/08/09 15:23:36 mlosch Exp $ C $Name: $ #include "SALT_PLUME_OPTIONS.h" CBOP 0 C !ROUTINE: SALT_PLUME_READPARMS C !INTERFACE: SUBROUTINE SALT_PLUME_READPARMS( myThid ) C !DESCRIPTION: C Initialize SALT_PLUME variables and constants. C !USES: IMPLICIT NONE #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "SALT_PLUME.h" C !INPUT PARAMETERS: INTEGER myThid CEOP #ifdef ALLOW_SALT_PLUME C !LOCAL VARIABLES: C msgBuf - Informational/error message buffer C iUnit - Work variable for IO unit number CHARACTER*(MAX_LEN_MBUF) msgBuf INTEGER iUnit NAMELIST //SALT_PLUME_PARM01 & SaltPlumeSouthernOcean, & CriterionType, PlumeMethod, Npower, & SaltPlumeCriterion, SPovershoot, SPsalFRAC #ifdef SALT_PLUME_IN_LEADS & , SPinflectionPoint #endif #ifdef SALT_PLUME_SPLIT_BASIN & , SaltPlumeSplitBasin #endif #ifdef SALT_PLUME_VOLUME & , SPbrineSconst, SPbrineSaltmax #endif C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| IF ( .NOT.useSALT_PLUME ) THEN C- pkg SALT_PLUME is not used _BEGIN_MASTER(myThid) C- Track pkg activation status: C print a (weak) warning if data.salt_plume is found CALL PACKAGES_UNUSED_MSG( 'useSALT_PLUME', ' ', ' ' ) _END_MASTER(myThid) RETURN ENDIF _BEGIN_MASTER(myThid) C-- Default values for SALT_PLUME SaltPlumeSouthernOcean = .TRUE. CriterionType = 1 PlumeMethod = 1 SaltPlumeCriterion = UNSET_RL SPovershoot = 1.0 _d 0 #ifdef SALT_PLUME_SPLIT_BASIN SaltPlumeSplitBasin = .FALSE. Npower(1) = 0 Npower(2) = 0 SPsalFRAC(1) = 1.0 _d 0 SPsalFRAC(2) = 1.0 _d 0 #else Npower = 0 SPsalFRAC = 1.0 _d 0 #endif #ifdef SALT_PLUME_IN_LEADS SPinflectionPoint = 0.8 _d 0 #endif #ifdef SALT_PLUME_VOLUME SPbrineSconst = 45. _d 0 SPbrineSaltmax = 100. _d 0 #endif WRITE(msgBuf,'(A)')'SALT_PLUME_READPARMS: opening data.salt_plume' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , 1) CALL OPEN_COPY_DATA_FILE( I 'data.salt_plume', 'SALT_PLUME_READPARMS', O iUnit, I myThid ) C Read parameters from open data file READ(UNIT=iUnit,NML=SALT_PLUME_PARM01) WRITE(msgBuf,'(A)') & 'SALT_PLUME_READPARMS: finished reading data.salt_plume' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit, & SQUEEZE_RIGHT , 1) C Close the open data file #ifdef SINGLE_DISK_IO CLOSE(iUnit) #else CLOSE(iUnit,STATUS='DELETE') #endif /* SINGLE_DISK_IO */ IF ( SaltPlumeCriterion .EQ. UNSET_RL ) THEN IF ( CriterionType .EQ. 1 ) THEN SaltPlumeCriterion = 0.4 _d 0 ELSEIF ( CriterionType .EQ. 2 ) THEN SaltPlumeCriterion = 0.005 _d 0 ELSE WRITE(msgBuf,'(A)') 'S/R SALT_PLUME_READPARMS' CALL PRINT_ERROR( msgBuf, myThid ) WRITE(msgBuf,'(A)') 'Invalid CriterionType' CALL PRINT_ERROR( msgBuf, myThid ) STOP 'ABNORMAL END: S/R SALT_PLUME_READPARMS' ENDIF ENDIF _END_MASTER(myThid) C-- Everyone else must wait for the parameters to be loaded _BARRIER #endif /* ALLOW_SALT_PLUME */ RETURN END