OOFEM 3.0
Loading...
Searching...
No Matches
frcfcmnl.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#ifndef frcfcmnl_h
36#define frcfcmnl_h
37
38
39#include "frcfcm.h"
41
43
44#define _IFT_FRCFCMNL_Name "frcfcmnl"
45#define _IFT_FRCFCMNL_participAngle "alpha"
47
48namespace oofem {
49class GaussPoint;
56
58{
59protected:
64
69
70
71public:
73
75 double giveFiberStressLoc(int icrack) const { return fiberStressLoc.at(icrack); }
76 double giveTempFiberStressLoc(int icrack) const { return tempFiberStressLoc.at(icrack); }
77 void setTempFiberStressLoc(int icrack, double newFiberStressLoc) { tempFiberStressLoc.at(icrack) = newFiberStressLoc; }
78
80 double giveFiberStressNL(int icrack) const { return fiberStressNL.at(icrack); }
81 double giveTempFiberStressNL(int icrack) const { return tempFiberStressNL.at(icrack); }
82 void setTempFiberStressNL(int icrack, double newFiberStressNL) { tempFiberStressNL.at(icrack) = newFiberStressNL; }
83
84 void printOutputAt(FILE *file, TimeStep *tStep) const override;
85
86 const char *giveClassName() const override { return "FRCFCMNLStatus"; }
87
88 void initTempStatus() override;
89
90 void updateYourself(TimeStep *tStep) override;
91
92 void saveContext(DataStream &stream, ContextMode mode) override;
93 void restoreContext(DataStream &stream, ContextMode mode) override;
94
96};
97
98
100{
101public:
102 FRCFCMNL(int n, Domain *d);
103
104 const char *giveClassName() const override { return "FRCFCMNL"; }
105 const char *giveInputRecordName() const override { return _IFT_FRCFCMNL_Name; }
106
107 void initializeFrom(InputRecord &ir) override;
108
110 const FloatArray &reducedStrain, TimeStep *tStep) const override;
111
112 void giveMaterialStiffnessMatrix(FloatMatrix & answer, MatResponseMode,
113 GaussPoint * gp,
114 TimeStep * tStep) const override;
115
117
118 std::unique_ptr<MaterialStatus> CreateStatus(GaussPoint *gp) const override { return std::make_unique<FRCFCMNLStatus>(gp); }
119
120 int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override;
121
122 //nothing to update here, is it?
123 void updateBeforeNonlocAverage(const FloatArray &strainVector, GaussPoint *gp, TimeStep *tStep) const override { }
124
125 bool isStrengthExceeded(const FloatMatrix &base, GaussPoint *gp, TimeStep *tStep, int iCrack, double trialStress) const override;
126
127 double computeDebondedLength(double delta) const;
128
130 double computeDecreaseInFibreStress(double distance, double delta, double debondedLength) const;
131
133 void computeElementCentroid(FloatArray &answer, GaussPoint *gp) const;
134
136 bool isInElementProjection(GaussPoint *homeGp, GaussPoint *nearGp, int iNlCrack) const;
137
139 virtual double computeNonlocalStressInFibers(const FloatArray &crackVector, GaussPoint *gp, TimeStep *tStep) const;
140
142 virtual double computeNonlocalStressInFibersInUncracked(GaussPoint *gp, TimeStep *tStep) const;
143
145 double computeAngleBetweenVectors(const FloatArray &vec1, const FloatArray &vec2) const ;
146
147protected:
149 double participAngle = 0.;
150};
151} // end namespace oofem
152#endif // frcfcmnl_h
void restoreContext(DataStream &stream, ContextMode mode) override
Definition frcfcmnl.C:858
double giveFiberStressLoc(int icrack) const
LOCAL FIBER STRESSES (from crack opening).
Definition frcfcmnl.h:75
void initTempStatus() override
Definition frcfcmnl.C:812
void printOutputAt(FILE *file, TimeStep *tStep) const override
Print receiver's output to given stream.
Definition frcfcmnl.C:793
FloatArray fiberStressLoc
bulk stress in fibers - evaluated from crack opening
Definition frcfcmnl.h:61
Interface * giveInterface(InterfaceType) override
Definition frcfcmnl.C:874
double giveTempFiberStressNL(int icrack) const
Definition frcfcmnl.h:81
double giveTempFiberStressLoc(int icrack) const
Definition frcfcmnl.h:76
const char * giveClassName() const override
Definition frcfcmnl.h:86
void saveContext(DataStream &stream, ContextMode mode) override
Definition frcfcmnl.C:843
void setTempFiberStressLoc(int icrack, double newFiberStressLoc)
Definition frcfcmnl.h:77
FloatArray tempFiberStressNL
Non-equilibrated stress (bulk) in fibers.
Definition frcfcmnl.h:68
void updateYourself(TimeStep *tStep) override
Definition frcfcmnl.C:827
FloatArray fiberStressNL
bulk stress in fibers - evaluated from crack opening
Definition frcfcmnl.h:66
void setTempFiberStressNL(int icrack, double newFiberStressNL)
Definition frcfcmnl.h:82
double giveFiberStressNL(int icrack) const
NON-LOCAL FIBER STRESSES (from surrounding cracks).
Definition frcfcmnl.h:80
FloatArray tempFiberStressLoc
Non-equilibrated stress (bulk) in fibers.
Definition frcfcmnl.h:63
FRCFCMNLStatus(GaussPoint *g)
Definition frcfcmnl.C:782
FRCFCMNL(int n, Domain *d)
Definition frcfcmnl.C:59
void giveRealStressVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrain, TimeStep *tStep) const override
Definition frcfcmnl.C:74
int giveIPValue(FloatArray &answer, GaussPoint *gp, InternalStateType type, TimeStep *tStep) override
Definition frcfcmnl.C:746
virtual double computeNonlocalStressInFibers(const FloatArray &crackVector, GaussPoint *gp, TimeStep *tStep) const
computes nonlocal stress in fibers in cracked GP
Definition frcfcmnl.C:348
void giveMaterialStiffnessMatrix(FloatMatrix &answer, MatResponseMode, GaussPoint *gp, TimeStep *tStep) const override
Definition frcfcmnl.C:655
bool isInElementProjection(GaussPoint *homeGp, GaussPoint *nearGp, int iNlCrack) const
checks if a element center of homeGP is in projection of element containing nearGP
Definition frcfcmnl.C:272
double computeDecreaseInFibreStress(double distance, double delta, double debondedLength) const
compute the the difference in fiber stress in the target (local stress) and receiver (nonlocal stress...
Definition frcfcmnl.C:186
std::unique_ptr< MaterialStatus > CreateStatus(GaussPoint *gp) const override
Definition frcfcmnl.h:118
double computeDebondedLength(double delta) const
computes debonded length of the fibers from the crack opening. Delta is here one half of the crack op...
Definition frcfcmnl.C:162
void updateBeforeNonlocAverage(const FloatArray &strainVector, GaussPoint *gp, TimeStep *tStep) const override
Definition frcfcmnl.h:123
double participAngle
participation angle. The target gauss point must fall into this angle to contribute to the nonlocal s...
Definition frcfcmnl.h:149
const char * giveClassName() const override
Definition frcfcmnl.h:104
const char * giveInputRecordName() const override
Definition frcfcmnl.h:105
bool isStrengthExceeded(const FloatMatrix &base, GaussPoint *gp, TimeStep *tStep, int iCrack, double trialStress) const override
compares trial stress with strength. Returns true if the strength is exceeded. Function oveloaded in ...
Definition frcfcmnl.C:614
double computeAngleBetweenVectors(const FloatArray &vec1, const FloatArray &vec2) const
computes an angle between two vectors
Definition frcfcmnl.C:694
Interface * giveInterface(InterfaceType it) override
Definition frcfcmnl.C:734
void computeElementCentroid(FloatArray &answer, GaussPoint *gp) const
computes cetroid of a finite element - works only for linear 3 and 4-node elements
Definition frcfcmnl.C:225
void initializeFrom(InputRecord &ir) override
Definition frcfcmnl.C:64
virtual double computeNonlocalStressInFibersInUncracked(GaussPoint *gp, TimeStep *tStep) const
computes nonlocal stress in fibers in uncracked GP
Definition frcfcmnl.C:517
FRCFCMStatus(GaussPoint *g)
Definition frcfcm.C:1209
FRCFCM(int n, Domain *d)
Definition frcfcm.C:45
#define _IFT_FRCFCMNL_Name
Definition frcfcmnl.h:44
long ContextMode
Definition contextmode.h:43
double distance(const FloatArray &x, const FloatArray &y)

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