C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_ctrl_map_ini.F,v 1.8 2014/10/20 03:20:57 gforget Exp $ C $Name: $ #include "SEAICE_OPTIONS.h" #ifdef ALLOW_CTRL # include "CTRL_OPTIONS.h" #endif CBOP C !ROUTINE: seaice_ctrl_map_ini C !INTERFACE: subroutine SEAICE_CTRL_MAP_INI( mythid ) C !DESCRIPTION: \bv c *================================================================= c | SUBROUTINE seaice_ctrl_map_ini c | Add the temperature, salinity, and diffusivity parts of the c | control vector to the model state and update the tile halos. c | The control vector is defined in the header file "ctrl.h". c *================================================================= C \ev C !USES: implicit none c == global variables == #include "SIZE.h" #include "EEPARAMS.h" #include "PARAMS.h" #include "GRID.h" #include "DYNVARS.h" #include "FFIELDS.h" #include "SEAICE_SIZE.h" #include "SEAICE.h" #ifdef ALLOW_CTRL # include "CTRL_SIZE.h" # include "ctrl.h" # include "ctrl_dummy.h" # include "optim.h" #endif C !INPUT/OUTPUT PARAMETERS: c == routine arguments == integer mythid #ifdef ALLOW_CTRL C !LOCAL VARIABLES: c == local variables == integer bi,bj integer i,j,k integer itlo,ithi integer jtlo,jthi integer jmin,jmax integer imin,imax integer il logical equal logical doglobalread logical ladinit character*( 80) fnamegeneric _RL fac _RL tmptest c == external == integer ilnblnk external c == end of interface == CEOP jtlo = mybylo(mythid) jthi = mybyhi(mythid) itlo = mybxlo(mythid) ithi = mybxhi(mythid) jmin = 1 jmax = sny imin = 1 imax = snx doglobalread = .false. ladinit = .false. equal = .true. if ( equal ) then fac = 1. _d 0 else fac = 0. _d 0 endif #ifdef ALLOW_SIAREA_CONTROL c-- siarea. il=ilnblnk( xx_siarea_file ) write(fnamegeneric(1:80),'(2a,i10.10)') & xx_siarea_file(1:il),'.',optimcycle call ACTIVE_READ_XY( fnamegeneric, tmpfld2d, 1, & doglobalread, ladinit, optimcycle, & mythid, xx_siarea_dummy ) do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax area(i,j,bi,bj) = area(i,j,bi,bj) + & tmpfld2d(i,j,bi,bj) enddo enddo enddo enddo #endif #ifdef ALLOW_SIHEFF_CONTROL c-- siheff. il=ilnblnk( xx_siheff_file ) write(fnamegeneric(1:80),'(2a,i10.10)') & xx_siheff_file(1:il),'.',optimcycle call ACTIVE_READ_XY( fnamegeneric, tmpfld2d, 1, & doglobalread, ladinit, optimcycle, & mythid, xx_siheff_dummy ) do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax heff(i,j,bi,bj) = heff(i,j,bi,bj) + & tmpfld2d(i,j,bi,bj) enddo enddo enddo enddo #endif #ifdef ALLOW_SIHSNOW_CONTROL c-- sihsnow. il=ilnblnk( xx_sihsnow_file ) write(fnamegeneric(1:80),'(2a,i10.10)') & xx_sihsnow_file(1:il),'.',optimcycle call ACTIVE_READ_XY( fnamegeneric, tmpfld2d, 1, & doglobalread, ladinit, optimcycle, & mythid, xx_sihsnow_dummy ) do bj = jtlo,jthi do bi = itlo,ithi do j = jmin,jmax do i = imin,imax hsnow(i,j,bi,bj) = hsnow(i,j,bi,bj) + & tmpfld2d(i,j,bi,bj) enddo enddo enddo enddo #endif c-- Update the tile edges. #ifdef ALLOW_SIAREA_CONTROL _EXCH_XY_RL( area, mythid ) #endif #ifdef ALLOW_SIHEFF_CONTROL _EXCH_XY_RL( heff, mythid ) #endif #ifdef ALLOW_SIHSNOW_CONTROL _EXCH_XY_RL( hsnow, mythid ) #endif #endif /* ALLOW_CTRL */ return end