Exemplo n.º 1
0
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
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
def test_just_do_it(scheme, coord, adaptive, enable_particle_temperatures):    # Arrange
    if scheme == 'BDF' and not adaptive:
        return
    if scheme == 'BDF' and coord == 'volume':
        return

    # Setup.total_time = 15 * si.minute
    setup = Setup(dt_output=10 * si.second)
    setup.coord = coord
    setup.adaptive = adaptive
    setup.enable_particle_temperatures = enable_particle_temperatures
    if scheme == 'BDF':
        setup.dt_max = setup.dt_output
    elif not adaptive:
        setup.dt_max = 1 * si.second

    simulation = Simulation(setup)
    if scheme == 'BDF':
        bdf.patch_core(simulation.particles, setup.coord)

    # Act
    output = simulation.run()
    r = np.array(output['r']).T * si.metres
    n = setup.n / (setup.mass_of_dry_air * si.kilogram)

    # Assert
    condition = (r > 1 * si.micrometre)
    NTOT = n_tot(n, condition)
    N1 = NTOT[: int(1/3 * len(NTOT))]
    N2 = NTOT[int(1/3 * len(NTOT)): int(2/3 * len(NTOT))]
    N3 = NTOT[int(2/3 * len(NTOT)):]

    n_unit = 1/si.microgram
    assert min(N1) == 0.0 * n_unit
    assert .63 * n_unit < max(N1) < .68 * n_unit
    assert .14 * n_unit < min(N2) < .15 * n_unit
    assert .3 * n_unit < max(N2) < .37 * n_unit
    assert .08 * n_unit < min(N3) < .083 * n_unit
    assert .27 * n_unit < max(N3) < .4 * n_unit