|
peclet.voro 1.0.4
Device-native moving-particle Voronoi dynamics
|
Rung A3: interfacial (surface-tension) energy between cells of different species on the published view, with its exact gradient — no cell reconstruction. More...
#include <Kokkos_Core.hpp>#include "peclet/voro/energy/route.hpp"#include "peclet/voro/tessellation_view.hpp"

Go to the source code of this file.
Namespaces | |
| namespace | peclet |
| namespace | peclet::voro |
| Device-native Voronoi tessellation, geometry and finite-volume physics. | |
| namespace | peclet::voro::energy |
Functions | |
| template<class Real , class Policy = Voronoi, class Sdf = NoSdf> | |
| Real | peclet::voro::energy::interfaceEnergyForce (const TessellationView< Real > &view, const Kokkos::View< int *, peclet::core::MemSpace > &types, const Kokkos::View< Real *, peclet::core::MemSpace > &tension, int nTypes, const Kokkos::View< Real *, peclet::core::MemSpace > &pos, const Kokkos::View< Real *, peclet::core::MemSpace > &weight, Real L, const Kokkos::View< Real *, peclet::core::MemSpace > &force, const Kokkos::View< Real *, peclet::core::MemSpace > &forceW={}, const Sdf &sdf=Sdf{}) |
Rung A3: interfacial (surface-tension) energy between cells of different species on the published view, with its exact gradient — no cell reconstruction.
E = Σ_{facets (i,j), t_i != t_j} σ(t_i, t_j) A_ij (each interface counted once)
Per cell the energy is taken as ½ σ A per interface facet (both cells see it), and the gradient uses the facet-edge area Jacobians the build publishes (withAreaGrad): a facet's area depends on its own plane and on the planes of the facets it shares an edge with, so g_l = Σ_{interface facets f} ½ σ_f ∂A_f/∂n_l over the cell's facets l, then routed to the DOFs by energy/route.hpp (Voronoi or Power chain; wall planes through the seed-foot chain). The tension table is row-major nTypes × nTypes and must be symmetric.