OpenPFC  0.1.4
Phase Field Crystal simulation framework
Loading...
Searching...
No Matches
PFCModel Class Reference

Phase Field Crystal model for solidification simulations. More...

Inheritance diagram for PFCModel:
Collaboration diagram for PFCModel:

Public Member Functions

 PFCModel (const World &world, std::unique_ptr< FFT > fft, double epsilon)
 Construct PFC model with specified domain.
 
void initialize (double dt) override
 Initialize model: allocate fields and precompute operators.
 
void step (double time) override
 Single time step: advance ψ(t) → ψ(t+dt)
 
double get_epsilon () const
 Get current epsilon value.
 
void set_epsilon (double epsilon)
 Set epsilon (for parameter studies)
 
- Public Member Functions inherited from pfc::Model
 ~Model ()
 Destroy the Model object.
 
 Model (FFT &fft, const World &world)
 
 Model (const Model &)=delete
 Disable copy constructor.
 
Modeloperator= (const Model &)=delete
 Disable copy assignment operator.
 
bool is_rank0 () const noexcept
 Check if current MPI rank is 0.
 
const Worldget_world () const noexcept
 Get the decomposition object associated with the model.
 
FFTget_fft () noexcept
 
virtual size_t get_allocated_memory_bytes () const
 
bool has_real_field (std::string_view field_name) const noexcept
 Check if the model has a real-valued field with the given name.
 
void add_real_field (std::string_view name, RealField &field)
 
bool has_complex_field (std::string_view field_name) const noexcept
 
void add_complex_field (std::string_view name, ComplexField &field)
 
RealField & get_real_field (std::string_view name)
 
const RealField & get_real_field (std::string_view name) const
 Retrieve a registered real-valued field by name (const version)
 
ComplexField & get_complex_field (std::string_view name)
 
const ComplexField & get_complex_field (std::string_view name) const
 Retrieve a registered complex-valued field by name (const version)
 
void add_field (const std::string &name, RealField &field)
 Add a field to the model.
 
void add_field (const std::string &name, ComplexField &field)
 Add a field to the model.
 
bool has_field (std::string_view field_name) const noexcept
 
virtual Field & get_field ()
 Get a reference to the default primary unknown field.
 

Detailed Description

Phase Field Crystal model for solidification simulations.

Implements single-mode PFC dynamics: ∂ψ/∂t = ∇²[ε·ψ + ψ³ + (1 + ∇²)²ψ]

Where: ψ - density field (deviation from liquid) ε - dimensionless temperature (controls undercooling)

Time integration: Semi-implicit spectral method

  • Linear terms: Exact integration in k-space
  • Nonlinear term: Explicit (forward Euler)

Constructor & Destructor Documentation

◆ PFCModel()

PFCModel::PFCModel ( const World world,
std::unique_ptr< FFT fft,
double  epsilon 
)
inline

Construct PFC model with specified domain.

Parameters
worldPhysical domain geometry
fftFFT engine for spectral transforms
epsilonDimensionless temperature (ε < 0 for undercooling)

Member Function Documentation

◆ get_epsilon()

double PFCModel::get_epsilon ( ) const
inline

Get current epsilon value.

Returns
Dimensionless temperature

◆ initialize()

void PFCModel::initialize ( double  dt)
inlineoverridevirtual

Initialize model: allocate fields and precompute operators.

Parameters
dtTime step size

Implements pfc::Model.

◆ set_epsilon()

void PFCModel::set_epsilon ( double  epsilon)
inline

Set epsilon (for parameter studies)

Parameters
epsilonNew dimensionless temperature

◆ step()

void PFCModel::step ( double  time)
inlineoverridevirtual

Single time step: advance ψ(t) → ψ(t+dt)

Parameters
timeCurrent simulation time (unused in this model)

Implements pfc::Model.


The documentation for this class was generated from the following file: