C $Header: /u/gcmpack/MITgcm/pkg/mypackage/mypackage_init_varia.F,v 1.6 2009/08/25 21:33:28 jmc Exp $ C $Name: $ #include "MYPACKAGE_OPTIONS.h" C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----| CBOP 0 C !ROUTINE: MYPACKAGE_INIT_VARIA C !INTERFACE: SUBROUTINE MYPACKAGE_INIT_VARIA( myThid ) C !DESCRIPTION: C Initialize MYPACKAGE variables C !USES: IMPLICIT NONE #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "MYPACKAGE.h" C !INPUT/OUTPUT PARAMETERS: C myThid :: my Thread Id number INTEGER myThid CEOP #ifdef ALLOW_MYPACKAGE C !LOCAL VARIABLES: C === Local variables === INTEGER i,j,k,bi,bj DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) C Initialize arrays in common blocks : C 3-dim. DO k=1,Nr DO j=1-Oly,sNy+OLy DO i=1-Olx,sNx+Olx #ifdef MYPACKAGE_3D_STATE myPa_StatScal1(i,j,k,bi,bj) = 0. _d 0 myPa_StatScal2(i,j,k,bi,bj) = 0. _d 0 myPa_StatVelU (i,j,k,bi,bj) = 0. _d 0 myPa_StatVelV (i,j,k,bi,bj) = 0. _d 0 #endif /* MYPACKAGE_3D_STATE */ #ifdef MYPACKAGE_TENDENCY myPa_TendScal1(i,j,k,bi,bj) = 0. _d 0 myPa_TendScal2(i,j,k,bi,bj) = 0. _d 0 myPa_TendVelU (i,j,k,bi,bj) = 0. _d 0 myPa_TendVelV (i,j,k,bi,bj) = 0. _d 0 #endif /* MYPACKAGE_TENDENCY */ ENDDO ENDDO ENDDO C 2-dim. #ifdef MYPACKAGE_2D_STATE DO j=1-Oly,sNy+OLy DO i=1-Olx,sNx+Olx myPa_Surf1(i,j,bi,bj) = 0. _d 0 myPa_Surf2(i,j,bi,bj) = 0. _d 0 ENDDO ENDDO #endif /* MYPACKAGE_2D_STATE */ C- end bi,bj loops ENDDO ENDDO IF ( startTime.EQ.baseTime .AND. nIter0.EQ.0 & .AND. pickupSuff.EQ.' ' ) THEN C Prevent loading of new data before everyone has finished initialisation C this is done within IO routines => no longer needed c _BARRIER #ifdef MYPACKAGE_3D_STATE IF ( myPa_Scal1File .NE. ' ' ) THEN CALL READ_FLD_XYZ_RL( myPa_Scal1File, ' ', & myPa_StatScal1, 0, myThid ) CALL EXCH_3D_RL( myPa_StatScal1, Nr, myThid ) ENDIF IF ( myPa_Scal2File .NE. ' ' ) THEN CALL READ_FLD_XYZ_RL( myPa_Scal2File, ' ', & myPa_StatScal2, 0, myThid ) CALL EXCH_3D_RL( myPa_StatScal2, Nr, myThid ) ENDIF IF ( myPa_VelUFile .NE. ' ' ) THEN CALL READ_FLD_XYZ_RL( myPa_VelUFile, ' ', & myPa_StatVelU, 0, myThid ) ENDIF IF ( myPa_VelVFile .NE. ' ' ) THEN CALL READ_FLD_XYZ_RL( myPa_VelVFile, ' ', & myPa_StatVelV, 0, myThid ) ENDIF IF ( myPa_VelUFile .NE. ' ' .OR. & myPa_VelVFile .NE. ' ' ) THEN IF ( myPa_StaV_Cgrid ) THEN CALL EXCH_UV_3D_RL( myPa_StatVelU, myPa_StatVelV, & .TRUE., Nr, myThid ) ELSE C- Assume Agrid position: CALL EXCH_UV_AGRID_3D_RL( myPa_StatVelU, myPa_StatVelV, & .TRUE., Nr, myThid ) ENDIF ENDIF #endif /* MYPACKAGE_3D_STATE */ #ifdef MYPACKAGE_2D_STATE IF ( myPa_Surf1File .NE. ' ' ) THEN CALL READ_FLD_XY_RL( myPa_Surf1File,' ', & myPa_Surf1, 0, myThid ) CALL EXCH_XY_RL( myPa_Surf1, myThid ) ENDIF IF ( myPa_Surf2File .NE. ' ' ) THEN CALL READ_FLD_XY_RL( myPa_Surf2File,' ', & myPa_Surf2, 0, myThid ) CALL EXCH_XY_RL( myPa_Surf2, myThid ) ENDIF #endif /* MYPACKAGE_2D_STATE */ ELSE C-- restart from a pickup: CALL MYPACKAGE_READ_PICKUP( nIter0, myThid ) C-- end start-from-iter-zero if/else block ENDIF #endif /* ALLOW_MYPACKAGE */ RETURN END