Back to home page

MITgcm

 
 

    


File indexing completed on 2018-03-02 18:41:48 UTC

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
5d0c92356b Jean*0001 #include "MATRIX_OPTIONS.h"
8f6dc1243d Jean*0002 
2cd7c28080 Jean*0003 C--   File matrix_store_tendency.F:
                0004 C      Contents
                0005 C      o MATRIX_STORE_TENDENCY_EXP
                0006 C      o MATRIX_STORE_TENDENCY_IMP
                0007 
                0008 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0009 CBOP
                0010 C !ROUTINE: MATRIX_STORE_TENDENCY_EXP
                0011 
                0012 C !INTERFACE: ==========================================================
                0013       SUBROUTINE MATRIX_STORE_TENDENCY_EXP(
                0014      I                  iTracer, bi, bj,
66e282e41e Jean*0015      U                  tracNew,
2cd7c28080 Jean*0016      I                  myTime, myIter, myThid )
                0017 
                0018 C !DESCRIPTION:
8385b3bb5f Ed H*0019 C     This routine accumalates the explicit tendency matrix. Note that
                0020 C     on entry gPtr is the tracer field after explicit advection-
                0021 C     diffusion. On exit, gPtr is set to the initial tracer field for
                0022 C     the next step (implicit matrix calculation).
a9544d2f65 Sama*0023 
2cd7c28080 Jean*0024 C !USES: ===============================================================
a9544d2f65 Sama*0025       IMPLICIT NONE
8f6dc1243d Jean*0026 #include "SIZE.h"
a9544d2f65 Sama*0027 #include "EEPARAMS.h"
                0028 #include "PARAMS.h"
8f6dc1243d Jean*0029 #include "PTRACERS_SIZE.h"
                0030 #include "PTRACERS_PARAMS.h"
                0031 #include "MATRIX.h"
                0032 
2cd7c28080 Jean*0033 C !INPUT/OUTPUT PARAMETERS: ============================================
66e282e41e Jean*0034 C     tracNew :: updated tracer field (after adding explicit contributions)
2cd7c28080 Jean*0035       INTEGER iTracer
a9544d2f65 Sama*0036       INTEGER bi, bj
66e282e41e Jean*0037       _RL     myTime
                0038       _RL     tracNew(1-OLx:sNx+OLx,1-OLy:sNy+OLy,Nr)
a9544d2f65 Sama*0039       INTEGER myIter
                0040       INTEGER myThid
                0041 
                0042 #ifdef ALLOW_MATRIX
2cd7c28080 Jean*0043 C !LOCAL VARIABLES: ====================================================
8f6dc1243d Jean*0044       INTEGER i,j,k
2cd7c28080 Jean*0045 CEOP
a9544d2f65 Sama*0046 
66e282e41e Jean*0047       DO k=1,Nr
                0048        DO j=1-OLy, sNy+OLy
                0049         DO i=1-OLx, sNx+OLx
                0050           MATRIX(i,j,k,bi,bj,iTracer,1) = MATRIX(i,j,k,bi,bj,iTracer,1)
                0051      &     + ( tracNew(i,j,k) - PTRACERS_initial(i,j,k,bi,bj,iTracer) )
                0052           tracNew(i,j,k) = PTRACERS_initial(i,j,k,bi,bj,iTracer)
a9544d2f65 Sama*0053         ENDDO
66e282e41e Jean*0054        ENDDO
                0055       ENDDO
2cd7c28080 Jean*0056 
                0057 C-    Increment counter when processing the last pTracer
                0058       IF ( iTracer.EQ.PTRACERS_numInUse ) THEN
                0059         expMatrixCounter(bi,bj) = expMatrixCounter(bi,bj) + 1
                0060       ENDIF
8f6dc1243d Jean*0061 
a9544d2f65 Sama*0062 #endif /* ALLOW_MATRIX */
8f6dc1243d Jean*0063       RETURN
a9544d2f65 Sama*0064       END
8f6dc1243d Jean*0065 
5d0c92356b Jean*0066 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
2cd7c28080 Jean*0067 CBOP
                0068 C !ROUTINE: MATRIX_STORE_TENDENCY_IMP
                0069 
                0070 C !INTERFACE: ==========================================================
                0071       SUBROUTINE MATRIX_STORE_TENDENCY_IMP(
                0072      I                  bi, bj, myTime, myIter, myThid )
5d0c92356b Jean*0073 
2cd7c28080 Jean*0074 C !DESCRIPTION:
8385b3bb5f Ed H*0075 C     This routine accumalates the implicit update matrix. Note that on
                0076 C     entry PTR is the tracer field after implicit advection-
                0077 C     diffusion. On exit, PTR is set to the initial tracer field.
a9544d2f65 Sama*0078 
2cd7c28080 Jean*0079 C !USES: ===============================================================
a9544d2f65 Sama*0080       IMPLICIT NONE
8f6dc1243d Jean*0081 #include "SIZE.h"
a9544d2f65 Sama*0082 #include "EEPARAMS.h"
                0083 #include "PARAMS.h"
8f6dc1243d Jean*0084 #include "PTRACERS_SIZE.h"
                0085 #include "PTRACERS_PARAMS.h"
                0086 #include "PTRACERS_FIELDS.h"
                0087 #include "MATRIX.h"
                0088 
2cd7c28080 Jean*0089 C !INPUT/OUTPUT PARAMETERS: ============================================
a9544d2f65 Sama*0090       INTEGER bi, bj
                0091       _RL myTime
                0092       INTEGER myIter
                0093       INTEGER myThid
                0094 
                0095 #ifdef ALLOW_MATRIX
2cd7c28080 Jean*0096 C !LOCAL VARIABLES: ====================================================
8f6dc1243d Jean*0097       INTEGER iTracer
2cd7c28080 Jean*0098       INTEGER i,j,k
                0099 CEOP
8f6dc1243d Jean*0100 
a9544d2f65 Sama*0101       DO iTracer=1,PTRACERS_numInUse
                0102         DO k=1,Nr
2cd7c28080 Jean*0103          DO j=1-OLy, sNy+OLy
                0104           DO i=1-OLx, sNx+OLx
5d0c92356b Jean*0105             MATRIX(i,j,k,bi,bj,iTracer,2) =
8f6dc1243d Jean*0106      &             MATRIX(i,j,k,bi,bj,iTracer,2)
5d0c92356b Jean*0107      &             + pTracer(i,j,k,bi,bj,iTracer)
                0108             pTracer(i,j,k,bi,bj,iTracer)=
8f6dc1243d Jean*0109      &             PTRACERS_initial(i,j,k,bi,bj,iTracer)
a9544d2f65 Sama*0110           ENDDO
5d0c92356b Jean*0111          ENDDO
a9544d2f65 Sama*0112         ENDDO
                0113       ENDDO
5d0c92356b Jean*0114       impMatrixCounter(bi,bj) = impMatrixCounter(bi,bj) + 1
8f6dc1243d Jean*0115 
a9544d2f65 Sama*0116 #endif /* ALLOW_MATRIX */
8f6dc1243d Jean*0117       RETURN
a9544d2f65 Sama*0118       END