MoonClmech - A comprehensive classical mechanics calculation library for MoonBit, inspired by SymPy Mechanics. Provides computational functions for particle dynamics, rigid body mechanics, Lagrangian and Hamiltonian formulations, constraint systems, multibody dynamics, and kinematic analysis. Suitable for modeling physical systems, robotics, and engineering applications.
test "basic kinematics" {
// Uniform motion: displacement = velocity * time
let displacement = uniform_motion_displacement(10.0, 5.0)
assert_eq(displacement, 50.0)
// Accelerated motion: displacement with constant acceleration
let s = uniform_acceleration_displacement(0.0, 2.0, 5.0)
assert_eq(s, 25.0)
// Projectile motion: maximum height and range
let v0 = 20.0 // m/s
let angle = 3.14159 / 4.0 // 45 degrees
let g = 9.8 // m/s²
let max_h = projectile_max_height(v0, angle, g)
let range = projectile_range(v0, angle, g)
assert_eq(max_h > 0.0, true)
assert_eq(range > 0.0, true)
}test "dynamics and energy" {
// Newton's second law: F = ma
let force = force(5.0, 4.0) // mass = 5 kg, acceleration = 4 m/s²
assert_eq(force, 20.0)
// Momentum and impulse
let p = momentum(2.0, 10.0) // mass = 2 kg, velocity = 10 m/s
assert_eq(p, 20.0)
let impulse_val = impulse(10.0, 5.0) // force = 10 N, time = 5 s
assert_eq(impulse_val, 50.0)
// Energy calculations
let ke = kinetic_energy(2.0, 10.0) // mass = 2 kg, velocity = 10 m/s
assert_eq(ke, 100.0)
let pe = gravitational_potential_energy(5.0, 10.0, 9.8) // mass = 5 kg, height = 10 m
assert_eq(pe, 490.0)
// Work and power
let work_done = work(10.0, 5.0, 0.0) // force = 10 N, displacement = 5 m, angle = 0°
assert_eq(work_done, 50.0)
let power_val = power(100.0, 5.0) // work = 100 J, time = 5 s
assert_eq(power_val, 20.0)
}test "rigid body mechanics" {
// Moment of inertia for different shapes
let i_disk = moment_of_inertia_disk(4.0, 2.0) // mass = 4 kg, radius = 2 m
assert_eq(i_disk, 8.0)
let i_sphere = moment_of_inertia_sphere(5.0, 2.0) // mass = 5 kg, radius = 2 m
assert_eq(i_sphere, 8.0)
// Angular motion
let l = angular_momentum(10.0, 5.0) // I = 10 kg·m², ω = 5 rad/s
assert_eq(l, 50.0)
let ke_rot = rotational_kinetic_energy(8.0, 3.0) // I = 8 kg·m², ω = 3 rad/s
assert_eq(ke_rot, 36.0)
// Torque
let tau = torque(10.0, 2.0, 3.14159 / 2.0) // force = 10 N, lever = 2 m, angle = 90°
assert_eq((tau - 20.0).abs() < 0.0001, true)
}test "collisions" {
// Elastic collision: equal masses
let m1 = 1.0 // kg
let v1i = 10.0 // m/s
let m2 = 1.0 // kg
let v2i = 0.0 // m/s
let v1f = elastic_collision_v1(m1, v1i, m2, v2i)
let v2f = elastic_collision_v2(m1, v1i, m2, v2i)
assert_eq((v1f - 0.0).abs() < 0.0001, true)
assert_eq((v2f - 10.0).abs() < 0.0001, true)
// Verify momentum conservation
let p_before = momentum(m1, v1i) + momentum(m2, v2i)
let p_after = momentum(m1, v1f) + momentum(m2, v2f)
assert_eq((p_before - p_after).abs() < 0.0001, true)
// Inelastic collision
let v_final = inelastic_collision_velocity(2.0, 10.0, 3.0, 0.0) // m1=2 kg, v1=10 m/s, m2=3 kg, v2=0 m/s
assert_eq(v_final, 4.0)
}test "orbital mechanics" {
// Kepler's third law: orbital period
let a = 1.496e11 // m (Earth-Sun distance)
let m_sun = 1.989e30 // kg
let g_const = 6.67430e-11
let period = kepler_period(a, m_sun, g_const)
assert_eq((period - 3.156e7).abs() < 0.1e7, true) // Approximately 1 year
// Circular orbital velocity
let v_orbital = orbital_velocity_circular(a, m_sun, g_const)
assert_eq((v_orbital - 29780.0).abs() < 100.0, true)
// Escape velocity
let r_earth = 6.371e6 // m
let m_earth = 5.972e24 // kg
let v_escape = escape_velocity(r_earth, m_earth, g_const)
assert_eq((v_escape - 11186.0).abs() < 200.0, true)
}test "simple harmonic motion" {
// Spring-mass system
let k = 100.0 // N/m
let m = 4.0 // kg
let omega = shm_angular_frequency(k, m)
assert_eq((omega - 5.0).abs() < 0.0001, true)
// SHM displacement, velocity, acceleration
let a = 5.0 // m (amplitude)
let t = 0.0 // s
let phi = 0.0 // initial phase
let x = shm_displacement(a, omega, t, phi)
let v = shm_velocity(a, omega, t, phi)
assert_eq((x - 5.0).abs() < 0.0001, true)
assert_eq((v - 0.0).abs() < 0.0001, true)
// Pendulum
let l = 1.0 // m
let g = 9.8 // m/s²
let period = pendulum_period(g, l)
assert_eq((period - 2.0).abs() < 0.1, true)
}test "fluid mechanics" {
// Buoyant force (Archimedes' principle)
let rho_fluid = 1000.0 // kg/m³ (water)
let volume = 0.1 // m³
let f_buoyant = buoyant_force(rho_fluid, volume, 9.8)
assert_eq((f_buoyant - 980.0).abs() < 0.0001, true)
// Hydrostatic pressure
let depth = 10.0 // m
let p_surface = 101325.0 // Pa
let pressure = hydrostatic_pressure(rho_fluid, depth, 9.8, p_surface)
assert_eq(pressure, 199325.0)
// Bernoulli's principle
let p1 = 200000.0 // Pa
let p2 = 150000.0 // Pa
let v1 = 5.0 // m/s
let v2 = bernoulli_velocity(p1, p2, rho_fluid, v1)
assert_eq(v2 > 0.0, true)
// Continuity equation
let a1 = 0.1 // m²
let a2 = 0.05 // m²
let v2_cont = continuity_equation_velocity(a1, v1, a2)
assert_eq(v2_cont, 10.0)
}test "vector operations" {
// Create 3D vectors
let v1 = vec3(1.0, 2.0, 3.0)
let v2 = vec3(4.0, 5.0, 6.0)
// Vector operations
let dot_product = vec3_dot(v1, v2)
let magnitude = vec3_magnitude(v1)
assert_eq(magnitude > 0.0, true)
assert_eq(dot_product > 0.0, true)
// Normalize vector
let normalized = vec3_normalize(v1)
let mag_norm = vec3_magnitude(normalized)
assert_eq((mag_norm - 1.0).abs() < 0.0001, true)
}test "unit conversions" {
// Speed conversions
let speed_mps = 10.0 // m/s
let speed_kmph = mps_to_kmph(speed_mps)
assert_eq(speed_kmph, 36.0)
let speed_back = kmph_to_mps(speed_kmph)
assert_eq((speed_back - speed_mps).abs() < 0.0001, true)
// Force conversions
let force_n = 100.0 // N
let force_lbf = n_to_lbf(force_n)
let force_back = lbf_to_n(force_lbf)
assert_eq((force_back - force_n).abs() < 1.0, true)
// Temperature conversions
let temp_c = 25.0 // Celsius
let temp_k = celsius_to_kelvin(temp_c)
assert_eq((temp_k - 298.15).abs() < 0.01, true)
let temp_f = celsius_to_fahrenheit(temp_c)
assert_eq((temp_f - 77.0).abs() < 0.1, true)
}moon testfn acceleration(force : Double, mass : Double) -> Doublefn acceleration_from_displacement(v0 : Double, v : Double, s : Double) -> Doublefn acceleration_from_thrust(thrust : Double, mass : Double, drag : Double) -> Doublefn acceleration_inclined_plane_no_friction(gravity : Double, angle : Double) -> Doublefn acceleration_inclined_plane_with_friction(gravity : Double, angle : Double, mu_k : Double) -> Doublelet air_density_sea_level : Doublefn angular_acceleration(torque : Double, moment_of_inertia : Double) -> Doublefn angular_acceleration_from_velocity(omega0 : Double, omega : Double, time : Double) -> Doublefn angular_displacement(omega0 : Double, alpha : Double, t : Double) -> Doublefn angular_displacement_constant_acc(omega0 : Double, alpha : Double, t : Double) -> Doublefn angular_momentum(moment_of_inertia : Double, angular_velocity : Double) -> Doublefn angular_momentum_point_mass(mass : Double, radius : Double, velocity : Double) -> Doublefn angular_momentum_rate(torque : Double) -> Doublefn angular_velocity(omega0 : Double, alpha : Double, t : Double) -> Doublefn angular_velocity_constant_acc(omega0 : Double, alpha : Double, t : Double) -> Doublefn angular_velocity_from_conservation(i1 : Double, omega1 : Double, i2 : Double) -> Doublefn angular_velocity_from_linear(velocity : Double, radius : Double) -> Doublefn angular_velocity_squared_relation(omega0 : Double, omega : Double, alpha : Double) -> Doublefn approx_eq(a : Double, b : Double, epsilon : Double) -> Boolfn approx_equal(a : Double, b : Double) -> Boolfn areal_velocity(radius : Double, v_perpendicular : Double) -> Doublelet astronomical_unit : Doublefn average_power(work : Double, time : Double) -> Doublefn beat_frequency(f1 : Double, f2 : Double) -> Doublefn beat_period(f1 : Double, f2 : Double) -> Doublefn bernoulli_pressure(p1 : Double, rho : Double, v1 : Double, v2 : Double) -> Doublefn bernoulli_velocity(p1 : Double, p2 : Double, rho : Double, v1 : Double) -> Doublefn bulk_modulus(pressure_change : Double, volume_change : Double, original_volume : Double) -> Doublefn buoyant_force(fluid_density : Double, displaced_volume : Double, gravity : Double) -> Doublefn capillary_rise(surface_tension : Double, density : Double, radius : Double, gravity : Double, contact_angle : Double) -> Doublefn celsius_to_fahrenheit(celsius : Double) -> Doublefn centrifugal_force(mass : Double, angular_velocity : Double, radius : Double) -> Doublefn centripetal_acceleration(velocity : Double, radius : Double) -> Doublefn centripetal_acceleration_angular(angular_velocity : Double, radius : Double) -> Doublefn centripetal_force(mass : Double, velocity : Double, radius : Double) -> Doublefn centripetal_force_angular(mass : Double, angular_velocity : Double, radius : Double) -> Doublefn circular_motion_frequency(angular_velocity : Double) -> Doublefn circular_motion_period(angular_velocity : Double) -> Doublefn clamp(value : Double, min_val : Double, max_val : Double) -> Doublefn coefficient_of_restitution(v1f : Double, v2f : Double, v1i : Double, v2i : Double) -> Doublefn continuity_equation_velocity(a1 : Double, v1 : Double, a2 : Double) -> Doublefn coriolis_force(mass : Double, relative_velocity : Double, angular_velocity : Double) -> Doublefn critical_damping_coefficient(mass : Double, spring_constant : Double) -> Doublefn damped_angular_frequency(natural_frequency : Double, damping : Double) -> Doublefn damping_coefficient(b : Double, mass : Double) -> Doublefn damping_ratio(damping_coefficient : Double, natural_frequency : Double) -> Doublefn doppler_effect_observer_moving(source_frequency : Double, sound_speed : Double, observer_velocity : Double) -> Doublefn doppler_effect_source_moving(source_frequency : Double, sound_speed : Double, source_velocity : Double) -> Doublefn double_pendulum_upper_frequency(gravity : Double, upper_length : Double) -> Doublelet earth_gravity : Doublefn elastic_collision_1d_v1f(m1 : Double, m2 : Double, v1i : Double, v2i : Double) -> Doublefn elastic_collision_1d_v2f(m1 : Double, m2 : Double, v1i : Double, v2i : Double) -> Doublefn elastic_collision_2d_v1x(m1 : Double, m2 : Double, v1i : Double, v2i : Double, theta1 : Double, theta2 : Double) -> Doublefn elastic_collision_v1(m1 : Double, v1 : Double, m2 : Double, v2 : Double) -> Doublefn elastic_collision_v2(m1 : Double, v1 : Double, m2 : Double, v2 : Double) -> Doublefn elastic_potential_energy(spring_constant : Double, displacement : Double) -> Doublefn energy_dissipation_rate(damping_coefficient : Double, energy : Double) -> Doublefn energy_efficiency(energy_out : Double, energy_in : Double) -> Doublefn escape_velocity(radius : Double, central_mass : Double, g_const : Double) -> Doublefn fahrenheit_to_celsius(fahrenheit : Double) -> Doublefn first_cosmic_velocity(gravity : Double, radius : Double) -> Doublefn force(mass : Double, acceleration : Double) -> Doublefn forced_oscillation_amplitude(f0 : Double, mass : Double, omega0 : Double, omega_d : Double, gamma : Double) -> Doublefn generalized_force_1d(potential_energy : Double, generalized_coordinate : Double) -> Doublefn generalized_momentum_1d(generalized_velocity : Double) -> Doublelet gravitational_constant : Doublefn gravitational_force(m1 : Double, m2 : Double, r : Double, g_const : Double) -> Doublefn gravitational_potential_energy(mass : Double, height : Double, g : Double) -> Doublefn gravity_component_along_incline(mass : Double, gravity : Double, angle : Double) -> Doublefn hamiltonian(kinetic_energy : Double, potential_energy : Double) -> Doublefn hamiltonian_from_lagrangian(momentum : Double, velocity : Double, lagrangian : Double) -> Doublefn hamiltonian_q_dot_1d(momentum : Double) -> Doublefn hohmann_transfer_dv1(r1 : Double, r2 : Double, central_mass : Double, g_const : Double) -> Doublefn hohmann_transfer_dv2(r1 : Double, r2 : Double, central_mass : Double, g_const : Double) -> Doublefn hookes_law_force(spring_constant : Double, displacement : Double) -> Doublefn hydrostatic_pressure(fluid_density : Double, depth : Double, gravity : Double, surface_pressure : Double) -> Doublefn in_range(value : Double, min_val : Double, max_val : Double) -> Boolfn inelastic_collision_1d_v1f(m1 : Double, m2 : Double, v1i : Double, v2i : Double, e : Double) -> Doublefn inelastic_collision_velocity(m1 : Double, v1 : Double, m2 : Double, v2 : Double) -> Doublefn inertial_force(mass : Double, acceleration : Double) -> Doublefn kepler_period(semi_major_axis : Double, central_mass : Double, g_const : Double) -> Doublefn kinetic_energy(mass : Double, velocity : Double) -> Doublefn kinetic_energy_com_frame(m1 : Double, m2 : Double, v1 : Double, v2 : Double) -> Doublefn kinetic_energy_from_work(work : Double, ke_initial : Double) -> Doublefn kinetic_energy_loss_inelastic(m1 : Double, v1 : Double, m2 : Double, v2 : Double) -> Doublefn kinetic_energy_loss_partial(m1 : Double, v1 : Double, m2 : Double, v2 : Double, e : Double) -> Doublefn kinetic_friction(mu_k : Double, normal_force : Double) -> Doublefn kmph_to_mps(kmph : Double) -> Doublefn lagrangian(kinetic_energy : Double, potential_energy : Double) -> Doublefn lagrangian_generalized_force(dL_dq_dot_dt : Double, dL_dq : Double) -> Doublefn laminar_drag_cylinder(dynamic_viscosity : Double, length : Double, velocity : Double, diameter : Double) -> Doublefn laplace_pressure(surface_tension : Double, radius1 : Double, radius2 : Double) -> Doublefn lever_equilibrium(f1 : Double, r1 : Double, f2 : Double, r2 : Double) -> Boolfn lever_equilibrium_force(f1 : Double, r1 : Double, r2 : Double) -> Doublefn linear_velocity_from_angular(angular_velocity : Double, radius : Double) -> Doublefn lorentz_factor(velocity : Double, speed_of_light : Double) -> Doublefn mach_number(velocity : Double, sound_speed : Double) -> Doublefn map_range(value : Double, from_min : Double, from_max : Double, to_min : Double, to_max : Double) -> Doublefn mass_energy_equivalence(mass : Double, speed_of_light : Double) -> Doublefn mass_flow_rate(density : Double, velocity : Double, area : Double) -> Doublefn max_height_from_energy(v0 : Double, h0 : Double, g : Double) -> Doublefn mechanical_efficiency(output_power : Double, input_power : Double) -> Doublefn mechanical_energy(kinetic : Double, potential : Double) -> Doublefn moment_of_inertia_cone_axis(mass : Double, radius : Double) -> Doublefn moment_of_inertia_cylinder_axis(mass : Double, radius : Double) -> Doublefn moment_of_inertia_cylinder_diameter(mass : Double, radius : Double, height : Double) -> Doublefn moment_of_inertia_disk(mass : Double, radius : Double) -> Doublefn moment_of_inertia_ellipsoid(mass : Double, a : Double, b : Double, c : Double, axis : Int) -> Doublefn moment_of_inertia_from_conservation(i1 : Double, omega1 : Double, omega2 : Double) -> Doublefn moment_of_inertia_hollow_sphere(mass : Double, radius : Double) -> Doublefn moment_of_inertia_point_mass(mass : Double, radius : Double) -> Doublefn moment_of_inertia_rectangular_bar(mass : Double, width : Double, height : Double) -> Doublefn moment_of_inertia_rectangular_plate(mass : Double, length : Double, width : Double) -> Doublefn moment_of_inertia_rectangular_plate_edge(mass : Double, width : Double) -> Doublefn moment_of_inertia_ring(mass : Double, radius : Double) -> Doublefn moment_of_inertia_ring_diameter(mass : Double, radius : Double) -> Doublefn moment_of_inertia_rod_center(mass : Double, length : Double) -> Doublefn moment_of_inertia_rod_end(mass : Double, length : Double) -> Doublefn moment_of_inertia_sphere(mass : Double, radius : Double) -> Doublefn momentum(mass : Double, velocity : Double) -> Doublefn momentum_change(mass : Double, v1 : Double, v2 : Double) -> Doublefn mps_to_kmph(mps : Double) -> Doublefn normal_coordinate_antisymmetric(x1 : Double, x2 : Double) -> Doublefn normal_coordinate_symmetric(x1 : Double, x2 : Double) -> Doublefn normal_force_horizontal(mass : Double, gravity : Double) -> Doublefn normal_force_inclined_plane(mass : Double, gravity : Double, angle : Double) -> Doublefn normal_force_inclined_with_force(mass : Double, gravity : Double, angle : Double, parallel_force : Double) -> Doublefn normal_frequency_antisymmetric(omega0 : Double, k_coupling : Double, mass : Double) -> Doublefn normal_frequency_symmetric(omega0 : Double) -> Doublefn normal_mode_frequency_antisymmetric(k : Double, mass : Double) -> Doublefn normal_mode_frequency_symmetric(k : Double, k_coupling : Double, mass : Double) -> Doublefn normal_strain(length_change : Double, original_length : Double) -> Doublefn normal_stress(force : Double, area : Double) -> Doublefn nutation_frequency(moment_of_inertia : Double, omega_precess : Double, omega_spin : Double, mass : Double, gravity : Double, radius : Double) -> Doublefn orbital_energy_circular(mass : Double, central_mass : Double, radius : Double, g_const : Double) -> Doublefn orbital_energy_elliptical(mass : Double, central_mass : Double, semi_major_axis : Double, g_const : Double) -> Doublefn orbital_period_elliptical(semi_major_axis : Double, central_mass : Double, g_const : Double) -> Doublefn orbital_velocity_apoapsis(semi_major_axis : Double, eccentricity : Double, central_mass : Double, g_const : Double) -> Doublefn orbital_velocity_circular(radius : Double, central_mass : Double, g_const : Double) -> Doublefn orbital_velocity_periapsis(semi_major_axis : Double, eccentricity : Double, central_mass : Double, g_const : Double) -> Doublefn parallel_axis_theorem(i_cm : Double, mass : Double, distance : Double) -> Doublefn pendulum_angular_frequency(gravity : Double, length : Double) -> Doublefn pendulum_period(gravity : Double, length : Double) -> Doublefn perfectly_inelastic_collision_velocity(m1 : Double, m2 : Double, v1i : Double, v2i : Double) -> Doublefn phase_space_volume_1d(position : Double, momentum : Double) -> Doublefn physical_pendulum_angular_frequency(mass : Double, gravity : Double, moment_of_inertia : Double, distance : Double) -> Doublefn physical_pendulum_period(mass : Double, gravity : Double, moment_of_inertia : Double, distance : Double) -> Doublefn poiseuille_flow_rate(pressure_difference : Double, radius : Double, length : Double, dynamic_viscosity : Double) -> Doublefn potential_energy_from_work(work : Double, pe_initial : Double) -> Doublefn power(work : Double, time : Double) -> Doublefn power_from_force(force : Double, velocity : Double, angle : Double) -> Doublefn power_from_force_parallel(force : Double, velocity : Double) -> Doublefn power_loss(input_power : Double, efficiency : Double) -> Doublefn precession_angular_velocity(mass : Double, gravity : Double, radius : Double, moment_of_inertia : Double, spin_angular_velocity : Double) -> Doublefn projectile_flight_time(v0 : Double, angle : Double, g : Double) -> Doublefn projectile_horizontal_displacement(v0 : Double, angle : Double, t : Double) -> Doublefn projectile_max_height(v0 : Double, angle : Double, g : Double) -> Doublefn projectile_range(v0 : Double, angle : Double, g : Double) -> Doublefn projectile_velocity_angle(v0 : Double, angle : Double, t : Double, g : Double) -> Doublefn projectile_velocity_magnitude(v0 : Double, angle : Double, t : Double, g : Double) -> Doublefn projectile_vertical_displacement(v0 : Double, angle : Double, t : Double, g : Double) -> Doublefn quadratic_drag(drag_coefficient : Double, density : Double, velocity : Double, area : Double) -> Doublefn quality_factor(natural_frequency : Double, damping_coefficient : Double) -> Doublelet reduced_planck_constant : Doublefn relative_acceleration_1d(a1 : Double, a2 : Double) -> Doublefn relative_displacement_1d(x1 : Double, x2 : Double) -> Doublefn relative_velocity_1d(v1 : Double, v2 : Double) -> Doublefn relativistic_kinetic_energy(rest_mass : Double, velocity : Double, speed_of_light : Double) -> Doublefn relativistic_mass(rest_mass : Double, velocity : Double, speed_of_light : Double) -> Doublefn relativistic_momentum(rest_mass : Double, velocity : Double, speed_of_light : Double) -> Doublefn relativistic_total_energy(rest_mass : Double, velocity : Double, speed_of_light : Double) -> Doublefn resonance_frequency(omega0 : Double) -> Doublefn resonance_frequency_damped(omega0 : Double, gamma : Double) -> Doublefn reynolds_number(density : Double, velocity : Double, characteristic_length : Double, dynamic_viscosity : Double) -> Doublefn rocket_equation(initial_velocity : Double, exhaust_velocity : Double, initial_mass : Double, final_mass : Double) -> Doublefn rolling_acceleration_downhill(gravity : Double, angle : Double, beta : Double) -> Doublefn rolling_kinetic_energy(mass : Double, velocity : Double, moment_of_inertia : Double, angular_velocity : Double) -> Doublefn rolling_kinetic_energy_simplified(mass : Double, velocity : Double, beta : Double) -> Doublefn rolling_velocity(angular_velocity : Double, radius : Double) -> Doublefn rotational_kinetic_energy(moment_of_inertia : Double, angular_velocity : Double) -> Doublefn rotational_kinetic_energy_simple(moment_of_inertia : Double, angular_velocity : Double) -> Doublefn rotational_power(torque : Double, angular_velocity : Double) -> Doublefn second_cosmic_velocity(gravity : Double, radius : Double) -> Doublefn shear_stress(tangential_force : Double, area : Double) -> Doublefn shm_acceleration(amplitude : Double, angular_frequency : Double, time : Double, phase : Double) -> Doublefn shm_angular_frequency(spring_constant : Double, mass : Double) -> Doublefn shm_displacement(amplitude : Double, angular_frequency : Double, time : Double, phase : Double) -> Doublefn shm_frequency(angular_frequency : Double) -> Doublefn shm_period(angular_frequency : Double) -> Doublefn shm_velocity(amplitude : Double, angular_frequency : Double, time : Double, phase : Double) -> Doublefn smoothstep(edge0 : Double, edge1 : Double, x : Double) -> Doublefn sound_intensity(pressure_amplitude : Double, density : Double, sound_speed : Double) -> Doublefn sound_intensity_level(intensity : Double, reference_intensity : Double) -> Doublefn sound_pressure_level(pressure : Double, reference_pressure : Double) -> Doublefn sound_speed_ideal_gas(gamma : Double, gas_constant : Double, temperature : Double) -> Doublefn standing_wave_fundamental_frequency(wave_speed : Double, length : Double) -> Doublefn standing_wave_harmonic_frequency(n : Int, wave_speed : Double, length : Double) -> Doublefn standing_wave_node_spacing(wavelength : Double) -> Doublefn static_friction(mu_s : Double, normal_force : Double) -> Doublefn stokes_drag(radius : Double, velocity : Double, dynamic_viscosity : Double) -> Doublefn tangential_acceleration(angular_acceleration : Double, radius : Double) -> Doublefn terminal_velocity(mass : Double, gravity : Double, drag_coefficient : Double, density : Double, area : Double) -> Doublefn thrust_force(mass_flow_rate : Double, exhaust_velocity : Double) -> Doublefn time_from_velocity_change(v0 : Double, v : Double, a : Double) -> Doublefn torque(force : Double, lever_arm : Double, angle : Double) -> Doublefn torricelli_velocity(height : Double, gravity : Double) -> Doublefn total_acceleration_magnitude(tangential_acc : Double, centripetal_acc : Double) -> Doublefn uniform_acceleration_displacement(v0 : Double, a : Double, t : Double) -> Doublefn uniform_acceleration_velocity(v0 : Double, a : Double, t : Double) -> Doublefn uniform_acceleration_velocity_from_displacement(v0 : Double, a : Double, s : Double) -> Doublefn uniform_motion_displacement(velocity : Double, time : Double) -> Doublefn velocity_from_energy_conservation(ke_initial : Double, pe_initial : Double, pe_final : Double, mass : Double) -> Doublefn velocity_from_impulse(mass : Double, initial_velocity : Double, impulse : Double) -> Doublefn velocity_from_path(ds : Double, dt : Double) -> Doublefn velocity_from_spring_energy(spring_constant : Double, displacement : Double, mass : Double) -> Doublefn velocity_transformation(v_object : Double, v_frame : Double) -> Doublefn venturi_velocity_ratio(a1 : Double, a2 : Double) -> Doublefn viscous_force(dynamic_viscosity : Double, area : Double, velocity_gradient : Double) -> Doublefn volumetric_flow_rate(velocity : Double, area : Double) -> Doublefn wave_displacement(amplitude : Double, wave_number : Double, position : Double, angular_frequency : Double, time : Double, phase : Double) -> Doublefn wave_intensity_from_amplitude(amplitude : Double, angular_frequency : Double, density : Double, wave_speed : Double) -> Doublefn wave_velocity(frequency : Double, wavelength : Double) -> Doublefn wave_velocity_from_angular(angular_frequency : Double, wave_number : Double) -> Doublefn work(force : Double, displacement : Double, angle : Double) -> Doublefn work_from_kinetic_energy(ke_final : Double, ke_initial : Double) -> Doublefn work_from_power(power : Double, time : Double) -> Doublefn work_parallel(force : Double, displacement : Double) -> Doublefn youngs_modulus(stress : Double, strain : Double) -> DoubleInstall
Download zipMoonClmech - A comprehensive classical mechanics calculation library for MoonBit, inspired by SymPy Mechanics. Provides computational functions for particle dynamics, rigid body mechanics, Lagrangian and Hamiltonian formulations, constraint systems, multibody dynamics, and kinematic analysis. Suitable for modeling physical systems, robotics, and engineering applications.