Nektar++
|
#include <PreconditionerBlock.h>
Static Public Member Functions | |
static PreconditionerSharedPtr | create (const boost::shared_ptr< GlobalLinSys > &plinsys, const boost::shared_ptr< AssemblyMap > &pLocToGloMap) |
Creates an instance of this class. More... | |
Static Public Attributes | |
static std::string | className |
Name of class. More... | |
Protected Attributes | |
const boost::weak_ptr < GlobalLinSys > | m_linsys |
PreconditionerType | m_preconType |
DNekBlkMatSharedPtr | m_blkMat |
boost::shared_ptr< AssemblyMap > | m_locToGloMap |
Protected Attributes inherited from Nektar::MultiRegions::Preconditioner | |
const boost::weak_ptr < GlobalLinSys > | m_linsys |
PreconditionerType | m_preconType |
DNekMatSharedPtr | m_preconditioner |
boost::shared_ptr< AssemblyMap > | m_locToGloMap |
LibUtilities::CommSharedPtr | m_comm |
Private Member Functions | |
void | BlockPreconditionerCG (void) |
Construct a block preconditioner from for the continuous Galerkin system. More... | |
void | BlockPreconditionerHDG (void) |
Construct a block preconditioner for the hybridized discontinuous Galerkin system. More... | |
virtual void | v_InitObject () |
virtual void | v_DoPreconditioner (const Array< OneD, NekDouble > &pInput, Array< OneD, NekDouble > &pOutput) |
Apply preconditioner to pInput and store the result in pOutput . More... | |
virtual void | v_BuildPreconditioner () |
Additional Inherited Members | |
Protected Member Functions inherited from Nektar::MultiRegions::Preconditioner | |
virtual DNekScalMatSharedPtr | v_TransformedSchurCompl (int offset, const boost::shared_ptr< DNekScalMat > &loc_mat) |
Get block elemental transposed transformation matrix . More... | |
Definition at line 52 of file PreconditionerBlock.h.
Nektar::MultiRegions::PreconditionerBlock::PreconditionerBlock | ( | const boost::shared_ptr< GlobalLinSys > & | plinsys, |
const AssemblyMapSharedPtr & | pLocToGloMap | ||
) |
Definition at line 67 of file PreconditionerBlock.cpp.
|
inlinevirtual |
Definition at line 75 of file PreconditionerBlock.h.
Construct a block preconditioner from for the continuous Galerkin system.
The preconditioner is defined as:
where is the local Schur complement matrix for each element and the subscript denotes the portion of the Schur complement associated with the vertex, edge and face blocks respectively.
Definition at line 116 of file PreconditionerBlock.cpp.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), ASSERTL1, Nektar::MultiRegions::DeterminePeriodicEdgeOrientId(), Nektar::MultiRegions::DeterminePeriodicFaceOrient(), Nektar::eDIAGONAL, Gs::Gather(), Gs::gs_add, Gs::Init(), Nektar::iterator, m_blkMat, Nektar::MultiRegions::Preconditioner::m_comm, m_linsys, m_locToGloMap, Nektar::LibUtilities::ReduceMax, sign, and Vmath::Vadd().
Referenced by v_BuildPreconditioner().
Construct a block preconditioner for the hybridized discontinuous Galerkin system.
This system is built in a similar fashion to its continuous variant found in PreconditionerBlock::BlockPreconditionerCG. In this setting however, the matrix is constructed as:
where each matrix is the Schur complement system restricted to a single face of the trace system.
Definition at line 543 of file PreconditionerBlock.cpp.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr(), Nektar::eDIAGONAL, Gs::Gather(), Gs::gs_add, Gs::Init(), m_blkMat, Nektar::MultiRegions::Preconditioner::m_comm, m_linsys, m_locToGloMap, and Nektar::LibUtilities::ReduceMax.
Referenced by v_BuildPreconditioner().
|
inlinestatic |
Creates an instance of this class.
Definition at line 56 of file PreconditionerBlock.h.
References Nektar::MemoryManager< DataType >::AllocateSharedPtr().
|
privatevirtual |
Reimplemented from Nektar::MultiRegions::Preconditioner.
Definition at line 85 of file PreconditionerBlock.cpp.
References BlockPreconditionerCG(), BlockPreconditionerHDG(), Nektar::StdRegions::eHybridDGHelmBndLam, Nektar::MultiRegions::GlobalMatrixKey::GetMatrixType(), and m_linsys.
|
privatevirtual |
Apply preconditioner to pInput
and store the result in pOutput
.
Reimplemented from Nektar::MultiRegions::Preconditioner.
Definition at line 700 of file PreconditionerBlock.cpp.
References Nektar::eWrapper, and m_locToGloMap.
|
privatevirtual |
Reimplemented from Nektar::MultiRegions::Preconditioner.
Definition at line 77 of file PreconditionerBlock.cpp.
References ASSERTL0, Nektar::MultiRegions::eIterativeStaticCond, Nektar::MultiRegions::ePETScStaticCond, and m_locToGloMap.
|
static |
Name of class.
Registers the class with the Factory.
Definition at line 68 of file PreconditionerBlock.h.
|
protected |
Definition at line 80 of file PreconditionerBlock.h.
Referenced by BlockPreconditionerCG(), and BlockPreconditionerHDG().
|
protected |
Definition at line 78 of file PreconditionerBlock.h.
Referenced by BlockPreconditionerCG(), BlockPreconditionerHDG(), and v_BuildPreconditioner().
|
protected |
Definition at line 81 of file PreconditionerBlock.h.
Referenced by BlockPreconditionerCG(), BlockPreconditionerHDG(), v_DoPreconditioner(), and v_InitObject().
|
protected |
Definition at line 79 of file PreconditionerBlock.h.