Commit a7024c88 authored by Sergey Yakovlev's avatar Sergey Yakovlev
Browse files

Added DisContField3D::v_GeneralMatrixOp (used when solving full linear system directly)


git-svn-id: https://gforge.sci.utah.edu/svn/nektar/trunk@4027 305cdda6-5ce1-45b3-a98d-dfc68c8b3305
parent 29c1828a
......@@ -921,6 +921,30 @@ namespace Nektar
out = (*InvHDGHelm)*F + (*HDGLamToU)*LocLambda;
}
/**
* @brief Calculates the result of the multiplication of a global matrix
* of type specified by @a mkey with a vector given by @a inarray.
*
* @param mkey Key representing desired matrix multiplication.
* @param inarray Input vector.
* @param outarray Resulting multiplication.
*/
void DisContField3D::v_GeneralMatrixOp(
const GlobalMatrixKey &gkey,
const Array<OneD,const NekDouble> &inarray,
Array<OneD, NekDouble> &outarray,
bool UseContCoeffs)
{
int LocBndCoeffs = m_traceMap->GetNumLocalBndCoeffs();
Array<OneD, NekDouble> loc_lambda(LocBndCoeffs);
DNekVec LocLambda(LocBndCoeffs,loc_lambda,eWrapper);
const DNekScalBlkMatSharedPtr& HDGHelm = GetBlockMatrix(gkey);
m_traceMap->GlobalToLocalBnd(inarray, loc_lambda);
LocLambda = (*HDGHelm) * LocLambda;
m_traceMap->AssembleBnd(loc_lambda,outarray);
}
void DisContField3D::v_GetBoundaryToElmtMap(Array<OneD,int> &ElmtID,
Array<OneD,int> &FaceID)
{
......
......@@ -156,6 +156,12 @@ namespace Nektar
const StdRegions::VarCoeffMap &varcoeff,
const Array<OneD, const NekDouble> &dirForcing);
virtual void v_GeneralMatrixOp(
const GlobalMatrixKey &gkey,
const Array<OneD,const NekDouble> &inarray,
Array<OneD, NekDouble> &outarray,
bool UseContCoeffs = false);
virtual void v_EvaluateBoundaryConditions(
const NekDouble time = 0.0,
const NekDouble x2_in = NekConstants::kNekUnsetDouble,
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment