7#ifndef FRICTIONQPOTFEM_UNIFORMSINGLELAYERTHERMAL2D_H
8#define FRICTIONQPOTFEM_UNIFORMSINGLELAYERTHERMAL2D_H
25namespace UniformSingleLayerThermal2d {
86 template <
class C,
class E,
class L,
class M,
class Y>
98 const Y& plastic_epsy,
103 double temperature_dinc,
104 size_t temperature_seed,
125 double h =
coor(pconn(0, 1), 0) -
coor(pconn(0, 0), 0);
126 for (
size_t d = 0; d <
dofs.shape(1); ++d) {
131 for (
size_t e = 0; e <
m_N; ++e) {
140 m_dinc = temperature_dinc;
142 m_gen = prrng::pcg32(temperature_seed, 0);
161 std::string
type()
const override
163 return "FrictionQPotFEM.UniformSingleLayerThermal2d.System";
196 m_gen.advance(advance *
static_cast<int64_t
>(
m_N * 6));
225 int64_t index =
static_cast<int64_t
>(
m_inc /
m_dinc);
232 for (
size_t e = 0; e <
m_N; ++e) {
233 const size_t* elem = &
conn(e, 0);
236 for (
size_t d = 0; d < 2; ++d) {
247 for (
size_t d = 0; d < 2; ++d) {
array_type::tensor< double, 2 > m_fext
Nodal force: total external force (reaction force)
double eta() const
Get the damping at the interface.
double rho() const
Mass density.
array_type::tensor< double, 2 > m_fmaterial
Nodal force, deriving from elasticity.
const auto & elastic_elem() const
List of elastic elements.
size_t m_N
Number of plastic elements, alias of m_nelem_plas.
array_type::tensor< double, 2 > m_fres
Nodal force: residual force.
GooseFEM::VectorPartitioned m_vector_plas
m_vector for plastic elements only.
const auto & plastic_elem() const
List of plastic elements.
size_t m_inc
Current increment (current time = m_dt * m_inc).
const auto & coor() const
Nodal coordinates.
array_type::tensor< double, 2 > m_fint
Nodal force: total internal force.
const auto & conn() const
Connectivity.
array_type::tensor< double, 2 > m_fdamp
Nodal force from damping.
double dt() const
Get time step.
GooseFEM::VectorPartitioned m_vector
Convert vectors between 'nodevec', 'elemvec', ....
const auto & dofs() const
DOFs per node.
double alpha() const
Background damping density.
void copy_p(const array_type::tensor< double, 2 > &nodevec_src, array_type::tensor< double, 2 > &nodevec_dest) const
Copy prescribed DOFs from "nodevec" to another "nodvec":
const array_type::tensor< size_t, 2 > & conn() const
std::vector< std::string > version_dependencies()
Return versions of this library and of all of its dependencies.
std::vector< std::string > version_compiler()
Version information of the compilers.
xt::xtensor< T, N > tensor
Fixed (static) rank array.
Friction simulations based on a disorder potential energy landscape and the finite element method.
#define FRICTIONQPOTFEM_REQUIRE(expr)
Assertions that cannot be disabled.