IFEM 90A354
AdaptiveSetup.h
Go to the documentation of this file.
1// $Id$
2//==============================================================================
12//==============================================================================
13
14#ifndef _ADAPTIVE_SETUP_H
15#define _ADAPTIVE_SETUP_H
16
17#include "MatVec.h"
18
19#include <utility>
20
21class ScalarFunc;
22class SIMoutput;
23namespace tinyxml2 { class XMLElement; }
24namespace LR { struct RefineData; }
25
26
38{
39public:
43 explicit AdaptiveSetup(SIMoutput& sim, bool sa = true);
45 virtual ~AdaptiveSetup();
46
48 void setAdaptationNorm(size_t g, size_t i = 0) { adaptor = g; adNorm = i; }
49
52 bool initPrm(size_t normGroup);
53
63 int calcRefinement(LR::RefineData& prm, int iStep,
64 const Vectors& gNorm, const Vector& refIn,
65 int currDofs = -1) const;
66
70 bool parse(char* keyWord, std::istream& is);
73 bool parse(const tinyxml2::XMLElement* elem);
74
81 void printNorms(const Vectors& gNorm, const Vectors& dNorm,
82 const Matrix& eNorm, size_t w = 36,
83 bool printModelNorms = true) const;
84
87 bool writeMesh(int iStep) const;
88
90 size_t eIdx() const { return eRow; }
91
92protected:
94
95 size_t adaptor;
96 size_t adNorm;
97 size_t eRow;
98 double rCond;
99
104 using DblIdx = std::pair<double,int>;
105
108 {
109 double limit = 0.0;
110 double sumErr = 0.0;
111 double curErr = 0.0;
112 };
113
115 enum Threshold { NONE=0, MAXIMUM, AVERAGE, MINIMUM, TRUE_BETA,
116 DORFEL, SYMMETRIZED };
117
122 static ErrorInfo errorLimits(const std::vector<DblIdx>& errors,
123 const double beta,
124 const Threshold threshold);
125
126private:
127 bool alone;
128 bool linIndep;
129 double beta;
131 double errTol;
132 double condLimit;
137 double maxAspect;
139 double symmEps;
140
142 enum RefScheme { FULLSPAN=0, MINSPAN=1,
143 ISOTROPIC_FUNCTION=2,
144 ISOTROPIC_ELEMENT=3 };
145
148
150 std::string mshPrefix;
151 std::string errPrefix;
152};
153
154#endif
Global algebraic operations on index 1-based matrices and vectors.
std::vector< Vector > Vectors
An array of real-valued vectors with algebraic operations.
Definition MatVec.h:37
Adaptive solution setup for linear and nonlinear FEM simulators.
Definition AdaptiveSetup.h:38
std::string mshPrefix
Prefix for output files with refined meshes.
Definition AdaptiveSetup.h:150
bool closeGaps
Split elements with a hanging node on each side.
Definition AdaptiveSetup.h:138
size_t eIdx() const
Returns the row-index of the element norm to use for adaptation.
Definition AdaptiveSetup.h:90
size_t adNorm
Which norm to base the mesh adaptation on.
Definition AdaptiveSetup.h:96
RefScheme
Enum defining available refinement scheme options.
Definition AdaptiveSetup.h:142
int maxStep
Maximum number of adaptive refinements.
Definition AdaptiveSetup.h:133
int storeMesh
Flag telling what kind of mesh output we want.
Definition AdaptiveSetup.h:149
int calcRefinement(LR::RefineData &prm, int iStep, const Vectors &gNorm, const Vector &refIn, int currDofs=-1) const
Calculates mesh refinement control data based on error estimates.
Definition AdaptiveSetup.C:247
bool parse(char *keyWord, std::istream &is)
Parses a data section from an input stream.
Definition AdaptiveSetup.C:165
bool writeMesh(int iStep) const
Dumps current mesh to external file(s) for inspection.
Definition AdaptiveSetup.C:525
Threshold threshold
Flag for how to interpret the parameter beta.
Definition AdaptiveSetup.h:146
bool linIndep
Test mesh for linear independence after refinement.
Definition AdaptiveSetup.h:128
SIMoutput & model
The isogeometric FE model.
Definition AdaptiveSetup.h:93
std::pair< double, int > DblIdx
Element error and associated index.
Definition AdaptiveSetup.h:104
double errTol
Global error stop tolerance.
Definition AdaptiveSetup.h:131
bool initPrm(size_t normGroup)
Initializes the norm group parameters.
Definition AdaptiveSetup.C:199
void printNorms(const Vectors &gNorm, const Vectors &dNorm, const Matrix &eNorm, size_t w=36, bool printModelNorms=true) const
Prints out global norms to the log stream.
Definition AdaptiveSetup.C:459
virtual ~AdaptiveSetup()
Empty destructor.
Definition AdaptiveSetup.C:59
Threshold
Enum defining the refinement threshold flag values.
Definition AdaptiveSetup.h:115
std::string errPrefix
Prefix for text files with refinement indicators.
Definition AdaptiveSetup.h:151
bool alone
If false, this class is wrapped by SIMSolver.
Definition AdaptiveSetup.h:127
double rCond
Actual reciprocal condition number of the last mesh.
Definition AdaptiveSetup.h:98
size_t adaptor
Norm group to base the mesh adaptation on.
Definition AdaptiveSetup.h:95
int maxDOFs
Maximum number of degrees of freedom.
Definition AdaptiveSetup.h:134
size_t eRow
Row-index in eNorm of the norm to use for adaptation.
Definition AdaptiveSetup.h:97
int maxTjoints
Maximum number of hanging nodes on one element.
Definition AdaptiveSetup.h:136
double condLimit
Upper limit on condition number.
Definition AdaptiveSetup.h:132
static ErrorInfo errorLimits(const std::vector< DblIdx > &errors, const double beta, const Threshold threshold)
Calculate error limits for a vector of errors.
Definition AdaptiveSetup.C:555
ScalarFunc * betaFunc
Beta as a function.
Definition AdaptiveSetup.h:130
double beta
Refinement percentage in each step.
Definition AdaptiveSetup.h:129
void setAdaptationNorm(size_t g, size_t i=0)
Sets the norm group/index of the norm to base mesh adaptation on.
Definition AdaptiveSetup.h:48
int knot_mult
Knotline multiplicity.
Definition AdaptiveSetup.h:135
double symmEps
Epsilon used for symmetrized selection method.
Definition AdaptiveSetup.h:139
RefScheme scheme
The actual refinement scheme to use.
Definition AdaptiveSetup.h:147
double maxAspect
Maximum element aspect ratio.
Definition AdaptiveSetup.h:137
Sub-class with additional functionality for result output.
Definition SIMoutput.h:33
Scalar-valued unary function of a scalar value.
Definition Function.h:127
A vector class with some added algebraic operations.
Definition matrix.h:64
Utilities for LR-splines.
Definition AdaptiveSetup.h:24
Struct holding info about errors.
Definition AdaptiveSetup.h:108
double limit
Limit for errors.
Definition AdaptiveSetup.h:109
double curErr
Current error.
Definition AdaptiveSetup.h:111
double sumErr
Sum of errors, beta-scaled target for DORFEL.
Definition AdaptiveSetup.h:110
A struct of data to control the mesh refinement.
Definition ASMunstruct.h:44