|
| void | Begin (double length) |
| |
| void | Add (const Eigen::Vector3d ¢re, const Eigen::Vector3d &axis) |
| |
|
void | Build () |
| | Finds the Gauss points from the elements added.
|
| |
|
int | NumElements () const |
| | The number of elements in the chain.
|
| |
|
int | NumPoints () const |
| | The number of points: two per element.
|
| |
|
const Eigen::Vector3d & | Position (int point) const |
| | The position of point point [m], NED.
|
| |
| void | AppendPositions (std::vector< double > &points) const |
| |
| void | QueryWater (const environment::wake::ElementFlowInteraction &flow, double T, int firstPoint) |
| |
| EndWater | WaterOf (int element) const |
| |
The two Gauss points of every element of a chain, and the water at them.
Fill it with Begin, Add (once per element, in chain order) and Build; then QueryWater. The buffers keep their size from call to call, so a chain of fixed length allocates nothing after the first call.
Element i has the points 2 i (at s = −a along its axis) and 2 i + 1 (at s = +a), a = L / (2 √3), the points of the two-point Gauss rule that the drag is integrated with (owner ruling 2026-10-29; before, the water was queried at the joints and interpolated). Each point is queried once per evaluation, and the wakes of other objects are taken at the same points (AppendPositions, in PreOdeFcn), so that the held wake of point p is the one a live query there gives: element i of the chain is point firstPoint + 2 i + end.
| EndWater wet_cylinder_water::ElementGaussPoints::WaterOf |
( |
int |
element | ) |
const |
|
inline |
The water of element element after QueryWater, in the form of environment::wet_cylinder::GaussPointDragLoad.
The law interpolates linearly from two end values and reads the result at the Gauss points, so the ends are the straight line through the two Gauss-point samples u− and u+, extended to ±L/2: mean ∓ slope L/2 with slope = (u+ − u−) / (2 a). The law then reads u− and u+ back exactly, and Mean() (the water at the centre for everything but the drag) is their mean.