GRINS-0.6.0
elastic_cable.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_CABLE_H
26 #define GRINS_ELASTIC_CABLE_H
27 
28 
29 //GRINS
31 
32 //LIBMESH
33 #include "libmesh/fe_base.h"
34 
35 namespace GRINS
36 {
37  template<typename StressStrainLaw>
39  {
40  public:
41 
42  ElasticCable( const PhysicsName& physics_name, const GetPot& input,
43  bool lambda_sq_var );
44 
45  virtual ~ElasticCable();
46 
48  virtual void register_postprocessing_vars( const GetPot& input,
50 
52  virtual void element_time_derivative( bool compute_jacobian,
53  AssemblyContext& context,
54  CachedValues& cache );
55 
56  virtual void side_time_derivative( bool compute_jacobian,
57  AssemblyContext& context,
58  CachedValues& cache );
59 
60  virtual void mass_residual( bool compute_jacobian,
61  AssemblyContext& context,
62  CachedValues& cache );
63 
65  virtual void compute_postprocessed_quantity( unsigned int quantity_index,
66  const AssemblyContext& context,
67  const libMesh::Point& point,
68  libMesh::Real& value );
69 
70  private:
71 
72  ElasticCable();
73 
74  // This is straight up copied from libMesh. Should make this a friend or public.
75  libMesh::AutoPtr<libMesh::FEGenericBase<libMesh::Real> > build_new_fe( const libMesh::Elem& elem,
76  const libMesh::FEGenericBase<libMesh::Real>* fe,
77  const libMesh::Point p );
78 
79  void compute_metric_tensors( unsigned int qp,
80  const libMesh::FEBase& elem,
81  const AssemblyContext& context,
82  const libMesh::Gradient& grad_u,
83  const libMesh::Gradient& grad_v,
84  const libMesh::Gradient& grad_w,
89  libMesh::Real& lambda_sq);
90 
92 
93  libMesh::Real _A;
94 
96 
98  std::vector<unsigned int> _stress_indices;
99 
101  std::vector<unsigned int> _strain_indices;
102 
104  std::vector<unsigned int> _force_indices;
105 
106  };
107 
108 } // end namespace GRINS
109 
110 
111 #endif /* GRINS_ELASTIC_CABLE_H */
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)
std::vector< unsigned int > _force_indices
Index from registering this quantity. Each component will have it's own index.
virtual void compute_postprocessed_quantity(unsigned int quantity_index, const AssemblyContext &context, const libMesh::Point &point, libMesh::Real &value)
Compute the registered postprocessed quantities.
libMesh::Real _A
Definition: elastic_cable.h:93
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.
GRINS namespace.
virtual ~ElasticCable()
Definition: elastic_cable.C:72
virtual void register_postprocessing_vars(const GetPot &input, PostProcessedQuantities< libMesh::Real > &postprocessing)
Register postprocessing variables for ElasticCable.
Definition: elastic_cable.C:79
StressStrainLaw _stress_strain_law
Definition: elastic_cable.h:91
std::vector< unsigned int > _stress_indices
Index from registering this quantity. Each component will have it's own index.
Definition: elastic_cable.h:98
std::string PhysicsName
std::vector< unsigned int > _strain_indices
Index from registering this quantity. Each component will have it's own index.
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...
virtual void element_time_derivative(bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
Time dependent part(s) of physics for element interiors.
libMesh::AutoPtr< libMesh::FEGenericBase< libMesh::Real > > build_new_fe(const libMesh::Elem &elem, const libMesh::FEGenericBase< libMesh::Real > *fe, const libMesh::Point p)

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