C $Header: /u/gcmpack/MITgcm/model/src/ini_dynvars.F,v 1.28 2016/11/28 23:05:05 jmc Exp $ C $Name: $ #include "CPP_OPTIONS.h" CBOP C !ROUTINE: INI_DYNVARS C !INTERFACE: SUBROUTINE INI_DYNVARS( myThid ) C !DESCRIPTION: \bv C *==========================================================* C | SUBROUTINE INI_DYNVARS C | o Initialise to zero all DYNVARS.h arrays C *==========================================================* C | Sets all the State variables to zero. C | Sets all the Gs (arrays used for multi-level time-stepping) C | to zero. C *==========================================================* C \ev C !USES: IMPLICIT NONE C === Global variables === #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "DYNVARS.h" #ifdef ALLOW_SOLVE4_PS_AND_DRAG #include "GRID.h" #endif /* ALLOW_SOLVE4_PS_AND_DRAG */ C !INPUT/OUTPUT PARAMETERS: C == Routine arguments == C myThid :: my Thread Id. number INTEGER myThid C !LOCAL VARIABLES: C == Local variables == C bi,bj :: tile indices C i,j,k :: loop index INTEGER bi, bj INTEGER i, j, k CEOP C-- Over all tiles DO bj = myByLo(myThid), myByHi(myThid) DO bi = myBxLo(myThid), myBxHi(myThid) C- 3D arrays DO k=1,Nr DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx uVel (i,j,k,bi,bj) = 0. _d 0 vVel (i,j,k,bi,bj) = 0. _d 0 wVel (i,j,k,bi,bj) = 0. _d 0 theta(i,j,k,bi,bj) = 0. _d 0 salt (i,j,k,bi,bj) = 0. _d 0 gU(i,j,k,bi,bj) = 0. _d 0 gV(i,j,k,bi,bj) = 0. _d 0 #ifdef USE_OLD_EXTERNAL_FORCING gT(i,j,k,bi,bj) = 0. _d 0 gS(i,j,k,bi,bj) = 0. _d 0 #endif #ifdef ALLOW_ADAMSBASHFORTH_3 guNm(i,j,k,bi,bj,1) = 0. _d 0 gvNm(i,j,k,bi,bj,1) = 0. _d 0 gtNm(i,j,k,bi,bj,1) = 0. _d 0 gsNm(i,j,k,bi,bj,1) = 0. _d 0 guNm(i,j,k,bi,bj,2) = 0. _d 0 gvNm(i,j,k,bi,bj,2) = 0. _d 0 gtNm(i,j,k,bi,bj,2) = 0. _d 0 gsNm(i,j,k,bi,bj,2) = 0. _d 0 #else guNm1(i,j,k,bi,bj) = 0. _d 0 gvNm1(i,j,k,bi,bj) = 0. _d 0 gtNm1(i,j,k,bi,bj) = 0. _d 0 gsNm1(i,j,k,bi,bj) = 0. _d 0 #endif totPhiHyd (i,j,k,bi,bj) = 0. _d 0 rhoInSitu (i,j,k,bi,bj) = 0. _d 0 IVDConvCount(i,j,k,bi,bj) = 0. _d 0 #ifdef ALLOW_SOLVE4_PS_AND_DRAG dU_psFacX (i,j,k,bi,bj) = 0. _d 0 dV_psFacY (i,j,k,bi,bj) = 0. _d 0 #endif /* ALLOW_SOLVE4_PS_AND_DRAG */ ENDDO ENDDO ENDDO C- 2D arrays DO J=1-OLy,sNy+OLy DO I=1-OLx,sNx+OLx etaN(i,j,bi,bj) = 0. _d 0 etaH(i,j,bi,bj) = 0. _d 0 phiHydLow(i,j,bi,bj) = 0. _d 0 hMixLayer(i,j,bi,bj) = 0. _d 0 ENDDO ENDDO #ifdef ALLOW_SOLVE4_PS_AND_DRAG C-- Put some constant values (if not part of S/R INI_FIELDS): DO k=1,Nr DO j=1-OLy,sNy+OLy DO i=1-OLx,sNx+OLx dU_psFacX(i,j,k,bi,bj) = maskW(i,j,k,bi,bj) & *recip_deepFacC(k)*recip_rhoFacC(k) dV_psFacY(i,j,k,bi,bj) = maskS(i,j,k,bi,bj) & *recip_deepFacC(k)*recip_rhoFacC(k) ENDDO ENDDO ENDDO #endif /* ALLOW_SOLVE4_PS_AND_DRAG */ ENDDO ENDDO RETURN END