35#ifndef enrichmentfunction_h
36#define enrichmentfunction_h
41#define _IFT_DiscontinuousFunction_Name "discontinuousfunction"
42#define _IFT_HeavisideFunction_Name "heavisidefunction"
43#define _IFT_RampFunction_Name "rampfunction"
47class EnrichmentDomain;
84 virtual void giveJump(std :: vector< double > &oJumps)
const = 0;
88 const char *
giveClassName()
const override {
return "EnrichmentFunction"; }
101 void evaluateEnrFuncAt(
double &oEnrFunc,
const FloatArray &iPos,
const double &iLevelSet)
const override;
102 void evaluateEnrFuncDerivAt(
FloatArray &oEnrFuncDeriv,
const FloatArray &iPos,
const double &iLevelSet,
const FloatArray &iGradLevelSet)
const override;
104 void giveJump(std :: vector< double > &oJumps)
const override {
106 oJumps.push_back(2.0);
109 const char *
giveClassName()
const override {
return "DiscontinuousFunction"; }
125 void evaluateEnrFuncAt(
double &oEnrFunc,
const FloatArray &iPos,
const double &iLevelSet)
const override;
126 void evaluateEnrFuncDerivAt(
FloatArray &oEnrFuncDeriv,
const FloatArray &iPos,
const double &iLevelSet,
const FloatArray &iGradLevelSet)
const override;
128 void giveJump(std :: vector< double > &oJumps)
const override {
130 oJumps.push_back(1.0);
143 void evaluateEnrFuncAt(std :: vector< double > &oEnrFunc,
const double &iR,
const double &iTheta)
const;
144 void evaluateEnrFuncDerivAt(std :: vector< FloatArray > &oEnrFuncDeriv,
const double &iR,
const double &iTheta)
const;
146 void giveJump(std :: vector< double > &oJumps)
const;
147 void giveJump(std :: vector< double > &oJumps,
const double &iRadius)
const;
162 void evaluateEnrFuncAt(std :: vector< double > &oEnrFunc,
const double &iR,
const double &iTheta)
const;
163 void evaluateEnrFuncDerivAt(std :: vector< FloatArray > &oEnrFuncDeriv,
const double &iR,
const double &iTheta)
const;
165 void giveJump(std :: vector< double > &oJumps)
const;
166 void giveJump(std :: vector< double > &oJumps,
const double &iRadius)
const;
181 void evaluateEnrFuncAt(
double &oEnrFunc,
const FloatArray &iPos,
const double &iLevelSet)
const override;
182 void evaluateEnrFuncDerivAt(
FloatArray &oEnrFuncDeriv,
const FloatArray &iPos,
const double &iLevelSet,
const FloatArray &iGradLevelSet)
const override;
184 void giveJump(std :: vector< double > &oJumps)
const override {
186 oJumps.push_back(0.0);
std::string errorInfo(const char *func) const
const char * giveClassName() const
DiscontinuousFunction(int n, Domain *aDomain)
const char * giveInputRecordName() const override
const char * giveClassName() const override
void giveJump(std ::vector< double > &oJumps) const override
void giveInputRecord(DynamicInputRecord &input) override
void initializeFrom(InputRecord &ir) override
const char * giveClassName() const override
virtual void evaluateEnrFuncDerivAt(FloatArray &oEnrFuncDeriv, const FloatArray &iPos, const double &iLevelSet, const FloatArray &iGradLevelSet) const =0
virtual void evaluateEnrFuncAt(double &oEnrFunc, const FloatArray &iPos, const double &iLevelSet) const =0
virtual void giveJump(std ::vector< double > &oJumps) const =0
int giveNumberOfDofs() const
virtual ~EnrichmentFunction()
Destructor.
EnrichmentFunction(int n, Domain *aDomain)
FEMComponent(int n, Domain *d)
void giveJump(std ::vector< double > &oJumps) const override
const char * giveInputRecordName() const override
HeavisideFunction(int n, Domain *aDomain)
const char * giveClassName() const override
std::string errorInfo(const char *func) const
const char * giveClassName() const
RampFunction(int n, Domain *aDomain)
void giveJump(std ::vector< double > &oJumps) const override
const char * giveInputRecordName() const override
const char * giveClassName() const override
#define _IFT_DiscontinuousFunction_Name
#define _IFT_RampFunction_Name
#define _IFT_HeavisideFunction_Name