Getting started with scripting
Coreform IGA scripts run inside the Abaqus Python kernel supplied by the Coreform IGA custom application. The coreform_iga launcher loads Abaqus/CAE and the Coreform kernel data classes before executing your script.
1 Run a script from a terminal
Save your script before launching it and use an absolute path when practical. The following examples use the default Coreform IGA for Abaqus 2026.9 installation locations.
On Linux:
cd /home/jsmith/cifa-scripts
/opt/Coreform-IGA-2026.9/bin/coreform_iga \
noGUI="/home/jsmith/cifa-scripts/my_script.py"If the launcher is on PATH, you can use:
coreform_iga noGUI="$PWD/my_script.py"On 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'Replace the example username, version, and installation directory with the paths on your computer. On Linux, command -v coreform_iga reports the launcher selected from PATH. On Windows PowerShell, use Get-Command coreform_iga.bat.
The script runs inside Abaqus Python—not the system Python interpreter. Its print() output and Abaqus or Coreform diagnostics appear in the terminal.
Use the Coreform coreform_iga launcher. A plain Abaqus/CAE session does not load the Coreform IGA kernel data classes.
2 Initialize the model database
Start scripts by importing the current Abaqus model database and initializing its Coreform namespaces:
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.CoreformIGAinit_iga_mdb() is idempotent. Call it again after creating models, parts, or assembly instances to initialize the new objects. For one part or independent instance created later, init_iga_mesh_owner(owner) attaches only that owner’s Mesh namespace.
The persistent object model has three domain entry points:
| Domain | Namespace | Stored records |
|---|---|---|
| Probes | model.steps.customData.CoreformIGA |
namespace.probes[name] |
| Meshes | part.customData.CoreformIGA or independentInstance.customData.CoreformIGA |
namespace.mesh |
| Jobs | mdb.customData.CoreformIGA |
namespace.jobs[name] |
3 Understand the API layers
The coreform package separates portable Coreform data from integrations with specific downstream applications:
coreform.job,coreform.mesh, andcoreform.probeform the portable Coreform layer. These modules define the raw, immutable specifications and related operations using conventional Python snake_case names. They do not depend on Abaqus and can be used by ordinary Python programs.coreform.abaqus.job,coreform.abaqus.mesh, andcoreform.abaqus.probeform the Abaqus adapter layer. These modules translate portable data into Abaqus-facing records and operations, including persistentcustomDataobjects, owner resolution, validation, and journaling. Their customer-facing operations follow Abaqus naming conventions.
The Scripting Reference mirrors the interop/abaqus/cf_app/coreform source tree. Each page represents one source directory: its linked directory tree leads to adapter or portable subpackages, and its file sections document public Python declarations defined directly in that directory.
4 Create and change persistent data
Abaqus-facing factories use PascalCase names such as PointProbe and ImmersedRectilinearMesh. Their parameters and persistent-record methods use Abaqus-style camelCase names such as instanceNames, elementSize, and setValues.
Factories return the newly created persistent record. Record attributes are read-only; use setValues() so validation, persistence, and Abaqus journaling remain synchronized. Use deleteProbe(), deleteMesh(), and deleteJob() rather than deleting repository entries directly.
Invalid values raise coreform.validation.ValidationError. A failed creation or update is validated before the stored data changes.
5 Work with portable specifications
Portable specifications are immutable, Abaqus-free Python objects that use snake_case names. They can be authored outside Abaqus and passed to an Abaqus factory through its mutually exclusive spec= form:
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)Every persistent Probe, Mesh, and Job record provides toSpec() to recover its portable representation. Dictionaries and JSON are the supported versioned interchange formats for moving specifications between processes or downstream tools.
6 Verify persistent data
After building or reopening a model database, you can validate all Coreform namespaces and records without modifying them:
result = coreform.abaqus.verify_iga_mdb()
if not result.passed:
for issue in result.issues:
print(issue)Continue with Working with Probes, Working with Meshes, or Running Jobs. For exact method details, use the Scripting Reference.