代码仓库移植
This commit is contained in:
commit
0f57ba94f3
44 files changed
+7119
No files matched your search
@@ -0,0 +1,57 @@
|
||||
# tests/test_tank.py
|
||||
import numpy as np
|
||||
import pytest
|
||||
from tank import Tank
|
||||
|
||||
|
||||
GAMMA = 1.4
|
||||
R_GAS = 287.0
|
||||
|
||||
|
||||
def test_tank_initial_state_matches_ideal_gas():
|
||||
"""
|
||||
Given P, T, V construct a Tank; mass and U should match ideal gas:
|
||||
rho = P / (R * T)
|
||||
mass = rho * V
|
||||
U = P * V / (gamma - 1) (since u=0 inside tank)
|
||||
T = (U / mass) * (gamma - 1) / R (round-trip)
|
||||
"""
|
||||
tank = Tank(V=5.0, P_init=10e6, T_init=300.0, gamma=GAMMA, R_gas=R_GAS)
|
||||
rho_expected = 10e6 / (R_GAS * 300.0)
|
||||
assert abs(tank.rho - rho_expected) < 1e-9
|
||||
assert abs(tank.mass - rho_expected * 5.0) < 1e-6
|
||||
assert abs(tank.U - 10e6 * 5.0 / (GAMMA - 1)) < 1e-3
|
||||
assert abs(tank.P - 10e6) < 1e-3
|
||||
assert abs(tank.T - 300.0) < 1e-9
|
||||
|
||||
|
||||
def test_tank_ghost_state_is_stagnation_conservative_vector():
|
||||
"""
|
||||
ghost_state() should return [rho, 0, P/(gamma-1)]
|
||||
(u_ghost = 0 per spec §2.3, so total energy density equals
|
||||
internal energy density = P/(gamma-1)).
|
||||
"""
|
||||
tank = Tank(V=5.0, P_init=10e6, T_init=300.0, gamma=GAMMA, R_gas=R_GAS)
|
||||
g = tank.ghost_state()
|
||||
assert g.shape == (3,)
|
||||
assert abs(g[0] - tank.rho) < 1e-12
|
||||
assert g[1] == 0.0
|
||||
assert abs(g[2] - 10e6 / (GAMMA - 1)) < 1e-3
|
||||
|
||||
|
||||
def test_tank_apply_flux_outflow_reduces_mass_energy_and_pressure():
|
||||
"""
|
||||
apply_flux(mdot, edot, dt, sign=-1) should subtract mdot*dt from mass
|
||||
and edot*dt from U. Derived P should decrease correspondingly.
|
||||
"""
|
||||
tank = Tank(V=5.0, P_init=10e6, T_init=300.0, gamma=GAMMA, R_gas=R_GAS)
|
||||
mass_before = tank.mass
|
||||
U_before = tank.U
|
||||
P_before = tank.P
|
||||
mdot = 1.0 # kg/s
|
||||
edot = 5e5 # J/s (enthalpy rate)
|
||||
dt = 1e-3
|
||||
tank.apply_flux(mdot=mdot, edot=edot, dt=dt, sign=-1)
|
||||
assert abs(tank.mass - (mass_before - mdot * dt)) < 1e-12
|
||||
assert abs(tank.U - (U_before - edot * dt)) < 1e-9
|
||||
assert tank.P < P_before
|
||||
Reference in new issue
Block a user