OOFEM 3.0
Loading...
Searching...
No Matches
delamination.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 DELAMINATION_H_
36#define DELAMINATION_H_
37
38#include "xfem/listbasedei.h"
39
41
42#define _IFT_Delamination_Name "delamination"
43#define _IFT_Delamination_xiCoord "delaminationxicoord"
44#define _IFT_Delamination_interfacenum "interfacenum"
45#define _IFT_Delamination_csnum "csnum"
46#define _IFT_Delamination_CohesiveZoneMaterial "czmaterial"
47#define _IFT_Delamination_initiationFactor "initiationfactor"
48#define _IFT_Delamination_initiationRadius "initiationradius"
49#define _IFT_Delamination_averageStresses "averageStresses"
51
52namespace oofem {
53class Material;
54
59{
60protected:
61 Material *mat; // Material for cohesive zone model
62 IntArray interfaceNum; // starting and ending interfaceNum for the delamination
63 IntArray crossSectionNum; // use this to keep track of the interface coordinates
64 int matNum; // still used??
65 double delamXiCoord; // defines at what local xi-coord the delamination is defined
66
67 // New 110814 JB defines between what local xi-coords the delamination is defined
68 double xiBottom;
69 double xiTop;
70
71 // Adaptive enrichment,
72 // cf. Främby, Fagerström & Bouzoulis, 'Adaptive modelling of delamination initiation and propagation using an equivalent single-layer shell approach', IJNME, 2016
73 double initiationFactor; // knock-down factor on initiation values, (0,1] //JF
74 double initiationRadius; // radius around around newlye initiated element nodes to be included //JF
75 bool recoverStresses; // recover tranverse stresses using momentum balance (default). //JF
76
77public:
78 Delamination(int n, XfemManager *xm, Domain *aDomain);
79 virtual ~Delamination() { }
80
81 void initializeFrom(InputRecord &ir) override;
82 int instanciateYourself(DataReader &dr) override;
83 void postInitialize() override;
84 void appendInputRecords(DynamicDataReader &oDR) override;
85
86 const char *giveClassName() const override { return "Delamination"; }
87 const char *giveInputRecordName() const override { return _IFT_Delamination_Name; }
88
89 double giveDelamXiCoord() const { return xiBottom; } // coord where the delamination is defined
90 double giveBoundingDelamXiCoord() const { return xiTop; } // coord where the delamination enrichment should stop, default is the shell surface
91 int giveDelamInterfaceNum() const { return interfaceNum.at(1); }
93 double giveInitiationFactor() const { return initiationFactor; }
94 //void updateGeometry(FailureCriteriaStatus *fc, TimeStep *tStep) override;
95 bool hasPropagatingFronts() const override { return true; }
96 bool hasInitiationCriteria() override;
97
98 void propagateFronts(bool &oFrontsHavePropagated) override;
99 void findInitiationFronts(bool &failureChecked, const IntArray &CSnumbers, std :: vector< IntArray > &CSinterfaceNumbers, std :: vector< IntArray > &CSDofManNumbers, std :: vector< FloatArray > &initiationFactors, TimeStep *tStep);
100
101 void evaluateEnrFuncInNode(std :: vector< double > &oEnrFunc, const Node &iNode) const override { OOFEM_ERROR("Not implemented.") }
102
103 void evaluateEnrFuncAt(std :: vector< double > &oEnrFunc, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl) const override;
104 void evaluateEnrFuncAt(std :: vector< double > &oEnrFunc, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl, const FloatArray &iN, const IntArray &iElNodes) const override;
105
106 void evaluateEnrFuncDerivAt(std :: vector< FloatArray > &oEnrFuncDeriv, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl) const override { OOFEM_ERROR("Not implemented."); }
107 void evaluateEnrFuncDerivAt(std :: vector< FloatArray > &oEnrFuncDeriv, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl, const FloatArray &iN, const FloatMatrix &idNdX, const IntArray &iElNodes) const override { OOFEM_ERROR("Not implemented."); }
108
109 void evalLevelSetNormal(double &oLevelSet, const FloatArray &iGlobalCoord, const FloatArray &iN, const IntArray &iNodeInd) const override;
110 void evalLevelSetTangential(double &oLevelSet, const FloatArray &iGlobalCoord, const FloatArray &iN, const IntArray &iNodeInd) const override { OOFEM_ERROR("Not implemented."); }
111 void evalGradLevelSetNormal(FloatArray &oGradLevelSet, const FloatArray &iGlobalCoord, const FloatMatrix &idNdX, const IntArray &iNodeInd) const override { OOFEM_ERROR("Not implemented."); }
112
113 void evaluateEnrFuncAt(std :: vector< double > &oEnrFunc, const FloatArray &iPos, const double &iLevelSet) const;
114};
115} // end namespace oofem
116
117
118#endif /* DELAMINATION_H_ */
int giveDelamInterfaceNum() const
void evalGradLevelSetNormal(FloatArray &oGradLevelSet, const FloatArray &iGlobalCoord, const FloatMatrix &idNdX, const IntArray &iNodeInd) const override
const char * giveInputRecordName() const override
double giveBoundingDelamXiCoord() const
double giveDelamXiCoord() const
void evalLevelSetTangential(double &oLevelSet, const FloatArray &iGlobalCoord, const FloatArray &iN, const IntArray &iNodeInd) const override
virtual ~Delamination()
bool hasPropagatingFronts() const override
double giveInitiationFactor() const
const char * giveClassName() const override
IntArray giveDelamCrossSectionNum() const
void evaluateEnrFuncDerivAt(std ::vector< FloatArray > &oEnrFuncDeriv, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl, const FloatArray &iN, const FloatMatrix &idNdX, const IntArray &iElNodes) const override
void evaluateEnrFuncDerivAt(std ::vector< FloatArray > &oEnrFuncDeriv, const FloatArray &iGlobalCoord, const FloatArray &iLocalCoord, int iNodeInd, const Element &iEl) const override
void evaluateEnrFuncInNode(std ::vector< double > &oEnrFunc, const Node &iNode) const override
Delamination(int n, XfemManager *xm, Domain *aDomain)
ListBasedEI(int n, XfemManager *xm, Domain *aDomain)
Definition listbasedei.C:49
#define _IFT_Delamination_Name
#define OOFEM_ERROR(...)
Definition error.h:79
#define OOFEM_EXPORT
Definition oofemcfg.h:7

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