2017-08-16 2 views
1

Je travaille avec Abaqus/Python pour une analyse par éléments finis. J'ai le problème suivant: J'ai un domaine 3D qui se compose d'un domaine 2D contenant des bords ainsi que des segments de cercle et qui est extué dans la troisième dimension. Maintenant, je veux mailler ce domaine avec la contrainte que seulement un élément dans le sens de l'épaisseur doit être utilisé. L'exemple suivant un minimum d'un quart de cercle extrudé dans le code Python:Contraintes d'ensemencement fixes Abaqus/Python

from abaqus import * 
from abaqusConstants import * 
import __main__ 

# Sketch quarter circle 
s = mdb.models['Model-1'].ConstrainedSketch(name='__profile__', 
    sheetSize=50.0) 
g, v, d, c = s.geometry, s.vertices, s.dimensions, s.constraints 
s.setPrimaryObject(option=STANDALONE) 

s.ArcByCenterEnds(center=(0.0, 0.0), point1=(0.0, 5.0), point2=(5.0, 0.0), 
    direction=CLOCKWISE) 
s.Line(point1=(0.0, 5.0), point2=(0.0, 0.0)) 
s.Line(point1=(0.0, 0.0), point2=(5.0, 0.0)) 


# Create part from sketch and extrusion in the depth 
p = mdb.models['Model-1'].Part(name='Part-1', dimensionality=THREE_D, 
    type=DEFORMABLE_BODY) 
p.BaseSolidExtrude(sketch=s, depth=0.1) 
s.unsetPrimaryObject() 
session.viewports['Viewport: 1'].setValues(displayedObject=p) 
del mdb.models['Model-1'].sketches['__profile__'] 

# Mesh 
# Global seeds 
p.seedPart(size=0.35, deviationFactor=0.1, minSizeFactor=0.1) 
# 'fixed' seeding constraint: only one element in thickness direction 
e = p.edges 
pickedEdges = e.findAt(((5.0, 0.0, 0.025),), ((0.0, 5.0, 0.025),), 
    ((0.0, 0.0, 0.025),)) 
p.seedEdgeByNumber(edges=pickedEdges, number=1, constraint=FIXED) 

# Generate mesh 
p.generateMesh() 

Dans la dernière ligne, quand je veux générer le maillage, le domaine ne peut être maillé parce que les contraintes d'ensemencement « fixes » ne peuvent pas être honorés. Si j'utilise

p.generateMesh(seedConstraintOverride=ON) 

pour générer le maillage, le domaine peut être maillé, mais seulement avec deux éléments dans le sens de l'épaisseur. Existe-t-il un moyen de mailler le domaine avec un seul élément dans le sens de l'épaisseur? Si non, pourquoi?

Répondre

0

Il y a plusieurs façons de procéder. Une option consiste à simplement changer la technique de maillage à balayer. Par exemple, en supposant que votre partie se compose d'une seule cellule géométrique (comme dans votre exemple de code), vous pouvez utiliser les éléments suivants:

part_cells = p.cells() 
p.setMeshControls(regions=(part_cells[0],), technique=SWEEP) 
p.generateMesh() 

Vous devez donner l'argument mot-clé region comme une séquence de la région ou des objets Set. Notez que si la longueur de la direction de balayage est inférieure à la taille globale de la graine, vous n'avez pas besoin de spécifier de contrainte de graine de bordure et un seul élément sera généré.

+0

Merci pour la réponse! – SoB