C $Header: /u/gcmpack/MITgcm/pkg/streamice/streamice_vel_phi.F,v 1.2 2015/03/23 14:07:17 dgoldberg Exp $
C $Name: $
#include "STREAMICE_OPTIONS.h"
#ifdef ALLOW_AUTODIFF
# include "AUTODIFF_OPTIONS.h"
#endif
C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
CBOP
SUBROUTINE STREAMICE_VEL_PHI (
I myThid,
I maxNLIter,
I maxCGiter,
I cgtol,
O cg_iters,
O max_err)
C /============================================================\
C | SUBROUTINE |
C | o |
C |============================================================|
C | |
C \============================================================/
IMPLICIT NONE
C === Global variables ===
#include "SIZE.h"
#include "EEPARAMS.h"
#include "PARAMS.h"
#include "STREAMICE.h"
#include "STREAMICE_CG.h"
!#ifdef ALLOW_PETSC
!#include "finclude/petsc.h"
!#endif
#ifdef ALLOW_AUTODIFF_TAMC
# include "tamc.h"
#endif
C !INPUT/OUTPUT ARGUMENTS
INTEGER myThid
INTEGER maxNLIter
INTEGER maxCGIter
INTEGER i,j,bi,bj
_RL cgtol
INTEGER cg_iters
_RL max_err
#ifdef ALLOW_STREAMICE
#if (defined (ALLOW_STREAMICE_OAD_FP))
C LOCAL VARIABLES
CHARACTER*(MAX_LEN_MBUF) msgBuf
_EXCH_XY_RL( U_streamice , myThid )
_EXCH_XY_RL( V_streamice , myThid )
#ifdef STREAMICE_HYBRID_STRESS
CALL STREAMICE_VISC_BETA_HYBRID ( myThid )
#else
CALL STREAMICE_VISC_BETA ( myThid )
#endif
_EXCH_XY_RL( tau_beta_eff_streamice , myThid )
_EXCH_XY_RL( visc_streamice , myThid )
CALL STREAMICE_GET_VEL_RESID_ERR_OAD (max_err,myThid)
DO bj = myByLo(myThid), myByHi(myThid)
DO bi = myBxLo(myThid), myBxHi(myThid)
DO j=1-OLy,sNy+OLy
DO i=1-OLx,sNx+OLx
u_new_SI(i,j,bi,bj) = U_streamice(i,j,bi,bj)
v_new_SI(i,j,bi,bj) = V_streamice(i,j,bi,bj)
ENDDO
ENDDO
ENDDO
ENDDO
CALL STREAMICE_CG_WRAPPER(
& U_new_si,
& V_new_si,
& taudx_SI,
& taudy_SI,
& cgtol,
& cg_iters,
& maxCGIter,
& myThid )
#ifdef STREAMICE_HYBRID_STRESS
CALL STREAMICE_TAUB (myThid)
#endif
#endif
#endif
RETURN
END