C $Header: /u/gcmpack/MITgcm/pkg/fizhi/fizhi_readparms.F,v 1.20 2017/08/09 15:23:38 mlosch Exp $ C $Name: $ #include "FIZHI_OPTIONS.h" C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP 0 C !ROUTINE: FIZHI_MNC_INIT C !INTERFACE: SUBROUTINE FIZHI_READPARMS( myThid ) C !DESCRIPTION: C Read Fizhi Namelist and Get the Model Date and Time from File C !USES: implicit none #include "chronos.h" #include "SIZE.h" #include "fizhi_ocean_coms.h" #include "fizhi_io_comms.h" #include "EEPARAMS.h" #include "PARAMS.h" C !INPUT PARAMETERS: integer myThid CEOP C !LOCAL VARIABLES: character*(MAX_LEN_MBUF) msgBuf integer ku, ku2 integer nymdbegin, nhmsbegin integer nymdcurrent, nhmscurrent real runlength integer nincr integer mmdd,hhmmss,nsecf2 integer nymdend,nhmsend logical climsst, climsice namelist / /fizhi_list & nymdbegin, nhmsbegin, & fizhi_mnc_write_pickup, fizhi_mnc_read_pickup, & runlength, climsst, climsice C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| IF ( .NOT.useFizhi ) THEN C- pkg FIZHI is not used _BEGIN_MASTER(myThid) C- Track pkg activation status: C print a (weak) warning if data.fizhi is found CALL PACKAGES_UNUSED_MSG( 'useFizhi', ' ', ' ' ) _END_MASTER(myThid) RETURN ENDIF C Set defaults fizhi_mdsio_read_pickup = .TRUE. fizhi_mdsio_write_pickup = .TRUE. fizhi_mnc_write_pickup = .FALSE. fizhi_mnc_read_pickup = .FALSE. runlength = 0.0 climsst = .TRUE. climsice = .TRUE. C Read Fizhi Namelist WRITE(msgBuf,'(A)') ' FIZHI_READPARMS: opening data.fizhi' CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,SQUEEZE_RIGHT,1) CALL OPEN_COPY_DATA_FILE('data.fizhi', 'FIZHI_READPARMS', & ku,myThid ) read (ku,NML=fizhi_list) #ifdef SINGLE_DISK_IO CLOSE(ku) #else CLOSE(ku,STATUS='DELETE') #endif /* SINGLE_DISK_IO */ C Read Supplemental Ascii File with Current Time Info CALL MDSFINDUNIT( ku2, myThid ) open(ku2,file='datetime0',form='formatted') read(ku2,1000)nymdcurrent,nhmscurrent close (ku2) 1000 format(i8,2x,i6) C Change the length of the model run, ie, change ntimesteps C if runlength has been set in the fizhi namelist if(runlength.gt.0.) then mmdd = int(runlength) hhmmss = int((runlength - int(runlength))*1.e6) if(mmdd.lt.100) then nincr = nsecf2(hhmmss,mmdd,nymdcurrent) else call TIME2FREQ2(mmdd,nymdcurrent,nhmscurrent,nincr) endif nTimeSteps = int(nincr/deltaT) nEndIter = nIter0 + nTimeSteps endTime = startTime + deltaT*float(nTimeSteps) WRITE(msgBuf,'(A,I10)') & ' CHANGING NUMBER OF MODEL TIMESTEPS TO',ntimesteps CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,SQUEEZE_RIGHT,1) WRITE(msgBuf,'(A,F12.2)') ' CHANGING END TIME TO',endtime CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,SQUEEZE_RIGHT,1) endif C Fill chronos Common Block with Namelist and Other File Info nymd0 = nymdbegin nhms0 = nhmsbegin nymd = nymdcurrent nhms = nhmscurrent C Fill ocean params common block with namelist into sstclim = climsst siceclim = climsice C Echo Date and Time Info _BEGIN_MASTER(myThid) print *, ' Begin Date ',nymd0,' Begin Time ',nhms0 print *, 'Current Date ',nymd,' Current Time ',nhms _END_MASTER(myThid) return end