Software de generación de malla con script

17

Estoy buscando un software de generación de mallas que

  • es gratis y de código abierto,
  • proporciona una interfaz de secuencia de comandos sana para la especificación de dominio,
  • funciona para geometrías complejas,
  • puede generar mallas 2D y 3D,

¿Que opciones tengo?

Nico Schlömer
fuente

Respuestas:

10

Te recomendaría que mires gmsh . Tiene entrada de texto y CAD, capaz de mallas de orden superior en 2D y 3D. Está licenciado bajo la GPL, por lo que existen algunas restricciones para integrarlo en software de código cerrado, pero por lo demás es completamente gratuito / de código abierto.

Vidente de Godric
fuente
Desafortunadamente, el lenguaje de secuencias de comandos es una locura. ;)
Nico Schlömer
¿En qué manera? ¿Se refiere a las entradas del archivo de texto o alguna otra interfaz?
Godric Seer
2
Solo he usado gmsh en alguien con geometrías simples, ya que mis problemas casi siempre se complican por factores distintos de la geometría. Si bien solo he trabajado en estas geometrías más simples, definitivamente encontré que gmsh es el más intuitivo y fácil de aprender. Sin embargo, no discutiré contigo sobre tratar de hacer procedimientos más complicados ya que no tengo experiencia con ellos.
Godric Seer
55
Siempre puede escribir sus scripts en el idioma que desee y simplemente crear archivos como resultado de su script que luego se envían como entradas a gmsh.
Wolfgang Bangerth
1
@WolfgangBangerth Realmente comencé un pequeño proyecto de juguete en Python en github.com/nschloe/python4gmsh .
Nico Schlömer
4

Usualmente uso tetgen para 3D (licencia MIT para investigación / no comercial) y triángulo para 2D (licencia personalizada gratis para no comercial). Para escribirlos, escribe un archivo de entrada y llama a la línea de comando.

aterrel
fuente
2
"Tenga en cuenta que TetGen es gratuito para investigación y usos no comerciales. Para cualquier uso comercial, una licencia comercial está disponible a pedido". - Esta no es una licencia de software libre o de código abierto (bajo la definición OSI o FSF), y mucho menos una licencia MIT.
Jed Brown
Sí, acabo de leer el primer bit del archivo de licencia. La mayoría de las personas no son tan estrictas en su significado de libre como el OSI o FSF.
aterrel
Estaba a punto de hacer una pregunta similar. ¿Tetgen es compatible con FEniCS?
seb
@aterrel Lea el archivo de LICENCIA: "Esto significa que TetGen no es un software gratuito, pero para fines privados, de investigación y educativos, puede usarse sin costo alguno y sin más arreglos".
Jed Brown
1
Sí, @JedBrown, estuve de acuerdo contigo y edité la respuesta. Pero para los legos, gratis generalmente significa "no tengo que pagar por ello", no legaliza el RMS. También diría que la GPL no es "gratuita", pero que probablemente no sea una discusión apropiada para este foro.
aterrel
3

MeshPy se puede utilizar para obtener mallas triangulares y tetraédricas. Proporciona un medio fácil de generación de malla con script.

MeshPy proporciona interfaces de Python a Triangle y TetGen mencionadas por aterrel.

Subodh
fuente
1

He encontrado que Salomé es muy flexible, con un entorno mucho mejor que gmsh. Tiene una sensación mucho más profesional en mi humilde opinión. Además, puede generar también mallas hexaédricas. Realmente vale la pena intentarlo!

FlatronL1917
fuente
No me gusta el hecho de que nada en el modelo de geometría sea editable desde la interfaz de usuario o la consola de Python. Básicamente, si desea hacer cambios, debe eliminar y volver a crear. Eso agrega mucha sobrecarga durante el diseño
lurscher
Esto es cierto si importa una geometría dada a usted en un archivo STEP, por ejemplo. Pero si no me equivoco, esto también es cierto para los otros programas mencionados aquí! Además, si tiene el archivo HDF o el script de volcado de Python, seguramente puede cambiar cualquier cosa.
FlatronL1917
1

OpenSCAD se ajusta a todos los puntos, excepto la malla de volumen. Se basa en scripts de entrada y genera mallas de superficie STL.

Joe Dohn
fuente
1

Mientras tanto, creé

  • pygmsh como una interfaz de Python para gmsh y
  • pygalmesh como una interfaz de Python para las capacidades de mallado 3D de CGAL.

Ambos están bastante bien recibida, así que supongo que son de utilidad para otros también.

Nico Schlömer
fuente
1

¿Por qué no Blender ? Es un software potente, gratuito y de código abierto con soporte para secuencias de comandos de Python también.

En Blender 2.79 debes elegir Scriptingcomo Screen layout.

En la esquina superior izquierda, Text Editorpresione + para crear un nuevo bloque de datos de texto; comience con import bpyy luego inserte los comandos de python relativos a cada operación que puede hacer desde la GUI, leyendo el comando relativo colocando el mouse sobre el elemento de la GUI.

En la captura de pantalla adjunta se muestran los comandos para triangular un círculo, comenzando desde la escena predeterminada con un cubo:

ingrese la descripción de la imagen aquí

De esta manera, puede usar Blender en modo de secuencia de comandos, sin su GUI para exportar, por ejemplo, un archivo de salida, ejecutando su secuencia de comandos de Python en una terminal:

blender --background --python myscript.py

Aquí un video tutorial en YouTube.

Salud

Riccardo Volpe
fuente
¿Blender puede hacer esto? Nunca lo supe. ¿Cómo triangularía, por ejemplo, un círculo?
Nico Schlömer
@ChristianClason: ¿Cómo no es esto una respuesta? Aborda la pregunta. Puede quejarse de que carece de detalles o incluso de que está mal, pero para eso están los votos negativos. Ciertamente no es un comentario.
Wrzlprmft
@Wrzlprmft Muchas gracias. Creo que podría ser bueno si le proporciono a Nico Schlömer un video tutorial detallado, escribiendo el código esencial aquí. Pero mientras tanto, puedo vincular un tema escrito por mí mismo hace tiempo en idioma italiano, pidiendo ayuda para exportar una malla mediante el uso de secuencias de comandos de Blender (ese sitio web se ha actualizado, para el cual algunos recursos no están más disponibles): blender. it / forums / topic / difetto-texture-file-obj-da-wrl Aquí hay un ejemplo de videotutorial en YouTube: youtube.com/watch?v=K0yb4sZ7B4g
Riccardo Volpe
Si tiene algo que añadir a su pregunta, por favor edición en.
Wrzlprmft