void INSStaggeredVCStokesOperator::modifyRhsForInhomogeneousBc( SAMRAIVectorReal<NDIM,double>& y) { // Set y := y - A*0, i.e., shift the right-hand-side vector to account for // inhomogeneous boundary conditions. if (!d_homogeneous_bc) { d_correcting_rhs = true; Pointer<SAMRAIVectorReal<NDIM,double> > x = y.cloneVector(""); x->allocateVectorData(); x->setToScalar(0.0); Pointer<SAMRAIVectorReal<NDIM,double> > b = y.cloneVector(""); b->allocateVectorData(); b->setToScalar(0.0); apply(*x,*b); y.subtract(Pointer<SAMRAIVectorReal<NDIM,double> >(&y, false), b); x->freeVectorComponents(); x.setNull(); b->freeVectorComponents(); b.setNull(); d_correcting_rhs = false; } return; }// modifyRhsForInhomogeneousBc
void LinearOperator::modifyRhsForBcs(SAMRAIVectorReal<NDIM, double>& y) { if (d_homogeneous_bc) return; // Set y := y - A*0, i.e., shift the right-hand-side vector to account for // inhomogeneous boundary conditions. Pointer<SAMRAIVectorReal<NDIM, double> > x = y.cloneVector(""); Pointer<SAMRAIVectorReal<NDIM, double> > b = y.cloneVector(""); x->allocateVectorData(); b->allocateVectorData(); x->setToScalar(0.0); apply(*x, *b); y.subtract(Pointer<SAMRAIVectorReal<NDIM, double> >(&y, false), b); x->freeVectorComponents(); b->freeVectorComponents(); return; } // modifyRhsForBcs