示例#1
0
def test_with_dambreak_onerun():
    z_cnt = 8
    spacing = 0.1

    rho0 = 1000.
    visc = 0.00
    kappa = 0.000
    dt = 0.01
    g = 0.

    pos, info = create_dam_break(z_cnt, lfact=2., wallthick=1, walldensfact=1, spacing=spacing)
    mass_part = spacing*spacing*spacing*rho0

    maxneighs = 200
    avgneighs = 100
    h = pow(3.*avgneighs*mass_part/(4.*PI*rho0), 1./3.)

    solver = IISPHSolver()
    solver.particles.pos.value = pos
    solver.particles.rho0.value = np.ones((len(pos),1))*rho0
    solver.particles.mass.value = np.ones((len(pos),1))*mass_part
    solver.particles.info.value = info
    solver.particles.visc.value = np.ones((len(pos),1))*visc
    solver.particles.kappa.value = np.ones((len(pos),1))*kappa
    solver.h = h
    solver.dt = dt
    solver.g = g
    solver.maxneighs = maxneighs
    solver.avgneighs = avgneighs
    solver.wkrn = 'WendlandC2'
    solver.setup()
    solver.precompute_values()

    solver.update()

    print 'rho_max ', np.amax(solver.particles.rho.value)
    print 'rho_min ', np.amin(solver.particles.rho.value)

    neighs = solver.neighsearch.neighbors.value
    np.place(neighs, neighs == -1, [0])
    nnz = np.zeros(len(solver.neighsearch.neighbors))
    for i in range(len(nnz)):
        nnz[i] = np.count_nonzero(neighs[i])
    print 'neigh_count ', np.amax(nnz)

    print 'force_max ', np.amax(solver.particles.force.value)
    print 'force_min ', np.amin(solver.particles.force.value)

    print 'vel_adv_max ', np.amax(solver.particles.vel_adv.value)
    print 'vel_adv_min ', np.amin(solver.particles.vel_adv.value)

    print 'dii_max ', np.amax(solver.particles.dii.value)
    print 'dii_min ', np.amin(solver.particles.dii.value)

    print 'rho_adv_max ', np.amax(solver.particles.rho_adv.value)
    print 'rho_adv_min ', np.amin(solver.particles.rho_adv.value)

    print 'aii_max ', np.amax(solver.particles.aii.value)
    print 'aii_min ', np.amin(solver.particles.aii.value)

    print 'sum_dijpjl_max ', np.amax(solver.particles.sum_dijpjl.value)
    print 'sum_dijpjl_min ', np.amin(solver.particles.sum_dijpjl.value)

    print 'new_press_max ', np.amax(solver.particles.new_press.value)
    print 'new_press_min ', np.amin(solver.particles.new_press.value)

    print 'press_max ', np.amax(solver.particles.press.value)
    print 'press_min ', np.amin(solver.particles.press.value)

    print 'new_rho_max ', np.amax(solver.particles.new_rho.value)
    print 'new_rho_min ', np.amin(solver.particles.new_rho.value)

    print 'rho_err_max ', np.amax(solver.particles.rho_err.value)
    print 'rho_err_min ', np.amin(solver.particles.rho_err.value)

    print 'pforce_max ', np.amax(solver.particles.pforce.value)
    print 'pforce_min ', np.amin(solver.particles.pforce.value)

    print 'vel_max ', np.amax(solver.particles.vel.value)
    print 'vel_min ', np.amin(solver.particles.vel.value)