Meshの操作
Mesh recordは、1つのAbaqus partまたはindependent assembly instanceに対するCoreform IGA discretizationを定義します。有効なownerごとに永続化されるMeshは最大1つです。
1 Mesh ownerを選択
partとそのすべてのassembly instanceは1つのownership familyを構成します。そのfamilyのdependency stateに応じてMeshを保存します。
| Part-familyの状態 | Mesh owner |
|---|---|
| partにinstanceがない | part |
| すべてのinstanceがdependent | part。そこに保存したMeshがdependent instanceを支配します。 |
| すべてのinstanceがindependent | Meshが必要な各independent instance |
同じfamily内でpart-owned Meshとinstance-owned Meshを共存させることはできません。dependent instanceはMeshを直接所有できず、independent instanceはpartに保存されたMeshを使用できません。
2 Mesh typeを選択
ImmersedRectilinearMesh は、ownerのgeometryに合わせてtrimされたrectilinear background discretizationを作成します。sizing strategyはelement size、total interval count、axisごとのinterval countのいずれか1つだけを選びます。完全なcoordinate frameを指定することも、Coreformにownerから自動導出させることもできます。
BodyFitMesh はbody-fitting intentを記録し、rectilinear sizing、layout、padding、frame controlは受け付けません。
3 immersed Meshを作成してowner依存値を解決
from abaqus import mdb
import coreform.abaqus
coreform.abaqus.init_iga_mdb()
model = mdb.models["Beam"]
part = model.parts["Beam"]
meshes = part.customData.CoreformIGA
mesh = meshes.ImmersedRectilinearMesh(
degree=2,
continuity=1,
elementSize=(0.5, 0.5, 0.5),
elementLayout=("node_centered",) * 3,
smallCellVolumeRatio=0.2,
)
mesh.setValues(
degree=3,
continuity=2,
elementSize=(0.25, 0.25, 0.25),
)
resolved = mesh.resolveForOwner()
print(resolved.frame.origin)
print(resolved.frame.basis)
print(resolved.extents)
print(resolved.padding)toSpec() では、自動frameおよびpadding fieldは None. resolveForOwner() は、保存済みMeshを変更せずに、owner依存値を実体化したportable specificationを返します。
4 Meshの置換または削除
同じownerに2つ目のMeshを作成しようとすると、通常は ValidationErrorが発生します。置換を意図している場合は overwrite=True を使用します。既存recordを変更する前にcandidate全体がvalidationされます。
replacement = meshes.BodyFitMesh(
degree=2,
continuity=1,
overwrite=True,
)
meshes.deleteMesh()正確なconstructor、sizing/frame group、record attribute、namespace operationについては、 Abaqus Meshリファレンス および portable Meshリファレンス を参照してください。