Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:42:38 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
54745c011d Patr*0001 #include "OBCS_OPTIONS.h"
                0002 
7a9bd3ed90 Jean*0003 CBOP
                0004 C     !ROUTINE: OBCS_OUTPUT
                0005 
                0006 C     !INTERFACE:
85c631e4c7 Jean*0007       SUBROUTINE OBCS_OUTPUT( myTime, myIter, myThid )
7a9bd3ed90 Jean*0008 
                0009 C     !DESCRIPTION: \bv
85c631e4c7 Jean*0010 C     *==========================================================*
                0011 C     | SUBROUTINE OBCS_OUTPUT
7a9bd3ed90 Jean*0012 C     | o General routine for OBCS output
85c631e4c7 Jean*0013 C     *==========================================================*
7a9bd3ed90 Jean*0014 C     \ev
54745c011d Patr*0015 
7a9bd3ed90 Jean*0016 C     !USES:
                0017       IMPLICIT NONE
54745c011d Patr*0018 C     == Global variables ===
                0019 #include "SIZE.h"
                0020 #include "EEPARAMS.h"
                0021 #include "PARAMS.h"
9b4f2a04e2 Jean*0022 #include "OBCS_PARAMS.h"
                0023 #include "OBCS_FIELDS.h"
54745c011d Patr*0024 
7a9bd3ed90 Jean*0025 C     !INPUT PARAMETERS:
85c631e4c7 Jean*0026 C     myTime :: my time in simulation ( s )
                0027 C     myIter :: my Iteration number
                0028 C     myThid :: my Thread Id number
                0029       _RL     myTime
54745c011d Patr*0030       INTEGER myIter
85c631e4c7 Jean*0031       INTEGER myThid
7a9bd3ed90 Jean*0032 CEOP
54745c011d Patr*0033 
                0034 #ifdef ALLOW_OBCS
7a9bd3ed90 Jean*0035 C     !FUNCTIONS:
                0036       LOGICAL  DIFFERENT_MULTIPLE
                0037       EXTERNAL DIFFERENT_MULTIPLE
                0038 c     INTEGER  ILNBLNK
                0039 c     EXTERNAL ILNBLNK
                0040 
                0041 C     !LOCAL VARIABLES:
f79e13595d Jean*0042       CHARACTER*(10) suff
7a9bd3ed90 Jean*0043       CHARACTER*(MAX_LEN_FNAM) fn
                0044       INTEGER prec
                0045 
                0046 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
54745c011d Patr*0047 
f79e13595d Jean*0048       IF ( DIFFERENT_MULTIPLE( dumpFreq, myTime, deltaTClock )
                0049      &     .AND. OBCSprintDiags .AND. myIter.NE.nIter0
                0050      &   ) THEN
54745c011d Patr*0051 
7a9bd3ed90 Jean*0052 C--   Generaly only thread 1 does IO here. It can not start until
                0053 C--   all threads fields are ready.
54745c011d Patr*0054        _BARRIER
                0055 
                0056 #ifdef ALLOW_OBCS_NORTH
f79e13595d Jean*0057         CALL PLOT_FIELD_XZRL( OBNu, 'OBNu' , Nr, myIter, myThid )
                0058         CALL PLOT_FIELD_XZRL( OBNv, 'OBNv' , Nr, myIter, myThid )
                0059         CALL PLOT_FIELD_XZRL( OBNt, 'OBNt' , Nr, myIter, myThid )
                0060         CALL PLOT_FIELD_XZRL( OBNs, 'OBNs' , Nr, myIter, myThid )
54745c011d Patr*0061 #endif
                0062 
                0063 #ifdef ALLOW_OBCS_SOUTH
f79e13595d Jean*0064         CALL PLOT_FIELD_XZRL( OBSu, 'OBSu' , Nr, myIter, myThid )
                0065         CALL PLOT_FIELD_XZRL( OBSv, 'OBSv' , Nr, myIter, myThid )
                0066         CALL PLOT_FIELD_XZRL( OBSt, 'OBSt' , Nr, myIter, myThid )
                0067         CALL PLOT_FIELD_XZRL( OBSs, 'OBSs' , Nr, myIter, myThid )
54745c011d Patr*0068 #endif
                0069 
                0070 #ifdef ALLOW_OBCS_EAST
f79e13595d Jean*0071         CALL PLOT_FIELD_YZRL( OBEu, 'OBEu' , Nr, myIter, myThid )
                0072         CALL PLOT_FIELD_YZRL( OBEv, 'OBEv' , Nr, myIter, myThid )
                0073         CALL PLOT_FIELD_YZRL( OBEt, 'OBEt' , Nr, myIter, myThid )
                0074         CALL PLOT_FIELD_YZRL( OBEs, 'OBEs' , Nr, myIter, myThid )
54745c011d Patr*0075 #endif
                0076 
                0077 #ifdef ALLOW_OBCS_WEST
f79e13595d Jean*0078         CALL PLOT_FIELD_YZRL( OBWu, 'OBWu' , Nr, myIter, myThid )
                0079         CALL PLOT_FIELD_YZRL( OBWv, 'OBWv' , Nr, myIter, myThid )
                0080         CALL PLOT_FIELD_YZRL( OBWt, 'OBWt' , Nr, myIter, myThid )
                0081         CALL PLOT_FIELD_YZRL( OBWs, 'OBWs' , Nr, myIter, myThid )
54745c011d Patr*0082 #endif
                0083 
                0084       ENDIF
                0085 
