void StokesL1L2Resid<EvalT, Traits>:: evaluateFields(typename Traits::EvalData workset) { typedef Intrepid::FunctionSpaceTools FST; for (std::size_t cell=0; cell < workset.numCells; ++cell) { for (std::size_t node=0; node < numNodes; ++node) { for (std::size_t i=0; i<vecDim; i++) Residual(cell,node,i)=0.0; for (std::size_t qp=0; qp < numQPs; ++qp) { Residual(cell,node,0) += 2.0*muFELIX(cell,qp)*((2.0*epsilonXX(cell,qp) + epsilonYY(cell,qp))*wGradBF(cell,node,qp,0) + epsilonXY(cell,qp)*wGradBF(cell,node,qp,1)) + force(cell,qp,0)*wBF(cell,node,qp); Residual(cell,node,1) += 2.0*muFELIX(cell,qp)*(epsilonXY(cell,qp)*wGradBF(cell,node,qp,0) + (epsilonXX(cell,qp) + 2.0*epsilonYY(cell,qp))*wGradBF(cell,node,qp,1)) + force(cell,qp,1)*wBF(cell,node,qp); } } } }
void StokesMomentumResid<EvalT, Traits>:: evaluateFields(typename Traits::EvalData workset) { for (std::size_t cell=0; cell < workset.numCells; ++cell) { for (std::size_t node=0; node < numNodes; ++node) { for (std::size_t i=0; i<numDims; i++) { MResidual(cell,node,i) = 0.0; for (std::size_t qp=0; qp < numQPs; ++qp) { MResidual(cell,node,i) += force(cell,qp,i)*wBF(cell,node,qp) - P(cell,qp)*wGradBF(cell,node,qp,i); for (std::size_t j=0; j < numDims; ++j) { MResidual(cell,node,i) += muFELIX(cell,qp)*(VGrad(cell,qp,i,j)+VGrad(cell,qp,j,i))*wGradBF(cell,node,qp,j); // muFELIX(cell,qp)*VGrad(cell,qp,i,j)*wGradBF(cell,node,qp,j); } } } } } }
void StokesFOResid<EvalT, Traits>:: evaluateFields(typename Traits::EvalData workset) { typedef Intrepid::FunctionSpaceTools FST; for (std::size_t i=0; i < Residual.size(); ++i) Residual(i)=0.0; if (numDims == 3) { //3D case if (eqn_type == FELIX) { for (std::size_t cell=0; cell < workset.numCells; ++cell) { for (std::size_t qp=0; qp < numQPs; ++qp) { ScalarT& mu = muFELIX(cell,qp); ScalarT strs00 = 2.0*mu*(2.0*Ugrad(cell,qp,0,0) + Ugrad(cell,qp,1,1)); ScalarT strs11 = 2.0*mu*(2.0*Ugrad(cell,qp,1,1) + Ugrad(cell,qp,0,0)); ScalarT strs01 = mu*(Ugrad(cell,qp,1,0)+ Ugrad(cell,qp,0,1)); ScalarT strs02 = mu*Ugrad(cell,qp,0,2); ScalarT strs12 = mu*Ugrad(cell,qp,1,2); for (std::size_t node=0; node < numNodes; ++node) { Residual(cell,node,0) += strs00*wGradBF(cell,node,qp,0) + strs01*wGradBF(cell,node,qp,1) + strs02*wGradBF(cell,node,qp,2); Residual(cell,node,1) += strs01*wGradBF(cell,node,qp,0) + strs11*wGradBF(cell,node,qp,1) + strs12*wGradBF(cell,node,qp,2); } } for (std::size_t qp=0; qp < numQPs; ++qp) { ScalarT& frc0 = force(cell,qp,0); ScalarT& frc1 = force(cell,qp,1); for (std::size_t node=0; node < numNodes; ++node) { Residual(cell,node,0) += frc0*wBF(cell,node,qp); Residual(cell,node,1) += frc1*wBF(cell,node,qp); } } } } else if (eqn_type == POISSON) { //Laplace (Poisson) operator for (std::size_t cell=0; cell < workset.numCells; ++cell) { for (std::size_t node=0; node < numNodes; ++node) { for (std::size_t qp=0; qp < numQPs; ++qp) { Residual(cell,node,0) += Ugrad(cell,qp,0,0)*wGradBF(cell,node,qp,0) + Ugrad(cell,qp,0,1)*wGradBF(cell,node,qp,1) + Ugrad(cell,qp,0,2)*wGradBF(cell,node,qp,2) + force(cell,qp,0)*wBF(cell,node,qp); } } } } } else { //2D case if (eqn_type == FELIX) { for (std::size_t cell=0; cell < workset.numCells; ++cell) { for (std::size_t node=0; node < numNodes; ++node) { for (std::size_t qp=0; qp < numQPs; ++qp) { Residual(cell,node,0) += 2.0*muFELIX(cell,qp)*((2.0*Ugrad(cell,qp,0,0) + Ugrad(cell,qp,1,1))*wGradBF(cell,node,qp,0) + 0.5*(Ugrad(cell,qp,0,1) + Ugrad(cell,qp,1,0))*wGradBF(cell,node,qp,1)) + force(cell,qp,0)*wBF(cell,node,qp); Residual(cell,node,1) += 2.0*muFELIX(cell,qp)*(0.5*(Ugrad(cell,qp,0,1) + Ugrad(cell,qp,1,0))*wGradBF(cell,node,qp,0) + (Ugrad(cell,qp,0,0) + 2.0*Ugrad(cell,qp,1,1))*wGradBF(cell,node,qp,1)) + force(cell,qp,1)*wBF(cell,node,qp); } } } } else if (eqn_type == POISSON) { //Laplace (Poisson) operator for (std::size_t cell=0; cell < workset.numCells; ++cell) { for (std::size_t node=0; node < numNodes; ++node) { for (std::size_t qp=0; qp < numQPs; ++qp) { Residual(cell,node,0) += Ugrad(cell,qp,0,0)*wGradBF(cell,node,qp,0) + Ugrad(cell,qp,0,1)*wGradBF(cell,node,qp,1) + force(cell,qp,0)*wBF(cell,node,qp); } } } } } }