libMesh
transient_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_TRANSIENT_SYSTEM_H
21 #define LIBMESH_TRANSIENT_SYSTEM_H
22 
23 // Local Includes
24 #include "libmesh/system.h"
25 #include "libmesh/libmesh_config.h"
26 
27 namespace libMesh
28 {
29 
30 // Forward declarations
31 class LinearImplicitSystem;
32 class NonlinearImplicitSystem;
33 class ExplicitSystem;
34 #ifdef LIBMESH_HAVE_SLEPC
35 class EigenSystem;
36 #endif
37 
50 template <class Base>
51 class TransientSystem : public Base
52 {
53 public:
54 
60  const std::string & name,
61  const unsigned int number);
62 
66  virtual ~TransientSystem ();
67 
72 
76  sys_type & system () { return *this; }
77 
82  virtual void clear () libmesh_override;
83 
88  virtual void reinit () libmesh_override;
89 
95  virtual std::string system_type () const libmesh_override;
96 
97 
98  //-----------------------------------------------------------------
99  // access to the solution data fields
100 
105  Number old_solution (const dof_id_type global_dof_number) const;
106 
111  Number older_solution (const dof_id_type global_dof_number) const;
112 
120 
128 
129 
130 protected:
131 
137  virtual void re_update () libmesh_override;
138 
139 private:
140 
144  virtual void add_old_vectors ();
145 };
146 
147 
148 
149 // -----------------------------------------------------------
150 // Useful typedefs
156 #ifdef LIBMESH_HAVE_SLEPC
158 #endif
159 
160 
161 
162 // ------------------------------------------------------------
163 // TransientSystem inline methods
164 template <class Base>
165 inline
167 {
168  std::string type = "Transient";
169  type += Base::system_type ();
170 
171  return type;
172 }
173 
174 
175 
176 } // namespace libMesh
177 
178 
179 
180 
181 #endif // LIBMESH_TRANSIENT_SYSTEM_H
std::string name(const ElemQuality q)
This function returns a string containing some name for q.
Definition: elem_quality.C:39
This is the EquationSystems class.
Number older_solution(const dof_id_type global_dof_number) const
TransientSystem< Base > sys_type
The type of system.
UniquePtr< NumericVector< Number > > old_local_solution
All the values I need to compute my contribution to the simulation at hand.
TransientSystem< EigenSystem > TransientEigenSystem
virtual void add_old_vectors()
Helper function for (re-)adding old and older solution vectors.
This class provides a specific system class.
virtual ~TransientSystem()
Destructor.
virtual void re_update() libmesh_override
Re-update the local values when the mesh has changed.
This class provides a specific system class.
virtual void reinit() libmesh_override
Reinitializes the member data fields associated with the system, so that, e.g., assemble() may be use...
The libMesh namespace provides an interface to certain functionality in the library.
TransientSystem(EquationSystems &es, const std::string &name, const unsigned int number)
Constructor.
std::unique_ptr< T > UniquePtr
Definition: auto_ptr.h:46
This is the base class for classes which contain information related to any physical process that mig...
Definition: system.h:76
This class provides a specific system class.
UniquePtr< NumericVector< Number > > older_local_solution
All the values I need to compute my contribution to the simulation at hand.
virtual void clear() libmesh_override
Clear all the data structures associated with the system.
Number old_solution(const dof_id_type global_dof_number) const
virtual std::string system_type() const libmesh_override
The ExplicitSystem provides only "right hand side" storage, which should be sufficient for solving mo...
uint8_t dof_id_type
Definition: id_types.h:64