Skip to main content

Solid-Mechanics

The SolidExtensions class provides solid mechanics calculations centred on the Euler–Bernoulli beam equation EIu=qEI u^{\prime\prime\prime\prime} = q, plus Hooke's law, second moment of area, the flexure formula, and analytical beam deflections.

Namespace: CSharpNumerics.Physics.SolidMechanics

🔩 Stress & Strain (Hooke's Law)

FormulaMethodDescription
σ=F/A\sigma = F/ANormalStressAxial stress
ε=σ/E\varepsilon = \sigma/ENormalStrainAxial strain
σ=Eε\sigma = E\varepsilonHookesLawHooke's law
τ=V/A\tau = V/AShearStressAverage shear stress
G=E/2(1+ν)G = E / 2(1+\nu)ShearModulusShear modulus
double sigma = force.NormalStress(area);        // σ = F/A
double eps = sigma.NormalStrain(200e9); // ε = σ/E (steel)
double G = (200e9).ShearModulus(0.3); // ≈ 76.9 GPa

📐 Second Moment of Area

Cross-SectionFormulaMethod
Solid rectangleI=bh3/12I = bh^3/12RectangularSecondMoment
Solid circleI=πr4/4I = \pi r^4/4CircularSecondMoment
Hollow tubeI=π(R4r4)/4I = \pi(R^4 - r^4)/4TubularSecondMoment
double I_rect = (0.10).RectangularSecondMoment(0.10);  // 8.33e-6 m⁴
double I_circ = (0.05).CircularSecondMoment(); // 4.91e-7 m⁴
double I_tube = (0.05).TubularSecondMoment(0.04); // hollow tube

📏 Euler–Bernoulli Beam Equation

EId4udx4=q(x)EI \frac{d^4 u}{dx^4} = q(x)

RelationMethodDescription
M=EIκM = EI\kappaBendingMomentMoment from curvature
σ=My/I\sigma = My/IBendingStressFlexure formula
V=EIuV = EI u'''BeamShearForceShear from 3rd derivative
q=EIuq = EI u''''BeamLoadIntensityLoad from 4th derivative
r=EId4u/dx4qr = EI d^4u/dx^4 - qEulerBernoulliResidualFD residual via Biharmonic1D
double M     = E.BendingMoment(I, curvature);          // M = EIκ
double sigma = M.BendingStress(y: 0.05, I); // σ = My/I
double q = E.BeamLoadIntensity(I, d4u); // q = EIu⁗

// Discrete residual (should ≈ 0 for correct deflection)
var residual = u.EulerBernoulliResidual(E * I, dx, qVector);

📉 Analytical Beam Deflections

CaseMax DeflectionMethod
Cantilever + point load Pδ=PL3/3EI\delta = PL^3 / 3EICantileverPointLoadMaxDeflection
Cantilever + uniform qδ=qL4/8EI\delta = qL^4 / 8EICantileverUniformLoadMaxDeflection
Simply supported + uniform qδ=5qL4/384EI\delta = 5qL^4 / 384EISimplySupportedUniformLoadMaxDeflection
Simply supported + midpoint Pδ=PL3/48EI\delta = PL^3 / 48EISimplySupportedPointLoadMaxDeflection

Full deflection curves are also available: CantileverPointLoadDeflection(P, L, EI, x), etc.

// Steel cantilever: 10×10 cm, 1 m, 1 kN tip load
double EI = 200e9 * (0.10).RectangularSecondMoment(0.10);
double max = (1000.0).CantileverPointLoadMaxDeflection(1.0, EI); // PL³/(3EI)

// Deflection curve
for (double x = 0; x <= 1.0; x += 0.1)
Console.WriteLine($"x={x:F1} u={1000.0.CantileverPointLoadDeflection(1.0, EI, x):E3} m");