C $Header: C $Name: #include "OBCS_OPTIONS.h" CStartofinterface SUBROUTINE OBCS_READ_CHECKPOINT( prec, myIt, suff, myThid ) C /==========================================================\ C | SUBROUTINE OBCS_READ_CHECKPOINT | C | o Read open boundary checkpoint arrays | C |==========================================================| C | | C \==========================================================/ IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "OBCS.h" C == Routine arguments == INTEGER prec INTEGER myIt CHARACTER*(10) suff INTEGER myThid CEndofinterface #ifdef ALLOW_OBCS C == Local variables == CHARACTER*(MAX_LEN_FNAM) fn C READ N and S OB arrays #ifdef ALLOW_OBCS_NORTH WRITE(fn,'(A,A10)') 'pickup_obN.',suff CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBNu,1,myThid) CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBNv,2,myThid) CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBNt,3,myThid) CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBNs,4,myThid) # ifdef ALLOW_NONHYDROSTATIC CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBNw,5,myThid) # endif #endif #ifdef ALLOW_OBCS_SOUTH WRITE(fn,'(A,A10)') 'pickup_obS.',suff CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBSu,1,myThid) CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBSv,2,myThid) CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBSt,3,myThid) CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBSs,4,myThid) # ifdef ALLOW_NONHYDROSTATIC CALL MDSREADFIELDXZ(fn,prec,'RS',Nr,OBSw,5,myThid) # endif #endif C READ E and W OB arrays #ifdef ALLOW_OBCS_EAST WRITE(fn,'(A,A10)') 'pickup_obE.',suff CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBEu,1,myThid) CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBEv,2,myThid) CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBEt,3,myThid) CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBEs,4,myThid) # ifdef ALLOW_NONHYDROSTATIC CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBEw,5,myThid) # endif #endif #ifdef ALLOW_OBCS_WEST WRITE(fn,'(A,A10)') 'pickup_obW.',suff CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBWu,1,myThid) CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBWv,2,myThid) CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBWt,3,myThid) CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBWs,4,myThid) # ifdef ALLOW_NONHYDROSTATIC CALL MDSREADFIELDYZ(fn,prec,'RS',Nr,OBWw,5,myThid) # endif #endif C Fill in edge regions c _EXCH_XZ_R4(OBNu , myThid) c _EXCH_XZ_R4(OBNv , myThid) c _EXCH_XZ_R4(OBNt , myThid) c _EXCH_XZ_R4(OBNs , myThid) c _EXCH_XZ_R4(OBSu , myThid) c _EXCH_XZ_R4(OBSv , myThid) c _EXCH_XZ_R4(OBSt , myThid) c _EXCH_XZ_R4(OBSs , myThid) c#ifdef ALLOW_NONHYDROSTATIC c _EXCH_XZ_R4(OBNw , myThid) c _EXCH_XZ_R4(OBSw , myThid) c#endif C Fill in edge regions c _EXCH_YZ_R4(OBEu , myThid) c _EXCH_YZ_R4(OBEv , myThid) c _EXCH_YZ_R4(OBEt , myThid) c _EXCH_YZ_R4(OBEs , myThid) c _EXCH_YZ_R4(OBWu , myThid) c _EXCH_YZ_R4(OBWv , myThid) c _EXCH_YZ_R4(OBWt , myThid) c _EXCH_YZ_R4(OBWs , myThid) c#ifdef ALLOW_NONHYDROSTATIC c _EXCH_YZ_R4(OBEw , myThid) c _EXCH_YZ_R4(OBWw , myThid) c#endif #ifdef ALLOW_ORLANSKI IF (useOrlanskiNorth.OR.useOrlanskiSouth.OR. & useOrlanskiEast.OR.useOrlanskiWest) THEN CALL ORLANSKI_READ_CHECKPOINT( & prec, myIt, suff, myThid ) ENDIF #endif /* ALLOW_ORLANSKI */ #endif /* ALLOW_OBCS */ RETURN END
CStartofinterface SUBROUTINE OBCS_WRITE_CHECKPOINT( prec, lgf, permCheckPoint, & myIt, myThid ) C /==========================================================\ C | SUBROUTINE OBCS_WRITE_CHECKPOINT | C | o Write open boundary checkpoint arrays | C |==========================================================| C | | C \==========================================================/ IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "OBCS.h" C == Routine arguments == INTEGER prec LOGICAL lgf LOGICAL permCheckPoint INTEGER myIt INTEGER myThid CEndofinterface #ifdef ALLOW_OBCS C == Local variables == CHARACTER*(MAX_LEN_FNAM) fn C Write N and S OB arrays #ifdef ALLOW_OBCS_NORTH IF ( permCheckPoint ) THEN WRITE(fn,'(A,I10.10)') 'pickup_obN.',myIt ELSE WRITE(fn,'(A,A)') 'pickup_obN.',checkPtSuff(nCheckLev) ENDIF CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBNu,1,myIt,myThid) CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBNv,2,myIt,myThid) CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBNt,3,myIt,myThid) CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBNs,4,myIt,myThid) # ifdef ALLOW_NONHYDROSTATIC CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBNw,5,myIt,myThid) # endif #endif #ifdef ALLOW_OBCS_SOUTH IF ( permCheckPoint ) THEN WRITE(fn,'(A,I10.10)') 'pickup_obS.',myIt ELSE WRITE(fn,'(A,A)') 'pickup_obS.',checkPtSuff(nCheckLev) ENDIF CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBSu,1,myIt,myThid) CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBSv,2,myIt,myThid) CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBSt,3,myIt,myThid) CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBSs,4,myIt,myThid) # ifdef ALLOW_NONHYDROSTATIC CALL MDSWRITEFIELDXZ(fn,prec,lgf,'RS',Nr,OBSw,5,myIt,myThid) # endif #endif C Write E and W OB arrays #ifdef ALLOW_OBCS_EAST IF ( permCheckPoint ) THEN WRITE(fn,'(A,I10.10)') 'pickup_obE.',myIt ELSE WRITE(fn,'(A,A)') 'pickup_obE.',checkPtSuff(nCheckLev) ENDIF CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBEu,1,myIt,myThid) CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBEv,2,myIt,myThid) CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBEt,3,myIt,myThid) CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBEs,4,myIt,myThid) # ifdef ALLOW_NONHYDROSTATIC CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBEw,5,myIt,myThid) # endif #endif #ifdef ALLOW_OBCS_WEST IF ( permCheckPoint ) THEN WRITE(fn,'(A,I10.10)') 'pickup_obW.',myIt ELSE WRITE(fn,'(A,A)') 'pickup_obW.',checkPtSuff(nCheckLev) ENDIF CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBWu,1,myIt,myThid) CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBWv,2,myIt,myThid) CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBWt,3,myIt,myThid) CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBWs,4,myIt,myThid) # ifdef ALLOW_NONHYDROSTATIC CALL MDSWRITEFIELDYZ(fn,prec,lgf,'RS',Nr,OBWw,5,myIt,myThid) # endif #endif #ifdef ALLOW_ORLANSKI IF (useOrlanskiNorth.OR.useOrlanskiSouth.OR. & useOrlanskiEast.OR.useOrlanskiWest) THEN CALL ORLANSKI_WRITE_CHECKPOINT( & prec, lgf, permCheckPoint, myIt, myThid ) ENDIF #endif /* ALLOW_ORLANSKI */ #endif /* ALLOW_OBCS */ RETURN END