IFEM  90A354
ASMs2DC1.h
Go to the documentation of this file.
1 // $Id$
2 //==============================================================================
12 //==============================================================================
13 
14 #ifndef _ASM_S2D_C1_H
15 #define _ASM_S2D_C1_H
16 
17 #include "ASMs2D.h"
18 
19 
26 class ASMs2DC1 : public ASMs2D
27 {
28 public:
30  ASMs2DC1(unsigned char n_s = 2, unsigned char n_f = 1) : ASMs2D(n_s,n_f) {}
32  ASMs2DC1(const ASMs2DC1& patch, unsigned char n_f = 0) : ASMs2D(patch,n_f) {}
34  virtual ~ASMs2DC1() {}
35 
36 
37  // Methods for model generation
38  // ============================
39 
43  virtual bool generateFEMTopology();
44 
45 
46  // Various methods for preprocessing of boundary conditions and patch topology
47  // ===========================================================================
48 
55  virtual void constrainEdge(int dir, bool open, int dof = 12, int code = 0,
56  char basis = 1);
57 
68  virtual void constrainCorner(int I, int J, int dof = 12, int code = 0);
80  virtual void constrainNode(double xi, double eta, int dof = 12, int code = 0);
81 
87  bool connectC1(int edge, ASMs2DC1* neighbor, int nedge, bool revers = false);
88 
91  virtual void closeBoundaries(int dir, int, int);
92 
101  virtual bool addRigidCpl(int lindx, int ldim, int basis,
102  int& gMaster, const Vec3& Xmaster, bool extraPt);
103 
106  static void renumberNodes(const std::map<int,int>& old2new);
107 
109  virtual bool initConstraints();
110 
116  virtual bool updateDirichlet(const std::map<int,RealFunc*>& func,
117  const std::map<int,VecFunc*>& vfunc, double time,
118  const std::map<int,int>* g2l = nullptr);
119 
120 protected:
127  void addC1MPC(int slave, int dir, int master1, int master2 = 0, int code = 0);
128 
129 private:
130  std::set<int> myC1slaves;
131 
132  static std::map<int,ASMs2DC1*> neighbors;
133 };
134 
135 #endif
Driver for assembly of structured 2D spline FE models.
Driver for assembly of C1-continuous structured 2D spline FE models.
Definition: ASMs2DC1.h:27
ASMs2DC1(unsigned char n_s=2, unsigned char n_f=1)
Default constructor.
Definition: ASMs2DC1.h:30
void addC1MPC(int slave, int dir, int master1, int master2=0, int code=0)
Creates and adds a constraint equation enforcing C1-continuity.
Definition: ASMs2DC1.C:441
virtual bool generateFEMTopology()
Generates the finite element topology data for the patch.
Definition: ASMs2DC1.C:33
std::set< int > myC1slaves
Set of slave DOFs for C1-continuity enforcement.
Definition: ASMs2DC1.h:130
virtual bool initConstraints()
Initializes constraint equations enforcing C1-continuity.
Definition: ASMs2DC1.C:452
virtual void constrainNode(double xi, double eta, int dof=12, int code=0)
Constrains a node identified by two relative parameter values.
Definition: ASMs2DC1.C:249
virtual ~ASMs2DC1()
Empty destructor.
Definition: ASMs2DC1.h:34
static std::map< int, ASMs2DC1 * > neighbors
Global node to patch mapping.
Definition: ASMs2DC1.h:132
virtual void constrainEdge(int dir, bool open, int dof=12, int code=0, char basis=1)
Constrains all DOFs on a given boundary edge.
Definition: ASMs2DC1.C:181
virtual void constrainCorner(int I, int J, int dof, int code=0, char basis=1)
Constrains a corner node identified by the two parameter indices.
Definition: ASMs2D.C:1111
virtual bool updateDirichlet(const std::map< int, RealFunc * > &func, const std::map< int, VecFunc * > &vfunc, double time, const std::map< int, int > *g2l=nullptr)
Updates the time-dependent in-homogeneous Dirichlet coefficients.
Definition: ASMs2DC1.C:516
virtual bool addRigidCpl(int lindx, int ldim, int basis, int &gMaster, const Vec3 &Xmaster, bool extraPt)
Adds MPCs representing a rigid coupling to this patch.
Definition: ASMs2DC1.C:284
static void renumberNodes(const std::map< int, int > &old2new)
Renumbers the global node numbers in the neighbors map.
Definition: ASMs2DC1.C:270
bool connectC1(int edge, ASMs2DC1 *neighbor, int nedge, bool revers=false)
Connects all matching nodes on two adjacent boundary edges.
Definition: ASMs2DC1.C:46
ASMs2DC1(const ASMs2DC1 &patch, unsigned char n_f=0)
Copy constructor.
Definition: ASMs2DC1.h:32
virtual void closeBoundaries(int dir, int, int)
Makes two opposite boundary edges periodic.
Definition: ASMs2DC1.C:149
Driver for assembly of structured 2D spline FE models.
Definition: ASMs2D.h:39
virtual void constrainCorner(int I, int J, int dof, int code=0, char basis=1)
Constrains a corner node identified by the two parameter indices.
Definition: ASMs2D.C:1111
Simple class for representing a point in 3D space.
Definition: Vec3.h:27