35#ifndef NEKTAR_LIB_MULTIREGIONS_PRECONDITIONER_H
36#define NEKTAR_LIB_MULTIREGIONS_PRECONDITIONER_H
58 const std::shared_ptr<GlobalLinSys> &,
59 const std::shared_ptr<AssemblyMap> &>
67 const std::shared_ptr<GlobalLinSys> &plinsys,
77 const bool &IsLocal =
false);
117 int offset,
int bndoffset,
const std::shared_ptr<DNekScalMat> &loc_mat);
126 int offset,
int bndoffset,
const std::shared_ptr<DNekScalMat> &loc_mat);
132 const bool &isLocal =
false);
172 int offset,
int bndoffset,
const std::shared_ptr<DNekScalMat> &loc_mat)
#define MULTI_REGIONS_EXPORT
Provides a generic Factory class.
const DNekScalBlkMatSharedPtr & GetBlockTransformationMatrix() const
virtual void v_DoPreconditioner(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const bool &isLocal=false)
Apply a preconditioner to the conjugate gradient method.
void DoTransformCoeffsToLowEnergy(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput)
virtual void v_DoTransformBasisToLowEnergy(Array< OneD, NekDouble > &pInOut)
Transform from original basis to low energy basis.
void NullPreconditioner(void)
virtual ~Preconditioner()
const std::weak_ptr< GlobalLinSys > m_linsys
const DNekScalBlkMatSharedPtr & GetBlockTransformedSchurCompl() const
virtual void v_DoPreconditionerWithNonVertOutput(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const Array< OneD, NekDouble > &pNonVertOutput, Array< OneD, NekDouble > &pVertForce)
Apply a preconditioner to the conjugate gradient method with an output for non-vertex degrees of free...
const DNekScalBlkMatSharedPtr & GetBlockTransposedTransformationMatrix() const
DNekMatSharedPtr m_preconditioner
Array< OneD, NekDouble > AssembleStaticCondGlobalDiagonals()
Performs global assembly of diagonal entries to global Schur complement matrix.
void DoAssembleLoc(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const bool &ZeroDir)
Apply an assembly and scatter back to lcoal array.
std::weak_ptr< AssemblyMap > m_locToGloMap
virtual void v_DoTransformBasisFromLowEnergy(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput)
Multiply by the block transposed inverse transformation matrix.
void DoTransformBasisToLowEnergy(Array< OneD, NekDouble > &pInOut)
const DNekScalBlkMatSharedPtr & GetBlockCMatrix() const
void DoPreconditionerWithNonVertOutput(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const Array< OneD, NekDouble > &pNonVertOutput, Array< OneD, NekDouble > &pVertForce=NullNekDouble1DArray)
DNekScalMatSharedPtr TransformedSchurCompl(int offset, int bndoffset, const std::shared_ptr< DNekScalMat > &loc_mat)
Preconditioner(const std::shared_ptr< GlobalLinSys > &plinsys, const AssemblyMapSharedPtr &pLocToGloMap)
static std::string lookupIds[]
void DoTransformBasisFromLowEnergy(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput)
virtual void v_DoTransformCoeffsFromLowEnergy(Array< OneD, NekDouble > &pInOut)
Transform from low energy coeffs to orignal basis.
virtual DNekScalMatSharedPtr v_TransformedSchurCompl(int offset, int bndoffset, const std::shared_ptr< DNekScalMat > &loc_mat)
Get block elemental transposed transformation matrix .
void DoTransformCoeffsFromLowEnergy(Array< OneD, NekDouble > &pInOut)
virtual void v_BuildPreconditioner()
void BuildPreconditioner()
const DNekScalBlkMatSharedPtr & GetBlockSchurCompl() const
const DNekScalBlkMatSharedPtr & GetBlockInvDMatrix() const
void DoPreconditioner(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const bool &IsLocal=false)
virtual void v_InitObject()
virtual void v_DoTransformCoeffsToLowEnergy(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput)
Multiply by the block inverse transformation matrix.
static PreconditionerSharedPtr NullPreconditionerSharedPtr
LibUtilities::NekFactory< std::string, Preconditioner, const std::shared_ptr< GlobalLinSys > &, const std::shared_ptr< AssemblyMap > & > PreconFactory
std::shared_ptr< Preconditioner > PreconditionerSharedPtr
PreconFactory & GetPreconFactory()
std::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
std::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
std::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
static Array< OneD, NekDouble > NullNekDouble1DArray
std::shared_ptr< DNekMat > DNekMatSharedPtr