35#ifndef nonlocalmaterialext_h
36#define nonlocalmaterialext_h
52#define _IFT_NonlocalMaterialExtensionInterface_regionmap "regionmap"
53#define _IFT_NonlocalMaterialExtensionInterface_permanentNonlocTableFlag "permanentnonloctableflag"
54#define _IFT_NonlocalMaterialExtensionInterface_r "r"
55#define _IFT_NonlocalMaterialExtensionInterface_wft "wft"
56#define _IFT_NonlocalMaterialExtensionInterface_averagingtype "averagingtype"
57#define _IFT_NonlocalMaterialExtensionInterface_m "m"
58#define _IFT_NonlocalMaterialExtensionInterface_scalingtype "scaling"
59#define _IFT_NonlocalMaterialExtensionInterface_averagedquantity "averagedvar"
60#define _IFT_NonlocalMaterialExtensionInterface_nonlocalvariation "nlvariation"
61#define _IFT_NonlocalMaterialExtensionInterface_beta "beta"
62#define _IFT_NonlocalMaterialExtensionInterface_zeta "zeta"
63#define _IFT_NonlocalMaterialExtensionInterface_px "px"
64#define _IFT_NonlocalMaterialExtensionInterface_averagingtype "averagingtype"
65#define _IFT_NonlocalMaterialExtensionInterface_exp "exp"
66#define _IFT_NonlocalMaterialExtensionInterface_rf "rf"
67#define _IFT_NonlocalMaterialExtensionInterface_gridsize "gridsize"
68#define _IFT_NonlocalMaterialExtensionInterface_initdiag "initdiag"
69#define _IFT_NonlocalMaterialExtensionInterface_order "order"
70#define _IFT_NonlocalMaterialExtensionInterface_centdiff "centdiff"
203 mutable double cl = 0.;
267 static omp_lock_t updateDomainBeforeNonlocAverageLock;
294 void updateDomainBeforeNonlocAverage(
TimeStep *tStep)
const;
304 void buildNonlocalPointTable(
GaussPoint *gp)
const;
319 void modifyNonlocalWeightFunctionAround(
GaussPoint *gp)
const;
320 void modifyNonlocalWeightFunction_1D_Around(
GaussPoint *gp)
const;
333 double computeDistanceModifier(
double cl,
double damage)
const;
339 double computeModifiedLength(
double length,
double dam1,
double dam2)
const;
348 std :: vector< localIntegrationRecord > *giveIPIntegrationList(
GaussPoint *gp)
const;
357 virtual double computeWeightFunction(
const double cl,
const double distance)
const;
367 virtual double computeWeightFunction(
const double cl,
const FloatArray &src,
const FloatArray &coord)
const;
373 double giveIntegralOfWeightFunction(
double cl,
const int spatial_dimension)
const;
377 virtual double maxValueOfWeightFunction();
399 virtual double evaluateSupportRadius(
double cl)
const;
423 void endIPNonlocalAverage(
GaussPoint *gp)
const;
436 void applyBarrierConstraints(
const FloatArray &gpCoords,
const FloatArray &jGpCoords,
double &weight)
const;
456 double giveDistanceBasedInteractionRadius(
const FloatArray &gpCoords)
const;
460 double dist2FromGridNode(
double x,
double y,
int j,
int i)
const {
return ( ( x - j ) * ( x - j ) + ( y - i ) * ( y - i ) ); }
double length(const Vector &a)
virtual ~NonlocalMaterialExtensionInterface()
Destructor.
Domain * giveDomain()
Returns reference to domain.
int averType
Parameter specifying how the weight function should be adjusted due to damage.
NlVariationType
Type characterizing the Nonlocal variation.
@ NLVT_DistanceBasedLinear
@ NLVT_DistanceBasedExponential
double exponent
Parameter used as an exponent by models with evolving characteristic length.
NlVariationType nlvar
Parameter specifying the type of nonlocal variation.
virtual double giveNonlocalMetricModifierAt(GaussPoint *gp) const
bool permanentNonlocTableFlag
Flag indicating whether to keep nonlocal interaction tables of integration points cached.
ScalingType
Type characterizing the scaling approach.
double suprad
Support radius.
AveragedVarType
Type characterizing the averaged (nonlocal) variable.
double Rf
Final value of interaction radius, for a model with evolving characteristic length.
virtual int hasBoundedSupport() const
ScalingType scaling
Parameter specifying the type of scaling of nonlocal weight function.
double initDiag
Optional parameters setting details of the fast marching method.
double dist2FromGridNode(double x, double y, int j, int i) const
int giveNumberOfRegions() const
int mapToGridPoint(double x, double x0) const
double mm
For "undernonlocal" or "overnonlocal" formulation.
WeightFunctionType weightFun
Parameter specifying the type of nonlocal weight function.
NonlocalMaterialExtensionInterface(Domain *d)
IntArray regionMap
Map indicating regions to skip (region - cross section model).
AveragedVarType averagedVar
Parameter specifying the type of averaged (nonlocal) variable.
int gridSize
Grid on which the eikonal equation will be solved (used by eikonal nonlocal models).
double mapToGridCoord(double x, double x0) const
void clear()
clears the integration list of receiver
void setIntegrationScale(double val)
Sets associated integration scale.
std ::vector< localIntegrationRecord > integrationDomainList
List containing localIntegrationRecord values.
double giveVolumeAround()
Returns associated volume.
void setVolumeAround(double val)
Sets associated integration scale.
double integrationScale
Nonlocal volume around the corresponding integration point.
std ::vector< localIntegrationRecord > * giveIntegrationDomainList()
double giveIntegrationScale()
Returns associated integration scale.
NonlocalMaterialStatusExtensionInterface()
double volumeAround
Local volume around the corresponding integration point.
double distance(const FloatArray &x, const FloatArray &y)
GaussPoint * nearGp
Reference to influencing integration point.
double weight
Corresponding integration weight.