OOFEM 3.0
Loading...
Searching...
No Matches
prescribeddispslipbcneumannrc.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 PRESCRIBEDDISPSLIPBCNEUMANN_H_
36#define PRESCRIBEDDISPSLIPBCNEUMANN_H_
37
39#include "activebc.h"
40#include "dynamicinputrecord.h"
41
42#include <memory>
43
44#define _IFT_PrescribedDispSlipBCNeumannRC_Name "prescribeddispslipbcneumannrc"
45#define _IFT_PrescribedDispSlipBCNeumannRC_ConcreteVolSet "concretevolset"
46#define _IFT_PrescribedDispSlipBCNeumannRC_RebarSets "rebarsets"
47
48namespace oofem {
49class Node;
50class Element;
68{
69public:
72
74 DofManager *giveInternalDofManager(int i) override;
75
76 void initializeFrom(InputRecord &ir) override;
77 void giveInputRecord(DynamicInputRecord &input) override;
78
79 bcType giveType() const override { return UnknownBT; }
80
81 void scale(double s) override;
82
83 void assembleVector(FloatArray &answer, TimeStep *tStep,
84 CharType type, ValueModeType mode,
85 const UnknownNumberingScheme &s, FloatArray *eNorm=nullptr, void* lock=nullptr) override;
86
87 void assemble(SparseMtrx &answer, TimeStep *tStep,
88 CharType type, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s,
89 double scale = 1.0, void* lock=nullptr) override;
90
91 void giveLocationArrays(std :: vector< IntArray > &rows, std :: vector< IntArray > &cols, CharType type,
92 const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s) override;
93
94 const char *giveClassName() const override { return "PrescribedDispSlipBCNeumannRC"; }
95 const char *giveInputRecordName() const override { return _IFT_PrescribedDispSlipBCNeumannRC_Name; }
96
97 void computeStress(FloatArray &sigma, TimeStep *tStep) override;
98 void computeTransferStress(FloatArray &bStress, TimeStep *tStep) override;
99 void computeReinfStress(FloatArray &rStress, TimeStep *tStep) override;
100
101 void computeTangent(FloatMatrix &tangent, TimeStep *tStep) override;
102
103protected:
104 bool dispGradON = false;
105 bool slipON = false;
106 bool slipGradON = false;
107
109 std :: unique_ptr< Node > mpSigmaHom;
111
113 std :: unique_ptr< Node > lmTauHom;
115
117 std :: unique_ptr< Node > lmSigmaSHom;
119
124
125 void integrateTangentStress(FloatMatrix &oTangent, Element *e, int iBndIndex);
126 void assembleVectorStress(FloatArray &answer, TimeStep *tStep, CharType type, ValueModeType mode, const UnknownNumberingScheme &s, FloatArray *eNorm);
127 void assembleOnStress(SparseMtrx &answer, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s, double scale);
128
129 void integrateTangentBStressSteel(FloatMatrix &oTangent, Element *e, const int &rebarSet);
131 void assembleVectorBStress(FloatArray &answer, TimeStep *tStep, CharType type, ValueModeType mode, const UnknownNumberingScheme &s);
132 void assembleOnTransferStress(SparseMtrx &answer, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s, double scale);
133
134 void integrateTangentRStressSteel(FloatMatrix &oTangent, Element *e, const int &rebarSet);
135 void integrateTangentRStressConcrete(FloatMatrix &oTangent, Element *e, int iBndIndex);
136 void assembleVectorRStress(FloatArray &answer, TimeStep *tStep, CharType type, ValueModeType mode, const UnknownNumberingScheme &s);
137 void assembleOnReinfStress(SparseMtrx &answer, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s, double scale);
138
139 void computeWeightMatrix(FloatMatrix &C, const IntArray &reinfSets);
140 void computeRebarDyad(FloatMatrix &dyad, const int &reinfSet);
141 double computeInterfaceLength(const IntArray &reinfSets);
142
143 virtual double domainSize(Domain *d, int set) override;
144};
145} /* namespace oofem */
146
147#endif /* PRESCRIBEDDISPSLIPBCNEUMANN_H_ */
ActiveBoundaryCondition(int n, Domain *d)
Definition activebc.h:71
int set
Set number for boundary condition to be applied to.
void assembleVectorBStress(FloatArray &answer, TimeStep *tStep, CharType type, ValueModeType mode, const UnknownNumberingScheme &s)
int concreteVolSet
Element set containing concrete elements (in the volume of RVE).
void computeWeightMatrix(FloatMatrix &C, const IntArray &reinfSets)
void integrateTangentRStressConcrete(FloatMatrix &oTangent, Element *e, int iBndIndex)
std ::unique_ptr< Node > lmSigmaSHom
DofManager for effective reinforcement membrane stress.
void giveInputRecord(DynamicInputRecord &input) override
void assembleOnStress(SparseMtrx &answer, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s, double scale)
void assembleOnReinfStress(SparseMtrx &answer, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s, double scale)
virtual double domainSize(Domain *d, int set) override
void assembleVectorRStress(FloatArray &answer, TimeStep *tStep, CharType type, ValueModeType mode, const UnknownNumberingScheme &s)
std ::unique_ptr< Node > lmTauHom
DofManager for effective transfer stress.
void assembleOnTransferStress(SparseMtrx &answer, const UnknownNumberingScheme &r_s, const UnknownNumberingScheme &c_s, double scale)
std ::unique_ptr< Node > mpSigmaHom
on/off flag specifying whether the slip gradient should be applied via Neumann BCs
void integrateTangentStress(FloatMatrix &oTangent, Element *e, int iBndIndex)
IntArray rebarSets
IntArray containing sets of individual reinforcement bars.
double computeInterfaceLength(const IntArray &reinfSets)
void integrateTangentBStressConcrete(FloatMatrix &oTangent, Element *e)
bool slipON
on/off flag specifying whether the displacement gradient should be applied via Neumann BCs
bool slipGradON
on/off flag specifying whether the slip field should be applied via Neumann BCs
void integrateTangentRStressSteel(FloatMatrix &oTangent, Element *e, const int &rebarSet)
void computeRebarDyad(FloatMatrix &dyad, const int &reinfSet)
int giveNumberOfInternalDofManagers() override
Gives the number of internal dof managers.
void integrateTangentBStressSteel(FloatMatrix &oTangent, Element *e, const int &rebarSet)
DofManager * giveInternalDofManager(int i) override
Gives an internal dof manager from receiver.
void assembleVectorStress(FloatArray &answer, TimeStep *tStep, CharType type, ValueModeType mode, const UnknownNumberingScheme &s, FloatArray *eNorm)
FloatMatrixF< N, M > dyad(const FloatArrayF< N > &a, const FloatArrayF< M > &b)
Computes the dyadic product .
FloatArrayF< N > assemble(const FloatArrayF< M > &x, int const (&c)[M])
Assemble components into zero matrix.
bcType
Type representing the type of bc.
Definition bctype.h:40
@ UnknownBT
Unknown.
Definition bctype.h:41
#define OOFEM_EXPORT
Definition oofemcfg.h:7
#define _IFT_PrescribedDispSlipBCNeumannRC_Name

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