GRINS-0.7.0
List of all members | Public Member Functions | Protected Attributes | Private Member Functions
GRINS::ElasticCableRayleighDamping< StressStrainLaw > Class Template Reference

#include <elastic_cable_rayleigh_damping.h>

Inheritance diagram for GRINS::ElasticCableRayleighDamping< StressStrainLaw >:
Inheritance graph
[legend]
Collaboration diagram for GRINS::ElasticCableRayleighDamping< StressStrainLaw >:
Collaboration graph
[legend]

Public Member Functions

 ElasticCableRayleighDamping (const PhysicsName &physics_name, const GetPot &input, bool is_compressible)
 
virtual ~ElasticCableRayleighDamping ()
 
virtual void damping_residual (bool compute_jacobian, AssemblyContext &context, CachedValues &)
 Time dependent part(s) of physics for element interiors. More...
 
- Public Member Functions inherited from GRINS::ElasticCableBase< StressStrainLaw >
 ElasticCableBase (const GRINS::PhysicsName &physics_name, const GetPot &input, bool is_compressible)
 
virtual ~ElasticCableBase ()
 
- Public Member Functions inherited from GRINS::ElasticCableAbstract
 ElasticCableAbstract (const GRINS::PhysicsName &physics_name, const GetPot &input)
 
virtual ~ElasticCableAbstract ()
 
virtual void init_context (AssemblyContext &context)
 Initialize context for added physics variables. More...
 
- Public Member Functions inherited from GRINS::SolidMechanicsAbstract
 SolidMechanicsAbstract (const GRINS::PhysicsName &physics_name, const GetPot &input)
 
virtual ~SolidMechanicsAbstract ()
 
virtual void init_variables (libMesh::FEMSystem *system)
 Initialize variables for this physics. More...
 
virtual void set_time_evolving_vars (libMesh::FEMSystem *system)
 Set which variables are time evolving. More...
 
- Public Member Functions inherited from GRINS::Physics
 Physics (const GRINS::PhysicsName &physics_name, const GetPot &input)
 
virtual ~Physics ()
 
virtual bool enabled_on_elem (const libMesh::Elem *elem)
 Find if current physics is active on supplied element. More...
 
void set_is_steady (bool is_steady)
 Sets whether this physics is to be solved with a steady solver or not. More...
 
bool is_steady () const
 Returns whether or not this physics is being solved with a steady solver. More...
 
virtual void auxiliary_init (MultiphysicsSystem &system)
 Any auxillary initialization a Physics class may need. More...
 
virtual void register_postprocessing_vars (const GetPot &input, PostProcessedQuantities< libMesh::Real > &postprocessing)
 Register name of postprocessed quantity with PostProcessedQuantities. More...
 
virtual void element_time_derivative (bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
 Time dependent part(s) of physics for element interiors. More...
 
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. More...
 
virtual void nonlocal_time_derivative (bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
 Time dependent part(s) of physics for scalar variables. More...
 
virtual void element_constraint (bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
 Constraint part(s) of physics for element interiors. More...
 
virtual void side_constraint (bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
 Constraint part(s) of physics for boundaries of elements on the domain boundary. More...
 
virtual void nonlocal_constraint (bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
 Constraint part(s) of physics for scalar variables. More...
 
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. More...
 
virtual void nonlocal_mass_residual (bool compute_jacobian, AssemblyContext &context, CachedValues &cache)
 Mass matrix part(s) for scalar variables. More...
 
void init_ics (libMesh::FEMSystem *system, libMesh::CompositeFunction< libMesh::Number > &all_ics)
 
virtual void compute_element_time_derivative_cache (const AssemblyContext &context, CachedValues &cache)
 
virtual void compute_side_time_derivative_cache (const AssemblyContext &context, CachedValues &cache)
 
virtual void compute_nonlocal_time_derivative_cache (const AssemblyContext &context, CachedValues &cache)
 
virtual void compute_element_constraint_cache (const AssemblyContext &context, CachedValues &cache)
 
virtual void compute_side_constraint_cache (const AssemblyContext &context, CachedValues &cache)
 
virtual void compute_nonlocal_constraint_cache (const AssemblyContext &context, CachedValues &cache)
 
virtual void compute_damping_residual_cache (const AssemblyContext &context, CachedValues &cache)
 
virtual void compute_mass_residual_cache (const AssemblyContext &context, CachedValues &cache)
 
virtual void compute_nonlocal_mass_residual_cache (const AssemblyContext &context, CachedValues &cache)
 
virtual void compute_postprocessed_quantity (unsigned int quantity_index, const AssemblyContext &context, const libMesh::Point &point, libMesh::Real &value)
 
ICHandlingBaseget_ic_handler ()
 
- Public Member Functions inherited from GRINS::ParameterUser
 ParameterUser (const std::string &user_name)
 
virtual ~ParameterUser ()
 
virtual void set_parameter (libMesh::Number &param_variable, const GetPot &input, const std::string &param_name, libMesh::Number param_default)
 Each subclass can simultaneously read a parameter value from. More...
 
virtual void set_parameter (libMesh::ParsedFunction< libMesh::Number, libMesh::Gradient > &func, const GetPot &input, const std::string &func_param_name, const std::string &param_default)
 Each subclass can simultaneously read a parsed function from. More...
 
virtual void set_parameter (libMesh::ParsedFEMFunction< libMesh::Number > &func, const GetPot &input, const std::string &func_param_name, const std::string &param_default)
 Each subclass can simultaneously read a parsed function from. More...
 
virtual void move_parameter (const libMesh::Number &old_parameter, libMesh::Number &new_parameter)
 When cloning an object, we need to update parameter pointers. More...
 
virtual void move_parameter (const libMesh::ParsedFunction< libMesh::Number, libMesh::Gradient > &old_func, libMesh::ParsedFunction< libMesh::Number, libMesh::Gradient > &new_func)
 When cloning an object, we need to update parameter pointers. More...
 
virtual void move_parameter (const libMesh::ParsedFEMFunction< libMesh::Number > &old_func, libMesh::ParsedFEMFunction< libMesh::Number > &new_func)
 When cloning an object, we need to update parameter pointers. More...
 
virtual void register_parameter (const std::string &param_name, libMesh::ParameterMultiAccessor< libMesh::Number > &param_pointer) const
 Each subclass will register its copy of an independent. More...
 

Protected Attributes

libMesh::Real _lambda_factor
 
libMesh::Real _mu_factor
 
- Protected Attributes inherited from GRINS::ElasticCableBase< StressStrainLaw >
StressStrainLaw _stress_strain_law
 
bool _is_compressible
 
- Protected Attributes inherited from GRINS::ElasticCableAbstract
libMesh::Real _A
 Cross-sectional area of the cable. More...
 
libMesh::Real _rho
 Cable density. More...
 
- Protected Attributes inherited from GRINS::SolidMechanicsAbstract
DisplacementFEVariables _disp_vars
 
- Protected Attributes inherited from GRINS::Physics
const PhysicsName _physics_name
 Name of the physics object. Used for reading physics specific inputs. More...
 
GRINS::ICHandlingBase_ic_handler
 
std::set< libMesh::subdomain_id_type > _enabled_subdomains
 Subdomains on which the current Physics class is enabled. More...
 

Private Member Functions

 ElasticCableRayleighDamping ()
 

Additional Inherited Members

- Static Public Member Functions inherited from GRINS::Physics
static void set_is_axisymmetric (bool is_axisymmetric)
 Set whether we should treat the problem as axisymmetric. More...
 
static bool is_axisymmetric ()
 
- Static Public Attributes inherited from GRINS::ParameterUser
static std::string zero_vector_function = std::string("{0}")
 A parseable function string with LIBMESH_DIM components, all 0. More...
 
- Protected Types inherited from GRINS::SolidMechanicsAbstract
typedef const libMesh::DenseSubVector< libMesh::Number > &(libMesh::DiffContext::* VarFuncType) (unsigned int) const
 
typedef void(libMesh::FEMContext::* InteriorFuncType) (unsigned int, unsigned int, libMesh::Real &) const
 
typedef libMesh::Real(libMesh::DiffContext::* VarDerivType) () const
 
- Protected Member Functions inherited from GRINS::ElasticCableBase< StressStrainLaw >
void mass_residual_impl (bool compute_jacobian, AssemblyContext &context, InteriorFuncType interior_solution, VarDerivType get_solution_deriv, libMesh::Real mu=1.0)
 Implementation of mass_residual. More...
 
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)
 
- Protected Member Functions inherited from GRINS::ElasticCableAbstract
const libMesh::FEGenericBase< libMesh::Real > * get_fe (const AssemblyContext &context)
 
- Protected Member Functions inherited from GRINS::Physics
libMesh::UniquePtr< libMesh::FEGenericBase< libMesh::Real > > build_new_fe (const libMesh::Elem *elem, const libMesh::FEGenericBase< libMesh::Real > *fe, const libMesh::Point p)
 
void parse_enabled_subdomains (const GetPot &input, const std::string &physics_name)
 
- Static Protected Attributes inherited from GRINS::Physics
static bool _is_steady = false
 Caches whether or not the solver that's being used is steady or not. More...
 
static bool _is_axisymmetric = false
 Caches whether we are solving an axisymmetric problem or not. More...
 

Detailed Description

template<typename StressStrainLaw>
class GRINS::ElasticCableRayleighDamping< StressStrainLaw >

Definition at line 33 of file elastic_cable_rayleigh_damping.h.

Constructor & Destructor Documentation

template<typename StressStrainLaw >
GRINS::ElasticCableRayleighDamping< StressStrainLaw >::ElasticCableRayleighDamping ( const PhysicsName physics_name,
const GetPot &  input,
bool  is_compressible 
)

Definition at line 39 of file elastic_cable_rayleigh_damping.C.

References GRINS::PhysicsNaming::elastic_cable(), GRINS::PhysicsNaming::elastic_cable_rayleigh_damping(), and GRINS::Physics::parse_enabled_subdomains().

42  : ElasticCableBase<StressStrainLaw>(physics_name,input,is_compressible),
43  _lambda_factor(input("Physics/"+PhysicsNaming::elastic_cable_rayleigh_damping()+"/lambda_factor",0.0)),
44  _mu_factor(input("Physics/"+PhysicsNaming::elastic_cable_rayleigh_damping()+"/mu_factor",0.0))
45  {
46  if( !input.have_variable("Physics/"+PhysicsNaming::elastic_cable_rayleigh_damping()+"/lambda_factor") )
47  libmesh_error_msg("ERROR: Couldn't find Physics/"+PhysicsNaming::elastic_cable_rayleigh_damping()+"/lambda_factor in input!");
48 
49  if( !input.have_variable("Physics/"+PhysicsNaming::elastic_cable_rayleigh_damping()+"/mu_factor") )
50  libmesh_error_msg("ERROR: Couldn't find Physics/"+PhysicsNaming::elastic_cable_rayleigh_damping()+"/mu_factor in input!");
51 
52 
53  // If the user specified enabled subdomains in this Physics section,
54  // that's an error; we're slave to ElasticCable.
55  if( input.have_variable("Physics/"+PhysicsNaming::elastic_cable_rayleigh_damping()+"/enabled_subdomains" ) )
56  libmesh_error_msg("ERROR: Cannot specify subdomains for "
58  +"! Must specify subdomains through "
60 
62  }
static PhysicsName elastic_cable_rayleigh_damping()
static PhysicsName elastic_cable()
void parse_enabled_subdomains(const GetPot &input, const std::string &physics_name)
Definition: physics.C:64
template<typename StressStrainLaw >
virtual GRINS::ElasticCableRayleighDamping< StressStrainLaw >::~ElasticCableRayleighDamping ( )
inlinevirtual

Definition at line 41 of file elastic_cable_rayleigh_damping.h.

41 {};
template<typename StressStrainLaw >
GRINS::ElasticCableRayleighDamping< StressStrainLaw >::ElasticCableRayleighDamping ( )
private

Member Function Documentation

template<typename StressStrainLaw >
void GRINS::ElasticCableRayleighDamping< StressStrainLaw >::damping_residual ( bool  compute_jacobian,
AssemblyContext context,
CachedValues  
)
virtual

Time dependent part(s) of physics for element interiors.

Reimplemented from GRINS::Physics.

Definition at line 65 of file elastic_cable_rayleigh_damping.C.

68  {
69  // First, do the "mass" contribution
70  this->mass_residual_impl(compute_jacobian,
71  context,
72  &libMesh::FEMContext::interior_rate,
73  &libMesh::DiffContext::get_elem_solution_rate_derivative,
74  _mu_factor);
75 
76  // Now do the stiffness contribution
77  const unsigned int n_u_dofs = context.get_dof_indices(this->_disp_vars.u()).size();
78 
79  const std::vector<libMesh::Real> &JxW =
80  this->get_fe(context)->get_JxW();
81 
82  // Residuals that we're populating
83  libMesh::DenseSubVector<libMesh::Number> &Fu = context.get_elem_residual(this->_disp_vars.u());
84  libMesh::DenseSubVector<libMesh::Number> &Fv = context.get_elem_residual(this->_disp_vars.v());
85  libMesh::DenseSubVector<libMesh::Number> &Fw = context.get_elem_residual(this->_disp_vars.w());
86 
87  //Grab the Jacobian matrix as submatrices
88  //libMesh::DenseMatrix<libMesh::Number> &K = context.get_elem_jacobian();
89  libMesh::DenseSubMatrix<libMesh::Number> &Kuu = context.get_elem_jacobian(this->_disp_vars.u(),this->_disp_vars.u());
90  libMesh::DenseSubMatrix<libMesh::Number> &Kuv = context.get_elem_jacobian(this->_disp_vars.u(),this->_disp_vars.v());
91  libMesh::DenseSubMatrix<libMesh::Number> &Kuw = context.get_elem_jacobian(this->_disp_vars.u(),this->_disp_vars.w());
92  libMesh::DenseSubMatrix<libMesh::Number> &Kvu = context.get_elem_jacobian(this->_disp_vars.v(),this->_disp_vars.u());
93  libMesh::DenseSubMatrix<libMesh::Number> &Kvv = context.get_elem_jacobian(this->_disp_vars.v(),this->_disp_vars.v());
94  libMesh::DenseSubMatrix<libMesh::Number> &Kvw = context.get_elem_jacobian(this->_disp_vars.v(),this->_disp_vars.w());
95  libMesh::DenseSubMatrix<libMesh::Number> &Kwu = context.get_elem_jacobian(this->_disp_vars.w(),this->_disp_vars.u());
96  libMesh::DenseSubMatrix<libMesh::Number> &Kwv = context.get_elem_jacobian(this->_disp_vars.w(),this->_disp_vars.v());
97  libMesh::DenseSubMatrix<libMesh::Number> &Kww = context.get_elem_jacobian(this->_disp_vars.w(),this->_disp_vars.w());
98 
99  unsigned int n_qpoints = context.get_element_qrule().n_points();
100 
101  // All shape function gradients are w.r.t. master element coordinates
102  const std::vector<std::vector<libMesh::Real> >& dphi_dxi = this->get_fe(context)->get_dphidxi();
103 
104  const libMesh::DenseSubVector<libMesh::Number>& u_coeffs = context.get_elem_solution( this->_disp_vars.u() );
105  const libMesh::DenseSubVector<libMesh::Number>& v_coeffs = context.get_elem_solution( this->_disp_vars.v() );
106  const libMesh::DenseSubVector<libMesh::Number>& w_coeffs = context.get_elem_solution( this->_disp_vars.w() );
107 
108  const libMesh::DenseSubVector<libMesh::Number>& dudt_coeffs = context.get_elem_solution_rate( this->_disp_vars.u() );
109  const libMesh::DenseSubVector<libMesh::Number>& dvdt_coeffs = context.get_elem_solution_rate( this->_disp_vars.v() );
110  const libMesh::DenseSubVector<libMesh::Number>& dwdt_coeffs = context.get_elem_solution_rate( this->_disp_vars.w() );
111 
112  // Need these to build up the covariant and contravariant metric tensors
113  const std::vector<libMesh::RealGradient>& dxdxi = this->get_fe(context)->get_dxyzdxi();
114 
115  const unsigned int dim = 1; // The cable dimension is always 1 for this physics
116 
117  for (unsigned int qp=0; qp != n_qpoints; qp++)
118  {
119  // Gradients are w.r.t. master element coordinates
120  libMesh::Gradient grad_u, grad_v, grad_w;
121  libMesh::Gradient dgradu_dt, dgradv_dt, dgradw_dt;
122 
123  for( unsigned int d = 0; d < n_u_dofs; d++ )
124  {
125  libMesh::RealGradient u_gradphi( dphi_dxi[d][qp] );
126  grad_u += u_coeffs(d)*u_gradphi;
127  grad_v += v_coeffs(d)*u_gradphi;
128  grad_w += w_coeffs(d)*u_gradphi;
129 
130  dgradu_dt += dudt_coeffs(d)*u_gradphi;
131  dgradv_dt += dvdt_coeffs(d)*u_gradphi;
132  dgradw_dt += dwdt_coeffs(d)*u_gradphi;
133  }
134 
135  libMesh::RealGradient grad_x( dxdxi[qp](0) );
136  libMesh::RealGradient grad_y( dxdxi[qp](1) );
137  libMesh::RealGradient grad_z( dxdxi[qp](2) );
138 
139  libMesh::TensorValue<libMesh::Real> a_cov, a_contra, A_cov, A_contra;
140  libMesh::Real lambda_sq = 0;
141 
142  this->compute_metric_tensors( qp, *(this->get_fe(context)), context,
143  grad_u, grad_v, grad_w,
144  a_cov, a_contra, A_cov, A_contra,
145  lambda_sq );
146 
147  // Compute stress tensor
149  ElasticityTensor C;
150  this->_stress_strain_law.compute_stress_and_elasticity(dim,a_contra,a_cov,A_contra,A_cov,tau,C);
151 
152  libMesh::Real jac = JxW[qp];
153 
154  for (unsigned int i=0; i != n_u_dofs; i++)
155  {
156  libMesh::RealGradient u_gradphi( dphi_dxi[i][qp] );
157 
158  libMesh::Real u_diag_factor = _lambda_factor*this->_A*jac*tau(0,0)*dgradu_dt(0)*u_gradphi(0);
159  libMesh::Real v_diag_factor = _lambda_factor*this->_A*jac*tau(0,0)*dgradv_dt(0)*u_gradphi(0);
160  libMesh::Real w_diag_factor = _lambda_factor*this->_A*jac*tau(0,0)*dgradw_dt(0)*u_gradphi(0);
161 
162  const libMesh::Real C1 = _lambda_factor*this->_A*jac*C(0,0,0,0)*u_gradphi(0);
163 
164  const libMesh::Real gamma_u = (grad_x(0)+grad_u(0));
165  const libMesh::Real gamma_v = (grad_y(0)+grad_v(0));
166  const libMesh::Real gamma_w = (grad_z(0)+grad_w(0));
167 
168  const libMesh::Real x_term = C1*gamma_u;
169  const libMesh::Real y_term = C1*gamma_v;
170  const libMesh::Real z_term = C1*gamma_w;
171 
172  const libMesh::Real dt_term = dgradu_dt(0)*gamma_u + dgradv_dt(0)*gamma_v + dgradw_dt(0)*gamma_w;
173 
174  Fu(i) += u_diag_factor + x_term*dt_term;
175  Fv(i) += v_diag_factor + y_term*dt_term;
176  Fw(i) += w_diag_factor + z_term*dt_term;
177  }
178 
179  if( compute_jacobian )
180  {
181  for(unsigned int i=0; i != n_u_dofs; i++)
182  {
183  libMesh::RealGradient u_gradphi_I( dphi_dxi[i][qp] );
184 
185  for(unsigned int j=0; j != n_u_dofs; j++)
186  {
187  libMesh::RealGradient u_gradphi_J( dphi_dxi[j][qp] );
188 
189  libMesh::Real common_factor = _lambda_factor*this->_A*jac*u_gradphi_I(0);
190 
191  const libMesh::Real diag_term_1 = common_factor*tau(0,0)*u_gradphi_J(0)*context.get_elem_solution_rate_derivative();
192 
193  const libMesh::Real dgamma_du = ( u_gradphi_J(0)*(grad_x(0)+grad_u(0)) );
194 
195  const libMesh::Real dgamma_dv = ( u_gradphi_J(0)*(grad_y(0)+grad_v(0)) );
196 
197  const libMesh::Real dgamma_dw = ( u_gradphi_J(0)*(grad_z(0)+grad_w(0)) );
198 
199  const libMesh::Real diag_term_2_factor = common_factor*C(0,0,0,0)*context.get_elem_solution_derivative();
200 
201  Kuu(i,j) += diag_term_1 + dgradu_dt(0)*diag_term_2_factor*dgamma_du;
202  Kuv(i,j) += dgradu_dt(0)*diag_term_2_factor*dgamma_dv;
203  Kuw(i,j) += dgradu_dt(0)*diag_term_2_factor*dgamma_dw;
204 
205  Kvu(i,j) += dgradv_dt(0)*diag_term_2_factor*dgamma_du;
206  Kvv(i,j) += diag_term_1 + dgradv_dt(0)*diag_term_2_factor*dgamma_dv;
207  Kvw(i,j) += dgradv_dt(0)*diag_term_2_factor*dgamma_dw;
208 
209  Kwu(i,j) += dgradw_dt(0)*diag_term_2_factor*dgamma_du;
210  Kwv(i,j) += dgradw_dt(0)*diag_term_2_factor*dgamma_dv;
211  Kww(i,j) += diag_term_1 + dgradw_dt(0)*diag_term_2_factor*dgamma_dw;
212 
213  const libMesh::Real C1 = common_factor*C(0,0,0,0);
214 
215  const libMesh::Real gamma_u = (grad_x(0)+grad_u(0));
216  const libMesh::Real gamma_v = (grad_y(0)+grad_v(0));
217  const libMesh::Real gamma_w = (grad_z(0)+grad_w(0));
218 
219  const libMesh::Real x_term = C1*gamma_u;
220  const libMesh::Real y_term = C1*gamma_v;
221  const libMesh::Real z_term = C1*gamma_w;
222 
223  const libMesh::Real ddtterm_du = u_gradphi_J(0)*(gamma_u*context.get_elem_solution_rate_derivative()
224  + dgradu_dt(0)*context.get_elem_solution_derivative());
225 
226  const libMesh::Real ddtterm_dv = u_gradphi_J(0)*(gamma_v*context.get_elem_solution_rate_derivative()
227  + dgradv_dt(0)*context.get_elem_solution_derivative());
228 
229  const libMesh::Real ddtterm_dw = u_gradphi_J(0)*(gamma_w*context.get_elem_solution_rate_derivative()
230  + dgradw_dt(0)*context.get_elem_solution_derivative());
231 
232  Kuu(i,j) += x_term*ddtterm_du;
233  Kuv(i,j) += x_term*ddtterm_dv;
234  Kuw(i,j) += x_term*ddtterm_dw;
235 
236  Kvu(i,j) += y_term*ddtterm_du;
237  Kvv(i,j) += y_term*ddtterm_dv;
238  Kvw(i,j) += y_term*ddtterm_dw;
239 
240  Kwu(i,j) += z_term*ddtterm_du;
241  Kwv(i,j) += z_term*ddtterm_dv;
242  Kww(i,j) += z_term*ddtterm_dw;
243 
244  const libMesh::Real dt_term = dgradu_dt(0)*gamma_u + dgradv_dt(0)*gamma_v + dgradw_dt(0)*gamma_w;
245 
246  // Here, we're missing derivatives of C(0,0,0,0) w.r.t. strain
247  // Nonzero for hyperelasticity models
248  const libMesh::Real dxterm_du = C1*u_gradphi_J(0)*context.get_elem_solution_derivative();
249  const libMesh::Real dyterm_dv = dxterm_du;
250  const libMesh::Real dzterm_dw = dxterm_du;
251 
252  Kuu(i,j) += dxterm_du*dt_term;
253  Kvv(i,j) += dyterm_dv*dt_term;
254  Kww(i,j) += dzterm_dw*dt_term;
255 
256  } // end j-loop
257  } // end i-loop
258  } // end if(compute_jacobian)
259  } // end qp loop
260  }
void compute_stress_and_elasticity(unsigned int dim, const libMesh::TensorValue< libMesh::Real > &g_contra, const libMesh::TensorValue< libMesh::Real > &g_cov, const libMesh::TensorValue< libMesh::Real > &G_contra, const libMesh::TensorValue< libMesh::Real > &G_cov, libMesh::TensorValue< libMesh::Real > &stress, ElasticityTensor &C)
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)
void mass_residual_impl(bool compute_jacobian, AssemblyContext &context, InteriorFuncType interior_solution, VarDerivType get_solution_deriv, libMesh::Real mu=1.0)
Implementation of mass_residual.
StressStrainLaw _stress_strain_law
libMesh::Real _A
Cross-sectional area of the cable.
const libMesh::FEGenericBase< libMesh::Real > * get_fe(const AssemblyContext &context)

Member Data Documentation

template<typename StressStrainLaw >
libMesh::Real GRINS::ElasticCableRayleighDamping< StressStrainLaw >::_lambda_factor
protected

Definition at line 50 of file elastic_cable_rayleigh_damping.h.

template<typename StressStrainLaw >
libMesh::Real GRINS::ElasticCableRayleighDamping< StressStrainLaw >::_mu_factor
protected

Definition at line 51 of file elastic_cable_rayleigh_damping.h.


The documentation for this class was generated from the following files:

Generated on Thu Jun 2 2016 21:52:30 for GRINS-0.7.0 by  doxygen 1.8.10