mechanical-engineering

star 2

Mechanical engineering fundamentals including statics, dynamics, machine design, heat transfer, fluid mechanics, and manufacturing processes

ffsshhttiikk By ffsshhttiikk schedule Updated 2/28/2026

name: mechanical-engineering description: Mechanical engineering fundamentals including statics, dynamics, machine design, heat transfer, fluid mechanics, and manufacturing processes license: MIT compatibility: opencode metadata: audience: engineers category: engineering

What I do

  • Analyze forces and moments in static and dynamic systems
  • Design mechanical components and machine elements
  • Calculate thermal loads and heat transfer rates
  • Model fluid flow and pressure distributions
  • Specify manufacturing processes and materials
  • Perform finite element analysis for stress analysis
  • Create detailed engineering drawings and specifications

When to use me

When designing mechanical systems, analyzing structural behavior, calculating thermal performance, or specifying manufacturing requirements for mechanical components.

Core Concepts

  • Statics and equilibrium equations
  • Dynamics and vibrational analysis
  • Stress-strain relationships and failure criteria
  • Heat conduction, convection, and radiation
  • Fluid statics and dynamics (Bernoulli, Navier-Stokes)
  • Machine elements (gears, bearings, shafts, fasteners)
  • Manufacturing processes (CNC, casting, forging, additive manufacturing)
  • Finite element analysis basics
  • Materials selection and properties
  • Thermodynamic cycles and energy conversion

Code Examples

Stress Analysis Calculator

import math
from dataclasses import dataclass
from typing import Tuple

@dataclass
class Material:
    name: str
    yield_strength: float  # MPa
    ultimate_strength: float  # MPa
    elastic_modulus: float  # GPa
    poisson_ratio: float

ALUMINUM_6061 = Material(
    name="Aluminum 6061-T6",
    yield_strength=276,
    ultimate_strength=310,
    elastic_modulus=68.9,
    poisson_ratio=0.33
)

def calculate_bending_stress(
    moment: float,
    section_modulus: float
) -> float:
    """Calculate bending stress from bending moment."""
    return moment / section_modulus

def calculate_torsional_shear_stress(
    torque: float,
    polar_moment: float
) -> float:
    """Calculate torsional shear stress."""
    return torque / polar_moment

def combined_stress_analysis(
    normal_stress: float,
    shear_stress: float,
    yield_strength: float,
    factor_of_safety: float = 2.0
) -> Tuple[float, bool]:
    """Analyze combined stress using von Mises criterion."""
    von_mises = math.sqrt(
        normal_stress**2 + 3 * shear_stress**2
    )
    allowable = yield_strength / factor_of_safety
    return von_mises, von_mises <= allowable

# Example: Shaft under combined loading
moment = 500e3  # N-mm
torque = 300e3  # N-mm
section_modulus = 5000  # mm³
polar_moment = 10000  # mm⁴

sigma = calculate_bending_stress(moment, section_modulus)
tau = calculate_torsional_shear_stress(torque, polar_moment)
vm_stress, is_safe = combined_stress_analysis(
    sigma, tau, ALUMINUM_6061.yield_strength
)
print(f"Bending stress: {sigma:.2f} MPa")
print(f"Shear stress: {tau:.2f} MPa")
print(f"Von Mises stress: {vm_stress:.2f} MPa")
print(f"Design safe: {is_safe}")

Heat Transfer Analysis

from dataclasses import dataclass
from typing import Optional

@dataclass
class ThermalProperties:
    thermal_conductivity: float  # W/(m·K)
    specific_heat: float  # J/(kg·K)
    density: float  # kg/m³

COPPER = ThermalProperties(
    thermal_conductivity=401,
    specific_heat=385,
    density=8960
)

def conduction_heat_transfer(
    k: float,
    A: float,
    dT: float,
    thickness: float
) -> float:
    """Calculate heat transfer through conduction."""
    return k * A * dT / thickness

def convective_heat_transfer(
    h: float,
    A: float,
    T_surface: float,
    T_fluid: float
) -> float:
    """Calculate heat transfer from convection."""
    return h * A * (T_surface - T_fluid)

def thermal_resistance_network(
    R_conv: float,
    R_cond: float
) -> float:
    """Calculate total thermal resistance."""
    return R_conv + R_cond

def heat_sink_design(
    power_dissipation: float,
    T_ambient: float,
    T_junction_max: float,
    R_jc: float,
    R_cs: float
) -> dict:
    """Design heat sink for power dissipation."""
    R_sa_max = (T_junction_max - T_ambient) / power_dissipation - R_jc - R_cs
    return {
        "max_sink_thermal_resistance": R_sa_max,
        "junction_temp_estimate": T_ambient + power_dissipation * (R_jc + R_cs + R_sa_max)
    }

# Example: Electronic heat sink
power = 50  # W
T_amb = 25  # °C
T_junction_max = 125  # °C
R_junction_to_case = 0.5  # °C/W
R_case_to_sink = 0.1  # °C/W

result = heat_sink_design(power, T_amb, T_junction_max, R_junction_to_case, R_case_to_sink)
print(f"Maximum sink resistance: {result['max_sink_thermal_resistance']:.2f} °C/W")
print(f"Estimated junction temperature: {result['junction_temp_estimate']:.1f} °C")

Gear Design Calculations

from dataclasses import dataclass
from typing import Tuple
import math

@dataclass
class GearParameters:
    module: float  # mm
    num_teeth: int
    face_width: float  # mm
    pressure_angle: float  # degrees
    material_strength: float  # MPa

def calculate_pitch_diameter(module: float, num_teeth: int) -> float:
    """Calculate gear pitch diameter."""
    return module * num_teeth

