|
flippy
a c++20 package for dynamically triangulated membrane simulations.
|
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 | |
flippy's namespace.
|
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.
(static_cast<Real>(4.f)*A*A);

|
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.
