示例#1
0
def test_initialization(dtype_device, use_jacobi):
    dtype, device = dtype_device
    lattice = Lattice(D2Q9, device, dtype)
    flow = TaylorGreenVortex2D(resolution=24,
                               reynolds_number=10,
                               mach_number=0.05,
                               lattice=lattice)
    collision = BGKCollision(lattice, tau=flow.units.relaxation_parameter_lu)
    streaming = StandardStreaming(lattice)
    simulation = Simulation(flow=flow,
                            lattice=lattice,
                            collision=collision,
                            streaming=streaming)
    # set initial pressure to 0 everywhere
    p, u = flow.initial_solution(flow.grid)
    u0 = lattice.convert_to_tensor(flow.units.convert_velocity_to_lu(u))
    rho0 = lattice.convert_to_tensor(np.ones_like(u0[0, ...].cpu()))
    simulation.f = lattice.equilibrium(rho0, u0)
    if use_jacobi:
        simulation.initialize_pressure(1000, 1e-6)
        num_iterations = 0
    else:
        num_iterations = simulation.initialize(500, 1e-3)
    piter = lattice.convert_to_numpy(
        flow.units.convert_density_lu_to_pressure_pu(lattice.rho(
            simulation.f)))
    # assert that pressure is converged up to 0.05 (max p
    assert piter == pytest.approx(p, rel=0.0, abs=5e-2)
    assert num_iterations < 500
示例#2
0
enstrophy_f = ObservableReporter(Enstrophy(lattice, flow_fine),
                                 interval=postplotinterval * 2,
                                 out=None)
energy_f = ObservableReporter(IncompressibleKineticEnergy(lattice, flow_fine),
                              interval=postplotinterval * 2,
                              out=None)
spectrum_f = ObservableReporter(EnergySpectrum(lattice, flow_fine),
                                interval=postplotinterval * 2,
                                out=None)
f_reporter = FReporter(2 * data_interval)
simulation.reporters.append(f_reporter)
simulation.reporters.append(enstrophy_f)
simulation.reporters.append(energy_f)
simulation.reporters.append(spectrum_f)

simulation.initialize_pressure()
simulation.initialize_f_neq()
_ = simulation.step(2 * n_steps)

########################################################################################################################
##### Make Data Pairs
########################################################################################################################
print('Make Data Pairs and shuffle training data')
data = torch.stack(f_reporter.fs).cpu()
f_reporter.fs = []

inputs = data[0:-1]
outputs = data[1:]

f_init = inputs[nr_init].clone()
f_output = outputs[-1].clone()