Back to home page

MITgcm

 
 

    


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

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
6d54cf9ca1 Ed H*0001 #include "BULK_FORCE_OPTIONS.h"
7753507405 Curt*0002 
29a25474f6 Jean*0003 CBOP
                0004 C     !ROUTINE: BULKF_OUTPUT
                0005 C     !INTERFACE:
                0006       SUBROUTINE BULKF_OUTPUT( myTime, myIter, myThid )
                0007 
                0008 C     !DESCRIPTION: \bv
                0009 C     *==========================================================*
                0010 C     | SUBROUTINE BULKF_OUTPUT
                0011 C     | o Do BULKF time-average output
                0012 C     *==========================================================*
                0013 C     \ev
                0014 
                0015 C     !USES:
7753507405 Curt*0016       IMPLICIT NONE
                0017 
                0018 C     === Global variables ===
                0019 #include "SIZE.h"
                0020 #include "EEPARAMS.h"
                0021 #include "PARAMS.h"
                0022 #include "BULKF.h"
6a1d3c464b Jean*0023 #include "BULKF_PARAMS.h"
29a25474f6 Jean*0024 #include "BULKF_TAVE.h"
6a1d3c464b Jean*0025 
29a25474f6 Jean*0026 C     !INPUT/OUTPUT PARAMETERS:
7753507405 Curt*0027 C     == Routine arguments ==
29a25474f6 Jean*0028 C     myTime :: Current time of simulation ( s )
                0029 C     myIter :: Iteration number
                0030 C     myThid ::  Number of this instance
7753507405 Curt*0031       _RL     myTime
                0032       INTEGER myIter
                0033       INTEGER myThid
29a25474f6 Jean*0034 CEOP
7753507405 Curt*0035 
6a1d3c464b Jean*0036 #ifdef ALLOW_BULK_FORCE
                0037 #ifdef ALLOW_TIMEAVE
7753507405 Curt*0038 
6a1d3c464b Jean*0039 C     == Function
94a46dfe0d Jean*0040       LOGICAL  DIFFERENT_MULTIPLE
                0041       EXTERNAL DIFFERENT_MULTIPLE
6bf801d687 Jean*0042 
6a1d3c464b Jean*0043 C     == Local variables ==
7753507405 Curt*0044       INTEGER bi, bj
df5a9764ba Jean*0045       CHARACTER*(10) suff
7753507405 Curt*0046 
                0047 C     Dump files and restart average computation if needed
94a46dfe0d Jean*0048       IF ( DIFFERENT_MULTIPLE(blk_taveFreq,myTime,deltaTClock)
7753507405 Curt*0049      &     ) THEN
                0050 
                0051 C      Normalize by integrated time
                0052        DO bj = myByLo(myThid), myByHi(myThid)
                0053         DO bi = myBxLo(myThid), myBxHi(myThid)
6bf801d687 Jean*0054          CALL TIMEAVE_NORMALIZE( BULK_Qnet_Ave,
                0055      &                           BULK_timeAve, 1 , bi, bj, myThid )
                0056          CALL TIMEAVE_NORMALIZE( BULK_EmPmR_Ave,
                0057      &                           BULK_timeAve, 1 , bi, bj, myThid )
                0058          CALL TIMEAVE_NORMALIZE( BULK_fu_Ave,
                0059      &                           BULK_timeAve, 1 , bi, bj, myThid )
                0060          CALL TIMEAVE_NORMALIZE( BULK_fv_Ave,
                0061      &                           BULK_timeAve, 1 , bi, bj, myThid )
                0062          CALL TIMEAVE_NORMALIZE( BULK_latent_Ave,
                0063      &                           BULK_timeAve, 1 , bi, bj, myThid )
                0064          CALL TIMEAVE_NORMALIZE( BULK_sensible_Ave,
                0065      &                           BULK_timeAve, 1 , bi, bj, myThid )
                0066          CALL TIMEAVE_NORMALIZE( BULK_evap_Ave,
                0067      &                           BULK_timeAve, 1 , bi, bj, myThid )
                0068          CALL TIMEAVE_NORMALIZE( BULK_flwup_Ave,
                0069      &                           BULK_timeAve, 1 , bi, bj, myThid )
                0070          CALL TIMEAVE_NORMALIZE( BULK_flwupnet_Ave,
                0071      &                           BULK_timeAve, 1 , bi, bj, myThid )
                0072          CALL TIMEAVE_NORMALIZE( BULK_solar_Ave,
                0073      &                           BULK_timeAve, 1 , bi, bj, myThid )
                0074          CALL TIMEAVE_NORMALIZE( BULK_ssq_Ave,
                0075      &                           BULK_timeAve, 1 , bi, bj, myThid )
