C $Header: /u/gcmpack/MITgcm/model/src/plot_field.F,v 1.14 2002/02/07 20:00:09 heimbach Exp $
C $Name: $
#include "CPP_OPTIONS.h"
C-- File plot_field.F: Routines for "formatted" I/O in the MITgcm UV
C-- implementation.
C-- Contents
C-- o plot_field_xyrs - Writes a XY _RS field
C-- o plot_field_xyrl - Writes a XY _RL field
C-- o plot_field_xyzrs - Writes a XYZ _RS field
C-- o plot_field_xyzrl - Writes a XYZ _RL field
SUBROUTINE PLOT_FIELD_XYRS(
I fld, fldNam , myIter, myThid )
C /==========================================================\
C | SUBROUTINE PLOT_FIELD_XYRS |
C | Print out an XY _RS field using text map. |
C |==========================================================|
C | This routine references "numerical model" parameters like|
C | like the integration time. It uses these to create a |
C | title for the field before calling a generic execution |
C | environment support routine. |
C | This routine can also be edited to cause only some region|
C | of a field to be printed by default, or every other |
C | point etc.. |
C | Other plot formats can also be substituted here. |
C | _RS is usually REAL*4 |
C \==========================================================/
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
C == Routine arguments ==
C fld - Field to plot
C fldNam - Name of field
C myIter - Iteration number for plot
C myThid - Thread id of thread instance calling plot_field
_RS fld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
CHARACTER*(*) fldNam
INTEGER myThid
INTEGER myIter
C == Local variables ==
CHARACTER*(MAX_LEN_MBUF) fldTitle
INTEGER iStart, iEnd, iStride
INTEGER jStart, jEnd, jStride
INTEGER kStart, kEnd, kStride
INTEGER biStart, biEnd, biStride
INTEGER bjStart, bjEnd, bjStride
C-- To get around synchronisation and multi-threaded I/O issues
C-- thread 1 will do all the writes.
_BARRIER
IF ( myThid .EQ. 1 ) THEN
C-- Form name for identifying "plot"
IF ( myIter .GE. 0 ) THEN
WRITE(fldTitle,'(A,A,A,I10)')
& '// Field ', fldNam, ' at iteration ',
& myIter
ELSE
WRITE(fldTitle,'(A,A)') '// Field ', fldNam
ENDIF
C-- Do "plot" using textual contour map "execution environment" routine
C Substitute other plotting utilities here!
iStart = 1-OLx
iEnd = sNx+OLx
iStride = 1
jStart = sNy+OLy
jEnd = 1-OLy
jStride = -1
kStart = 1
kEnd = 1
kStride = 1
biStart = 1
biEnd = nSx
biStride = 1
bjStart = nSy
bjEnd = 1
bjStride = -1
CALL PRINT_MAPRS(
I fld, fldTitle, PRINT_MAP_XY,
I 1-OLx,sNx+OLx,1-OLy,sNy+OLy,1,1, nSx, nSy,
I iStart, iEnd, iStride,
I jStart, jEnd, jStride,
I kStart, kEnd, kStride,
I biStart, biEnd, biStride,
I bjStart, bjEnd, bjStride )
ENDIF
_BARRIER
RETURN
END
SUBROUTINE PLOT_FIELD_XYRL(
I fld, fldNam , myIter, myThid )
C /==========================================================\
C | SUBROUTINE PLOT_FIELD_XYRL |
C | Print out an XY _RL field using text map. |
C |==========================================================|
C | This routine references "numerical model" parameters like|
C | like the integration time. It uses these to create a |
C | title for the field before calling a generic execution |
C | environment support routine. |
C | This routine can also be edited to cause only some region|
C | of a field to be printed by default, or every other |
C | point etc.. |
C | Other plot formats can also be substituted here. |
C | _RL is usually REAL*8 |
C \==========================================================/
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
C == Routine arguments ==
C fld - Field to plot
C fldNam - Name of field
C myIter - Iteration number for plot
C myThid - Thread id of thread instance calling plot_field
_RL fld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
CHARACTER*(*) fldNam
INTEGER myThid
INTEGER myIter
C == Local variables ==
CHARACTER*(MAX_LEN_MBUF) fldTitle
INTEGER iStart, iEnd, iStride
INTEGER jStart, jEnd, jStride
INTEGER kStart, kEnd, kStride
INTEGER biStart, biEnd, biStride
INTEGER bjStart, bjEnd, bjStride
C-- To get around synchronisation and multi-threaded I/O issues
C-- thread 1 will do all the writes.
_BARRIER
IF ( myThid .EQ. 1 ) THEN
C-- Form name for identifying "plot"
IF ( myIter .GE. 0 ) THEN
WRITE(fldTitle,'(A,A,A,I10)')
& '// Field ', fldNam, ' at iteration ',
& myIter
ELSE
WRITE(fldTitle,'(A,A)') '// Field ', fldNam
ENDIF
C-- Do "plot" using textual contour map "execution environment" routine
C Substitute other plotting utilities here!
iStart = 1-OLx
iEnd = sNx+OLx
iStride = 1
jStart = sNy+OLy
jEnd = 1-OLy
jStride = -1
kStart = 1
kEnd = 1
kStride = 1
biStart = 1
biEnd = nSx
biStride = 1
bjStart = nSy
bjEnd = 1
bjStride = -1
CALL PRINT_MAPRL(
I fld, fldTitle, PRINT_MAP_XY,
I 1-OLx,sNx+OLx,1-OLy,sNy+OLy,1,1, nSx, nSy,
I iStart, iEnd, iStride,
I jStart, jEnd, jStride,
I kStart, kEnd, kStride,
I biStart, biEnd, biStride,
I bjStart, bjEnd, bjStride )
ENDIF
_BARRIER
RETURN
END
SUBROUTINE PLOT_FIELD_XYZRS(
I fld, fldNam , fldNz, myIter, myThid )
C /==========================================================\
C | SUBROUTINE PLOT_FIELD_XYZR4 |
C | Print out an XYZ _RS field using text map. |
C |==========================================================|
C | This routine references "numerical model" parameters like|
C | like the integration time. It uses these to create a |
C | title for the field before calling a generic execution |
C | environment support routine. |
C | This routine can also be edited to cause only some region|
C | of a field to be printed by default, or every other |
C | point etc.. |
C | Other plot formats can also be substituted here. |
C | _RS is usually a REAL*4 field |
C \==========================================================/
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
C == Routine arguments ==
C fld - Field to plot
C fldNam - Name of field
C fldNz - No. of layers in the vertical
C (Different fields may have different vertical extents)
C (Under the present implementation all fields have the)
C (same lateral extents. )
C myIter - Iteration number for plot
C myThid - Thread id of thread instance calling plot_field
INTEGER fldNz
_RS fld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:fldNz,nSx,nSy)
CHARACTER*(*) fldNam
INTEGER myThid
INTEGER myIter
C == Local variables ==
CHARACTER*(MAX_LEN_MBUF) fldTitle
INTEGER iStart, iEnd, iStride
INTEGER jStart, jEnd, jStride
INTEGER kStart, kEnd, kStride
INTEGER biStart, biEnd, biStride
INTEGER bjStart, bjEnd, bjStride
C-- To get around synchronisation and multi-threaded I/O issues
C-- thread 1 will do all the writes.
_BARRIER
IF ( myThid .EQ. 1 ) THEN
C-- Form name for identifying "plot"
IF ( myIter .GE. 0 ) THEN
WRITE(fldTitle,'(A,A,A,I10)')
& '// Field ', fldNam, ' at iteration ',
& myIter
ELSE
WRITE(fldTitle,'(A,A)') '// Field ', fldNam
ENDIF
C-- Do "plot" using textual contour map "execution environment" routine
C Substitute other plotting utilities here!
iStart = 1-OLx
iEnd = sNx+OLx
C iStart = 1
C iEnd = sNx
iStride = 1
jStart = sNy+OLy
jEnd = 1-OLy
C jStart = sNy
C jEnd = 1
jStride = -1
kStart = 1
C kEnd = fldNz
kEnd = 1
kStride = 1
biStart = 1
biEnd = nSx
biStride = 1
bjStart = nSy
bjEnd = 1
bjStride = -1
CALL PRINT_MAPRS(
I fld, fldTitle, PRINT_MAP_XY,
I 1-OLx,sNx+OLx,1-OLy,sNy+OLy,1,fldNz, nSx, nSy,
I iStart, iEnd, iStride,
I jStart, jEnd, jStride,
I kStart, kEnd, kStride,
I biStart, biEnd, biStride,
I bjStart, bjEnd, bjStride )
ENDIF
_BARRIER
RETURN
END
SUBROUTINE PLOT_FIELD_XYZRL(
I fld, fldNam , fldNz, myIter, myThid )
C /==========================================================\
C | SUBROUTINE PLOT_FIELD_XYZRL |
C | Print out an XYZ _RL field using text map. |
C |==========================================================|
C | This routine references "numerical model" parameters like|
C | like the integration time. It uses these to create a |
C | title for the field before calling a generic execution |
C | environment support routine. |
C | This routine can also be edited to cause only some region|
C | of a field to be printed by default, or every other |
C | point etc.. |
C | Other plot formats can also be substituted here. |
C | _RL is usually a REAL*8 field |
C \==========================================================/
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
C == Routine arguments ==
C fld - Field to plot
C fldNam - Name of field
C fldNz - No. of layers in the vertical
C (Different fields may have different vertical extents)
C (Under the present implementation all fields have the)
C (same lateral extents. )
C myIter - Iteration number for plot
C myThid - Thread id of thread instance calling plot_field
INTEGER fldNz
_RL fld(1-OLx:sNx+OLx,1-OLy:sNy+OLy,1:fldNz,nSx,nSy)
CHARACTER*(*) fldNam
INTEGER myThid
INTEGER myIter
C == Local variables ==
CHARACTER*(MAX_LEN_MBUF) fldTitle
INTEGER iStart, iEnd, iStride
INTEGER jStart, jEnd, jStride
INTEGER kStart, kEnd, kStride
INTEGER biStart, biEnd, biStride
INTEGER bjStart, bjEnd, bjStride
C-- To get around synchronisation and multi-threaded I/O issues
C-- thread 1 will do all the writes.
_BARRIER
IF ( myThid .EQ. 1 ) THEN
C-- Form name for identifying "plot"
IF ( myIter .GE. 0 ) THEN
WRITE(fldTitle,'(A,A,A,I10)')
& '// Field ', fldNam, ' at iteration ',
& myIter
ELSE
WRITE(fldTitle,'(A,A)') '// Field ', fldNam
ENDIF
C-- Do "plot" using textual contour map "execution environment" routine
C Substitute other plotting utilities here!
iStart = 1-OLx
iEnd = sNx+OLx
iStart = 1
iEnd = sNx
iStride = 1
jStart = sNy+OLy
jEnd = 1-OLy
jStart = sNy
jEnd = 1
jStride = -1
kStart = 1
kEnd = fldNz
kEnd = 1
kStride = 1
biStart = 1
biEnd = nSx
biStride = 1
bjStart = nSy
bjEnd = 1
bjStride = -1
CALL PRINT_MAPRL(
I fld, fldTitle, PRINT_MAP_XY,
I 1-OLx,sNx+OLx,1-OLy,sNy+OLy,1,fldNz, nSx, nSy,
I iStart, iEnd, iStride,
I jStart, jEnd, jStride,
I kStart, kEnd, kStride,
I biStart, biEnd, biStride,
I bjStart, bjEnd, bjStride )
ENDIF
_BARRIER
RETURN
END
SUBROUTINE PLOT_FIELD_XZRS(
I fld, fldNam , fldNz, myIter, myThid )
C /==========================================================\
C | SUBROUTINE PLOT_FIELD_XYZR4 |
C | Print out an XYZ _RS field using text map. |
C |==========================================================|
C | This routine references "numerical model" parameters like|
C | like the integration time. It uses these to create a |
C | title for the field before calling a generic execution |
C | environment support routine. |
C | This routine can also be edited to cause only some region|
C | of a field to be printed by default, or every other |
C | point etc.. |
C | Other plot formats can also be substituted here. |
C | _RS is usually a REAL*4 field |
C \==========================================================/
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
C == Routine arguments ==
C fld - Field to plot
C fldNam - Name of field
C fldNz - No. of layers in the vertical
C (Different fields may have different vertical extents)
C (Under the present implementation all fields have the)
C (same lateral extents. )
C myIter - Iteration number for plot
C myThid - Thread id of thread instance calling plot_field
INTEGER fldNz
_RS fld(1-OLx:sNx+OLx,1:fldNz,nSx,nSy)
CHARACTER*(*) fldNam
INTEGER myThid
INTEGER myIter
C == Local variables ==
CHARACTER*(MAX_LEN_MBUF) fldTitle
INTEGER iStart, iEnd, iStride
INTEGER jStart, jEnd, jStride
INTEGER kStart, kEnd, kStride
INTEGER biStart, biEnd, biStride
INTEGER bjStart, bjEnd, bjStride
C-- To get around synchronisation and multi-threaded I/O issues
C-- thread 1 will do all the writes.
_BARRIER
IF ( myThid .EQ. 1 ) THEN
C-- Form name for identifying "plot"
IF ( myIter .GE. 0 ) THEN
WRITE(fldTitle,'(A,A,A,I10)')
& '// Field ', fldNam, ' at iteration ',
& myIter
ELSE
WRITE(fldTitle,'(A,A)') '// Field ', fldNam
ENDIF
C-- Do "plot" using textual contour map "execution environment" routine
C Substitute other plotting utilities here!
iStart = 1
iEnd = sNx
iStride = 1
jStart = 1
jEnd = 1
jStride = 1
kStart = 1
kEnd = fldNz
kStride = 1
biStart = 1
biEnd = nSx
biStride = 1
bjStart = nSy
bjEnd = 1
bjStride = -1
CALL PRINT_MAPRS(
I fld, fldTitle, PRINT_MAP_XZ,
I 1-OLx,sNx+OLx,1,fldNz,1,1, nSx, nSy,
I iStart, iEnd, iStride,
I jStart, jEnd, jStride,
I kStart, kEnd, kStride,
I biStart, biEnd, biStride,
I bjStart, bjEnd, bjStride )
ENDIF
_BARRIER
RETURN
END
SUBROUTINE PLOT_FIELD_XZRL(
I fld, fldNam , fldNz, myIter, myThid )
C /==========================================================\
C | SUBROUTINE PLOT_FIELD_XYZRL |
C | Print out an XYZ _RL field using text map. |
C |==========================================================|
C | This routine references "numerical model" parameters like|
C | like the integration time. It uses these to create a |
C | title for the field before calling a generic execution |
C | environment support routine. |
C | This routine can also be edited to cause only some region|
C | of a field to be printed by default, or every other |
C | point etc.. |
C | Other plot formats can also be substituted here. |
C | _RL is usually a REAL*8 field |
C \==========================================================/
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
C == Routine arguments ==
C fld - Field to plot
C fldNam - Name of field
C fldNz - No. of layers in the vertical
C (Different fields may have different vertical extents)
C (Under the present implementation all fields have the)
C (same lateral extents. )
C myIter - Iteration number for plot
C myThid - Thread id of thread instance calling plot_field
INTEGER fldNz
_RL fld(1-OLx:sNx+OLx,1:fldNz,nSx,nSy)
CHARACTER*(*) fldNam
INTEGER myThid
INTEGER myIter
C == Local variables ==
CHARACTER*(MAX_LEN_MBUF) fldTitle
INTEGER iStart, iEnd, iStride
INTEGER jStart, jEnd, jStride
INTEGER kStart, kEnd, kStride
INTEGER biStart, biEnd, biStride
INTEGER bjStart, bjEnd, bjStride
C-- To get around synchronisation and multi-threaded I/O issues
C-- thread 1 will do all the writes.
_BARRIER
IF ( myThid .EQ. 1 ) THEN
C-- Form name for identifying "plot"
IF ( myIter .GE. 0 ) THEN
WRITE(fldTitle,'(A,A,A,I10)')
& '// Field ', fldNam, ' at iteration ',
& myIter
ELSE
WRITE(fldTitle,'(A,A)') '// Field ', fldNam
ENDIF
C-- Do "plot" using textual contour map "execution environment" routine
C Substitute other plotting utilities here!
iStart = 1
iEnd = sNx
iStride = 1
jStart = 1
jEnd = 1
jStride = -1
kStart = 1
kEnd = fldNz
c kEnd = 1
kStride = 1
biStart = 1
biEnd = nSx
biStride = 1
bjStart = nSy
bjEnd = 1
bjStride = -1
CALL PRINT_MAPRL(
I fld, fldTitle, PRINT_MAP_XZ,
I 1-OLx,sNx+OLx,1,1,1,fldNz, nSx, nSy,
I iStart, iEnd, iStride,
I jStart, jEnd, jStride,
I kStart, kEnd, kStride,
I biStart, biEnd, biStride,
I bjStart, bjEnd, bjStride )
ENDIF
_BARRIER
RETURN
END
SUBROUTINE PLOT_FIELD_YZRS(
I fld, fldNam , fldNz, myIter, myThid )
C /==========================================================\
C | SUBROUTINE PLOT_FIELD_XYZR4 |
C | Print out an XYZ _RS field using text map. |
C |==========================================================|
C | This routine references "numerical model" parameters like|
C | like the integration time. It uses these to create a |
C | title for the field before calling a generic execution |
C | environment support routine. |
C | This routine can also be edited to cause only some region|
C | of a field to be printed by default, or every other |
C | point etc.. |
C | Other plot formats can also be substituted here. |
C | _RS is usually a REAL*4 field |
C \==========================================================/
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
C == Routine arguments ==
C fld - Field to plot
C fldNam - Name of field
C fldNz - No. of layers in the vertical
C (Different fields may have different vertical extents)
C (Under the present implementation all fields have the)
C (same lateral extents. )
C myIter - Iteration number for plot
C myThid - Thread id of thread instance calling plot_field
INTEGER fldNz
_RS fld(1-OLy:sNy+OLy,1:fldNz,nSx,nSy)
CHARACTER*(*) fldNam
INTEGER myThid
INTEGER myIter
C == Local variables ==
CHARACTER*(MAX_LEN_MBUF) fldTitle
INTEGER iStart, iEnd, iStride
INTEGER jStart, jEnd, jStride
INTEGER kStart, kEnd, kStride
INTEGER biStart, biEnd, biStride
INTEGER bjStart, bjEnd, bjStride
C-- To get around synchronisation and multi-threaded I/O issues
C-- thread 1 will do all the writes.
_BARRIER
IF ( myThid .EQ. 1 ) THEN
C-- Form name for identifying "plot"
IF ( myIter .GE. 0 ) THEN
WRITE(fldTitle,'(A,A,A,I10)')
& '// Field ', fldNam, ' at iteration ',
& myIter
ELSE
WRITE(fldTitle,'(A,A)') '// Field ', fldNam
ENDIF
C-- Do "plot" using textual contour map "execution environment" routine
C Substitute other plotting utilities here!
iStart = 1
iEnd = 1
iStride = 1
jStart = sNy
jEnd = 1
jStride = -1
kStart = 1
kEnd = fldNz
C kEnd = 1
kStride = 1
biStart = 1
biEnd = nSx
biStride = 1
bjStart = nSy
bjEnd = 1
bjStride = -1
CALL PRINT_MAPRS(
I fld, fldTitle, PRINT_MAP_YZ,
I 1,1,1-OLy,sNy+OLy,1,fldNz, nSx, nSy,
I iStart, iEnd, iStride,
I jStart, jEnd, jStride,
I kStart, kEnd, kStride,
I biStart, biEnd, biStride,
I bjStart, bjEnd, bjStride )
ENDIF
_BARRIER
RETURN
END
SUBROUTINE PLOT_FIELD_YZRL(
I fld, fldNam , fldNz, myIter, myThid )
C /==========================================================\
C | SUBROUTINE PLOT_FIELD_XYZRL |
C | Print out an XYZ _RL field using text map. |
C |==========================================================|
C | This routine references "numerical model" parameters like|
C | like the integration time. It uses these to create a |
C | title for the field before calling a generic execution |
C | environment support routine. |
C | This routine can also be edited to cause only some region|
C | of a field to be printed by default, or every other |
C | point etc.. |
C | Other plot formats can also be substituted here. |
C | _RL is usually a REAL*8 field |
C \==========================================================/
IMPLICIT NONE
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
C == Routine arguments ==
C fld - Field to plot
C fldNam - Name of field
C fldNz - No. of layers in the vertical
C (Different fields may have different vertical extents)
C (Under the present implementation all fields have the)
C (same lateral extents. )
C myIter - Iteration number for plot
C myThid - Thread id of thread instance calling plot_field
INTEGER fldNz
_RL fld(1-OLy:sNy+OLy,1:fldNz,nSx,nSy)
CHARACTER*(*) fldNam
INTEGER myThid
INTEGER myIter
C == Local variables ==
CHARACTER*(MAX_LEN_MBUF) fldTitle
INTEGER iStart, iEnd, iStride
INTEGER jStart, jEnd, jStride
INTEGER kStart, kEnd, kStride
INTEGER biStart, biEnd, biStride
INTEGER bjStart, bjEnd, bjStride
C-- To get around synchronisation and multi-threaded I/O issues
C-- thread 1 will do all the writes.
_BARRIER
IF ( myThid .EQ. 1 ) THEN
C-- Form name for identifying "plot"
IF ( myIter .GE. 0 ) THEN
WRITE(fldTitle,'(A,A,A,I10)')
& '// Field ', fldNam, ' at iteration ',
& myIter
ELSE
WRITE(fldTitle,'(A,A)') '// Field ', fldNam
ENDIF
C-- Do "plot" using textual contour map "execution environment" routine
C Substitute other plotting utilities here!
iStart = 1
iEnd = 1
iStride = 1
jStart = sNy
jEnd = 1
jStride = -1
kStart = 1
kEnd = fldNz
c kEnd = 1
kStride = 1
biStart = 1
biEnd = nSx
biStride = 1
bjStart = nSy
bjEnd = 1
bjStride = -1
CALL PRINT_MAPRL(
I fld, fldTitle, PRINT_MAP_YZ,
I 1,1,1-OLy,sNy+OLy,1,fldNz, nSx, nSy,
I iStart, iEnd, iStride,
I jStart, jEnd, jStride,
I kStart, kEnd, kStride,
I biStart, biEnd, biStride,
I bjStart, bjEnd, bjStride )
ENDIF
_BARRIER
RETURN
END