35#ifndef PRESCRIBEDDISPSLIPBCNEUMANN_H_
36#define PRESCRIBEDDISPSLIPBCNEUMANN_H_
44#define _IFT_PrescribedDispSlipBCNeumannRC_Name "prescribeddispslipbcneumannrc"
45#define _IFT_PrescribedDispSlipBCNeumannRC_ConcreteVolSet "concretevolset"
46#define _IFT_PrescribedDispSlipBCNeumannRC_RebarSets "rebarsets"
81 void scale(
double s)
override;
89 double scale = 1.0,
void* lock=
nullptr)
override;
91 void giveLocationArrays(std :: vector< IntArray > &rows, std :: vector< IntArray > &cols,
CharType type,
94 const char *
giveClassName()
const override {
return "PrescribedDispSlipBCNeumannRC"; }
ActiveBoundaryCondition(int n, Domain *d)
int set
Set number for boundary condition to be applied to.
void assembleVectorBStress(FloatArray &answer, TimeStep *tStep, CharType type, ValueModeType mode, const UnknownNumberingScheme &s)
const char * giveInputRecordName() const override
int concreteVolSet
Element set containing concrete elements (in the volume of RVE).
const char * giveClassName() const override
void computeWeightMatrix(FloatMatrix &C, const IntArray &reinfSets)
PrescribedDispSlipBCNeumannRC(int n, Domain *d)
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)
void scale(double s) override
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 initializeFrom(InputRecord &ir) override
void integrateTangentBStressSteel(FloatMatrix &oTangent, Element *e, const int &rebarSet)
DofManager * giveInternalDofManager(int i) override
Gives an internal dof manager from receiver.
bcType giveType() const override
void assembleVectorStress(FloatArray &answer, TimeStep *tStep, CharType type, ValueModeType mode, const UnknownNumberingScheme &s, FloatArray *eNorm)
PrescribedDispSlipHomogenization()
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.
#define _IFT_PrescribedDispSlipBCNeumannRC_Name