IFEM  90A354
SIM3D.h
Go to the documentation of this file.
1 // $Id$
2 //==============================================================================
12 //==============================================================================
13 
14 #ifndef _SIM_3D_H
15 #define _SIM_3D_H
16 
17 #include "SIMgeneric.h"
18 
19 
26 class SIM3D : public SIMgeneric
27 {
28 public:
30  enum { dimension = 3 };
31 
35  explicit SIM3D(unsigned char n1 = 3, bool check = false);
39  explicit SIM3D(const CharVec& unf, bool check = false);
44  explicit SIM3D(IntegrandBase* itg, unsigned char n = 3, bool check = false);
46  virtual ~SIM3D() {}
47 
49  virtual bool mixedProblem() const { return nf.size() > 1; }
50 
52  virtual unsigned short int getNoParamDim() const { return 3; }
53 
57  virtual void clonePatches(const PatchVec& patches,
58  const std::map<int,int>& g2ln);
59 
69  RealArray getSolution(const Vector& psol, double u, double v, double w,
70  int deriv = 0, int patch = 1) const;
71 
72 private:
74  bool parseGeometryTag(const tinyxml2::XMLElement* elem);
76  bool parseBCTag(const tinyxml2::XMLElement* elem);
77 
78 protected:
81  virtual bool parse(const tinyxml2::XMLElement* elem);
82 
86  virtual bool parse(char* keyWord, std::istream& is);
87 
89  virtual bool parseGeometryDimTag(const tinyxml2::XMLElement* elem)
90  {
91  return this->parseGeometryTag(elem);
92  }
93 
100  virtual bool readNodes(std::istream& isn, int pchInd, int basis = 0,
101  bool oneBased = false);
102 
105  virtual void readNodes(std::istream& isn);
106 
116  virtual bool addConstraint(int patch, int lndx, int ldim, int dirs, int code,
117  int& ngnod, char basis = 1, bool ovrD = false);
118 
126  bool addLineConstraint(int patch, int lndx, int line, double xi,
127  int dirs, char basis = 1);
128 
131  virtual ModelGenerator* getModelGenerator(const tinyxml2::XMLElement* geo) const;
132 
138  virtual ASMbase* readPatch(std::istream& isp, int pchInd, const CharVec& unf,
139  const char* whiteSpace) const;
140 
144  virtual bool connectPatches(const ASM::Interface& ifc,
145  bool coordCheck = true);
146 
147 protected:
149  bool checkRHSys;
150 };
151 
152 #endif
std::vector< Real > RealArray
A real-valued array without algebraic operations.
Definition: ImmersedBoundaries.h:29
Generic SIM class with some added functionalities.
Base class for spline-based finite element (FE) assembly drivers.
Definition: ASMbase.h:70
Base class representing a system level integrated quantity.
Definition: IntegrandBase.h:42
Base class for model generators for FEM simulators.
Definition: ModelGenerator.h:29
Driver class for 3D NURBS-based FEM solver.
Definition: SIM3D.h:27
virtual bool mixedProblem() const
Returns whether a mixed formulation is used (used by HDF5 output).
Definition: SIM3D.h:49
virtual unsigned short int getNoParamDim() const
Returns the number of parameter dimensions in the model.
Definition: SIM3D.h:52
bool checkRHSys
Check if all patches are in a right-hand system.
Definition: SIM3D.h:149
RealArray getSolution(const Vector &psol, const double *par, int deriv=0, int patch=1) const
Evaluates the primary solution at the given point.
Definition: SIMgeneric.C:39
virtual void clonePatches(const PatchVec &patches, const std::map< int, int > &g2ln)
Creates the FE model by copying the given patches.
Definition: SIM3D.C:792
virtual bool connectPatches(const ASM::Interface &ifc, bool coordCheck=true)
Connects two patches.
Definition: SIM3D.C:44
virtual bool readNodes(std::istream &isn, int pchInd, int basis=0, bool oneBased=false)
Reads global node data for a patch from given input stream.
Definition: SIM3D.C:764
bool addLineConstraint(int patch, int lndx, int line, double xi, int dirs, char basis=1)
Constrains a parametric line on a boundary face.
Definition: SIM3D.C:659
virtual bool addConstraint(int patch, int lndx, int ldim, int dirs, int code, int &ngnod, char basis=1, bool ovrD=false)
Preprocesses a user-defined Dirichlet boundary property.
Definition: SIM3D.C:567
bool parseBCTag(const tinyxml2::XMLElement *elem)
Parses a subelement of the boundaryconditions XML-tag.
Definition: SIM3D.C:285
CharVec nf
Number of scalar fields.
Definition: SIM3D.h:148
virtual ASMbase * readPatch(std::istream &isp, int pchInd, const CharVec &unf, const char *whiteSpace) const
Reads a patch from given input stream.
Definition: SIM3D.C:718
virtual ModelGenerator * getModelGenerator(const tinyxml2::XMLElement *geo) const
Returns a FEM model generator for a default single-patch model.
Definition: SIM3D.C:808
bool parseGeometryTag(const tinyxml2::XMLElement *elem)
Parses a subelement of the geometry XML-tag.
Definition: SIM3D.C:102
SIM3D(unsigned char n1=3, bool check=false)
Default constructor.
Definition: SIM3D.C:24
virtual bool parseGeometryDimTag(const tinyxml2::XMLElement *elem)
Parses a dimension-specific subelement of the geometry XML-tag.
Definition: SIM3D.h:89
virtual ~SIM3D()
Empty destructor.
Definition: SIM3D.h:46
std::vector< ASMbase * > PatchVec
Spline patch container.
Definition: SIMdependency.h:33
Generic SIM class with some added functionalities.
Definition: SIMgeneric.h:28
RealArray getSolution(const Vector &psol, const double *par, int deriv=0, int patch=1) const
Evaluates the primary solution at the given point.
Definition: SIMgeneric.C:39
std::vector< unsigned char > CharVec
Convenience declaration.
Definition: SIMinput.h:59
virtual bool parse(char *keyWord, std::istream &is)
Parses a data section from an input stream.
Definition: SIMinput.C:1081
A vector class with some added algebraic operations.
Definition: matrix.h:64
Struct for representing a domain interface.
Definition: Interface.h:24