26#ifndef dftefePoissonSolverDealiiMatrixFreeFE_h
27#define dftefePoissonSolverDealiiMatrixFreeFE_h
45 namespace electrostatics
68 template <
typename ValueTypeOperator,
69 typename ValueTypeOperand,
98 dim>> feBasisManagerField,
101 feBasisDataStorageStiffnessMatrix,
106 &feBasisDataStorageRhs,
120 dim>> feBasisManagerField,
123 feBasisDataStorageStiffnessMatrix,
126 feBasisDataStorageRhs,
136 dim>> feBasisManagerField,
147 dim>> feBasisManagerField,
154 solve(
const double absTolerance,
const unsigned int maxNumberIterations);
179 memorySpace> &> &inpRhs);
192 AX(
const dealii::MatrixFree<dim, double> & matrixFreeData,
195 const std::pair<unsigned int, unsigned int> &cell_range)
const;
198 CGsolve(
const double absTolerance,
199 const unsigned int maxNumberIterations,
200 bool distributeFlag);
205 FEBasisManager<ValueTypeOperand, ValueTypeOperator, memorySpace, dim>>
213 FEBasisManager<ValueTypeOperand, ValueTypeOperator, memorySpace, dim>>
217 std::shared_ptr<dealii::MatrixFree<dim, ValueTypeOperator>>
220 const dealii::AffineConstraints<ValueTypeOperand>
An abstract class to store and access data for a given basis, such as the basis function values on a ...
Definition: FEBasisDataStorage.h:54
An abstract class to encapsulate the partitioning of a finite element basis across multiple processor...
Definition: FEBasisManager.h:44
dealii::LinearAlgebra::distributed::Vector< T, dealii::MemorySpace::Host > distributedCPUVec
Definition: DealiiFEEvaluationWrapper.h:46
A derived class of linearAlgebra::LinearSolverFunction to encapsulate the Poisson partial differentia...
Definition: PoissonSolverDealiiMatrixFreeFE.h:73
const distributedCPUVec< ValueTypeOperand > & getRhs() const
Definition: PoissonSolverDealiiMatrixFreeFE.t.cpp:476
void solve(const double absTolerance, const unsigned int maxNumberIterations)
Definition: PoissonSolverDealiiMatrixFreeFE.t.cpp:504
linearAlgebra::PreconditionerType d_pcType
Definition: PoissonSolverDealiiMatrixFreeFE.h:207
std::map< std::string, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeOperator, memorySpace > > > d_feBasisDataStorageRhs
Definition: PoissonSolverDealiiMatrixFreeFE.h:232
void getSolution(linearAlgebra::MultiVector< ValueType, memorySpace > &solution)
Definition: PoissonSolverDealiiMatrixFreeFE.t.cpp:446
void reinit(std::shared_ptr< const basis::FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > > feBasisManagerField, const quadrature::QuadratureValuesContainer< ValueType, memorySpace > &inpRhs)
std::vector< dealii::Quadrature< dim > > d_dealiiQuadratureRuleVec
Definition: PoissonSolverDealiiMatrixFreeFE.h:237
void vmult(distributedCPUVec< double > &Ax, distributedCPUVec< double > &x)
Definition: PoissonSolverDealiiMatrixFreeFE.t.cpp:658
size_type d_feOrder
Definition: PoissonSolverDealiiMatrixFreeFE.h:225
std::shared_ptr< basis::FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > > d_feBasisManagerHomo
Definition: PoissonSolverDealiiMatrixFreeFE.h:214
const dealii::AffineConstraints< ValueTypeOperand > * d_dealiiAffineConstraintMatrix
Definition: PoissonSolverDealiiMatrixFreeFE.h:221
utils::ConditionalOStream pcout
Definition: PoissonSolverDealiiMatrixFreeFE.h:240
const distributedCPUVec< ValueType > & getInitialGuess() const
Definition: PoissonSolverDealiiMatrixFreeFE.t.cpp:491
void computeRhs(distributedCPUVec< double > &rhs, const std::map< std::string, const quadrature::QuadratureValuesContainer< linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand >, memorySpace > & > &inpRhs)
Definition: PoissonSolverDealiiMatrixFreeFE.t.cpp:680
std::shared_ptr< dealii::MatrixFree< dim, ValueTypeOperator > > d_dealiiMatrixFree
Definition: PoissonSolverDealiiMatrixFreeFE.h:218
std::map< std::string, unsigned int > d_num1DQuadPointsRhs
Definition: PoissonSolverDealiiMatrixFreeFE.h:224
void computeDiagonalA()
Definition: PoissonSolverDealiiMatrixFreeFE.t.cpp:572
std::shared_ptr< const basis::FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > > d_feBasisManagerField
Definition: PoissonSolverDealiiMatrixFreeFE.h:206
void CGsolve(const double absTolerance, const unsigned int maxNumberIterations, bool distributeFlag)
Definition: PoissonSolverDealiiMatrixFreeFE.t.cpp:863
distributedCPUVec< ValueTypeOperator > d_diagonalA
Definition: PoissonSolverDealiiMatrixFreeFE.h:216
distributedCPUVec< ValueTypeOperator > d_initial
Definition: PoissonSolverDealiiMatrixFreeFE.h:216
void reinit(std::shared_ptr< const basis::FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > > feBasisManagerField, const std::map< std::string, const quadrature::QuadratureValuesContainer< ValueType, memorySpace > & > &inpRhs)
Definition: PoissonSolverDealiiMatrixFreeFE.t.cpp:322
unsigned int d_num1DQuadPointsStiffnessMatrix
Definition: PoissonSolverDealiiMatrixFreeFE.h:223
const dealii::AffineConstraints< ValueTypeOperand > * d_constraintsInfo
Definition: PoissonSolverDealiiMatrixFreeFE.h:222
void precondition_Jacobi(distributedCPUVec< double > &dst, const distributedCPUVec< double > &src) const
Definition: PoissonSolverDealiiMatrixFreeFE.t.cpp:638
utils::Profiler d_p
Definition: PoissonSolverDealiiMatrixFreeFE.h:208
const utils::mpi::MPIComm & getMPIComm() const
Definition: PoissonSolverDealiiMatrixFreeFE.t.cpp:848
distributedCPUVec< ValueTypeOperator > d_x
Definition: PoissonSolverDealiiMatrixFreeFE.h:216
void AX(const dealii::MatrixFree< dim, double > &matrixFreeData, distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const std::pair< unsigned int, unsigned int > &cell_range) const
Definition: PoissonSolverDealiiMatrixFreeFE.t.cpp:522
dealii::MappingQ1< dim, dim > d_mappingDealii
Definition: PoissonSolverDealiiMatrixFreeFE.h:238
basis::FEEvaluationWrapperBase::distributedCPUVec< T > distributedCPUVec
define ValueType as the superior (bigger set) of the ValueTypeOperator and ValueTypeOperand (e....
Definition: PoissonSolverDealiiMatrixFreeFE.h:84
~PoissonSolverDealiiMatrixFreeFE()=default
std::map< dealii::CellId, unsigned int > d_cellIdToCellIndexMap
Definition: PoissonSolverDealiiMatrixFreeFE.h:235
distributedCPUVec< ValueTypeOperator > d_rhs
Definition: PoissonSolverDealiiMatrixFreeFE.h:216
unsigned int d_matrixFreeQuadCompStiffnessMatrix
Definition: PoissonSolverDealiiMatrixFreeFE.h:234
PoissonSolverDealiiMatrixFreeFE(std::shared_ptr< const basis::FEBasisManager< ValueTypeOperand, ValueTypeOperator, memorySpace, dim > > feBasisManagerField, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeOperator, memorySpace > > feBasisDataStorageStiffnessMatrix, std::shared_ptr< const basis::FEBasisDataStorage< ValueTypeOperator, memorySpace > > feBasisDataStorageRhs, const quadrature::QuadratureValuesContainer< ValueType, memorySpace > &inpRhs, const linearAlgebra::PreconditionerType pcType)
This constructor creates an instance of a base LinearSolverFunction called PoissonSolverDealiiMatrixF...
std::shared_ptr< const dealii::DoFHandler< dim > > d_dealiiDofHandler
Definition: PoissonSolverDealiiMatrixFreeFE.h:219
unsigned int d_dofHandlerIndex
Definition: PoissonSolverDealiiMatrixFreeFE.h:226
linearAlgebra::blasLapack::scalar_type< ValueTypeOperator, ValueTypeOperand > ValueType
Definition: PoissonSolverDealiiMatrixFreeFE.h:88
size_type d_numComponents
Definition: PoissonSolverDealiiMatrixFreeFE.h:202
void setSolution(const distributedCPUVec< ValueType > &x)
Definition: PoissonSolverDealiiMatrixFreeFE.t.cpp:432
An class template to encapsulate a MultiVector. A MultiVector is a collection of vectors belonging t...
Definition: MultiVector.h:134
Definition: QuadratureValuesContainer.h:39
Provides an interface to print based on whether a certain condition is met or not....
Definition: ConditionalOStream.h:47
Definition: Profiler.h:44
blas::scalar_type< ValueType1, ValueType2 > scalar_type
Definition: BlasLapackTypedef.h:70
PreconditionerType
Definition: LinearAlgebraTypes.h:41
int MPIComm
Definition: MPITypes.h:83
MemorySpace
Definition: MemorySpaceType.h:37
dealii includes
Definition: AtomFieldDataSpherical.cpp:31
unsigned int size_type
Definition: TypeConfig.h:8