Coreform IGA for Abaqus
Coreform公式ドキュメントを基にした日本語版です。技術仕様・対応状況の最終的な基準は公式英語版です。

スクリプティングを始める

Coreform IGA scriptは、Coreform IGA custom applicationが提供するAbaqus Python kernel内で実行されます。 coreform_iga launcherは、scriptを実行する前にAbaqus/CAEとCoreform kernel data classを読み込みます。

1 terminalからscriptを実行

起動前にscriptを保存し、可能な場合はabsolute pathを使用してください。次の例ではCoreform IGA for Abaqus 2026.9のdefault installation locationを使用します。

Linuxの場合:

cd /home/jsmith/cifa-scripts

/opt/Coreform-IGA-2026.9/bin/coreform_iga \
  noGUI="/home/jsmith/cifa-scripts/my_script.py"

launcherが PATHにある場合は、次のように実行できます。

coreform_iga noGUI="$PWD/my_script.py"

Windows PowerShellの場合:

cd 'C:\Users\jsmith\cifa-scripts'

& 'C:\Program Files\Coreform IGA 2026.9\coreform_iga.bat' `
  'noGUI=C:\Users\jsmith\cifa-scripts\my_script.py'

例のusername、version、installation directoryは使用中のcomputerのpathに置き換えてください。Linuxでは、 command -v coreform_iga により PATHから選択されたlauncherを確認できます。Windows PowerShellでは次を使用します。 Get-Command coreform_iga.bat.

scriptはsystem Python interpreterではなくAbaqus Python内で実行されます。その print() outputとAbaqusまたはCoreformのdiagnosticはterminalに表示されます。

Coreformの coreform_iga launcherを使用してください。通常のAbaqus/CAE sessionではCoreform IGA kernel data classは読み込まれません。

2 model databaseを初期化

scriptの先頭で現在のAbaqus model databaseをimportし、Coreform namespaceを初期化します。

from abaqus import mdb
import coreform.abaqus

coreform.abaqus.init_iga_mdb()

model = mdb.models["Model-1"]
probeApi = model.steps.customData.CoreformIGA
meshApi = model.parts["Part-1"].customData.CoreformIGA
jobApi = mdb.customData.CoreformIGA

init_iga_mdb() はidempotentです。model、part、assembly instanceを新規作成した後に再度呼び出すと、新しいobjectを初期化できます。後から作成した1つのpartまたはindependent instanceについては、 init_iga_mesh_owner(owner) によりそのownerのMesh namespaceだけを追加します。

永続object modelには3つのdomain entry pointがあります。

Domain Namespace 保存されるrecord
Probe model.steps.customData.CoreformIGA namespace.probes[name]
Mesh part.customData.CoreformIGA または independentInstance.customData.CoreformIGA namespace.mesh
Job mdb.customData.CoreformIGA namespace.jobs[name]

3 API layerを理解する

coreform packageは、portableなCoreform dataと特定downstream applicationとのintegrationを分離します。

  • coreform.job, coreform.mesh、および coreform.probe はportable Coreform layerを構成します。これらのmoduleは、通常のPython snake_case名を使用してrawでimmutableなspecificationと関連operationを定義します。Abaqusには依存せず、通常のPython programから使用できます。
  • coreform.abaqus.job, coreform.abaqus.mesh、および coreform.abaqus.probe はAbaqus adapter layerを構成します。これらのmoduleはportable dataをAbaqus向けrecordとoperationへ変換し、永続化される customData object、owner resolution、validation、journalingを提供します。customer-facing operationはAbaqusの命名規則に従います。

スクリプティングリファレンス は interop/abaqus/cf_app/coreform source treeに対応しています。各ページは1つのsource directoryを表し、リンクされたdirectory treeからadapterまたはportable subpackageへ進めます。file sectionにはそのdirectoryで直接定義されるpublic Python declarationを記載しています。

4 永続dataを作成・変更

Abaqus向けfactoryは、たとえば PointProbe および ImmersedRectilinearMeshのようなPascalCase名を使用します。parameterとpersistent-record methodは、たとえばAbaqus styleのcamelCase名を使用します。 instanceNames, elementSize、および setValues.

factoryは新しく作成したpersistent recordを返します。record attributeはread-onlyなので、 setValues() を使用してvalidation、persistence、Abaqus journalingの同期を保ってください。repository entryを直接削除するのではなく、 deleteProbe(), deleteMesh()、および deleteJob() を使用します。

invalid valueでは coreform.validation.ValidationErrorが発生します。作成または更新が失敗した場合は、保存dataを変更する前にvalidationで停止します。

5 portable specificationを扱う

portable specificationはimmutableでAbaqusに依存しないPython objectで、snake_case名を使用します。Abaqus外で作成し、Abaqus factoryの相互排他的な spec= 形式で渡せます。

from coreform.probe import PointProbeSpec, ProbeRegion

spec = PointProbeSpec(
    name="Probe-1",
    region=ProbeRegion.instances(("PART-1-1",)),
    location=(0.0, 0.0, 0.0),
)

probe = probeApi.PointProbe(spec=spec)

永続化されるProbe、Mesh、Job recordはすべて toSpec() を提供し、portable representationへ戻せます。process間やdownstream toolとのspecification交換には、versioned dictionaryとJSONがサポートされる形式です。

5.1 Abaqus外でportable specificationを作成

portable moduleは、インストール済みの cf_app directory内にPython sourceとして同梱されています。現時点では独立した pip packageとして配布されていません。通常のPython 3.10 interpreterで実行する場合は、そのdirectoryを PYTHONPATH へ追加してください。この環境では coreform.probe, coreform.mesh, coreform.job, coreform.types、および coreform.validation だけをimportしてください。 coreform.abaqus にはAbaqus runtimeが必要です。

default Linux installationの場合:

export COREFORM_IGA_CF_APP=/opt/Coreform-IGA-2026.9/interop/abaqus/cf_app
export PYTHONPATH="$COREFORM_IGA_CF_APP${PYTHONPATH:+:$PYTHONPATH}"

python3.10 make_specs.py

default Windows installationをPowerShellで使用する場合:

$coreformIgaCfApp = 'C:\Program Files\Coreform IGA 2026.9\interop\abaqus\cf_app'
$env:PYTHONPATH = "$coreformIgaCfApp;$env:PYTHONPATH"

py -3.10 .\make_specs.py

必要に応じて例のversionとinstallation directoryを置き換えてください。source checkoutを使用する場合はcheckout内の interop/abaqus/cf_app directoryを代わりに使用します。

通常のPython scriptでもAbaqusをimportせずにspecificationを作成してserializeできます。

from pathlib import Path

from coreform.mesh import ElementSizeSizing, ImmersedRectilinearMeshSpec

spec = ImmersedRectilinearMeshSpec(
    degree=2,
    continuity=1,
    sizing=ElementSizeSizing((0.5, 0.5, 0.5)),
)
Path("mesh-spec.json").write_text(spec.to_json(), encoding="utf-8")

versioned JSONは coreform_igaで起動したscript内で読み込み、再構築したobjectを明示的なspec形式で渡します。 spec= 形式で渡せます。

from pathlib import Path

from coreform.mesh import ImmersedRectilinearMeshSpec

spec = ImmersedRectilinearMeshSpec.from_json(
    Path("mesh-spec.json").read_text(encoding="utf-8")
)
mesh = meshApi.ImmersedRectilinearMesh(spec=spec)

Pickleでも、信頼でき互換性のあるPython環境間では同じ coreform.* module pathを使用するためこれらのobjectを再構築できます。信頼できないinputをunpickleしないでください。PickleはPython protocolやCoreform releaseを跨ぐstable contractではなく、非Python toolにも提供できません。永続的な交換にはversioned dictionaryまたはJSON representationを使用してください。

6 永続dataを検証

model databaseを構築または再openした後、Coreform namespaceとrecordを変更せずに一括validationできます。

result = coreform.abaqus.verify_iga_mdb()

if not result.passed:
    for issue in result.issues:
        print(issue)

続いて次を参照してください。 Probeの操作, Meshの操作、または Jobの実行。正確なmethod詳細については、 スクリプティングリファレンス.