Reference documentation for deal.II version 9.4.1
\(\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\}}\)
Loading...
Searching...
No Matches
kinematics.h
Go to the documentation of this file.
1// ---------------------------------------------------------------------
2//
3// Copyright (C) 2016 - 2021 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
24#include <deal.II/base/tensor.h>
25
27
29
30namespace Physics
31{
32 namespace Elasticity
33 {
45 namespace Kinematics
46 {
51
71 template <int dim, typename Number>
73 F(const Tensor<2, dim, Number> &Grad_u);
74
87 template <int dim, typename Number>
90
103 template <int dim, typename Number>
106
118 template <int dim, typename Number>
121
133 template <int dim, typename Number>
136
138
143
156 template <int dim, typename Number>
159
176 template <int dim, typename Number>
179
192 template <int dim, typename Number>
195
197
202
216 template <int dim, typename Number>
219
239 template <int dim, typename Number>
242
261 template <int dim, typename Number>
264
266 } // namespace Kinematics
267 } // namespace Elasticity
268} // namespace Physics
269
270
271
272#ifndef DOXYGEN
273
274// ------------------------- inline functions ------------------------
275
276
277
278template <int dim, typename Number>
281{
282 return StandardTensors<dim>::I + Grad_u;
283}
284
285
286
287template <int dim, typename Number>
290{
292 std::pow(determinant(F), -1.0 / dim)) *
293 F;
294}
295
296
297
298template <int dim, typename Number>
301{
303 std::pow(determinant(F), 1.0 / dim)) *
305 unit_symmetric_tensor<dim>());
306}
307
308
309
310template <int dim, typename Number>
313{
314 return symmetrize(transpose(F) * F);
315}
316
317
318
319template <int dim, typename Number>
322{
323 return symmetrize(F * transpose(F));
324}
325
326
327
328template <int dim, typename Number>
331{
333 (C(F) - static_cast<SymmetricTensor<2, dim, Number>>(
334 StandardTensors<dim>::I));
335}
336
337
338
339template <int dim, typename Number>
342{
343 // This is the equivalent to 0.5*symmetrize(Grad_u + transpose(Grad_u));
344 return symmetrize(Grad_u);
345}
346
347
348
349template <int dim, typename Number>
352{
353 const Tensor<2, dim, Number> F_inv = invert(F);
356 StandardTensors<dim>::I) -
357 transpose(F_inv) * F_inv);
358}
359
360
361
362template <int dim, typename Number>
365 const Tensor<2, dim, Number> &dF_dt)
366{
367 return dF_dt * invert(F);
368}
369
370
371
372template <int dim, typename Number>
375 const Tensor<2, dim, Number> &dF_dt)
376{
377 return symmetrize(l(F, dF_dt));
378}
379
380
381
382template <int dim, typename Number>
385 const Tensor<2, dim, Number> &dF_dt)
386{
387 // This could be implemented as w = l-d, but that would mean computing "l"
388 // a second time.
389 const Tensor<2, dim> grad_v = l(F, dF_dt);
391 (grad_v - transpose(grad_v));
392}
393
394#endif // DOXYGEN
395
397
398#endif
Definition: tensor.h:503
#define DEAL_II_ALWAYS_INLINE
Definition: config.h:102
#define DEAL_II_NAMESPACE_OPEN
Definition: config.h:442
#define DEAL_II_NAMESPACE_CLOSE
Definition: config.h:443
DerivativeForm< 1, spacedim, dim, Number > transpose(const DerivativeForm< 1, dim, spacedim, Number > &DF)
SymmetricTensor< 2, dim, Number > F_vol(const Tensor< 2, dim, Number > &F)
SymmetricTensor< 2, dim, Number > C(const Tensor< 2, dim, Number > &F)
SymmetricTensor< 2, dim, Number > E(const Tensor< 2, dim, Number > &F)
Tensor< 2, dim, Number > w(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
SymmetricTensor< 2, dim, Number > e(const Tensor< 2, dim, Number > &F)
Tensor< 2, dim, Number > l(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
Tensor< 2, dim, Number > F_iso(const Tensor< 2, dim, Number > &F)
SymmetricTensor< 2, dim, Number > b(const Tensor< 2, dim, Number > &F)
SymmetricTensor< 2, dim, Number > d(const Tensor< 2, dim, Number > &F, const Tensor< 2, dim, Number > &dF_dt)
SymmetricTensor< 2, dim, Number > epsilon(const Tensor< 2, dim, Number > &Grad_u)
Tensor< 2, dim, Number > F(const Tensor< 2, dim, Number > &Grad_u)
::VectorizedArray< Number, width > pow(const ::VectorizedArray< Number, width > &, const Number p)
static constexpr const T & value(const T &t)
Definition: numbers.h:705
constexpr SymmetricTensor< 2, dim, Number > symmetrize(const Tensor< 2, dim, Number > &t)
constexpr Number determinant(const SymmetricTensor< 2, dim, Number > &)
constexpr SymmetricTensor< 2, dim, Number > invert(const SymmetricTensor< 2, dim, Number > &)