1#ifndef PHYTH_VOLUME_SOURCE_HPP
2#define PHYTH_VOLUME_SOURCE_HPP
173 const int nx,
const int ny,
const int nz)
const {
180 for (
int i = 0;
i <
nx; ++
i) {
181 for (
int j = 0;
j <
ny; ++
j) {
182 for (
int k = 0;
k <
nz; ++
k) {
189 const auto dist =
r.Length();
215 const int nx,
const int ny,
const int nz)
const {
222 for (
int i = 0;
i <
nx; ++
i) {
223 for (
int j = 0;
j <
ny; ++
j) {
224 for (
int k = 0;
k <
nz; ++
k) {
231 const auto dist =
r.Length();
Abstract base class for all charge distributions.
Uniform volume charge distribution in a rectangular box.
Quantity< CoulombPerCubicMeter > rho_
Quantity< CoulombPerCubicMeter > GetChargeDensityAt(const Vector3< Quantity< Meter > > &point) const override
Get the charge density at a point.
VolumeCharge(const Vector3< Quantity< Meter > > ¢er, const Vector3< Scalar > &axis_x, const Vector3< Scalar > &axis_y, const Vector3< Scalar > &axis_z, const Quantity< Meter > size_x, const Quantity< Meter > size_y, const Quantity< Meter > size_z, const Quantity< CoulombPerCubicMeter > rho)
Construct a rectangular volume charge.
Quantity< Coulomb > GetTotalChargeValue() const override
Get the total charge of the volume.
Vector3< Scalar > axis_y_
Vector3< Quantity< Meter > > center_
Quantity< Meter > GetMinimumDistanceTo(const Vector3< Quantity< Meter > > &point) const override
Get the minimum distance from a point to the rectangular box.
Quantity< Meter > size_z_
Vector3< Quantity< NewtonPerCoulomb > > GetElectricFieldAt(const Vector3< Quantity< Meter > > &point) const override
Compute the electric field at a point using numerical integration.
Quantity< Meter > size_y_
Quantity< Meter > size_x_
Vector3< Quantity< NewtonPerCoulomb > > NumericalIntegrateField(const Vector3< Quantity< Meter > > &point, const int nx, const int ny, const int nz) const
Numerical integration of electric field over the volume.
Quantity< Volt > GetElectricPotentialAt(const Vector3< Quantity< Meter > > &point) const override
Compute the electric potential at a point using numerical integration.
Quantity< Volt > NumericalIntegratePotential(const Vector3< Quantity< Meter > > &point, const int nx, const int ny, const int nz) const
Numerical integration of electric potential over the volume.
Vector3< Scalar > axis_z_
Vector3< Scalar > axis_x_
auto abs(Quantity< UnitT > q)
Absolute value of a quantity.
Quantity< UnitT > clamp(Quantity< UnitT > x, Quantity< UnitT > min, Quantity< UnitT > max)
Clamp a quantity between min and max bounds.
Physical quantity with a value and a compile-time unit.
3D vector with Quantity components