Application frontend

The frontend turns JSON or TOML settings into a simulation object graph. Read the application pipeline and the minimal custom application tutorial before using these ownership types directly.

pfc::ui::App

template<class ConcreteModel>
class App

JSON-driven MPI application entry point for a concrete physics model.

Public Functions

inline void set_field_modifier_catalog(FieldModifierCatalog catalog)

Use catalog when wiring ICs/BCs from JSON instead of the global default catalog.

Must be called before main() if used (typically from main after constructing the app, or from a thin wrapper).

pfc::ui::SpectralCpuStack

class SpectralCpuStack

Non-copyable, non-movable holder for the CPU spectral pipeline from JSON.

Mirrors the construction order used by the UI session: world → decomposition → HeFFTe CPU FFT → time. The MPI communicator is stored for downstream Simulator wiring (same comm passed into FFT creation).

Public Functions

inline explicit SpectralCpuStack(const nlohmann::json &settings, MPI_Comm comm, int rank_id, int num_ranks)
Parameters:
  • settings – Parsed application JSON (world, time, plan_options, …)

  • comm – MPI communicator for FFT creation and later simulator context

  • rank_id – This rank index for FFT creation

  • num_ranks – Number of ranks for decomposition

inline MPI_Comm mpi_comm() const noexcept

Communicator passed at construction (FFT + simulator)

pfc::ui::SpectralSimulationSession

template<class ConcreteModel>
class SpectralSimulationSession

Heap-owned spectral (HeFFTe CPU FFT) simulation stack from settings.

Template Parameters:

ConcreteModel – Physics model type (e.g. from an application target)

Public Functions

inline explicit SpectralSimulationSession(const nlohmann::json &settings, MPI_Comm comm, int rank_id, int num_ranks)

Build world, decomposition, FFT, time, model, and simulator.

Parameters:
  • settings – Parsed application JSON (world, time, plan_options, …)

  • comm – MPI communicator for FFT and simulator modifier context

  • rank_id – This rank index for FFT creation

  • num_ranks – Number of ranks for decomposition

inline void wire_simulator_from_settings(const nlohmann::json &settings, int mpi_rank, bool rank0, const FieldModifierCatalog &modifier_catalog, const ResultsWriterCatalog &writer_catalog)

Register writers/modifiers and apply optional "simulator" JSON keys.

Uses the same MPI communicator as FFT construction (SpectralCpuStack).

Parameters:
  • modifier_catalog – Factories for JSON type strings.

  • writer_catalog – Factories for JSON fields[].writer (e.g. default_results_writer_catalog() for built-in writers).

inline void wire_simulator_from_settings(const nlohmann::json &settings, const JsonWiringSession &session)

Same as the overload taking (mpi_rank, rank0, catalogs); uses the stack communicator with rank flags from session.ctx