88 double cumPlastStrain;
120 double elasStrain = strainVector.
at(1) - plasStrain;
121 double effStress =
E0 * elasStrain;
125 answer.
at(1) = ( 1. - tempDamage ) * effStress + sigc;
144 double nonlocalContribution, nonlocalCumPlastStrain = 0.0;
152 for (
auto &lir: *list ) {
155 nonlocalContribution *= lir.weight;
156 nonlocalCumPlastStrain += nonlocalContribution;
162 alpha =
mParam * nonlocalCumPlastStrain + ( 1 -
mParam ) * localCumPlastStrain;
251 if ( ( dist >= 0. ) && ( dist <= this->
R ) ) {
252 double help = ( 1. - dist * dist / ( R *
R ) );
304 fprintf(file,
"status {");
305 fprintf(file,
" plastrains ");
306 for (
auto &val :
epsp) {
307 fprintf( file,
" %.4e", val );
311 fprintf(file,
" alpha %.4e,",
alpha);
312 fprintf(file,
" dam %.4e",
dam);
313 fprintf(file,
"}\n");
Abstract base class for all nonlocal structural materials.
void letTempStrainVectorBe(const FloatArray &v)
Assigns tempStrainVector to given vector v.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual MaterialStatus * giveStatus(GaussPoint *gp) const
Returns material status of receiver in given integration point.
void updateDomainBeforeNonlocAverage(TimeStep *tStep)
Updates data in all integration points before nonlocal average takes place.
const FloatArray & giveTempPlasStrainVector()
virtual void giveRealStressVector_1d(FloatArray &answer, GaussPoint *gp, const FloatArray &strainVector, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
void setLocalCumPlastStrainForAverage(double ls)
virtual void computeCumPlastStrain(double &alpha, GaussPoint *gp, TimeStep *tStep)
double & at(int i)
Coefficient access function.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
void buildNonlocalPointTable(GaussPoint *gp)
Builds list of integration points which take part in nonlocal average in given integration point...
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
std::vector< localIntegrationRecord > * giveIntegrationDomainList()
Returns integration list of receiver.
void computeLocalCumPlastStrain(double &alpha, const FloatArray &strain, GaussPoint *gp, TimeStep *tStep)
void giveStressDependentPartOfStrainVector(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedStrainVector, TimeStep *tStep, ValueModeType mode)
Method for subtracting from reduced space strain vector its stress-independent parts (caused by tempe...
#define _IFT_TrabBoneNL_m
Trabecular bone material model.
virtual ~TrabBoneNLStatus()
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
virtual Interface * giveInterface(InterfaceType)
Interface requesting service.
virtual double computeWeightFunction(const FloatArray &src, const FloatArray &coord)
Evaluates the basic nonlocal weight function for two points with given coordinates.
IRResultType initializeFrom(InputRecord *ir)
double distance(const FloatArray &x) const
Computes the distance between position represented by receiver and position given as parameter...
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
double giveLocalCumPlastStrainForAverage()
#define _IFT_TrabBoneNL_r
This class implements associated Material Status to TrabBoneMaterial.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
double localCumPlastStrainForAverage
Equivalent strain for averaging.
void performPlasticityReturn(GaussPoint *gp, const FloatArray &totalStrain)
Class representing vector of real numbers.
TrabBoneNLStatus(int n, Domain *d, GaussPoint *g)
IRResultType
Type defining the return values of InputRecord reading operations.
void letTempStressVectorBe(const FloatArray &v)
Assigns tempStressVector to given vector v.
TrabBoneNL(int n, Domain *d)
double computeDamage(GaussPoint *gp, TimeStep *tStep)
Base class for all nonlocal structural material statuses.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
virtual void updateBeforeNonlocAverage(const FloatArray &strainVector, GaussPoint *gp, TimeStep *tStep)
Declares the service updating local variables in given integration points, which take part in nonloca...
virtual Interface * giveInterface(InterfaceType)
Interface requesting service.
void setTempDam(double da)
InterfaceType
Enumerative type, used to identify interface type.
double giveIntegrationScale()
Returns associated integration scale.
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
REGISTER_Material(DummyMaterial)
the oofem namespace is to define a context or scope in which all oofem names are defined.
virtual void initTempStatus(GaussPoint *gp)
Initializes temporary variables stored in integration point status at the beginning of new time step...
Class representing integration point in finite element program.
Class representing solution step.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
void resize(int s)
Resizes receiver towards requested size.
Trabecular bone nonlocal material status.