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