TexGen
StaggeredPeriodicBoundaries.cpp
Go to the documentation of this file.
1/*=============================================================================
2TexGen: Geometric textile modeller.
3Copyright (C) 2010 Louise Brown
4
5This program is free software; you can redistribute it and/or
6modify it under the terms of the GNU General Public License
7as published by the Free Software Foundation; either version 2
8of the License, or (at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
17Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18=============================================================================*/
19
20#include "PrecompiledHeaders.h"
21#include "TexGen.h"
23
24
25using namespace TexGen;
26using namespace std;
27
28CStaggeredPeriodicBoundaries::CStaggeredPeriodicBoundaries(int NumEdges, int NumVertices)
29:CPeriodicBoundaries(NumEdges, NumVertices)
30{
31}
32
34{
35}
36
37void CStaggeredPeriodicBoundaries::SetFaceD( vector<int>& D1, vector<int>& D2 )
38{
39 m_FaceD = make_pair( D1, D2 );
40}
41
43{
45 OutputSets( Output, m_FaceD.first, "FaceG" );
46 OutputSets( Output, m_FaceD.second, "FaceH" );
47}
48
49void CStaggeredPeriodicBoundaries::OutputEquations( ostream& Output, int iBoundaryConditions )
50{
51 Output << "***************************" << endl;
52 Output << "*** BOUNDARY CONDITIONS ***" << endl;
53 Output << "***************************" << endl;
54
55 Output << "*** Name: Translation stop Vertex 1 Type: Displacement/Rotation" << endl;
56 Output << "*Boundary" << endl;
57 Output << "MasterNode1, 1, 1" << endl;
58 Output << "MasterNode1, 2, 2" << endl;
59 Output << "MasterNode1, 3, 3" << endl;
60 Output << endl;
61
62 Output << "*****************" << endl;
63 Output << "*** EQUATIONS ***" << endl;
64 Output << "*****************" << endl;
65 Output << "*parameter" << endl;
66 Output << "***unit cell X dimension" << endl;
67 Output << "BX=" << m_DomSize.x << endl;
68 Output << "***Unit cel Y dimension " << endl;
69 Output << "BY=" << m_DomSize.y << endl;
70 Output << "***unit cell X offset1" << endl;
71 Output << "OFF1=" << m_DomSize.x*m_Offset << endl;
72 Output << "***unit cell X length - offset1" << endl;
73 Output << "OFF2=" << m_DomSize.x*(1.0 - m_Offset) << endl;
74 Output << "*EQUATION" << endl;
75 Output << "3" << endl;
76 Output << "FaceF,1,1.0,FaceE,1,-1.0,ConstraintsDriver0,1,-<BX>" << endl;
77 Output << "*EQUATION" << endl;
78 Output << "2" << endl;
79 Output << "FaceF,2,1.0,FaceE,2,-1.0" << endl;
80 Output << "*EQUATION" << endl;
81 Output << "2" << endl;
82 Output << "FaceF,3,1.0,FaceE,3,-1.0" << endl;
83 Output << "*EQUATION" << endl;
84 Output << "4" << endl;
85 Output << "FaceD,1,1.0,FaceA,1,-1.0,ConstraintsDriver0,1,-<OFF1>,ConstraintsDriver3,1,-<BY>" << endl;
86 Output << "*EQUATION" << endl;
87 Output << "3" << endl;
88 Output << "FaceD,2,1.0,FaceA,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
89 Output << "*EQUATION" << endl;
90 Output << "2" << endl;
91 Output << "FaceD,3,1.0,FaceA,3,-1.0" << endl;
92 Output << "*EQUATION" << endl;
93 Output << "4" << endl;
94 Output << "FaceC,1,1.0,FaceB,1,-1.0,ConstraintsDriver0,1,<OFF2>,ConstraintsDriver3,1,-<BY>" << endl;
95 Output << "*EQUATION" << endl;
96 Output << "3" << endl;
97 Output << "FaceC,2,1.0,FaceB,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
98 Output << "*EQUATION" << endl;
99 Output << "2" << endl;
100 Output << "FaceC,3,1.0,FaceB,3,-1.0" << endl;
101 Output << "*EQUATION" << endl;
102 Output << "3" << endl;
103 Output << "Edge1,1,1.0,Edge2,1,-1.0,ConstraintsDriver0,1,-<BX>" << endl;
104 Output << "*EQUATION" << endl;
105 Output << "2" << endl;
106 Output << "Edge1,2,1.0,Edge2,2,-1.0" << endl;
107 Output << "*EQUATION" << endl;
108 Output << "2" << endl;
109 Output << "Edge1,3,1.0,Edge2,3,-1.0" << endl;
110 Output << "*EQUATION" << endl;
111 Output << "4" << endl;
112 Output << "Edge3,1,1.0,Edge4,1,-1.0,ConstraintsDriver0,1,-<OFF1>,ConstraintsDriver3,1,-<BY>" << endl;
113 Output << "*EQUATION" << endl;
114 Output << "3" << endl;
115 Output << "Edge3,2,1.0,Edge4,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
116 Output << "*EQUATION" << endl;
117 Output << "2" << endl;
118 Output << "Edge3,3,1.0,Edge4,3,-1.0" << endl;
119 Output << "*EQUATION" << endl;
120 Output << "4" << endl;
121 Output << "Edge5,1,1.0,Edge6,1,-1.0,ConstraintsDriver0,1,<OFF2>,ConstraintsDriver3,1,-<BY>" << endl;
122 Output << "*EQUATION" << endl;
123 Output << "3" << endl;
124 Output << "Edge5,2,1.0,Edge6,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
125 Output << "*EQUATION" << endl;
126 Output << "2" << endl;
127 Output << "Edge5,3,1.0,Edge6,3,-1.0" << endl;
128 Output << "*EQUATION" << endl;
129 Output << "3" << endl;
130 Output << "Edge7,1,1.0,Edge8,1,-1.0,ConstraintsDriver0,1,-<BX>" << endl;
131 Output << "*EQUATION" << endl;
132 Output << "2" << endl;
133 Output << "Edge7,2,1.0,Edge8,2,-1.0" << endl;
134 Output << "*EQUATION" << endl;
135 Output << "2" << endl;
136 Output << "Edge7,3,1.0,Edge8,3,-1.0" << endl;
137 Output << "*EQUATION" << endl;
138 Output << "4" << endl;
139 Output << "Edge9,1,1.0,Edge10,1,-1.0,ConstraintsDriver0,1,-<OFF1>,ConstraintsDriver3,1,-<BY>" << endl;
140 Output << "*EQUATION" << endl;
141 Output << "3" << endl;
142 Output << "Edge9,2,1.0,Edge10,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
143 Output << "*EQUATION" << endl;
144 Output << "2" << endl;
145 Output << "Edge9,3,1.0,Edge10,3,-1.0" << endl;
146 Output << "*EQUATION" << endl;
147 Output << "4" << endl;
148 Output << "Edge11,1,1.0,Edge12,1,-1.0,ConstraintsDriver0,1,<OFF2>,ConstraintsDriver3,1,-<BY>" << endl;
149 Output << "*EQUATION" << endl;
150 Output << "3" << endl;
151 Output << "Edge11,2,1.0,Edge12,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
152 Output << "*EQUATION" << endl;
153 Output << "2" << endl;
154 Output << "Edge11,3,1.0,Edge12,3,-1.0" << endl;
155 Output << "*EQUATION" << endl;
156 Output << "3" << endl;
157 Output << "Edge17,1,1.0,Edge18,1,-1.0,ConstraintsDriver0,1,-<BX>" << endl;
158 Output << "*EQUATION" << endl;
159 Output << "2" << endl;
160 Output << "Edge17,2,1.0,Edge18,2,-1.0" << endl;
161 Output << "*EQUATION" << endl;
162 Output << "2" << endl;
163 Output << "Edge17,3,1.0,Edge18,3,-1.0" << endl;
164 Output << "*EQUATION" << endl;
165 Output << "4" << endl;
166 Output << "Edge14,1,1.0,Edge18,1,-1.0,ConstraintsDriver0,1,-<OFF1>,ConstraintsDriver3,1,-<BY>" << endl;
167 Output << "*EQUATION" << endl;
168 Output << "3" << endl;
169 Output << "Edge14,2,1.0,Edge18,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
170 Output << "*EQUATION" << endl;
171 Output << "2" << endl;
172 Output << "Edge14,3,1.0,Edge18,3,-1.0" << endl;
173 Output << "*EQUATION" << endl;
174 Output << "4" << endl;
175 Output << "Edge15,1,1.0,Edge13,1,-1.0,ConstraintsDriver0,1,-<OFF1>,ConstraintsDriver3,1,-<BY>" << endl;
176 Output << "*EQUATION" << endl;
177 Output << "3" << endl;
178 Output << "Edge15,2,1.0,Edge13,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
179 Output << "*EQUATION" << endl;
180 Output << "2" << endl;
181 Output << "Edge15,3,1.0,Edge13,3,-1.0" << endl;
182 Output << "*EQUATION" << endl;
183 Output << "4" << endl;
184 Output << "Edge16,1,1.0,Edge13,1,-1.0,ConstraintsDriver0,1,<OFF2>,ConstraintsDriver3,1,-<BY>" << endl;
185 Output << "*EQUATION" << endl;
186 Output << "3" << endl;
187 Output << "Edge16,2,1.0,Edge13,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
188 Output << "*EQUATION" << endl;
189 Output << "2" << endl;
190 Output << "Edge16,3,1.0,Edge13,3,-1.0" << endl;
191 Output << "*EQUATION" << endl;
192 Output << "3" << endl;
193 Output << "MasterNode3,1,1.0,MasterNode1,1,-1.0,ConstraintsDriver0,1,-<BX>" << endl;
194 Output << "*EQUATION" << endl;
195 Output << "2" << endl;
196 Output << "MasterNode3,2,1.0,MasterNode1,2,-1.0" << endl;
197 Output << "*EQUATION" << endl;
198 Output << "2" << endl;
199 Output << "MasterNode3,3,1.0,MasterNode1,3,-1.0" << endl;
200 Output << "*EQUATION" << endl;
201 Output << "4" << endl;
202 Output << "MasterNode11,1,1.0,MasterNode1,1,-1.0,ConstraintsDriver0,1,-<OFF1>,ConstraintsDriver3,1,-<BY>" << endl;
203 Output << "*EQUATION" << endl;
204 Output << "3" << endl;
205 Output << "MasterNode11,2,1.0,MasterNode1,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
206 Output << "*EQUATION" << endl;
207 Output << "2" << endl;
208 Output << "MasterNode11,3,1.0,MasterNode1,3,-1.0" << endl;
209 Output << "*EQUATION" << endl;
210 Output << "4" << endl;
211 Output << "MasterNode5,1,1.0,MasterNode9,1,-1.0,ConstraintsDriver0,1,-<OFF1>,ConstraintsDriver3,1,-<BY>" << endl;
212 Output << "*EQUATION" << endl;
213 Output << "3" << endl;
214 Output << "MasterNode5,2,1.0,MasterNode9,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
215 Output << "*EQUATION" << endl;
216 Output << "2" << endl;
217 Output << "MasterNode5,3,1.0,MasterNode9,3,-1.0" << endl;
218 Output << "*EQUATION" << endl;
219 Output << "4" << endl;
220 Output << "MasterNode7,1,1.0,MasterNode9,1,-1.0,ConstraintsDriver0,1,<OFF2>,ConstraintsDriver3,1,-<BY>" << endl;
221 Output << "*EQUATION" << endl;
222 Output << "3" << endl;
223 Output << "MasterNode7,2,1.0,MasterNode9,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
224 Output << "*EQUATION" << endl;
225 Output << "2" << endl;
226 Output << "MasterNode7,3,1.0,MasterNode9,3,-1.0" << endl;
227 Output << "*EQUATION" << endl;
228 Output << "3" << endl;
229 Output << "MasterNode4,1,1.0,MasterNode2,1,-1.0,ConstraintsDriver0,1,-<BX>" << endl;
230 Output << "*EQUATION" << endl;
231 Output << "2" << endl;
232 Output << "MasterNode4,2,1.0,MasterNode2,2,-1.0" << endl;
233 Output << "*EQUATION" << endl;
234 Output << "2" << endl;
235 Output << "MasterNode4,3,1.0,MasterNode2,3,-1.0" << endl;
236 Output << "*EQUATION" << endl;
237 Output << "4" << endl;
238 Output << "MasterNode12,1,1.0,MasterNode2,1,-1.0,ConstraintsDriver0,1,-<OFF1>,ConstraintsDriver3,1,-<BY>" << endl;
239 Output << "*EQUATION" << endl;
240 Output << "3" << endl;
241 Output << "MasterNode12,2,1.0,MasterNode2,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
242 Output << "*EQUATION" << endl;
243 Output << "2" << endl;
244 Output << "MasterNode12,3,1.0,MasterNode2,3,-1.0" << endl;
245 Output << "*EQUATION" << endl;
246 Output << "4" << endl;
247 Output << "MasterNode6,1,1.0,MasterNode10,1,-1.0,ConstraintsDriver0,1,-<OFF1>,ConstraintsDriver3,1,-<BY>" << endl;
248 Output << "*EQUATION" << endl;
249 Output << "3" << endl;
250 Output << "MasterNode6,2,1.0,MasterNode10,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
251 Output << "*EQUATION" << endl;
252 Output << "2" << endl;
253 Output << "MasterNode6,3,1.0,MasterNode10,3,-1.0" << endl;
254 Output << "*EQUATION" << endl;
255 Output << "4" << endl;
256 Output << "MasterNode8,1,1.0,MasterNode10,1,-1.0,ConstraintsDriver0,1,<OFF2>,ConstraintsDriver3,1,-<BY>" << endl;
257 Output << "*EQUATION" << endl;
258 Output << "3" << endl;
259 Output << "MasterNode8,2,1.0,MasterNode10,2,-1.0,ConstraintsDriver1,1,-<BY>" << endl;
260 Output << "*EQUATION" << endl;
261 Output << "2" << endl;
262 Output << "MasterNode8,3,1.0,MasterNode10,3,-1.0" << endl;
263}
Class used to generate Abaqus output for periodic boundary conditions.
virtual void OutputFaceSets(ostream &Output)
Output 6 face node sets.
void OutputSets(ostream &Output, vector< int > &Set, string SetName)
Output an unsorted node set.
pair< vector< int >, vector< int > > m_FaceD
void OutputEquations(ostream &Output, int iBoundaryConditions)
Output equations for staggered boundary conditions.
void OutputFaceSets(ostream &Output)
Output 6 face node sets.
void SetFaceD(vector< int > &D1, vector< int > &D2)
Namespace containing a series of customised math operations not found in the standard c++ library.
double x
Definition: mymath.h:57
double y
Definition: mymath.h:57