Supported Models
Supported Today
All combinations below are supported by both the 1D (energy-only) and 2D (energy × time) evaluators, with time-axis features (dynamics, subcycle, convolution) active only in 2D.
Plain energy models.
Energy model with dynamics on a top-level energy parameter.
Energy model with subcycle dynamics on a top-level parameter.
Convolution kernels inside time-domain Dynamics models, typically for IRF broadening of time-dependent traces.
Energy model with a profile model on a top-level energy parameter.
Energy model with a profile on one parameter and dynamics on a different top-level parameter. (Any number of top-level time-dependent and/or profiled parameters on the same energy model are supported as long as any given top-level energy parameter has no more than one directly attached model.)
Energy model with a profile on a top-level parameter and standard dynamics on one of that profile’s internal parameters. (Single-cycle only; no multi-cycle / subcycle models.)
A single 2D fit may combine several of the features above — e.g. multiple profiled parameters, standard and subcycle dynamics on other parameters, and IRF convolution on the resulting time traces — within one model.
Expression Support Today
Definitions: “base parameter”: a standard top-level energy-model parameter defined directly in the model, not by an expression. A base parameter may be fit-varying, fixed, time-dependent, or profiled. “expression parameter”: a top-level energy-model parameter defined by an expression that references one or more base parameters.
Expressions linking a top-level energy parameter to one or more other top-level energy parameters.
Static fan-out expressions, where multiple top-level energy parameters reference the same top-level base parameter.
Expressions where a top-level energy expression parameter references a top-level time-dependent parameter.
Expressions where a top-level energy expression parameter references a top-level profiled parameter.
Expressions where a top-level energy expression parameter references a top-level profiled parameter whose internal profile parameters are themselves time-dependent via standard dynamics, so the top-level expression inherits the resulting profile variation. (Single-cycle only; no multi-cycle / subcycle models.)
Explicitly Excluded Today
Adding dynamics directly to a top-level parameter that already has a profile.
Adding a profile directly to a top-level parameter that already has dynamics.
Adding a profile to a parameter inside an attached dynamics model.
Adding multi-cycle / subcycle dynamics to a parameter inside an attached profile model.
Adding dynamics to an expression parameter.
Adding a profile to an expression parameter.
Adding a convolution kernel as a top-level energy-model component. Convolution is supported only in Dynamics/time models; the main supported use case is IRF broadening.
Transitive expression chains that pass through time-varying or profile-varying parameters are not supported; users should reference the varying base parameter directly instead of chaining through another expression.
Lowering Notes
The sections above describe model semantics. The graph intermediate representation (GIR) backend lowers most supported single-file energy and 2D models, but a few cases still use the model/component/parameter (MCP) reference evaluator:
Standalone
TIME_1Ddynamics models are graph-valid and supported by MCP, but remain outside the lowered backend scope for now.Expression parameters lower only when the expression is arithmetic-only. Function calls, attribute access, subscripts, and other non-arithmetic AST forms fall back to MCP.
Project-level fitting is still wired through
fit_project_mcpeven when the underlying per-file models are lowerable.
Notes
Static energy-only expression chains are handled by lmfit, so they may continue to work in interpreter-backed workflows. They are not the model shape we use as the backend-portability contract, because the same chain pattern becomes invalid or ambiguous once dynamics or profiles enter the dependency path. The recommended pattern is direct fan-out from base parameters instead of multi-step chains.