OOFEM 3.0
Loading...
Searching...
No Matches
winklerpasternak.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
35#include "winklerpasternak.h"
37#include "floatmatrix.h"
38#include "gausspoint.h"
39#include "classfactory.h"
40#include "dynamicinputrecord.h"
41
42namespace oofem {
44
47
48
49void
50WinklerPasternakMaterial :: initializeFrom(InputRecord &ir)
51{
52 StructuralMaterial :: initializeFrom(ir);
53
56 // isotropic case
58 c2y = c2x;
59 } else {
62 }
63}
64
65
66void
67WinklerPasternakMaterial :: giveInputRecord(DynamicInputRecord &input)
68{
69 StructuralMaterial :: giveInputRecord(input);
70
74}
75
76
79{
80 auto tangent = this->give2dPlateSubSoilStiffMtrx(ElasticStiffness, gp, tStep);
81 auto answer = dot(tangent, reducedE);
82
83 auto status = static_cast< StructuralMaterialStatus * >( this->giveStatus(gp) );
84
85 status->letTempStrainVectorBe(reducedE);
86 status->letTempStressVectorBe(answer);
87 return answer;
88}
89
90
92WinklerPasternakMaterial :: give2dPlateSubSoilStiffMtrx(MatResponseMode mode, GaussPoint *gp, TimeStep *tStep) const
93{
94 return diag<3>({c1, c2x, c2y});
95}
96
97
98std::unique_ptr<MaterialStatus>
99WinklerPasternakMaterial :: CreateStatus(GaussPoint *gp) const
100{
101 return std::make_unique<StructuralMaterialStatus>(gp);
102}
103
104
105bool
106WinklerPasternakMaterial :: hasMaterialModeCapability(MaterialMode mode) const
107//
108// returns whether receiver supports given mode
109//
110{
111 return mode == _2dPlateSubSoil;
112}
113
114} // end namespace oofem
#define REGISTER_Material(class)
void setField(int item, InputFieldType id)
virtual bool hasField(InputFieldType id)=0
Returns true if record contains field identified by idString keyword.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Definition material.C:206
void letTempStrainVectorBe(const FloatArray &v)
Assigns tempStrainVector to given vector v.
StructuralMaterial(int n, Domain *d)
double c2x
C2 constants in x and y directions, defined as $\int_0^hG_{x,y}(z)Psi^2(z)\ dz$.
WinklerPasternakMaterial(int n, Domain *d)
FloatMatrixF< 3, 3 > give2dPlateSubSoilStiffMtrx(MatResponseMode mmode, GaussPoint *gp, TimeStep *tStep) const override
double c1
C1 constant, defined as $\int_0^hE_{oed}(z)\left(d\Psi(z)\over dz\right)^2\ dz$.
FloatArrayF< 3 > giveRealStressVector_2dPlateSubSoil(const FloatArrayF< 3 > &reducedE, GaussPoint *gp, TimeStep *tStep) const override
Default implementation is not provided.
#define IR_GIVE_FIELD(__ir, __value, __id)
Definition inputrecord.h:67
FloatMatrixF< N, N > diag(const FloatArrayF< N > &v)
double dot(const FloatArray &x, const FloatArray &y)
#define _IFT_WinklerPasternakMaterial_C1
#define _IFT_WinklerPasternakMaterial_C2
#define _IFT_WinklerPasternakMaterial_C2Y
#define _IFT_WinklerPasternakMaterial_C2X

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