Browse Source

feat: volume integration based on double integrator_t::calculate

feat-integrator
mckay 2 weeks ago
parent
commit
4735fcbe2d
  1. 1
      frontend/src/implicit_surface_network_solver.cpp
  2. 7
      surface_integral/interface/subface_integrator.hpp

1
frontend/src/implicit_surface_network_solver.cpp

@ -22,6 +22,7 @@ void implicit_network_solver::generate_polymesh(stl_vector_mp<Eigen::Vector3d>&
auto integrator = internal::integrator_t(m_blobtree->subfaces, output_parameteric_planes);
double area = integrator.calculate(4, internal::area_integrand);
double volume = integrator.calculate(4, internal::volume_integrand);
std::cout << "Generated mesh area: " << area << std::endl;

7
surface_integral/interface/subface_integrator.hpp

@ -85,5 +85,12 @@ double area_integrand(double u, double v, const Eigen::Vector3d& p, const Eigen:
return 1.0;
}
// Integrate (1/3) * r · n dA over all subfaces
double volume_integrand(double u, double v, const Eigen::Vector3d& p, const Eigen::Vector3d& dU, const Eigen::Vector3d& dV)
{
Eigen::Vector3d cross = dU.cross(dV);
return (p.dot(cross)) / 3.0; // (1/3) * (x dydz + y dzdx + z dxdy)
};
} // namespace internal
Loading…
Cancel
Save