libMesh
Loading...
Searching...
No Matches
poisson.h
Go to the documentation of this file.
1#include "libmesh/enum_fe_family.h"
2#include "libmesh/fem_system.h"
3#include "libmesh/qoi_set.h"
4#include "libmesh/system.h"
5
6// Bring in everything from the libMesh namespace
7using namespace libMesh;
8
9// FEMSystem, TimeSolver and NewtonSolver will handle most tasks,
10// but we must specify element residuals
12{
13public:
15 const std::string & name_in,
16 const unsigned int number_in)
17 : FEMSystem(es, name_in, number_in),
18 _fe_family("LAGRANGE"), _fe_order(2),
19 _analytic_jacobians(true) { this->init_qois(1); computed_QoI[0] = 0.0; }
20
21 std::string & fe_family() { return _fe_family; }
22 unsigned int & fe_order() { return _fe_order; }
24
25 // Postprocessing function which we are going to override for this application
26
27 virtual void postprocess(void);
28
29 Number & get_QoI_value(std::string type, unsigned int QoI_index)
30 {
31 if (type == "exact")
32 {
33 return exact_QoI[QoI_index];
34 }
35 else
36 {
37 return computed_QoI[QoI_index];
38 }
39 }
40
41protected:
42 // System initialization
43 virtual void init_data ();
44
45 // Context initialization
46 virtual void init_context (DiffContext & context);
47
48 // Element residual and jacobian calculations
49 // Time dependent parts
50 virtual bool element_time_derivative (bool request_jacobian,
51 DiffContext & context);
52
53 // Overloading the postprocess function
54
55 virtual void element_postprocess(DiffContext & context);
56
57 // Forcing function coefficient
59
60 // Indices for each variable
61 unsigned int T_var;
62
63 // Variables to hold the computed QoIs
64
66
67 // Variables to read in the exact QoIs from poisson.in
68
70
71 // The FE type to use
72 std::string _fe_family;
73 unsigned int _fe_order;
74
75 // Calculate Jacobians analytically or not?
77};
bool _analytic_jacobians
Definition poisson.h:76
unsigned int _fe_order
Definition poisson.h:73
Number exact_QoI[1]
Definition poisson.h:69
bool & analytic_jacobians()
Definition poisson.h:23
virtual void init_context(DiffContext &context)
Definition poisson.C:91
unsigned int & fe_order()
Definition poisson.h:22
virtual void postprocess(void)
Runs a postprocessing loop over all elements, and if postprocess_sides is true over all sides.
Definition poisson.C:182
virtual bool element_time_derivative(bool request_jacobian, DiffContext &context)
Adds the time derivative contribution on elem to elem_residual.
Definition poisson.C:117
std::string _fe_family
Definition poisson.h:72
PoissonSystem(EquationSystems &es, const std::string &name_in, const unsigned int number_in)
Definition poisson.h:14
unsigned int T_var
Definition poisson.h:61
virtual void element_postprocess(DiffContext &context)
Does any work that needs to be done on elem in a postprocessing loop.
virtual void init_data()
Initializes the member data fields associated with the system, so that, e.g., assemble() may be used.
Definition poisson.C:58
std::string & fe_family()
Definition poisson.h:21
Number & get_QoI_value(std::string type, unsigned int QoI_index)
Definition poisson.h:29
Number computed_QoI[1]
Definition poisson.h:65
This class provides all data required for a physics package (e.g.
This is the EquationSystems class.
This class provides a specific system class.
Definition fem_system.h:55
void init_qois(unsigned int n_qois)
Accessors for qoi and qoi_error_estimates vectors.
Definition system.C:2169
The libMesh namespace provides an interface to certain functionality in the library.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real