C $Header: /u/gcmpack/MITgcm/pkg/streamice/streamice_init_fixed.F,v 1.14 2016/10/20 15:24:24 dgoldberg Exp $
C $Name: $
#include "STREAMICE_OPTIONS.h"
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
CBOP 0
C !ROUTINE: STREAMICE_INIT_FIXED
C !INTERFACE:
SUBROUTINE STREAMICE_INIT_FIXED( myThid )
C !DESCRIPTION:
C Initialize STREAMICE variables that are kept fixed during the run.
C !USES:
IMPLICIT NONE
#include "EEPARAMS.h"
#include "SIZE.h"
#include "PARAMS.h"
#include "STREAMICE.h"
#include "STREAMICE_CG.h"
#include "STREAMICE_BDRY.h"
#include "GRID.h"
#ifdef ALLOW_STREAMICE_FLUX_CONTROL
#include "STREAMICE_CTRL_FLUX.h"
#endif
C myThid :: my Thread Id number
INTEGER myThid
CEOP
#ifdef ALLOW_STREAMICE
C !LOCAL VARIABLES:
C === Local variables ===
INTEGER bi, bj, i, j, Gi, Gj, m, k
INTEGER maskFlag, hmaskFlag
_RL x, y
_RS dummyRS
CHARACTER*(MAX_LEN_MBUF) msgBuf
#ifdef STREAMICE_GEOM_FILE_SETUP
_RS temp_ufacemask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS temp_vfacemask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
_RS temp_hmask (1-OLx:sNx+OLx,1-OLy:sNy+OLy,nSx,nSy)
#endif
#ifdef ALLOW_PETSC
if (streamice_use_petsc) then
CALL STREAMICE_INITIALIZE_PETSC
endif
#endif
#ifdef ALLOW_MNC
IF ( useMNC .AND. (streamice_tave_mnc.OR.streamice_dump_mnc)
& ) THEN
C CALL STREAMICE_MNC_INIT( myThid )
ENDIF
#endif /* ALLOW_MNC */
#ifdef ALLOW_DIAGNOSTICS
IF ( useDiagnostics ) THEN
CALL STREAMICE_INIT_DIAGNOSTICS( myThid )
ENDIF
#endif
! CALVING MASK - LIMIT OF ICE SHELF FRONT ADVANCE
IF ( STREAMICE_calve_to_mask ) THEN
IF ( STREAMICEcalveMaskFile .NE. ' ') THEN
_BARRIER
C The 0 is the "iteration" argument. The ' ' is an empty suffix
CALL READ_FLD_XY_RS( STREAMICEcalveMaskFile, ' ',
& STREAMICE_calve_mask, 0, myThid )
ELSE
WRITE(msgBuf,'(A)') 'INIT CALVE MASK - NOT IMPLENTED'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1,sNy
DO i=1,sNx
streamice_calve_mask(i,j,bi,bj) = 0. _d 0
ENDDO
ENDDO
ENDDO
ENDDO
ENDIF
ENDIF
! INITIALIZE SIGMA COORD
IF (STREAMICEsigcoordInit.eq.'FILE') THEN
WRITE(msgBuf,'(A)') 'SIG FROM FILE - NOT IMPLENTED'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
ELSEIF (STREAMICEsigcoordInit.eq.'UNIFORM') THEN
do m=1,Nr
streamice_sigma_coord (m) = 1./Nr * (m-0.5)
streamice_delsigma (m) = 1./Nr
enddo
ELSE
WRITE(msgBuf,'(A)') 'SIG COORD INIT - NOT IMPLENTED'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
ENDIF
#ifdef ALLOW_COST
IF ( STREAMICEcostMaskFile .NE. ' ') THEN
_BARRIER
C The 0 is the "iteration" argument. The ' ' is an empty suffix
CALL READ_FLD_XY_RS( STREAMICEcostMaskFile, ' ',
& STREAMICE_cost_mask, 0, myThid )
ELSE
WRITE(msgBuf,'(A)') 'COST MASK - NOT IMPLENTED'
CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
& SQUEEZE_RIGHT , 1)
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1,sNy
DO i=1,sNx
STREAMICE_cost_mask (i,j,bi,bj) = 1.0
ENDDO
ENDDO
ENDDO
ENDDO
ENDIF
#endif
! READ IN FILES FOR BOUNDARY MASKS AND DIRICH VALUES
#ifdef STREAMICE_GEOM_FILE_SETUP
IF ( STREAMICEuFaceBdryFile .NE. ' ') THEN
_BARRIER
CALL READ_FLD_XY_RS ( STREAMICEuFaceBdryFile, ' ',
& temp_ufacemask, 0, myThid )
ELSE
WRITE(msgBuf,'(A)') 'U FACE MASK - NOT SET'
CALL PRINT_ERROR( msgBuf, myThid)
ENDIF
IF ( STREAMICEvFaceBdryFile .NE. ' ') THEN
_BARRIER
CALL READ_FLD_XY_RS ( STREAMICEvFaceBdryFile, ' ',
& temp_vfacemask, 0, myThid )
ELSE
WRITE(msgBuf,'(A)') 'V FACE MASK - NOT SET'
CALL PRINT_ERROR( msgBuf, myThid)
ENDIF
_EXCH_XY_RS(temp_ufacemask,myThid)
_EXCH_XY_RS(temp_vfacemask,myThid)
IF ( STREAMICEuDirichValsFile .NE. ' ') THEN
_BARRIER
CALL READ_FLD_XY_RL ( STREAMICEuDirichValsFile, ' ',
#ifdef ALLOW_STREAMICE_FLUX_CONTROL
& u_bdry_values_SI_base, 0, myThid )
#else
& u_bdry_values_SI, 0, myThid )
#endif
ELSE
WRITE(msgBuf,'(A)') 'U DIRICH VALS - NOT SET'
CALL PRINT_ERROR( msgBuf, myThid)
ENDIF
IF ( STREAMICEvDirichValsFile .NE. ' ') THEN
_BARRIER
CALL READ_FLD_XY_RL ( STREAMICEvDirichValsFile, ' ',
#ifdef ALLOW_STREAMICE_FLUX_CONTROL
& v_bdry_values_SI_base, 0, myThid )
#else
& v_bdry_values_SI, 0, myThid )
#endif
ELSE
WRITE(msgBuf,'(A)') 'V DIRICH VALS - NOT SET'
CALL PRINT_ERROR( msgBuf, myThid)
ENDIF
IF ( STREAMICEHBCxFile .NE. ' ') THEN
_BARRIER
CALL READ_FLD_XY_RL ( STREAMICEHBCxFile, ' ',
& h_ubdry_values_SI, 0, myThid )
ELSE
WRITE(msgBuf,'(A)') 'THICK BC AT U FACE - NOT SET'
CALL PRINT_ERROR( msgBuf, myThid)
ENDIF
IF ( STREAMICEHBCyFile .NE. ' ') THEN
_BARRIER
CALL READ_FLD_XY_RL ( STREAMICEHBCyFile, ' ',
& h_vbdry_values_SI, 0, myThid )
ELSE
WRITE(msgBuf,'(A)') 'THICK BC AT V FACE - NOT SET'
CALL PRINT_ERROR( msgBuf, myThid)
ENDIF
IF ( streamiceumassfluxfile .NE. ' ') THEN
_BARRIER
CALL READ_FLD_XY_RL ( streamiceumassfluxfile , ' ',
& u_flux_bdry_SI, 0, myThid )
ELSE
WRITE(msgBuf,'(A)') 'MASS FLUX AT U FACE - NOT SET'
CALL PRINT_ERROR( msgBuf, myThid)
ENDIF
IF ( streamicevmassfluxfile .NE. ' ') THEN
_BARRIER
CALL READ_FLD_XY_RL ( streamicevmassfluxfile , ' ',
& v_flux_bdry_SI, 0, myThid )
ELSE
WRITE(msgBuf,'(A)') 'MASS FLUX AT V FACE - NOT SET'
CALL PRINT_ERROR( msgBuf, myThid)
ENDIF
#ifdef ALLOW_STREAMICE_2DTRACER
IF ( STREAMICETrac2dBCxFile .NE. ' ') THEN
_BARRIER
CALL READ_FLD_XY_RL ( STREAMICETrac2dBCxFile, ' ',
& trac2d_ubdry_values_SI, 0, myThid )
ELSE
WRITE(msgBuf,'(A)') 'TRAC BC AT U FACE - NOT SET'
CALL PRINT_ERROR( msgBuf, myThid)
ENDIF
IF ( STREAMICETRAC2DBCyFile .NE. ' ') THEN
_BARRIER
CALL READ_FLD_XY_RL ( STREAMICETrac2dBCyFile, ' ',
& trac2d_vbdry_values_SI, 0, myThid )
ELSE
WRITE(msgBuf,'(A)') 'TRAC BC AT V FACE - NOT SET'
CALL PRINT_ERROR( msgBuf, myThid)
ENDIF
#endif
! with this setup hmask is initialized here rather than in init_varia,
! because it is needed to set no-flow boundaries, even though the field
! could potentially change due to ice shelf front advance and calving
! (POTENTIAL PROBLEMS WITH TAF ? USE TEMP FIELD HERE AND SET HMASK IN INIT_VARIA ?)
IF ( STREAMICEhMaskFile .NE. ' ') THEN
_BARRIER
CALL READ_FLD_XY_RS ( STREAMICEhMaskFile, ' ',
& temp_hmask, 0, myThid )
ELSE
WRITE(msgBuf,'(A)') 'H MASK FILE - NOT SET'
CALL PRINT_ERROR( msgBuf, myThid)
ENDIF
_EXCH_XY_RS(temp_hmask,myThid)
#ifdef ALLOW_CTRL
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1,sNy
DO i=1,sNx
IF (temp_hmask(i,j,bi,bj) .eq. 1.0) THEN
DO k=1,Nr
STREAMICE_ctrl_mask(i,j,k,bi,bj) = 1. _d 0
ENDDO
ENDIF
ENDDO
ENDDO
ENDDO
ENDDO
#endif
#ifdef ALLOW_STREAMICE_FLUX_CONTROL
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1,sNy
DO i=1,sNx
u_bdry_values_SI (i,j,bi,bj) =
& u_bdry_values_SI_base (i,j,bi,bj)
v_bdry_values_SI (i,j,bi,bj) =
& v_bdry_values_SI_base (i,j,bi,bj)
ENDDO
ENDDO
ENDDO
ENDDO
#endif
#endif /* STREAMICE_GEOM_FILE_SETUP */
!!!!!!!!!!!!!!!!!!!!!!!!!
C- fill in the overlap (+ BARRIER):
_EXCH_XY_RS(STREAMICE_calve_mask, myThid )
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1,sNy
DO i=1,sNx
C INIT VALUES FOR METRIC TERMS
k1AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
& (dxG(i+1,j,bi,bj)-dxG(i,j,bi,bj))
k2AtC_str(i,j,bi,bj) = recip_rA(i,j,bi,bj) *
& (dyG(i,j+1,bi,bj)-dyG(i,j,bi,bj))
#ifdef STREAMICE_HYBRID_STRESS
streamice_basal_geom (i,j,bi,bj) = 1.0
#endif
C INIT BDRY CONDITIONS
#ifndef STREAMICE_GEOM_FILE_SETUP
Gi = (myXGlobalLo-1)+(bi-1)*sNx+i
Gj = (myYGlobalLo-1)+(bj-1)*sNy+j
x = xC(i,j,bi,bj)
y = yC(i,j,bi,bj)
STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0
STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0
IF (Gi.EQ.1 .AND. .NOT. STREAMICE_EW_periodic) THEN
C INITIALIZE BOUNDARY CONDS AT WEST
IF ((y .gt. min_y_noflow_WEST) .AND.
& (y .le. max_y_noflow_WEST)) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
ENDIF
IF ((y .gt. min_y_noStress_WEST) .AND.
& (y .le. max_y_noStress_WEST)) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
ENDIF
IF ((y .gt. min_y_FluxBdry_WEST) .AND.
& (y .le. max_y_FluxBdry_WEST)) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_WEST
ENDIF
IF ((y .gt. min_y_Dirich_WEST) .AND.
& (y .le. max_y_Dirich_WEST)) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
u_bdry_values_SI (i,j,bi,bj) = 0.0
ENDIF
IF ((y .gt. min_y_CFBC_WEST) .AND.
& (y .le. max_y_CFBC_WEST)) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
ENDIF
ENDIF
IF (Gi.EQ.Nx .AND. .NOT. STREAMICE_EW_periodic) THEN
C INITIALIZE BOUNDARY CONDS AT EAST
IF ((y .gt. min_y_noflow_EAST) .AND.
& (y .le. max_y_noflow_EAST)) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
ENDIF
IF ((y .gt. min_y_noStress_EAST) .AND.
& (y .le. max_y_noStress_EAST)) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
ENDIF
IF ((y .gt. min_y_FluxBdry_EAST) .AND.
& (y .le. max_y_FluxBdry_EAST)) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
u_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_EAST
ENDIF
IF ((y .gt. min_y_Dirich_EAST) .AND.
& (y .le. max_y_Dirich_EAST)) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
u_bdry_values_SI (i,j,bi,bj) = 0. _d 0
ENDIF
IF ((y .gt. min_y_CFBC_EAST) .AND.
& (y .le. max_y_CFBC_EAST)) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
ENDIF
ENDIF
IF (Gj.EQ.1 .AND. .NOT. STREAMICE_NS_periodic) THEN
C INITIALIZE BOUNDARY CONDS AT SOUTH
IF ((x .gt. min_x_noflow_SOUTH) .AND.
& (x .le. max_x_noflow_SOUTH)) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
ENDIF
IF ((x .gt. min_x_noStress_SOUTH) .AND.
& (x .le. max_x_noStress_SOUTH)) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
ENDIF
IF ((x .gt. min_x_FluxBdry_SOUTH) .AND.
& (x .le. max_x_FluxBdry_SOUTH)) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
v_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_SOUTH
ENDIF
IF ((x .gt. min_x_Dirich_SOUTH) .AND.
& (x .le. max_x_Dirich_SOUTH)) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
u_bdry_values_SI (i,j,bi,bj) = 0. _d 0
ENDIF
IF ((x .gt. min_x_CFBC_SOUTH) .AND.
& (x .le. max_x_CFBC_SOUTH)) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
ENDIF
ENDIF
IF (Gj.EQ.Ny .AND. .NOT. STREAMICE_NS_periodic) THEN
C INITIALIZE BOUNDARY CONDS AT NORTH
IF ((x .gt. min_x_noflow_NORTH) .AND.
& (x .le. max_x_noflow_NORTH)) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0. _d 0
ENDIF
IF ((x .gt. min_x_noStress_NORTH) .AND.
& (x .le. max_x_noStress_NORTH)) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
ENDIF
IF ((x .gt. min_x_FluxBdry_NORTH) .AND.
& (x .le. max_x_FluxBdry_NORTH)) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
v_flux_bdry_SI (i,j,bi,bj) = flux_bdry_val_NORTH
ENDIF
IF ((x .gt. min_x_Dirich_NORTH) .AND.
& (x .le. max_x_Dirich_NORTH)) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
v_bdry_values_SI (i,j,bi,bj) = 0. _d 0
ENDIF
IF ((x .gt. min_x_CFBC_NORTH) .AND.
& (x .le. max_x_CFBC_NORTH)) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
ENDIF
ENDIF
#else /* ifndef STREAMICE_GEOM_FILE_SETUP */
! BOUNDARY MASK CONFIGURED FROM FILES
IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
& temp_hmask(i,j,bi,bj).eq.0.0 .or.
& temp_hmask(i-1,j,bi,bj).eq.1.0) THEN
! WEST FACE OF CELL
maskFlag=INT(temp_ufacemask(i,j,bi,bj))
IF (maskFlag.eq.2) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 2.0
ELSEIF (maskflag.eq.4.0) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 4.0
ELSEIF (maskFlag.eq.3) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 3.0
ELSEIF (maskFlag.eq.1) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 1.0
ELSEIF ((maskFlag.eq.0) .or.
& ((maskFlag.eq.-1) .and.
& (temp_hmask(i-1,j,bi,bj).eq.-1.0))) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
ELSEIF (temp_hmask(i,j,bi,bj).eq.-1.0) THEN
STREAMICE_ufacemask_bdry (i,j,bi,bj) = 0.0
ELSE
STREAMICE_ufacemask_bdry (i,j,bi,bj) = -1.0
ENDIF
ENDIF
IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
& temp_hmask(i,j,bi,bj).eq.0.0) THEN
! EAST FACE OF CELL
maskFlag=INT(temp_ufacemask(i+1,j,bi,bj))
IF (maskFlag.eq.2) THEN
STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 2.0
ELSEIF (maskFlag.eq.4.0) THEN
STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 4.0
ELSEIF (maskFlag.eq.3) THEN
STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 3.0
ELSEIF (maskFlag.eq.1) THEN
STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 1.0
ELSEIF ((maskFlag.eq.0) .or.
& ((maskFlag.eq.-1) .and.
& (temp_hmask(i+1,j,bi,bj).eq.-1.0))) THEN
STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = 0.0
ELSE
STREAMICE_ufacemask_bdry (i+1,j,bi,bj) = -1.0
ENDIF
ENDIF
IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
& temp_hmask(i,j,bi,bj).eq.0.0 .or.
& temp_hmask(i,j-1,bi,bj).eq.1.0) THEN
! SOUTH FACE OF CELL
maskFlag=INT(temp_vfacemask(i,j,bi,bj))
IF (maskFlag.eq.2) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 2.0
ELSEIF (maskFlag.eq.4.0) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 4.0
ELSEIF (maskFlag.eq.3) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 3.0
ELSEIF (maskFlag.eq.1) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 1.0
ELSEIF ((maskFlag.eq.0) .or.
& ((maskFlag.eq.-1) .and.
& (temp_hmask(i,j-1,bi,bj).eq.-1.0))) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
ELSEIF (temp_hmask(i,j,bi,bj).eq.-1.0) THEN
STREAMICE_vfacemask_bdry (i,j,bi,bj) = 0.0
ELSE
STREAMICE_vfacemask_bdry (i,j,bi,bj) = -1.0
ENDIF
ENDIF
IF (temp_hmask(i,j,bi,bj).eq.1.0 .or.
& temp_hmask(i,j,bi,bj).eq.0.0) THEN
! NORTH FACE OF CELL
maskFlag=INT(temp_vfacemask(i,j+1,bi,bj))
IF (maskFlag.eq.2) THEN
STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 2.0
ELSEIF (maskFlag.eq.4.0) THEN
STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 4.0
ELSEIF (maskFlag.eq.3) THEN
STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 3.0
ELSEIF (maskFlag.eq.1) THEN
STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 1.0
ELSEIF ((maskFlag.eq.0) .or.
& ((maskFlag.eq.-1) .and.
& (temp_hmask(i,j+1,bi,bj).eq.-1.0))) THEN
STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = 0.0
ELSE
STREAMICE_vfacemask_bdry (i,j+1,bi,bj) = -1.0
ENDIF
ENDIF ! hmask==1 or hmask==0
#endif
ENDDO
ENDDO
ENDDO
ENDDO
#ifdef ALLOW_CTRL
! _EXCH_XY_RL(STREAMICE_ctrl_mask, myThid )
CALL ACTIVE_WRITE_GEN_RS( 'maskCtrlL', STREAMICE_ctrl_mask,
& 'XY', Nr, 1, .FALSE., 0, myThid, dummyRS )
#endif
#ifdef ALLOW_COST
! _EXCH_XY_RL(STREAMICE_ctrl_mask, myThid )
CALL WRITE_FLD_XY_RS ( 'maskCost', '',
& STREAMICE_cost_mask, 0, myThid )
#endif
_EXCH_XY_RL(k1AtC_str, myThid )
_EXCH_XY_RL(k2AtC_str, myThid )
_EXCH_XY_RS(STREAMICE_ufacemask_bdry, myThid )
_EXCH_XY_RS(STREAMICE_vfacemask_bdry, myThid )
_EXCH_XY_RL(u_bdry_values_SI, myThid )
_EXCH_XY_RL(v_bdry_values_SI, myThid )
_EXCH_XY_RL(u_flux_bdry_SI, myThid )
_EXCH_XY_RL(v_flux_bdry_SI, myThid )
Xquad (1) = .5 * (1.-1./sqrt(3.))
Xquad (2) = .5 * (1.+1./sqrt(3.))
CALL STREAMICE_INIT_PHI( myThid )
#if (defined (ALLOW_OPENAD) defined (ALLOW_STREAMICE_OAD_FP) )
#ifdef ALLOW_PETSC
STREAMICE_need2createmat = .true.
STREAMICE_need2destroymat = .true.
#endif
#endif
#endif /* ALLOW_STREAMICE */
RETURN
END