81 nlstatus->letTempStrainVectorBe(strainVector);
85 nlstatus->setLocalCumPlastStrainForAverage(cumPlastStrain);
104 double plasStrain = nlStatus->giveTempPlasStrainVector().at(1);
105 double elasStrain = strainVector.
at(1) - plasStrain;
106 double effStress =
E0 * elasStrain;
107 double sigc = nlStatus->giveSigC();
111 nlStatus->setTempDam(tempDamage);
112 nlStatus->letTempStrainVectorBe(strainVector);
113 nlStatus->letTempStressVectorBe(stress);
134 auto list = status->giveIntegrationDomainList();
136 double nonlocalCumPlastStrain = 0.0;
137 for (
auto &lir: *list ) {
140 nonlocalContribution *= lir.weight;
141 nonlocalCumPlastStrain += nonlocalContribution;
144 nonlocalCumPlastStrain *= 1. / status->giveIntegrationScale();
146 double localCumPlastStrain = status->giveLocalCumPlastStrainForAverage();
147 return mParam * nonlocalCumPlastStrain + ( 1 -
mParam ) * localCumPlastStrain;
181 TrabBoneMaterial :: initializeFrom(ir);
182 StructuralNonlocalMaterialExtensionInterface :: initializeFrom(ir);
205 TrabBoneMaterial :: giveInputRecord(input);
225 if ( ( dist >= 0. ) && ( dist <= this->
R ) ) {
226 double help = ( 1. - dist * dist / (
R *
R ) );
250TrabBoneNLStatus :: printOutputAt(FILE *file,
TimeStep *tStep)
const
252 StructuralMaterialStatus :: printOutputAt(file, tStep);
253 fprintf(file,
"status {");
254 fprintf(file,
" plastrains ");
255 for (
auto &val :
epsp) {
256 fprintf( file,
" %.4e", val );
260 fprintf(file,
" alpha %.4e,",
alpha);
261 fprintf(file,
" dam %.4e",
dam);
262 fprintf(file,
"}\n");
270TrabBoneNLStatus :: initTempStatus()
272 TrabBoneMaterialStatus :: initTempStatus();
287 TrabBoneMaterialStatus :: updateYourself(tStep);
#define REGISTER_Material(class)
double & at(std::size_t i)
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
virtual void initTempStatus(GaussPoint *gp) const
void buildNonlocalPointTable(GaussPoint *gp) const
void updateDomainBeforeNonlocAverage(TimeStep *tStep) const
void giveStressDependentPartOfStrainVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrainVector, TimeStep *tStep, ValueModeType mode) const
StructuralNonlocalMaterialExtensionInterface(Domain *d)
StructuralNonlocalMaterialStatusExtensionInterface()
TrabBoneMaterialStatus(GaussPoint *g)
TrabBoneMaterial(int n, Domain *d)
void performPlasticityReturn(GaussPoint *gp, const FloatArray &totalStrain) const
double computeDamage(GaussPoint *gp, TimeStep *tStep) const
double giveLocalCumPlastStrainForAverage() const
double computeLocalCumPlastStrain(const FloatArray &strain, GaussPoint *gp, TimeStep *tStep) const
@ NonlocalMaterialStatusExtensionInterfaceType
@ NonlocalMaterialExtensionInterfaceType
double distance(const FloatArray &x, const FloatArray &y)
#define _IFT_TrabBoneNL_m
#define _IFT_TrabBoneNL_r