1#ifndef PHYTH_SURFACE_FORCE_HPP
2#define PHYTH_SURFACE_FORCE_HPP
162 for (
int i = 0;
i <
nu; ++
i) {
163 for (
int j = 0;
j <
nv; ++
j) {
169 const auto R_mag =
R.Length();
181 for (
int m = 0;
m < 3; ++
m) {
182 for (
int n = 0;
n < 3; ++
n) {
Linear elastic isotropic material model.
Scalar GetPoissonRatio() const
Get Poisson's ratio.
Abstract base class for all force/traction distributions.
Uniform surface traction on a rectangular patch.
Matrix3x3< Quantity< Pascal > > NumericalIntegrateStress(const Vector3< Quantity< Meter > > &point, const int nu, const int nv) const
Numerical integration of stress over the surface.
Vector3< Quantity< Meter > > center_
Matrix3x3< Quantity< Pascal > > GetStressAt(const Vector3< Quantity< Meter > > &point) const override
Compute stress tensor at a point using numerical integration.
Vector3< Quantity< Newton > > GetForceAt(const Vector3< Quantity< Meter > > &point) const override
Get the force vector at a point.
IsotropicMaterial material_
Vector3< Quantity< Newton > > GetTotalForce() const override
Get the total force of this source.
Vector3< Scalar > u_axis_
Vector3< Quantity< Pascal > > traction_
Vector3< Quantity< Pascal > > GetTraction() const
Get the traction vector.
Vector3< Scalar > v_axis_
Quantity< Meter > GetMinimumDistanceTo(const Vector3< Quantity< Meter > > &point) const override
Get the minimum distance from a point to the rectangular surface.
void SetTraction(const Vector3< Quantity< Pascal > > &traction)
Set the traction vector.
SurfaceForce(const Vector3< Quantity< Meter > > ¢er, const Vector3< Scalar > &u_axis, const Vector3< Scalar > &v_axis, const Quantity< Meter > width, const Quantity< Meter > height, const Vector3< Quantity< Pascal > > &traction, const IsotropicMaterial &material) noexcept
Construct a rectangular surface traction.
Quantity< Meter > height_
auto abs(Quantity< UnitT > q)
Absolute value of a quantity.
3x3 matrix with Quantity components
Physical quantity with a value and a compile-time unit.
3D vector with Quantity components