24 #ifndef _GEMA_XFEM_GAUSS_ACCESSOR_H_ 25 #define _GEMA_XFEM_GAUSS_ACCESSOR_H_ 29 class XfemMGaussValueSet;
51 assert(snum >= 0 && snum < gvs->numSets());
59 const XfemElement* e = dynamic_cast<const XfemElement*>(c);
68 virtual const double* valueAt(
const GmCell* c,
int ip,
const GmVector* coord)
const 72 return _ac->valueAt(queryIndex(c, ip), coord);
77 virtual double scalarValueAt(
const GmCell* c,
int ip,
const GmVector* coord)
const 81 return _ac->scalarValueAt(queryIndex(c, ip), coord);
88 mat.
setMemory(valueAt(c, ip, coord), _ac->info()->nlin(), _ac->info()->ncol());
93 vec.
setMemory(valueAt(c, ip, coord), _ac->info()->size());
96 virtual bool setValue(
const GmCell* c,
int ip,
const double* value)
98 const XfemElement* e = dynamic_cast<const XfemElement*>(c);
101 return _ac->setValue(queryIndex(c, ip), value);
106 virtual bool setScalarValue(
const GmCell* c,
int ip,
double value)
108 const XfemElement* e = dynamic_cast<const XfemElement*>(c);
111 return _ac->setScalarValue(queryIndex(c, ip), value);
116 virtual bool setScalarValueAtDim(
const GmCell* c,
int ip,
int dim,
double value)
118 const XfemElement* e = dynamic_cast<const XfemElement*>(c);
121 return _ac->setScalarValueAtDim(queryIndex(c, ip), dim, value);
125 assert(dim >= 0 && dim < n);
127 memcpy(data.data(), valueAt(c, ip, NULL), n *
sizeof(double));
129 return setValue(c, ip, data.data());
133 virtual bool setValueAsDef(
const GmCell* c,
int ip)
135 const XfemElement* e = dynamic_cast<const XfemElement*>(c);
138 return _ac->setValueAsDef(queryIndex(c, ip));
140 return memcpy(((
XfemGaussValueSet*)
_gvs)->dataPointer(e, ip,
_si), info()->defValue(), info()->size() *
sizeof(
double)),
true;
143 virtual bool setFunctionValue(
const GmCell* c,
int ip,
GmUserFunction* functionDef) { Q_UNUSED(c); Q_UNUSED(ip); Q_UNUSED(functionDef);
return false; }
144 virtual bool setFunctionValue(
const GmCell* c,
int ip,
GmUserFunctionEvaluator* functionEval) { Q_UNUSED(c); Q_UNUSED(ip); Q_UNUSED(functionEval);
return false; }
147 int fieldWidth = 0,
char format =
'g',
int precision = -1,
const GmVector* coord = NULL)
const;
151 Q_UNUSED(c); Q_UNUSED(ip); Q_UNUSED(userFunctionId);
152 err =
QObject::tr(
"Function values are currently unsuported by Xfem Gauss accessors.");
158 virtual bool isDefValue(
const GmCell* c,
int ip)
const 160 const XfemElement* e = dynamic_cast<const XfemElement*>(c);
163 return _ac->isDefValue(queryIndex(c, ip));
165 return !memcmp(((
XfemGaussValueSet*)
_gvs)->dataPointer(e, ip,
_si), info()->defValue(), info()->size() *
sizeof(
double));
168 virtual bool isFunction(
const GmCell* c,
int ip)
const { Q_UNUSED(c); Q_UNUSED(ip);
return false; }
169 virtual QString functionId(
const GmCell* c,
int ip)
const { Q_UNUSED(c); Q_UNUSED(ip);
return ""; }
184 const XfemElement* e = dynamic_cast<const XfemElement*>(c);
The XfemGaussAccessor class is a proxy object to a value accesor implementing a more convenient inter...
Definition: xfemGaussAccessor.h:40
virtual int numPoints(const GmCell *c) const
Returns the number of Gauss / integration points for the given cell.
Definition: xfemGaussAccessor.h:57
XfemGaussAccessor(GmValueAccessor *ac, XfemGaussValueSet *gvs, int snum)
Constructor. Takes ownership of the accessor.
Definition: xfemGaussAccessor.h:47
void setMemory(const double *data, int nlin)
QString tr(const char *sourceText, const char *disambiguation, int n)
void convertFromAccessorUnit(double val, double *dst) const
Basic interface for an XFEM element.
Definition: xfemElement.h:43
virtual int cellId() const=0
void saveCellInContext(const GmCell *c, int ip) const
int stateIndex(int snum) const
Translates a state number into the index needed by dataPointer()
Definition: xfemGaussValueSet.h:53
int _snum
The state number that this accessor is tied to.
Definition: xfemGaussAccessor.h:190
virtual bool setValueFromVariant(const GmCell *c, int ip, const QVariant &v, bool acceptMissingDimension, QString &err)
Missing a better solution, this is a striped down copy of the GmValueAccessor::setValueFromVariant() ...
Definition: xfemGaussAccessor.cpp:115
virtual int numPoints(const GmCell *c) const
virtual bool enriched() const =0
Returns true if this element has been enriched, false when not.
int _si
State index for defining which (history) state from the value set should be accessed.
Definition: xfemGaussAccessor.h:191
const XfemElement * saveElemInContext(const GmCell *c, int ip) const
Auxiliary function to check that c is a xfem element and to save the element in the context.
Definition: xfemGaussAccessor.h:182
Operating in colaboration with the XfemGaussAccessor class this value set extends the normal Gauss va...
Definition: xfemGaussValueSet.h:35
double convertToAccessorUnit(double val) const
virtual GmValueInfo * info() const=0
Declaration of the XfemElement class.
void setDataChanged(const GmValueSet *mvs)
Slot called when a state has been added to the value set, changing the index for locked accessors.
Definition: xfemGaussAccessor.h:173
virtual QString valueStr(const GmCell *c, int ip, bool evalFunctions, bool printDefAsNil, int fieldWidth=0, char format='g', int precision=-1, const GmVector *coord=NULL) const
Missing a better solution, this is a striped down copy of the GmValueAccessor::valueStr() implementat...
Definition: xfemGaussAccessor.cpp:43
const GmGaussValueSet * _gvs
void setMemory(const double *data, int nlin, int ncol)
bool canStoreFunctions() const
Declaration of the XfemGaussValueSet class.