53enum class SolidityModel
60const SolidityModel kDefaultSolidityModel = SolidityModel::MeshOpening;
63const double kDefaultKnotFactor = 1.0;
71inline bool ParseSolidityModel(
const std::string& name, SolidityModel& model)
73 if (name ==
"Fixed") {
74 model = SolidityModel::Fixed;
77 if (name ==
"MeshOpening") {
78 model = SolidityModel::MeshOpening;
94T MeshOpeningSolidity(
double knotFactor,
double twineThickness,
double barLength,
const T& meshOpeningAngle)
99 return knotFactor * twineThickness / (barLength * sin(meshOpeningAngle) * cos(meshOpeningAngle));
105 SolidityModel
model = kDefaultSolidityModel;
119T Solidity(
const PanelSolidity& rule,
double twineThickness,
double barLength,
const T& meshOpeningAngle)
121 if (rule.
model == SolidityModel::Fixed) {
122 return T(rule.
fixed);
124 return MeshOpeningSolidity(rule.
knotFactor, twineThickness, barLength, meshOpeningAngle);
143inline double CylinderSolidity(
double twineThickness,
double barLength,
double meshOpeningAngle)
145 const double coverage = twineThickness / (barLength * std::abs(std::sin(2 * meshOpeningAngle)));
146 if (!(coverage < 1.0))
148 return coverage * (2.0 - coverage);
162inline double WakeSolidity(
const PanelSolidity& rule,
double twineThickness,
double barLength,
double meshOpeningAngle)
164 if (rule.model == SolidityModel::Fixed)
166 return CylinderSolidity(twineThickness, barLength, meshOpeningAngle);
The solidity rule of one panel.
Definition NetSolidity.h:104
SolidityModel model
Which rule applies.
Definition NetSolidity.h:105
double fixed
Sₙ for Fixed, dimensionless.
Definition NetSolidity.h:106
double knotFactor
K for MeshOpening.
Definition NetSolidity.h:107