35#ifndef huertaerrorestimator_h
36#define huertaerrorestimator_h
50#define _IFT_HuertaErrorEstimator_Name "huerta"
51#define _IFT_HuertaErrorEstimator_normtype "normtype"
52#define _IFT_HuertaErrorEstimator_refinelevel "refinelevel"
53#define _IFT_HuertaErrorEstimator_requirederror "requirederror"
54#define _IFT_HuertaErrorEstimator_skipsteps "skipsteps"
55#define _IFT_HuertaErrorEstimator_initialskipsteps "initialskipsteps"
56#define _IFT_HuertaErrorEstimator_werror "werror"
57#define _IFT_HuertaErrorEstimator_perfectCSect "perCSect"
58#define _IFT_HuertaErrorEstimator_impCSect "impCSect"
59#define _IFT_HuertaErrorEstimator_impPos "imppos"
60#define _IFT_HuertaErrorEstimator_exact "exact"
65#define _IFT_HuertaRemeshingCriteria_requirederror "requirederror"
66#define _IFT_HuertaRemeshingCriteria_minelemsize "minelemsize"
67#define _IFT_HuertaRemeshingCriteria_noremesh "noremesh"
68#define _IFT_HuertaRemeshingCriteria_werror "werror"
69#define _IFT_HuertaRemeshingCriteria_refinecoeff "refinecoeff"
74#define _IFT_HuertaErrorEstimatorInterface_coords "coords"
170 const char *
giveClassName()
const override {
return "HuertaErrorEstimator"; }
219 int nodes,
int elems,
int csects,
int mats,
int loads,
int funcs,
242 HuertaErrorEstimatorInterface :: SetupMode mode,
TimeStep *tStep,
243 int &localNodeId,
int &localElemId,
int &localBcId,
245 HuertaErrorEstimator :: AnalysisMode aMode) = 0;
251 int level,
int nodeId,
IntArray &localNodeIdArray,
IntArray &globalNodeIdArray,
252 HuertaErrorEstimatorInterface :: SetupMode mode,
TimeStep *tStep,
int nodes,
254 int &localNodeId,
int &localElemId,
int &localBcId,
256 HuertaErrorEstimator :: AnalysisMode aMode,
const char *edgetype);
259 int level,
int nodeId,
IntArray &localNodeIdArray,
IntArray &globalNodeIdArray,
260 HuertaErrorEstimatorInterface :: SetupMode mode,
TimeStep *tStep,
int nodes,
262 int &localNodeId,
int &localElemId,
int &localBcId,
264 HuertaErrorEstimator :: AnalysisMode aMode,
const char *quadtype);
267 int level,
int nodeId,
IntArray &localNodeIdArray,
IntArray &globalNodeIdArray,
268 HuertaErrorEstimatorInterface :: SetupMode mode,
TimeStep *tStep,
int nodes,
270 int &localNodeId,
int &localElemId,
int &localBcId,
271 int hexaSideNode [ 1 ] [ 3 ],
int hexaFaceNode [ 1 ] [ 3 ],
273 HuertaErrorEstimator :: AnalysisMode aMode,
const char *hexatype);
324 const char *
giveClassName()
const override {
return "HuertaErrorEstimator"; }
ErrorEstimatorType eeType
ErrorEstimator(int n, Domain *d)
Constructor.
virtual void HuertaErrorEstimatorI_computeNmatrixAt(GaussPoint *gp, FloatMatrix &answer)=0
SetupMode
Mode for problem setup.
void setupRefinedElementProblem1D(Element *element, RefinedElement *refinedElement, int level, int nodeId, IntArray &localNodeIdArray, IntArray &globalNodeIdArray, HuertaErrorEstimatorInterface ::SetupMode mode, TimeStep *tStep, int nodes, FloatArray *corner, FloatArray &midNode, int &localNodeId, int &localElemId, int &localBcId, IntArray &controlNode, IntArray &controlDof, HuertaErrorEstimator ::AnalysisMode aMode, const char *edgetype)
void setupRefinedElementProblem3D(Element *element, RefinedElement *refinedElement, int level, int nodeId, IntArray &localNodeIdArray, IntArray &globalNodeIdArray, HuertaErrorEstimatorInterface ::SetupMode mode, TimeStep *tStep, int nodes, FloatArray *corner, FloatArray *midSide, FloatArray *midFace, FloatArray &midNode, int &localNodeId, int &localElemId, int &localBcId, int hexaSideNode[1][3], int hexaFaceNode[1][3], IntArray &controlNode, IntArray &controlDof, HuertaErrorEstimator ::AnalysisMode aMode, const char *hexatype)
HuertaErrorEstimatorInterface()
Constructor.
void setupRefinedElementProblem2D(Element *element, RefinedElement *refinedElement, int level, int nodeId, IntArray &localNodeIdArray, IntArray &globalNodeIdArray, HuertaErrorEstimatorInterface ::SetupMode mode, TimeStep *tStep, int nodes, FloatArray *corner, FloatArray *midSide, FloatArray &midNode, int &localNodeId, int &localElemId, int &localBcId, IntArray &controlNode, IntArray &controlDof, HuertaErrorEstimator ::AnalysisMode aMode, const char *quadtype)
virtual void HuertaErrorEstimatorI_setupRefinedElementProblem(RefinedElement *refinedElement, int level, int nodeId, IntArray &localNodeIdArray, IntArray &globalNodeIdArray, HuertaErrorEstimatorInterface ::SetupMode mode, TimeStep *tStep, int &localNodeId, int &localElemId, int &localBcId, IntArray &controlNode, IntArray &controlDof, HuertaErrorEstimator ::AnalysisMode aMode)=0
void setupRefinedProblemProlog(const char *problemName, int problemId, IntArray &localNodeIdArray, int nodes, int elems, int csects, int mats, int loads, int funcs, IntArray &controlNode, IntArray &controlDof, TimeStep *tStep)
bool wError
Weighted error flag.
std ::vector< RefinedElement > refinedElementList
Fine mesh.
void extractVectorFrom(Element *element, FloatArray &vector, FloatArray &answer, int dofs, TimeStep *tStep)
int giveRefinementLevel()
AnalysisMode mode
Linear analysis flag.
void setupRefinedProblemEpilog2(int tfuncs)
void solveRefinedElementProblem(int elemId, IntArray &localNodeIdArray, IntArray &globalNodeIdArray, TimeStep *tStep)
const char * giveInputRecordName() const override
double requiredError
Required error to obtain.
void solveRefinedPatchProblem(int nodeId, IntArray &localNodeIdArray, IntArray &globalNodeIdArray, TimeStep *tStep)
double giveValue(EE_ValueType type, TimeStep *tStep) override
void setupRefinedProblemEpilog1(int csects, int mats, int loads, int nlbarriers)
void restoreContext(DataStream &stream, ContextMode mode) override
RefinedMesh refinedMesh
Mesh refinement.
StateCounterType stateCounter
Actual state counter.
virtual ~HuertaErrorEstimator()
Destructor.
void saveContext(DataStream &stream, ContextMode mode) override
HuertaErrorEstimator(int n, Domain *d)
Constructor.
NormType
Type of norm used.
void initializeFrom(InputRecord &ir) override
double globalUNorm
Global norm of primary unknown.
double globalWENorm
Global weighted error norm.
AnalysisMode giveAnalysisMode()
double globalENorm
Global error norm.
FloatArray eNorms
Cache storing element norms.
const char * giveClassName() const override
AnalysisMode
Mode of analysis.
double giveElementError(EE_ErrorType type, Element *elem, TimeStep *tStep) override
int estimateError(EE_ErrorMode err_mode, TimeStep *tStep) override
RemeshingCriteria * giveRemeshingCrit() override
NormType normType
Type of norm used.
double globalErrorEstimate
Global error estimate (relative).
int refineLevel
Refinement level.
FloatArray primaryUnknownError
Primary unknown nodal error.
void solveRefinedWholeProblem(IntArray &localNodeIdArray, IntArray &globalNodeIdArray, TimeStep *tStep)
const char * giveInputRecordName() const override
FloatArray nodalDensities
Array of nodal mesh densities.
void initializeFrom(InputRecord &ir) override
StateCounterType stateCounter
Actual values (densities) state counter.
bool noRemesh
Remeshing flag.
HuertaRemeshingCriteriaModeType
Mode of receiver, allows to use it in more general situations.
double giveRequiredDofManDensity(int num, TimeStep *tStep, int relative=0) override
RemeshingStrategy giveRemeshingStrategy(TimeStep *tStep) override
bool wError
Weighted error flag.
double requiredError
Required error to obtain.
virtual ~HuertaRemeshingCriteria()
Destructor.
HuertaRemeshingCriteria(int n, ErrorEstimator *e)
Constructor.
double refineCoeff
Refinement coefficient.
int estimateMeshDensities(TimeStep *tStep) override
double giveDofManDensity(int num) override
double minElemSize
Minimum element size alloved.
const char * giveClassName() const override
HuertaRemeshingCriteriaModeType mode
Mode of receiver.
RemeshingStrategy remeshingStrategy
Remeshing strategy proposed.
RemeshingCriteria(int n, ErrorEstimator *e)
Constructor.
long StateCounterType
StateCounterType type used to indicate solution state.
RemeshingStrategy
Type representing the remeshing strategy.