New: netgen to foam mesh conversion

This commit is contained in:
L-Nafaryus 2021-11-02 22:01:43 +05:00
parent 085ec5a0e2
commit 06dcb26391
No known key found for this signature in database
GPG Key ID: C76D8DCD2727DBB7
4 changed files with 54 additions and 0 deletions

41
anisotropy/meshing.py Normal file
View File

@ -0,0 +1,41 @@
# -*- coding: utf-8 -*-
# This file is part of anisotropy.
# License: GNU GPL version 3, see the file "LICENSE" for details.
from netgen.occ import OCCGeometry
from netgen import meshing
import numpy
class Mesh(object):
def __init__(self, shape):
self.geometry = OCCGeometry(shape)
self.mesh = None
@property
def parameters(self):
return meshing.MeshingParameters(
maxh = 0.2,
curvaturesafety = 5,
segmentsperedge = 3,
grading = 0.1,
chartdistfac = 5,
linelengthfac = 3,
closeedgefac = 5,
minedgelen = 2.0,
surfmeshcurvfac = 5.0,
optsteps2d = 5,
optsteps3d = 5
)
def build(self):
self.mesh = self.geometry.GenerateMesh(self.parameters)
def doubleExport(self):
pass
def volumes(self) -> numpy.array:
# TODO: check each polyhedron
tetras = numpy.array([ [ [ vertex for vertex in mesh[index] ] for index in element.vertices ] for element in mesh.Elements3D() ])
volumes = numpy.array([ 1 / 6 * linalg.det(numpy.append(tetra.transpose(), numpy.array([[1, 1, 1, 1]]), axis = 0)) for tetra in tetras ])
return volumes

View File

@ -7,3 +7,7 @@ from .application import application
def ideasUnvToFoam(mesh: str, case: str = None) -> (str, int):
return application("ideasUnvToFoam", mesh, case = case, stderr = True)
def netgenNeutralToFoam(mesh: str, case: str = None) -> (str, int):
return application("netgenNeutralToFoam", mesh, case = case, stderr = True)

9
anisotropy/shaping.py Normal file
View File

@ -0,0 +1,9 @@
# -*- coding: utf-8 -*-
# This file is part of anisotropy.
# License: GNU GPL version 3, see the file "LICENSE" for details.
from netgen.occ import *
class Shape(object):
def __init__(self):
pass

0
anisotropy/solving.py Normal file
View File