OpenPFC  0.1.4
Phase Field Crystal simulation framework
Loading...
Searching...
No Matches
Accessing

multiple fields (for future multi-field support)

class CoupledIC : public pfc::FieldModifier {
public:
void apply(pfc::Model& model, double time) override {
// Current: single field via get_field_name()
auto& density = model.get_real_field(get_field_name());
// Future: access multiple fields
// auto& temperature = model.get_real_field("temperature");
// Set coupled initial state
std::fill(density.begin(), density.end(), 0.5);
}
};
Definition field_modifier.hpp:240
virtual void apply(Model &model, double time)=0
Apply the field modification to the model (pure virtual)
The Model class represents the physics model for simulations in OpenPFC.
Definition model.hpp:95

Usage in Simulator:

Performance Considerations:

Known Limitations:

Note
The time parameter allows implementing time-dependent boundary conditions, but most initial conditions ignore it (t=0 at IC application)
Warning
Modifiers have direct mutable access to model state. Ensure your apply() implementation maintains physical correctness and doesn't violate model invariants.
See also
Model::get_real_field() for field access
Model::get_complex_field() for k-space operations
Simulator::add_initial_condition() for IC registration
Simulator::add_boundary_condition() for BC registration
initial_conditions/ for built-in IC implementations
boundary_conditions/ for built-in BC implementations