Python API¶
This index is generated from the public workflow modules declared by AgentFEM. It is a discovery surface: detailed scientific meaning, maturity, and evidence remain in the linked guides and scientific function reference.
Generated reference
Run python build_docs.py to refresh this page after public API changes.
agentfem.studies¶
| Kind | Public object | Purpose |
|---|---|---|
| class | Study |
Early analysis context for a finite-element workflow. |
| function | define(*, analysis: str, physics: str, dimension: int, assumption: str \| None = None, name: str \| None = None, preferred_procedure: str \| None = None) -> Study |
Define a general finite-element study context. |
| function | linear_static(*, physics: str, dimension: int, assumption: str \| None = None, name: str \| None = None) -> Study |
Define a linear static study. |
| function | nonlinear_static(*, physics: str, dimension: int, assumption: str \| None = None, name: str \| None = None) -> Study |
Define a nonlinear static study. |
| function | static_solid(*, dimension: int, assumption: str \| None = None, nonlinear: bool = False, name: str \| None = None) -> Study |
Define a static solid-mechanics study with concise engineering syntax. |
| function | steady_heat_transfer(*, dimension: int, name: str \| None = None) -> Study |
Define steady heat conduction, including source, flux, and convection. |
| function | first_order_transient(*, physics: str, dimension: int, assumption: str \| None = None, name: str \| None = None) -> Study |
Define a first-order transient study. |
| function | transient(*, physics: str, dimension: int, assumption: str \| None = None, name: str \| None = None) -> Study |
Compatibility alias for first_order_transient. |
| function | transient_heat_transfer(*, dimension: int, name: str \| None = None) -> Study |
Define an implicit first-order heat-transfer study. |
| function | nonlinear_transient(*, physics: str, dimension: int, assumption: str \| None = None, name: str \| None = None, procedure: str \| None = None) -> Study |
Define a nonlinear time-domain study. |
| function | creep_solid(*, dimension: int = 3, assumption: str \| None = None, name: str \| None = None) -> Study |
Define an implicit quasi-static creep study. |
| function | second_order_dynamics(*, physics: str, dimension: int, assumption: str \| None = None, name: str \| None = None, procedure: str \| None = None) -> Study |
Define a second-order dynamics study. |
| function | implicit_dynamics(*, physics: str, dimension: int, assumption: str \| None = None, method: str = 'newmark', name: str \| None = None) -> Study |
Define second-order dynamics with a Standard/implicit preference. |
| function | explicit_dynamics(*, physics: str, dimension: int, assumption: str \| None = None, name: str \| None = None) -> Study |
Define second-order dynamics with an Explicit preference. |
| function | dynamic_solid(*, dimension: int, assumption: str \| None = None, method: str = 'explicit', name: str \| None = None) -> Study |
Define structural dynamics without repeating the physics name. |
agentfem.mesh¶
| Kind | Public object | Purpose |
|---|---|---|
| class | FEMMesh |
DOLFINx mesh plus optional cell and facet tags. |
| class | TagSummary |
Summary of integer mesh tags on one topological entity dimension. |
| class | MeshSummary |
Human- and agent-readable mesh summary. |
| class | BoundaryRegion |
Named exterior boundary region on a mesh. |
| class | CellRegion |
Named cell/material region on a mesh. |
| class | NodeRegion |
Named source-node region, including high-order geometry nodes. |
| function | import_gmsh_model(model, comm: MPI.Comm = MPI.COMM_WORLD, *, model_rank: int = 0, gdim: int = 3) -> FEMMesh |
Convert an in-memory Gmsh model to a DOLFINx mesh. |
| function | rectangle(lower, upper, cells, comm: MPI.Comm = MPI.COMM_WORLD, *, cell_type: str \| mesh.CellType = 'quadrilateral') |
Create a structured 2D rectangular mesh. |
| function | cuboid(lower, upper, cells, comm: MPI.Comm = MPI.COMM_WORLD, *, cell_type: str \| mesh.CellType = 'hexahedron') |
Create a structured 3D cuboid mesh. |
| function | read_gmsh_mesh(path: str \| Path, comm: MPI.Comm = MPI.COMM_WORLD, *, model_rank: int = 0, gdim: int = 3) -> FEMMesh |
Read a .msh file with Gmsh and convert it to a DOLFINx mesh. |
| function | require_gmsh() |
Return the optional Gmsh Python API used only for direct Gmsh import. |
| function | optional_mesh_capabilities() -> tuple[dependencies.DependencyStatus, ...] |
Return availability of optional mesh-format integrations. |
| function | read_xdmf_mesh(path: str \| Path, comm: MPI.Comm = MPI.COMM_WORLD, *, mesh_name: str = 'mesh', cell_tags_name: str \| None = None, facet_tags_name: str \| None = None) -> FEMMesh |
Read a DOLFINx XDMF mesh and optional cell/facet meshtags. |
| function | write_xdmf_mesh(path: str \| Path, domain, comm: MPI.Comm \| None = None, *, mode: str = 'w') -> None |
Write a DOLFINx mesh to XDMF. |
| function | convert_external_mesh_to_xdmf(*args, **kwargs) |
Convert Abaqus/NASTRAN/COMSOL-like external meshes to XDMF. |
| function | convert_external_mesh_bundle(*args, **kwargs) |
Convert selected source topologies into explicit solver-domain files. |
| function | inspect_external_mesh(path) |
Inventory external element blocks and named sets before conversion. |
| function | split_gmsh_physical_interface(*args, **kwargs) |
Lower named Gmsh physical cell/surface groups to a split interface. |
| function | read_abaqus_mesh(path: str \| Path, converted_path: str \| Path, comm: MPI.Comm = MPI.COMM_WORLD, *, cell_type: str \| None = None, reuse_conversion: bool = True) -> abaqus.AbaqusMeshImport |
Convert and read an Abaqus mesh while retaining source node labels. |
| function | external_mesh_formats() -> dict[str, str] |
Return common external formats supported through optional meshio. |
| function | read_converted_xdmf(conversion, comm: MPI.Comm = MPI.COMM_WORLD, *, mesh_name: str = 'Grid', tag_grid_name: str = 'Grid') -> FEMMesh |
Read a :class:mesh.formats.MeshConversionResult into DOLFINx. |
| function | summarize_tags(tags) -> TagSummary \| None |
Summarize a DOLFINx meshtags object. |
| function | summarize_mesh(domain, cell_tags = None, facet_tags = None) -> MeshSummary |
Return local/global mesh size and tag summaries. |
| function | require_tags(tags, required: int \| tuple[int, ...] \| list[int], *, name: str = 'tags', comm = None) -> None |
Raise if required tags are absent globally. |
| function | require_cell_tags(cell_tags, required: int \| tuple[int, ...] \| list[int], *, comm = None) -> None |
Require cell/material region tags. |
| function | require_facet_tags(facet_tags, required: int \| tuple[int, ...] \| list[int], *, comm = None) -> None |
Require boundary/facet tags. |
| function | boundary(domain, marker, *, name: str = 'boundary', tag: int = 1) -> BoundaryRegion |
Create a named exterior boundary region from a geometric marker. |
| function | tagged_boundary_region(domain, facet_tags, *, tag: int, name: str = 'tagged_boundary', marker = None) -> BoundaryRegion |
Create a boundary whose canonical selection is an imported facet tag. |
| function | audit_boundary_region(region: BoundaryRegion, *, strict: bool = False) -> dict[str, object] |
Inspect a boundary's identity, size, orientation, and tag/marker agreement. |
| function | face(domain, *, axis: str \| int, value: float, name: str \| None = None, tag: int = 1, tolerance: float \| None = None) -> BoundaryRegion |
Create a planar exterior boundary region such as x = 0. |
| function | boundary_region(domain, marker, *, name: str = 'boundary', tag: int = 1) -> BoundaryRegion |
Alias for boundary when a more explicit name reads better. |
| function | cell_region(domain, cell_tags = None, *, tag: int, name: str = 'cell_region', marker = None) -> CellRegion |
Create a named cell/material region. |
| function | region_measure(location) |
Return a region's restricted measure or pass through a measure. |
| function | region_marker(location) |
Return a region's marker or pass through a marker callable. |
| function | cells(domain, *, name: str, where, tag: int = 1) -> CellRegion |
Create a named cell region from a selector. |
| function | partition_cells(domain, **regions) -> RegionSet |
Partition mesh cells into named cell regions. |
| function | partition_boundaries(domain, **regions) -> RegionSet |
Create named exterior boundary regions from selectors. |
| function | locate_cells(domain, marker) |
Locate cells using a geometrical marker. |
| function | mark_cells(domain, cells, tag: int) |
Create cell meshtags for a set of cells. |
| function | mark_cell_regions(domain, tag_to_marker: dict[int, object]) |
Create cell meshtags from several geometric cell markers. |
| function | tag_field(domain, tags, *, name: str = 'Tag') |
Create a DG0 visualization field from cell tags. |
| function | locate_boundary_facets(domain, marker) |
Locate exterior facets using a geometrical marker. |
| function | mark_facets(domain, facets, tag: int) |
Create a meshtags object for a set of facets. |
| function | mark_boundary_facets(domain, marker, tag: int) |
Locate and tag exterior facets in one step. |
| function | boundary_measure(domain, facet_tags = None) |
Create a boundary integration measure. |
| function | cell_measure(domain, cell_tags = None) |
Create a domain integration measure. |
| function | facet_normal(domain) |
Return the outward facet normal for boundary models. |
| function | tagged_boundary_measure(domain, marker, tag: int) |
Locate/tag exterior facets and return (ds, facet_tags). |
| class | RegionSet |
Named collection of regions sharing one mesh tag object. |
| class | Selector |
Boolean selector evaluated on coordinate arrays. |
| function | ball(center, radius: float) -> Selector |
Select points inside a 3D ball. |
| function | box(lower, upper) -> Selector |
Select points inside an axis-aligned box. |
| function | disk(center, radius: float) -> Selector |
Select points inside a 2D disk. |
| function | layer(axis: str \| int, lower = None, upper = None) -> Selector |
Select points inside a coordinate interval along one axis. |
| function | plane(axis: str \| int, value: float, *, tolerance: float = 1e-12) -> Selector |
Select points near a coordinate plane such as x = 0. |
| function | where(predicate, *, name: str \| None = None) -> Selector |
Create a selector from a vectorized coordinate predicate. |
agentfem.models¶
| Kind | Public object | Purpose |
|---|---|---|
| class | Model |
Finite-element model registry for humans and agents. |
| function | create(*, study, mesh = None, name: str = 'model', units = None) -> Model |
Create a lightweight model registry. |
agentfem.fields¶
| Kind | Public object | Purpose |
|---|---|---|
| class | Field |
Tensor-like finite-element field with immediate-value algebra. |
| class | UnknownField |
Finite-element unknown bundle for application-level workflows. |
| class | DisplacementPressureUnknown |
Mixed displacement/pressure unknown for hybrid solid mechanics. |
| function | scalar_unknown(domain, *, name: str = 'Unknown', degree: int = 1, value = 0.0) -> UnknownField |
Create a scalar finite-element unknown. |
| function | vector_unknown(domain, *, name: str = 'Unknown', degree: int = 1, dim: int \| None = None, value = 0.0) -> UnknownField |
Create a vector finite-element unknown. |
| function | displacement(domain, *, degree: int = 1, dim: int \| None = None, value = 0.0) -> UnknownField |
Create a displacement unknown for mechanics workflows. |
| function | displacement_pressure(domain, *, displacement_degree: int = 2, pressure_degree: int = 0, name: str = 'DisplacementPressure') -> DisplacementPressureUnknown |
Create a mixed displacement/pressure unknown. |
| function | temperature(domain, *, degree: int = 1, value = 0.0) -> UnknownField |
Create a temperature unknown for heat-transfer workflows. |
| function | wrap(function, *, name: str \| None = None) -> Field |
Wrap a DOLFINx function as an AgentFEM field. |
| function | unwrap(field_or_function) |
Return the underlying DOLFINx function when given an AgentFEM field. |
| function | empty_like(field_or_function, *, name: str \| None = None) -> Field |
Create a zero-valued field with the same function space. |
| function | compute(expression, *, name: str \| None = None) -> Field |
Return a computed field. |
| function | assign(target, source) -> None |
Assign a scalar, compatible field, or DOLFINx function into target. |
| function | dot(left, right) -> float |
Return the distributed algebraic dot product of two compatible fields. |
| function | weighted_dot(left, weights, right = None) -> float |
Return left^T diag(weights) right for compatible fields. |
| function | norm(field, *, weight = None) -> float |
Return the distributed algebraic norm of a field. |
| function | require_same_space(left, right) -> None |
Raise if two fields/functions are not on the same function space. |
| function | same_space(left, right) -> bool |
Return whether two fields/functions share the same function space. |
agentfem.fatigue_fracture¶
| Kind | Public object | Purpose |
|---|---|---|
| class | ForceCycle |
One scalar cyclic-load definition expressed in test parameters. |
| function | force_cycle(*, minimum: float \| None = None, maximum: float \| None = None, fmin: float \| None = None, fmax: float \| None = None, frequency: float = 1.0, waveform: str = 'sine', hold_minimum_fraction: float = 0.0, hold_maximum_fraction: float = 0.0, table = (), name: str = 'force cycle') -> ForceCycle |
Create a cyclic force from minimum/maximum or fmin/fmax. |
| class | CycleJumpDecision |
One inspectable proposal for advancing the independent cycle count. |
| class | CycleJumpPolicy |
Bound a cycle block by predicted damage and exact output landings. |
| class | CycleJumpRecord |
Accepted or rejected cycle-block evidence. |
| class | CycleJumpLedger(*, start_cycle: int = 0) |
Record exact cycle progress and every jump/cutback decision. |
| class | CyclicCohesiveResponse |
Mode-I response with separated monotonic and fatigue evidence. |
| class | CyclicCohesiveLaw |
Replaceable power-law range fatigue layered on a bilinear envelope. |
| class | CyclicCohesiveTransaction(law: CyclicCohesiveLaw, size: int) |
Atomic monotonic trials and cycle-block trials for cohesive points. |
| class | MixedModeEnergyRange |
Local cohesive-energy driver from one physical peak/valley pair. |
| class | OrderedJumpCyclePath |
One ordered closed cycle of complete local cohesive jump vectors. |
| class | MixedModeEnergyPath |
Segment-resolved local cohesive energy evidence for one ordered path. |
| class | OrderedMixedModeEnergyPathDriver |
Segment-resolved BK/power driver for ordered mixed-mode cycles. |
| class | MixedModeEnergyRangeDriver |
BK/power interaction for local mixed-mode cyclic energy ranges. |
| class | MixedModeCyclicCohesiveResponse |
Mixed-mode monotonic response with committed cyclic evidence. |
| class | MixedModeCyclicCohesiveLaw |
Replaceable cyclic damage layered on a mixed-mode cohesive envelope. |
| class | MixedModeCyclicCohesiveTransaction(law: MixedModeCyclicCohesiveLaw, size: int) |
Atomic full-vector cycle transaction with mixed-mode energy evidence. |
| class | FieldStateTransaction(fields, *, assets = None) |
In-memory rollback for bulk fields and other transactional assets. |
| class | GeneralizedWorkSample |
One named force--displacement pair at an accepted equilibrium point. |
| function | generalized_work_sample(name, *, force, displacement, role = 'natural_load') -> GeneralizedWorkSample |
Declare one generalized work-conjugate channel. |
| function | reference_point_work_sample(load, *, translation, rotation = None) -> GeneralizedWorkSample |
Pair a distributed reference load with measured rigid motion. |
| class | CyclicEnergyFrame |
One accepted or trial cycle-block work--energy closure. |
| class | CyclicWorkEnergyLedger(*, name = 'cyclic work-energy ledger') |
Transactional generalized-work and cycle-block energy accounting. |
| function | cyclic_work_energy_ledger(**options) -> CyclicWorkEnergyLedger |
Create a transactional cycle-block work--energy ledger. |
| class | CyclicEquilibriumPoint |
Evidence returned by one converged cyclic equilibrium solve. |
| class | CyclicFatigueBlock |
Accepted structure-level cycle block and its error evidence. |
| class | GlobalCyclicFatigueStep(*, cycle: ForceCycle, stop_cycle: int, interfaces, state, solve_equilibrium, jump: CycleJumpPolicy \| None = None, landing_cycles = (), maximum_opening_feedback: float = 0.02, maximum_energy_balance_error: float \| None = None, energy_ledger: CyclicWorkEnergyLedger \| None = None, ordered_path_phases = (), observe = None, name: str = 'cyclic fatigue') |
Quasi-static cyclic fatigue loop with global rollback and cutback. |
| class | SurfaceCrackComponent |
One connected failed component in a surface-crack observation. |
| class | SurfaceCrackObservation |
One cycle's geometric evidence on a triangular cohesive surface. |
| class | CrackTopologyEvent |
Auditable identity change between two accepted crack observations. |
| class | TrackedSurfaceCrack |
A connected crack component with identity stable across cycle blocks. |
| class | SurfaceCrackTrackingFrame |
Persistent component identities and topology events at one cycle. |
| class | SurfaceCrackTracker(*, interface_name: str, id_prefix: str \| None = None) |
Track cracks on one fixed cohesive surface by physical facet identity. |
| class | CrackInteractionObservation |
Two-crack geometry and growth evidence at one exact cycle. |
| function | observe_surface_crack(coordinates, facets, damage, opening, *, cycle: int, name: str = 'surface crack', damage_threshold: float = 0.95, include_boundary_front: bool = False, facet_ids = None) -> SurfaceCrackObservation |
Recover connected failed area and a three-dimensional crack front. |
| function | surface_crack_interaction(first: SurfaceCrackObservation, second: SurfaceCrackObservation, *, first_single_growth_rate: float \| None = None, second_single_growth_rate: float \| None = None, first_double_growth_rate: float \| None = None, second_double_growth_rate: float \| None = None, coalescence_tolerance: float = 0.0) -> CrackInteractionObservation |
Compare two named fronts without hiding the single-crack baseline. |
| class | ParisEvidence |
Postprocessed Paris-region evidence; never a crack-growth solver law. |
| function | paris_evidence(cycles, crack_size, driving_force, *, fit_cycle_range: tuple[float, float] \| None = None, fit_mask = None, derivative_window: int = 3, driving_force_name: str = 'Delta K', crack_size_name: str = 'a', driving_force_unit: str = 'declared', crack_size_unit: str = 'declared') -> ParisEvidence |
Fit a Paris relation after simulation from a(N) and a driver. |
| function | cyclic_cohesive(*, monotonic: BilinearCohesiveLaw \| MixedModeBilinearCohesiveLaw, fatigue_coefficient: float, fatigue_exponent: float, range_threshold: float, peak_exponent: float = 0.0, residual_exponent: float = 0.0, driver: MixedModeEnergyRangeDriver \| OrderedMixedModeEnergyPathDriver \| None = None, name: str \| None = None) -> CyclicCohesiveLaw \| MixedModeCyclicCohesiveLaw |
Create a Mode-I or mixed-mode cyclic cohesive law. |
| function | mixed_mode_energy_range_driver(**options) -> MixedModeEnergyRangeDriver |
Create the first proportional peak/valley mixed-mode fatigue driver. |
| function | ordered_jump_cycle(phases, jumps, *, name = 'ordered jump cycle') |
Create a closed, station-resolved local cohesive cycle. |
| function | ordered_mixed_mode_energy_path_driver(**options) -> OrderedMixedModeEnergyPathDriver |
Create a segment-resolved non-proportional mixed-mode driver. |
| function | field_state(fields = None, *, assets = None, **named_fields) -> FieldStateTransaction |
Create rollback state from a field mapping or named field arguments. |
| function | global_cyclic_fatigue_step(**kwargs) -> GlobalCyclicFatigueStep |
Create a reusable extrema- or ordered-path fatigue controller. |
agentfem.fracture¶
| Kind | Public object | Purpose |
|---|---|---|
| function | finite_strain_internal_force(displacement, test_function, material, *, measure = ufl.dx, name: str = 'F_internal_finite_strain') -> OperatorForm |
Return the current Total-Lagrangian hyperelastic internal force. |
| class | FiniteStrainEnergyMonitor |
Accepted-frame kinetic and hyperelastic bulk energy monitor. |
| class | DofMappedCohesiveForce(assembler, displacement, *, node_to_block_dof) |
Map a serial cohesive facet kernel to vector finite-element dofs. |
| class | NamedCohesiveResponse |
Responses and aggregate energy from several named interfaces. |
| class | CohesiveForceCollection(interfaces) |
Atomically compose independent named cohesive-interface forces. |
| function | named_cohesive_forces(**interfaces) -> CohesiveForceCollection |
Create an atomically managed collection from named cohesive forces. |
| function | named_mode_i_cohesive_forces(split, displacement, *, laws, normal_hints, thicknesses = None, tangential = 'free', tangential_stiffness = None, tolerance: float = 1e-10) -> CohesiveForceCollection |
Build independent named forces on one atomically split solver mesh. |
| function | cohesive_forces(split, displacement, *, laws, normal_hints, thicknesses = None, tangential = None, tangential_stiffness = None, tolerance: float = 1e-10) -> CohesiveForceCollection |
Build a recommended force for every named split interface. |
| class | DistributedDofMappedCohesiveForce(assembler, displacement, *, input_node_to_block_dof, input_node_owned, global_topology, global_facet_indices, local_input_nodes = None) |
MPI assembler for a physical-keyed split interface. |
| function | p1_input_node_to_block_dof(displacement, *, number_of_input_nodes: int) |
Recover the complete serial input-node to block-DOF map. |
| function | mode_i_cohesive_force(split: interface_api.SplitInterfaceMesh, displacement, law, *, normal_hint, thickness: float = 1.0, tolerance: float = 1e-10, tangential: str = 'free', tangential_stiffness: float \| None = None) -> DofMappedCohesiveForce \| DistributedDofMappedCohesiveForce |
Build a fixed-path cohesive force from a split mesh contract. |
| function | cohesive_force(split: interface_api.SplitInterfaceMesh, displacement, law, *, normal_hint, tangential: str \| None = None, tangential_stiffness: float \| None = None, thickness: float = 1.0, tolerance: float = 1e-10) |
Build the recommended full-vector fixed-path interface consumer. |
| class | FiniteStrainCohesiveResidual(bulk, cohesive) |
Assemble bulk UFL and paired-facet interface forces into one residual. |
| class | CohesiveNewtonSolveInfo |
Convergence evidence for one native bulk-plus-interface equilibrium. |
| class | ArcLengthOptions |
Crisfield-style spherical continuation controls. |
| class | ArcLengthSolveInfo |
Public AgentFEM object. |
| class | FiniteStrainCohesiveEquilibrium(residual: FiniteStrainCohesiveResidual, tangent, displacement, *, set_load = None, load_parameter = None, reference_load: float = 1.0, bcs = (), solver_options = None, control_displacement = None, reaction = None, bulk_strain_energy = None) |
Native Newton consumer for UFL bulk and zero-thickness interfaces. |
| class | FiniteStrainCohesiveArcLength(equilibrium: FiniteStrainCohesiveEquilibrium, options: ArcLengthOptions, *, initial_load: float = 0.0) |
Spherical arc-length continuation for cohesive equilibrium paths. |
| class | MassProportionalDampingResidual(base, *, mass, velocity, coefficient: float, dt: float) |
Add alpha M v_mid with transactional dissipation accounting. |
| class | DampingEnergyMonitor |
Add accepted viscous dissipation to an existing mechanical monitor. |
| class | FiniteStrainCohesiveEnergyMonitor |
Typed accepted-frame energy for bulk plus cohesive dynamics. |
| class | DynamicEnergyLedger |
Accepted-frame external work and mechanical-energy closure. |
| class | IsotropicWaveSpeeds |
Reference small-on-zero wave speeds for one isotropic material. |
| class | IncrementalWaveSpeeds |
Small-on-large bulk-wave modes about one homogeneous deformation. |
| class | PrincipalSurfaceWaveSpeed |
Reference-coordinate principal surface-wave secular solution. |
| function | neo_hookean_material_tangent(deformation_gradient, material) -> np.ndarray |
Return A[i,J,k,L] = dP[i,J]/dF[k,L] for a supported energy. |
| function | incremental_wave_speeds(deformation_gradient, direction, material, *, direction_configuration: str = 'current') -> IncrementalWaveSpeeds |
Return homogeneous small-on-large bulk-wave speeds. |
| function | principal_surface_wave_speed(deformation_gradient, material: hyperelasticity.NeoHookeanProperties, *, propagation_axis: int = 0, scan_points: int = 320) -> PrincipalSurfaceWaveSpeed |
Solve the 2D small-on-large principal surface-wave secular problem. |
| function | isotropic_reference_wave_speeds(material) -> IsotropicWaveSpeeds |
Return unstretched 3D isotropic c_d, c_s, and c_R. |
| class | StableTimeIncrement |
Visible body/interface estimate for central difference. |
| class | CohesiveCrackHistory |
Crack-front position and window-fitted speed on a fixed path. |
| class | CrackPropagationFit |
Representative crack speed fitted across a declared path interval. |
| class | InterfaceFrontHistory |
Front position and fitted speed for one declared interface signal. |
| class | CohesiveFrontEnsemble |
Crack-front evidence from multiple thresholds and physical signals. |
| class | CohesiveInterfaceTrace |
Portable accepted-frame record on one fixed cohesive interface. |
| class | ScientificComparison |
Common scalar evidence for a simulation-to-observation comparison. |
| class | PreloadTransferReport |
Evidence for a quasi-static displacement to Explicit state transfer. |
| function | transfer_preload_to_explicit(preload_displacement, *, state, mass, residual, initial_velocity = None, mode: str = 'equilibrium', force_tolerance: float = 1e-08, acceleration_projection = None, energy_monitor = None, source_energy: float \| None = None, source_step: str \| None = None, destination_step: str \| None = None) -> PreloadTransferReport |
Initialize u/v/a consistently from a quasi-static preload state. |
| function | cohesive_crack_tip(path_coordinate, damage, *, threshold: float = 0.95, direction: str = 'increasing') -> float |
Locate the contiguous crack front by interpolating a damage threshold. |
| function | crack_tip_history(time_values, path_coordinate, damage_frames, *, threshold: float = 0.95, fit_window: int = 5, direction: str = 'increasing') -> CohesiveCrackHistory |
Build a crack history without single-failed-element speed spikes. |
| function | fit_crack_propagation_speed(history: CohesiveCrackHistory, *, start_position: float, end_position: float, minimum_samples: int = 3) -> CrackPropagationFit \| None |
Fit one representative speed over a fixed physical path interval. |
| function | interface_front_history(time_values, path_coordinate, signal_frames, *, signal: str, threshold: float, fit_window: int = 5, direction: str = 'increasing') -> InterfaceFrontHistory |
Track a contiguous interface front from any increasing damage signal. |
| function | cohesive_front_ensemble(trace: CohesiveInterfaceTrace, *, damage_thresholds = (0.5, 0.75, 0.95), opening_thresholds = (), dissipation_thresholds = (), fit_window: int = 5, direction: str = 'increasing') -> CohesiveFrontEnsemble |
Build observer-sensitivity evidence from a portable interface trace. |
| function | compare_curve(reference_coordinate, reference_values, simulation_coordinate, simulation_values, *, coordinate_name: str = 'coordinate', quantity_name: str = 'value') -> ScientificComparison |
Interpolate a simulated curve onto observed coordinates and compare. |
| function | compare_mach_cone(*, crack_speed: float, shear_wave_speed: float, observed_angle: float, unit: str = 'radian') -> ScientificComparison |
Compare an observed Mach angle with asin(c_s/v). |
| function | compare_rectilinear_field(reference_x, reference_y, reference_values, simulation_x, simulation_y, simulation_values, *, quantity_name: str = 'field', reference_mask = None, simulation_mask = None) -> ScientificComparison |
Compare scalar maps after bilinear interpolation on their overlap. |
| function | compare_rectilinear_observations(reference, simulation, *, quantity_name: str \| None = None) -> ScientificComparison |
Compare two portable rectilinear observations with semantic checks. |
| function | mach_cone_angle(*, crack_speed: float, shear_wave_speed: float) -> float |
Return the ideal Mach angle asin(c_s / v) in radians. |
| function | separation_regime(*, crack_speed: float, rayleigh_wave_speed: float, shear_wave_speed: float, failed_fraction: float, simultaneous_failed_fraction: float, spall_fraction: float = 0.8, rapid_failed_fraction: float \| None = None, ligament_traction_ratio: float \| None = None, pressure_wave_speed: float \| None = None) -> str |
Classify one frame with explicit crack-speed and spall evidence. |
| function | estimate_stable_time_increment(*, characteristic_length, dilatational_speed: float, safety_factor: float = 0.8, interface_stiffness: float \| None = None, interface_area: float \| None = None, negative_mass: float \| None = None, positive_mass: float \| None = None) -> StableTimeIncrement |
Estimate explicit stability from body transit and interface oscillator. |
| function | minimum_cell_nodal_spacing(domain) -> float |
Return an MPI-global conservative spacing from cell geometry nodes. |
agentfem.materials¶
| Kind | Public object | Purpose |
|---|---|---|
| class | MaterialRecord |
Material-library record before conversion to a constitutive law. |
| function | list_material_models(name: str) -> tuple[str, ...] |
List model names available for one material. |
| function | list_materials(*, model: str \| None = None) -> tuple[str, ...] |
List available material names, optionally filtered by model. |
| function | load_material(name: str, model: str \| None = None) |
Load one material model and return a constitutive material object. |
| function | material_record(name: str) -> MaterialRecord |
Return a validated material record without constructing a model object. |
| function | register_material(name: str, data: dict, *, overwrite: bool = False) -> None |
Register or override a material record in memory. |
| class | ElasticAnisotropic2DProperties |
2D linear-elastic properties using engineering-strain Voigt notation. |
| class | ElasticIsotropicProperties |
Isotropic linear-elastic material properties. |
| class | ThermoElasticIsotropicProperties |
Isotropic thermoelastic and heat-conduction properties. |
| function | validate_material_record(name: str, record: dict) -> None |
Validate one material-centered library record. |
agentfem.mechanics¶
| Kind | Public object | Purpose |
|---|---|---|
| class | CreepEnergyFrame |
Public AgentFEM object. |
| class | CreepIncrementInfo |
Public AgentFEM object. |
| class | CreepPathInfo |
Public AgentFEM object. |
| class | ImplicitCreepStep |
Adaptive backward-Euler creep step with global Newton equilibrium. |
| function | implicit_creep_step(*, displacement, material, duration: float, external_force, constraints = (), study = None, incrementation = None, solver_options = None, quadrature_degree: int = 2, progress = True, status_file = None, amplitude = None, temperature = None, name: str = 'implicit_creep', _experimental_distributed: bool = False) -> ImplicitCreepStep |
Build the first global 3D implicit power-law creep step. |
| class | J2IncrementInfo |
Public AgentFEM object. |
| class | J2LoadPathInfo |
Public AgentFEM object. |
| class | J2PlasticityStep |
Incremental global equilibrium for 3D small-strain J2 plasticity. |
| function | j2_plasticity_step(*, displacement, material, external_force, constraints = (), study = None, incrementation = None, solver_options = None, quadrature_degree: int = 2, progress = True, status_file = None, amplitude = None, name: str = 'j2_plasticity', _experimental_distributed: bool = False) -> J2PlasticityStep |
Build a global 3D J2 step from a displacement and load operator. |
agentfem.constitutive¶
| Kind | Public object | Purpose |
|---|---|---|
| class | ConstitutiveCapability |
What a material capability can truthfully do in this release. |
| function | capabilities() -> tuple[ConstitutiveCapability, ...] |
Return all constitutive capabilities in stable name order. |
| function | capability(name: str) -> ConstitutiveCapability |
Return one capability or raise with the available names. |
| class | ArrheniusPowerLawCreep |
Temperature-dependent Mises power-law creep. |
| class | CreepDamageState |
Local creep strain and scalar continuum-damage state. |
| class | CreepDamageUpdate |
Accepted material-point increment from a creep-damage law. |
| class | CreepHistory |
Integrated piecewise-constant stress history. |
| class | ImplicitCreepState |
Committed small-strain creep state at one integration point. |
| class | ImplicitCreepUpdate |
Backward-Euler material-point update and consistent tangent. |
| class | IsotropicPowerLawCreepMaterial |
Isotropic elasticity with an implicit Mises power-law creep branch. |
| class | KachanovRabotnovCreep |
Classical scalar Kachanov--Rabotnov creep-damage coupling. |
| class | ModifiedThetaProjection |
Three-parameter modified-theta representation of a creep curve. |
| class | PowerLawCreep |
Mises time-hardening creep law. |
| class | SinhCreep |
Stress-sensitive hyperbolic-sine Mises creep law. |
| function | integrate_stress_history(law: PowerLawCreep, times, interval_stresses) -> CreepHistory |
Integrate a piecewise-constant scalar or tensor stress history. |
| function | isotropic_power_law(*, young: float, poisson: float, density: float, coefficient: float, stress_exponent: float, time_exponent: float = 0.0, reference_stress: float = 1.0, reference_time: float = 1.0, name: str = 'isotropic power-law creep') -> IsotropicPowerLawCreepMaterial |
Create one Abaqus-style material record with elastic and creep data. |
| function | isotropic_arrhenius_power_law(*, young: float, poisson: float, density: float, coefficient: float, stress_exponent: float, activation_energy: float, reference_temperature: float, time_exponent: float = 0.0, reference_stress: float = 1.0, reference_time: float = 1.0, gas_constant: float = 8.31446261815324, name: str = 'isotropic Arrhenius power-law creep') -> IsotropicPowerLawCreepMaterial |
Create elasticity plus a globally consumable Arrhenius creep law. |
| function | anisotropic_stress_2d(displacement, properties: ElasticAnisotropic2DProperties, *, study = None) |
2D anisotropic stress from engineering-strain Voigt stiffness. |
| function | anisotropic_elastic_2d(*, stiffness_voigt, density: float, name: str = 'anisotropic elastic 2D') -> ElasticAnisotropic2DProperties |
Create 2D anisotropic linear-elastic properties. |
| function | estimate_elastic_wave_speeds(material) -> tuple[float, float] |
Return approximate (pressure_speed, shear_speed) for a material. |
| function | isotropic_stress(displacement, properties: ElasticIsotropicProperties, *, study = None) |
Small-strain isotropic stress, sigma(u). |
| function | isotropic_elastic(*, young: float, density: float, poisson: float, name: str = 'isotropic elastic') -> ElasticIsotropicProperties |
Create isotropic linear-elastic properties. |
| function | thermal_expansion_stress(temperature, properties, *, study = None, dimension = None) |
Return positive C:epsilon_thermal for an equivalent thermal load. |
| function | thermal_strain(temperature, properties, *, dimension: int) |
Return isotropic free thermal strain alpha (T-T_ref) I. |
| function | thermoelastic(*, young: float, density: float, poisson: float, thermal_expansion: float, conductivity: float, specific_heat: float, reference_temperature: float = 293.15, name: str = 'isotropic thermoelastic') -> ThermoElasticIsotropicProperties |
Create one material record for sequential thermal-stress workflows. |
| function | thermoelastic_stress(displacement, temperature, properties, *, study = None) |
Small-strain isotropic stress including thermal eigenstrain. |
| function | orthotropic_plane_stress_2d(*, ex: float, ey: float, nuxy: float, gxy: float, density: float, name: str = 'orthotropic plane-stress elastic 2D') -> ElasticAnisotropic2DProperties |
Create 2D orthotropic plane-stress elastic properties. |
| function | stress(displacement, properties, *, study = None) |
Dispatch to the matching elastic stress relation. |
| class | BasquinCurve |
Fully reversed stress-life curve sigma_a = sigma_f' (2N)^b. |
| class | FatigueAssessment |
Auditable stress-life assessment derived from one scalar history. |
| class | FatigueBlock |
One constant-amplitude block for cumulative-damage assessment. |
| class | StressCycle |
One rainflow-counted stress cycle or residual half-cycle. |
| class | TabulatedSNCurve |
Log-log interpolated S-N data with explicit extrapolation policy. |
| function | assess_history(history, curve, *, ultimate_strength: float \| None = None, source: str \| None = None) -> FatigueAssessment |
Return cycles, Miner damage, and repeated-history life together. |
| function | assess_result_history(result, history_name: str, curve, *, ultimate_strength: float \| None = None) -> FatigueAssessment |
Assess one named SimulationResult history with provenance. |
| function | damage_from_history(history, curve, *, ultimate_strength: float \| None = None) -> float |
Rainflow count a stress history and apply Palmgren-Miner damage. |
| function | goodman_amplitude(stress_amplitude: float, mean_stress: float, ultimate_strength: float) -> float |
Return fully reversed amplitude using the linear Goodman correction. |
| function | life_scale_factor(blocks: Iterable[FatigueBlock], curve) -> float |
Return the number of repeated block sequences to Miner damage one. |
| function | miner_damage(blocks: Iterable[FatigueBlock], curve) -> float |
Return Palmgren-Miner cumulative damage sum(n_i / N_i). |
| function | rainflow_cycles(history) -> tuple[StressCycle, ...] |
Count full and residual half-cycles from a scalar stress history. |
| function | turning_points(history) -> np.ndarray |
Return endpoints and local reversals from a scalar stress history. |
| class | FiniteStrainKinematics |
Standard total-Lagrangian kinematics derived from one displacement. |
| class | MixedNeoHookeanProperties |
Isochoric Neo-Hookean solid with an independent pressure field. |
| class | MooneyRivlinProperties |
Two-parameter isotropic Mooney-Rivlin finite-strain solid. |
| class | NeoHookeanProperties |
Compressible Neo-Hookean parameters derived from E and nu. |
| class | PlaneStressNeoHookeanProperties |
Compressible Neo-Hookean membrane with locally relaxed thickness. |
| function | kinematics(displacement) -> FiniteStrainKinematics |
Return the standard finite-strain kinematic measures for u. |
| function | mooney_rivlin(*, shear_modulus: float, first_invariant_fraction: float, bulk_modulus: float, density: float \| None = None, name: str = 'compressible Mooney-Rivlin') -> MooneyRivlinProperties |
Create a three-dimensional compressible Mooney-Rivlin solid. |
| function | mooney_rivlin_plane_stress(*, shear_modulus: float, first_invariant_fraction: float, density: float \| None = None, name: str = 'incompressible plane-stress Mooney-Rivlin') -> MooneyRivlinProperties |
Create the exact incompressible sheet reduction of Eq. (17). |
| function | mixed_condensed_energy_value(deformation_gradient, properties: MixedNeoHookeanProperties) -> float |
Evaluate the pressure-eliminated quadratic-volumetric energy. |
| function | mixed_neo_hookean(*, young: float \| None = None, poisson: float \| None = None, shear_modulus: float \| None = None, bulk_modulus: float \| None = None, density: float \| None = None, name: str = 'mixed Neo-Hookean') -> MixedNeoHookeanProperties |
Create a quadratic-volumetric mixed Neo-Hookean material. |
| function | neo_hookean(*, young: float, poisson: float, density: float \| None = None, name: str = 'compressible Neo-Hookean') -> NeoHookeanProperties |
Create a compressible Neo-Hookean material. |
| function | neo_hookean_plane_stress(*, young: float, poisson: float, density: float \| None = None, name: str = 'plane-stress compressible Neo-Hookean') -> PlaneStressNeoHookeanProperties |
Create a finite-strain plane-stress Neo-Hookean membrane material. |
| function | plane_stress_first_piola_value(deformation_gradient, properties: PlaneStressNeoHookeanProperties) -> np.ndarray |
Return the condensed numerical in-plane first Piola stress. |
| function | plane_stress_out_of_plane_first_piola_from_gradient(F, properties: PlaneStressNeoHookeanProperties) |
Return the condensed P33 residual for diagnostics and tests. |
| function | plane_stress_thickness_stretch_value(deformation_gradient, properties: PlaneStressNeoHookeanProperties, *, tolerance: float = 1e-12, maximum_iterations: int = 30) -> float |
Solve the local P33=0 condition for one numerical 2x2 F. |
| function | plane_stress_uniaxial_deformation_gradient(axial_stretch: float, properties: PlaneStressNeoHookeanProperties \| MooneyRivlinProperties, *, tolerance: float = 1e-12, maximum_iterations: int = 30) -> np.ndarray |
Return homogeneous uniaxial F2 with traction-free lateral faces. |
| function | supports_hyperelastic_study(properties, *, dimension: int, assumption) -> bool |
Return whether one material has a formulation for the declared Study. |
| class | J2LinearIsotropicHardening |
Rate-independent von Mises plasticity with linear isotropic hardening. |
| class | J2PlasticState |
History variables for small-strain isotropic J2 plasticity. |
| class | J2Update |
Result of one radial-return material-point update. |
| class | UniaxialPlasticState |
History variables for the exact one-dimensional counterpart. |
| function | update_uniaxial(total_strain: float, material: J2LinearIsotropicHardening, state: UniaxialPlasticState \| None = None) -> tuple[float, UniaxialPlasticState] |
Return stress and state for a one-dimensional bilinear material test. |
| function | von_mises(stress) -> float |
Return sqrt(3/2 s:s) for a symmetric Cauchy stress. |
| class | CreepQuadratureState |
Committed/trial integration-point state for implicit 3D creep. |
| class | J2QuadratureState |
Committed/trial integration-point state for 3D small-strain J2. |
| class | QuadratureField |
A DOLFINx quadrature function with an explicit NumPy point view. |
| class | QuadratureMaterialMap |
Cell-region material dispatch shared by stateful solid procedures. |
| class | QuadratureTransaction |
Shared trial/commit/rollback contract for integration-point state. |
| function | load_portable_quadrature_state(path, state, *, material = None) -> None |
Collectively restore committed state under a changed MPI partition. |
| function | save_portable_quadrature_state(path, state, *, material = None) -> Path |
Collectively save committed state by physical cell and point identity. |
| class | AbaqusUserMaterialBridge |
Truthful capability description for an intended UMAT/UHYPER adapter. |
| class | MaterialPointInput |
Solver-neutral finite-strain input for one material-point update. |
| class | MaterialPointOutput |
Constitutive response returned to a nonlinear finite-element driver. |
| class | UserMaterial |
Protocol implemented by native or adapted material-point models. |
agentfem.coordinates¶
| Kind | Public object | Purpose |
|---|---|---|
| class | CartesianSystem |
Right-handed orthonormal Cartesian coordinate system. |
| class | ReferencePoint |
Named engineering point used for remote resultants and kinematics. |
| function | cartesian(*, origin = None, axes = None, x = None, y = None, z = None, name = 'local') -> CartesianSystem |
Create a Cartesian system from a matrix or named basis vectors. |
| function | reference_point(coordinates, *, name = 'reference_point', system = None) -> ReferencePoint |
Create a named engineering reference point. |
agentfem.constraints¶
| Kind | Public object | Purpose |
|---|---|---|
| class | DirichletConstraint |
Strong Dirichlet constraint and its optional mutable value object. |
| class | TimeDependentDirichlet |
Dirichlet constraint driven by an amplitude. |
| class | RemoteDisplacementConstraint |
Rigid boundary motion prescribed about a named reference point. |
| class | PrescribedValuePath |
Update ordinary strong boundary values along a normalized step path. |
| function | prescribed_value_path(constraints) -> PrescribedValuePath |
Create a normalized load-factor driver from registered constraints. |
| function | dirichlet_constraints(constraints) -> tuple[object, ...] |
Return concrete Dirichlet assets from nested model constraint sets. |
| function | scalar_dirichlet(V, marker = None, value = 0.0, *, location = None, on = None, name: str = 'dirichlet') -> DirichletConstraint |
Semantic wrapper for scalar essential boundary data. |
| function | component_dirichlet(V, component: int, marker = None, value = 0.0, *, location = None, on = None, name: str = 'dirichlet') -> DirichletConstraint |
Semantic wrapper for vector-component essential boundary data. |
| function | dirichlet(V, marker = None, value = 0.0, *, component: int \| None = None, location = None, on = None, name: str = 'dirichlet') -> DirichletConstraint |
Create scalar or component-wise Dirichlet data from one entry point. |
| function | time_dependent_component_dirichlet(target, component: int, marker = None, value = None, *, amplitude = None, location = None, on = None, name: str = 'time_dependent_dirichlet') -> TimeDependentDirichlet |
Create a component-wise Dirichlet constraint driven by an amplitude. |
| function | time_dependent_scalar_dirichlet(target, marker = None, value = None, *, amplitude = None, location = None, on = None, name: str = 'time_dependent_dirichlet') -> TimeDependentDirichlet |
Create a scalar Dirichlet constraint driven by an amplitude. |
| function | apply_dirichlet_bcs(function, bcs) -> None |
Apply strong Dirichlet boundary conditions to a function vector. |
| function | fixed(target, *, location = None, on = None, value = 0.0, components: int \| tuple[int, ...] \| list[int] \| None = None, name: str \| None = None) -> 'ConstraintSet' |
Create fixed-value Dirichlet constraints for an application field. |
| function | fixed_component(target, component: int, *, location = None, on = None, value = 0.0, name: str \| None = None) |
Create a fixed-value constraint for one vector component. |
| function | symmetry(target, *, on = None, location = None, normal_axis: int \| str, value = 0.0, name: str \| None = None) -> 'ConstraintSet' |
Apply an axis-aligned solid-mechanics symmetry condition. |
| function | roller(target, *, on = None, location = None, normal_axis: int \| str, value = 0.0, name: str \| None = None) -> 'ConstraintSet' |
Alias for an axis-aligned frictionless roller/support condition. |
| function | fixed_all(target, *, location = None, on = None, value = 0.0, name: str \| None = None) |
Create a scalar/all-dof fixed-value constraint. |
| function | prescribed(target, *, on = None, location = None, value = 0.0, component = None, components = None, name: str \| None = None) |
Create prescribed scalar or vector-component values. |
| function | clamped(target, *, on = None, location = None, value = 0.0, name: str \| None = None) |
Fix every displacement component on a support boundary. |
| function | prescribed_temperature(target, value, *, on = None, location = None, name: str \| None = None) |
Prescribe temperature on a named boundary. |
| function | remote_displacement(target, *, reference_point, on = None, location = None, translation = None, rotation = None, system = None, name: str = 'remote_displacement') -> RemoteDisplacementConstraint |
Prescribe rigid translation/rotation of a solid boundary. |
| class | PeriodicProjectionConstraint |
Projection-style periodic constraint for explicit field updates. |
| function | periodic(target, *, master, slave, match_axis: str \| int = 0, method: str = 'projection', tolerance: float = 1e-12, name: str = 'periodic') |
Create a periodic constraint with an explicit method choice. |
| function | periodic_projection(target, *, master, slave, match_axis: str \| int = 0, tolerance: float = 1e-12, name: str = 'periodic_projection') -> PeriodicProjectionConstraint |
Create component-wise dof pairs for projection-style periodicity. |
| class | PeriodicConstraintSpec |
Geometric description of a periodic constraint. |
| class | ConstraintSet |
Collection of constraints used by assembly or field updates. |
| class | AbaqusPeriodicConstraint |
Periodic equations controlled by prescribed or free reference dofs. |
| class | AffineReduction |
Sparse serial representation of u = T q + offset. |
| class | DistributedAffineReduction |
Homogeneous correction space for a distributed affine constraint. |
| function | abaqus_periodic_cell(target, *, nodes: AbaqusNodeTable, equations: AbaqusEquationSet, anchor_node: int, reference_nodes, deformation_gradient = None, control_displacements = None, tolerance: float = 1e-09, name: str = 'abaqus_periodic_cell') -> AbaqusPeriodicConstraint |
Create exact periodic equations and explicit macro-control semantics. |
agentfem.amplitudes¶
| Kind | Public object | Purpose |
|---|---|---|
| class | Amplitude |
Named scalar history function. |
| function | as_amplitude(value, *, name: str = 'amplitude') -> Amplitude |
Convert a scalar, callable, or Amplitude into an Amplitude. |
| function | constant(value: float, *, name: str = 'constant') -> Amplitude |
Create a constant amplitude. |
| function | ramp(start_value: float = 0.0, end_value: float = 1.0, *, start_time: float = 0.0, end_time: float = 1.0, name: str = 'ramp') -> Amplitude |
Create a clipped linear ramp amplitude. |
| function | smooth_step(start_value: float = 0.0, end_value: float = 1.0, *, start_time: float = 0.0, end_time: float = 1.0, name: str = 'smooth_step') -> Amplitude |
Create a clipped half-cosine transition with zero endpoint slopes. |
| function | tabular(times, values, *, name: str = 'tabular', left: float \| None = None, right: float \| None = None) -> Amplitude |
Create a linearly interpolated tabular amplitude. |
| function | sine(amplitude: float = 1.0, frequency: float = 1.0, *, phase: float = 0.0, offset: float = 0.0, name: str = 'sine') -> Amplitude |
Create a sinusoidal amplitude. |
| function | gaussian_modulated_sine(amplitude: float, frequency: float, width: float, *, center: float \| None = None, phase: float = 0.0, name: str = 'gaussian_modulated_sine') -> Amplitude |
Create a Gaussian-windowed sinusoidal pulse. |
agentfem.loads¶
| Kind | Public object | Purpose |
|---|---|---|
| function | time_dependent_component_dirichlet(V, component: int, marker, time_function) |
Compatibility wrapper for time-dependent component Dirichlet constraints. |
| function | apply_dirichlet_bcs(function, bcs) -> None |
Apply strong Dirichlet boundary conditions to a function vector. |
| function | constant_time_function(value: float, name: str = 'constant') -> amplitudes.Amplitude |
Represent a constant value with the same interface as transient data. |
| class | BodyLoad |
Domain source/body-force term for a weak form. |
| class | GravityLoad |
Gravity body force rho g over a material domain. |
| class | CentrifugalLoad |
Rotating-frame body force rho omega x (omega x r) outward. |
| class | BoundaryLoad |
Boundary flux/traction term for a weak form. |
| class | PressureLoad |
Pressure load pulled back to a reference boundary measure. |
| class | HydrostaticPressureLoad |
Pressure varying with elevation from a reference free surface. |
| class | SurfaceResultantLoad |
A requested total force uniformly distributed over a reference boundary. |
| class | DistributedCouplingLoad |
Force and moment distributed over a continuum surface. |
| class | NeumannLoad |
Natural boundary condition applied through the weak-form right hand side. |
| class | AmplitudeLoad |
A spatial load multiplied by one reusable scalar amplitude. |
| class | LoadSet |
Ordered collection of weak-form load terms. |
| function | body_load(value, measure = ufl.dx, *, name: str = 'body_load', domain = None, target = None) -> BodyLoad |
Create a domain source/body-force load. |
| function | body_force(value, *, domain = None, target = None, measure = ufl.dx, system = None, name: str = 'body_force') -> BodyLoad |
Create a mechanical body-force load in global or local components. |
| function | gravity(acceleration, *, density, domain = None, target = None, region = None, measure = None, system = None, name: str = 'gravity') -> GravityLoad |
Create a gravity load from acceleration and material density. |
| function | centrifugal(angular_velocity, *, density, center = None, domain = None, target = None, region = None, measure = None, name: str = 'centrifugal') -> CentrifugalLoad |
Create the outward body force caused by constant angular velocity. |
| function | heat_source(value, *, domain = None, target = None, measure = ufl.dx, name: str = 'heat_source') -> BodyLoad |
Create a volumetric heat-source load. |
| function | boundary_load(value, measure = None, *, location = None, on = None, name: str = 'boundary_load') -> BoundaryLoad |
Create a generic natural boundary load. |
| function | neumann(value, measure, *, name: str = 'neumann_load') -> NeumannLoad |
Create a Neumann force/flux/traction term for the weak RHS. |
| function | with_amplitude(load, amplitude, *, domain = None, name: str \| None = None) -> AmplitudeLoad |
Drive an existing load by a scalar amplitude multiplier. |
| function | traction(value, *, location = None, on = None, system = None, name: str = 'traction') -> BoundaryLoad |
Create a traction in global or an explicit local coordinate system. |
| function | surface_force(resultant, *, location = None, on = None, reference_measure: float \| None = None, system = None, name: str = 'surface_force') -> SurfaceResultantLoad |
Distribute a total reference-configuration force over a boundary. |
| function | distributing_coupling(force, *, moment = None, reference_point = None, location = None, on = None, system = None, name: str = 'distributing_coupling') -> DistributedCouplingLoad |
Distribute force/moment over a surface with tributary-area weighting. |
| function | remote_force(force, *, reference_point, moment = None, location = None, on = None, system = None, name: str = 'remote_force') -> DistributedCouplingLoad |
Apply a reference-point force/moment through a continuum surface. |
| function | pressure(value, *, location = None, on = None, normal = None, configuration: str = 'reference', displacement = None, name: str = 'pressure') -> PressureLoad |
Create inward pressure on a reference or current boundary. |
| function | hydrostatic_pressure(*, density, gravity, reference_point, reference_pressure = 0.0, on = None, location = None, clip_at_zero: bool = True, configuration: str = 'reference', displacement = None, name: str = 'hydrostatic_pressure') -> HydrostaticPressureLoad |
Create p = p_ref + rho g dot (x - x_ref) on a boundary. |
| function | heat_flux(value, *, location = None, on = None, name: str = 'heat_flux') -> BoundaryLoad |
Create a prescribed heat flux applied on a boundary region. |
| function | body_force_form(force, test_function) |
Create a body-force virtual-work form. |
| function | boundary_traction_form(traction, test_function, ds_measure) |
Create a boundary-traction virtual-work form. |
agentfem.operators¶
| Kind | Public object | Purpose |
|---|---|---|
| class | OperatorForm |
Named scientific operator with a current backend expression. |
| function | action(operator, field) |
Return the algebraic action of a matrix-like operator on a field. |
| function | assemble_matrix(operator, *, bcs = None, backend = None) |
Assemble an operator-level matrix from an OperatorForm or UFL form. |
| function | assemble_vector(operator, *, backend = None) |
Assemble an operator-level vector from an OperatorForm or UFL form. |
| function | bilinear_form(operator, left, right) -> float |
Return the algebraic scalar left^T operator right. |
| function | body_force_vector(force, test_function, *, measure = ufl.dx) -> OperatorForm |
Create a body-force/source vector F. |
| function | boundary_load_vector(load = None, test_function = None, *, value = None, target = None, measure = None, location = None) -> OperatorForm |
Create a boundary load vector F_boundary. |
| function | boundary_force_vector(*, target, value = None, location = None, load = None) -> OperatorForm |
Create a boundary force vector from a load object or value/location pair. |
| function | boundary_model_vector(boundary_model, velocity, test_function = None) -> OperatorForm |
Create a vector contribution from a weak boundary model. |
| function | capacity_operator(temperature, capacity, *, measure = ufl.dx) -> OperatorForm |
Create a capacity/storage operator C. |
| function | combine(*operators, name: str = 'combined_operator', kind: str = 'combined_operator') -> OperatorForm |
Combine operator forms or raw UFL expressions into one operator form. |
| function | compile_form(operator: OperatorForm, *, backend = None) |
Compile an OperatorForm or raw UFL form. |
| function | conduction_operator(temperature, conductivity, *, measure = ufl.dx) -> OperatorForm |
Create a conduction/diffusion stiffness operator K. |
| function | damping_operator(trial_function, test_function = None, coefficient = None, *, measure = ufl.dx) -> OperatorForm |
Create a viscous damping operator C. |
| function | dual_product(vector_operator, field) -> float |
Return the global discrete pairing field^T vector_operator. |
| function | diffusion_operator(trial_function, test_function = None, conductivity = None, *, measure = ufl.dx) -> OperatorForm |
Create a scalar diffusion/conduction operator. |
| function | force_vector(target, loads = None, *, load = None) -> OperatorForm |
Create a total force/source vector from one or more load objects. |
| function | form_arity(expression) -> int \| None |
Return the number of UFL arguments, or None for opaque backends. |
| function | flux_vector(flux, target, *, measure = None, location = None) -> OperatorForm |
Create a prescribed scalar boundary-flux vector. |
| function | heat_capacity_operator(temperature, capacity, *, measure = ufl.dx) -> OperatorForm |
Create a heat-capacity operator C for transient heat problems. |
| function | heat_capacity_vector(previous_temperature, temperature, capacity, *, measure = ufl.dx) -> OperatorForm |
Create the known heat-capacity vector C * T_previous. |
| function | heat_conduction_operator(temperature, conductivity, *, measure = ufl.dx) -> OperatorForm |
Create a heat-conduction operator K for -div(k grad(T)). |
| function | heat_source_vector(source, temperature, *, measure = ufl.dx) -> OperatorForm |
Create a heat-source vector Q for a temperature unknown. |
| function | inertial_force_vector(acceleration, target, density = 1.0, *, measure = ufl.dx) -> OperatorForm |
Create the inertial virtual-work vector F_inertia = M a. |
| function | load_vector(target, loads = None, *, load = None) -> OperatorForm |
Create a total external-load vector F for a target unknown. |
| function | lumped_mass(V, density = 1.0, *, measure = ufl.dx) |
Assemble a lumped mass vector for explicit dynamics. |
| function | lumped_operator(V, coefficient = 1.0, *, measure = ufl.dx) |
Assemble a generic lumped diagonal operator. |
| function | mass_action_vector(field, target, coefficient = 1.0, *, measure = ufl.dx) -> OperatorForm |
Create a vector from a mass-like operator acting on a known field. |
| function | mass_operator(trial_function, test_function = None, density = 1.0, *, measure = ufl.dx) -> OperatorForm |
Create a consistent mass operator M. |
| function | linearize(residual, unknown, direction = None, *, name: str = 'K_t') -> OperatorForm |
Differentiate a residual to obtain its consistent tangent operator. |
| function | residual_operator(expression, *, name: str = 'R', family: str = 'nonlinear', metadata: dict[str, object] \| None = None) -> OperatorForm |
Wrap a nonlinear weak residual R(u; v) as a public operator. |
| function | rayleigh_damping(mass, stiffness, *, mass_coefficient = 0.0, stiffness_coefficient = 0.0) -> OperatorForm |
Create proportional damping C = alpha M + beta K. |
| function | robin_operator(target, coefficient, *, measure = None, location = None) -> OperatorForm |
Create the boundary matrix K_R = integral(h trial test). |
| function | robin_source_vector(target, coefficient, reference_value, *, measure = None, location = None) -> OperatorForm |
Create the Robin environment vector F_R = integral(h x_ref test). |
| function | scale(operator, factor, *, name: str \| None = None, kind: str \| None = None) -> OperatorForm |
Scale an operator or vector form while preserving its engineering role. |
| function | source_vector(source, target, *, measure = ufl.dx) -> OperatorForm |
Create a scalar or vector source/load vector for a target unknown. |
| function | stiffness(field, properties = None, *, law = None, study = None, measure = ufl.dx) -> OperatorForm |
Create the primary stiffness-like operator K for an unknown field. |
| function | quadratic_form(operator, field) -> float |
Return the algebraic scalar field^T operator field. |
| function | xtmx(field, operator) -> float |
Cast3M-style alias for field^T operator field. |
| function | xtmy(left, operator, right) -> float |
Cast3M-style alias for left^T operator right. |
| function | elastic_stiffness(displacement, properties, *, study = None, measure = ufl.dx) -> OperatorForm |
Create an elastic stiffness operator K from a displacement unknown. |
| function | internal_force_vector(displacement, test_function = None, properties = None, *, study = None, measure = ufl.dx) -> OperatorForm |
Create an elastic internal-force vector contribution. |
| function | stiffness_operator(displacement, test_function = None, properties = None, *, study = None, measure = ufl.dx) -> OperatorForm |
Create an elastic stiffness/internal virtual-work operator K. |
| function | thermal_expansion_vector(target, temperature, properties, *, study = None, measure = ufl.dx, name: str = 'F_thermal') -> OperatorForm |
Equivalent nodal load produced by isotropic thermal expansion. |
| class | FirstOrderSystem |
First-order transient system, C x_dot + K x = F. |
| class | LinearSystem |
Engineering-level static system, usually K x = F. |
| class | SecondOrderSystem |
Engineering-level second-order system, M a + C v + K u = F. |
| function | first_order_system(C, K, F = None, *, name: str = 'Cxdot_plus_Kx_eq_F') |
Create C x_dot + K x = F for heat/diffusion-like evolution. |
| function | linear_system(K, F = None, *, name: str = 'Kx_eq_F') -> LinearSystem |
Create a static linear system in engineering notation, K x = F. |
| function | second_order_system(M, K, C = None, F = None, *, name: str = 'Ma_plus_Cv_plus_Ku_eq_F') |
Create M a + C v + K u = F with optional damping and force. |
agentfem.problems¶
| Kind | Public object | Purpose |
|---|---|---|
| class | FEMProblem |
Lightweight finite-element problem description. |
| class | LinearVariationalProblem |
A standard linear variational problem, a(u, v) = L(v). |
| class | LinearSystemProblem |
Engineering-level linear system problem, usually K x = F. |
| class | NonlinearVariationalProblem |
Nonlinear residual problem R(u; v) = 0 solved by PETSc SNES. |
| class | NonlinearLoadIncrementInfo |
Convergence evidence for one ordinary nonlinear load increment. |
| class | NonlinearLoadPathInfo |
Accepted and attempted increments for an ordinary nonlinear step. |
| class | IncrementalNonlinearVariationalProblem |
Ordinary nonlinear equilibrium with automatic load incrementation. |
| class | AffineNonlinearVariationalProblem |
Nonlinear equilibrium under an exact affine dof reduction. |
| class | AnalysisStep |
Inspectable analysis step that owns one algebraic solve. |
| class | ExplicitDynamicsStep |
Inspectable second-order explicit dynamics step. |
| class | ImplicitDynamicsStep |
Linear Newmark/generalized-alpha structural-dynamics step. |
| class | FirstOrderTransientStep |
Reusable implicit-Euler step loop for heat/diffusion problems. |
| class | TransientState |
Current/next fields for a first-order transient unknown. |
| class | SecondOrderDynamicsState |
Displacement/velocity/acceleration fields for second-order dynamics. |
| class | LumpedMassOperator |
Diagonal mass operator for explicit dynamics. |
| function | second_order_state(field_or_space, **kwargs) -> SecondOrderDynamicsState |
Create a second-order dynamics state from a field or function space. |
| function | linear_system(K, F, *, unknown = None, solution = None, constraints = None, bcs = None, solver_options: LinearSolverOptions \| None = None, name: str = 'Kx_eq_F') -> LinearSystemProblem |
Create a K x = F problem without exposing variational boilerplate. |
| function | linear_static(K, F, *, study = None, unknown = None, solution = None, constraints = None, bcs = None, solver_options: LinearSolverOptions \| None = None, result_field_factory = None, name: str = 'linear_static') -> AnalysisStep |
Create a linear static analysis step in K x = F notation. |
| function | nonlinear(residual, solution, *, jacobian = None, constraints = None, bcs = None, solver_options: NonlinearSolverOptions \| NewtonSolverOptions \| None = None, name: str = 'nonlinear', petsc_options_prefix: str = 'agentfem_nonlinear_') -> NonlinearVariationalProblem |
Create a general nonlinear residual problem. |
| function | incremental_nonlinear(residual, solution, *, factor, value_path, update_load = None, acceptance_check = None, jacobian = None, incrementation = None, constraints = None, bcs = None, solver_options: NonlinearSolverOptions \| NewtonSolverOptions \| None = None, output_every: int \| None = 1, progress = True, status_file = None, name: str = 'incremental_nonlinear', petsc_options_prefix: str = 'agentfem_incremental_nonlinear_') -> IncrementalNonlinearVariationalProblem |
Create standard-BC nonlinear equilibrium over a normalized load path. |
| function | affine_nonlinear(residual, solution, *, jacobian, constraint, load_factors = None, incrementation = None, solver_options: AffineNewtonOptions \| NewtonSolverOptions \| None = None, output_every: int \| None = 1, output_factors = (), acceptance_check = None, progress = True, status_file = None, name: str = 'affine_nonlinear') -> AffineNonlinearVariationalProblem |
Create a nonlinear problem reduced by an affine constraint map. |
| class | LoadIncrementSnapshot |
A copied solution state at one nonlinear load factor. |
| function | first_order_transient(*, capacity, stiffness, history, source = None, dt: float, study = None, unknown = None, solution = None, constraints = None, bcs = None, solver_options: LinearSolverOptions \| None = None, name: str = 'first_order_transient_step', method: str = 'implicit_euler') -> AnalysisStep |
Create a first-order transient step. |
| function | first_order_transient_run(*, capacity, stiffness, history, current, previous, dt: float, steps: int, source = None, study = None, constraints = None, bcs = None, solver_options: LinearSolverOptions \| None = None, update_load = None, save_every: int \| None = None, print_every: int \| None = None, progress = True, status_file = None, checkpoint_policy = None, name: str = 'first_order_transient') -> FirstOrderTransientStep |
Create an executable implicit-Euler time step and loop. |
| function | explicit_dynamics(*, state, integrator, residual, stiffness = None, dt: float, steps: int, study = None, prescribed = (), constraints = (), update_load = None, save_every: int \| None = None, print_every: int \| None = None, history_every: int = 1, progress = True, status_file = None, checkpoint_policy = None, history_monitor = None, stability = None, name: str = 'explicit_dynamics') -> ExplicitDynamicsStep |
Create a second-order explicit dynamics step. |
| function | implicit_dynamics(*, state, mass, stiffness, force, damping = None, dt: float, steps: int, parameters = None, study = None, constraints = (), bcs = None, solver_options: LinearSolverOptions \| None = None, update_load = None, progress = True, status_file = None, checkpoint_policy = None, save_every: int \| None = None, print_every: int \| None = None, name: str = 'implicit_dynamics') -> ImplicitDynamicsStep |
Create a linear Newmark or generalized-alpha dynamics step. |
agentfem.project¶
| Kind | Public object | Purpose |
|---|---|---|
| function | new_run_id(now: datetime \| None = None) -> str |
Return a sortable, collision-resistant identifier for one execution. |
| class | ProjectConfig |
Operational metadata for an AgentFEM case directory. |
| function | discover(start: str \| Path \| None = None) -> ProjectConfig |
Find the nearest agentfem.toml from start upward. |
| class | RunContext |
Filesystem and identity contract shared by scripts, CLIs, GUIs, and agents. |
| function | current_run(*, project_root: str \| Path \| None = None, project_name: str \| None = None) -> RunContext |
Return the CLI-provided context or create one for direct Python use. |
agentfem.provenance¶
| Kind | Public object | Purpose |
|---|---|---|
| function | seal_manifest(manifest: Mapping[str, object], *, base: str \| Path, producer_version: str) -> dict[str, object] |
Return a deterministic integrity seal for an unsealed manifest. |
| class | SealVerification |
Outcome of checking one stored provenance seal. |
| function | verify_manifest(path: str \| Path) -> SealVerification |
Verify a result manifest and every artifact recorded in its seal. |
agentfem.platforms¶
| Kind | Public object | Purpose |
|---|---|---|
| class | PlatformSupport |
One operating-system support decision with explicit limitations. |
| class | RuntimeReport |
Compact runtime inventory for bug reports and agent inspection. |
| function | support_for(system: str, *, wsl: bool = False) -> PlatformSupport |
Return the first-release support tier for an operating-system route. |
| function | current_support() -> PlatformSupport |
Detect the current OS, including Windows Subsystem for Linux. |
| function | runtime_report() -> RuntimeReport |
Return versions and optional integrations useful in issue reports. |
agentfem.procedures¶
| Kind | Public object | Purpose |
|---|---|---|
| class | SolutionProcedure |
Inspectable, backend-neutral description of a solution algorithm. |
| function | linear_static() -> SolutionProcedure |
Public AgentFEM object. |
| function | nonlinear_static(*, stateful: bool = False) -> SolutionProcedure |
Public AgentFEM object. |
| function | implicit_euler(*, nonlinear: bool = False, stateful: bool = True) -> SolutionProcedure |
Public AgentFEM object. |
| function | implicit_creep() -> SolutionProcedure |
Quasi-static backward-Euler creep with global Newton equilibrium. |
| function | newmark() -> SolutionProcedure |
Public AgentFEM object. |
| function | generalized_alpha() -> SolutionProcedure |
Public AgentFEM object. |
| function | central_difference() -> SolutionProcedure |
Public AgentFEM object. |
| function | cyclic_fatigue() -> SolutionProcedure |
Quasi-static peak/valley equilibrium with independent cycle blocks. |
| function | for_step(*, analysis: str, method: str \| None = None, stateful: bool = False) |
Resolve a procedure without coupling Study to one solver route. |
| function | resolve(*, analysis: str, requested: SolutionProcedure \| str \| None = None, preferred: str \| None = None, stateful: bool = False) -> SolutionProcedure |
Resolve and validate the numerical procedure for one analysis request. |
agentfem.results¶
| Kind | Public object | Purpose |
|---|---|---|
| class | CheckpointRecord |
One restart asset with an explicit portability boundary. |
| class | FieldResult |
A named live field or an external field artifact. |
| class | HistoryResult |
Time, load, or iteration history with a fixed value shape. |
| class | ResultQuantity |
One scalar or fixed-shape quantity of interest. |
| class | SimulationResult |
Scientific results and artifacts from one simulation. |
| function | dof_statistics(field) -> dict[str, float \| int] |
Return global finite dof statistics for a DOLFINx-like field. |
| function | from_solution(solution, *, name: str = 'result', field_name: str \| None = None, unit: str \| None = None, metadata: Mapping[str, object] \| None = None) -> SimulationResult |
Wrap one solved field in a :class:SimulationResult. |
| class | ForceMomentResultant |
Integrated force and moment about an explicit physical point. |
| class | PathSample |
Values sampled along one straight physical-space path. |
| class | StaticForceBalance |
Global algebraic force equilibrium for one linear static solid. |
| class | StaticWorkBalance |
Energy closure including proportional prescribed boundary motion. |
| function | average(expression, *, measure = ufl.dx, comm = None) |
Return the measure-weighted global average of an expression. |
| function | boundary_resultant(traction, *, on) |
Integrate a traction/flux expression over a named boundary. |
| function | field_extrema(field, *, magnitude: bool = False, location: bool = False) -> dict[str, object] |
Return MPI-global field extrema, optionally with physical locations. |
| function | free_body_resultant(*, boundary_tractions = (), body_forces = (), about) -> ForceMomentResultant |
Integrate boundary and volume forces into one free-body resultant. |
| function | external_force_resultant(problem) |
Return the MPI-global resultant of a linear problem's assembled RHS. |
| function | integral(expression, *, measure = ufl.dx, comm = None) |
Return the global integral of a scalar, vector, or tensor expression. |
| function | l2_norm(expression, *, measure = ufl.dx, comm = None) -> float |
Return sqrt(integral(inner(value, value))) globally. |
| function | probe(field, *, at, padding: float = 1e-10) |
Return one scalar, vector, or tensor field value at a physical point. |
| function | quadrature_extrema(expression, domain, *, degree: int = 4) -> tuple[float, float] |
Return global min/max sampled at Basix quadrature points. |
| function | reaction_resultant(problem, *, on = None, component: int \| None = None, name: str = 'RF') |
Return an MPI-global strong-constraint reaction resultant. |
| function | region_average(expression, *, on) |
Return a measure-weighted average over a named mesh region. |
| function | region_integral(expression, *, on) |
Integrate a scalar, vector, or tensor over a named mesh region. |
| function | region_measure(*, on) -> float |
Return the global length, area, or volume of a named region. |
| function | sample_path(field, *, start, end, count: int = 101, padding: float = 1e-10, missing: str = 'raise') -> PathSample |
Sample a field along the straight segment from start to end. |
| function | sample_points(field, points, *, padding: float = 1e-10, missing: str = 'raise') -> np.ndarray |
Evaluate a finite-element field at common physical points under MPI. |
| function | section_resultant(stress, *, on, normal = None, about = None) -> ForceMomentResultant |
Integrate section force and moment from a Cauchy/nominal stress field. |
| function | static_force_balance(problem) -> StaticForceBalance |
Evaluate R + F = 0 for a converged linear static solid. |
| function | static_work_balance(problem, *, constraints = ()) -> StaticWorkBalance |
Evaluate linear-static work including nonzero strong Dirichlet data. |
| function | project(expression, *, domain = None, family: str = 'DG', degree: int = 0, name: str = 'ProjectedField') |
Return the global L2 projection of a UFL expression. |
| function | project_piecewise(terms, *, domain = None, family: str = 'DG', degree: int = 0, name: str = 'ProjectedField') |
Project region-dependent expressions into one finite-element field. |
| function | small_strain_cell_fields(displacement, properties, *, study = None, variables = ('S', 'E', 'MISES', 'SENER'), degree: int = 0) -> tuple[object, ...] |
Create standard projected fields for linear small-strain elasticity. |
| function | small_strain_partition_fields(displacement, assignments, *, study = None, variables = ('S', 'E', 'MISES', 'SENER'), degree: int = 0) -> tuple[object, ...] |
Create standard fields for a complete regional material partition. |
| class | FieldRecovery |
A reviewable conversion from constitutive evidence to a field. |
| function | cell_average_recovery() -> FieldRecovery |
Return the standard scientific integration-point recovery policy. |
| function | recover_integration_point_field(source, *, name: str \| None = None, policy: FieldRecovery \| None = None, unit: str \| None = None, description: str = '') -> FieldResult |
Recover one QuadratureField without hiding its processing history. |
| function | add_execution_trace(result, events: Iterable[object]) -> tuple[dict[str, object], ...] |
Attach one complete execution trace and its standard histories. |
| function | execution_records(events: Iterable[object]) -> tuple[dict[str, object], ...] |
Normalize solver events without depending on a particular procedure. |
| class | HomogenizedFrame |
Macroscopic response reconstructed from one periodic-cell state. |
| class | LiveFiniteStrainCellFields |
Derived cell fields refreshed from active Explicit state at output time. |
| function | finite_strain_dynamic_cell_fields(displacement, velocity, properties, *, variables = ('SENER', 'KED', 'J'), pressure = None, density = None) -> LiveFiniteStrainCellFields |
Create reusable SED/KED/stress fields for Explicit saved frames. |
| function | finite_strain_diagnostics(displacement, *, constraint = None, quadrature_degree: int = 4) -> dict[str, object] |
Evaluate reusable physical checks for a finite-deformation solution. |
| function | finite_strain_cell_fields(displacement, properties, *, variables = ('F', 'E', 'GREEN', 'P', 'S', 'MISES', 'J', 'SENER', 'EVOL'), pressure = None, velocity = None, density = None) -> tuple[object, ...] |
Create requested standard P0 finite-strain cell fields. |
| function | homogenize_periodic_cell(displacement, properties, *, pressure = None, macro_deformation_gradient, cell_reference_volume: float, load_factor: float) -> HomogenizedFrame |
Return volume-normalized macroscopic finite-strain response. |
| function | homogenize_periodic_path(snapshots, properties, *, constraint) -> tuple[HomogenizedFrame, ...] |
Homogenize every saved state of an affine periodic-cell analysis. |
| function | write_homogenized_csv(path: str \| Path, frames) -> Path |
Write flattened macro tensors in a human-readable table. |
| function | write_homogenized_history(path: str \| Path, frames) -> Path |
Write an exact, compact NumPy history for plotting and ML reuse. |
| class | FieldVariable |
Stable public meaning of one result variable. |
| function | field_variable(name: str, *, finite_strain: bool = False) -> FieldVariable |
Resolve a standard variable, including the context-dependent E alias. |
| function | preselected_fields(*, physics: str, finite_strain: bool = False) -> tuple[str, ...] |
Return the engineering-default field set for one physics context. |
| function | resolve_field_variables(names, *, finite_strain: bool = False) -> tuple[FieldVariable, ...] |
Resolve aliases, preserve request order, and remove duplicates. |
| class | FieldOutput |
What fields to save, how often, and in which configuration. |
| class | FieldOutputArtifacts |
Files and final live fields produced by one output plan. |
| class | ResultFieldArtifacts |
One completed-result field dataset and its explicit layout contract. |
| function | field_output(*variables, every: int \| str \| None = None, intervals: int \| None = None, configuration: str = 'deformed', deformation_scale: float = 1.0, backend: str = 'xdmf') -> FieldOutput |
Create a concise, inspectable field-output request. |
| function | read_unified_xdmf_series(xdmf_path) -> tuple[object, ...] |
Read AgentFEM's compact XDMF/HDF5 frames as PyVista grids. |
| function | write_deformed_vtk_series(pvd_path, snapshots, cell_fields, *, deformation_scale: float = 1.0) -> tuple[Path, tuple[Path, ...]] |
Write one deformed VTU grid per frame and a ParaView PVD collection. |
| function | write_parallel_vtk_series(path, snapshots, fields_by_frame) -> Path |
Write collective single-dataset ParaView frames under MPI. |
| function | write_result_fields(result, path, *, time: float = 0.0, names = (), deformation_scale: float = 0.0) -> ResultFieldArtifacts |
Write the live, visualization-ready fields of one SimulationResult. |
| function | write_unified_xdmf_series(xdmf_path, snapshots, cell_fields, *, deformation_scale: float = 1.0, store_reference_geometry: bool = True, compression: int = 4) -> Path |
Write one temporal XDMF and one compressed HDF5 heavy-data file. |
| class | FiniteStrainDiagnosticRequest |
Record physical admissibility and constraint checks. |
| class | HistoryRequest |
Evaluate one scientific quantity on every accepted output frame. |
| class | OutputPlan |
One declarative output contract for a completed finite-strain step. |
| class | PeriodicCellHistoryRequest |
Record complete tensor histories for a finite-strain periodic cell. |
| class | ProbeHistoryRequest |
Record a field value at one physical point on every accepted frame. |
| class | PresentationOutput |
Optional serial rendering from the scientific XDMF/HDF5 series. |
| class | SolverHistoryRequest |
Record accepted-increment convergence history. |
| class | SourceNodeHistoryRequest |
Record U and current coordinates using source-mesh node labels. |
| function | finite_strain_checks(*, constraint = None, quadrature_degree: int = 4) -> FiniteStrainDiagnosticRequest |
Public AgentFEM object. |
| function | history(name: str, evaluate, *, coordinate = None, unit: str \| None = None, abscissa_name: str \| None = None, abscissa_unit: str \| None = None, description: str = '') -> HistoryRequest |
Create a scalar history evaluated on accepted analysis states. |
| function | output_plan(directory, *, field: FieldOutput \| None = None, requests = (), presentation: PresentationOutput \| None = None, basename: str = 'results') -> OutputPlan |
Create a complete finite-strain output plan. |
| function | periodic_cell_history(constraint, *, basename: str = 'homogenized_history') -> PeriodicCellHistoryRequest |
Public AgentFEM object. |
| function | probe_history(name: str, *, at, field = None, component: int \| None = None, unit: str \| None = None, description: str = '') -> ProbeHistoryRequest |
Create a point-probe history for accepted static or transient states. |
| function | presentation(*, comparison: bool = True, animation: str \| None = 'gif', scalar: str = 'UMAG', fps: int = 2) -> PresentationOutput |
Public AgentFEM object. |
| function | solver_history() -> SolverHistoryRequest |
Public AgentFEM object. |
| function | source_node_history(nodes, **points: int) -> SourceNodeHistoryRequest |
Public AgentFEM object. |
| function | render_deformation_animation(undeformed_path, snapshots, nodes, output_path, *, fps: int = 2) -> Path |
Render scale-one deformation history as GIF or MP4. |
| function | render_deformation_comparison(undeformed_path, deformed_path, output_path, *, scalar: str = 'DisplacementMagnitude') -> Path |
Render side-by-side undeformed/deformed surfaces with PyVista. |
| function | render_unified_xdmf_animation(xdmf_path, output_path, *, scalar: str = 'UMAG', fps: int = 2) -> Path |
Render a GIF or MP4 from AgentFEM's single XDMF/HDF5 series. |
| function | render_unified_xdmf_comparison(xdmf_path, output_path, *, scalar: str = 'UMAG') -> Path |
Render the first and final grids from a unified XDMF series. |
| function | render_vtk_series_animation(frame_paths, output_path, *, scalar: str = 'UMAG', fps: int = 2) -> Path |
Render a GIF directly from a combined-field deformed VTU series. |
agentfem.solvers¶
| Kind | Public object | Purpose |
|---|---|---|
| class | LinearSolverOptions |
PETSc KSP options for a linear solve. |
| function | direct_solver(*, package: str \| None = None) -> LinearSolverOptions |
Create a direct linear-solver policy without PETSc option names. |
| class | NonlinearSolverOptions |
PETSc SNES/KSP policy for nonlinear finite-element solves. |
| class | NewtonSolverOptions |
Backend-neutral Newton policy for nonlinear equilibrium. |
| function | newton(*, relative_tolerance: float = 1e-08, absolute_tolerance: float = 1e-09, maximum_iterations: int = 30, line_search: str \| None = 'backtracking', linear_solver: LinearSolverOptions \| None = None, error_if_not_converged: bool = True) -> NewtonSolverOptions |
Create one Newton policy for ordinary and affine-constrained steps. |
| class | NonlinearSolveInfo |
Convergence evidence returned by a PETSc SNES solve. |
| class | AffineNewtonOptions |
Newton policy for an affine-reduced nonlinear equilibrium path. |
| class | AffineLoadIncrementInfo |
Convergence evidence for one macroscopic load increment. |
| class | AffineLoadPathInfo |
Convergence evidence for an incrementally applied affine constraint. |
| class | SolveEvent |
One structured event emitted by an analysis procedure. |
| function | create_ksp(comm, options: LinearSolverOptions \| None = None) |
Create and configure a PETSc KSP object. |
| class | LinearSolveInfo |
PETSc KSP convergence evidence for one linear system solve. |
| function | solve_matrix_system(A, b, x, options: LinearSolverOptions \| None = None, *, raise_on_failure: bool \| None = None) -> LinearSolveInfo |
Solve A x = b and return explicit PETSc convergence evidence. |
| function | solve_linear_problem(bilinear_form, linear_form, solution, *, bcs = None, options: LinearSolverOptions \| None = None, return_info: bool = False) |
Assemble and solve a standard linear variational problem. |
| function | solve_nonlinear_problem(residual_form, solution, *, bcs = None, jacobian_form = None, options: NonlinearSolverOptions \| NewtonSolverOptions \| None = None, petsc_options_prefix: str = 'agentfem_nonlinear_') -> tuple[object, NonlinearSolveInfo] |
Solve R(u; v) = 0 with the current DOLFINx PETSc/SNES interface. |
| function | solve_affine_nonlinear_path(residual_form, jacobian_form, solution, constraint, *, load_factors = None, incrementation = None, output_factors = (), options: AffineNewtonOptions \| NewtonSolverOptions \| None = None, on_increment = None, acceptance_check = None, reporter = None, step_name: str = 'affine_nonlinear', step_number: int = 1) -> tuple[object, AffineLoadPathInfo] |
Solve a nonlinear path under u = T q + u_bar constraints. |
agentfem.steps¶
| Kind | Public object | Purpose |
|---|---|---|
| class | AutomaticIncrementation |
Adaptive load/time incrementation for one analysis step. |
| class | FixedIncrementation |
A prescribed monotone load-factor path for one analysis step. |
| function | automatic(*, initial: float = 0.1, minimum: float = 1e-05, maximum: float = 0.25, max_increments: int = 100, max_cutbacks: int = 5, cutback_factor: float = 0.25, growth_factor: float = 1.5, fast_iterations: int = 4, slow_iterations: int = 10, maximum_inelastic_increment: float \| None = None) -> AutomaticIncrementation |
Create inspectable Abaqus-style automatic incrementation. |
| function | fixed(increments: int) -> FixedIncrementation |
Divide the normalized step interval into exactly increments parts. |
| function | at(*load_factors: float) -> FixedIncrementation |
Create a prescribed, nonuniform load-factor path. |
| function | normalize(value = None, *, increments: int \| None = None, load_factors = None) |
Normalize public and compatibility incrementation inputs. |
| class | EngineeringStep |
Named inherited activation state, separate from solver controls. |
| function | engineering_step(name: str, *, previous: EngineeringStep \| None = None, inherit_model_loads: bool = False, inherit_model_constraints: bool = True) |
Public AgentFEM object. |
agentfem.time¶
| Kind | Public object | Purpose |
|---|---|---|
| function | central_difference_predict_displacement(u_next, u, velocity, acceleration, dt: float) -> None |
Predict displacement with the explicit central-difference/Newmark formula. |
| function | acceleration_from_residual(acceleration, residual, inv_mass: np.ndarray) -> None |
Set acceleration from residual and inverse lumped mass. |
| function | central_difference_update_midstep_velocity(velocity_mid, velocity, acceleration, dt: float) -> None |
Update the central-difference mid-step velocity. |
| function | central_difference_correct_velocity(velocity_next, velocity, acceleration, acceleration_next, dt: float) -> None |
Correct velocity with the explicit central-difference/Newmark formula. |
| function | central_difference_update_velocity(velocity_next, velocity_mid, acceleration_next, dt: float) -> None |
Update whole-step velocity from mid-step velocity and new acceleration. |
| class | ProgressPrinter |
Rank-zero progress printer controlled by a fixed step interval. |
| class | TimeStep |
Metadata for one transient-solve step. |
| class | TimeStepper |
Iterate over transient-solve step metadata. |
| function | format_duration(seconds: float) -> str |
Format elapsed seconds as HH:MM:SS. |
| class | GeneralizedAlphaParameters |
Parameters for Newmark/generalized-alpha time integration. |
| function | generalized_alpha(*, spectral_radius: float = 0.8) |
Second-order generalized-alpha parameters from rho_infinity. |
| function | newmark(*, beta: float = 0.25, gamma: float = 0.5) |
Average-acceleration Newmark by default. |
agentfem.units¶
| Kind | Public object | Purpose |
|---|---|---|
| class | UnitSystem |
Named consistent base-unit contract attached to a model. |
| function | consistent(*, length, mass, time, temperature = 'K', name = 'consistent_units') |
Declare the base units used consistently by all model inputs. |
| function | si(*, temperature = 'K') -> UnitSystem |
Return the SI m-kg-s engineering contract. |
| function | n_mm_mpa(*, temperature = 'K') -> UnitSystem |
Return the common mm-N-s-MPa consistent system. |
agentfem.upgrades¶
| Kind | Public object | Purpose |
|---|---|---|
| class | UpgradeFinding |
One stable, addressable compatibility or migration finding. |
| class | UpgradeReport |
Dry-run migration plan for one installed-use project. |
| function | inspect_project(project: ProjectConfig) -> UpgradeReport |
Return a dry-run upgrade report without executing or changing the case. |
| function | apply_safe_metadata(project: ProjectConfig) -> tuple[Path, ...] |
Apply only deterministic project-metadata migrations, atomically. |
| function | migrate_cohesive_checkpoint(snapshot: dict[str, object], *, tangential: str, tangential_stiffness: float \| None = None, acknowledge_physics_change: bool = False) -> dict[str, object] |
Explicitly promote a physical-keyed scalar checkpoint to schema v5. |
agentfem.io¶
| Kind | Public object | Purpose |
|---|---|---|
| function | ensure_output_dir(path: Path, comm: MPI.Comm) -> None |
Create an output directory once, then synchronize all ranks. |
| class | CSVLogger |
Rank-zero CSV writer for time histories and scalar diagnostics. |
| class | XDMFTimeSeries(path: Path, domain, mode: str = 'w') -> None |
Small context manager for writing a mesh and time-dependent fields. |
| class | ParaViewTimeSeries(path: Path, domain, mode: str = 'w') -> None |
Collective VTK/PVD series with one geometry carrying all fields. |
| class | ResultWriter(path: Path, domain, fields = (), mode: str = 'w') -> None |
Named result writer for one mesh and a stable field list. |
| function | interpolate_for_xdmf(field, *, degree: int = 1, name: str \| None = None) |
Interpolate a field to an XDMF-friendly Lagrange output space. |
agentfem.diagnostics¶
| Kind | Public object | Purpose |
|---|---|---|
| class | PerformanceLedger |
Low-overhead, rank-local timing evidence for one solver lifecycle. |
| function | comm_of(obj = None, default = MPI.COMM_WORLD) |
Return the MPI communicator associated with an object when possible. |
| function | is_root(obj = None, *, root: int = 0) -> bool |
Return whether the current MPI rank is the selected reporting rank. |
| function | print_on_root(obj, *args, root: int = 0, flush: bool = True, **kwargs) -> None |
Print a message only on the selected MPI root rank. |
| class | StandardRunReporter |
Immediate rank-zero progress for long-running analysis steps. |
| class | SolveEventRecorder |
In-memory structured execution trace shared by every procedure. |
| class | ReporterGroup |
Fan one solver event out to several independent consumers. |
| function | compose_reporters(*reporters) -> object \| None |
Compose progress, persistence, and agent observers without coupling. |
| function | kinetic_energy(mass_lumped: np.ndarray, velocity: fem.Function) -> float |
Global kinetic energy from a lumped mass vector and velocity field. |
| class | MechanicalEnergy |
Kinetic, recoverable strain, and total mechanical energy. |
| function | mechanical_energy(*, mass, stiffness, displacement, velocity) -> MechanicalEnergy |
Evaluate 1/2 v^T M v and 1/2 u^T K u from visible operators. |
| class | LinearStaticEnergy |
Energy closure for a proportional linear-static load path. |
| function | linear_static_energy(*, stiffness, force, displacement) -> LinearStaticEnergy |
Evaluate energy for loads ramped proportionally from zero to force. |
| class | MechanicalEnergyMonitor |
Cache visible M/K operators and sample mechanical energy in time. |
| class | ThermalBalanceMonitor |
Sample discrete heat content, applied rate, outflow, and closure. |
| class | ThermalContentMonitor |
Backwards-compatible sensible-heat monitor without balance terms. |
| function | max_abs(function: fem.Function) -> float |
Global max absolute value of a finite-element field. |
| function | max_magnitude(function) -> float |
Global maximum magnitude of a scalar or vector finite-element field. |
| class | FieldStats |
Distributed scalar statistics for a finite-element field. |
| class | ScalarDiagnostic |
Named scalar diagnostic evaluated on demand. |
| class | DiagnosticSet |
Ordered collection of scalar diagnostics. |
| function | magnitude_stats(function, *, on = None, name: str \| None = None) -> FieldStats |
Return distributed magnitude statistics for a scalar or vector field. |
| function | field_stats(function, *, on = None, name: str \| None = None) -> FieldStats |
Alias for magnitude_stats for application-level diagnostics. |
agentfem.extensions¶
| Kind | Public object | Purpose |
|---|---|---|
| class | ExtensionError |
An installed extension could not be discovered or activated safely. |
| class | ExtensionSpec |
Identity and compatibility contract published by one extension. |
| class | Extension |
One loadable extension and its side-effect-free registration callback. |
| class | ExtensionDescriptor |
Package metadata visible without importing extension code. |
| class | ExtensionContext |
Staging area exposed to an extension during activation. |
| class | LoadedExtension |
Activated identity and the capabilities registered into this process. |
| function | discover_extensions() -> tuple[ExtensionDescriptor, ...] |
Return installed extension metadata without importing extension code. |
| function | extension_status() -> dict[str, object] |
Return the machine-facing installed and activated extension inventory. |
| function | loaded_extensions() -> tuple[LoadedExtension, ...] |
Return activated extensions in stable name order. |
| function | missing_extensions(names) -> tuple[str, ...] |
Return required names that are not advertised by installed packages. |
| function | load_extension(name: str) -> LoadedExtension |
Explicitly import, validate, and activate one installed extension. |
| function | load_extensions(names) -> tuple[LoadedExtension, ...] |
Activate required extensions in declaration order. |
agentfem.ir¶
| Kind | Public object | Purpose |
|---|---|---|
| function | describe(item) |
Prefer semantic records over display-only summaries. |
| function | describe_many(items: Iterable[object]) -> tuple[object, ...] |
Describe a collection without retaining backend memory addresses. |
| function | model_document(model, *, agentfem_version: str, backend: Mapping[str, object] \| None = None, include_validation: bool = True, metadata: Mapping[str, object] \| None = None) -> IRDocument |
Build an experimental AF-IR model document. |
| class | IRDocument |
Canonical envelope for an AF-IR artifact. |
| class | IRSerializationError |
Raised when a value cannot be represented without hiding its meaning. |
| function | to_json_safe(value, *, path: str = '$') |
Convert scientific summaries to deterministic JSON-safe values. |
| function | write_document(document: IRDocument \| Mapping[str, object], path: str \| Path, *, indent: int = 2) -> Path |
Write one deterministic AF-IR JSON document and return its path. |
| function | describe_value(value) |
Return a JSON-safe coefficient value or an explicit opaque marker. |
agentfem.interfaces¶
| Kind | Public object | Purpose |
|---|---|---|
| class | CohesiveResponse |
One Mode-I traction--separation update. |
| class | VectorCohesiveResponse |
Local-basis response of a two- or three-dimensional interface. |
| class | MixedModeBilinearCohesiveLaw |
Bilinear mixed-mode cohesive law for proportional loading paths. |
| class | BilinearCohesiveLaw |
Irreversible bilinear Mode-I cohesive law. |
| class | CohesiveTransaction(law: BilinearCohesiveLaw, size: int) |
Trial/commit/rollback state for a batch of cohesive points. |
| class | MixedModeCohesiveTransaction(law: MixedModeBilinearCohesiveLaw, size: int) |
Trial/commit state for :class:MixedModeBilinearCohesiveLaw. |
| class | PairedLineFacets |
Deterministically paired zero-thickness line facets for a 2D mesh. |
| class | PairedSurfaceFacets |
Deterministically paired zero-thickness triangular facets in 3D. |
| class | SplitInterfaceMesh |
Array-level result of splitting one conforming interface manifold. |
| class | NamedSplitInterfaceMesh |
One solver mesh carrying several disjoint named cohesive surfaces. |
| class | InterfaceRigidModeAudit |
Rigid-body constraint rank of a split-interface model. |
| function | audit_split_interface_rigid_modes(split: SplitInterfaceMesh \| NamedSplitInterfaceMesh, *, constrained_components, tangential = 'free', active_facets = None, rank_tolerance: float \| None = None, error_if_singular: bool = False) -> InterfaceRigidModeAudit |
Audit rigid translations and rotations before creating a solver mesh. |
| function | create_dolfinx_split_mesh(split: SplitInterfaceMesh \| NamedSplitInterfaceMesh, *, comm = None, cell_type: str \| None = None, input_order: str = 'counterclockwise') |
Create an executable DOLFINx mesh for an audited split interface. |
| class | CohesiveFacetResponse |
Trial force, kinematics and energy from paired interface facets. |
| class | ModeIKinematicsAudit |
Accepted-state check that a declared Mode-I path remains Mode-I. |
| function | audit_mode_i_kinematics(response: CohesiveFacetResponse, *, ratio_limit: float = 0.1, absolute_tolerance: float = 1e-12, error_if_exceeded: bool = False) -> ModeIKinematicsAudit |
Check tangential jump without changing cohesive history. |
| class | CohesiveElementTangents |
Element-node layouts and consistent scalar-dof tangent matrices. |
| class | ModeICohesiveFacetAssembler(topology: PairedLineFacets, law, *, number_of_nodes: int, thickness: float = 1.0, tangential: str = 'free', tangential_stiffness: float \| None = None) |
Two-point line integration for a fixed-path 2D interface. |
| class | ModeICohesiveSurfaceAssembler(topology: PairedSurfaceFacets, law, *, number_of_nodes: int, tangential: str = 'free', tangential_stiffness: float \| None = None) |
Three-point integration of linear triangular interfaces in 3D. |
| function | pair_coincident_surface_facets(coordinates, negative_facets, positive_facets, *, normal_hint, tolerance: float = 1e-10) -> PairedSurfaceFacets |
Pair coincident three-node triangular facets in 3D. |
| function | pair_coincident_line_facets(coordinates, negative_facets, positive_facets, *, normal_hint, tolerance: float = 1e-10) -> PairedLineFacets |
Pair coincident two-node line facets with a declared normal direction. |
| function | split_conforming_line_interface(coordinates, cells, interface_facets, *, positive_cells) -> SplitInterfaceMesh |
Duplicate nodes on a declared conforming 2D cell interface. |
| function | split_conforming_surface_interface(coordinates, cells, interface_facets, *, positive_cells) -> SplitInterfaceMesh |
Duplicate nodes on a declared conforming triangular surface in 3D. |
| function | split_conforming_named_interfaces(coordinates, cells, named_interfaces) -> NamedSplitInterfaceMesh |
Atomically split several disjoint conforming cohesive manifolds. |
| function | split_conforming_cell_interface(coordinates, cells, *, positive_cells) -> SplitInterfaceMesh |
Split the internal facet separating two declared cell partitions. |
| class | CohesiveSurface |
Public description of a fixed-path zero-thickness interface. |
| function | bilinear_cohesive(*, strength: float, fracture_energy: float, initial_stiffness: float, compression_stiffness: float \| None = None, name: str = 'bilinear Mode-I cohesive law') -> BilinearCohesiveLaw |
Create a bilinear Mode-I cohesive law. |
| function | mixed_mode_bilinear_cohesive(*, normal_strength: float, shear_strength: float, normal_fracture_energy: float, shear_fracture_energy: float, normal_stiffness: float, tangential_stiffness: float, interaction: str = 'bk', interaction_exponent: float = 1.45, compression_stiffness: float \| None = None, residual_tangential_fraction: float = 0.0, friction_coefficient: float = 0.0, friction_regularization: float = 1e-08, name: str = 'bilinear mixed-mode cohesive law') -> MixedModeBilinearCohesiveLaw |
Create a quadratic-initiation, energy-evolution mixed-mode law. |
| function | cohesive_surface(*, law, mode: str = 'normal', name: str = 'cohesive surface') -> CohesiveSurface |
Declare a fixed-path zero-thickness cohesive interface. |
| function | cohesive_characteristic_length(*, young: float, fracture_energy: float, strength: float) -> float |
Return the declared scale E * Gamma / strength**2. |
agentfem.campaigns¶
| Kind | Public object | Purpose |
|---|---|---|
| class | Campaign(*, name: str, parameter_space: ParameterSpace, outputs: tuple[Quantity, ...], evaluate: Callable[[object], Mapping[str, object] \| CaseOutcome \| SimulationResult], build: Callable[[Mapping[str, object]], object] \| None = None, metadata: Mapping[str, object] \| None = None, execution: ExecutionPolicy \| None = None) -> None |
Build and evaluate a collection of immutable scientific cases. |
| class | CampaignCase |
One immutable case in a campaign plan. |
| class | CampaignPlan |
Immutable cases and their design-of-experiment evidence. |
| class | CampaignReport |
Case-level evidence and the successful scientific dataset. |
| class | CaseOutcome |
Successful case outputs plus links to scientific evidence. |
| class | CaseRunRecord |
Execution evidence for one attempted case. |
| class | ExecutionPolicy |
Declared execution behavior for the current campaign runner. |
| function | case_id(campaign_name: str, parameters: Mapping[str, object], *, schema_version: str = CAMPAIGN_SCHEMA_VERSION) -> str |
Return a deterministic scientific case identity. |
| function | create(**kwargs) -> Campaign |
Create a :class:Campaign using the public functional spelling. |
| class | CampaignSpecification |
Validated declarative part of a campaign. |
| function | load_specification(path: str \| Path) -> CampaignSpecification |
Load a safe JSON campaign specification. |
| function | specification_from_dict(record: Mapping[str, object]) -> CampaignSpecification |
Validate a dictionary and construct a campaign specification. |
| class | ChoiceParameter |
Finite categorical or policy parameter. |
| class | IntegerParameter |
Bounded integer parameter. |
| class | ParameterSpace |
Ordered scientific input schema for a campaign. |
| class | RealParameter |
Bounded continuous parameter with optional units and log scaling. |
| class | SamplingPlan |
Immutable, validated collection of parameter samples. |
| function | explicit(space: ParameterSpace, samples: Iterable[Mapping[str, object]], *, metadata: Mapping[str, object] \| None = None) -> SamplingPlan |
Create a plan from caller-supplied samples. |
| function | full_factorial(space: ParameterSpace, levels: int \| Mapping[str, int] = 3) -> SamplingPlan |
Create a full-factorial design in normalized coordinates. |
| function | latin_hypercube(space: ParameterSpace, count: int, *, seed: int = 0) -> SamplingPlan |
Draw a reproducible Latin-hypercube design. |
| function | random(space: ParameterSpace, count: int, *, seed: int = 0) -> SamplingPlan |
Draw reproducible independent uniform samples in normalized space. |
agentfem.checkpointing¶
| Kind | Public object | Purpose |
|---|---|---|
| class | CheckpointPolicy |
Automatic accepted-increment checkpoint cadence for transient steps. |
| function | every(increments: int, *, directory = 'checkpoints', final: bool = True, prefix: str \| None = None, keep_last: int \| None = None, portable: bool = False) -> CheckpointPolicy |
Create an automatic checkpoint policy for accepted time increments. |
| function | save_transient_checkpoint(path, *, step_kind: str, step_name: str, procedure, dt: float, total_steps: int, completed_steps: int, state: dict[str, object], accepted_times = (), execution_events = (), history_records = (), auxiliary_state: dict[str, object] \| None = None, portable: bool = False) |
Write a transient restart, optionally with partition-independent state. |
| function | load_transient_checkpoint(path, *, step_kind: str, step_name: str, procedure, dt: float, total_steps: int, state: dict[str, object]) -> dict[str, object] |
Restore a transient state after validating its scientific identity. |
| function | save_portable_state_bundle(path, *, state: dict[str, object]) -> dict[str, object] |
Collectively publish a portable nodal-state bundle. |
| function | load_portable_state_bundle(path, *, state: dict[str, object], record: dict[str, object], identities: dict[str, object]) -> None |
Collectively restore a bundle written by :func:save_portable_state_bundle. |
| function | checkpoint_file_record(path) -> dict[str, object] |
Describe one checkpoint payload by name, size, and digest. |
| function | validate_checkpoint_record(directory, record: dict[str, object]) -> Path |
Validate and return a payload referenced by a scientific manifest. |
| function | function_portable_identity(function) -> dict[str, object] |
Return an MPI-partition-independent identity for a nodal field. |
| function | mesh_portable_identity(domain) -> dict[str, object] |
Hash cell geometry independently of local numbering and partition. |
| function | function_partition_identity(function) -> dict[str, object] |
Return a JSON-safe identity for one field on one mesh partition. |
| function | atomic_savez(path, **arrays) -> Path |
Atomically publish one NumPy archive in its destination directory. |
| function | atomic_write_text(path, content: str) -> Path |
Atomically publish UTF-8 text in its destination directory. |
agentfem.datasets¶
| Kind | Public object | Purpose |
|---|---|---|
| class | DatasetSplit |
Reproducible train/validation partition. |
| class | ScientificDataset |
A numeric dataset whose columns retain scientific meaning. |
| class | ExternalDatasetAudit |
Local evidence that downloaded public data matches its manifest. |
| class | ExternalDatasetManifest |
Versioned public dataset identity, scope, and local audit policy. |
| class | ExternalFile |
One immutable file identity in a public scientific dataset. |
| class | SpreadsheetSheet |
Rectangular values from one XLSX worksheet. |
| class | SpreadsheetWorkbook |
Dependency-free, read-only representation of one XLSX workbook. |
| function | read_xlsx_workbook(path: str \| Path) -> SpreadsheetWorkbook |
Read values and cached formula results from an XLSX without pandas. |
| function | science_supershear_dryad_manifest() -> ExternalDatasetManifest |
Return the pinned CC0 Dryad v7 manifest for Science 2023. |
| function | science_supershear_v5_research_task() -> dict[str, object] |
Return the installed machine-readable V5 research handoff. |
| class | Quantity |
One scalar, curve, vector, or sampled-field output contract. |
| class | Sample |
One successful simulation sample and its scientific lineage. |
| function | decode_quantities(quantities: tuple[Quantity, ...], row) -> dict[str, object] |
Restore one flattened numeric row to declared named quantities. |
| class | RectilinearObservation |
One scalar field on explicit physical x/y axes. |
| class | FEMFieldSample |
One FEM field representation with coordinates and scientific encoding. |
| class | TorchDatasetBundle |
PyTorch dataset plus the schema needed to interpret its columns. |
| function | fem_field_sample(function, encoding) -> FEMFieldSample |
Export owned nodal coefficients for external neural/PINN tooling. |
| function | fem_observation_sample(function, grid, *, name: str \| None = None, unit: str \| None = None, role: str = 'output', components = (), outside: str = 'raise', fill_value: float = 0.0, coordinate_map = None, configuration: str = 'reference') -> FEMFieldSample |
Sample a FEM field on a reusable structured observation grid. |
| function | to_torch(dataset: ScientificDataset, *, normalized_inputs: bool = True, dtype: str = 'float32', device: str = 'cpu') -> TorchDatasetBundle |
Expose a validated campaign dataset as a PyTorch TensorDataset. |
agentfem.surrogates¶
| Kind | Public object | Purpose |
|---|---|---|
| class | Prediction |
One named prediction with source and trust diagnostics. |
| class | QuantityMetrics |
Error evidence for one declared output quantity. |
| class | SurrogateValidationReport |
Independent validation metrics and optional acceptance decision. |
| function | validate_predictions(*, model_kind: str, dataset: ScientificDataset, predictions: np.ndarray, thresholds: Mapping[str, float] \| None = None) -> SurrogateValidationReport |
Compare flattened predictions with a dataset's declared quantities. |
| class | BoxApplicabilityDomain |
Axis-aligned envelope in normalized scientific parameter space. |
| class | GuardedSurrogate |
Use a surrogate only inside its declared applicability domain. |
| class | OutOfDomainError |
Raised when an unguarded surrogate is asked to extrapolate. |
| class | PODRidgeSurrogate |
Proper-orthogonal-decomposition outputs plus ridge latent dynamics. |
| class | RidgeSurrogate |
Multi-output ridge regression baseline. |
| class | TrainedPODRidge |
Fitted POD-ridge field/curve surrogate. |
| class | TrainedRidge |
Fitted ridge surrogate with named prediction and validation methods. |
| class | AffineCoordinateMap |
Explicit affine map from observation coordinates to model coordinates. |
| class | FieldEncoding |
How a physical field becomes a machine-learning tensor. |
| class | NeuralOperatorSpec |
Function-to-function learning contract for an external trainer. |
| class | ObservationGrid |
Mesh-independent Cartesian coordinates for field learning and sensing. |
| class | PhysicsCondition |
Boundary, initial, interface, or observation condition in a loss. |
| class | PhysicsResidual |
One explicit differentiable residual used in a physics loss. |
| class | PINNSpec |
Physics-informed training contract for selected explicit residuals. |
| function | regular_grid(*, bounds, shape, axis_names = None, coordinate_system: str = 'cartesian', order: str = 'C', coordinate_unit: str \| None = None) -> ObservationGrid |
Create an evenly spaced observation grid from physical bounds. |
| class | TorchMLPSurrogate |
Configurable dense-network baseline for parameter-to-QoI learning. |
| class | TrainedTorchMLP |
In-memory trained PyTorch adapter. |
| class | PINNTrainingRecord |
In-memory training evidence without serializing a PyTorch pickle. |
| class | TorchPINNAdapter |
Bind explicit residual/condition callables to a :class:PINNSpec. |
| class | SurrogateTrainingRun |
A trained model together with its independent validation evidence. |
| function | train(dataset: ScientificDataset, *, estimator = None, validation_fraction: float = 0.2, seed: int = 0, thresholds = None) -> SurrogateTrainingRun |
Split, fit, and independently validate one surrogate estimator. |
agentfem.validation¶
| Kind | Public object | Purpose |
|---|---|---|
| class | ValidationIssue |
One addressable model, numerical, or execution issue. |
| class | ValidationReport |
Immutable collection of structured validation issues. |
| class | ModelValidationError(report: ValidationReport) |
Raised when a structured model validation report contains errors. |
| function | issue(code: str, path: str, message: str, *, severity: Severity = 'error', hint: str \| None = None, **context) -> ValidationIssue |
Concise constructor used by model validators and backend adapters. |
agentfem.verification¶
| Kind | Public object | Purpose |
|---|---|---|
| function | trust_rank(level: str) -> int |
Return the ordered rank of one public trust level. |
| class | VerificationClaim |
One explicit, machine-readable scientific acceptance claim. |
| class | VerificationReport |
Trust decision derived from execution state and scientific claims. |
| class | QualityPolicy |
Low-ceremony acceptance policy for one result or dataset boundary. |
| class | ConvergenceSample |
One observable evaluated at a declared discretization size. |
| class | ConvergenceStudy |
A coarse-to-fine mesh or time-step convergence sequence. |
| function | report(*claims: VerificationClaim, computed: bool = True, converged: bool = True, scope: str = 'simulation') -> VerificationReport |
Concise public constructor for a verification report. |
| function | quality_policy(value: str \| QualityPolicy) -> QualityPolicy |
Return one named public quality policy. |
| function | assess(result, quality: str \| QualityPolicy = 'engineering', *, claims: Iterable[VerificationClaim] = (), converged: bool \| None = None, required_quantities: Iterable[str] = (), required_histories: Iterable[str] = (), required_artifacts: Iterable[str] = (), attach: bool = True) -> VerificationReport |
Apply a quality preset and inexpensive deterministic result checks. |
| function | convergence_study(name: str, observable: str, samples: Iterable[ConvergenceSample], *, discretization: str = 'mesh') -> ConvergenceStudy |
Public AgentFEM object. |