Reference documentation for deal.II version 9.5.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\}}\)
Loading...
Searching...
No Matches
kinematics.h
Go to the documentation of this file.
1// ---------------------------------------------------------------------
2//
3// Copyright (C) 2016 - 2022 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 {
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
156 template <int dim, typename Number>
159
176 template <int dim, typename Number>
179
192 template <int dim, typename Number>
195
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{
291 // Make things work with AD types
292 using std::pow;
293 return internal::NumberType<Number>::value(pow(determinant(F), -1.0 / dim)) *
294 F;
295}
296
297
298
299template <int dim, typename Number>
302{
303 // Make things work with AD types
304 using std::pow;
307 unit_symmetric_tensor<dim>());
308}
309
310
311
312template <int dim, typename Number>
315{
316 return symmetrize(transpose(F) * F);
317}
318
319
320
321template <int dim, typename Number>
324{
325 return symmetrize(F * transpose(F));
326}
327
328
329
330template <int dim, typename Number>
333{
335 (C(F) - static_cast<SymmetricTensor<2, dim, Number>>(
336 StandardTensors<dim>::I));
337}
338
339
340
341template <int dim, typename Number>
344{
345 // This is the equivalent to 0.5*symmetrize(Grad_u + transpose(Grad_u));
346 return symmetrize(Grad_u);
347}
348
349
350
351template <int dim, typename Number>
354{
355 const Tensor<2, dim, Number> F_inv = invert(F);
358 StandardTensors<dim>::I) -
359 transpose(F_inv) * F_inv);
360}
361
362
363
364template <int dim, typename Number>
367 const Tensor<2, dim, Number> &dF_dt)
368{
369 return dF_dt * invert(F);
370}
371
372
373
374template <int dim, typename Number>
377 const Tensor<2, dim, Number> &dF_dt)
378{
379 return symmetrize(l(F, dF_dt));
380}
381
382
383
384template <int dim, typename Number>
387 const Tensor<2, dim, Number> &dF_dt)
388{
389 // This could be implemented as w = l-d, but that would mean computing "l"
390 // a second time.
391 const Tensor<2, dim> grad_v = l(F, dF_dt);
393 (grad_v - transpose(grad_v));
394}
395
396#endif // DOXYGEN
397
399
400#endif
#define DEAL_II_ALWAYS_INLINE
Definition config.h:106
#define DEAL_II_NAMESPACE_OPEN
Definition config.h:472
#define DEAL_II_NAMESPACE_CLOSE
Definition config.h:473
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 DEAL_II_HOST_DEVICE_ALWAYS_INLINE const T & value(const T &t)
Definition numbers.h:702
DEAL_II_HOST constexpr Number determinant(const SymmetricTensor< 2, dim, Number > &)
DEAL_II_HOST constexpr SymmetricTensor< 2, dim, Number > symmetrize(const Tensor< 2, dim, Number > &t)
DEAL_II_HOST constexpr SymmetricTensor< 2, dim, Number > invert(const SymmetricTensor< 2, dim, Number > &)