OOFEM 3.0
Loading...
Searching...
No Matches
basehyperelasticmaterial.C
Go to the documentation of this file.
1/*
2 *
3 * ##### ##### ###### ###### ### ###
4 * ## ## ## ## ## ## ## ### ##
5 * ## ## ## ## #### #### ## # ##
6 * ## ## ## ## ## ## ## ##
7 * ## ## ## ## ## ## ## ##
8 * ##### ##### ## ###### ## ##
9 *
10 *
11 * OOFEM : Object Oriented Finite Element Code
12 *
13 * Copyright (C) 1993 - 2025 Borek Patzak
14 *
15 *
16 *
17 * Czech Technical University, Faculty of Civil Engineering,
18 * Department of Structural Mechanics, 166 29 Prague, Czech Republic
19 *
20 * This library is free software; you can redistribute it and/or
21 * modify it under the terms of the GNU Lesser General Public
22 * License as published by the Free Software Foundation; either
23 * version 2.1 of the License, or (at your option) any later version.
24 *
25 * This program is distributed in the hope that it will be useful,
26 * but WITHOUT ANY WARRANTY; without even the implied warranty of
27 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
28 * Lesser General Public License for more details.
29 *
30 * You should have received a copy of the GNU Lesser General Public
31 * License along with this library; if not, write to the Free Software
32 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
33 */
34
36#include "dynamicinputrecord.h"
37
38namespace oofem {
41
42{
43 // compute jacobian and its logarithm
44 Tensor2_3d dVolumetricEnergy_dF;
45 if ( VET_Type == VET_Logarithmic ) {
46 auto J = F.compute_determinant();
47 auto lnJ = log(J);
48 dVolumetricEnergy_dF(i_3, j_3) = K * lnJ / J * this->compute_dJ_dF(F)(i_3, j_3);
49 }
50 return dVolumetricEnergy_dF;
51}
52
53
56{
57 // compute jacobian and its logarithm
58
59 Tensor4_3d d2VolumetricEnergy_dF2;
60 if ( VET_Type == VET_Logarithmic ) {
61 auto [ J, cofF ] = F.compute_determinant_and_cofactor();
62 auto lnJ = log(J);
63 d2VolumetricEnergy_dF2(i_3, j_3, k_3, l_3) = K * ( 1. - lnJ ) / J / J * cofF(i_3, j_3) * cofF(k_3, l_3) + K * lnJ / J * F.compute_tensor_cross_product()(i_3, j_3, k_3, l_3);
64 }
65 return d2VolumetricEnergy_dF2;
66}
67
68
69
70
71void
73{
74 // volumetric energy constant, usually bulk modulus
76 //IR_GIVE_OPTIONAL_FIELD(ir, type, _IFT_BaseHyperElasticMaterial_type)
77}
78} // end namespace oofem
#define _IFT_BaseHyperElasticMaterial_k
Tensor2_3d compute_dJ_dF(const Tensor2_3d &F) const
void initializeFrom(InputRecord &ir)
initialization for the input file
VolumetricEnergyType VET_Type
volumetric energy type
Tensor4_3d compute_d2VolumetricEnergy_dF2(const Tensor2_3d &F) const
Tensor2_3d compute_dVolumetricEnergy_dF(const Tensor2_3d &F) const
double compute_determinant() const
Definition tensor2.h:444
Tensor2_3d compute_tensor_cross_product(const Tensor2_3d &B) const
Definition tensor2.h:478
std::pair< double, Tensor2_3d > compute_determinant_and_cofactor() const
Definition tensor2.h:453
static FTensor::Index< 'k', 3 > k_3
Definition index.h:45
static FTensor::Index< 'j', 3 > j_3
Definition index.h:44
static FTensor::Index< 'i', 3 > i_3
Definition index.h:43
static FTensor::Index< 'l', 3 > l_3
Definition index.h:46
#define IR_GIVE_FIELD(__ir, __value, __id)
Definition inputrecord.h:67

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011