[Gmsh] Ensuring conformal meshing when using geomtry from Freecad

Benedikt Oswald benedikt.oswald at lspr.swiss
Fri Apr 6 17:14:28 CEST 2018


Dear Jeremy, thanks a lot, that does the trick! Greetings, Benedikt



Am 06.04.18 um 16:44 schrieb jeremy theler:
>
> apply the boolean operation in freecad (in the options you can choose
> "compsolid" mode) and then export to brep
> alternatively use the gmsh command "Coherence"
> I suggest you search online for further information on compsolids in
> freecad and thr coherence command in gmsh
>
>
> On Fri, Apr 6, 2018, 03:05 Benedikt Oswald
> <benedikt.oswald at lspr.swiss> wrote:
>
>     Dear juan, thank you very much for your detailed answer!
>
>     In fact, our workflow definitely requires geometry construction in
>
>     Freecad and then meshing in gmsh; nevertheless, I
>
>     will try to debug the problem along your suggested
>
>     procedure.
>
>     thanks again and greetings, Benedikt
>
>
>
>     Am 05.04.18 um 17:22 schrieb Juan Sanchez:
>     > Hello Benedikt,
>     >
>     > I am using the OpenCascade factory to do the Boolean Operations in
>     > gmsh.  This is using the pygmsh python module to help automate the
>     > process:
>     >
>     > https://github.com/nschloe/pygmsh/tree/master/pygmsh
>     >
>     > The boolean operations can then be performed using code like this:
>     > https://github.com/nschloe/pygmsh/issues/164
>     >
>     > import pygmsh
>     > geom = pygmsh.opencascade.Geometry(
>     >   characteristic_length_min=0.1,
>     >   characteristic_length_max=0.1,
>     >   )
>     >
>     > def create_vol_volume(geom, h, w, l, x, z, cr, lcar=100):
>     >   f = 0.5*w
>     >   y = [-f,-f+cr, +f-cr, +f]
>     >   z = [z, z + (h-cr), z + h]
>     >   f = 0.5 * cr
>     >   points = []
>     >   points.append(geom.add_point((x, y[0], z[0]), lcar=lcar))
>     >   points.append(geom.add_point((x, y[0], z[1]), lcar=lcar))
>     >   points.append(geom.add_point((x, y[1], z[1]), lcar=lcar))
>     >   points.append(geom.add_point((x, y[1], z[2]), lcar=lcar))
>     >   points.append(geom.add_point((x, y[2], z[2]), lcar=lcar))
>     >   points.append(geom.add_point((x, y[2], z[1]), lcar=lcar))
>     >   points.append(geom.add_point((x, y[3], z[1]), lcar=lcar))
>     >   points.append(geom.add_point((x, y[3], z[0]), lcar=lcar))
>     >
>     >   lines = []
>     >   lines.append(geom.add_line(points[0], points[1]))
>     >   lines.append(geom.add_circle_arc(points[1], points[2], points[3]))
>     >
>     >   lines.append(geom.add_line(points[3], points[4]))
>     >   lines.append(geom.add_circle_arc(points[4], points[5], points[6]))
>     >   lines.append(geom.add_line(points[6], points[7]))
>     >   lines.append(geom.add_line(points[7], points[0]))
>     >
>     >   line_loop=geom.add_line_loop(lines)
>     >   surface=geom.add_plane_surface(line_loop)
>     >   vol = geom.extrude(surface, translation_axis=[l, 0, 0])[1]
>     >   return vol
>     >
>     >
>     > h_top=40
>     > corner_radius=2.5
>     >
>     > z_vol=0
>     > h_vol=25
>     > w_vol=10
>     > l_vol=100
>     > x_vol=-0.5*l_vol
>     > vol=create_vol_volume(geom, h=h_vol, w=w_vol, l=l_vol, x=x_vol,
>     > z=z_vol, cr=corner_radius)
>     >
>     > z_vol2=0
>     > l_vol2=50
>     > t_vol2=1
>     > w_vol2=w_vol+2*t_vol2
>     > h_vol2=h_vol+t_vol2
>     > x_vol2=x_vol + 0.5*(l_vol-l_vol2)
>     > vol2=create_vol_volume(geom, h=h_vol2, w=w_vol2, l=l_vol2, x=x_vol2,
>     > z=z_vol2, cr=corner_radius)
>     > vol2=geom.boolean_difference([vol2], [vol], delete_first=True,
>     > delete_other=False)
>     > geom.boolean_fragments([vol2, vol], [], delete_first=True,
>     delete_other=False)
>     > print(geom.get_code())
>     >
>     >
>     > And then you can label the volumes as physical volumes and mesh the
>     > resulting geo file.
>     >
>     > Regards,
>     >
>     > Juan
>     >
>     > On Thu, Apr 5, 2018 at 5:53 AM, Benedikt Oswald
>     > <benedikt.oswald at lspr.swiss> wrote:
>     >> Dear gmsh developers
>     >>
>     >> I recently tried to mesh a geometry (made in Freecad) which
>     consists of
>     >> two volumes where a smaller volume was
>     >>
>     >> subtracted in Freecad from the larger one. When I mesh the two
>     volumes I
>     >> would need tetrahedra
>     >>
>     >> and that are conformal between the two volumes. Would you have a
>     >> suggestion on how
>     >>
>     >> to achieve this ? At the moment, gmsh does not really produce a
>     >> conformal mesh.
>     >>
>     >> I attach the files in question.
>     >>
>     >> Thanks a lot in advance and greetings, Benedikt
>     >>
>     >>
>     >>
>     >>
>     ----------------------------------------------------------------------------------------------------------------------
>     >> Dr. sc. techn. Benedikt Oswald - first engineer - LSPR AG -
>     phone +41 43 366 90 74
>     >> Grubenstrasse 9, CH-8045 Zürich, benedikt.oswald at lspr.swiss
>     >>
>     ----------------------------------------------------------------------------------------------------------------------
>     >>
>     >>
>     >> _______________________________________________
>     >> gmsh mailing list
>     >> gmsh at onelab.info <mailto:gmsh at onelab.info>
>     >> http://onelab.info/mailman/listinfo/gmsh
>     >>
>     > _______________________________________________
>     > gmsh mailing list
>     > gmsh at onelab.info <mailto:gmsh at onelab.info>
>     > http://onelab.info/mailman/listinfo/gmsh
>
>     --
>     ----------------------------------------------------------------------------------------------------------------------
>     Dr. sc. techn. Benedikt Oswald - first engineer - LSPR AG - phone
>     +41 43 366 90 74
>     Grubenstrasse 9, CH-8045 Zürich, benedikt.oswald at lspr.swiss
>     ----------------------------------------------------------------------------------------------------------------------
>
>
>     _______________________________________________
>     gmsh mailing list
>     gmsh at onelab.info <mailto:gmsh at onelab.info>
>     http://onelab.info/mailman/listinfo/gmsh
>
> -- 
> --
> jeremy theler
> www.seamplex.com <http://www.seamplex.com>

-- 
----------------------------------------------------------------------------------------------------------------------
Dr. sc. techn. Benedikt Oswald - first engineer - LSPR AG - phone +41 43 366 90 74
Grubenstrasse 9, CH-8045 Zürich, benedikt.oswald at lspr.swiss
----------------------------------------------------------------------------------------------------------------------


-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 882 bytes
Desc: OpenPGP digital signature
URL: <http://onelab.info/pipermail/gmsh/attachments/20180406/a3963e74/attachment.asc>


More information about the gmsh mailing list