MCPcopy Create free account
hub / github.com/NGSolve/ngsolve / AddSurfElements2D

Function AddSurfElements2D

python/TensorProductTools.py:151–210  ·  view source on GitHub ↗
(tpmesh,mesh1,mesh2)

Source from the content-addressed store, hash-verified

149 tpmesh.Add(Element1D(elpids2))
150
151def AddSurfElements2D(tpmesh,mesh1,mesh2):
152 ngm1 = mesh1.ngmesh;
153 ngm2 = mesh2.ngmesh;
154 if mesh1.dim==2:
155 els1 = ngm1.Elements2D()
156 els2 = ngm2.Elements1D()
157 tpmesh.Add (FaceDescriptor(surfnr=1,domin=1,bc=1))
158 for elx in els1:
159 vert_loc = elx.vertices
160 vert_glob = []
161 for vx in vert_loc:
162 vert_glob.append(PointId((vx.nr-1)*len(ngm2.Points())+len(ngm2.Points())))
163 tpmesh.Add(Element2D(1,vert_glob))
164 for elx in els1:
165 vert_loc = elx.vertices
166 vert_glob = []
167 for vx in vert_loc:
168 vert_glob = [PointId((vx.nr-1)*len(ngm2.Points())+1)] + vert_glob
169 tpmesh.Add(Element2D(1,vert_glob))
170 els1 = ngm1.Elements1D()
171 for elx in els1:
172 for ely in els2:
173 vert_glob=[]
174# for vy in ely.vertices:
175# for vx in elx.vertices:
176 vx = elx.vertices
177 vy = ely.vertices
178 vert_glob = [PointId((vx[1].nr-1)*len(ngm2.Points())+vy[0].nr),
179 PointId((vx[1].nr-1)*len(ngm2.Points())+vy[1].nr),
180 PointId((vx[0].nr-1)*len(ngm2.Points())+vy[1].nr),
181 PointId((vx[0].nr-1)*len(ngm2.Points())+vy[0].nr)]
182 tpmesh.Add(Element2D(1,vert_glob))
183 else:
184 els1 = ngm1.Elements1D()
185 els2 = ngm2.Elements2D()
186 tpmesh.Add (FaceDescriptor(surfnr=1,domin=1,bc=1))
187 for ely in els2:
188 vert_loc = ely.vertices
189 vert_glob = []
190 for vy in vert_loc:
191 vert_glob.append(PointId((vy.nr)+(len(ngm1.Points())-1)*(len(ngm2.Points()))))
192 tpmesh.Add(Element2D(1,vert_glob))
193 for ely in els2:
194 vert_loc = ely.vertices
195 vert_glob = []
196 for vy in reversed(vert_loc):
197 vert_glob.append(PointId( vy.nr))
198 tpmesh.Add(Element2D(1,vert_glob))
199 els2 = ngm2.Elements1D()
200 for elx in els1:
201 for ely in els2:
202 vert_glob=[]
203 vx = elx.vertices
204 vy = ely.vertices
205 vert_glob = [PointId((vx[0].nr-1)*len(ngm2.Points())+vy[0].nr),
206 PointId((vx[0].nr-1)*len(ngm2.Points())+vy[1].nr),
207 PointId((vx[1].nr-1)*len(ngm2.Points())+vy[1].nr),
208 PointId((vx[1].nr-1)*len(ngm2.Points())+vy[0].nr)]

Callers 1

AddSurfElementsFunction · 0.85

Calls 2

AddMethod · 0.80
PointsMethod · 0.80

Tested by

no test coverage detected