C $Header: /u/gcmpack/MITgcm/pkg/ctrl/ctrl_init_variables.F,v 1.20 2015/10/26 03:21:27 gforget Exp $ C $Name: $ #include "CTRL_OPTIONS.h" subroutine CTRL_INIT_VARIABLES( myThid ) c ================================================================== c SUBROUTINE ctrl_init_variables c ================================================================== c c o Set parts of the vector of control variables and initialize the c rest to zero. c c started: heimbach@mit.edu 25-Mar-2002 c c ================================================================== c SUBROUTINE ctrl_init_variables c ================================================================== implicit none c == global variables == #include "EEPARAMS.h" #include "SIZE.h" #include "PARAMS.h" #ifdef ALLOW_CTRL # include "CTRL_SIZE.h" # include "ctrl.h" # include "CTRL_FIELDS.h" # include "CTRL_GENARR.h" #endif c == routine arguments == integer myThid #ifdef ALLOW_CTRL c == local variables == integer bi,bj integer i,j,k integer itlo,ithi integer jtlo,jthi integer jmin,jmax integer imin,imax integer ntmp integer ivarindex c == end of interface == jtlo = myByLo(myThid) jthi = myByHi(myThid) itlo = myBxLo(myThid) ithi = myBxHi(myThid) jmin = 1-OLy jmax = sNy+OLy imin = 1-OLx imax = sNx+OLx #ifdef ECCO_CTRL_DEPRECATED do bj = jtlo,jthi do bi = itlo,ithi num_zero_mean(bi,bj) = 0. _d 0 objf_zero_mean(bi,bj) = 0. _d 0 objf_zero_smoo(bi,bj) = 0. _d 0 enddo enddo #endif #ifdef ALLOW_HFLUX_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_hflux0(i,j,bi,bj) = 0. _d 0 xx_hflux1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_SFLUX_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_sflux0(i,j,bi,bj) = 0. _d 0 xx_sflux1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_USTRESS_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_tauu0(i,j,bi,bj) = 0. _d 0 xx_tauu1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_VSTRESS_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_tauv0(i,j,bi,bj) = 0. _d 0 xx_tauv1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_UWIND_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_uwind0(i,j,bi,bj) = 0. _d 0 xx_uwind1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_VWIND_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_vwind0(i,j,bi,bj) = 0. _d 0 xx_vwind1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_ATEMP_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_atemp0(i,j,bi,bj) = 0. _d 0 xx_atemp1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_AQH_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_aqh0(i,j,bi,bj) = 0. _d 0 xx_aqh1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_PRECIP_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_precip0(i,j,bi,bj) = 0. _d 0 xx_precip1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_SWFLUX_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_swflux0(i,j,bi,bj) = 0. _d 0 xx_swflux1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_SWDOWN_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_swdown0(i,j,bi,bj) = 0. _d 0 xx_swdown1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_LWFLUX_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_lwflux0(i,j,bi,bj) = 0. _d 0 xx_lwflux1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_LWDOWN_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_lwdown0(i,j,bi,bj) = 0. _d 0 xx_lwdown1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_EVAP_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_evap0(i,j,bi,bj) = 0. _d 0 xx_evap1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_SNOWPRECIP_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_snowprecip0(i,j,bi,bj) = 0. _d 0 xx_snowprecip1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_APRESSURE_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_apressure0(i,j,bi,bj) = 0. _d 0 xx_apressure1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_RUNOFF_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_runoff0(i,j,bi,bj) = 0. _d 0 xx_runoff1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_SST_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_sst0(i,j,bi,bj) = 0. _d 0 xx_sst1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_SSS_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_sss0(i,j,bi,bj) = 0. _d 0 xx_sss1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_SHIFWFLX_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax xx_shifwflx0(i,j,bi,bj) = 0. _d 0 xx_shifwflx1(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_BOTTOMDRAG_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax bottomDragFld(i,j,bi,bj) = 0. _d 0 enddo enddo enddo enddo #endif #ifdef ALLOW_ATM_MEAN_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax # ifdef ALLOW_ATEMP_CONTROL xx_atemp_mean (i,j,bi,bj) = 0. _d 0 # endif # ifdef ALLOW_AQH_CONTROL xx_aqh_mean (i,j,bi,bj) = 0. _d 0 # endif # ifdef ALLOW_UWIND_CONTROL xx_uwind_mean (i,j,bi,bj) = 0. _d 0 # endif # ifdef ALLOW_VWIND_CONTROL xx_vwind_mean (i,j,bi,bj) = 0. _d 0 # endif # ifdef ALLOW_PRECIP_CONTROL xx_precip_mean(i,j,bi,bj) = 0. _d 0 # endif # ifdef ALLOW_SWDOWN_CONTROL xx_swdown_mean(i,j,bi,bj) = 0. _d 0 # endif enddo enddo enddo enddo #endif /* ALLOW_ATM_MEAN_CONTROL */ #ifdef ALLOW_OBCS_CONTROL IF (useOBCS) CALL CTRL_INIT_OBCS_VARIABLES( myThid ) #endif C-- Map the control variables onto the model state. C- Needs to be called after few {PKG}_init_varia (e.g., PTRACERS_INIT_VARIA) IF ( .NOT. ctrlUseGen ) THEN # ifdef ALLOW_ECCO # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('CTRL_MAP_INI_ECCO',myThid) # endif CALL CTRL_MAP_INI_ECCO( myThid ) else # ifdef ALLOW_DEBUG IF (debugMode) CALL DEBUG_CALL('CTRL_MAP_INI',myThid) # endif CALL CTRL_MAP_INI( myThid ) # endif ENDIF !IF ( .NOT. ctrlUseGen ) THEN IF ( ctrlUseGen ) THEN #if (defined (ALLOW_GENARR2D_CONTROL) defined (ALLOW_GENARR3D_CONTROL)) CALL CTRL_MAP_INI_GENARR( myThid ) #endif #ifdef ALLOW_GENTIM2D_CONTROL CALL CTRL_MAP_INI_GENTIM2D( myThid ) #endif #ifdef ALLOW_GENTIM2D_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do k=1,maxCtrlTim2D objf_gentim2d(bi,bj,k) = 0. _d 0 num_gentim2d(bi,bj,k) = 0. _d 0 #ifdef ECCO_CTRL_DEPRECATED num_gentim2dm(bi,bj,k) = 0. _d 0 objf_gentim2dm(bi,bj,k) = 0. _d 0 objf_gentim2dsmoo(bi,bj,k) = 0. _d 0 #endif /* ECCO_CTRL_DEPRECATED */ enddo enddo enddo #endif #ifdef ALLOW_GENARR2D_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do k=1,maxCtrlArr2D objf_genarr2d(bi,bj,k) = 0. _d 0 num_genarr2d(bi,bj,k) = 0. _d 0 enddo enddo enddo #endif #ifdef ALLOW_GENARR3D_CONTROL do bj = jtlo,jthi do bi = itlo,ithi do k=1,maxCtrlArr3D objf_genarr3d(bi,bj,k) = 0. _d 0 num_genarr3d(bi,bj,k) = 0. _d 0 enddo enddo enddo #endif ENDIF !IF ( .NOT. ctrlUseGen ) THEN #ifdef ALLOW_SEAICE CALL SEAICE_CTRL_MAP_INI( myThid ) #endif #endif /* ALLOW_CTRL */ RETURN END