libMesh
explicit_system.h
Go to the documentation of this file.
1 // The libMesh Finite Element Library.
2 // Copyright (C) 2002-2017 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner
3 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either
7 // version 2.1 of the License, or (at your option) any later version.
8 
9 // This library is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 // Lesser General Public License for more details.
13 
14 // You should have received a copy of the GNU Lesser General Public
15 // License along with this library; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 
18 
19 
20 #ifndef LIBMESH_EXPLICIT_SYSTEM_H
21 #define LIBMESH_EXPLICIT_SYSTEM_H
22 
23 // Local Includes
24 #include "libmesh/system.h"
25 
26 namespace libMesh
27 {
28 
40 class ExplicitSystem : public System
41 {
42 public:
43 
49  const std::string & name,
50  const unsigned int number);
51 
56 
60  typedef System Parent;
61 
65  sys_type & system () { return *this; }
66 
71  virtual void clear () libmesh_override;
72 
77  virtual void reinit () libmesh_override;
78 
84  virtual void assemble_qoi (const QoISet & qoi_indices = QoISet()) libmesh_override;
85 
91  virtual void assemble_qoi_derivative (const QoISet & qoi_indices = QoISet(),
92  bool include_liftfunc = true,
93  bool apply_constraints = true) libmesh_override;
94 
98  virtual void solve () libmesh_override;
99 
104  virtual std::string system_type () const libmesh_override { return "Explicit"; }
105 
112 
113 
114 private:
115 
120  void add_system_rhs ();
121 };
122 
123 } // namespace libMesh
124 
125 #endif // LIBMESH_EXPLICIT_SYSTEM_H
ExplicitSystem sys_type
The type of system.
This is the EquationSystems class.
virtual void clear() libmesh_override
Clear all the data structures associated with the system.
System Parent
The type of the parent.
Data structure for specifying which Quantities of Interest should be calculated in an adjoint or a pa...
Definition: qoi_set.h:45
virtual void solve() libmesh_override
Assembles & solves the linear system Ax=b.
NumericVector< Number > * rhs
The system matrix.
void add_system_rhs()
Add the system right-hand-side vector to the _vectors data structure.
The libMesh namespace provides an interface to certain functionality in the library.
const std::string & name() const
Definition: system.h:1998
virtual void assemble_qoi_derivative(const QoISet &qoi_indices=QoISet(), bool include_liftfunc=true, bool apply_constraints=true) libmesh_override
Prepares adjoint_rhs for quantity of interest derivative assembly, then calls user qoi derivative fun...
This is the base class for classes which contain information related to any physical process that mig...
Definition: system.h:76
ExplicitSystem(EquationSystems &es, const std::string &name, const unsigned int number)
Constructor.
virtual std::string system_type() const libmesh_override
virtual void reinit() libmesh_override
Reinitializes the member data fields associated with the system, so that, e.g., assemble() may be use...
unsigned int number() const
Definition: system.h:2006
virtual void assemble_qoi(const QoISet &qoi_indices=QoISet()) libmesh_override
Prepares qoi for quantity of interest assembly, then calls user qoi function.
The ExplicitSystem provides only "right hand side" storage, which should be sufficient for solving mo...