Agent-oriented finite-element workflow tools built on DOLFINx/PETSc.
Project description
AgentFEM
AgentFEM is an agent-oriented finite-element workflow platform built on DOLFINx/PETSc. It aims to make finite-element scripts readable to both researchers and AI agents by keeping the standard CAE workflow visible:
Study -> Model -> Mesh/Regions -> Fields -> Materials -> Loads/Constraints
-> Operators -> Step -> Solve -> Diagnostics/Output
The current MVP focuses on linear elasticity, transient heat conduction,
explicit elastodynamics, reusable loads and constraints, material records,
operator-level K/M/C/F notation, model inspection, and ParaView/XDMF output.
Why AgentFEM
- Finite-element language for humans:
model.linear_static_step(...),model.tree(),operators.xtmx(...), and field algebra such asu_next = u + dt * v + 0.5 * dt**2 * a. - Inspectable objects for agents:
study.summary(),model.manifest(),operator.summary(), and step summaries. - Transparent layers: daily workflows use
models,fields,loads,operators, andproblems; advanced users can still drop toforms,assembly, PETSc, or DOLFINx when needed.
Install
AgentFEM currently expects a working FEniCSx/DOLFINx stack. The recommended route is conda-forge:
mamba create -n agentfem-env -c conda-forge \
python=3.11 fenics-dolfinx=0.11 gmsh mpi4py petsc4py \
meshio matplotlib jupyterlab ipykernel
mamba activate agentfem-env
For local development from this repository:
python -m pip install -e .
After the first PyPI release, users will install AgentFEM with:
python -m pip install agentfem
requirements.txt records the tested MVP stack and optional documentation /
notebook helpers. Pure pip installation of DOLFINx can be fragile because MPI,
PETSc, and HDF5 must match.
Quick Start
Run the beginner static-elasticity example:
python examples/static_elasticity_2d.py
From the parent development directory used in this workspace:
python agentfem/examples/static_elasticity_2d.py
The output is written to examples_output/static_elasticity_2d.xdmf and can be
opened in ParaView.
Minimal Workflow
from mpi4py import MPI
import numpy as np
from agentfem import fields, mesh, models, studies
from agentfem.constitutive import elasticity
study = studies.linear_static(
physics="solid_mechanics",
dimension=2,
assumption="plane_strain",
)
domain = mesh.rectangle(
lower=(0.0, 0.0),
upper=(1.0, 0.2),
cells=(40, 8),
comm=MPI.COMM_WORLD,
cell_type="quadrilateral",
)
model = models.create(study=study, mesh=domain, name="cantilever")
u = model.field(fields.displacement(domain, degree=1))
model.material(elasticity.isotropic_elastic(young=210e9, poisson=0.3, density=7800))
left = mesh.boundary(domain, lambda x: np.isclose(x[0], 0.0), name="left", tag=1)
right = mesh.boundary(domain, lambda x: np.isclose(x[0], 1.0), name="right", tag=2)
model.fix(u, on=left, value=0.0)
model.traction(value=(0.0, -1.0e6), on=right)
step = model.linear_static_step(target=u)
step.solve()
print(model.tree())
The Step path is the recommended public workflow. It still exposes the
operator system for review:
print(step.system.summary())
Public Workflow Modules
Beginner and agent-generated workflows should prefer:
from agentfem import studies, mesh, models, fields, materials, constitutive
from agentfem import amplitudes, constraints, loads, operators, problems
from agentfem import solvers, time, io, diagnostics
Lower-level modules such as forms, assembly, spaces, and kernel remain
available for extension work and debugging, but they should not be the first
thing a new model exposes.
Examples
examples/static_elasticity_2d.py: beginner linear-static mechanics example.examples/transient_heat_2d.py: intermediate first-order transient heat solve.examples/wave_packet_plate_2d.py: advanced explicit dynamics wave example.examples/wave_packet_inclusion_2d.py: advanced wave propagation with regional material assignment and absorbing/periodic boundary handling.
Documentation
WORKFLOW.md: standard AgentFEM modeling sequence.INSTALL.md: tested MVP environment and smoke-test command.CONCEPTS.md: shared vocabulary for finite-element and agent workflows.AGENT_GUIDE.md: first file for AI agents working in this repository.docs/: design notes, module map, validation notes, and extension rules.docs/publishing.md: PyPI release checklist and Trusted Publisher setup.site/index.html: generated static documentation site.
Rebuild the local documentation site with:
python build_docs.py
MVP Status
AgentFEM is a research-oriented MVP. It is not yet a general-purpose CAE replacement. The stable direction is:
- model-first workflows for common analyses,
- operator-first workflows for transparent research code,
- structured model manifests for agents,
- examples and benchmarks that make assumptions explicit.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentfem-0.1.1.tar.gz.
File metadata
- Download URL: agentfem-0.1.1.tar.gz
- Upload date:
- Size: 76.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6bf5aa1b1dcf8efcfe288db48ec213758d90a00926cbd0a99b3d0a123cab485c
|
|
| MD5 |
0d1c68cb9dac2e5cbc21e2b33cb59c22
|
|
| BLAKE2b-256 |
dea5b8477d68bf87ef5307f6bfedc433f8c597b527c95706dfbe2e313304ba55
|
Provenance
The following attestation bundles were made for agentfem-0.1.1.tar.gz:
Publisher:
publish-pypi.yml on haoming-luo/agentfem
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentfem-0.1.1.tar.gz -
Subject digest:
6bf5aa1b1dcf8efcfe288db48ec213758d90a00926cbd0a99b3d0a123cab485c - Sigstore transparency entry: 2230432233
- Sigstore integration time:
-
Permalink:
haoming-luo/agentfem@e097abef2f22c7d468dedd6ee69571c7f36ac745 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/haoming-luo
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e097abef2f22c7d468dedd6ee69571c7f36ac745 -
Trigger Event:
push
-
Statement type:
File details
Details for the file agentfem-0.1.1-py3-none-any.whl.
File metadata
- Download URL: agentfem-0.1.1-py3-none-any.whl
- Upload date:
- Size: 65.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aad7a123b1d9458b974ae5cf06a25f5a8be1f8cce2b9d17f14f3017f582745ee
|
|
| MD5 |
64ae15c83dc59bad82cee0ccbcfaf24e
|
|
| BLAKE2b-256 |
0cf51d950571dde02f61dd0eacc87846887fcfaf561d9567691336f2e11544dd
|
Provenance
The following attestation bundles were made for agentfem-0.1.1-py3-none-any.whl:
Publisher:
publish-pypi.yml on haoming-luo/agentfem
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentfem-0.1.1-py3-none-any.whl -
Subject digest:
aad7a123b1d9458b974ae5cf06a25f5a8be1f8cce2b9d17f14f3017f582745ee - Sigstore transparency entry: 2230432852
- Sigstore integration time:
-
Permalink:
haoming-luo/agentfem@e097abef2f22c7d468dedd6ee69571c7f36ac745 -
Branch / Tag:
refs/tags/v0.1.1 - Owner: https://github.com/haoming-luo
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-pypi.yml@e097abef2f22c7d468dedd6ee69571c7f36ac745 -
Trigger Event:
push
-
Statement type: