#ifndef BEAM_HPP #define BEAM_HPP #include #include #include #include struct RectangularBeamDimensions { float b; float h; RectangularBeamDimensions(const float &width, const float &height) : b(width), h(height) { assert(width > 0 && height > 0); } RectangularBeamDimensions() : b(1), h(1) {} }; struct CylindricalBeamDimensions { float od; // Cylinder outside diameter float id; // Cylinder inside diameter // https://www.engineeringtoolbox.com/area-moment-inertia-d_1328.html CylindricalBeamDimensions(const float &outsideDiameter, const float &insideDiameter) : od(outsideDiameter), id(insideDiameter) { assert(outsideDiameter > 0 && insideDiameter > 0 && outsideDiameter > insideDiameter); } CylindricalBeamDimensions() : od(0.03), id(0.026) {} }; struct ElementMaterial { float poissonsRatio; float youngsModulusGPascal; ElementMaterial(const float &poissonsRatio, const float &youngsModulusGPascal) : poissonsRatio(poissonsRatio), youngsModulusGPascal(youngsModulusGPascal) { assert(poissonsRatio <= 0.5 && poissonsRatio >= -1); } ElementMaterial() : poissonsRatio(0.3), youngsModulusGPascal(200) {} }; #endif // BEAM_HPP