C $Header: /home/ubuntu/mnt/e9_copy/MITgcm_contrib/ocean_inversion_project/code/Attic/ptracers_init.F.test,v 1.2 2003/09/23 04:34:23 dimitri dead $ C $Name: $ #include "PTRACERS_OPTIONS.h" #ifdef ALLOW_GCHEM # include "GCHEM_OPTIONS.h" #endif CBOP C !ROUTINE: PTRACERS_INIT C !INTERFACE: ========================================================== SUBROUTINE PTRACERS_INIT( myThid ) C !DESCRIPTION: C Initialize PTRACERS data structures cdm This file is customized to compute CO2 perturbations from 30 ocean cdm regions for Gruber's ocean inversion project. C !USES: =============================================================== IMPLICIT NONE #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "PTRACERS.h" cswdptr -- add --- #ifdef ALLOW_GCHEM # include "GCHEM.h" #endif cswdptr --- end add -- C !INPUT PARAMETERS: =================================================== C myThid :: thread number INTEGER myThid C !OUTPUT PARAMETERS: ================================================== C none #ifdef ALLOW_PTRACERS C !LOCAL VARIABLES: ==================================================== C i,j,k,bi,bj,iTracer :: loop indices INTEGER i,j,k,bi,bj,iTracer CHARACTER*(10) suff #ifndef ALLOW_GCHEM INTEGER tIter0 PARAMETER ( tIter0 = 0 ) #endif CEOP C Loop over tracers DO iTracer = 1, PTRACERS_num C Loop over tiles DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) C Initialize arrays in common blocks : DO k=1,Nr DO j=1-Oly,sNy+OLy DO i=1-Olx,sNx+Olx pTracer(i,j,k,bi,bj,iTracer) = 0. _d 0 gPtr(i,j,k,bi,bj,iTracer) = 0. _d 0 gPtrNM1(i,j,k,bi,bj,iTracer) = 0. _d 0 ENDDO ENDDO ENDDO #ifdef ALLOW_TIMEAVE C Initialize averages to zero c CALL TIMEAVE_RESET(GM_Kwx_T,Nr, bi,bj,myThid) c CALL TIMEAVE_RESET(GM_Kwy_T,Nr, bi,bj,myThid) c CALL TIMEAVE_RESET(GM_Kwz_T,Nr, bi,bj,myThid) c DO k=1,Nr c GM_TimeAve(k,bi,bj)=0. c ENDDO #endif /* ALLOW_TIMEAVE */ C end bi,bj loops ENDDO ENDDO C end of Tracer loop ENDDO C Now read initial conditions and always exchange cswdptr IF (nIter0.EQ.0) THEN cswdptr -- change --- IF (nIter0.EQ.tIter0) THEN cswdptr -- end change --- DO iTracer = 1, PTRACERS_numInUse IF ( PTRACERS_initialFile(iTracer) .NE. ' ' ) THEN _BEGIN_MASTER( myThid ) CALL READ_FLD_XYZ_RL(PTRACERS_initialFile(iTracer),' ', & pTracer(1-Olx,1-Oly,1,1,1,iTracer) ,0,myThid) _END_MASTER(myThid) C Apply mask DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) DO K=1,Nr DO J=1,sNy DO I=1,sNx IF(hFacC(I,J,K,bi,bj).EQ.0) & pTracer(i,j,k,bi,bj,iTracer)=0. ENDDO ENDDO ENDDO ENDDO ENDDO ELSE cswdptr -- add --- cswdptr -- end add --- ENDIF _EXCH_XYZ_R8(pTracer(1-Olx,1-Oly,1,1,1,iTracer),myThid) ENDDO ENDIF C Read from a pickup file if nIter0 cswdptr IF (nIter0.NE.0) THEN cswdptr -- change -- IF (nIter0.GT.tIter0) THEN C-- Suffix for pickup files IF (pickupSuff.EQ.' ') THEN WRITE(suff,'(I10.10)') nIter0 ELSE WRITE(suff,'(A10)') pickupSuff ENDIF CALL PTRACERS_READ_CHECKPOINT( nIter0,myThid ) ENDIF cdm Initialize pTracerMasks CALL PTRACERS_READ_MASK ( mythid ) #endif /* ALLOW_PTRACERS */ RETURN END