Back to home page

MITgcm

 
 

    


File indexing completed on 2022-10-26 05:09:35 UTC

view on githubraw file Latest commit cc9097e5 on 2022-10-26 02:15:19 UTC
4e66ab0b67 Oliv*0001 #include "LONGSTEP_OPTIONS.h"
                0002 
                0003 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0004 CBOP
                0005 C     !ROUTINE: LONGSTEP_READPARMS
                0006 
                0007 C     !INTERFACE:
                0008       SUBROUTINE LONGSTEP_READPARMS( myThid )
                0009 
                0010 C     !DESCRIPTION:
                0011 C     Initialize longstep parameters, read in data.longstep
                0012 
                0013 C     !USES:
                0014       IMPLICIT NONE
                0015 #include "SIZE.h"
                0016 #include "EEPARAMS.h"
                0017 #include "PARAMS.h"
cc9097e522 Oliv*0018 #include "LONGSTEP_PARAMS.h"
4e66ab0b67 Oliv*0019 
                0020 C     !INPUT PARAMETERS:
                0021       INTEGER myThid
                0022 CEOP
                0023 
                0024 #ifdef ALLOW_LONGSTEP
                0025 
                0026 C     !LOCAL VARIABLES:
                0027 C     iUnit      :: unit number for I/O
                0028 C     msgBuf     :: message buffer
4386cab7b1 Jean*0029       INTEGER iUnit
4e66ab0b67 Oliv*0030       CHARACTER*(MAX_LEN_MBUF) msgBuf
                0031 
fda3710353 Oliv*0032 C     LS_nIter        :: number of dynamics time steps between ptracer steps
                0033 C     LS_whenToSample :: when to sample dynamical fields for the longstep average
                0034 C                        0 - at beginning of timestep (reproduces offline results)
                0035 C                        1 - after first THERMODYNAMICS but before DYNAMICS
                0036 C                            (use use old U,V,W for advection, but new T,S for GCHEM if
                0037 C                            staggerTimeStep=.FALSE.; reproduces online with
                0038 C                            staggerTimeStep=.FALSE. for LS_nIter=1)
                0039 C                        2 - after DYNAMICS and second THERMODYNAMICS
                0040 C                            (use new U,V,W and T,S; reproduces online with
                0041 C                            staggerTimeStep=.TRUE. for LS_nIter=1)
4e66ab0b67 Oliv*0042       NAMELIST /LONGSTEP_PARM01/
fda3710353 Oliv*0043      &     LS_nIter, LS_whenToSample
4e66ab0b67 Oliv*0044 
ae4c29e0db Jean*0045 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0046 
                0047       IF ( .NOT.usePTRACERS ) THEN
                0048 C-    pkg LONGSTEP is not used
                0049         _BEGIN_MASTER(myThid)
                0050 C-    Track pkg activation status:
                0051 C     print a (weak) warning if data.longstep is found
                0052          CALL PACKAGES_UNUSED_MSG(
                0053      &        'usePTRACERS', 'LONGSTEP_READPARMS', 'longstep' )
                0054         _END_MASTER(myThid)
                0055         RETURN
                0056       ENDIF
                0057 
4e66ab0b67 Oliv*0058       _BEGIN_MASTER(myThid)
                0059 
                0060 C     Set defaults values for parameters in LONGSTEP_PARAMS.h
                0061       LS_nIter = 1
fda3710353 Oliv*0062       LS_whenToSample = 0
4e66ab0b67 Oliv*0063 
                0064 C     Open and read the data.longstep file
                0065       WRITE(msgBuf,'(A)') ' LONGSTEP_READPARMS: opening data.longstep'
                0066       CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0067      &                    SQUEEZE_RIGHT , myThid )
                0068       CALL OPEN_COPY_DATA_FILE(
                0069      I                   'data.longstep', 'LONGSTEP_READPARMS',
                0070      O                   iUnit,
                0071      I                   myThid )
                0072       READ(UNIT=iUnit,NML=LONGSTEP_PARM01)
                0073       WRITE(msgBuf,'(A)')
                0074      &  ' LONGSTEP_READPARMS: finished reading data.longstep'
                0075       CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
                0076      &                    SQUEEZE_RIGHT , myThid )
                0077 
                0078 C     Close the open data file
7a77863887 Mart*0079 #ifdef SINGLE_DISK_IO
4e66ab0b67 Oliv*0080       CLOSE(iUnit)
7a77863887 Mart*0081 #else
                0082       CLOSE(iUnit,STATUS='DELETE')
                0083 #endif /* SINGLE_DISK_IO */
4e66ab0b67 Oliv*0084 
                0085 C     Now set-up any remaining parameters that result from the input
                0086 C     parameters
                0087 
cc9097e522 Oliv*0088 C     whether to average EmPmR or PmEpR in LS_fwFlux
                0089 #ifdef EXACT_CONSERV
                0090       LS_usePmEpR = (nonlinFreeSurf.GT.0 .OR. usingPCoords)
                0091      &              .AND. useRealFreshWaterFlux
                0092 #else /* EXACT_CONSERV */
                0093       LS_usePmEpR = .FALSE.
                0094 #endif /* EXACT_CONSERV */
4e66ab0b67 Oliv*0095 
                0096       _END_MASTER(myThid)
                0097 C     Everyone else must wait for the parameters to be loaded
                0098       _BARRIER
                0099 
                0100 #endif /* ALLOW_LONGSTEP */
                0101 
                0102       RETURN
                0103       END