7a9bd3ed90 Jean*0086 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0087 
                0088 C--   Write OB aray to binary files (mainly for debugging => use "diagFreq")
f79e13595d Jean*0089       IF ( DIFFERENT_MULTIPLE( diagFreq, myTime, deltaTClock )
                0090      &     .AND. myIter.NE.nIter0
7a9bd3ed90 Jean*0091      &   ) THEN
                0092 
                0093        _BARRIER
f79e13595d Jean*0094 c       IF ( rwSuffixType.EQ.0 ) THEN
                0095           WRITE(suff,'(I10.10)') myIter
                0096 c       ELSE
                0097 c         CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
                0098 c       ENDIF
7a9bd3ed90 Jean*0099         prec = writeBinaryPrec
                0100 
                0101 #ifdef ALLOW_OBCS_NORTH
                0102 C     Write Northern OB arrays
f79e13595d Jean*0103         WRITE(fn,'(A,A)') 'obcs_N.', suff
7a9bd3ed90 Jean*0104         CALL WRITE_REC_XZ_RL(fn,prec,Nr,OBNu,1,myIter,myThid)
                0105         CALL WRITE_REC_XZ_RL(fn,prec,Nr,OBNv,2,myIter,myThid)
                0106         CALL WRITE_REC_XZ_RL(fn,prec,Nr,OBNt,3,myIter,myThid)
                0107         CALL WRITE_REC_XZ_RL(fn,prec,Nr,OBNs,4,myIter,myThid)
                0108 # ifdef ALLOW_NONHYDROSTATIC
                0109        IF ( nonHydrostatic ) THEN
                0110         CALL WRITE_REC_XZ_RL(fn,prec,Nr,OBNw,5,myIter,myThid)
                0111        ENDIF
                0112 # endif
                0113 #endif
                0114 
                0115 #ifdef ALLOW_OBCS_SOUTH
                0116 C     Write Southern OB arrays
f79e13595d Jean*0117         WRITE(fn,'(A,A)') 'obcs_S.', suff
7a9bd3ed90 Jean*0118         CALL WRITE_REC_XZ_RL(fn,prec,Nr,OBSu,1,myIter,myThid)
                0119         CALL WRITE_REC_XZ_RL(fn,prec,Nr,OBSv,2,myIter,myThid)
                0120         CALL WRITE_REC_XZ_RL(fn,prec,Nr,OBSt,3,myIter,myThid)
                0121         CALL WRITE_REC_XZ_RL(fn,prec,Nr,OBSs,4,myIter,myThid)
                0122 # ifdef ALLOW_NONHYDROSTATIC
                0123        IF ( nonHydrostatic ) THEN
                0124         CALL WRITE_REC_XZ_RL(fn,prec,Nr,OBSw,5,myIter,myThid)
                0125        ENDIF
                0126 # endif
                0127 #endif
                0128 
                0129 #ifdef ALLOW_OBCS_EAST
                0130 C     Write Eastern OB arrays
f79e13595d Jean*0131         WRITE(fn,'(A,A)') 'obcs_E.', suff
7a9bd3ed90 Jean*0132         CALL WRITE_REC_YZ_RL(fn,prec,Nr,OBEu,1,myIter,myThid)
                0133         CALL WRITE_REC_YZ_RL(fn,prec,Nr,OBEv,2,myIter,myThid)
                0134         CALL WRITE_REC_YZ_RL(fn,prec,Nr,OBEt,3,myIter,myThid)
                0135         CALL WRITE_REC_YZ_RL(fn,prec,Nr,OBEs,4,myIter,myThid)
                0136 # ifdef ALLOW_NONHYDROSTATIC
                0137        IF ( nonHydrostatic ) THEN
                0138         CALL WRITE_REC_YZ_RL(fn,prec,Nr,OBEw,5,myIter,myThid)
                0139        ENDIF
                0140 # endif
54745c011d Patr*0141 #endif
                0142 
7a9bd3ed90 Jean*0143 #ifdef ALLOW_OBCS_WEST
                0144 C     Write Western OB arrays
f79e13595d Jean*0145         WRITE(fn,'(A,A)') 'obcs_W.', suff
7a9bd3ed90 Jean*0146         CALL WRITE_REC_YZ_RL(fn,prec,Nr,OBWu,1,myIter,myThid)
                0147         CALL WRITE_REC_YZ_RL(fn,prec,Nr,OBWv,2,myIter,myThid)
                0148         CALL WRITE_REC_YZ_RL(fn,prec,Nr,OBWt,3,myIter,myThid)
                0149         CALL WRITE_REC_YZ_RL(fn,prec,Nr,OBWs,4,myIter,myThid)
                0150 # ifdef ALLOW_NONHYDROSTATIC
                0151        IF ( nonHydrostatic ) THEN
                0152         CALL WRITE_REC_YZ_RL(fn,prec,Nr,OBWw,5,myIter,myThid)
                0153        ENDIF
                0154 # endif
                0155 #endif
                0156 
                0157        _BARRIER
                0158 
                0159       ENDIF
                0160 
f79e13595d Jean*0161 C--   Compute and print statistics of dynamic fields at OB:
5da861df38 Jean*0162       CALL OBCS_MONITOR( myTime, myIter, myThid )
                0163 
7a9bd3ed90 Jean*0164 #endif /* ALLOW_OBCS */
                0165 
54745c011d Patr*0166       RETURN
                0167       END