OpenPFC  0.1.4
Phase Field Crystal simulation framework
Loading...
Searching...
No Matches
14_custom_field_initializer.cpp File Reference

Example: Custom field initialization patterns. More...

#include <cmath>
#include <iostream>
#include <openpfc/openpfc.hpp>
Include dependency graph for 14_custom_field_initializer.cpp:

Classes

struct  my_project::VortexPattern
 Lamb-Oseen vortex pattern. More...
 
struct  my_project::GaussianBump
 3D Gaussian bump More...
 
struct  my_project::CheckerboardPattern
 3D checkerboard pattern More...
 

Namespaces

namespace  my_project
 

Functions

double evaluate_vortex (const my_project::VortexPattern &pattern, const Real3 &pos)
 Evaluate vortex pattern at given position.
 
double evaluate_gaussian (const my_project::GaussianBump &pattern, const Real3 &pos)
 Evaluate Gaussian bump at given position.
 
double evaluate_checkerboard (const my_project::CheckerboardPattern &pattern, const Real3 &pos)
 Evaluate checkerboard at given position.
 
void example_vortex_pattern ()
 
void example_gaussian_bump ()
 
void example_checkerboard ()
 
int main ()
 

Variables

constexpr double M_PI = 3.14159265358979323846
 

Detailed Description

Example: Custom field initialization patterns.

This example demonstrates how to create custom field initialization patterns using simple structs and evaluation functions. We show three physical patterns:

  1. Lamb-Oseen Vortex - Rotating fluid vortex with viscous core
  2. Gaussian Bump - Localized concentration or temperature field
  3. Checkerboard - Periodic alternating pattern

Key Concept: Struct-Based Patterns

Instead of inheritance hierarchies, we use simple structs with public data. This follows OpenPFC's "structs + free functions" philosophy.

Integration with OpenPFC

For full integration with DiscreteField/World APIs using ADL, see:

This simplified example focuses on the pattern concept itself.

Function Documentation

◆ evaluate_checkerboard()

double evaluate_checkerboard ( const my_project::CheckerboardPattern pattern,
const Real3 &  pos 
)

Evaluate checkerboard at given position.

Parameters
patternThe checkerboard configuration
posPhysical position to evaluate at
Returns
High or low value depending on position

◆ evaluate_gaussian()

double evaluate_gaussian ( const my_project::GaussianBump pattern,
const Real3 &  pos 
)

Evaluate Gaussian bump at given position.

Parameters
patternThe Gaussian configuration
posPhysical position to evaluate at
Returns
Field value at position

◆ evaluate_vortex()

double evaluate_vortex ( const my_project::VortexPattern pattern,
const Real3 &  pos 
)

Evaluate vortex pattern at given position.

Parameters
patternThe vortex configuration
posPhysical position to evaluate at
Returns
Tangential velocity at position