DFT-FE 1.1.0-pre
Density Functional Theory With Finite-Elements
Loading...
Searching...
No Matches
dftfe::dealiiLinearSolverProblem Class Referenceabstract

Abstract class for linear solve problems to be used with the dealiiLinearSolver interface. More...

#include <dealiiLinearSolverProblem.h>

Inheritance diagram for dftfe::dealiiLinearSolverProblem:
dftfe::kerkerSolverProblem< FEOrderElectro > dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >

Public Types

typedef dealii::types::global_dof_index size_type
 typedef declaration needed by dealii
 

Public Member Functions

 dealiiLinearSolverProblem ()
 Constructor.
 
virtual distributedCPUVec< double > & getX ()=0
 get the reference to x field
 
virtual void vmult (distributedCPUVec< double > &Ax, distributedCPUVec< double > &x)=0
 Compute A matrix multipled by x.
 
virtual void computeRhs (distributedCPUVec< double > &rhs)=0
 Compute right hand side vector for the problem Ax = rhs.
 
virtual void precondition_Jacobi (distributedCPUVec< double > &dst, const distributedCPUVec< double > &src, const double omega) const =0
 Jacobi preconditioning function.
 
virtual void distributeX ()=0
 distribute x to the constrained nodes.
 
virtual void subscribe (std::atomic< bool > *const validity, const std::string &identifier="") const =0
 
virtual void unsubscribe (std::atomic< bool > *const validity, const std::string &identifier="") const =0
 
virtual bool operator!= (double val) const =0
 function needed by dealii to mimic SparseMatrix
 

Detailed Description

Abstract class for linear solve problems to be used with the dealiiLinearSolver interface.

Author
Sambit Das

Member Typedef Documentation

◆ size_type

typedef dealii::types::global_dof_index dftfe::dealiiLinearSolverProblem::size_type

typedef declaration needed by dealii

Constructor & Destructor Documentation

◆ dealiiLinearSolverProblem()

dftfe::dealiiLinearSolverProblem::dealiiLinearSolverProblem ( )

Constructor.

Member Function Documentation

◆ computeRhs()

virtual void dftfe::dealiiLinearSolverProblem::computeRhs ( distributedCPUVec< double > & rhs)
pure virtual

Compute right hand side vector for the problem Ax = rhs.

Parameters
rhsvector for the right hand side values

Implemented in dftfe::kerkerSolverProblem< FEOrderElectro >, and dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >.

◆ distributeX()

virtual void dftfe::dealiiLinearSolverProblem::distributeX ( )
pure virtual

◆ getX()

virtual distributedCPUVec< double > & dftfe::dealiiLinearSolverProblem::getX ( )
pure virtual

get the reference to x field

Returns
reference to x field. Assumes x field data structure is already initialized

Implemented in dftfe::kerkerSolverProblem< FEOrderElectro >, and dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >.

◆ operator!=()

virtual bool dftfe::dealiiLinearSolverProblem::operator!= ( double val) const
pure virtual

function needed by dealii to mimic SparseMatrix

Implemented in dftfe::kerkerSolverProblem< FEOrderElectro >, and dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >.

◆ precondition_Jacobi()

virtual void dftfe::dealiiLinearSolverProblem::precondition_Jacobi ( distributedCPUVec< double > & dst,
const distributedCPUVec< double > & src,
const double omega ) const
pure virtual

◆ subscribe()

virtual void dftfe::dealiiLinearSolverProblem::subscribe ( std::atomic< bool > *const validity,
const std::string & identifier = "" ) const
pure virtual

function needed by dealii to mimic SparseMatrix for Jacobi preconditioning

Implemented in dftfe::kerkerSolverProblem< FEOrderElectro >, and dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >.

◆ unsubscribe()

virtual void dftfe::dealiiLinearSolverProblem::unsubscribe ( std::atomic< bool > *const validity,
const std::string & identifier = "" ) const
pure virtual

function needed by dealii to mimic SparseMatrix for Jacobi preconditioning

Implemented in dftfe::kerkerSolverProblem< FEOrderElectro >, and dftfe::poissonSolverProblem< FEOrder, FEOrderElectro >.

◆ vmult()

virtual void dftfe::dealiiLinearSolverProblem::vmult ( distributedCPUVec< double > & Ax,
distributedCPUVec< double > & x )
pure virtual

The documentation for this class was generated from the following file: