Reference documentation for deal.II version 9.2.0
\(\newcommand{\dealvcentcolon}{\mathrel{\mathop{:}}}\) \(\newcommand{\dealcoloneq}{\dealvcentcolon\mathrel{\mkern-1.2mu}=}\) \(\newcommand{\jump}[1]{\left[\!\left[ #1 \right]\!\right]}\) \(\newcommand{\average}[1]{\left\{\!\left\{ #1 \right\}\!\right\}}\)
kinematics.h
Go to the documentation of this file.
1 // ---------------------------------------------------------------------
2 //
3 // Copyright (C) 2016 - 2019 by the deal.II authors
4 //
5 // This file is part of the deal.II library.
6 //
7 // The deal.II library is free software; you can use it, redistribute
8 // it, and/or modify it under the terms of the GNU Lesser General
9 // Public License as published by the Free Software Foundation; either
10 // version 2.1 of the License, or (at your option) any later version.
11 // The full text of the license can be found in the file LICENSE.md at
12 // the top level directory of deal.II.
13 //
14 // ---------------------------------------------------------------------
15 
16 #ifndef dealii_elasticity_kinematics_h
17 #define dealii_elasticity_kinematics_h
18 
19 
20 #include <deal.II/base/config.h>
21 
22 #include <deal.II/base/numbers.h>
24 #include <deal.II/base/tensor.h>
25 
27 
29 
30 namespace Physics
31 {
32  namespace Elasticity
33  {
48  namespace Kinematics
49  {
54 
74  template <int dim, typename Number>
76  F(const Tensor<2, dim, Number> &Grad_u);
77 
90  template <int dim, typename Number>
93 
106  template <int dim, typename Number>
109 
121  template <int dim, typename Number>
123  C(const Tensor<2, dim, Number> &F);
124 
136  template <int dim, typename Number>
138  b(const Tensor<2, dim, Number> &F);
139 
141 
146 
159  template <int dim, typename Number>
161  E(const Tensor<2, dim, Number> &F);
162 
179  template <int dim, typename Number>
181  epsilon(const Tensor<2, dim, Number> &Grad_u);
182 
195  template <int dim, typename Number>
197  e(const Tensor<2, dim, Number> &F);
198 
200 
205 
219  template <int dim, typename Number>
221  l(const Tensor<2, dim, Number> &F, const Tensor<2, dim, Number> &dF_dt);
222 
242  template <int dim, typename Number>
244  d(const Tensor<2, dim, Number> &F, const Tensor<2, dim, Number> &dF_dt);
245 
264  template <int dim, typename Number>
266  w(const Tensor<2, dim, Number> &F, const Tensor<2, dim, Number> &dF_dt);
267 
269  } // namespace Kinematics
270  } // namespace Elasticity
271 } // namespace Physics
272 
273 
274 
275 #ifndef DOXYGEN
276 
277 // ------------------------- inline functions ------------------------
278 
279 
280 
281 template <int dim, typename Number>
284 {
285  return StandardTensors<dim>::I + Grad_u;
286 }
287 
288 
289 
290 template <int dim, typename Number>
293 {
294  return std::pow(determinant(F), -1.0 / dim) * F;
295 }
296 
297 
298 
299 template <int dim, typename Number>
302 {
304  std::pow(determinant(F), 1.0 / dim)) *
305  static_cast<SymmetricTensor<2, dim, Number>>(
306  unit_symmetric_tensor<dim>());
307 }
308 
309 
310 
311 template <int dim, typename Number>
314 {
315  return symmetrize(transpose(F) * F);
316 }
317 
318 
319 
320 template <int dim, typename Number>
323 {
324  return symmetrize(F * transpose(F));
325 }
326 
327 
328 
329 template <int dim, typename Number>
332 {
334  (C(F) - static_cast<SymmetricTensor<2, dim, Number>>(
335  StandardTensors<dim>::I));
336 }
337 
338 
339 
340 template <int dim, typename Number>
343 {
344  // This is the equivalent to 0.5*symmetrize(Grad_u + transpose(Grad_u));
345  return symmetrize(Grad_u);
346 }
347 
348 
349 
350 template <int dim, typename Number>
353 {
354  const Tensor<2, dim, Number> F_inv = invert(F);
357  StandardTensors<dim>::I) -
358  transpose(F_inv) * F_inv);
359 }
360 
361 
362 
363 template <int dim, typename Number>
366  const Tensor<2, dim, Number> &dF_dt)
367 {
368  return dF_dt * invert(F);
369 }
370 
371 
372 
373 template <int dim, typename Number>
376  const Tensor<2, dim, Number> &dF_dt)
377 {
378  return symmetrize(l(F, dF_dt));
379 }
380 
381 
382 
383 template <int dim, typename Number>
386  const Tensor<2, dim, Number> &dF_dt)
387 {
388  // This could be implemented as w = l-d, but that would mean computing "l"
389  // a second time.
390  const Tensor<2, dim> grad_v = l(F, dF_dt);
392  (grad_v - transpose(grad_v));
393 }
394 
395 #endif // DOXYGEN
396 
398 
399 #endif
Physics
Definition: physics.h:28
Physics::Elasticity::Kinematics::epsilon
SymmetricTensor< 2, dim, Number > epsilon(const Tensor< 2, dim, Number > &Grad_u)
Physics::Elasticity::Kinematics::F
Tensor< 2, dim, Number > F(const Tensor< 2, dim, Number > &Grad_u)
SymmetricTensor
Definition: symmetric_tensor.h:611
internal::NumberType::value
static constexpr const T & value(const T &t)
Definition: numbers.h:703
SymmetricTensor::invert
constexpr SymmetricTensor< 2, dim, Number > invert(const SymmetricTensor< 2, dim, Number > &t)
Definition: symmetric_tensor.h:3467
Physics::Elasticity::Kinematics::C
SymmetricTensor< 2, dim, Number > C(const Tensor< 2, dim, Number > &F)
Physics::Elasticity::Kinematics::e
SymmetricTensor< 2, dim, Number > e(const Tensor< 2, dim, Number > &F)
DEAL_II_ALWAYS_INLINE
#define DEAL_II_ALWAYS_INLINE
Definition: config.h:99
Physics::Elasticity::Kinematics::F_vol
SymmetricTensor< 2, dim, Number > F_vol(const Tensor< 2, dim, Number > &F)
Physics::Elasticity::Kinematics::d
SymmetricTensor< 2, dim, Number > d(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
Physics::Elasticity::Kinematics::w
Tensor< 2, dim, Number > w(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
tensor.h
Tensor
Definition: tensor.h:450
DEAL_II_NAMESPACE_OPEN
#define DEAL_II_NAMESPACE_OPEN
Definition: config.h:358
Physics::Elasticity::Kinematics::b
SymmetricTensor< 2, dim, Number > b(const Tensor< 2, dim, Number > &F)
Physics::Elasticity::Kinematics::l
Tensor< 2, dim, Number > l(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
standard_tensors.h
SymmetricTensor::symmetrize
constexpr SymmetricTensor< 2, dim, Number > symmetrize(const Tensor< 2, dim, Number > &t)
Definition: symmetric_tensor.h:3547
symmetric_tensor.h
SymmetricTensor::determinant
constexpr Number determinant(const SymmetricTensor< 2, dim, Number > &t)
Definition: symmetric_tensor.h:2645
std::pow
inline ::VectorizedArray< Number, width > pow(const ::VectorizedArray< Number, width > &x, const Number p)
Definition: vectorization.h:5428
Physics::Elasticity::Kinematics::F_iso
Tensor< 2, dim, Number > F_iso(const Tensor< 2, dim, Number > &F)
config.h
DEAL_II_NAMESPACE_CLOSE
#define DEAL_II_NAMESPACE_CLOSE
Definition: config.h:359
Physics::Elasticity::Kinematics::E
SymmetricTensor< 2, dim, Number > E(const Tensor< 2, dim, Number > &F)
numbers.h
DerivativeForm::transpose
DerivativeForm< 1, spacedim, dim, Number > transpose(const DerivativeForm< 1, dim, spacedim, Number > &DF)
Definition: derivative_form.h:470