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

Jobの実行

Coreform IGA Jobは、Coreform IGA Mesh生成、Coreform-to-Abaqus interoperability、Abaqus solveの3つのstageを順番に調整します。永続化されるJob定義は、実行時に必要に応じて作成されるnative Abaqus Jobとは別です。

1 local Jobを設定

from abaqus import mdb
import coreform.abaqus

coreform.abaqus.init_iga_mdb()

jobs = mdb.customData.CoreformIGA

job = jobs.Job(
    name="Beam-IGA",
    model="Beam",
    numIgaCpus=8,
    numCpus=16,
    memory=90,
    memoryUnits="PERCENTAGE",
)

job.setValues(numIgaCpus=12, numCpus=24)

Mesh stageとsolve stageには独立したCPU設定があります。executable fieldではCoreform Mesh、MPI、interoperability executableを上書きできます。空のままにするとインストール済みdefaultを使用します。

2 pipelineを準備して実行

事前にCoreform Meshとinteroperability artifactを準備したい場合は buildMesh() を使用します。 submit() は不足しているinputを準備し、対応するlocal execution pathまたはAbaqus queue execution pathを開始します。

build = job.buildMesh()
if build.ok:
    print("Mesh and interoperability stages completed")

job.submit(overwriteExistingFiles=True)
job.waitForCompletion()

status = job.getRuntimeStatus()
print(status["status"])

odb = job.openOdb()

Job artifactは既定でJob名をprefixとして使用します。既存outputを保護する挙動は意図的なものです。以前の解析fileが不要であることを確認してから、明示的に置換を許可してください。

3 queueを設定

事前にCoreform Meshとinteroperability artifactを準備したい場合は RemoteQueue は、名前付きAbaqus environment-file queueまたは外部schedulerを表します。同じqueueを全stageに適用することも、stageごとに別のqueueを指定することもできます。

from coreform.job import RemoteQueue

slurm = RemoteQueue(
    scheduler="SLURM",
    queue_name="compute",
    account="project-123",
    walltime="02:00:00",
    nodes=2,
)

job = jobs.Job(
    name="Beam-IGA",
    model="Beam",
    queue=slurm,
    numIgaCpus=16,
    numCpus=32,
)

job.writeRunScript(
    fileName="Beam-IGA.slurm",
    dialect="SLURM",
    prepareInputs=True,
)

writeRunScript() は、pipelineを現在のAbaqus/CAE process外で実行する場合、またはscheduler設定をCAE内submissionで表現できない場合に有用です。

4 portable Jobから開始

Abaqus外で CoreformIGAJobSpec を作成またはdeserializeし、相互排他的な spec= 形式で渡します。

job = jobs.Job(spec=portableJobSpec)

永続化recordからimmutableなportable representationへ戻すには record.toSpec() を呼び出します。上級ユーザーは、永続化Abaqus recordを使わずにportable artifact、execution-plan、execution-context、script-rendering typeを直接調べたり組み立てたりできます。

正確なconstruction field、runtime method、queue type、status field、repository operationについては、 Abaqus Jobリファレンス および portable Jobリファレンス を参照してください。