GRINS-0.6.0
elastic_membrane.h
Go to the documentation of this file.
1 //-----------------------------------------------------------------------bl-
2 //--------------------------------------------------------------------------
3 //
4 // GRINS - General Reacting Incompressible Navier-Stokes
5 //
6 // Copyright (C) 2014-2015 Paul T. Bauman, Roy H. Stogner
7 // Copyright (C) 2010-2013 The PECOS Development Team
8 //
9 // This library is free software; you can redistribute it and/or
10 // modify it under the terms of the Version 2.1 GNU Lesser General
11 // Public License as published by the Free Software Foundation.
12 //
13 // This library is distributed in the hope that it will be useful,
14 // but WITHOUT ANY WARRANTY; without even the implied warranty of
15 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 // Lesser General Public License for more details.
17 //
18 // You should have received a copy of the GNU Lesser General Public
19 // License along with this library; if not, write to the Free Software
20 // Foundation, Inc. 51 Franklin Street, Fifth Floor,
21 // Boston, MA 02110-1301 USA
22 //
23 //-----------------------------------------------------------------------el-
24 
25 #ifndef GRINS_ELASTIC_MEMBRANE_H
26 #define GRINS_ELASTIC_MEMBRANE_H
27 
28 //GRINS
30 #include "libmesh/fe_base.h"
31 
32 namespace GRINS
33 {
34  template<typename StressStrainLaw>
36  {
37  public:
38 
39  ElasticMembrane( const GRINS::PhysicsName& physics_name, const GetPot& input,
40  bool is_compressible );
41 
42  virtual ~ElasticMembrane();
43 
44  virtual void init_variables( libMesh::FEMSystem* system );
45 
47  virtual void register_postprocessing_vars( const GetPot& input,
49 
51  virtual void element_time_derivative( bool compute_jacobian,
52  AssemblyContext& context,
53  CachedValues& cache );
54 
55  virtual void side_time_derivative( bool compute_jacobian,
56  AssemblyContext& context,
57  CachedValues& cache );
58 
59  virtual void element_constraint( bool compute_jacobian,
60  AssemblyContext& context,
61  CachedValues& cache );
62 
63  virtual void mass_residual( bool compute_jacobian,
64  AssemblyContext& context,
65  CachedValues& cache );
66 
68  virtual void compute_postprocessed_quantity( unsigned int quantity_index,
69  const AssemblyContext& context,
70  const libMesh::Point& point,
71  libMesh::Real& value );
72 
73  private:
74 
76 
78  libMesh::AutoPtr<libMesh::FEGenericBase<libMesh::Real> > build_new_fe( const libMesh::Elem& elem,
79  const libMesh::FEGenericBase<libMesh::Real>* fe,
80  const libMesh::Point p );
81 
82  void compute_metric_tensors( unsigned int qp,
83  const libMesh::FEBase& elem,
84  const AssemblyContext& context,
85  const libMesh::Gradient& grad_u,
86  const libMesh::Gradient& grad_v,
87  const libMesh::Gradient& grad_w,
92  libMesh::Real& lambda_sq);
93 
95 
96  libMesh::Real _h0;
97 
99 
102 
104  std::vector<unsigned int> _stress_indices;
105 
107  unsigned int _stress_zz_index;
108 
110  std::vector<unsigned int> _strain_indices;
111 
112  };
113 
114 } // end namespace GRINS
115 
116 #endif // GRINS_ELASTIC_MEMBRANE_H
unsigned int VariableIndex
More descriptive name of the type used for variable indices.
Definition: var_typedefs.h:40
unsigned int _stress_zz_index
Index from registering sigma_zz for postprocessing. Mainly for sanity checking.
virtual void mass_residual(bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
Mass matrix part(s) for element interiors. All boundary terms lie within the time_derivative part...
std::vector< unsigned int > _stress_indices
Index from registering this quantity for postprocessing. Each component will have it's own index...
void compute_metric_tensors(unsigned int qp, const libMesh::FEBase &elem, const AssemblyContext &context, const libMesh::Gradient &grad_u, const libMesh::Gradient &grad_v, const libMesh::Gradient &grad_w, libMesh::TensorValue< libMesh::Real > &a_cov, libMesh::TensorValue< libMesh::Real > &a_contra, libMesh::TensorValue< libMesh::Real > &A_cov, libMesh::TensorValue< libMesh::Real > &A_contra, libMesh::Real &lambda_sq)
virtual void element_constraint(bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
Constraint part(s) of physics for element interiors.
GRINS namespace.
std::vector< unsigned int > _strain_indices
Index from registering this quantity for postprocessing. Each component will have it's own index...
virtual void element_time_derivative(bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
Time dependent part(s) of physics for element interiors.
virtual void register_postprocessing_vars(const GetPot &input, PostProcessedQuantities< libMesh::Real > &postprocessing)
Register postprocessing variables for ElasticMembrane.
std::string PhysicsName
virtual void compute_postprocessed_quantity(unsigned int quantity_index, const AssemblyContext &context, const libMesh::Point &point, libMesh::Real &value)
Compute the registered postprocessed quantities.
virtual void init_variables(libMesh::FEMSystem *system)
Initialize variables for this physics.
libMesh::AutoPtr< libMesh::FEGenericBase< libMesh::Real > > build_new_fe(const libMesh::Elem &elem, const libMesh::FEGenericBase< libMesh::Real > *fe, const libMesh::Point p)
StressStrainLaw _stress_strain_law
virtual void side_time_derivative(bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
Time dependent part(s) of physics for boundaries of elements on the domain boundary.
VariableIndex _lambda_sq_var
Variable index for lambda_sq variable.

Generated on Mon Jun 22 2015 21:32:20 for GRINS-0.6.0 by  doxygen 1.8.9.1