36 : name(std::move(
n)),
func(std::move(
f)) {
39 void apply(
Model &
m,
double t)
override {
41 if constexpr (std::is_invocable_r_v<double, Fn, const Real3 &>) {
42 pfc::field::apply(
m, get_field_name(),
func);
43 }
else if constexpr (std::is_invocable_r_v<
double,
Fn,
const Real3 &,
47 static_assert(
sizeof(
Fn) == 0,
48 "Unsupported lambda signature for legacy modifier. Expected"
49 " double(Real3) or double(Real3,double)");
54 return std::make_unique<LambdaModifier>(std::move(
field_name), std::move(
fn));
Definition field_modifier.hpp:240
The Model class represents the physics model for simulations in OpenPFC.
Definition model.hpp:95
Base class for initial conditions and boundary conditions.
std::unique_ptr< FieldModifier > make_legacy_modifier(std::string field_name, Fn fn)
Create a FieldModifier from a coordinate-space lambda.
Definition legacy_adapter.hpp:31
Functional, coordinate-space field operations (header-only)
void apply_with_time(RealField &field, const World &world, const FFT &fft, double t, Fn &&fn)
Apply a space-time function over a real field (local inbox)
Definition operations.hpp:94
Represents the global simulation domain (the "world").
Definition world.hpp:91