36 #ifndef NEKTAR_LIB_MULTIREGIONS_PRECONDITIONER_H
37 #define NEKTAR_LIB_MULTIREGIONS_PRECONDITIONER_H
47 #include <boost/shared_ptr.hpp>
51 namespace MultiRegions
62 const boost::shared_ptr<GlobalLinSys>&,
70 const boost::shared_ptr<GlobalLinSys> &plinsys,
71 const AssemblyMapSharedPtr &pLocToGloMap);
131 int offset,
const boost::shared_ptr<DNekScalMat > &loc_mat);
141 int offset,
const boost::shared_ptr<DNekScalMat > &loc_mat);
199 int offset,
const boost::shared_ptr<DNekScalMat > &loc_mat)
static std::string lookupIds[]
LibUtilities::CommSharedPtr m_comm
boost::shared_ptr< AssemblyMap > m_locToGloMap
virtual void v_DoMultiplybyInverseTransposedTransformationMatrix(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput)
Multiply by the block transposed inverse transformation matrix.
static Array< OneD, NekDouble > NullNekDouble1DArray
boost::shared_ptr< AssemblyMap > AssemblyMapSharedPtr
void DoMultiplybyInverseTransformationMatrix(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput)
const DNekScalBlkMatSharedPtr & GetBlockTransformationMatrix() const
const DNekScalBlkMatSharedPtr & GetBlockCMatrix() const
Preconditioner(const boost::shared_ptr< GlobalLinSys > &plinsys, const AssemblyMapSharedPtr &pLocToGloMap)
virtual void v_DoPreconditioner(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput)
Apply a preconditioner to the conjugate gradient method.
LibUtilities::NekFactory< std::string, Preconditioner, const boost::shared_ptr< GlobalLinSys > &, const boost::shared_ptr< AssemblyMap > & > PreconFactory
#define MULTI_REGIONS_EXPORT
const DNekScalBlkMatSharedPtr & GetBlockSchurCompl() const
PreconFactory & GetPreconFactory()
boost::shared_ptr< Preconditioner > PreconditionerSharedPtr
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...
boost::shared_ptr< DNekMat > DNekMatSharedPtr
virtual void v_DoMultiplybyInverseTransformationMatrix(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput)
Multiply by the block inverse transformation matrix.
boost::shared_ptr< DNekScalMat > DNekScalMatSharedPtr
DNekMatSharedPtr m_preconditioner
const boost::weak_ptr< GlobalLinSys > m_linsys
void DoMultiplybyInverseTransposedTransformationMatrix(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput)
boost::shared_ptr< Comm > CommSharedPtr
Pointer to a Communicator object.
void DoTransformFromLowEnergy(Array< OneD, NekDouble > &pInOut)
static PreconditionerSharedPtr NullPreconditionerSharedPtr
virtual void v_DoTransformFromLowEnergy(Array< OneD, NekDouble > &pInput)
Transform from low energy basis to orignal basis.
Array< OneD, NekDouble > AssembleStaticCondGlobalDiagonals()
Performs global assembly of diagonal entries to global Schur complement matrix.
void DoPreconditioner(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput)
boost::shared_ptr< DNekScalBlkMat > DNekScalBlkMatSharedPtr
virtual DNekScalMatSharedPtr v_TransformedSchurCompl(int offset, const boost::shared_ptr< DNekScalMat > &loc_mat)
Get block elemental transposed transformation matrix .
virtual void v_DoTransformToLowEnergy(Array< OneD, NekDouble > &pInOut, int offset)
Transform from original basis to low energy basis.
void DoPreconditionerWithNonVertOutput(const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput, const Array< OneD, NekDouble > &pNonVertOutput, Array< OneD, NekDouble > &pVertForce=NullNekDouble1DArray)
void DoTransformToLowEnergy(Array< OneD, NekDouble > &pInOut, int offset)
void BuildPreconditioner()
virtual void v_BuildPreconditioner()
void NullPreconditioner(void)
const DNekScalBlkMatSharedPtr & GetBlockInvDMatrix() const
DNekScalMatSharedPtr TransformedSchurCompl(int offset, const boost::shared_ptr< DNekScalMat > &loc_mat)
const DNekScalBlkMatSharedPtr & GetBlockTransformedSchurCompl() const
virtual ~Preconditioner()
virtual void v_InitObject()
const DNekScalBlkMatSharedPtr & GetBlockTransposedTransformationMatrix() const
PreconditionerType m_preconType
Provides a generic Factory class.