[{"id":"sample-statistics","name":"Repeated Measurement Statistics","category":"Measurement & Control","description":"Calculate mean, median, sample standard deviation and standard error from repeated readings in the same unit.","endpoint":"/api/statistics/sample","inputs":[{"name":"values","type":"number[]","unit":"reading unit","required":true,"defaultValue":[10,12,14,16,18]}],"outputs":[{"id":"count","label":"Number of readings","unit":""},{"id":"mean","label":"Arithmetic mean","unit":"reading unit"},{"id":"median","label":"Median","unit":"reading unit"},{"id":"minimum","label":"Minimum","unit":"reading unit"},{"id":"maximum","label":"Maximum","unit":"reading unit"},{"id":"range","label":"Range","unit":"reading unit"},{"id":"sampleVariance","label":"Sample variance","unit":"reading unit²"},{"id":"sampleStandardDeviation","label":"Sample standard deviation s","unit":"reading unit"},{"id":"standardError","label":"Standard error of the mean s/√n","unit":"reading unit"},{"id":"degreesOfFreedom","label":"Sample variance degrees of freedom","unit":""}],"assumptions":["All readings have equal weight and use the same unit. Mean = Σx/n; sample variance = Σ(x − mean)²/(n − 1). Median is the middle ordered reading, or the average of the middle pair.","Interpreting s/√n as Type A standard uncertainty of the mean requires independent observations obtained under the same measurement conditions. Independence is not tested here. Drift, correlated readings and changing conditions require a suitable measurement model.","Sample standard deviation describes observed spread; standard error describes the estimated spread of the mean under the stated assumptions. No confidence interval, outlier removal, normality test or calibration uncertainty is supplied. Identical readings do not prove zero total measurement uncertainty.","Uses shifted, compensated sums and scaled deviations. Decimal input is stored as floating-point numbers; digits lost on input cannot be recovered. Numerical overflow or underflow is rejected. Limit: 2–1,000 readings."],"sources":[{"title":"NIST Engineering Statistics Handbook: Run-sequence plot","url":"https://www.itl.nist.gov/div898/handbook/eda/section3/runseqpl.htm","accessed":"2026-09-08"},{"title":"NIST: Evaluating uncertainty components, Type A","url":"https://physics.nist.gov/cuu/Uncertainty/typea.html","accessed":"2026-09-08"},{"title":"NIST: Univariate Summary Statistics, numerical accuracy","url":"https://www.nist.gov/itl/sed/statistical-reference-datasets/strd-background-information/univariate-summary-statistics","accessed":"2026-09-08"},{"title":"NIST StRD NumAcc1: benchmark data and exact results","url":"https://www.itl.nist.gov/div898/strd/univ/addinfo/numacc1.html","accessed":"2026-09-08"}]},{"id":"thermal-transport-numbers","name":"Reynolds, Prandtl and Péclet Numbers","description":"Calculate dimensionless transport groups and diffusivities from fluid properties, a speed and a characteristic length. Defaults are an illustrative property set, not a certified fluid state.","category":"Thermal","endpoint":"/api/thermal/transport-numbers","inputs":[{"name":"density","type":"number","unit":"kg/m³","required":true,"defaultValue":"1000"},{"name":"viscosity","type":"number","unit":"Pa·s","required":true,"defaultValue":"0.001"},{"name":"specificHeat","type":"number","unit":"J/(kg·K)","required":true,"defaultValue":"4000"},{"name":"conductivity","type":"number","unit":"W/(m·K)","required":true,"defaultValue":"0.5"},{"name":"speed","type":"number","unit":"m/s","required":true,"defaultValue":"1"},{"name":"length","type":"number","unit":"m","required":true,"defaultValue":"0.01"}],"outputs":[{"id":"kinematicViscosity","label":"Kinematic viscosity (momentum diffusivity)","unit":"m²/s","significantDigits":8},{"id":"thermalDiffusivity","label":"Thermal diffusivity","unit":"m²/s","significantDigits":8},{"id":"reynoldsNumber","label":"Reynolds number Re","unit":"","significantDigits":8},{"id":"prandtlNumber","label":"Prandtl number Pr","unit":"","significantDigits":8},{"id":"pecletNumber","label":"Thermal Péclet number Pe","unit":"","significantDigits":8}],"sources":[{"title":"NASA Glenn: Reynolds number and kinematic viscosity","url":"https://www.grc.nasa.gov/WWW/k-12/airplane/reynolds.html","accessed":"2026-09-08"},{"title":"MIT Unified Engineering: Prandtl number and thermal diffusivity, equation 17.7","url":"https://web.mit.edu/16.unified/www/FALL/thermodynamics/notes/node122.html","accessed":"2026-09-08"},{"title":"Idaho National Laboratory MOOSE: Péclet number UL/alpha (cell-length application)","url":"https://mooseframework.inl.gov/source/auxkernels/PecletNumberFunctorAux.html","accessed":"2026-09-08"}],"assumptions":["Calculate dimensionless transport groups and diffusivities from fluid properties, a speed and a characteristic length. Defaults are an illustrative property set, not a certified fluid state.","Supply positive scalar properties for the same fluid and evaluation state. Dynamic viscosity μ is in Pa·s, not cP or m²/s; specific heat cp is in J/(kg·K), not kJ/(kg·K). This tool does not evaluate properties from temperature or pressure.","Kinematic viscosity ν = μ/ρ and thermal diffusivity α = k/(ρ cp), both in m²/s. Prandtl number Pr = ν/α = μ cp/k compares momentum and thermal diffusion.","Reynolds number Re = UL/ν. Choose the speed and length required by your intended model, such as bulk speed and inside diameter for a circular pipe. A plate length, hydraulic diameter and computational-cell size are different choices and are not automatically interchangeable.","Thermal Péclet number Pe = UL/α = Re × Pr when the same speed and length are used. It compares advection and thermal diffusion on those scales. This is not a mass-transfer Péclet number; that uses a mass diffusivity instead.","Zero speed gives Re = Pe = 0 while the material diffusivities and Pr remain defined. No universal laminar/turbulent classification, Nusselt correlation, heat-transfer coefficient or boundary-layer thickness is inferred. Match geometry, boundary conditions, property evaluation and validity range when selecting a correlation."]},{"id":"measurement-uncertainty","name":"Two-Input Measurement Uncertainty","description":"Propagate two input standard uncertainties through addition, subtraction, multiplication or division. Standard uncertainty is expressed as a standard deviation; do not enter a tolerance bound or expanded uncertainty unchanged.","category":"Measurement & Control","endpoint":"/api/controls/measurement-uncertainty","inputs":[{"name":"operation","type":"select","unit":"","required":true,"defaultValue":"2","options":[{"value":"0","label":"A + B"},{"value":"1","label":"A − B"},{"value":"2","label":"A × B"},{"value":"3","label":"A / B"}]},{"name":"valueA","type":"number","unit":"A unit","required":true,"defaultValue":"10"},{"name":"valueB","type":"number","unit":"B unit","required":true,"defaultValue":"2"},{"name":"uncertaintyA","type":"number","unit":"A unit","required":true,"defaultValue":"0.1"},{"name":"uncertaintyB","type":"number","unit":"B unit","required":true,"defaultValue":"0.02"},{"name":"correlation","type":"number","unit":"−1 to 1","required":true,"defaultValue":"0"},{"name":"coverageFactor","type":"number","unit":"","required":true,"defaultValue":"2"}],"outputs":[{"id":"estimate","label":"Output estimate","unit":"output unit","significantDigits":8},{"id":"sensitivityA","label":"Sensitivity to A","unit":"output unit / A unit","significantDigits":8},{"id":"sensitivityB","label":"Sensitivity to B","unit":"output unit / B unit","significantDigits":8},{"id":"standardUncertainty","label":"Combined standard uncertainty","unit":"output unit","significantDigits":8},{"id":"relativeStandardUncertainty","label":"Relative standard uncertainty","unit":"%","significantDigits":8},{"id":"coverageFactor","label":"Coverage factor k","unit":"","significantDigits":8},{"id":"expandedUncertainty","label":"Expanded uncertainty U","unit":"output unit","significantDigits":8},{"id":"lowerEstimate","label":"Estimate minus U","unit":"output unit","significantDigits":8},{"id":"upperEstimate","label":"Estimate plus U","unit":"output unit","significantDigits":8},{"id":"method","label":"Method","unit":""}],"sources":[{"title":"NIST TN 1297 Appendix A: Law of Propagation of Uncertainty","url":"https://www.nist.gov/pml/nist-technical-note-1297/nist-tn-1297-appendix-law-propagation-uncertainty","accessed":"2026-09-08"},{"title":"NIST TN 1297 Section 6: Expanded Uncertainty","url":"https://www.nist.gov/pml/nist-technical-note-1297/nist-tn-1297-6-expanded-uncertainty","accessed":"2026-09-08"}],"assumptions":["Propagate two input standard uncertainties through addition, subtraction, multiplication or division. Standard uncertainty is expressed as a standard deviation; do not enter a tolerance bound or expanded uncertainty unchanged.","Use the same unit for A and B in addition/subtraction. For multiplication the output unit is A-unit × B-unit; for division it is A-unit / B-unit. Enter each absolute standard uncertainty in the same unit as its corresponding estimate. No unit conversion is performed.","Let cA = ∂f/∂A and cB = ∂f/∂B. Combined variance uc² = (cA uA)² + (cB uB)² + 2r cA cB uA uB, where r is the correlation coefficient. A value of zero specifies uncorrelated inputs; it is not inferred from the data.","Sensitivities are (1, 1) for a sum, (1, −1) for a difference, (B, A) for a product and (1/B, −A/B²) for a quotient. This is first-order propagation; nonlinear effects can matter for products and ratios, especially with a denominator near zero. A zero first-order result does not prove zero uncertainty for a nonlinear model. No Monte Carlo propagation, distribution or degrees-of-freedom estimate is provided.","Expanded uncertainty U = k uc. The displayed estimate ± U does not have an automatically assigned confidence level. Choosing k = 2 alone does not establish 95% coverage. Relative standard uncertainty is 100 uc/|estimate| and is undefined at a zero estimate."]},{"id":"wet-steam-properties","name":"Wet Steam Mixture Properties","description":"Pure water at liquid–vapor equilibrium, using absolute pressure in Pa. The range is 611.657 Pa through pressures strictly below 22064000 Pa. Quality is undefined at the critical point; numerically unresolved phase boundaries are rejected.","category":"Thermal","endpoint":"/api/thermal/wet-steam-properties","inputs":[{"name":"pressure","type":"number","unit":"Pa","required":true,"defaultValue":"101325"},{"name":"quality","type":"number","unit":"kg vapor / kg mixture","required":true,"defaultValue":"0.9"}],"outputs":[{"id":"pressure","label":"Absolute saturation pressure","unit":"Pa","significantDigits":9},{"id":"temperature","label":"Saturation temperature","unit":"K","significantDigits":9},{"id":"celsius","label":"Saturation temperature","unit":"°C","significantDigits":9},{"id":"quality","label":"Vapor mass fraction (quality)","unit":"kg vapor / kg mixture","significantDigits":8},{"id":"moisture","label":"Liquid mass fraction (moisture)","unit":"kg liquid / kg mixture","significantDigits":8},{"id":"vaporVolumeFraction","label":"Vapor volume fraction","unit":"m³ vapor / m³ mixture","significantDigits":8},{"id":"specificVolume","label":"Mixture specific volume","unit":"m³/kg","significantDigits":8},{"id":"density","label":"Mixture density","unit":"kg/m³","significantDigits":8},{"id":"enthalpy","label":"Mixture specific enthalpy","unit":"J/kg","significantDigits":8},{"id":"entropy","label":"Mixture specific entropy","unit":"J/(kg·K)","significantDigits":8},{"id":"internalEnergy","label":"Mixture specific internal energy","unit":"J/kg","significantDigits":8},{"id":"liquidEnthalpy","label":"Saturated liquid specific enthalpy","unit":"J/kg","significantDigits":8},{"id":"vaporEnthalpy","label":"Saturated vapor specific enthalpy","unit":"J/kg","significantDigits":8},{"id":"latentHeat","label":"Latent heat of vaporization","unit":"J/kg","significantDigits":8},{"id":"phase","label":"Equilibrium phase","unit":""}],"sources":[{"title":"IAPWS SR1-86(1992): Saturation phase properties","url":"https://iapws.org/public/documents/6dGkr/Supp-sat.pdf","accessed":"2026-09-08"},{"title":"DOE Thermodynamics Volume 1: quality, mixture properties and enthalpy definitions, pages 18, 34 and 49","url":"https://www.energy.gov/sites/default/files/2026-04/DOE-HDBK-1012-92_VOL1.pdf","accessed":"2026-09-08"}],"assumptions":["Pure water at liquid–vapor equilibrium, using absolute pressure in Pa. The range is 611.657 Pa through pressures strictly below 22064000 Pa. Quality is undefined at the critical point; numerically unresolved phase boundaries are rejected.","Saturation temperature and separate liquid/vapor properties use IAPWS SR1-86(1992). The release’s rounded lower pressure endpoint maps to the triple-point temperature. Ice and dissolved substances are excluded.","Quality x is vapor mass divided by total mixture mass. Enter a fraction, such as 0.9 for 90%. Specific volume, enthalpy and entropy are mass-weighted: y = (1 − x)y_liquid + x y_vapor. Density is 1/v, not a mass-weighted average of the two densities.","Vapor volume fraction = x v_vapor / v_mixture. This describes a saturated inventory. It is not a flowing-pipe void-fraction prediction from vapor mass flow fraction; phase slip and flow patterns are not modeled.","Mixture internal energy u = h − pv. Enthalpy and entropy retain the IAPWS reference convention. For the inverse calculation, x = (h − h_liquid)/(h_vapor − h_liquid); values outside the model’s saturated enthalpy interval are rejected rather than clamped. Near-critical inversion is sensitive as the enthalpy gap shrinks."]},{"id":"steam-quality-enthalpy","name":"Steam Quality from Enthalpy","description":"Pure water at liquid–vapor equilibrium, using absolute pressure in Pa. The range is 611.657 Pa through pressures strictly below 22064000 Pa. Quality is undefined at the critical point; numerically unresolved phase boundaries are rejected.","category":"Thermal","endpoint":"/api/thermal/steam-quality-enthalpy","inputs":[{"name":"pressure","type":"number","unit":"Pa","required":true,"defaultValue":"101325"},{"name":"enthalpy","type":"number","unit":"J/kg","required":true,"defaultValue":"2450000"}],"outputs":[{"id":"pressure","label":"Absolute saturation pressure","unit":"Pa","significantDigits":9},{"id":"temperature","label":"Saturation temperature","unit":"K","significantDigits":9},{"id":"celsius","label":"Saturation temperature","unit":"°C","significantDigits":9},{"id":"quality","label":"Vapor mass fraction (quality)","unit":"kg vapor / kg mixture","significantDigits":8},{"id":"moisture","label":"Liquid mass fraction (moisture)","unit":"kg liquid / kg mixture","significantDigits":8},{"id":"vaporVolumeFraction","label":"Vapor volume fraction","unit":"m³ vapor / m³ mixture","significantDigits":8},{"id":"specificVolume","label":"Mixture specific volume","unit":"m³/kg","significantDigits":8},{"id":"density","label":"Mixture density","unit":"kg/m³","significantDigits":8},{"id":"enthalpy","label":"Mixture specific enthalpy","unit":"J/kg","significantDigits":8},{"id":"entropy","label":"Mixture specific entropy","unit":"J/(kg·K)","significantDigits":8},{"id":"internalEnergy","label":"Mixture specific internal energy","unit":"J/kg","significantDigits":8},{"id":"liquidEnthalpy","label":"Saturated liquid specific enthalpy","unit":"J/kg","significantDigits":8},{"id":"vaporEnthalpy","label":"Saturated vapor specific enthalpy","unit":"J/kg","significantDigits":8},{"id":"latentHeat","label":"Latent heat of vaporization","unit":"J/kg","significantDigits":8},{"id":"phase","label":"Equilibrium phase","unit":""}],"sources":[{"title":"IAPWS SR1-86(1992): Saturation phase properties","url":"https://iapws.org/public/documents/6dGkr/Supp-sat.pdf","accessed":"2026-09-08"},{"title":"DOE Thermodynamics Volume 1: quality, mixture properties and enthalpy definitions, pages 18, 34 and 49","url":"https://www.energy.gov/sites/default/files/2026-04/DOE-HDBK-1012-92_VOL1.pdf","accessed":"2026-09-08"}],"assumptions":["Pure water at liquid–vapor equilibrium, using absolute pressure in Pa. The range is 611.657 Pa through pressures strictly below 22064000 Pa. Quality is undefined at the critical point; numerically unresolved phase boundaries are rejected.","Saturation temperature and separate liquid/vapor properties use IAPWS SR1-86(1992). The release’s rounded lower pressure endpoint maps to the triple-point temperature. Ice and dissolved substances are excluded.","Quality x is vapor mass divided by total mixture mass. Enter a fraction, such as 0.9 for 90%. Specific volume, enthalpy and entropy are mass-weighted: y = (1 − x)y_liquid + x y_vapor. Density is 1/v, not a mass-weighted average of the two densities.","Vapor volume fraction = x v_vapor / v_mixture. This describes a saturated inventory. It is not a flowing-pipe void-fraction prediction from vapor mass flow fraction; phase slip and flow patterns are not modeled.","Mixture internal energy u = h − pv. Enthalpy and entropy retain the IAPWS reference convention. For the inverse calculation, x = (h − h_liquid)/(h_vapor − h_liquid); values outside the model’s saturated enthalpy interval are rejected rather than clamped. Near-critical inversion is sensitive as the enthalpy gap shrinks."]},{"id":"water-saturation-pressure","name":"Water Saturation Pressure","description":"Pure water liquid–vapor equilibrium from the triple-point temperature 273.16 K to the critical point 647.096 K. Pressure is absolute, never gauge; temperature input uses kelvin.","category":"Thermal","endpoint":"/api/thermal/water-saturation-pressure","inputs":[{"name":"temperature","type":"number","unit":"K","required":true,"defaultValue":"373.15"}],"outputs":[{"id":"temperature","label":"Saturation temperature","unit":"K","significantDigits":9},{"id":"celsius","label":"Saturation temperature","unit":"°C","significantDigits":9},{"id":"pressure","label":"Absolute saturation pressure","unit":"Pa","significantDigits":9},{"id":"liquidDensity","label":"Saturated liquid density","unit":"kg/m³","significantDigits":8},{"id":"vaporDensity","label":"Saturated vapor density","unit":"kg/m³","significantDigits":8},{"id":"liquidSpecificVolume","label":"Saturated liquid specific volume","unit":"m³/kg","significantDigits":8},{"id":"vaporSpecificVolume","label":"Saturated vapor specific volume","unit":"m³/kg","significantDigits":8},{"id":"liquidEnthalpy","label":"Saturated liquid specific enthalpy","unit":"J/kg","significantDigits":8},{"id":"vaporEnthalpy","label":"Saturated vapor specific enthalpy","unit":"J/kg","significantDigits":8},{"id":"liquidEntropy","label":"Saturated liquid specific entropy","unit":"J/(kg·K)","significantDigits":8},{"id":"vaporEntropy","label":"Saturated vapor specific entropy","unit":"J/(kg·K)","significantDigits":8},{"id":"latentHeat","label":"Latent heat of vaporization","unit":"J/kg","significantDigits":8},{"id":"pressureSlope","label":"Slope of saturation pressure with temperature","unit":"Pa/K","significantDigits":8}],"sources":[{"title":"IAPWS SR1-86(1992): Saturation Properties, equations (1)–(9) and Table 1","url":"https://iapws.org/public/documents/6dGkr/Supp-sat.pdf","accessed":"2026-09-08"}],"assumptions":["Pure water liquid–vapor equilibrium from the triple-point temperature 273.16 K to the critical point 647.096 K. Pressure is absolute, never gauge; temperature input uses kelvin.","Uses IAPWS SR1-86(1992), equation (1), with critical temperature 647.096 K and pressure 22.064 MPa. Pressure-to-temperature conversion numerically inverts the same monotonic correlation.","The lower pressure input limit is the release table’s rounded triple-point pressure, 611.657 Pa. The tiny interval up to the equation’s approximately 611.657070 Pa endpoint maps to 273.16 K. The upper limit is 22064000 Pa.","At 101325 Pa, saturation temperature is approximately 373.1243 K (99.9743 °C). This is equilibrium for pure water, not a boiling-temperature prediction for solutions or transient heating.","At a saturation pair, pressure and temperature do not specify vapor fraction or mixture enthalpy. The two densities and reciprocal specific volumes describe separate saturated phases using IAPWS equations (2) and (3), not mixture density. Enthalpy and entropy use equations (4)–(9) and the release reference convention: liquid internal energy and entropy are zero at the triple point, subject to coefficient rounding. Latent heat is the vapor-minus-liquid enthalpy difference. This tool does not calculate steam quality, superheat or subcooled-liquid properties. At the critical endpoint the distinct liquid and vapor phases merge."]},{"id":"water-saturation-temperature","name":"Water Saturation Temperature","description":"Pure water liquid–vapor equilibrium from the triple-point temperature 273.16 K to the critical point 647.096 K. Pressure is absolute, never gauge; temperature input uses kelvin.","category":"Thermal","endpoint":"/api/thermal/water-saturation-temperature","inputs":[{"name":"pressure","type":"number","unit":"Pa","required":true,"defaultValue":"101325"}],"outputs":[{"id":"temperature","label":"Saturation temperature","unit":"K","significantDigits":9},{"id":"celsius","label":"Saturation temperature","unit":"°C","significantDigits":9},{"id":"pressure","label":"Absolute saturation pressure","unit":"Pa","significantDigits":9},{"id":"liquidDensity","label":"Saturated liquid density","unit":"kg/m³","significantDigits":8},{"id":"vaporDensity","label":"Saturated vapor density","unit":"kg/m³","significantDigits":8},{"id":"liquidSpecificVolume","label":"Saturated liquid specific volume","unit":"m³/kg","significantDigits":8},{"id":"vaporSpecificVolume","label":"Saturated vapor specific volume","unit":"m³/kg","significantDigits":8},{"id":"liquidEnthalpy","label":"Saturated liquid specific enthalpy","unit":"J/kg","significantDigits":8},{"id":"vaporEnthalpy","label":"Saturated vapor specific enthalpy","unit":"J/kg","significantDigits":8},{"id":"liquidEntropy","label":"Saturated liquid specific entropy","unit":"J/(kg·K)","significantDigits":8},{"id":"vaporEntropy","label":"Saturated vapor specific entropy","unit":"J/(kg·K)","significantDigits":8},{"id":"latentHeat","label":"Latent heat of vaporization","unit":"J/kg","significantDigits":8},{"id":"pressureSlope","label":"Slope of saturation pressure with temperature","unit":"Pa/K","significantDigits":8}],"sources":[{"title":"IAPWS SR1-86(1992): Saturation Properties, equations (1)–(9) and Table 1","url":"https://iapws.org/public/documents/6dGkr/Supp-sat.pdf","accessed":"2026-09-08"}],"assumptions":["Pure water liquid–vapor equilibrium from the triple-point temperature 273.16 K to the critical point 647.096 K. Pressure is absolute, never gauge; temperature input uses kelvin.","Uses IAPWS SR1-86(1992), equation (1), with critical temperature 647.096 K and pressure 22.064 MPa. Pressure-to-temperature conversion numerically inverts the same monotonic correlation.","The lower pressure input limit is the release table’s rounded triple-point pressure, 611.657 Pa. The tiny interval up to the equation’s approximately 611.657070 Pa endpoint maps to 273.16 K. The upper limit is 22064000 Pa.","At 101325 Pa, saturation temperature is approximately 373.1243 K (99.9743 °C). This is equilibrium for pure water, not a boiling-temperature prediction for solutions or transient heating.","At a saturation pair, pressure and temperature do not specify vapor fraction or mixture enthalpy. The two densities and reciprocal specific volumes describe separate saturated phases using IAPWS equations (2) and (3), not mixture density. Enthalpy and entropy use equations (4)–(9) and the release reference convention: liquid internal energy and entropy are zero at the triple point, subject to coefficient rounding. Latent heat is the vapor-minus-liquid enthalpy difference. This tool does not calculate steam quality, superheat or subcooled-liquid properties. At the critical endpoint the distinct liquid and vapor phases merge."]},{"id":"first-order-response","name":"First-Order Process Response with Delay","description":"EU means engineering unit. Use consistent input/output units; gain is output-unit change divided by input-unit change. This is a stable linear first-order-plus-dead-time process initially at equilibrium, with one sustained step at time zero.","category":"Measurement & Control","endpoint":"/api/controls/first-order-response","inputs":[{"name":"initialValue","type":"number","unit":"output EU","required":true,"defaultValue":"20"},{"name":"gain","type":"number","unit":"output EU / input EU","required":true,"defaultValue":"2"},{"name":"inputStep","type":"number","unit":"input EU","required":true,"defaultValue":"10"},{"name":"timeConstant","type":"number","unit":"s","required":true,"defaultValue":"30"},{"name":"deadTime","type":"number","unit":"s","required":true,"defaultValue":"5"},{"name":"time","type":"number","unit":"s","required":true,"defaultValue":"35"}],"outputs":[{"id":"outputValue","label":"Output at observation time","unit":"output EU","significantDigits":8},{"id":"finalValue","label":"Final equilibrium output","unit":"output EU","significantDigits":8},{"id":"finalChange","label":"Final output change","unit":"output EU","significantDigits":8},{"id":"percentResponse","label":"Completed fraction of final change","unit":"%","significantDigits":8},{"id":"responseRate","label":"Output rate (right-hand value at delay boundary)","unit":"output EU/s","significantDigits":8},{"id":"timeTo90","label":"Time from input step to 90% response","unit":"s","significantDigits":8},{"id":"timeTo95","label":"Time from input step to 95% response","unit":"s","significantDigits":8},{"id":"timeTo98","label":"Time from input step to 98% response","unit":"s","significantDigits":8},{"id":"phase","label":"Response phase","unit":""}],"sources":[{"title":"APMonitor Process Dynamics and Control: First Order Plus Dead Time","url":"https://www.apmonitor.com/pdc/index.php/Main/FirstOrderSystems","accessed":"2026-09-08"}],"assumptions":["EU means engineering unit. Use consistent input/output units; gain is output-unit change divided by input-unit change. This is a stable linear first-order-plus-dead-time process initially at equilibrium, with one sustained step at time zero.","Final change = gain × input step; final output = initial output + final change. Negative gains and steps are allowed.","Before delay θ, output stays at its initial value. At and after θ: y = y_initial + final_change × [1 − exp(−(t − θ)/τ)], with positive time constant τ. At θ + τ, 63.212% of the final change is complete.","After the delay, output rate = (final_change/τ) × exp(−(t − θ)/τ). At the delay boundary the tool reports the right-hand derivative; the derivative jumps from zero for a nonzero step.","Time to fraction f is θ − τ ln(1 − f), measured from the input step. For this monotonic model, 90%, 95% and 98% correspond to remaining-error bands of 10%, 5% and 2% of the final change, not of the absolute output.","If the final change is zero, output stays constant, rate and response times are zero, and percent completion is not applicable. Exact final equilibrium is approached asymptotically for a nonzero change; displayed numbers eventually round to it.","This does not fit parameters, tune a controller or simulate a closed loop, oscillation, actuator saturation, multiple steps, nonlinear behavior or an unstable/integrating process. Use identified model parameters valid around the operating point."]},{"id":"current-loop-budget","name":"Current-Loop Voltage Budget","description":"Model one DC series loop with a two-wire loop-powered transmitter, resistive receiver and total outgoing-plus-return cable resistance. Use the lowest available supply and worst-case device data for your selected current.","category":"Measurement & Control","endpoint":"/api/controls/current-loop-budget","inputs":[{"name":"supplyVoltage","type":"number","unit":"V","required":true,"defaultValue":"24"},{"name":"transmitterMinimum","type":"number","unit":"V","required":true,"defaultValue":"12"},{"name":"current","type":"number","unit":"mA","required":true,"defaultValue":"20"},{"name":"receiverResistance","type":"number","unit":"Ω","required":true,"defaultValue":"250"},{"name":"wireResistance","type":"number","unit":"Ω","required":true,"defaultValue":"100"},{"name":"otherDrop","type":"number","unit":"V","required":true,"defaultValue":"1"}],"outputs":[{"id":"budgetStatus","label":"Voltage-budget check","unit":""},{"id":"requiredSupply","label":"Minimum calculated supply","unit":"V","significantDigits":8},{"id":"voltageMargin","label":"Supply voltage margin","unit":"V","significantDigits":8},{"id":"transmitterVoltage","label":"Voltage left for transmitter at requested current","unit":"V","significantDigits":8},{"id":"receiverDrop","label":"Receiver voltage drop","unit":"V","significantDigits":8},{"id":"wireDrop","label":"Total wire voltage drop","unit":"V","significantDigits":8},{"id":"resistanceHeadroom","label":"Additional series resistance headroom (negative means deficit)","unit":"Ω","significantDigits":8},{"id":"receiverPower","label":"Receiver resistive dissipation at requested current","unit":"W","significantDigits":8},{"id":"wirePower","label":"Wire resistive dissipation at requested current","unit":"W","significantDigits":8}],"sources":[{"title":"NI: Current-loop system design and power supply selection","url":"https://www.ni.com/en/shop/data-acquisition/fundamentals--system-design--and-setup-for-the-4-to-20-ma-curren.html","accessed":"2026-09-08"}],"assumptions":["Model one DC series loop with a two-wire loop-powered transmitter, resistive receiver and total outgoing-plus-return cable resistance. Use the lowest available supply and worst-case device data for your selected current.","Convert mA to A by dividing by 1000. Receiver and cable voltage drops are I × R. Include additional series device drops separately without counting the same resistance twice.","Minimum supply = transmitter minimum + receiver drop + wire drop + other drops. Voltage margin = available supply − minimum supply. Negative margin means the requested current cannot be supported under these assumptions; this tool does not predict the actual saturated current.","Additional resistance headroom = voltage margin / I. A negative result is a deficit, not an allowable resistance. Receiver and cable dissipation each equal I²R; select physical ratings with the applicable derating.","Original example: 24 V supply, 12 V transmitter minimum, 20 mA, 250 Ω receiver, 100 Ω total wire and 1 V other drop require 20 V and leave 4 V margin. Include both cable conductors.","Check the greatest operating or alarm current you require, which may exceed 20 mA. Also check transmitter maximum voltage at low current, receiver ratings, supply tolerance/current capacity, temperature effects, isolation and grounding. A positive margin is not a complete device or hazardous-area approval."]},{"id":"current-loop-scale","name":"4–20 mA to Engineering Value","description":"EU means your chosen engineering unit: use the same unit for both endpoint values and the engineering input/output. No unit conversion is performed. Current is in mA, not A.","category":"Measurement & Control","endpoint":"/api/controls/current-loop-scale","inputs":[{"name":"current","type":"number","unit":"mA","required":true,"defaultValue":"12"},{"name":"valueAt4","type":"number","unit":"EU","required":true,"defaultValue":"0"},{"name":"valueAt20","type":"number","unit":"EU","required":true,"defaultValue":"100"}],"outputs":[{"id":"value","label":"Engineering value, unclamped","unit":"EU","significantDigits":8},{"id":"current","label":"Current, unclamped","unit":"mA","significantDigits":8},{"id":"percentSpan","label":"Position along configured signal span","unit":"%","significantDigits":8},{"id":"rangeStatus","label":"Nominal current-range check","unit":""}],"sources":[{"title":"NI: Custom Scales, linear input/output scaling","url":"https://www.ni.com/en/support/documentation/supplemental/18/ni-daqmx-custom-scales-and-usage-explained.html","accessed":"2026-09-08"}],"assumptions":["EU means your chosen engineering unit: use the same unit for both endpoint values and the engineering input/output. No unit conversion is performed. Current is in mA, not A.","Configure the engineering values corresponding to exactly 4 mA and 20 mA. They must differ; decreasing scales are supported. This assumes a linear transmitter output.","Forward: fraction = (current − 4)/16; value = valueAt4 + fraction × (valueAt20 − valueAt4). Inverse: fraction = (value − valueAt4)/(valueAt20 − valueAt4); current = 4 + 16 × fraction. Percent span = 100 × fraction.","Example: a −50 to 150 °C linear scale gives 50 °C at 12 mA and 75% span at 16 mA. Percent span is measured from the 4 mA endpoint, not from zero engineering value.","Results outside 4–20 mA are mathematical extrapolations, not valid process readings or feasible output commands. They are flagged and never clamped. Check device-specific alarms and configured limits; this is not a fault diagnosis or NAMUR compliance test.","No square-root extraction, sensor linearization, calibration uncertainty, loop supply/burden check, hardware communication or safety-interlock validation is included."]},{"id":"current-loop-output","name":"Engineering Value to 4–20 mA","description":"EU means your chosen engineering unit: use the same unit for both endpoint values and the engineering input/output. No unit conversion is performed. Current is in mA, not A.","category":"Measurement & Control","endpoint":"/api/controls/current-loop-output","inputs":[{"name":"value","type":"number","unit":"EU","required":true,"defaultValue":"50"},{"name":"valueAt4","type":"number","unit":"EU","required":true,"defaultValue":"0"},{"name":"valueAt20","type":"number","unit":"EU","required":true,"defaultValue":"100"}],"outputs":[{"id":"value","label":"Engineering value, unclamped","unit":"EU","significantDigits":8},{"id":"current","label":"Current, unclamped","unit":"mA","significantDigits":8},{"id":"percentSpan","label":"Position along configured signal span","unit":"%","significantDigits":8},{"id":"rangeStatus","label":"Nominal current-range check","unit":""}],"sources":[{"title":"NI: Custom Scales, linear input/output scaling","url":"https://www.ni.com/en/support/documentation/supplemental/18/ni-daqmx-custom-scales-and-usage-explained.html","accessed":"2026-09-08"}],"assumptions":["EU means your chosen engineering unit: use the same unit for both endpoint values and the engineering input/output. No unit conversion is performed. Current is in mA, not A.","Configure the engineering values corresponding to exactly 4 mA and 20 mA. They must differ; decreasing scales are supported. This assumes a linear transmitter output.","Forward: fraction = (current − 4)/16; value = valueAt4 + fraction × (valueAt20 − valueAt4). Inverse: fraction = (value − valueAt4)/(valueAt20 − valueAt4); current = 4 + 16 × fraction. Percent span = 100 × fraction.","Example: a −50 to 150 °C linear scale gives 50 °C at 12 mA and 75% span at 16 mA. Percent span is measured from the 4 mA endpoint, not from zero engineering value.","Results outside 4–20 mA are mathematical extrapolations, not valid process readings or feasible output commands. They are flagged and never clamped. Check device-specific alarms and configured limits; this is not a fault diagnosis or NAMUR compliance test.","No square-root extraction, sensor linearization, calibration uncertainty, loop supply/burden check, hardware communication or safety-interlock validation is included."]},{"id":"section-beam","name":"Beam Bending from Section Properties","description":"Uniform homogeneous linear-elastic slender beam, constant EI, small deflection and principal-axis bending. Loads act in the bending plane without torsion. I is the area second moment about that axis, not polar or mass inertia; c is the farthest material fibre from the neutral axis.","category":"Mechanics","endpoint":"/api/mechanics/section-beam","inputs":[{"name":"support","type":"select","unit":"","required":true,"defaultValue":"0","options":[{"value":"0","label":"Simply supported; point load at center"},{"value":"1","label":"Cantilever; point load at free tip"}]},{"name":"span","type":"number","unit":"m","required":true,"defaultValue":"3"},{"name":"secondMoment","type":"number","unit":"m⁴","required":true,"defaultValue":"0.000027786666666666686"},{"name":"extremeDistance","type":"number","unit":"m","required":true,"defaultValue":"0.1"},{"name":"youngModulus","type":"number","unit":"Pa","required":true,"defaultValue":"200000000000"},{"name":"pointLoad","type":"number","unit":"N","required":true,"defaultValue":"1000"},{"name":"lineLoad","type":"number","unit":"N/m","required":true,"defaultValue":"500"}],"outputs":[{"id":"sectionModulus","label":"Elastic section modulus","unit":"m³","significantDigits":7},{"id":"rigidity","label":"Flexural rigidity EI","unit":"N·m²","significantDigits":7},{"id":"totalLoad","label":"Total downward load","unit":"N","significantDigits":7},{"id":"leftReaction","label":"Upward left reaction","unit":"N","significantDigits":7},{"id":"rightReaction","label":"Upward right reaction","unit":"N","significantDigits":7},{"id":"fixedReactionMoment","label":"Counterclockwise fixed-end reaction moment","unit":"N·m","significantDigits":7},{"id":"maximumMoment","label":"Maximum bending moment magnitude","unit":"N·m","significantDigits":7},{"id":"maximumBendingStress","label":"Maximum bending stress magnitude","unit":"Pa","significantDigits":7},{"id":"maximumShear","label":"Maximum shear force magnitude","unit":"N","significantDigits":7},{"id":"maximumDeflection","label":"Maximum downward deflection","unit":"m","significantDigits":7},{"id":"deflectionSpanRatio","label":"Deflection / span","unit":"","significantDigits":7},{"id":"criticalLocations","label":"Critical locations","unit":"","significantDigits":7}],"sources":[{"title":"MIT Solid Mechanics: Deflections due to Bending, standard cases","url":"https://ocw.mit.edu/courses/1-050-solid-mechanics-fall-2004/f9a4d5764b9b0f51ffaacbdf69f7aed8_emech10_04.pdf#page=6","accessed":"2026-09-08"},{"title":"MIT Solid Mechanics: Stresses, Beams in Bending","url":"https://ocw.mit.edu/courses/1-050-solid-mechanics-fall-2004/8f0200f4ca3236383a2ef048c7ec4c40_emech9_04.pdf","accessed":"2026-09-08"}],"assumptions":["Uniform homogeneous linear-elastic slender beam, constant EI, small deflection and principal-axis bending. Loads act in the bending plane without torsion. I is the area second moment about that axis, not polar or mass inertia; c is the farthest material fibre from the neutral axis.","S = I/c; stress magnitude = Mmax/S. Use the larger extreme distance for an asymmetric section. The tool cannot validate a supplied I and c against a real section. Shear force is reported; no shape-independent shear stress is inferred.","Simply supported: Rleft = Rright = (P + wL)/2; Mmax = PL/4 + wL²/8; δmax = PL³/(48EI) + 5wL⁴/(384EI), both at midspan.","Cantilever: Rleft = P + wL, Rright = 0; reaction moment magnitude = PL + wL²/2; δmax = PL³/(3EI) + wL⁴/(8EI). Moment is largest at the root, deflection at the tip.","Include self-weight in w if relevant. No shear deformation, torsion, yielding, fatigue, local/lateral buckling, connection or design-code assessment. Transferred geometry does not establish a material grade, load or safe capacity."]},{"id":"circular-section","name":"Circular Section Properties","description":"Concentric circular opening; zero inner diameter selects solid. A = π(Do² − Di²)/4; Ix = Iy = π(Do⁴ − Di⁴)/64. A circle has the same centroidal second moment about every in-plane diameter.","category":"Mechanics","endpoint":"/api/mechanics/circular-section","inputs":[{"name":"outerDiameter","type":"number","unit":"m","required":true,"defaultValue":"0.05"},{"name":"innerDiameter","type":"number","unit":"m","required":true,"defaultValue":"0.03"}],"outputs":[{"id":"area","label":"Material area","unit":"m²","significantDigits":7},{"id":"centroidX","label":"Centroid x from left of outer bounding box","unit":"m","significantDigits":7},{"id":"centroidY","label":"Centroid y from bottom of outer bounding box","unit":"m","significantDigits":7},{"id":"secondMomentX","label":"Second moment about horizontal centroidal x-axis","unit":"m⁴","significantDigits":7},{"id":"secondMomentY","label":"Second moment about vertical centroidal y-axis","unit":"m⁴","significantDigits":7},{"id":"polarAreaMoment","label":"Polar second moment of area Ix + Iy","unit":"m⁴","significantDigits":7},{"id":"sectionModulusX","label":"Elastic section modulus about x-axis","unit":"m³","significantDigits":7},{"id":"sectionModulusY","label":"Elastic section modulus about y-axis","unit":"m³","significantDigits":7},{"id":"radiusOfGyrationX","label":"Area radius of gyration about x-axis","unit":"m","significantDigits":7},{"id":"radiusOfGyrationY","label":"Area radius of gyration about y-axis","unit":"m","significantDigits":7}],"sources":[{"title":"Engineering Statics: Moments of Inertia of Common Shapes","url":"https://engineeringstatics.org/MOI-common-shapes.html","accessed":"2026-09-08"},{"title":"Engineering Statics: Radius of Gyration","url":"https://engineeringstatics.org/radius-of-gyration-sec.html","accessed":"2026-09-08"},{"title":"MIT Engineering Beam Theory, Appendix A","url":"https://ocw.mit.edu/courses/1-101-introduction-to-civil-and-environmental-engineering-design-i-fall-2005/6f99034868d8868ff7b170782cffbaca_lab2.pdf#page=11","accessed":"2026-09-08"}],"assumptions":["Concentric circular opening; zero inner diameter selects solid. A = π(Do² − Di²)/4; Ix = Iy = π(Do⁴ − Di⁴)/64. A circle has the same centroidal second moment about every in-plane diameter.","All dimensions in metres. Axes pass through the centroid: x horizontal, y vertical. Centroid coordinates are measured from the bottom-left of the outer bounding box. These are area properties, not mass moments of inertia.","Sx = Ix/(outer height/2), Sy = Iy/(outer width/2); rx = √(Ix/A), ry = √(Iy/A). The section modulus has dimensions of length cubed, but is not a volume of material.","Polar area moment Jp = Ix + Iy. It equals the Saint-Venant torsion constant for a circular solid/annulus, not for a rectangle. No rounded corners, eccentric void, strength rating, local buckling or design-code check is included."]},{"id":"rectangular-section","name":"Rectangular Section Properties","description":"Concentric rectangular opening with sharp corners. Set both inner dimensions to zero for solid. A = bh − bi hi; Ix = (b h³ − bi hi³)/12; Iy = (h b³ − hi bi³)/12. Wall thickness may differ horizontally and vertically.","category":"Mechanics","endpoint":"/api/mechanics/rectangular-section","inputs":[{"name":"width","type":"number","unit":"m","required":true,"defaultValue":"0.1"},{"name":"height","type":"number","unit":"m","required":true,"defaultValue":"0.2"},{"name":"innerWidth","type":"number","unit":"m","required":true,"defaultValue":"0.08"},{"name":"innerHeight","type":"number","unit":"m","required":true,"defaultValue":"0.18"}],"outputs":[{"id":"area","label":"Material area","unit":"m²","significantDigits":7},{"id":"centroidX","label":"Centroid x from left of outer bounding box","unit":"m","significantDigits":7},{"id":"centroidY","label":"Centroid y from bottom of outer bounding box","unit":"m","significantDigits":7},{"id":"secondMomentX","label":"Second moment about horizontal centroidal x-axis","unit":"m⁴","significantDigits":7},{"id":"secondMomentY","label":"Second moment about vertical centroidal y-axis","unit":"m⁴","significantDigits":7},{"id":"polarAreaMoment","label":"Polar second moment of area Ix + Iy","unit":"m⁴","significantDigits":7},{"id":"sectionModulusX","label":"Elastic section modulus about x-axis","unit":"m³","significantDigits":7},{"id":"sectionModulusY","label":"Elastic section modulus about y-axis","unit":"m³","significantDigits":7},{"id":"radiusOfGyrationX","label":"Area radius of gyration about x-axis","unit":"m","significantDigits":7},{"id":"radiusOfGyrationY","label":"Area radius of gyration about y-axis","unit":"m","significantDigits":7}],"sources":[{"title":"Engineering Statics: Moments of Inertia of Common Shapes","url":"https://engineeringstatics.org/MOI-common-shapes.html","accessed":"2026-09-08"},{"title":"Engineering Statics: Radius of Gyration","url":"https://engineeringstatics.org/radius-of-gyration-sec.html","accessed":"2026-09-08"},{"title":"MIT Engineering Beam Theory, Appendix A","url":"https://ocw.mit.edu/courses/1-101-introduction-to-civil-and-environmental-engineering-design-i-fall-2005/6f99034868d8868ff7b170782cffbaca_lab2.pdf#page=11","accessed":"2026-09-08"}],"assumptions":["Concentric rectangular opening with sharp corners. Set both inner dimensions to zero for solid. A = bh − bi hi; Ix = (b h³ − bi hi³)/12; Iy = (h b³ − hi bi³)/12. Wall thickness may differ horizontally and vertically.","All dimensions in metres. Axes pass through the centroid: x horizontal, y vertical. Centroid coordinates are measured from the bottom-left of the outer bounding box. These are area properties, not mass moments of inertia.","Sx = Ix/(outer height/2), Sy = Iy/(outer width/2); rx = √(Ix/A), ry = √(Iy/A). The section modulus has dimensions of length cubed, but is not a volume of material.","Polar area moment Jp = Ix + Iy. It equals the Saint-Venant torsion constant for a circular solid/annulus, not for a rectangle. No rounded corners, eccentric void, strength rating, local buckling or design-code check is included."]},{"id":"normal-shock","name":"Normal Shock: Downstream State and Pressure Loss","description":"Stationary, one-dimensional normal shock; calorically perfect ideal gas, constant R and γ. Upstream Mach must exceed 1 for a shock; exactly 1 is the zero-strength limit. Inputs use the shock-fixed frame, absolute pressure and Kelvin.","category":"Fluid Mechanics","endpoint":"/api/fluids/normal-shock","inputs":[{"name":"absolutePressure","type":"number","unit":"Pa","required":true,"defaultValue":"101325"},{"name":"absoluteTemperature","type":"number","unit":"K","required":true,"defaultValue":"288.15"},{"name":"specificGasConstant","type":"number","unit":"J/(kg·K)","required":true,"defaultValue":"287.05"},{"name":"heatCapacityRatio","type":"number","unit":"","required":true,"defaultValue":"1.4"},{"name":"upstreamMach","type":"number","unit":"","required":true,"defaultValue":"2"}],"outputs":[{"id":"upstreamSpeed","label":"Upstream speed","unit":"m/s","significantDigits":7},{"id":"downstreamMach","label":"Downstream Mach","unit":"","significantDigits":7},{"id":"pressureRatio","label":"Static pressure ratio p₂/p₁","unit":"","significantDigits":7},{"id":"densityRatio","label":"Density ratio ρ₂/ρ₁","unit":"","significantDigits":7},{"id":"temperatureRatio","label":"Static temperature ratio T₂/T₁","unit":"","significantDigits":7},{"id":"downstreamPressure","label":"Downstream static absolute pressure","unit":"Pa","significantDigits":7},{"id":"downstreamTemperature","label":"Downstream static temperature","unit":"K","significantDigits":7},{"id":"downstreamDensity","label":"Downstream density","unit":"kg/m³","significantDigits":7},{"id":"downstreamSpeed","label":"Downstream speed","unit":"m/s","significantDigits":7},{"id":"stagnationPressureRatio","label":"Stagnation pressure ratio p₀₂/p₀₁","unit":"","significantDigits":7},{"id":"upstreamStagnationPressure","label":"Upstream stagnation absolute pressure","unit":"Pa","significantDigits":7},{"id":"downstreamStagnationPressure","label":"Downstream stagnation absolute pressure","unit":"Pa","significantDigits":7},{"id":"stagnationPressureLoss","label":"Stagnation pressure loss","unit":"Pa","significantDigits":7},{"id":"stagnationTemperature","label":"Conserved stagnation temperature","unit":"K","significantDigits":7},{"id":"entropyIncrease","label":"Specific entropy increase","unit":"J/(kg·K)","significantDigits":7}],"sources":[{"title":"NASA Glenn: Normal Shock Wave Equations","url":"https://www.grc.nasa.gov/www/k-12/airplane/normal.html","accessed":"2026-09-08"}],"assumptions":["Stationary, one-dimensional normal shock; calorically perfect ideal gas, constant R and γ. Upstream Mach must exceed 1 for a shock; exactly 1 is the zero-strength limit. Inputs use the shock-fixed frame, absolute pressure and Kelvin.","With stations 1 upstream and 2 downstream: p₂/p₁ = 1 + 2γ(M₁² − 1)/(γ + 1); ρ₂/ρ₁ = (γ + 1)M₁²/[(γ − 1)M₁² + 2]; T₂/T₁ = (p₂/p₁)/(ρ₂/ρ₁).","M₂² = [(γ − 1)M₁² + 2]/[2γM₁² − (γ − 1)]. Mass conservation gives V₂/V₁ = ρ₁/ρ₂. Total temperature is conserved; total pressure falls and entropy rises.","p₀₂/p₀₁ = [(ρ₂/ρ₁)^γ/(p₂/p₁)]^[1/(γ − 1)]; Δs = −R ln(p₀₂/p₀₁). Extremely weak shocks may display zero loss at floating-point precision.","No oblique shock, boundary-layer interaction, nozzle location, moving-shock frame conversion, heat transfer, real gas or variable heat capacity. This tool does not determine whether a shock forms. Check the constant-property assumption against the calculated temperatures."]},{"id":"gas-flow-state","name":"Gas Speed of Sound, Mach and Stagnation State","description":"Calorically perfect ideal gas with constant specific gas constant R and γ > 1. Enter static absolute pressure and Kelvin temperature, not stagnation conditions. Defaults approximate dry air; no atmospheric or composition lookup is performed.","category":"Fluid Mechanics","endpoint":"/api/fluids/gas-flow-state","inputs":[{"name":"absolutePressure","type":"number","unit":"Pa","required":true,"defaultValue":"101325"},{"name":"absoluteTemperature","type":"number","unit":"K","required":true,"defaultValue":"288.15"},{"name":"specificGasConstant","type":"number","unit":"J/(kg·K)","required":true,"defaultValue":"287.05"},{"name":"heatCapacityRatio","type":"number","unit":"","required":true,"defaultValue":"1.4"},{"name":"speed","type":"number","unit":"m/s","required":true,"defaultValue":"100"}],"outputs":[{"id":"density","label":"Static density","unit":"kg/m³"},{"id":"soundSpeed","label":"Local speed of sound","unit":"m/s"},{"id":"mach","label":"Mach number","unit":"","significantDigits":7},{"id":"specificHeat","label":"Implied constant-pressure specific heat","unit":"J/(kg·K)"},{"id":"temperatureRatio","label":"Stagnation / static temperature","unit":"","significantDigits":8},{"id":"pressureRatio","label":"Stagnation / static pressure","unit":"","significantDigits":8},{"id":"densityRatio","label":"Stagnation / static density","unit":"","significantDigits":8},{"id":"stagnationTemperature","label":"Ideal stagnation temperature","unit":"K"},{"id":"stagnationPressure","label":"Ideal stagnation absolute pressure","unit":"Pa"},{"id":"stagnationDensity","label":"Ideal stagnation density","unit":"kg/m³"},{"id":"stagnationPressureRise","label":"Ideal stagnation minus static pressure","unit":"Pa","significantDigits":7},{"id":"dynamicPressure","label":"Dynamic pressure ½ρv²","unit":"Pa","significantDigits":7}],"sources":[{"title":"NASA Glenn: Isentropic Flow Equations","url":"https://www.grc.nasa.gov/www/k-12/airplane/isentrop.html","accessed":"2026-09-08"},{"title":"NASA Glenn: Speed of Sound","url":"https://www.grc.nasa.gov/WWW/k-12/VirtualAero/BottleRocket/airplane/sound.html","accessed":"2026-09-08"}],"assumptions":["Calorically perfect ideal gas with constant specific gas constant R and γ > 1. Enter static absolute pressure and Kelvin temperature, not stagnation conditions. Defaults approximate dry air; no atmospheric or composition lookup is performed.","ρ = p/(RT); a = √(γRT); M = v/a. Mach depends on the local gas state, not a universal speed factor. R is per kilogram, not the universal molar gas constant.","Let F = 1 + (γ − 1)M²/2. Then T0/T = F, p0/p = F^[γ/(γ − 1)], and ρ0/ρ = F^[1/(γ − 1)]. The stagnation state represents ideal isentropic deceleration to rest.","cp = γR/(γ − 1) and cp(T0 − T) = v²/2. Dynamic pressure q = ρv²/2 is generally different from p0 − p in compressible flow; they approach one another at low Mach number.","No shocks, friction, heat exchange, nozzle solution, variable heat capacities, condensation, dissociation or real-gas effects. The ideal p0 is not the downstream reading of a supersonic Pitot probe across a shock. Check constant-property validity over the calculated temperature range."]},{"id":"shaft-torsion","name":"Circular Shaft Torsion and Power","description":"Uniform circular shaft with concentric bore, homogeneous isotropic material, constant torque and linear elastic small-strain response. Enter diameters, not radii. Inner diameter zero selects a solid shaft.","category":"Mechanics","endpoint":"/api/mechanics/shaft-torsion","inputs":[{"name":"outerDiameter","type":"number","unit":"m","required":true,"defaultValue":"0.05"},{"name":"innerDiameter","type":"number","unit":"m","required":true,"defaultValue":"0.03"},{"name":"length","type":"number","unit":"m","required":true,"defaultValue":"1"},{"name":"shearModulus","type":"number","unit":"Pa","required":true,"defaultValue":"80000000000"},{"name":"torque","type":"number","unit":"N·m","required":true,"defaultValue":"500"},{"name":"speed","type":"number","unit":"rpm","required":true,"defaultValue":"1500"}],"outputs":[{"id":"polarMoment","label":"Polar second moment of area","unit":"m⁴","significantDigits":7},{"id":"torsionalStiffness","label":"Torsional stiffness","unit":"N·m/rad"},{"id":"twistRadians","label":"Signed end-to-end twist","unit":"rad"},{"id":"twistDegrees","label":"Signed end-to-end twist","unit":"°"},{"id":"maximumShearStress","label":"Maximum shear stress magnitude","unit":"Pa"},{"id":"maximumShearStrain","label":"Maximum engineering shear strain","unit":"","significantDigits":7},{"id":"angularSpeed","label":"Signed angular speed","unit":"rad/s"},{"id":"power","label":"Signed mechanical power","unit":"W"},{"id":"strainEnergy","label":"Stored elastic strain energy","unit":"J"}],"sources":[{"title":"MIT OpenCourseWare, David Roylance: Shear and Torsion, equations 8 and 12–14 and strain energy","url":"https://ocw.mit.edu/courses/3-11-mechanics-of-materials-fall-1999/0e0845a9e3abe430080eaffb0c5015ba_MIT3_11F99_torsion.pdf","accessed":"2026-09-08"}],"assumptions":["Uniform circular shaft with concentric bore, homogeneous isotropic material, constant torque and linear elastic small-strain response. Enter diameters, not radii. Inner diameter zero selects a solid shaft.","J = π(Do⁴ − Di⁴)/32; τmax = |T|Do/(2J). J is a second moment of area, not a mass moment of inertia.","Twist θ = TL/(GJ), stiffness = GJ/L, γmax = τmax/G, elastic energy = Tθ/2. θ is relative end rotation, not the total rotation of the running shaft.","Angular speed ω = 2πn/60 and mechanical power P = Tω. Use the same positive axis for torque and speed. Opposite signs give negative power; reversing torque reverses twist but preserves stress magnitude and elastic energy.","Does not assess keyways, stress concentrations, yielding, combined bending, fatigue, buckling, critical speed, bearings or losses. A noncircular section cannot use this J as its torsion constant. No safe torque or equipment rating is inferred."]},{"id":"ac-power","name":"AC Power: Single and Balanced Three Phase","description":"Sinusoidal steady-state AC power for a passive single-phase load or a balanced three-phase load. Enter RMS values and displacement power factor from 0 to 1.","category":"Electrical","endpoint":"/api/electrical/ac-power","inputs":[{"name":"phases","type":"select","unit":"","required":true,"defaultValue":"3","options":[{"value":"1","label":"Single phase"},{"value":"3","label":"Balanced three phase"}]},{"name":"voltage","type":"number","unit":"V","required":true,"defaultValue":"400"},{"name":"current","type":"number","unit":"A","required":true,"defaultValue":"10"},{"name":"powerFactor","type":"number","unit":"","required":true,"defaultValue":"0.8"},{"name":"reactiveDirection","type":"select","unit":"","required":true,"defaultValue":"0","options":[{"value":"0","label":"Lagging, inductive load"},{"value":"1","label":"Leading, capacitive load"}]}],"outputs":[{"id":"activePower","label":"Total active power","unit":"W"},{"id":"reactivePower","label":"Total reactive power, positive inductive","unit":"var"},{"id":"apparentPower","label":"Total apparent power","unit":"VA"},{"id":"phaseAngle","label":"Specified phase angle, positive lagging","unit":"°"},{"id":"activePerPhase","label":"Active power per phase","unit":"W"}],"sources":[{"title":"US DOE Electrical Science Volume 3, ES-09: power triangle and balanced three-phase loads","url":"https://www.energy.gov/sites/default/files/2026-04/DOE-HDBK-1011-92_VOL3.pdf","accessed":"2026-09-08"}],"assumptions":["Sinusoidal steady-state AC power for a passive single-phase load or a balanced three-phase load. Enter RMS values and displacement power factor from 0 to 1.","Single phase: S = VI. Balanced three phase: S = √3 VL IL, where VL is line-to-line RMS voltage and IL is line RMS current. The latter applies to balanced wye or delta loads without substituting phase values for line values.","P = S cosφ = S PF. Q = ±S√(1 − PF²); positive for lagging inductive current and negative for leading capacitive current. Specified angle φ = ±acos(PF) is the per-phase impedance angle, not the angle between a line-to-line voltage and line current. At zero current, all powers are zero; the angle only reflects the specified input.","P is in watts, Q in var and S in volt-amperes. For balanced three phase, active power per phase is P/3. Unity power factor gives Q = 0.","Does not model harmonic distortion, unbalanced phases, exported active power, transients or motor efficiency. Displacement power factor need not equal true power factor for distorted waveforms. Results are not conductor ampacity, protection or equipment-rating selections."]},{"id":"series-rlc","name":"Series RLC Circuit and Resonance","description":"Sinusoidal steady-state series RLC circuit with ideal linear components and positive total series resistance. Enter RMS source voltage, frequency in Hz, inductance in henries and capacitance in farads.","category":"Electrical","endpoint":"/api/electrical/series-rlc","inputs":[{"name":"voltage","type":"number","unit":"V","required":true,"defaultValue":"120"},{"name":"frequency","type":"number","unit":"Hz","required":true,"defaultValue":"60"},{"name":"resistance","type":"number","unit":"Ω","required":true,"defaultValue":"30"},{"name":"inductance","type":"number","unit":"H","required":true,"defaultValue":"0.1"},{"name":"capacitance","type":"number","unit":"F","required":true,"defaultValue":"0.0001"}],"outputs":[{"id":"current","label":"Series RMS current","unit":"A"},{"id":"impedance","label":"Impedance magnitude","unit":"Ω"},{"id":"reactance","label":"Net reactance, positive inductive","unit":"Ω"},{"id":"inductiveReactance","label":"Inductive reactance","unit":"Ω"},{"id":"capacitiveReactance","label":"Capacitive reactance magnitude","unit":"Ω"},{"id":"phaseAngle","label":"Voltage phase relative to current","unit":"°"},{"id":"powerFactor","label":"Displacement power factor","unit":""},{"id":"activePower","label":"Active power in resistance","unit":"W"},{"id":"reactivePower","label":"Net reactive power","unit":"var"},{"id":"apparentPower","label":"Apparent power","unit":"VA"},{"id":"resistorVoltage","label":"Resistor RMS voltage","unit":"V"},{"id":"inductorVoltage","label":"Inductor RMS voltage","unit":"V"},{"id":"capacitorVoltage","label":"Capacitor RMS voltage","unit":"V"},{"id":"resonanceFrequency","label":"Ideal LC resonance frequency","unit":"Hz"}],"sources":[{"title":"MIT OpenCourseWare Physics II: AC Circuits, series RLC and average power, sections 12.3–12.4","url":"https://ocw.mit.edu/courses/8-02-physics-ii-electricity-and-magnetism-spring-2007/e7fd966c84001f4e8fc0f58a6751013e_cha12ac_circuits.pdf","accessed":"2026-09-08"}],"assumptions":["Sinusoidal steady-state series RLC circuit with ideal linear components and positive total series resistance. Enter RMS source voltage, frequency in Hz, inductance in henries and capacitance in farads.","ω = 2πf; XL = ωL; XC = 1/(ωC); X = XL − XC. The special input C = 0 bypasses the capacitor (XC = 0); it does not represent a physical zero-capacitance component. L = 0 omits the inductor.","Z = R + jX, |Z| = √(R² + X²), I = V/|Z|, φ = atan2(X,R), PF = R/|Z|. Positive φ means inductive impedance and lagging current; negative φ means capacitive impedance and leading current.","P = I²R; Q = I²X; S = VI. Component RMS voltages are IR, IXL and IXC. They add as phasors: V² = VR² + (VL − VC)², not as scalar magnitudes.","With both L and C present, f0 = 1/(2π√(LC)). At resonance the net reactance vanishes, but the individual L/C voltages can exceed the source voltage. Finite positive resistance is required; the ideal zero-resistance resonance singularity is excluded.","No switching transient, parasitics beyond the supplied series resistance, saturation, frequency-dependent losses, nonlinear load, harmonics or thermal rating calculation. Component and source ratings require a separate assessment."]},{"id":"water-properties","name":"Liquid Water Properties by Temperature and Pressure","description":"Pure liquid water properties from temperature and absolute pressure, using IAPWS SR6-08(2011) and SR1-86(1992). Supported range: 0.01–110 °C, pressure at or above saturation and no greater than 0.3 MPa (300000 Pa).","category":"Hydraulics","endpoint":"/api/fluids/water-properties","inputs":[{"name":"temperature","type":"number","unit":"°C","required":true,"defaultValue":"20"},{"name":"pressure","type":"number","unit":"Pa","required":true,"defaultValue":"100000"}],"outputs":[{"id":"density","label":"Density","unit":"kg/m³","significantDigits":7},{"id":"viscosity","label":"Dynamic viscosity","unit":"Pa·s","significantDigits":6},{"id":"kinematicViscosity","label":"Kinematic viscosity","unit":"m²/s","significantDigits":6},{"id":"specificHeat","label":"Specific heat at constant pressure","unit":"J/(kg·K)","significantDigits":6},{"id":"conductivity","label":"Thermal conductivity","unit":"W/(m·K)","significantDigits":6},{"id":"thermalDiffusivity","label":"Thermal diffusivity","unit":"m²/s","significantDigits":6},{"id":"prandtlNumber","label":"Prandtl number","unit":"","significantDigits":6},{"id":"thermalExpansion","label":"Volumetric thermal expansion coefficient","unit":"1/K","significantDigits":6},{"id":"compressibility","label":"Isothermal compressibility","unit":"1/Pa","significantDigits":6},{"id":"soundSpeed","label":"Speed of sound","unit":"m/s","significantDigits":6},{"id":"vaporPressure","label":"Saturation vapor pressure","unit":"Pa","significantDigits":6},{"id":"specificVolume","label":"Specific volume","unit":"m³/kg","significantDigits":7}],"sources":[{"title":"IAPWS SR6-08(2011): Properties of Liquid Water, coefficients, pressure corrections and verification Table 8","url":"https://iapws.org/technical-guidance/release/LiquidWater.download","accessed":"2026-09-08"},{"title":"IAPWS SR1-86(1992): Saturation Properties, vapor pressure equation 1","url":"https://iapws.org/public/documents/6dGkr/Supp-sat.pdf","accessed":"2026-09-08"}],"assumptions":["Pure liquid water properties from temperature and absolute pressure, using IAPWS SR6-08(2011) and SR1-86(1992). Supported range: 0.01–110 °C, pressure at or above saturation and no greater than 0.3 MPa (300000 Pa).","Calculate the 0.1 MPa reference specific volume and derivatives from SR6 equations 2–3, heat capacity from Table 2, then apply the limited-pressure corrections in Table 4. Density is the reciprocal of specific volume. Table 3 gives expansivity, compressibility and sound speed.","Dynamic viscosity and thermal conductivity use SR6 equations 7–8; section 6 permits these temperature correlations throughout the supported pressure range. Kinematic viscosity = μ/ρ, thermal diffusivity = k/(ρ cp), and Prandtl number = μ cp/k.","Saturation pressure uses SR1 equation 1. Below-saturation pressure, freezing-range temperatures and pressures above 0.3 MPa are rejected. At saturation, outputs describe the liquid branch, not a liquid-vapor mixture.","SR6 reports stable-region uncertainties of about 0.0001% for density, 0.1% for heat capacity, 0.005% for sound speed, 1% for viscosity and 1.5% for conductivity. Extra displayed digits aid reproducibility; they do not imply matching measurement accuracy.","Ordinary pure water only. Salinity, glycol, dissolved additives, steam, ice, supercooled liquid and high-pressure service require other property models. This implementation is independently verified against release tables, not certified by IAPWS."]},{"id":"water-pipe-loss","name":"Water Pipe Pressure Loss with Temperature","description":"Calculate pure-water density and viscosity from temperature and inlet pressure, then estimate straight horizontal pipe friction. Liquid-water range: 0.01–110 °C and saturation pressure through 300000 Pa absolute.","category":"Hydraulics","endpoint":"/api/hydraulics/water-pipe-loss","inputs":[{"name":"temperature","type":"number","unit":"°C","required":true,"defaultValue":"20"},{"name":"inletPressure","type":"number","unit":"Pa","required":true,"defaultValue":"200000"},{"name":"flowRate","type":"number","unit":"m³/s","required":true,"defaultValue":"0.001"},{"name":"length","type":"number","unit":"m","required":true,"defaultValue":"20"},{"name":"diameter","type":"number","unit":"m","required":true,"defaultValue":"0.025"},{"name":"roughness","type":"number","unit":"m","required":true,"defaultValue":"0.000015"}],"outputs":[{"id":"pressureDrop","label":"Friction pressure loss","unit":"Pa"},{"id":"headLoss","label":"Friction head loss","unit":"m"},{"id":"outletPressure","label":"Estimated absolute outlet pressure","unit":"Pa"},{"id":"velocity","label":"Mean velocity","unit":"m/s"},{"id":"reynoldsNumber","label":"Reynolds number","unit":""},{"id":"frictionFactor","label":"Darcy friction factor","unit":""},{"id":"density","label":"Calculated inlet water density","unit":"kg/m³","significantDigits":7},{"id":"viscosity","label":"Calculated water dynamic viscosity","unit":"Pa·s","significantDigits":6},{"id":"vaporPressure","label":"Water saturation pressure","unit":"Pa","significantDigits":6},{"id":"flowRegime","label":"Flow regime","unit":""}],"sources":[{"title":"IAPWS SR6-08(2011): Liquid water density and viscosity with pressure corrections","url":"https://iapws.org/technical-guidance/release/LiquidWater.download","accessed":"2026-09-08"},{"title":"IAPWS SR1-86(1992): Saturation vapor pressure","url":"https://iapws.org/public/documents/6dGkr/Supp-sat.pdf","accessed":"2026-09-08"},{"title":"US EPA: EPANET 2.2 User Manual, Darcy–Weisbach and friction-factor methods","url":"https://usepa.github.io/EPANET2.2/3_network_model.html","accessed":"2026-09-08"}],"assumptions":["Calculate pure-water density and viscosity from temperature and inlet pressure, then estimate straight horizontal pipe friction. Liquid-water range: 0.01–110 °C and saturation pressure through 300000 Pa absolute.","IAPWS SR6-08(2011) supplies temperature-dependent water properties with limited-pressure corrections. Properties are held at their inlet values along this constant-diameter, isothermal pipe.","Velocity = 4Q/(πD²), Re = ρvD/μ. Darcy f = 64/Re below Re 2300, otherwise the Swamee–Jain approximation. The transitional range 2300–4000 is flagged as uncertain; EPANET transitional interpolation is not implemented. Q = 0 gives zero loss.","ΔP = f(L/D)ρv²/2; head loss = ΔP/(ρg), g = 9.80665 m/s². Outlet pressure = inlet pressure − ΔP. Reject a predicted outlet pressure below saturation rather than applying a single-phase result there.","No fittings, valves, elevation change, pump, developing-flow correction, water hammer or heat transfer. Use actual internal diameter and a documented roughness; defaults are illustrative. A passing saturation check is not a cavitation assessment of other system components."]},{"id":"liquid-valve","name":"Liquid Control Valve Kv and Choking","description":"For turbulent liquid flow with no attached fittings correction: ΔP = P1 − P2; FF = 0.96 − 0.28√(Pv/Pc); ΔPchoked = FL²(P1 − FF Pv). All pressures must be absolute and use the same units.","category":"Valves","endpoint":"/api/valves/liquid-sizing","inputs":[{"name":"flowRate","type":"number","unit":"m³/s","required":true,"defaultValue":"0.005"},{"name":"density","type":"number","unit":"kg/m³","required":true,"defaultValue":"1000"},{"name":"inletPressure","type":"number","unit":"Pa","required":true,"defaultValue":"300000"},{"name":"outletPressure","type":"number","unit":"Pa","required":true,"defaultValue":"250000"},{"name":"vaporPressure","type":"number","unit":"Pa","required":true,"defaultValue":"3000"},{"name":"criticalPressure","type":"number","unit":"Pa","required":true,"defaultValue":"22064000"},{"name":"recoveryFactor","type":"number","unit":"","required":true,"defaultValue":"0.9"}],"outputs":[{"id":"kv","label":"Required Kv using limiting pressure drop","unit":"m³/h"},{"id":"uncorrectedKv","label":"Kv ignoring choking, for comparison only","unit":"m³/h"},{"id":"pressureDrop","label":"Actual pressure drop","unit":"Pa"},{"id":"chokedPressureDrop","label":"Calculated choking pressure drop","unit":"Pa"},{"id":"effectivePressureDrop","label":"Pressure drop used for sizing","unit":"Pa"},{"id":"criticalRatio","label":"Liquid critical pressure ratio factor, FF","unit":""},{"id":"regime","label":"Choking assessment","unit":""},{"id":"phaseAssessment","label":"Outlet phase screening","unit":""}],"sources":[{"title":"Bürkert: Fluid Calculator, liquid Kv equation","url":"https://www.burkert.com/en/service-support/knowledge-center/glossary/fluid-calculator","accessed":"2026-09-08"},{"title":"Emerson: Understanding Choked Flow in Fisher Valves, D104173X012, September 2017","url":"https://www.emerson.com/is/content/emerson/en/final-control/flow-controls/documents/d104173x012.pdf","accessed":"2026-09-08"},{"title":"Emerson: Control Valve Sourcebook, liquid sizing and limiting pressure drop","url":"https://www.emerson.com/is/content/emerson/en/final-control/flow-controls/documents/d103540x012.pdf","accessed":"2026-09-08"}],"assumptions":["For turbulent liquid flow with no attached fittings correction: ΔP = P1 − P2; FF = 0.96 − 0.28√(Pv/Pc); ΔPchoked = FL²(P1 − FF Pv). All pressures must be absolute and use the same units.","Use ΔPeffective = min(ΔP, ΔPchoked). Convert Q from m³/s to m³/h and ΔPeffective from Pa to bar. Kv = Q(m³/h)√[(ρ/1000)/(ΔPeffective in bar)]. Kv is a flow coefficient referenced to water and 1 bar, not the actual service flow.","Assumes turbulent service, liquid at the inlet and piping geometry factor FP = 1. No Reynolds/viscosity correction, attached reducers, staged trim, gas, steam or inlet two-phase sizing is implemented.","FL must match manufacturer data for the candidate valve, trim and travel. Defaults are teaching assumptions, not a selected valve or verified fluid-property state. Repeat at minimum, normal and maximum operating cases.","Below the choking limit does not establish cavitation-free operation. Outlet pressure below vapor pressure indicates flashing; damage and noise are not predicted. Assess pressure recovery, materials and service limits with manufacturer data.","Kv alone does not determine nominal valve size, opening, rangeability, actuator capability or control stability. The comparison ignoring choking must not replace the limiting-pressure result."]},{"id":"insulated-pipe","name":"Pipe Heat Transfer and Insulation","description":"Steady one-dimensional radial heat flow, constant properties and bulk temperatures along the length; perfect layer contact, no internal heat generation. Actual diameters are required, not nominal pipe sizes.","category":"Thermal","endpoint":"/api/thermal/insulated-pipe","inputs":[{"name":"length","type":"number","unit":"m","required":true,"defaultValue":"10"},{"name":"innerDiameter","type":"number","unit":"m","required":true,"defaultValue":"0.020"},{"name":"pipeOuterDiameter","type":"number","unit":"m","required":true,"defaultValue":"0.022"},{"name":"pipeConductivity","type":"number","unit":"W/(m·K)","required":true,"defaultValue":"380"},{"name":"insulationThickness","type":"number","unit":"m","required":true,"defaultValue":"0.020"},{"name":"insulationConductivity","type":"number","unit":"W/(m·K)","required":true,"defaultValue":"0.040"},{"name":"innerFilm","type":"number","unit":"W/(m²·K)","required":true,"defaultValue":"1000"},{"name":"outerFilm","type":"number","unit":"W/(m²·K)","required":true,"defaultValue":"10"},{"name":"fluidTemperature","type":"number","unit":"K","required":true,"defaultValue":"333.15"},{"name":"ambientTemperature","type":"number","unit":"K","required":true,"defaultValue":"293.15"}],"outputs":[{"id":"heatRate","label":"Heat transfer, positive outward","unit":"W"},{"id":"heatPerLength","label":"Heat transfer per length","unit":"W/m"},{"id":"thermalResistance","label":"Total thermal resistance","unit":"K/W"},{"id":"innerSurface","label":"Pipe inner surface temperature","unit":"K"},{"id":"pipeOuterSurface","label":"Pipe outer surface temperature","unit":"K"},{"id":"outerSurface","label":"Exposed surface temperature","unit":"K"},{"id":"bareHeatRate","label":"Bare pipe heat transfer, same film coefficients","unit":"W"},{"id":"magnitudeReduction","label":"Reduction in heat-transfer magnitude vs bare pipe","unit":"W"},{"id":"outerDiameter","label":"Diameter including insulation","unit":"m"}],"sources":[{"title":"US DOE Fundamentals Handbook, Heat Transfer: cylindrical conduction pp. 11–17 and combined convection pp. 20–23","url":"https://www.energy.gov/sites/default/files/2026-04/DOE-HDBK-1012-92_VOL2.pdf","accessed":"2026-09-08"}],"assumptions":["Steady one-dimensional radial heat flow, constant properties and bulk temperatures along the length; perfect layer contact, no internal heat generation. Actual diameters are required, not nominal pipe sizes.","For length L: inner-film resistance = 1/(hi π Di L); pipe resistance = ln(Do/Di)/(2π kp L); insulation resistance = ln((Do + 2t)/Do)/(2π ki L); outer-film resistance = 1/(ho π (Do + 2t) L).","Add the four resistances. Q = (Tfluid − Tambient)/Rtotal; heat per length = Q/L. Each surface temperature follows from the preceding temperature minus Q times that layer resistance. Negative Q means heat enters the pipe.","Bare comparison removes insulation and uses the bare outer surface area with the same film coefficients. Magnitude reduction = |Qbare| − |Q|; a negative result means increased heat transfer. Added insulation need not reduce heat transfer for every radius and fixed coefficient.","Defaults are a constructed teaching case, not certified copper or insulation properties. Supply conductivities at the relevant temperatures and convection coefficients for the actual flow conditions. The comparison assumes these coefficients remain unchanged.","Radiation, axial fluid cooling, fittings/supports, thermal bridges, fouling/contact resistance, moisture, condensation and transient effects are excluded. This is not an insulation product selection, minimum thickness requirement or economic optimum."]},{"id":"rectangular-beam","name":"Rectangular Beam Stress and Deflection","description":"Analyze a solid rectangular beam under a downward point load plus a uniform full-span load. Choose simple supports with a central point load, or a left-fixed cantilever with a tip load.","category":"Mechanics","endpoint":"/api/mechanics/rectangular-beam","inputs":[{"name":"support","type":"select","unit":"","required":true,"defaultValue":"0","options":[{"value":"0","label":"Simply supported; point load at center"},{"value":"1","label":"Cantilever; point load at free tip"}]},{"name":"span","type":"number","unit":"m","required":true,"defaultValue":"3"},{"name":"width","type":"number","unit":"m","required":true,"defaultValue":"0.1"},{"name":"depth","type":"number","unit":"m","required":true,"defaultValue":"0.2"},{"name":"youngModulus","type":"number","unit":"Pa","required":true,"defaultValue":"200000000000"},{"name":"pointLoad","type":"number","unit":"N","required":true,"defaultValue":"1000"},{"name":"lineLoad","type":"number","unit":"N/m","required":true,"defaultValue":"500"}],"outputs":[{"id":"area","label":"Section area","unit":"m²"},{"id":"secondMoment","label":"Second moment of area about bending axis","unit":"m⁴"},{"id":"sectionModulus","label":"Elastic section modulus","unit":"m³"},{"id":"rigidity","label":"Flexural rigidity EI","unit":"N·m²"},{"id":"totalLoad","label":"Total downward load","unit":"N"},{"id":"leftReaction","label":"Left support reaction, upward","unit":"N"},{"id":"rightReaction","label":"Right support reaction, upward","unit":"N"},{"id":"fixedReactionMoment","label":"Fixed-end external reaction, counterclockwise","unit":"N·m"},{"id":"maximumMoment","label":"Maximum bending moment magnitude","unit":"N·m"},{"id":"maximumBendingStress","label":"Maximum elastic bending stress magnitude","unit":"Pa"},{"id":"maximumShear","label":"Maximum shear force magnitude","unit":"N"},{"id":"maximumShearStress","label":"Maximum rectangular-section shear stress","unit":"Pa"},{"id":"maximumDeflection","label":"Maximum downward bending deflection","unit":"m"},{"id":"deflectionSpanRatio","label":"Deflection / span","unit":"1"},{"id":"criticalLocations","label":"Critical locations","unit":""}],"sources":[{"title":"MIT Solid Mechanics: beam displacement formulas, page 2","url":"https://ocw.mit.edu/courses/1-050-solid-mechanics-fall-2004/fd4eff39aec922b8c07660006f40686e_pset04_11.pdf","accessed":"2026-09-08"},{"title":"MIT Mechanics of Materials: stresses in beams","url":"https://web.mit.edu/course/3/3.11/www/modules/bstress.pdf","accessed":"2026-09-08"}],"assumptions":["Analyze a solid rectangular beam under a downward point load plus a uniform full-span load. Choose simple supports with a central point load, or a left-fixed cantilever with a tip load.","Dimensions define the bending axis: I = bd³/12, S = bd²/6, A = bd. Depth is the dimension in the direction of transverse deflection.","For simple supports: each reaction = (P + qL)/2; Mmax = PL/4 + qL²/8; δmax = PL³/(48EI) + 5qL⁴/(384EI).","For a cantilever: upward reaction = P + qL; external reaction moment = PL + qL²/2; δmax = PL³/(3EI) + qL⁴/(8EI).","Bending stress magnitude = Mmax/S; maximum rectangular-section shear stress = 1.5Vmax/A. These maxima occur at different section locations and are not a combined failure criterion.","Assumes a straight, prismatic, homogeneous beam with linear elasticity, small deflections and ideal supports. Deflection includes bending only; shear deformation, torsion, axial force and support settlement are excluded.","Enter total service loads, including self-weight in the uniform load if needed. Both loads are downward and may be zero. No material strength, buckling, fatigue, connection, deflection-limit or building-code check is performed.","With the illustrative defaults: each support carries 1250 N, maximum moment is 1312.5 N·m, and maximum deflection is 0.0000817383 m. The modulus is an example, not a verified material selection."]},{"id":"humid-air","name":"Humid Air Properties","description":"Calculate humidity ratio, dew/frost point, enthalpy, specific volume and moist-air density from temperature, relative humidity and absolute pressure.","category":"HVAC","endpoint":"/api/hvac/humid-air","inputs":[{"name":"dryBulb","type":"number","unit":"°C","required":true,"defaultValue":"25"},{"name":"relativeHumidity","type":"number","unit":"%","required":true,"defaultValue":"50"},{"name":"pressure","type":"number","unit":"Pa","required":true,"defaultValue":"101325"}],"outputs":[{"id":"humidityRatio","label":"Humidity ratio","unit":"kg water/kg dry air"},{"id":"specificHumidity","label":"Specific humidity","unit":"kg water/kg moist air"},{"id":"dewFrostPoint","label":"Dew point over water / frost point over ice","unit":"°C"},{"id":"enthalpy","label":"Enthalpy per mass of dry air","unit":"J/kg dry air"},{"id":"specificVolume","label":"Volume per mass of dry air","unit":"m³/kg dry air"},{"id":"density","label":"Total moist-air density","unit":"kg/m³"},{"id":"vaporPressure","label":"Water-vapor partial pressure","unit":"Pa"},{"id":"saturationVaporPressure","label":"Saturation vapor pressure","unit":"Pa"},{"id":"saturationBasis","label":"Relative humidity reference phase","unit":""}],"sources":[{"title":"PsychroLib: ASHRAE-based psychrometric equations and documentation","url":"https://psychrometrics.github.io/psychrolib/api_docs.html","accessed":"2026-09-08"},{"title":"PsychroLib MIT license and adaptation attribution","url":"/licenses/psychrolib.txt","accessed":"2026-09-08"}],"assumptions":["Calculate humidity ratio, dew/frost point, enthalpy, specific volume and moist-air density from temperature, relative humidity and absolute pressure.","Supported inputs: −50 to 80 °C, 0–100% RH and 20–120 kPa absolute. Total pressure must exceed saturation vapor pressure at the dry-bulb temperature.","ASHRAE saturation equations use ice at or below 0.01 °C and liquid water above it. RH is relative to that phase; subfreezing RH reported relative to liquid water must be converted before use.","Water-vapor pressure is RH/100 times saturation pressure. W = 0.621945 pv/(p − pv); specific humidity = W/(1 + W).","Enthalpy h = 1000[1.006T + W(2501 + 1.86T)] J/kg dry air, with T in °C and the conventional dry-air/liquid-water zero at 0 °C. It is not enthalpy per kg of moist air.","v = 287.042(T + 273.15)(1 + 1.607858W)/p; total density = (1 + W)/v. Assumes ideal moist air with no liquid droplets or real-gas corrections.","Dew/frost point inverts the saturation equation. Dry air has no finite dew point; results below −100 °C are reported outside the model range. These labels are returned as strings in the API.","Adapted coefficients from MIT-licensed PsychroLib; the numerical inversion, exact zero-humidity behavior and restricted operating domain differ from that library."]},{"id":"air-temperature-process","name":"Air Heating, Cooling and Condensate","description":"Uniformly heat or cool an ideal moist-air stream at constant pressure to a specified outlet temperature. If cooling reaches saturation, remove liquid water and return saturated outlet air. No bypass or added moisture is modeled.","category":"HVAC","endpoint":"/api/hvac/air-temperature-process","inputs":[{"name":"dryAirFlow","type":"number","unit":"kg dry air/s","required":true,"defaultValue":"1"},{"name":"inletTemperature","type":"number","unit":"°C","required":true,"defaultValue":"30"},{"name":"inletRelativeHumidity","type":"number","unit":"%","required":true,"defaultValue":"50"},{"name":"outletTemperature","type":"number","unit":"°C","required":true,"defaultValue":"10"},{"name":"pressure","type":"number","unit":"Pa","required":true,"defaultValue":"101325"}],"outputs":[{"id":"heatRemoved","label":"Heat removed, negative for heat added","unit":"W"},{"id":"airEnthalpyReduction","label":"Air-stream enthalpy reduction","unit":"W"},{"id":"condensateEnthalpyFlow","label":"Energy leaving in drained water","unit":"W"},{"id":"condensateFlow","label":"Condensate mass flow","unit":"kg/s","significantDigits":6},{"id":"condensateHourly","label":"Hourly condensate mass","unit":"kg/h"},{"id":"inletHumidityRatio","label":"Inlet humidity ratio","unit":"kg water/kg dry air","significantDigits":6},{"id":"outletHumidityRatio","label":"Outlet humidity ratio","unit":"kg water/kg dry air","significantDigits":6},{"id":"outletRelativeHumidity","label":"Outlet relative humidity","unit":"%"},{"id":"inletEnthalpy","label":"Inlet enthalpy","unit":"J/kg dry air"},{"id":"outletEnthalpy","label":"Outlet enthalpy","unit":"J/kg dry air"},{"id":"inletVolumeFlow","label":"Inlet volume flow","unit":"m³/s"},{"id":"outletVolumeFlow","label":"Outlet volume flow","unit":"m³/s"},{"id":"process","label":"Ideal process","unit":""}],"sources":[{"title":"ASHRAE Fundamentals 2025, Chapter 1: sensible heating/cooling and cooling with dehumidification","url":"https://handbook.ashrae.org/Handbooks/F25/SI/F25_Ch01/F25_Ch01_si.aspx","accessed":"2026-09-08"},{"title":"PsychroLib moist-air enthalpy, saturation and volume relationships","url":"https://psychrometrics.github.io/psychrolib/api_docs.html","accessed":"2026-09-08"},{"title":"PsychroLib MIT license and adaptation attribution","url":"/licenses/psychrolib.txt","accessed":"2026-09-08"}],"assumptions":["Uniformly heat or cool an ideal moist-air stream at constant pressure to a specified outlet temperature. If cooling reaches saturation, remove liquid water and return saturated outlet air. No bypass or added moisture is modeled.","Dry-air mass flow must be positive. Inlet: −50 to 80 °C and 0–100% RH. Outlet: 0–80 °C, excluding ice/frost processing. Pressure: 20–120 kPa absolute and above saturation pressure at both temperatures.","Wout = min(Win, Wsat(Tout)). Without condensation, W is unchanged and RH changes with temperature. With condensation, outlet RH is 100%. Condensate flow = mda(Win − Wout).","Heat removed = mda(hin − hout) − mcond hw,out. Here h is in J/kg dry air, and liquid-water enthalpy is approximated as hw,out = 4186 Tout J/kg relative to liquid water at 0 °C. Condensate leaves at outlet temperature.","Positive heatRemoved means cooling; negative means heating. It is thermal transfer, not electrical input, compressor power or a selected equipment capacity. No arbitrary sensible/latent split is imposed.","Convert measured inlet volume flow to dry-air mass flow with mda = Qin/vin using the inlet specific volume. Moist-air mass flow is a different basis. The output shows both inlet and outlet volume flows.","No coil bypass factor, apparatus dew point, fan heat, heat leakage, pressure drop, frost, re-evaporation, humidity control or real-gas correction. A real coil can produce an unsaturated outlet; this ideal saturation model does not predict its detailed performance."]},{"id":"air-mixing","name":"Adiabatic Mixing of Two Humid Airstreams","description":"Mix two ideal moist-air streams adiabatically at a common pressure, with no work, heat transfer, added water or condensation. Inputs are dry-air mass flows, not total moist-air mass flows or volume flows.","category":"HVAC","endpoint":"/api/hvac/air-mixing","inputs":[{"name":"dryAirFlow1","type":"number","unit":"kg dry air/s","required":true,"defaultValue":"1"},{"name":"dryBulb1","type":"number","unit":"°C","required":true,"defaultValue":"10"},{"name":"relativeHumidity1","type":"number","unit":"%","required":true,"defaultValue":"60"},{"name":"dryAirFlow2","type":"number","unit":"kg dry air/s","required":true,"defaultValue":"3"},{"name":"dryBulb2","type":"number","unit":"°C","required":true,"defaultValue":"25"},{"name":"relativeHumidity2","type":"number","unit":"%","required":true,"defaultValue":"50"},{"name":"pressure","type":"number","unit":"Pa","required":true,"defaultValue":"101325"}],"outputs":[{"id":"dryBulb","label":"Mixed dry-bulb temperature","unit":"°C"},{"id":"relativeHumidity","label":"Mixed relative humidity","unit":"%"},{"id":"totalDryAirFlow","label":"Total dry-air mass flow","unit":"kg dry air/s"},{"id":"stream1DryAirFraction","label":"Stream 1 dry-air mass fraction","unit":""},{"id":"moistAirFlow","label":"Total moist-air mass flow","unit":"kg/s"},{"id":"vaporMassFlow","label":"Water-vapor mass flow","unit":"kg water/s","significantDigits":6},{"id":"volumeFlow","label":"Mixed volume flow","unit":"m³/s"},{"id":"enthalpyFlow","label":"Mixed enthalpy flow (0°C reference)","unit":"W"},{"id":"humidityRatio","label":"Humidity ratio","unit":"kg water/kg dry air","significantDigits":6},{"id":"specificHumidity","label":"Specific humidity","unit":"kg water/kg moist air","significantDigits":6},{"id":"dewFrostPoint","label":"Dew point over water / frost point over ice","unit":"°C"},{"id":"enthalpy","label":"Enthalpy per mass of dry air","unit":"J/kg dry air"},{"id":"specificVolume","label":"Volume per mass of dry air","unit":"m³/kg dry air"},{"id":"density","label":"Total moist-air density","unit":"kg/m³"},{"id":"vaporPressure","label":"Water-vapor partial pressure","unit":"Pa"},{"id":"saturationVaporPressure","label":"Saturation pressure at dry bulb","unit":"Pa"},{"id":"saturationBasis","label":"RH reference phase at dry bulb","unit":""}],"sources":[{"title":"ASHRAE Fundamentals 2025, Chapter 1: Adiabatic Mixing of Two Moist Airstreams","url":"https://handbook.ashrae.org/Handbooks/F25/SI/F25_Ch01/F25_Ch01_si.aspx","accessed":"2026-09-08"},{"title":"PsychroLib ideal moist-air property relationships","url":"https://psychrometrics.github.io/psychrolib/api_docs.html","accessed":"2026-09-08"},{"title":"PsychroLib MIT license and adaptation attribution","url":"/licenses/psychrolib.txt","accessed":"2026-09-08"}],"assumptions":["Mix two ideal moist-air streams adiabatically at a common pressure, with no work, heat transfer, added water or condensation. Inputs are dry-air mass flows, not total moist-air mass flows or volume flows.","Each inlet uses −50 to 80 °C, 0–100% RH and 20–120 kPa absolute, with pressure above saturation pressure at dry bulb. Both inlet states must be valid even if one flow is zero. Flows must be nonnegative and their sum positive.","Using dry-air flows m1 and m2, W = (m1W1 + m2W2)/(m1 + m2) and h = (m1h1 + m2h2)/(m1 + m2). Dry-air mass, water-vapor mass and enthalpy are conserved.","For h in J/kg dry air, T = (h − 2501000W)/(1006 + 1860W) °C. Relative humidity follows from vapor pressure at this mixed temperature. Do not average inlet RH or use volume-flow fractions directly.","Convert an inlet volume flow Q to dry-air flow with m = Q/v, using that inlet's specific volume in m³/kg dry air. Mixed volume flow is the total dry-air flow times mixed specific volume; total moist-air flow includes vapor mass.","RH uses ice saturation at or below 0.01 °C and liquid water above it. A supersaturated vapor-only prediction is rejected: condensation or ice and their energy effects require a separate equilibrium model.","Enthalpy flow is referenced to the model's 0 °C datum and is not a heating or cooling load. Pressure losses, fans, stratification and incomplete mixing are excluded."]},{"id":"humid-air-wet-bulb","name":"Humid Air from Dry and Wet Bulb","description":"Calculate an ideal moist-air state from dry bulb, thermodynamic wet bulb and absolute pressure, using ASHRAE relationships adapted from MIT-licensed PsychroLib.","category":"HVAC","endpoint":"/api/hvac/humid-air-wet-bulb","inputs":[{"name":"dryBulb","type":"number","unit":"°C","required":true,"defaultValue":"30"},{"name":"wetBulb","type":"number","unit":"°C","required":true,"defaultValue":"25"},{"name":"pressure","type":"number","unit":"Pa","required":true,"defaultValue":"95461"}],"outputs":[{"id":"relativeHumidity","label":"Relative humidity at dry bulb","unit":"%"},{"id":"humidityRatio","label":"Humidity ratio","unit":"kg water/kg dry air","significantDigits":6},{"id":"specificHumidity","label":"Specific humidity","unit":"kg water/kg moist air","significantDigits":6},{"id":"dewFrostPoint","label":"Dew point over water / frost point over ice","unit":"°C"},{"id":"enthalpy","label":"Enthalpy per mass of dry air","unit":"J/kg dry air"},{"id":"specificVolume","label":"Volume per mass of dry air","unit":"m³/kg dry air"},{"id":"density","label":"Total moist-air density","unit":"kg/m³"},{"id":"vaporPressure","label":"Water-vapor partial pressure","unit":"Pa"},{"id":"saturationVaporPressure","label":"Saturation pressure at dry bulb","unit":"Pa"},{"id":"saturationBasis","label":"RH reference phase at dry bulb","unit":""},{"id":"wetBulbDepression","label":"Dry minus wet bulb","unit":"°C"},{"id":"wetBulbBasis","label":"Wet-bulb energy-balance phase","unit":""}],"sources":[{"title":"PsychroLib: humidity ratio from wet bulb, ASHRAE equations 33 and 35","url":"https://psychrometrics.github.io/psychrolib/api_docs.html#psychrolib.GetHumRatioFromTWetBulb","accessed":"2026-09-08"},{"title":"PsychroLib MIT license and adaptation attribution","url":"/licenses/psychrolib.txt","accessed":"2026-09-08"}],"assumptions":["Calculate an ideal moist-air state from dry bulb, thermodynamic wet bulb and absolute pressure, using ASHRAE relationships adapted from MIT-licensed PsychroLib.","Dry bulb: −50 to 80 °C. Wet bulb: −50 °C through the dry-bulb temperature. Pressure: 20–120 kPa absolute, above saturation pressure at dry bulb. Pairs implying negative moisture content are rejected rather than clamped to a small positive value.","Let Ws = 0.621945 ps(Tw)/(p − ps(Tw)). For Tw ≥ 0 °C, W = [(2501 − 2.326Tw)Ws − 1.006(Td − Tw)] / [2501 + 1.86Td − 4.186Tw].","For Tw < 0 °C, use the ice balance: W = [(2830 − 0.24Tw)Ws − 1.006(Td − Tw)] / [2830 + 1.86Td − 2.1Tw]. The wet-bulb energy-balance branch changes at 0 °C; the saturation-pressure function changes at the 0.01 °C triple point.","pv = pW/(0.621945 + W); RH = 100pv/ps(Td). RH uses the saturation reference phase at dry bulb, which can differ from the wet-bulb balance phase. Enthalpy and specific volume are per kg of dry air; specific humidity and total density include water vapor.","Thermodynamic wet bulb is an adiabatic-saturation property. A physical wet-bulb thermometer can be affected by ventilation, radiation, wick condition and ice formation; this tool does not correct an instrument reading. No fog, liquid droplets, supersaturation or real-gas correction is included.","For a state given by relative humidity instead, use the Humid Air Properties calculator. Neither tool solves a full HVAC process or selects equipment."]},{"id":"composite-wall","name":"Composite Wall Heat Transfer","description":"Model up to three solid layers between two fluids. Number layers from side 1 toward side 2; set unused layer thicknesses to zero and retain positive conductivity inputs.","category":"Thermal","endpoint":"/api/thermal/composite-wall","inputs":[{"name":"area","type":"number","unit":"m²","required":true,"defaultValue":"10"},{"name":"temperature1","type":"number","unit":"K","required":true,"defaultValue":"293.15"},{"name":"temperature2","type":"number","unit":"K","required":true,"defaultValue":"273.15"},{"name":"film1","type":"number","unit":"W/(m²·K)","required":true,"defaultValue":"10"},{"name":"film2","type":"number","unit":"W/(m²·K)","required":true,"defaultValue":"25"},{"name":"thickness1","type":"number","unit":"m","required":true,"defaultValue":".1"},{"name":"conductivity1","type":"number","unit":"W/(m·K)","required":true,"defaultValue":"1"},{"name":"thickness2","type":"number","unit":"m","required":true,"defaultValue":".05"},{"name":"conductivity2","type":"number","unit":"W/(m·K)","required":true,"defaultValue":".04"},{"name":"thickness3","type":"number","unit":"m","required":true,"defaultValue":"0"},{"name":"conductivity3","type":"number","unit":"W/(m·K)","required":true,"defaultValue":"1"}],"outputs":[{"id":"heatRate","label":"Heat rate, side 1 toward side 2","unit":"W"},{"id":"heatFlux","label":"Heat flux, side 1 toward side 2","unit":"W/m²"},{"id":"overallCoefficient","label":"Overall heat-transfer coefficient","unit":"W/(m²·K)"},{"id":"resistancePerArea","label":"Area-normalized thermal resistance","unit":"m²·K/W"},{"id":"thermalResistance","label":"Total thermal resistance","unit":"K/W"},{"id":"surface1","label":"Side 1 wall surface","unit":"K"},{"id":"interface12","label":"Layer 1 / 2 interface","unit":"K"},{"id":"interface23","label":"Layer 2 / 3 interface","unit":"K"},{"id":"surface2","label":"Side 2 wall surface","unit":"K"}],"sources":[{"title":"US DOE Fundamentals Handbook: conduction and convection, HT-02 pages 9–10 and 20–22","url":"https://www.energy.gov/sites/default/files/2026-04/DOE-HDBK-1012-92_VOL2.pdf","accessed":"2026-09-08"}],"assumptions":["Model up to three solid layers between two fluids. Number layers from side 1 toward side 2; set unused layer thicknesses to zero and retain positive conductivity inputs.","R″ = 1/h₁ + Σ(Lᵢ/kᵢ) + 1/h₂; U = 1/R″. Each term uses the same wall area.","q″ = U(T₁ − T₂); Q = Aq″. Positive heat flow is from side 1 toward side 2.","Subtract q″ times each successive resistance to obtain surface and interface temperatures. Zero-thickness layers have no temperature drop.","Assumes steady one-dimensional heat flow, constant properties and perfect layer contact, without heat generation, radiation, air gaps, thermal bridges or phase change. Supply coefficients and conductivities appropriate to the operating conditions.","Illustrative inputs are not specified material properties or regulatory U-values. At the defaults, R″ = 1.49 m²·K/W and Q = 134.2282 W."]},{"id":"pump-duty","name":"Reservoir-to-Reservoir Pump Duty","description":"Combine reservoir elevation and pressure differences with pipe and local losses at an entered flow rate.","category":"Pumps","endpoint":"/api/pumps/duty","inputs":[{"name":"flowRate","type":"number","unit":"m³/s","required":true,"defaultValue":"0.01"},{"name":"length","type":"number","unit":"m","required":true,"defaultValue":"100"},{"name":"diameter","type":"number","unit":"m","required":true,"defaultValue":"0.1"},{"name":"roughness","type":"number","unit":"m","required":true,"defaultValue":"0.000045"},{"name":"density","type":"number","unit":"kg/m³","required":true,"defaultValue":"998"},{"name":"viscosity","type":"number","unit":"Pa·s","required":true,"defaultValue":"0.001"},{"name":"elevationRise","type":"number","unit":"m","required":true,"defaultValue":"10"},{"name":"pressureDifference","type":"number","unit":"Pa","required":true,"defaultValue":"0"},{"name":"lossCoefficient","type":"number","unit":"1","required":true,"defaultValue":"5"},{"name":"pumpEfficiency","type":"number","unit":"0–1","required":true,"defaultValue":"0.7"},{"name":"motorEfficiency","type":"number","unit":"0–1","required":true,"defaultValue":"0.9"}],"outputs":[{"id":"systemHead","label":"Signed system head","unit":"m"},{"id":"pumpHead","label":"Head to add by pumping","unit":"m"},{"id":"surplusHead","label":"Surplus head requiring dissipation","unit":"m"},{"id":"frictionHead","label":"Straight-pipe friction head","unit":"m"},{"id":"fittingHead","label":"Local-loss head","unit":"m"},{"id":"pressureHead","label":"Reservoir pressure head difference","unit":"m"},{"id":"hydraulicPower","label":"Hydraulic power","unit":"W"},{"id":"shaftPower","label":"Pump shaft power","unit":"W"},{"id":"electricalPower","label":"Motor electrical input","unit":"W"},{"id":"velocity","label":"Pipe velocity","unit":"m/s"},{"id":"reynoldsNumber","label":"Reynolds number","unit":"1"},{"id":"flowRegime","label":"Flow regime","unit":""}],"sources":[{"title":"US EPA EPANET 2.2: Pipe friction and minor losses","url":"https://usepa.github.io/EPANET2.2/3_network_model.html","accessed":"2026-09-08"},{"title":"KSB: Pump power input","url":"https://www.ksb.com/en-global/centrifugal-pump-lexicon/article/power-input-1117260","accessed":"2026-09-08"},{"title":"KSB: Pump efficiency","url":"https://www.ksb.com/en-global/centrifugal-pump-lexicon/article/pump-efficiency-1116510","accessed":"2026-09-08"}],"assumptions":["Combine reservoir elevation and pressure differences with pipe and local losses at an entered flow rate.","Hsystem = Δz + Δp/(ρg) + hf + K v²/(2g). Reservoir velocities are negligible; all loss coefficients must refer to the same pipe velocity.","Pipe friction uses Darcy–Weisbach with 64/Re below Re 2300 and Swamee–Jain otherwise. The transition range is uncertain.","For positive head: Phydraulic = ρgQH, Pshaft = Phydraulic/ηpump, Pelectrical = Pshaft/ηmotor. Enter efficiencies as fractions, not percentages.","Negative system head indicates surplus driving head at the imposed flow. Pumping power is zero in that case; control or dissipation would be needed. This is not turbine-output prediction.","Use liquid properties for the operating temperature and pressure. Assumes steady incompressible single-phase flow and one uniform pipe bore; include entrance, exit, valve and fitting losses in K.","This is a duty estimate, not a pump selection, actual operating-point solution, motor nameplate rating or NPSH/cavitation check. Use manufacturer curves and an application-specific margin separately."]},{"id":"sound-intensity-level","name":"Sound Intensity Level","description":"Convert positive intensity to level: L = 10 log₁₀(I/Iref).","category":"Acoustics","endpoint":"/api/acoustics/sound-intensity-level","inputs":[{"name":"intensity","type":"number","unit":"W/m²","required":true,"defaultValue":"0.000001"},{"name":"referenceIntensity","type":"number","unit":"W/m²","required":true,"defaultValue":"1e-12"}],"outputs":[{"id":"intensityLevel","label":"Intensity level relative to reference","unit":"dB"}],"sources":[{"title":"OpenStax University Physics: Sound Intensity","url":"https://openstax.org/books/university-physics-volume-1/pages/17-3-sound-intensity","accessed":"2026-09-08"}],"assumptions":["Convert positive intensity to level: L = 10 log₁₀(I/Iref).","Default reference: 10⁻¹² W/m². Example: I = 10⁻⁶ W/m² gives 60 dB.","Negative levels are valid below the reference. Zero intensity corresponds to negative infinity and is excluded.","This is intensity level, not sound-pressure level, A-weighted level or perceived loudness."]},{"id":"spherical-sound-spreading","name":"Spherical Sound Spreading","description":"Ideal full-sphere spreading: I = P/(4πr²), then L = 10 log₁₀(I/Iref).","category":"Acoustics","endpoint":"/api/acoustics/spherical-sound-spreading","inputs":[{"name":"acousticPower","type":"number","unit":"W","required":true,"defaultValue":"0.01"},{"name":"distance","type":"number","unit":"m","required":true,"defaultValue":"10"},{"name":"referenceIntensity","type":"number","unit":"W/m²","required":true,"defaultValue":"1e-12"}],"outputs":[{"id":"intensity","label":"Sound intensity","unit":"W/m²"},{"id":"intensityLevel","label":"Intensity level relative to reference","unit":"dB"}],"sources":[{"title":"OpenStax University Physics: Sound Intensity","url":"https://openstax.org/books/university-physics-volume-1/pages/17-3-sound-intensity","accessed":"2026-09-08"}],"assumptions":["Ideal full-sphere spreading: I = P/(4πr²), then L = 10 log₁₀(I/Iref).","Example: 0.01 W at 10 m gives about 7.958 × 10⁻⁶ W/m², or 69.01 dB relative to 10⁻¹² W/m².","Assumes an isotropic point source in a lossless free field. Excludes reflections, ground effects, barriers, atmospheric absorption and near-field effects.","Use radiated acoustic power, not electrical input power. This model is not a noise-exposure assessment."]},{"id":"surface-convection","name":"Surface Convection","description":"Calculate surface convection using Q̇ = hAΔT and q″ = hΔT.","category":"Thermal","endpoint":"/api/thermal/surface-convection","inputs":[{"name":"coefficient","type":"number","unit":"W/(m²·K)","required":true,"defaultValue":"10"},{"name":"area","type":"number","unit":"m²","required":true,"defaultValue":"2"},{"name":"temperatureDifference","type":"number","unit":"K","required":true,"defaultValue":"30"}],"outputs":[{"id":"heatRate","label":"Heat transfer rate","unit":"W"},{"id":"heatFlux","label":"Heat flux","unit":"W/m²"},{"id":"thermalResistance","label":"Convection resistance","unit":"K/W"}],"sources":[{"title":"MIT Unified Engineering: Convective Heat Transfer","url":"https://web.mit.edu/16.unified/OldFiles/www/FALL/thermodynamics/notes/node121.html","accessed":"2026-09-08"}],"assumptions":["Calculate surface convection using Q̇ = hAΔT and q″ = hΔT.","Positive results mean heat leaves the surface; negative results mean heat enters it. R = 1/(hA).","Example: h = 10 W/(m²·K), A = 2 m² and ΔT = 30 K give 600 W, 300 W/m² and 0.05 K/W.","Supply a mean coefficient appropriate to the geometry, fluid and flow conditions. This calculator does not estimate h or model variation along the surface.","Assumes a uniform surface temperature and a defined bulk-fluid temperature. Conduction, radiation and transient temperature changes are excluded."]},{"id":"enclosure-radiation","name":"Thermal Radiation to Large Surroundings","description":"Net thermal radiation: Q̇ = εσA(Ts⁴ − Tsur⁴). Absolute temperatures must be entered in kelvin.","category":"Thermal","endpoint":"/api/thermal/enclosure-radiation","inputs":[{"name":"emissivity","type":"number","unit":"0–1","required":true,"defaultValue":"0.8"},{"name":"area","type":"number","unit":"m²","required":true,"defaultValue":"1"},{"name":"surfaceTemperature","type":"number","unit":"K","required":true,"defaultValue":"400"},{"name":"surroundingsTemperature","type":"number","unit":"K","required":true,"defaultValue":"300"}],"outputs":[{"id":"heatRate","label":"Net radiation heat rate","unit":"W"},{"id":"heatFlux","label":"Net radiation heat flux","unit":"W/m²"}],"sources":[{"title":"OpenStax: Mechanisms of Heat Transfer","url":"https://openstax.org/books/university-physics-volume-2/pages/1-6-mechanisms-of-heat-transfer","accessed":"2026-09-08"},{"title":"NIST fundamental physical constants","url":"https://physics.nist.gov/cuu/Constants/index.html","accessed":"2026-09-08"}],"assumptions":["Net thermal radiation: Q̇ = εσA(Ts⁴ − Tsur⁴). Absolute temperatures must be entered in kelvin.","Uses σ = 5.670374419 × 10⁻⁸ W/(m²·K⁴), rounded from the Stefan–Boltzmann constant.","Positive heat rate leaves the surface; hotter surroundings produce a negative result. Equal temperatures give zero net exchange.","Example: ε = 0.8, A = 1 m², Ts = 400 K and Tsur = 300 K give approximately 793.85 W outward.","Model: a gray surface surrounded by a much larger isothermal enclosure, with view factor one and a nonparticipating intervening medium.","Does not solve exchange between finite surfaces, solar absorption, semitransparent materials, participating gases or combined convection. Select emissivity for the actual surface condition."]},{"id":"sensible-heat","name":"Sensible Heat","description":"Q = mcΔT; heat capacity C = mc. Negative Q represents heat removed.","category":"Thermal","endpoint":"/api/thermal/sensible-heat","inputs":[{"name":"mass","type":"number","unit":"kg","required":true,"defaultValue":"10"},{"name":"specificHeat","type":"number","unit":"J/(kg·K)","required":true,"defaultValue":"1000"},{"name":"temperatureChange","type":"number","unit":"K","required":true,"defaultValue":"20"}],"outputs":[{"id":"heat","label":"Heat added","unit":"J"},{"id":"heatCapacity","label":"Total heat capacity","unit":"J/K"}],"sources":[{"title":"OpenStax University Physics Volume 2: Sensible Heat","url":"https://openstax.org/books/university-physics-volume-2/pages/1-4-heat-transfer-specific-heat-and-calorimetry","accessed":"2026-09-08"}],"assumptions":["Q = mcΔT; heat capacity C = mc. Negative Q represents heat removed.","Example: 10 kg, 1000 J/(kg·K), and a 20 K rise requires 200,000 J. The specific heat is illustrative.","Assumes constant specific heat and no phase change. Choose the specific heat appropriate to the process, such as constant pressure or constant volume. Excludes equipment heat capacity and environmental losses.","Source: https://openstax.org/books/university-physics-volume-2/pages/1-4-heat-transfer-specific-heat-and-calorimetry"]},{"id":"linear-expansion","name":"Free Linear Thermal Expansion","description":"ΔL = αL₀ΔT; final length = L₀ + ΔL. Cooling or a negative expansion coefficient can produce contraction.","category":"Thermal","endpoint":"/api/thermal/linear-expansion","inputs":[{"name":"originalLength","type":"number","unit":"m","required":true,"defaultValue":"10"},{"name":"coefficient","type":"number","unit":"1/K","required":true,"defaultValue":"0.000012"},{"name":"temperatureChange","type":"number","unit":"K","required":true,"defaultValue":"50"}],"outputs":[{"id":"lengthChange","label":"Length change","unit":"m"},{"id":"finalLength","label":"Final length","unit":"m"}],"sources":[{"title":"OpenStax University Physics Volume 2: Free Linear Thermal Expansion","url":"https://openstax.org/books/university-physics-volume-2/pages/1-3-thermal-expansion","accessed":"2026-09-08"}],"assumptions":["ΔL = αL₀ΔT; final length = L₀ + ΔL. Cooling or a negative expansion coefficient can produce contraction.","Example: 10 m, α = 0.000012/K and 50 K gives 0.006 m expansion. The coefficient is illustrative.","Assumes uniform temperature and free expansion with a suitable mean coefficient over the temperature interval. It does not calculate restraint forces, thermal stress, buckling or joint capacity.","Source: https://openstax.org/books/university-physics-volume-2/pages/1-3-thermal-expansion"]},{"id":"ideal-gas-density","name":"Ideal Gas Density","description":"Ideal gas relation p = ρRT gives density ρ = p/(RT). Specific volume is 1/ρ.","category":"Gases","endpoint":"/api/gases/ideal-gas-density","inputs":[{"name":"absolutePressure","type":"number","unit":"Pa","required":true,"defaultValue":"101325"},{"name":"absoluteTemperature","type":"number","unit":"K","required":true,"defaultValue":"300"},{"name":"specificGasConstant","type":"number","unit":"J/(kg·K)","required":true,"defaultValue":"287"}],"outputs":[{"id":"density","label":"Density","unit":"kg/m³"},{"id":"specificVolume","label":"Specific volume","unit":"m³/kg"}],"sources":[{"title":"NASA Glenn: Equation of State","url":"https://www1.grc.nasa.gov/beginners-guide-to-aeronautics/equation-of-state/","accessed":"2026-09-08"}],"assumptions":["Ideal gas relation p = ρRT gives density ρ = p/(RT). Specific volume is 1/ρ.","Pressure must be absolute and temperature must be in kelvins. R is the mass-based gas constant for the gas or mixture, not the universal molar constant.","Example: 101325 Pa, 300 K and R = 287 J/(kg·K) gives approximately 1.17683 kg/m³. The example R is a rounded dry-air assumption.","This is an ideal-gas estimate. Dense gases, conditions near condensation or the critical point, and mixtures with changing composition require appropriate real-fluid property data.","Source: https://www1.grc.nasa.gov/beginners-guide-to-aeronautics/equation-of-state/"]},{"id":"axial-bar","name":"Axial Bar Stress and Extension","description":"For a uniform bar under centered axial load, stress σ = F/A, strain ε = σ/E, and length change δ = εL.","category":"Mechanics","endpoint":"/api/mechanics/axial-bar","inputs":[{"name":"force","type":"number","unit":"N","required":true,"defaultValue":"10000"},{"name":"area","type":"number","unit":"m²","required":true,"defaultValue":"0.001"},{"name":"length","type":"number","unit":"m","required":true,"defaultValue":"2"},{"name":"youngModulus","type":"number","unit":"Pa","required":true,"defaultValue":"200000000000"}],"outputs":[{"id":"stress","label":"Axial stress","unit":"Pa"},{"id":"strain","label":"Axial strain","unit":"m/m"},{"id":"extension","label":"Length change","unit":"m"}],"sources":[{"title":"OpenStax University Physics Volume 1 §12.3","url":"https://openstax.org/books/university-physics-volume-1/pages/12-3-stress-strain-and-elastic-modulus","accessed":"2026-09-08"}],"assumptions":["For a uniform bar under centered axial load, stress σ = F/A, strain ε = σ/E, and length change δ = εL.","Example: 10,000 N, 0.001 m², 2 m and E = 200 GPa gives 10 MPa stress, 0.00005 strain and 0.0001 m extension. The modulus is illustrative; use material- and temperature-appropriate data.","Negative force represents compression and produces negative strain and shortening in this model.","Valid only for small linear-elastic deformation. Does not check yield, buckling, fatigue, connections, stress concentrations or eccentric loading. Compression results do not establish column stability.","Source: https://openstax.org/books/university-physics-volume-1/pages/12-3-stress-strain-and-elastic-modulus"]},{"id":"dc-resistor","name":"DC Resistor Current and Power","description":"For an ideal ohmic resistor, I = V/R and P = VI = V²/R.","category":"Electrical","endpoint":"/api/electrical/dc-resistor","inputs":[{"name":"voltage","type":"number","unit":"V","required":true,"defaultValue":"12"},{"name":"resistance","type":"number","unit":"Ω","required":true,"defaultValue":"100"}],"outputs":[{"id":"current","label":"Current","unit":"A"},{"id":"power","label":"Dissipated power","unit":"W"}],"sources":[{"title":"OpenStax University Physics Volume 2 §9.5","url":"https://openstax.org/books/university-physics-volume-2/pages/9-5-electrical-energy-and-power","accessed":"2026-09-08"}],"assumptions":["For an ideal ohmic resistor, I = V/R and P = VI = V²/R.","Example: 12 V across 100 Ω gives 0.12 A and 1.44 W. Reversing voltage reverses current but leaves dissipated power positive.","Assumes constant DC voltage and resistance. Does not model resistance changing with temperature, reactive AC loads, source impedance or nonlinear devices.","Calculated dissipation is not a selected component rating; consult the component’s thermal derating and operating limits.","Source: https://openstax.org/books/university-physics-volume-2/pages/9-5-electrical-energy-and-power"]},{"id":"wall-conduction","name":"Plane Wall Heat Conduction","description":"For steady one-dimensional conduction, heat rate = kAΔT/L and wall resistance = L/(kA).","category":"Thermal","endpoint":"/api/thermal/wall-conduction","inputs":[{"name":"conductivity","type":"number","unit":"W/(m·K)","required":true,"defaultValue":"0.04"},{"name":"area","type":"number","unit":"m²","required":true,"defaultValue":"10"},{"name":"thickness","type":"number","unit":"m","required":true,"defaultValue":"0.1"},{"name":"temperatureDifference","type":"number","unit":"K","required":true,"defaultValue":"20"}],"outputs":[{"id":"heatRate","label":"Heat rate from surface 1 to 2","unit":"W"},{"id":"heatFlux","label":"Heat flux from surface 1 to 2","unit":"W/m²"},{"id":"thermalResistance","label":"Wall thermal resistance","unit":"K/W"}],"sources":[{"title":"OpenStax University Physics Volume 2 §1.6","url":"https://openstax.org/books/university-physics-volume-2/pages/1-6-mechanisms-of-heat-transfer","accessed":"2026-09-08"}],"assumptions":["For steady one-dimensional conduction, heat rate = kAΔT/L and wall resistance = L/(kA).","Example: k = 0.04 W/(m·K), A = 10 m², L = 0.1 m and ΔT = 20 K gives 80 W, 8 W/m² and 0.25 K/W. Conductivity here is illustrative; use a value appropriate to the material and operating temperature.","The temperature difference is between wall surfaces, not surrounding air. A negative difference reverses the heat-flow direction.","Assumes constant conductivity, no internal heat generation and negligible edge effects. Excludes surface convection, radiation, contact resistance and thermal bridges.","Source: https://openstax.org/books/university-physics-volume-2/pages/1-6-mechanisms-of-heat-transfer"]},{"id":"hydrostatic-pressure","name":"Hydrostatic Pressure","description":"For a fluid at rest with constant density and gravity: Δp = ρgh.","category":"Hydraulics","endpoint":"/api/hydraulics/hydrostatic-pressure","inputs":[{"name":"density","type":"number","unit":"kg/m³","required":true,"defaultValue":"1000"},{"name":"depth","type":"number","unit":"m","required":true,"defaultValue":"10"},{"name":"surfacePressure","type":"number","unit":"Pa","required":true,"defaultValue":"101325"},{"name":"gravity","type":"number","unit":"m/s²","required":true,"defaultValue":"9.80665"}],"outputs":[{"id":"pressureIncrease","label":"Pressure increase below surface","unit":"Pa"},{"id":"absolutePressure","label":"Absolute pressure at depth","unit":"Pa"}],"sources":[{"title":"OpenStax College Physics 2e §11.4","url":"https://openstax.org/books/college-physics-2e/pages/11-4-variation-of-pressure-with-depth-in-a-fluid","accessed":"2026-09-08"}],"assumptions":["For a fluid at rest with constant density and gravity: Δp = ρgh.","Absolute pressure at depth is surface absolute pressure + Δp. The increase is gauge pressure only when the reference is the surface pressure.","Example: 1000 kg/m³ at 10 m and g = 9.80665 m/s² gives 98,066.5 Pa increase; with 101,325 Pa at the surface, absolute pressure is 199,391.5 Pa.","Not applicable to a flowing system or a deep gas column with appreciably varying density.","Source: OpenStax, College Physics 2e §11.4 — https://openstax.org/books/college-physics-2e/pages/11-4-variation-of-pressure-with-depth-in-a-fluid"]},{"id":"dynamic-pressure","name":"Dynamic Pressure","description":"Dynamic pressure q = ½ρv² is kinetic energy per unit volume.","category":"Hydraulics","endpoint":"/api/hydraulics/dynamic-pressure","inputs":[{"name":"density","type":"number","unit":"kg/m³","required":true,"defaultValue":"1.225"},{"name":"velocity","type":"number","unit":"m/s","required":true,"defaultValue":"20"}],"outputs":[{"id":"dynamicPressure","label":"Dynamic pressure","unit":"Pa"}],"sources":[{"title":"NASA Glenn: Dynamic Pressure","url":"https://www.grc.nasa.gov/www/BGH/dynpress.html","accessed":"2026-09-08"}],"assumptions":["Dynamic pressure q = ½ρv² is kinetic energy per unit volume.","Example: density 1.225 kg/m³ and speed 20 m/s gives 245 Pa. The example density is an input assumption, not an atmospheric property lookup.","Equating q with stagnation pressure minus static pressure requires the incompressible, lossless Bernoulli assumptions. Compressible Pitot measurements need a different relation.","Source: NASA Glenn, Dynamic Pressure — https://www.grc.nasa.gov/www/BGH/dynpress.html"]},{"id":"unit-converter","name":"Engineering Unit Converter","category":"General & Utilities","description":"Convert values within the published unit categories using shared website definitions.","endpoint":"/api/units","inputs":[{"name":"category","type":"string","unit":"","required":true,"defaultValue":"volume"},{"name":"value","type":"number","unit":"Selected source unit","required":true,"defaultValue":"1"},{"name":"fromUnit","type":"string","unit":"","required":true,"defaultValue":"gal_us"},{"name":"toUnit","type":"string","unit":"","required":true,"defaultValue":"L"}],"outputs":[{"id":"convertedValue","label":"Converted value","unit":"Selected target unit"},{"id":"category","label":"Category ID","unit":""},{"id":"fromUnit","label":"Source unit ID","unit":""},{"id":"toUnit","label":"Target unit ID","unit":""},{"id":"symbol","label":"Target unit symbol","unit":""}],"sources":[],"assumptions":["Use category and unit IDs from GET /api/units. Both units must belong to the selected category.","Temperature points use scale offsets; temperature differences use factors only. Values are scale arithmetic, not a physical-state assessment.","Unit scaling preserves pressure reference and gas reference conditions. Dynamic and kinematic viscosity cannot be interconverted without density.","Sources are available for selected categories. Missing references mean the legacy category has not completed a source review. Conversion does not add measurement precision."]},{"id":"pressure-drop","name":"Pressure Drop Calculator","description":"Calculates pressure drop using the Darcy-Weisbach equation","category":"Hydraulics","endpoint":"/api/hydraulics/pressure-drop","inputs":[{"name":"Q","type":"number","unit":"m³/s","required":true,"defaultValue":"0.1"},{"name":"L","type":"number","unit":"m","required":true,"defaultValue":"100"},{"name":"D","type":"number","unit":"m","required":true,"defaultValue":"0.1"},{"name":"roughness","type":"number","unit":"m","required":true,"defaultValue":"0.000045"},{"name":"density","type":"number","unit":"kg/m³","required":true,"defaultValue":"998"},{"name":"viscosity","type":"number","unit":"Pa·s","required":true,"defaultValue":"0.001"}],"outputs":[{"id":"pressureDrop","label":"Pressure Drop","unit":"Pa"},{"id":"frictionFactor","label":"Friction Factor","unit":""},{"id":"reynoldsNumber","label":"Reynolds Number","unit":""},{"id":"velocity","label":"Mean Velocity","unit":"m/s"}],"sources":[{"title":"US EPA EPANET 2.2: Pipe head loss and friction factors","url":"https://usepa.github.io/EPANET2.2/3_network_model.html","accessed":"2026-09-08"}],"assumptions":["Calculates pressure drop using the Darcy-Weisbach equation","Uses Darcy friction factor: 64/Re below Re 2300, otherwise the Swamee–Jain approximation. The 2300–4000 transition range is uncertain; this implementation does not reproduce EPANET’s transitional interpolation.","Assumes steady, fully developed, single-phase incompressible flow in a full circular pipe. Input dynamic viscosity, density and roughness for the operating conditions.","Returns straight-pipe friction loss only. Fittings, valves, elevation changes and acceleration are excluded. The friction factor is Darcy, not Fanning."]},{"id":"npsh-calculator","name":"NPSH Calculator","description":"Reservoir model: NPSHA = (surface absolute pressure − vapor pressure)/(density × g) + liquid elevation − suction losses; negligible reservoir velocity","category":"Pumps","endpoint":"/api/pumps/npsh","inputs":[{"name":"elevation","type":"number","unit":"m","required":true,"defaultValue":"2"},{"name":"atmosphericPressure","type":"number","unit":"Pa absolute","required":true,"defaultValue":"101325"},{"name":"vaporPressure","type":"number","unit":"Pa","required":true,"defaultValue":"2300"},{"name":"density","type":"number","unit":"kg/m³","required":true,"defaultValue":"998"},{"name":"npshRequired","type":"number","unit":"m","required":true,"defaultValue":"3"},{"name":"frictionLosses","type":"number","unit":"m","required":true,"defaultValue":"2.1"}],"outputs":[{"id":"npshAvailable","label":"NPSH Available","unit":"m"},{"id":"npshRequired","label":"NPSH Required","unit":"m"},{"id":"npshMargin","label":"NPSH Margin","unit":"m"}],"sources":[{"title":"KSB Centrifugal Pump Lexicon: NPSH and cavitation criteria","url":"https://www.ksb.com/en-global/centrifugal-pump-lexicon/article/npsh-1116954","accessed":"2026-09-08"}],"assumptions":["Reservoir model: NPSHA = (surface absolute pressure − vapor pressure)/(density × g) + liquid elevation − suction losses; negligible reservoir velocity","Uses the required NPSH entered from the manufacturer curve; it cannot be inferred from suction conditions","Returns the arithmetic margin NPSHA minus the supplied NPSHR. A positive margin alone does not establish cavitation-free operation or an adequate application-specific margin.","Check the pump curve at the actual flow and speed and confirm its cavitation criterion. NPSH3 refers to a 3% head-drop criterion, not the onset of cavitation. Include suction entry, valve and fitting losses."]},{"id":"pipe-sizing","name":"Pipe Sizing Calculator","description":"Finds a minimum internal bore satisfying the supplied mean-velocity and straight-pipe pressure-gradient limits.","category":"Hydraulics","endpoint":"/api/hydraulics/pipe-sizing","inputs":[{"name":"flowRate","type":"number","unit":"m³/s","required":true,"defaultValue":"0.05"},{"name":"targetVelocity","type":"number","unit":"m/s","required":true,"defaultValue":"2.0"},{"name":"maxPressureDrop","type":"number","unit":"Pa/m","required":true,"defaultValue":"100"},{"name":"density","type":"number","unit":"kg/m³","required":true,"defaultValue":"998"},{"name":"viscosity","type":"number","unit":"Pa·s","required":true,"defaultValue":"0.001"},{"name":"roughness","type":"number","unit":"m","required":true,"defaultValue":"0.000045"}],"outputs":[{"id":"recommendedDiameter","label":"Recommended Diameter","unit":"m"},{"id":"actualVelocity","label":"Actual Velocity","unit":"m/s"},{"id":"actualPressureDrop","label":"Actual Pressure Drop","unit":"Pa/m"}],"sources":[{"title":"US EPA EPANET 2.2: Pipe head loss and friction factors","url":"https://usepa.github.io/EPANET2.2/3_network_model.html","accessed":"2026-09-08"}],"assumptions":["Finds a minimum internal bore satisfying the supplied mean-velocity and straight-pipe pressure-gradient limits.","Considers velocity constraints and pressure drop limits","Uses the pressure-drop calculator’s Darcy friction model and limitations. Transition-region results are uncertain. It does not select wall thickness, pressure class or a pipe-network design.","Returns minimum internal diameter; choose a commercial size with an equal or larger bore"]}]