GEOS
LaplaceFEM.hpp
1 /*
2  * ------------------------------------------------------------------------------------------------------------
3  * SPDX-License-Identifier: LGPL-2.1-only
4  *
5  * Copyright (c) 2016-2024 Lawrence Livermore National Security LLC
6  * Copyright (c) 2018-2024 TotalEnergies
7  * Copyright (c) 2018-2024 The Board of Trustees of the Leland Stanford Junior University
8  * Copyright (c) 2023-2024 Chevron
9  * Copyright (c) 2019- GEOS/GEOSX Contributors
10  * All rights reserved
11  *
12  * See top level LICENSE, COPYRIGHT, CONTRIBUTORS, NOTICE, and ACKNOWLEDGEMENTS files for details.
13  * ------------------------------------------------------------------------------------------------------------
14  */
15 
16 #ifndef GEOS_PHYSICSSOLVERS_SIMPLEPDE_LAPLACE_FEM_HPP_
17 #define GEOS_PHYSICSSOLVERS_SIMPLEPDE_LAPLACE_FEM_HPP_
18 
19 #include "physicsSolvers/simplePDE/LaplaceBaseH1.hpp" // a base class shared by all Laplace solvers
20 
21 namespace geos
22 {
23 
24 // Like most physics solvers, the Laplace solver derives from a generic PhysicsSolverBase class.
25 // The base class is densely Doxygen-commented and worth a look if you have not done so already.
26 // Most important system assembly steps, linear and non-linear resolutions, and time-stepping mechanisms
27 // are implemented at the PhysicsSolverBase class level and can thus be used in Laplace without needing reimplementation.
28 
29 //START_SPHINX_INCLUDE_BEGINCLASS
30 class LaplaceFEM : public LaplaceBaseH1
31 {
32 public:
34  LaplaceFEM() = delete;
35 
38  LaplaceFEM( const string & name,
39  Group * const parent );
40 
43  static string catalogName() { return "LaplaceFEM"; }
47  string getCatalogName() const override { return catalogName(); }
48 
49 //END_SPHINX_INCLUDE_BEGINCLASS
50 // /**
51 // * @defgroup Solver Interface Functions
52 // *
53 // * These functions provide the primary interface that is required for derived classes
54 // */
55 // /**@{*/
56 
57 //START_SPHINX_INCLUDE_SOLVERINTERFACE
58 
59  virtual void setSparsityPattern( DomainPartition & domain,
60  DofManager & dofManager,
62  SparsityPattern< globalIndex > & pattern ) override;
63 
64  virtual void
65  assembleSystem( real64 const time,
66  real64 const dt,
67  DomainPartition & domain,
68  DofManager const & dofManager,
70  arrayView1d< real64 > const & localRhs ) override;
71 
72 //END_SPHINX_INCLUDE_SOLVERINTERFACE
73 
76 };
77 } /* namespace geos */
78 
79 #endif /* GEOS_PHYSICSSOLVERS_SIMPLEPDE_LAPLACE_FEM_HPP_ */
The DoFManager is responsible for allocating global dofs, constructing sparsity patterns,...
Definition: DofManager.hpp:45
Partition of the decomposed physical domain. It also manages the connexion information to its neighbo...
static string catalogName()
Definition: LaplaceFEM.hpp:43
string getCatalogName() const override
Definition: LaplaceFEM.hpp:47
virtual void setSparsityPattern(DomainPartition &domain, DofManager &dofManager, CRSMatrix< real64, globalIndex > &localMatrix, SparsityPattern< globalIndex > &pattern) override
Set the sparsity pattern of the linear system matrix.
LaplaceFEM(const string &name, Group *const parent)
LaplaceFEM()=delete
The default nullary constructor is disabled to avoid compiler auto-generation:
virtual void assembleSystem(real64 const time, real64 const dt, DomainPartition &domain, DofManager const &dofManager, CRSMatrixView< real64, globalIndex const > const &localMatrix, arrayView1d< real64 > const &localRhs) override
function to assemble the linear system matrix and rhs
ArrayView< T, 1 > arrayView1d
Alias for 1D array view.
Definition: DataTypes.hpp:179
LvArray::CRSMatrix< T, COL_INDEX, INDEX_TYPE, LvArray::ChaiBuffer > CRSMatrix
Alias for CRS Matrix class.
Definition: DataTypes.hpp:305
LvArray::SparsityPattern< COL_INDEX, INDEX_TYPE, LvArray::ChaiBuffer > SparsityPattern
Alias for Sparsity pattern class.
Definition: DataTypes.hpp:297
double real64
64-bit floating point type.
Definition: DataTypes.hpp:98
LvArray::CRSMatrixView< T, COL_INDEX, INDEX_TYPE const, LvArray::ChaiBuffer > CRSMatrixView
Alias for CRS Matrix View.
Definition: DataTypes.hpp:309