Back to home page

MITgcm

 
 

    


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

view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
785a077159 Alis*0001 #include "PTRACERS_OPTIONS.h"
d217ad1db8 Oliv*0002 #include "GAD_OPTIONS.h"
785a077159 Alis*0003 
d2825c6d08 Ed H*0004 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
785a077159 Alis*0005 CBOP
04b12a5db5 Jean*0006 C     !ROUTINE: PTRACERS_INIT_VARIA
785a077159 Alis*0007 
d2825c6d08 Ed H*0008 C     !INTERFACE:
04b12a5db5 Jean*0009       SUBROUTINE PTRACERS_INIT_VARIA( myThid )
785a077159 Alis*0010 
d2825c6d08 Ed H*0011 C     !DESCRIPTION:
785a077159 Alis*0012 C     Initialize PTRACERS data structures
                0013 
d2825c6d08 Ed H*0014 C     !USES:
d217ad1db8 Oliv*0015 #include "PTRACERS_MOD.h"
785a077159 Alis*0016       IMPLICIT NONE
                0017 #include "SIZE.h"
                0018 #include "EEPARAMS.h"
                0019 #include "PARAMS.h"
0dcd950fdd Patr*0020 #include "GRID.h"
d217ad1db8 Oliv*0021 #include "GAD.h"
636477d15b Jean*0022 #include "PTRACERS_SIZE.h"
0a278985fd Jean*0023 #include "PTRACERS_PARAMS.h"
47ed7f003e Jean*0024 #include "PTRACERS_START.h"
0a278985fd Jean*0025 #include "PTRACERS_FIELDS.h"
c4461c434e Step*0026 
d2825c6d08 Ed H*0027 C     !INPUT PARAMETERS:
                0028 C     myThid               :: thread number
785a077159 Alis*0029       INTEGER myThid
                0030 
                0031 #ifdef ALLOW_PTRACERS
                0032 
d2825c6d08 Ed H*0033 C     !LOCAL VARIABLES:
                0034 C     i,j,k,bi,bj,iTracer  :: loop indices
3ab6b68cec Jean*0035       INTEGER i,j,k,bi,bj,iTracer
                0036 #ifdef PTRACERS_ALLOW_DYN_STATE
                0037       INTEGER n
                0038 #endif
7d62671abd Oliv*0039       CHARACTER*(MAX_LEN_FNAM) tmpInitialFile
785a077159 Alis*0040 CEOP
04b12a5db5 Jean*0041 
47ed7f003e Jean*0042 C     Initialise internal parameter in common block:
                0043       _BEGIN_MASTER( myThid )
                0044       DO iTracer = 1, PTRACERS_num
                0045         PTRACERS_StepFwd(iTracer) = .TRUE.
                0046         PTRACERS_startAB(iTracer) = nIter0 - PTRACERS_Iter0
                0047       ENDDO
                0048       _END_MASTER( myThid )
                0049       _BARRIER
                0050 
d2825c6d08 Ed H*0051 C     Loop over tracers
785a077159 Alis*0052       DO iTracer = 1, PTRACERS_num
                0053 
dd33ff71a5 Mart*0054 C     Loop over tiles
                0055        DO bj = myByLo(myThid), myByHi(myThid)
                0056         DO bi = myBxLo(myThid), myBxHi(myThid)
04b12a5db5 Jean*0057 
dd33ff71a5 Mart*0058 C     Initialize arrays in common blocks :
                0059          DO k=1,Nr
0a278985fd Jean*0060           DO j=1-OLy,sNy+OLy
                0061            DO i=1-OLx,sNx+OLx
dd33ff71a5 Mart*0062             pTracer(i,j,k,bi,bj,iTracer) = PTRACERS_ref(k,iTracer)
0a278985fd Jean*0063             gpTrNm1(i,j,k,bi,bj,iTracer) = 0. _d 0
dd33ff71a5 Mart*0064            ENDDO
d2825c6d08 Ed H*0065           ENDDO
dd33ff71a5 Mart*0066          ENDDO
0a278985fd Jean*0067          DO j=1-OLy,sNy+OLy
                0068           DO i=1-OLx,sNx+OLx
                0069            surfaceForcingPTr(i,j,bi,bj,iTracer) = 0. _d 0
dd33ff71a5 Mart*0070           ENDDO
                0071          ENDDO
04b12a5db5 Jean*0072 
811d3e9bd3 Jean*0073 #ifdef PTRACERS_ALLOW_DYN_STATE
d217ad1db8 Oliv*0074 C     Initialize SOM array :
                0075          IF ( PTRACERS_SOM_Advection(iTracer) ) THEN
                0076            DO n = 1,nSOM
                0077             DO k=1,Nr
                0078              DO j=1-OLy,sNy+OLy
                0079               DO i=1-OLx,sNx+OLx
                0080                _Ptracers_som(i,j,k,bi,bj,n,iTracer) = 0. _d 0
                0081               ENDDO
                0082              ENDDO
                0083             ENDDO
                0084            ENDDO
                0085          ENDIF
811d3e9bd3 Jean*0086 #endif /* PTRACERS_ALLOW_DYN_STATE */
d217ad1db8 Oliv*0087 
dd33ff71a5 Mart*0088 C     end bi,bj loops
34fdea0d95 Dimi*0089         ENDDO
dd33ff71a5 Mart*0090        ENDDO
785a077159 Alis*0091 
dd33ff71a5 Mart*0092 C     end of Tracer loop
785a077159 Alis*0093       ENDDO
                0094 
d2825c6d08 Ed H*0095 C     Now read initial conditions and always exchange
727f3ba9e2 Jean*0096       IF (nIter0.EQ.PTRACERS_Iter0) THEN
dd33ff71a5 Mart*0097        DO iTracer = 1, PTRACERS_numInUse
7d62671abd Oliv*0098         tmpInitialFile = PTRACERS_initialFile(iTracer)
                0099         IF ( tmpInitialFile .NE. ' ' ) THEN
                0100          CALL READ_FLD_XYZ_RL(tmpInitialFile,' ',
47ed7f003e Jean*0101      &        pTracer(1-OLx,1-OLy,1,1,1,iTracer),0,myThid)
                0102          _EXCH_XYZ_RL(pTracer(1-OLx,1-OLy,1,1,1,iTracer),myThid)
dd33ff71a5 Mart*0103         ENDIF
                0104        ENDDO
785a077159 Alis*0105       ENDIF
                0106 
dd33ff71a5 Mart*0107 C     Apply mask
                0108       DO iTracer = 1, PTRACERS_numInUse
                0109        DO bj = myByLo(myThid), myByHi(myThid)
                0110         DO bi = myBxLo(myThid), myBxHi(myThid)
04b12a5db5 Jean*0111          DO k=1,Nr
0a278985fd Jean*0112           DO j=1-OLy,sNy+OLy
                0113            DO i=1-OLx,sNx+OLx
04b12a5db5 Jean*0114             IF (maskC(i,j,k,bi,bj).EQ.0.)
                0115      &           pTracer(i,j,k,bi,bj,iTracer)=0. _d 0
dd33ff71a5 Mart*0116            ENDDO
                0117           ENDDO
                0118          ENDDO
                0119         ENDDO
                0120        ENDDO
                0121       ENDDO
5bfeee1bf0 Chri*0122 
34fdea0d95 Dimi*0123 C Read from a pickup file if needed
5b187c067b Jean*0124       IF ( nIter0.GT.PTRACERS_Iter0 .OR.
                0125      &    (nIter0.EQ.PTRACERS_Iter0 .AND. pickupSuff.NE.' ')
                0126      &   ) THEN
                0127 
d197c88195 Jean*0128        CALL PTRACERS_READ_PICKUP( nIter0, myThid )
785a077159 Alis*0129       ENDIF
04b12a5db5 Jean*0130 
785a077159 Alis*0131 #endif /* ALLOW_PTRACERS */
04b12a5db5 Jean*0132 
785a077159 Alis*0133       RETURN
                0134       END