SCOREC core
Parallel unstructured mesh tools
maInput.h
Go to the documentation of this file.
1 /******************************************************************************
2 
3  Copyright 2013 Scientific Computation Research Center,
4  Rensselaer Polytechnic Institute. All rights reserved.
5 
6  The LICENSE file included with this distribution describes the terms
7  of the SCOREC Non-Commercial License this program is distributed under.
8 
9 *******************************************************************************/
10 #ifndef MA_INPUT_H
11 #define MA_INPUT_H
12 
22 #include "maMesh.h"
23 #include "maSize.h"
24 #include "maSolutionTransfer.h"
25 
26 namespace ma {
27 
28 class ShapeHandler;
29 class Adapt;
30 
31 typedef ShapeHandler* (*ShapeHandlerFunction)(Adapt* a);
32 
34 class Input
35 {
36  public:
37  ~Input() {}
38  Input() {} // default empty c-tor
39  Input(const Input& in) = default; // copy c-tor
40  Mesh* mesh;
41  SizeField* sizeField;
42  bool ownsSizeField;
43  SolutionTransfer* solutionTransfer;
44  bool ownsSolutionTransfer;
45  ShapeHandlerFunction shapeHandler;
56  bool shouldSnap;
73  double goodQuality;
80  double validQuality;
166  const char* debugFolder;
167 };
168 
174  Mesh* m,
176  SolutionTransfer* s=0,
177  bool logInterpolation=true);
182  Mesh* m,
184  SolutionTransfer* s=0);
194  Mesh* m,
195  apf::Field* sizes,
196  apf::Field* frames,
197  SolutionTransfer* s=0,
198  bool logInterpolation=true);
204  Mesh* m,
205  apf::Field* size,
206  SolutionTransfer* s=0);
207 
211 const Input* configureMatching(Mesh* m, int n=1, SolutionTransfer* s=0);
213 const Input* configureIdentity(Mesh* m, SizeField* f=0, SolutionTransfer* s=0);
214 
217 
220 
221 }
222 
223 #endif
Extended mesh interface for modification.
Definition: apfMesh2.h:30
User-defined Anisotropic size function.
Definition: maSize.h:82
User configuration for a MeshAdapt run.
Definition: maInput.h:35
int maximumIterations
number of refine/coarsen iterations to run (default 3)
Definition: maInput.h:51
const char * userDefinedLayerTagName
the name of the (user defined) INT tag specifying the boundary layer elements. Use the value of 0 for...
Definition: maInput.h:164
const char * debugFolder
this a folder that debugging meshes will be written to, if provided!
Definition: maInput.h:166
bool shouldPrintQuality
whether to print the worst shape quality
Definition: maInput.h:70
bool shouldRunPreMetis
Whether to run METIS before adaptation (default false)
Definition: maInput.h:101
double maximumEdgeRatio
the ratio between longest and shortest edges that differentiates a "short edge" element from a "large...
Definition: maInput.h:150
bool shouldRunPostZoltan
whether to run zoltan after adapting (default false)
Definition: maInput.h:128
double goodQuality
minimum desired mean ratio cubed for simplex elements
Definition: maInput.h:73
double shouldCheckQualityForDoubleSplits
whether to check the quality of split elems in DoubleSplitsCollapse (default false)
Definition: maInput.h:76
bool shouldRunPostParma
whether to run parma after adapting (default false)
Definition: maInput.h:147
bool shouldRunMidZoltan
whether to run zoltan during adaptation (default false)
Definition: maInput.h:109
bool shouldHandleMatching
whether to update matched entity info (limited support)
Definition: maInput.h:64
bool shouldRunPreZoltanRib
whether to run zoltan predictive load balancing using RIB (default false)
Definition: maInput.h:90
bool shouldTurnLayerToTets
whether to tetrahedronize the boundary layer (default false)
Definition: maInput.h:152
bool splitAllLayerEdges
set to true during UR to get splits in the normal direction
Definition: maInput.h:160
bool shouldRunPostZoltanRib
whether to run zoltan RIB after adapting (default false)
Definition: maInput.h:132
double validQuality
minimum valid mean ratio cubed for simplex elements (default 1e-10)
Definition: maInput.h:80
bool shouldRunMidParma
whether to run parma during adaptation (default false)
Definition: maInput.h:124
bool shouldRefineLayer
whether to allow layer refinement (default false)
Definition: maInput.h:156
bool shouldRunPostMetis
Whether to run METIS after adaptation (default false)
Definition: maInput.h:143
bool shouldRunPreParma
whether to run parma predictive load balancing (default false)
Definition: maInput.h:105
bool shouldTransferParametric
whether to transfer parametric coordinates
Definition: maInput.h:59
bool shouldSnap
whether to snap new vertices to the model surface
Definition: maInput.h:56
bool shouldRunMidMetis
Whether to run METIS during adaptation (default false)
Definition: maInput.h:120
double maximumImbalance
imbalance target for all load balancing tools (default 1.10)
Definition: maInput.h:82
bool shouldRunPreZoltan
whether to run zoltan predictive load balancing (default false)
Definition: maInput.h:86
bool shouldTransferToClosestPoint
whether to transfer to the parametric coords of the closest point
Definition: maInput.h:62
bool shouldFixShape
whether to run shape correction (default true)
Definition: maInput.h:66
bool shouldCoarsen
whether to perform the collapse step
Definition: maInput.h:53
bool shouldCoarsenLayer
whether to allow layer coarsening (default false)
Definition: maInput.h:158
bool shouldForceAdaptation
whether to adapt if it makes local quality worse (default false)
Definition: maInput.h:68
bool shouldCleanupLayer
whether to tetrahedronize abnormal pyramids (default false)
Definition: maInput.h:154
User-defined Isotropic size function.
Definition: maSize.h:94
user-defined solution transfer base
mesh functions for MeshAdapt
MeshAdapt Size Fields.
MeshAdapt solution transfer interface.
All MeshAdapt symbols.
const Input * configureMatching(Mesh *m, int n=1, SolutionTransfer *s=0)
generate a matched uniform refinement configuration
const Input * configure(Mesh *m, AnisotropicFunction *f, SolutionTransfer *s=0, bool logInterpolation=true)
generate a configuration based on an anisotropic function.
void validateInput(Input *in)
used internally, but users can call this if they want
Input * makeAdvanced(const Input *in)
creates a new non-constant Input for advanced users
const Input * configureUniformRefine(Mesh *m, int n=1, SolutionTransfer *s=0)
generate a uniform refinement configuration
const Input * configureIdentity(Mesh *m, SizeField *f=0, SolutionTransfer *s=0)
generate a no-op configuration