def calculate_center_distance(
    d1: float,
    d2: float
) -> float:
    """Calculate gear center distance."""
    return (d1 + d2) / 2

def lewis_bending_stress(
    Ft: float,
    b: float,
    m: float,
    Y: float
) -> float:
    """Calculate bending stress using Lewis formula."""
    return Ft / (b * m * Y)

def calculate_dynamic_load(
    Ft: float,
    V: float,
    Kv: float = 1.0
) -> float:
    """Calculate dynamic load on gear teeth."""
    return Ft * Kv * (1 + V / 20)

def gear_ratio(driven: int, driver: int) -> float:
    """Calculate gear ratio."""
    return driven / driver

# Example: Spur gear design
driver_teeth = 20
driven_teeth = 40
module = 2.5  # mm
face_width = 20  # mm
transmitted_load = 500  # N
lewis_form_factor = 0.32

pitch_diameter = calculate_pitch_diameter(module, driver_teeth)
ratio = gear_ratio(driven_teeth, driver_teeth)
stress = lewis_bending_stress(transmitted_load, face_width, module, lewis_form_factor)
print(f"Pitch diameter: {pitch_diameter:.2f} mm")
print(f"Gear ratio: {ratio:.2f}")
print(f"Bending stress: {stress:.2f} MPa")

Fluid Flow Calculation

def reynolds_number(
    rho: float,
    V: float,
    L: float,
    mu: float
) -> float:
    """Calculate Reynolds number for flow regime."""
    return rho * V * L / mu

def darcy_weisbach_loss(
    f: float,
    L: float,
    D: float,
    V: float,
    g: float = 9.81
) -> float:
    """Calculate head loss using Darcy-Weisbach equation."""
    return f * (L / D) * (V**2 / (2 * g))

def bernoulli_equation(
    p1: float,
    V1: float,
    z1: float,
    p2: float,
    V2: float,
    z2: float,
    g: float = 9.81,
    rho: float = 1000
) -> float:
    """Apply Bernoulli's equation between two points."""
    return (p1/rho + V1**2/(2*g) + z1) - (p2/rho + V2**2/(2*g) + z2)

def pipe_diameter_flow(
    Q: float,
    V: float
) -> float:
    """Calculate pipe diameter from flow rate and velocity."""
    return (4 * Q / (math.pi * V))**0.5

# Example: Water flow in pipe
flow_rate = 0.01  # m³/s
velocity = 2.0  # m/s
pipe_length = 100  # m
friction_factor = 0.02

diameter = pipe_diameter_flow(flow_rate, velocity)
head_loss = darcy_weisbach_loss(friction_factor, pipe_length, diameter, velocity)
print(f"Required pipe diameter: {diameter*1000:.2f} mm")
print(f"Head loss: {head_loss:.3f} m")

Manufacturing Process Selection

from enum import Enum
from dataclasses import dataclass

class ManufacturingProcess(Enum):
    CNC_MACHINING = "CNC Machining"
    CASTING = "Casting"
    FORGING = "Forging"
    ADDITIVE_MANUFACTURING = "Additive Manufacturing"
    SHEET_METAL = "Sheet Metal Forming"
    INJECTION_MOLDING = "Injection Molding"

@dataclass
class PartRequirements:
    material: str
    quantity: int
    tolerance: float  # mm
    surface_finish: float  # Ra
    complexity: float  # 1-10
    batch_size: str  # prototype, low, medium, high

def select_manufacturing_process(
    requirements: PartRequirements
) -> ManufacturingProcess:
    """Select optimal manufacturing process based on requirements."""
    if requirements.batch_size == "prototype":
        if requirements.complexity > 7:
            return ManufacturingProcess.ADDITIVE_MANUFACTURING
        return ManufacturingProcess.CNC_MACHINING
    elif requirements.batch_size == "low":
        if requirements.tolerance < 0.05:
            return ManufacturingProcess.CNC_MACHINING
        return ManufacturingProcess.CASTING
    elif requirements.batch_size == "medium":
        if requirements.complexity > 5:
            return ManufacturingProcess.INJECTION_MOLDING
        return ManufacturingProcess.CASTING
    else:  # high volume
        if requirements.material in ["aluminum", "plastic"]:
            return ManufacturingProcess.INJECTION_MOLDING
        return ManufacturingProcess.FORGING

# Example: Process selection
part = PartRequirements(
    material="aluminum",
    quantity=10000,
    tolerance=0.1,
    surface_finish=1.6,
    complexity=4,
    batch_size="high"
)
process = select_manufacturing_process(part)
print(f"Recommended process: {process.value}")

Best Practices

  • Always apply appropriate factors of safety based on load uncertainty and consequence of failure
  • Use standard component sizes and catalog parts where possible to reduce costs
  • Perform hand calculations first to validate FEA results before detailed analysis
  • Consider manufacturing constraints early in the design process
  • Use GD&T on drawings to communicate tolerance requirements clearly
  • Document all assumptions and calculations for design review and future maintenance
  • Consider thermal expansion effects in precision mechanical assemblies
  • Use proper material selection criteria considering strength, weight, cost, and environment
  • Perform vibration analysis to avoid resonance conditions in rotating machinery
  • Apply corrosion protection methods appropriate for the operating environment
Install via CLI
npx skills add https://github.com/ffsshhttiikk/opencode-agents-skills --skill mechanical-engineering
Repository Details
star Stars 2
call_split Forks 2
navigation Branch main
article Path SKILL.md
More from Creator
ffsshhttiikk
ffsshhttiikk Explore all skills →