# BG Mesh
from toolbox.gen4tools import createBG
import wrap.gen4
bgeo = wrap.gen4.Geometry()
densityCircle = 0.02
densityTop = 0.05
a = ((2.0*densityCircle-densityTop) * (Ly-cy)*(Ly-cy) - densityCircle * R*R)/((Ly-cy)*(Ly-cy)-R*R)
b = (densityTop - densityCircle)/((Ly-cy)*(Ly-cy)-R*R)
print a
print b
# Magnifique fonction avec une densite de maille elevee au bord du cercle,
# densite qui diminue quand on s'en eloigne
def densityFunction(a,b):
return lambda x,y : a + b * ((x-cx)*(x-cx) + (y-cy)*(y-cy))
bgmesh = createBG(bgeo, densityFunction(a,b), eps=0.7, delta=0.0, density=2.0)
# Mesh
from toolbox.meshers import Gen4Mesher
mesher = Gen4Mesher(sideset(1), domain)
mesher.setBgMesh(bgmesh)
mesher.execute()
def createBG(bgeo, fct, eps=2.0, delta=0.0, density=2.0):
n1 = bgeo.add(Node(1, -eps+delta, -eps+delta, density))
n2 = bgeo.add(Node(2, 1.0+eps+delta, -eps+delta, density))
n3 = bgeo.add(Node(3, 1.0+eps+delta, 1.0+eps+delta, density))
n4 = bgeo.add(Node(4, -eps+delta, 1.0+eps+delta, density))
side = createSide(1, bgeo, n1,n2,n3,n4)
bgmesh = startGen4(side,interactive=False)
Quad2Tri(bgmesh).execute()
bgmesh.setDensityF(fct)
return bgmesh
Pied d'aube généré avec gen4 + background mesh : raffinement aux bords d'attaque et de fuite.
SplineSeg et background mesh : raffinement du maillage selon un rond. Le centre du background mesh a une longueur de maille donnée et cette longueur décroît quand on s'éloigne du centre.
Spline et background mesh : Raffinement du maillage quand on va de en haut à gauche à en bas à droite.
Maillage gen4 avec background mesh dans Metafor. La fonction densité du bgMesh a une densite de maille élevée au bord du cercle, et diminue ensuite quand on s'en eloigne.
A oo_meta/apps/qs/gen4meshBg.py A oo_meta/toolbox/gen4/geo9 A oo_meta/toolbox/gen4/geo9b A oo_meta/toolbox/gen4/geo9c
— Pierre-Paul Jeunechamps 2007/04/23 10:33