48#include "hydrodynamics/CompositeShape.hpp"
50#include "hydrodynamics/HydrodynamicsModel.hpp"
52#include "utils/simError.h"
56 CompositeShape::CompositeShape() { origin_ = V3Zero; }
58 CompositeShape::~CompositeShape() { Utils::deletePointers(shapes_); }
60 bool CompositeShape::isInterior(Vector3d pos) {
62 std::vector<Shape*>::iterator iter;
63 for (iter = shapes_.begin(); iter != shapes_.end(); ++iter) {
64 if ((*iter)->isInterior(pos)) {
73 template<
class Cont,
class Predict>
74 void swap_if(Cont& b1, Cont& b2, Predict predict) {
75 unsigned int size = b1.size();
76 assert(size == b2.size());
77 for (
unsigned int i = 0; i < size; ++i) {
78 if (predict(b1[i], b2[i])) std::swap(b1[i], b2[i]);
82 std::pair<Vector3d, Vector3d> CompositeShape::getBoundingBox() {
83 std::vector<Shape*>::iterator iter = shapes_.begin();
84 std::pair<Vector3d, Vector3d> boundary = (*iter)->getBoundingBox();
85 for (++iter; iter != shapes_.end(); ++iter) {
86 std::pair<Vector3d, Vector3d> currBoundary = (*iter)->getBoundingBox();
87 swap_if(boundary.first, currBoundary.first, std::greater<RealType>());
88 swap_if(boundary.second, currBoundary.second, std::less<RealType>());
94 HydroProp* CompositeShape::getHydroProp(RealType viscosity) {
95 HydroProp* props =
new HydroProp();
96 props->setCenterOfResistance(V3Zero);
97 snprintf(painCave.errMsg, MAX_SIM_ERROR_MSG_LENGTH,
98 "CompositeShape was asked to return an analytic HydroProps.\n");
99 painCave.severity = OPENMD_ERROR;
100 painCave.isFatal = 1;
Container for information about the hydrodynamic behavior of objects interacting with surroundings.
This basic Periodic Table class was originally taken from the data.cpp file in OpenBabel.