7753507405 Curt*0076 
                0077         ENDDO
                0078        ENDDO
29a25474f6 Jean*0079 
df5a9764ba Jean*0080        IF ( rwSuffixType.EQ.0 ) THEN
                0081          WRITE(suff,'(I10.10)') myIter
                0082        ELSE
                0083          CALL RW_GET_SUFFIX( suff, myTime, myIter, myThid )
                0084        ENDIF
6bf801d687 Jean*0085        CALL WRITE_FLD_XY_RL( 'BULK_Qnet.', suff,
                0086      &                        BULK_Qnet_Ave,     myIter, myThid )
                0087        CALL WRITE_FLD_XY_RL( 'BULK_EmPmR.', suff,
                0088      &                        BULK_EmPmR_Ave,    myIter, myThid )
                0089        CALL WRITE_FLD_XY_RL( 'BULK_fu.', suff,
                0090      &                        BULK_fu_Ave,       myIter, myThid )
                0091        CALL WRITE_FLD_XY_RL( 'BULK_fv.', suff,
                0092      &                        BULK_fv_Ave,       myIter, myThid )
                0093        CALL WRITE_FLD_XY_RL( 'BULK_latent.', suff,
                0094      &                        BULK_latent_Ave,   myIter, myThid )
                0095        CALL WRITE_FLD_XY_RL( 'BULK_sensible.', suff,
                0096      &                        BULK_sensible_Ave, myIter, myThid )
                0097        CALL WRITE_FLD_XY_RL( 'BULK_evap.', suff,
                0098      &                        BULK_evap_Ave,     myIter, myThid )
                0099        CALL WRITE_FLD_XY_RL( 'BULK_flwup.', suff,
                0100      &                        BULK_flwup_Ave,    myIter, myThid )
                0101        CALL WRITE_FLD_XY_RL( 'BULK_flwupnet.', suff,
                0102      &                        BULK_flwupnet_Ave, myIter, myThid )
                0103        CALL WRITE_FLD_XY_RL( 'BULK_solar.', suff,
                0104      &                        BULK_solar_Ave,    myIter, myThid )
                0105        CALL WRITE_FLD_XY_RL( 'BULK_ssq.', suff,
                0106      &                        BULK_ssq_Ave,      myIter, myThid )
7753507405 Curt*0107 
                0108 C      Reset averages to zero
                0109        DO bj = myByLo(myThid), myByHi(myThid)
                0110         DO bi = myBxLo(myThid), myBxHi(myThid)
6bf801d687 Jean*0111          CALL TIMEAVE_RESET( BULK_Qnet_Ave,     1, bi, bj, myThid )
                0112          CALL TIMEAVE_RESET( BULK_EmPmR_Ave,    1, bi, bj, myThid )
                0113          CALL TIMEAVE_RESET( BULK_fu_Ave,       1, bi, bj, myThid )
                0114          CALL TIMEAVE_RESET( BULK_fv_Ave,       1, bi, bj, myThid )
                0115          CALL TIMEAVE_RESET( BULK_latent_Ave,   1, bi, bj, myThid )
                0116          CALL TIMEAVE_RESET( BULK_sensible_Ave, 1, bi, bj, myThid )
                0117          CALL TIMEAVE_RESET( BULK_evap_Ave,     1, bi, bj, myThid )
                0118          CALL TIMEAVE_RESET( BULK_flwup_Ave,    1, bi, bj, myThid )
                0119          CALL TIMEAVE_RESET( BULK_flwupnet_Ave, 1, bi, bj, myThid )
                0120          CALL TIMEAVE_RESET( BULK_solar_Ave,    1, bi, bj, myThid )
                0121          CALL TIMEAVE_RESET( BULK_ssq_Ave,      1, bi, bj, myThid )
                0122          BULK_timeAve(bi,bj) = 0.
7753507405 Curt*0123         ENDDO
                0124        ENDDO
                0125 
                0126       ENDIF
                0127 
                0128 #endif /* ALLOW_TIMEAVE */
                0129 #endif /* ALLOW_BULKF */
29a25474f6 Jean*0130 
7753507405 Curt*0131       RETURN
                0132       END