42 #define MDM_USE_MMAClosestIPTransfer 48 #define MDM_MAPPING_DEBUG 1 53 #include "../sm/Materials/structuralms.h" 57 #ifdef MDM_MAPPING_DEBUG 63 #ifdef MDM_USE_MMAShapeFunctProjection 66 #ifdef MDM_USE_MMALeastSquareProjection 76 #define _IFT_MDM_Name "mdm" 77 #define _IFT_MDM_talpha "talpha" 78 #define _IFT_MDM_parmd "parmd" 79 #define _IFT_MDM_nonloc "nonloc" 80 #define _IFT_MDM_r "r" 81 #define _IFT_MDM_efp "efp" 82 #define _IFT_MDM_ep "ep" 83 #define _IFT_MDM_gf "gf" 84 #define _IFT_MDM_ft "ft" 85 #define _IFT_MDM_formulation "formulation" 86 #define _IFT_MDM_mode "mode" 87 #define _IFT_MDM_mapper "mapper" 88 #define _IFT_MDM_sourceRegionSet "sourceregset" 199 #ifdef MDM_MAPPING_DEBUG 209 #ifdef MDM_USE_MMAClosestIPTransfer 213 #ifdef MDM_USE_MMAShapeFunctProjection 217 #ifdef MDM_USE_MMALeastSquareProjection 234 linearElasticMaterial = NULL;
238 mdm_Ep = mdm_Efp = -1.0;
239 sourceElemSet = NULL;
243 if ( linearElasticMaterial ) {
244 delete linearElasticMaterial;
246 if ( sourceElemSet ) {
247 delete sourceElemSet;
251 virtual int hasMaterialModeCapability(
MaterialMode mode);
257 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
259 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
261 { this->giveRealStressVector(answer, gp, reducedE, tStep); }
263 virtual void give3dMaterialStiffnessMatrix(
FloatMatrix &answer,
283 virtual void initializeData(
int numberOfMicroplanes);
299 virtual int MMI_finish(
TimeStep *tStep);
304 virtual double predictRelativeComputationalCost(
GaussPoint *gp);
324 void applyDamageTranformation(
FloatArray &strainPDC,
const FloatArray &tempDamageTensorEigenVals);
328 void giveMaterialStiffnessMatrix(
FloatMatrix &answer,
338 virtual void givePlaneStrainStiffMtrx(
FloatMatrix &answer,
346 void giveRawMDMParameters(
double &Efp,
double &Ep,
const FloatArray &reducedStrain,
GaussPoint *gp);
double giveMicroplaneTempDamage(int m)
InternalStateType
Type representing the physical meaning of element or constitutive model internal variable.
Abstract base class for all nonlocal structural materials.
The class implements the transfer of state variables based on Least square fit over old mesh integrat...
virtual double predictRelativeRedistributionCost(GaussPoint *gp)
Returns the relative redistribution cost of the receiver.
Implementation of microplane damage material (According to M.Jirasek).
int ndc
Number of damage components.
virtual const char * giveClassName() const
double mdm_Ep
Parameter controlling the elastic limit.
GaussPoint * gp
Associated integration point.
The class implements the closest integration point transfer of state variables.
virtual void giveRealMicroplaneStressVector(FloatArray &answer, Microplane *mplane, const FloatArray &strain, TimeStep *tStep)
Computes real stress vector on given microplane (the meaning of values depends on particular implemen...
virtual const char * giveClassName() const
The purpose of DataStream abstract class is to allow to store/restore context to different streams...
Defines several material constant (respective their representative number).
virtual void giveRealStressVector_PlaneStrain(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_3d.
double Gf
Fracture energy (necessary to determine Ep and Efp if not given).
FloatMatrix damageTensorEigenVectors
double & at(int i)
Coefficient access function.
The class representing the general material model adaptive mapping interface.
This class implements a structural material status information.
const FloatMatrix & giveTempDamageTensorEigenVec()
void setTempDamageTensor(FloatMatrix src)
MDM(int n, Domain *d)
Constructor.
void setMicroplaneTempDamageValues(FloatArray src)
Material status class MDMStatus associated to MDM matarial.
MaterialMode
Type representing material mode of integration point.
virtual void initTempStatus()
Initializes the temporary internal variables, describing the current state according to previously re...
virtual void giveInputRecord(DynamicInputRecord &input)
Setups the input record string of receiver.
MatResponseMode
Describes the character of characteristic material matrix.
void setLocalDamageTensorForAverage(FloatMatrix src)
FloatMatrix tempDamageTensorEigenVectors
FloatArray tempDamageTensorEigenValues
Principal damage directions.
const FloatArray & giveDamageTensorEigenVals()
StructuralMaterial * giveLinearElasticMaterial()
Returns reference to undamaged (bulk) material.
virtual void giveRealStressVector_PlaneStress(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector_StressControl.
StructuralMaterial * linearElasticMaterial
Reference to bulk (undamaged) material.
double giveMicroplaneDamage(int m)
Abstract base class for all microplane models.
virtual void updateYourself(TimeStep *tStep)
Update equilibrium history variables according to temp-variables.
virtual IRResultType initializeFrom(InputRecord *ir)
Initializes receiver according to object description stored in input record.
FloatMatrix DamageTensor
Macroscopic damage tensor.
const FloatMatrix & giveDamageTensor()
double mdm_Efp
Prescribed value of ef-ep.
virtual void giveRealStressVector_3d(FloatArray &answer, GaussPoint *gp, const FloatArray &reducedE, TimeStep *tStep)
Default implementation relies on giveRealStressVector for second Piola-Kirchoff stress.
Class representing microplane integration point in finite element program.
double R
Interaction radius, related to the nonlocal characteristic length of material.
virtual Interface * giveInterface(InterfaceType it)
Interface requesting service.
virtual int hasBoundedSupport()
Determines, whether receiver has bounded weighting function (limited support).
Set of elements, boundaries, edges and/or nodes.
int nsd
Number of spatial dimensions.
FloatArray Psi
Damage values on individual microplanes.
virtual void giveSupportRadius(double &radius)
Determines the width (radius) of limited support of weighting function.
double Ft
Macroscopic tensile strength (necessary to determine Ep and Efp if not given).
virtual const char * giveInputRecordName() const
Abstract base class representing a material status information.
const FloatMatrix & giveTempDamageTensor()
Class representing vector of real numbers.
FloatArray strainVector
Equilibrated strain vector in reduced form.
Implementation of matrix containing floating point numbers.
IRResultType
Type defining the return values of InputRecord reading operations.
virtual ~MDM()
Destructor.
virtual contextIOResultType restoreContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Restores the receiver state previously written in stream.
The class implements the transfer of state variables based on projection using shape functions...
double tempDillatCoeff
Temperature dilatation coeff.
MDMStatus(int n, int nsd, int nmplanes, Domain *d, GaussPoint *g)
virtual MaterialStatus * CreateMicroplaneStatus(GaussPoint *gp)
FloatMatrix DamageTensorTemp
Base class for all nonlocal structural material statuses.
MDMFormulatrionType formulation
const FloatArray & giveTempDamageTensorEigenVals()
void setTempDamageTensorEigenVals(FloatArray src)
long ContextMode
Context mode (mask), defining the type of information written/read to/from context.
Abstract base class for all "structural" constitutive models.
virtual void printOutputAt(FILE *file, TimeStep *tStep)
Print receiver's output to given stream.
InterfaceType
Enumerative type, used to identify interface type.
void setTempDamageTensorEigenVec(FloatMatrix src)
FloatMatrix localDamageTensor
Set * sourceElemSet
cached source element set used to map internal variables (adaptivity), created on demand ...
FloatArray damageTensorEigenValues
const FloatArray & giveMicroplaneDamageValues()
const FloatMatrix * giveLocalDamageTensorForAveragePtr()
the oofem namespace is to define a context or scope in which all oofem names are defined.
void setMicroplaneTempDamage(int m, double val)
int nonlocal
Flag indicating local or nonlocal mode.
const FloatMatrix & giveLocalDamageTensorForAverage()
const FloatMatrix & giveDamageTensorEigenVec()
Class representing integration point in finite element program.
static MMAClosestIPTransfer mapper2
Mapper used to map stresses in adaptivity.
virtual contextIOResultType saveContext(DataStream &stream, ContextMode mode, void *obj=NULL)
Stores receiver state to output stream.
Class representing solution step.
static MMALeastSquareProjection mapperLST