C $Header: /u/gcmpack/MITgcm/pkg/cd_code/cd_code_read_pickup.F,v 1.4 2017/03/24 23:34:13 jmc Exp $ C $Name: $ #include "CD_CODE_OPTIONS.h" C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP C !ROUTINE: CD_CODE_READ_PICKUP C !INTERFACE: SUBROUTINE CD_CODE_READ_PICKUP( myIter, myThid ) C !DESCRIPTION: C Read the checkpoint. C !USES: IMPLICIT NONE #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "CD_CODE_VARS.h" #ifdef ALLOW_MNC #include "MNC_PARAMS.h" #endif C !INPUT/OUTPUT PARAMETERS: INTEGER myIter INTEGER myThid CEOP #ifdef ALLOW_CD_CODE C !LOCAL VARIABLES: CHARACTER*(MAX_LEN_FNAM) fn CHARACTER*(10) suff INTEGER prec C Suffix for pickup files IF ( pickupSuff.EQ.' ' ) THEN IF ( rwSuffixType.EQ.0 ) THEN WRITE(suff,'(I10.10)') myIter ELSE CALL RW_GET_SUFFIX( suff, startTime, myIter, myThid ) ENDIF ELSE WRITE(suff,'(A10)') pickupSuff ENDIF prec = precFloat64 _BARRIER #ifdef ALLOW_MNC IF (useMNC .AND. pickup_read_mnc) THEN C Read variables from the pickup file WRITE(fn,'(A)') 'pickup_cd' CALL MNC_FILE_CLOSE_ALL_MATCHING(fn, myThid) CALL MNC_CW_SET_UDIM(fn, 1, myThid) CALL MNC_CW_SET_CITER(fn, 3, 3, myIter, 0, myThid) CALL MNC_CW_SET_UDIM(fn, 1, myThid) CALL MNC_CW_RL_R('D',fn,0,0,'uVelD',uVelD, myThid) CALL MNC_CW_RL_R('D',fn,0,0,'vVelD',vVelD, myThid) CALL MNC_CW_RL_R('D',fn,0,0,'Unm1',Unm1, myThid) CALL MNC_CW_RL_R('D',fn,0,0,'Vnm1',Vnm1, myThid) CALL MNC_CW_RL_R('D',fn,0,0,'etaNm1', etaNm1, myThid) ENDIF #endif /* ALLOW_MNC */ WRITE(fn,'(A,A10)') 'pickup_cd.',suff IF (pickup_read_mdsio) THEN CALL READ_REC_3D_RL( fn, prec, Nr, uVelD, 1, myIter, myThid ) CALL READ_REC_3D_RL( fn, prec, Nr, vVelD, 2, myIter, myThid ) CALL READ_REC_3D_RL( fn, prec, Nr, uNM1, 3, myIter, myThid ) CALL READ_REC_3D_RL( fn, prec, Nr, vNM1, 4, myIter, myThid ) IF ( usePickupBeforeC54 ) THEN CALL READ_REC_3D_RL(fn,prec, 1, etaNm1,6*Nr+1,myIter,myThid) ELSE CALL READ_REC_3D_RL(fn,prec, 1, etaNm1,4*Nr+1,myIter,myThid) ENDIF ENDIF C- thread synchronisation (barrier) is part of the EXCH S/R calls CALL EXCH_UV_DGRID_3D_RL( uVelD,vVelD, .TRUE., Nr, myThid ) CALL EXCH_UV_XYZ_RL( uNM1,vNM1, .TRUE., myThid ) CALL EXCH_XY_RL( etaNm1, myThid ) #endif /* ALLOW_CD_CODE */ RETURN END