def test_displacement(w_idx): # Arrange setup = Setup(w_avg=w_avgs[w_idx], N_STP=0, r_dry=1, mass_of_dry_air=1) setup.n_output = 50 simulation = Simulation(setup) # Act output = simulation.run() # Assert np.testing.assert_almost_equal(min(output["z"]), 0, decimal=1) np.testing.assert_almost_equal(max(output["z"]), setup.z_half, decimal=1)
def test_energy_conservation(settings_idx, mass_of_dry_air): # Arrange settings = Settings( w_avg=setups[settings_idx].w_avg, N_STP=setups[settings_idx].N_STP, r_dry=setups[settings_idx].r_dry, mass_of_dry_air=mass_of_dry_air, ) simulation = Simulation(settings) env = simulation.core.environment thd0 = env['thd'] # Act simulation.run() # Assert np.testing.assert_approx_equal(thd0.to_ndarray(), env['thd'].to_ndarray())
def test_energy_conservation(setup_idx, mass_of_dry_air): # Arrange setup = Setup( w_avg=setups[setup_idx].w_avg, N_STP=setups[setup_idx].N_STP, r_dry=setups[setup_idx].r_dry, mass_of_dry_air=mass_of_dry_air, ) simulation = Simulation(setup) env = simulation.particles.environment thd0 = env['thd'] # Act simulation.run() # Assert np.testing.assert_approx_equal(thd0, env['thd'])
def test_water_mass_conservation(setup_idx, mass_of_dry_air, scheme): # Arrange setup = Setup( w_avg=setups[setup_idx].w_avg, N_STP=setups[setup_idx].N_STP, r_dry=setups[setup_idx].r_dry, mass_of_dry_air=mass_of_dry_air ) setup.n_output = 50 setup.scheme = scheme simulation = Simulation(setup) qt0 = setup.q0 + ql(simulation) # Act simulation.run() # Assert qt = simulation.particles.environment["qv"] + ql(simulation) np.testing.assert_approx_equal(qt, qt0, 14) # TODO: was 15 at some point...
def test_water_mass_conservation(setup_idx, mass_of_dry_air, scheme): # Arrange setup = Setup(w_avg=setups[setup_idx].w_avg, N_STP=setups[setup_idx].N_STP, r_dry=setups[setup_idx].r_dry, mass_of_dry_air=mass_of_dry_air) setup.n_output = 50 setup.scheme = scheme simulation = Simulation(setup) qt0 = setup.q0 + ql(simulation) if scheme == 'BDF': bdf.patch_core(simulation.core) # Act simulation.run() # Assert qt = simulation.core.environment["qv"].to_ndarray() + ql(simulation) np.testing.assert_approx_equal(qt, qt0, 14)
def data(n_output, rtols, schemes, setups_num): resultant_data = {} for scheme in schemes: resultant_data[scheme] = {} if scheme == 'BDF': for rtol in rtols: resultant_data[scheme][rtol] = [] for setup_idx in range(setups_num): setup = setups[setup_idx] setup.n_output = n_output simulation = Simulation(setup) bdf.patch_core(simulation.core, setup.coord, rtol=1e-4) results = simulation.run() for rtol in rtols: resultant_data[scheme][rtol].append(results) else: for rtol in rtols: resultant_data[scheme][rtol] = [] for setup_idx in range(setups_num): setup = setups[setup_idx] setup.scheme = scheme setup.rtol_x = rtol setup.rtol_thd = rtol setup.n_output = n_output simulation = Simulation(setup) results = simulation.run() resultant_data[scheme][rtol].append(results) return resultant_data
def data(): # TODO: calculate BDF just once - as a reference solution data = {} for scheme in schemes: data[scheme] = {} for rtol in rtols: data[scheme][rtol] = [] for setup_idx in range(setups_num): setup = setups[setup_idx] setup.scheme = scheme if scheme == 'default': setup.rtol_x = rtol setup.rtol_thd = rtol else: setup.rtol_x = rtol setup.rtol_thd = rtol setup.n_output = 20 simulation = Simulation(setup) if scheme == 'BDF': bdf.patch_particles(simulation.particles, setup.coord, rtol=1e-4) data[scheme][rtol].append(simulation.run()) return data
def test_initialisation(setup_idx): # Arrange setup = setups[setup_idx] pv0 = setup.p0 / (1 + const.eps / setup.q0) pd0 = setup.p0 - pv0 rhod0 = pd0 / const.Rd / setup.T0 thd0 = phys.th_std(pd0, setup.T0) # Act simulation = Simulation(setup) # Assert env = simulation.particles.environment np.testing.assert_approx_equal(env['T'][:], setup.T0) np.testing.assert_approx_equal(env['RH'][:], pv0 / phys.pvs(setup.T0)) np.testing.assert_approx_equal(env['p'][:], setup.p0) np.testing.assert_approx_equal(env['qv'][:], setup.q0) np.testing.assert_approx_equal(env['rhod'][:], rhod0) np.testing.assert_approx_equal(env['thd'][:], thd0)
def test_initialisation(settings_idx): # Arrange settings = setups[settings_idx] pv0 = settings.p0 / (1 + const.eps / settings.q0) pd0 = settings.p0 - pv0 rhod0 = pd0 / const.Rd / settings.T0 thd0 = phys.th_std(pd0, settings.T0) # Act simulation = Simulation(settings) # Assert env = simulation.core.environment np.testing.assert_approx_equal(env['T'].to_ndarray(), settings.T0) np.testing.assert_approx_equal(env['RH'].to_ndarray(), pv0 / phys.pvs(settings.T0)) np.testing.assert_approx_equal(env['p'].to_ndarray(), settings.p0) np.testing.assert_approx_equal(env['qv'].to_ndarray(), settings.q0) np.testing.assert_approx_equal(env['rhod'].to_ndarray(), rhod0) np.testing.assert_approx_equal(env['thd'].to_ndarray(), thd0)
def main(): for setup in setups: Simulation(setup).run()
def main(): for settings in setups: Simulation(settings).run()