Exemple #1
0
void NSRm<EvalT, Traits>::
evaluateFields(typename Traits::EvalData workset)
{
  for (std::size_t cell=0; cell < workset.numCells; ++cell) {
    for (std::size_t qp=0; qp < numQPs; ++qp) {      
      for (std::size_t i=0; i < numDims; ++i) {
        if (workset.transientTerms && enableTransient) 
          Rm(cell,qp,i) = rho(cell,qp)*V_Dot(cell,qp,i);
        else
          Rm(cell,qp,i) = 0;
        if (!porousMedia) // Navier-Stokes
          Rm(cell,qp,i) += pGrad(cell,qp,i)+force(cell,qp,i);
        else              // Porous Media
          Rm(cell,qp,i) += phi(cell,qp)*pGrad(cell,qp,i)+phi(cell,qp)*force(cell,qp,i);
        if (porousMedia) { //permeability and Forchheimer terms 
         Rm(cell,qp,i) += -permTerm(cell,qp,i)+ForchTerm(cell,qp,i);
        }
        for (std::size_t j=0; j < numDims; ++j) {
          if (!porousMedia) // Navier-Stokes
            Rm(cell,qp,i) += rho(cell,qp)*V(cell,qp,j)*VGrad(cell,qp,i,j);
          else              // Porous Media 
            Rm(cell,qp,i) += rho(cell,qp)*V(cell,qp,j)*VGrad(cell,qp,i,j)/phi(cell,qp);
        }
      } 
    }
  }
}
void NSPermeabilityTerm<EvalT, Traits>::
evaluateFields(typename Traits::EvalData workset)
{
  for (std::size_t cell=0; cell < workset.numCells; ++cell) {
    for (std::size_t qp=0; qp < numQPs; ++qp) {      
      for (std::size_t i=0; i < numDims; ++i) {
          permTerm(cell,qp,i) = phi(cell,qp)*mu(cell,qp)*V(cell,qp,i)/K(cell,qp);
      } 
    }
  }
}