flippy
a c++20 package for dynamically triangulated membrane simulations.
Loading...
Searching...
No Matches
fp Namespace Reference

Namespaces

namespace  implementation
 

Classes

struct  BondFlipData
 A helper struct; keeps track of bond flips. More...
 
class  DynamicDisplacementUpdater
 
struct  Geometry
 A helper struct. Used by the triangulation class to pass data around in one convenient package. More...
 
class  MonteCarloUpdater
 A helper class for updating the triangulation, using Metropolis–Hastings algorithm. This is a high-level interface intended to implement a basic Monte-Carlo updating scheme, which should be sufficient for a lot of simple situations. More...
 
struct  Neighbors
 
struct  Node
 A data structure containing all geometric and topological information associated with a node. More...
 
struct  Nodes
 Data structure containing all nodes of the Triangulation. More...
 
class  Triangulation
 Implementation of Triangulation of two-dimensional surfaces in 3D. More...
 
class  vec3
 Internal implementation of a 3D vector. More...
 

Concepts

concept  floating_point_number
 Here we implement the concepts of a floating point number.
 
concept  indexing_number
 Here we implement the concepts of a positive integer number that is used throughout the code for indexing.
 
concept  Container
 

Typedefs

using Index = unsigned int
 
using Real = double
 
using Json = nlohmann::json
 shortening of the nlohmann::json namespace, which is an external open source library bundled by flippy.
 

Functions

static Real operator""_r (long double value)
 
static Real operator""_r (unsigned long long value)
 
static Real sphere_vol (Real R)
 
static Real sphere_area (Real R)
 
static Real linear_adaptation (Real x, Real x_init, Real x_fin, Real val_init, Real val_fin)
 
static Index steps_for_fixed_speed_adaptation (Real x_init, Real val_init, Real val_fin, Real delta_val)
 
static Real min_radius_with_non_overlapping_beads (Real min_allowed_distance_between_bead_centers, Index sub_triangulation_iteration_count)
 N_node=12+30*n+20*n*(n-1)/2 where n is the same as sub_triangulation_iteration_count.
 
static Real node_curvature_squared (Node const &node)
 
static Real node_unit_bending_energy (Node const &node)
 
static Real changed_neighborhood_bending_energy (Node const &node, fp::Nodes const &nodes, std::vector< Index >const &changed_neighborhood)
 
static void json_dump (std::string const &file_name, const Json &data)
 Simple wrapper function around Json objects built in dump() method.
 
static Json json_read (std::string file_name)
 Simple wrapper function that reads the content of a text file into a json object.
 
template<typename T >
static bool is_member (std::vector< T > const &v, T const &el)
 Convenient wrapper around std::find, which only works for std::vectors.
 

Variables

static constexpr auto PI = static_cast<Real>(3.14159265358979323846264338327950288)
 
static constexpr auto VERY_LARGE_NUMBER_ = static_cast<Index>(LONG_LONG_MAX)
 Literal for a very large integral number.
 
static constexpr int BOND_DONATION_CUTOFF = 4
 a node needs to have more than the cutoff number of bonds to be allowed to donate one
 

Detailed Description

flippy's namespace.

Function Documentation

◆ node_curvature_squared()

static Real fp::node_curvature_squared ( Node const & node)
staticnodiscard

unit_bending_energy corresponds to the Helfrich bending energy with bending rigidity 1 and gaussian bending stiffness 0.

\[ \mathrm{unit\_bending\_energy} = \frac{1}{2} A_{\mathrm{node}} (2 H_{node})^2 \]

where \( H_{node} \) is the mean curvature of the node given by:

\[ H_{node}^2 = \frac{\vec{K}_{node}}{2A_{node}} \cdot \frac{\vec{K}_{node}}{2A_{node}} \]

, with \( \vec{K} \) denoting the Node::curvature_vector.

See also
Node::curvature_vec Triangulation::update_bulk_node_geometry(Index)

(static_cast<Real>(4.f)*A*A);

Here is the call graph for this function:

◆ node_unit_bending_energy()

static Real fp::node_unit_bending_energy ( Node const & node)
staticnodiscard

unit_bending_energy corresponds to the Helfrich bending energy with bending rigidity 1 and gaussian bending stiffness 0.

\[ \mathrm{unit\_bending\_energy} = \frac{1}{2} A_{\mathrm{node}} (2 H_{node})^2 \]

where \( H_{node} \) is the mean curvature of the node given by:

\[ H_{node}^2 = \frac{\vec{K}_{node}}{2A_{node}} \cdot \frac{\vec{K}_{node}}{2A_{node}} \]

, with \( \vec{K} \) denoting the Node::curvature_vector.

See also
Node::curvature_vec Triangulation::update_bulk_node_geometry(Index)
Here is the call graph for this function: