This is a read only copy of the old FEniCS QA forum. Please visit the new QA forum to ask questions

meshing contact region of two volumns with CGAL

+1 vote

Hi,

i'm trying to use CGAL to mesh some simple stacks of magnetic layers, e.g. some cylinder volumes stacked on each other. i would then like to assign different materials to each layer.

Unfortunately the set_subdomain() feature of CGAL is not supported for 3D geometries at the moment.

Is there a way to glue two volumes together and tell the mesher to keep meshing the contact surface? if i just use volume1 + volume2, the union of the two volumes is meshed, but without the contact surface. Therefor it is not possible to assigne different materials properly.

See for example this code:

from dolfin import *
from mshr import *

cyl   = Cylinder(Point(0,0,0), Point(0,0,100), 30, 50)
plate1 = Box(Point(-50,-50,00), Point(50,50,10))
plate2 = Box(Point(-50,-50,10), Point(50,50,20))
plate3 = Box(Point(-50,-50,20), Point(50,50,30))
plate4 = Box(Point(-50,-50,30), Point(50,50,40))

layer1 = cyl * plate1
layer2 = cyl * plate2
layer3 = cyl * plate3
layer4 = cyl * plate4

stack = layer1 + layer2 + layer4
#stack.set_subdomain(1, layer1) # not supported for 3D!
#stack.set_subdomain(2, layer2)

generator = CSGCGALMeshGenerator3D()
generator.parameters['mesh_resolution'] = 20.

mesh = Mesh()
generator.generate(stack, mesh)

File("mesh.pvd") << mesh

thanks in advance
greetings, Florian
PS: is subdomain support planed for 3D in the near future?

asked Jul 16, 2015 by florian_bruckner FEniCS Novice (380 points)
...