Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:43:13 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
6060ec2938 Dimi*0001 #include "SBO_OPTIONS.h"
                0002 
85d26bffb0 Jean*0003 CBOP
                0004 C !ROUTINE: SBO_OUTPUT
                0005 
                0006 C !INTERFACE:
cb28cf0821 Jean*0007       SUBROUTINE SBO_OUTPUT( myTime, myIter, myThid )
85d26bffb0 Jean*0008 
                0009 C !DESCRIPTION: \bv
cb28cf0821 Jean*0010 C     *==========================================================*
                0011 C     | SUBROUTINE SBO_OUTPUT
                0012 C     | o Do SBO diagnostic output.
                0013 C     *==========================================================*
6060ec2938 Dimi*0014 
85d26bffb0 Jean*0015 C !USES:
                0016       IMPLICIT NONE
6060ec2938 Dimi*0017 C     === Global variables ===
                0018 #include "SIZE.h"
                0019 #include "EEPARAMS.h"
                0020 #include "PARAMS.h"
                0021 #include "SBO.h"
                0022 
85d26bffb0 Jean*0023 C !INPUT PARAMETERS:
                0024 C     myTime    :: my time in simulation ( s )
                0025 C     myIter    :: my Iteration number
                0026 C     myThid    :: my Thread Id number
cb28cf0821 Jean*0027       _RL     myTime
6060ec2938 Dimi*0028       INTEGER myIter
                0029       INTEGER myThid
                0030 
                0031 #ifdef ALLOW_SBO
85d26bffb0 Jean*0032 C !FUNCTIONS:
                0033       LOGICAL  DIFFERENT_MULTIPLE
                0034       EXTERNAL DIFFERENT_MULTIPLE
6060ec2938 Dimi*0035 
85d26bffb0 Jean*0036 C !LOCAL VARIABLES:
                0037 C     sbo_diag  :: vector of SBO diagnostics contains:
                0038 C                  model time (s), xoamc, yoamc, zoamc,
                0039 C                  xoamp, yoamp, zoamp, mass, xcom, ycom, zcom
                0040 C     fName     :: output file name
                0041 C     msgBuf    :: Informational/error message buffer
af20bc5e19 Jean*0042       CHARACTER*(10) suff
14d0ff9487 Jean*0043       CHARACTER*(MAX_LEN_FNAM) fName
85d26bffb0 Jean*0044       CHARACTER*(MAX_LEN_MBUF) msgBuf
14d0ff9487 Jean*0045       INTEGER narr
85d26bffb0 Jean*0046       PARAMETER( narr = 24 )
14d0ff9487 Jean*0047       INTEGER irecord
                0048       INTEGER ioUnit
                0049       _RL     sbo_diag(narr)
                0050       _RS     dummyRS(1)
6060ec2938 Dimi*0051 
                0052 C-----------------------------------------------------------------
                0053 C     Save angular momentum and mass variables at every time step
                0054 C-----------------------------------------------------------------
                0055 
cb28cf0821 Jean*0056       sbo_diag(1)  = myTime
6060ec2938 Dimi*0057       sbo_diag(2)  = xoamc
                0058       sbo_diag(3)  = yoamc
                0059       sbo_diag(4)  = zoamc
                0060       sbo_diag(5)  = xoamp
                0061       sbo_diag(6)  = yoamp
                0062       sbo_diag(7)  = zoamp
                0063       sbo_diag(8)  = mass
                0064       sbo_diag(9)  = xcom
                0065       sbo_diag(10) = ycom
                0066       sbo_diag(11) = zcom
fac3e5bea0 Patr*0067       sbo_diag(12) = sboarea
6060ec2938 Dimi*0068 
85d26bffb0 Jean*0069       sbo_diag(13) = xoamc_si
                0070       sbo_diag(14) = yoamc_si
                0071       sbo_diag(15) = zoamc_si
                0072       sbo_diag(16) = mass_si
                0073 
                0074       sbo_diag(17) = xoamp_fw
                0075       sbo_diag(18) = yoamp_fw
                0076       sbo_diag(19) = zoamp_fw
                0077       sbo_diag(20) = mass_fw
                0078       sbo_diag(21) = xcom_fw
                0079       sbo_diag(22) = ycom_fw
                0080       sbo_diag(23) = zcom_fw
14d0ff9487 Jean*0081 
85d26bffb0 Jean*0082       sbo_diag(24) = mass_gc
                0083 
                0084       irecord      = myIter - nIter0 + 1
14d0ff9487 Jean*0085 
                0086 #ifdef ALLOW_MDSIO
55a4640a63 Jean*0087       _BEGIN_MASTER(myThid)
                0088 C-    multi-threaded: only write it once (by master thread)
af20bc5e19 Jean*0089        IF ( rwSuffixType.EQ.0 ) THEN
                0090          WRITE(fName,'(A,I10.10)') 'SBO_global.', nIter0
                0091        ELSE
                0092          CALL RW_GET_SUFFIX( suff, startTime, nIter0, myThid )
                0093          WRITE(fName,'(A,A)') 'SBO_global.', suff
                0094        ENDIF
14d0ff9487 Jean*0095        ioUnit  = 0
                0096        CALL MDS_WRITEVEC_LOC(
                0097      I           fName, precFloat64, ioUnit,
                0098      I           'RL', narr, sbo_diag, dummyRS,
                0099      I           0, 0, irecord, myIter, myThid )
55a4640a63 Jean*0100       _END_MASTER(myThid)
14d0ff9487 Jean*0101 #endif /* ALLOW_MDSIO */
6060ec2938 Dimi*0102 
                0103 #ifdef ALLOW_TIMEAVE
                0104 C-----------------------------------------------------------------
85d26bffb0 Jean*0105 C     NOT doing this anymore:
6060ec2938 Dimi*0106 C     Save time-averaged bottom pressure at sbo_taveFreq intervals
                0107 C-----------------------------------------------------------------
85d26bffb0 Jean*0108 #endif /* ALLOW_TIMEAVE */
                0109 
                0110       IF ( myIter .EQ. nIter0 .OR.
                0111      &     DIFFERENT_MULTIPLE(sbo_monFreq,myTime,deltaTClock)
                0112      &   ) THEN
                0113 
55a4640a63 Jean*0114         _BEGIN_MASTER(myThid)
                0115 
85d26bffb0 Jean*0116         ioUnit = standardMessageUnit
                0117         WRITE(msgBuf,'(A,1PE21.13)')
                0118      &    '%SBO sbo_mass                     = ', mass
                0119         CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0120         WRITE(msgBuf,'(A,1PE21.13)')
                0121      &    '%SBO sbo_mass_fw                  = ', mass_fw
                0122         CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0123         WRITE(msgBuf,'(A,1PE21.13)')
                0124      &    '%SBO sbo_zoamc                    = ', zoamc
                0125         CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
                0126         WRITE(msgBuf,'(A,1PE21.13)')
                0127      &    '%SBO sbo_zoamp                    = ', zoamp
                0128         CALL PRINT_MESSAGE( msgBuf, ioUnit, SQUEEZE_RIGHT, myThid )
6060ec2938 Dimi*0129 
55a4640a63 Jean*0130         _END_MASTER(myThid)
                0131 
14d0ff9487 Jean*0132       ENDIF
6060ec2938 Dimi*0133 
f6bfe3bad8 Alis*0134 #endif /* ALLOW_SBO */
6060ec2938 Dimi*0135 
                0136       RETURN
                0137       END