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
26class ASMs2DC1 : public ASMs2D
27{
28public:
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
117 virtual bool updateDirichlet(const std::map<int,RealFunc*>& func,
118 const std::map<int,VecFunc*>& vfunc, double time,
119 const std::map<int,int>* g2l = nullptr,
120 bool tangent = false);
121
122protected:
129 void addC1MPC(int slave, int dir, int master1, int master2 = 0, int code = 0);
130
131private:
132 std::set<int> myC1slaves;
133
134 static std::map<int,ASMs2DC1*> neighbors;
135};
136
137#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:132
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:134
virtual bool updateDirichlet(const std::map< int, RealFunc * > &func, const std::map< int, VecFunc * > &vfunc, double time, const std::map< int, int > *g2l=nullptr, bool tangent=false)
Updates the time-dependent in-homogeneous Dirichlet coefficients.
Definition ASMs2DC1.C:516
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 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 constrainCorner(int I, int J, int dof=12, int code=0)
Constrains a corner node identified by the two parameter indices.
Definition ASMs2DC1.C:231
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:1122
Simple class for representing a point in 3D space.
Definition Vec3.h:27