OOFEM 3.0
Loading...
Searching...
No Matches
rcsdnl.h
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// *********************************************************************************************
36// *** CLASS NONLOCAL ROTATING SMEARED CRACK MODEL WITH TRANSITION TO SCALAR DAMAGE ************
37// *********************************************************************************************
38
39#ifndef rcsdnl_h
40#define rcsdnl_h
41
42#include "rcsde.h"
46
47#define _IFT_RCSDNLMaterial_Name "rcsdnl"
48#define _IFT_RCSDNLMaterial_ft "ft"
49#define _IFT_RCSDNLMaterial_sdtransitioncoeff "sdtransitioncoeff"
50#define _IFT_RCSDNLMaterial_sdtransitioncoeff2 "sdtransitioncoeff2"
51#define _IFT_RCSDNLMaterial_r "r"
52#define _IFT_RCSDNLMaterial_ef "ef"
53#define _IFT_RCSDNLMaterial_gf "gf"
55
56namespace oofem {
61{
62protected:
64
65public:
67
68 void printOutputAt(FILE *file, TimeStep *tStep) const override;
69
73
76
77 const char *giveClassName() const override { return "RCSDNLMaterialStatus"; }
78
79 void initTempStatus() override;
80 void updateYourself(TimeStep *tStep) override;
81
82 void saveContext(DataStream &stream, ContextMode mode) override;
83 void restoreContext(DataStream &stream, ContextMode mode) override;
84
86};
87
88
96{
97protected:
106 double R = 0.;
111 double ef = 0.;
112
113public:
114 RCSDNLMaterial(int n, Domain * d);
115
116 const char *giveClassName() const override { return "RCSDNLMaterial"; }
117
119
120 void initializeFrom(InputRecord &ir) override;
121
123 const FloatArray &, TimeStep *tStep) const override;
124
135 void updateBeforeNonlocAverage(const FloatArray &strainVector, GaussPoint *gp, TimeStep *tStep) const override;
136
137 double computeWeightFunction(const double cl, const FloatArray &src, const FloatArray &coord) const override;
138 int hasBoundedSupport() const override { return 1; }
142 void giveSupportRadius(double &radius) { radius = this->R; }
143
144 int packUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) override;
145 int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) override;
146 int estimatePackSize(DataStream &buff, GaussPoint *ip) override;
147
148 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override { return std::make_unique<RCSDNLMaterialStatus>(gp); }
149
150protected:
151 double giveCharacteristicElementLength(GaussPoint *gp, const FloatArray &) const override { return 1.0; }
152 double giveMinCrackStrainsForFullyOpenCrack(GaussPoint *gp, int i) const override;
153 double computeStrength(GaussPoint *, double) const override { return this->Ft; }
154};
155} // end namespace oofem
156#endif // rcsdnl_h
GaussPoint * gp
Associated integration point.
RCSDEMaterialStatus(GaussPoint *g)
Definition rcsde.C:448
RCSDEMaterial(int n, Domain *d)
Definition rcsde.C:49
RCSDNLMaterialStatus(GaussPoint *gp)
Definition rcsdnl.C:422
Interface * giveInterface(InterfaceType) override
Definition rcsdnl.C:501
void initTempStatus() override
Definition rcsdnl.C:451
void updateYourself(TimeStep *tStep) override
Definition rcsdnl.C:464
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
Definition rcsdnl.C:433
const FloatArray & giveLocalStrainVectorForAverage()
Definition rcsdnl.h:74
FloatArray localStrainVectorForAverage
Definition rcsdnl.h:63
void setTempNonlocalStrainVector(FloatArray ls)
Definition rcsdnl.h:72
FloatArray nonlocalStrainVector
Definition rcsdnl.h:63
void setLocalStrainVectorForAverage(FloatArray ls)
Definition rcsdnl.h:75
void restoreContext(DataStream &stream, ContextMode mode) override
Definition rcsdnl.C:489
FloatArray tempNonlocalStrainVector
Definition rcsdnl.h:63
const char * giveClassName() const override
Definition rcsdnl.h:77
void saveContext(DataStream &stream, ContextMode mode) override
Definition rcsdnl.C:477
const FloatArray & giveNonlocalStrainVector()
Definition rcsdnl.h:70
const FloatArray & giveTempNonlocalStrainVector()
Definition rcsdnl.h:71
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
Definition rcsdnl.h:148
RCSDNLMaterial(int n, Domain *d)
Definition rcsdnl.C:48
int unpackAndUpdateUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) override
Definition rcsdnl.C:523
double computeStrength(GaussPoint *, double) const override
Definition rcsdnl.h:153
double giveMinCrackStrainsForFullyOpenCrack(GaussPoint *gp, int i) const override
Definition rcsdnl.C:376
const char * giveClassName() const override
Definition rcsdnl.h:116
Interface * giveInterface(InterfaceType t) override
Definition rcsdnl.C:53
double giveCharacteristicElementLength(GaussPoint *gp, const FloatArray &) const override
Definition rcsdnl.h:151
int estimatePackSize(DataStream &buff, GaussPoint *ip) override
Definition rcsdnl.C:535
double SDTransitionCoeff2
Definition rcsdnl.h:102
void initializeFrom(InputRecord &ir) override
Definition rcsdnl.C:341
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &, TimeStep *tStep) const override
Definition rcsdnl.C:82
double computeWeightFunction(const double cl, const FloatArray &src, const FloatArray &coord) const override
Definition rcsdnl.C:383
void updateBeforeNonlocAverage(const FloatArray &strainVector, GaussPoint *gp, TimeStep *tStep) const override
Definition rcsdnl.C:64
void giveSupportRadius(double &radius)
Definition rcsdnl.h:142
int packUnknowns(DataStream &buff, TimeStep *tStep, GaussPoint *ip) override
Definition rcsdnl.C:512
int hasBoundedSupport() const override
Definition rcsdnl.h:138
long ContextMode
Definition contextmode.h:43

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