trixi-framework / trixi-framework/TrixiParticles.jl

Open Questions with correction schemes

Open
#309 1 comment 0 reactions 2 assignees View on GitHub

@efaulhaber is already working on this.

Since Nov 22, 2024.

Dominant language
Julia
Stars
83
Forks
24
Avg merge
8d 18h
Merged PRs (30d)
3

Description

  1. Using KernelCorrection it is mentioned by Bonet and Lok that v_a should drop out of these equations:
@inline function pressure_acceleration(pressure_correction, m_b, particle, neighbor,
                                       particle_system,
                                       neighbor_system::WeaklyCompressibleSPHSystem,
                                       rho_a, rho_b, pos_diff, distance,
                                       grad_kernel, ::ContinuityDensity,
                                       correction::Union{KernelGradientCorrection, MixedKernelGradientCorrection})
    return (-m_b *
            (particle_system.pressure[particle] / rho_a^2) * grad_kernel) *
           pressure_correction
end
@inline function continuity_equation!(dv, density_calculator::ContinuityDensity,
                                      v_particle_system, v_neighbor_system,
                                      particle, neighbor, pos_diff, distance,
                                      m_b, rho_a, rho_b,
                                      particle_system::WeaklyCompressibleSPHSystem,
                                      neighbor_system, grad_kernel,
                                      correction::Union{KernelGradientCorrection, MixedKernelGradientCorrection})
    (; density_diffusion) = particle_system

    v_b = current_velocity(v_neighbor_system, neighbor_system, neighbor)

    dv[end, particle] += rho_a / rho_b * m_b * dot(v_b, grad_kernel)

    density_diffusion!(dv, density_diffusion, v_particle_system, v_neighbor_system,
                       particle, neighbor, pos_diff, distance, m_b, rho_a, rho_b,
                       particle_system, neighbor_system, grad_kernel)
end

But this doesn't work at all... And also doesn't seem to be commonly used.

  1. GradientCorrection with ContinuityDensity doesn't really work
    Effects:
  • particles end up in wall
  • density too small at the bnd

Things that have been basically excluded:

  • calculation of the correction matrix seems to be correct
  • test show that correction matrix fulfills the requirements
  • corrected gradient reproduces linear functions

Causes might be:
a) Other boundary treatment required
i) might need special treatment in corners
ii) increased repulsion
iii) use of special corrections for the wall
b) Some kind of error in interaction() when used with the corrected gradient
c) general instability of the corrected method when used in the tried configurations

Things that were investigated by Eric and me:

  1. Different Kernel Support radiia
  2. Special treatment of the correction matrix (i.e. tuning of the neighbor_count)
  3. Simplified case with a wall in which particles were found to have a too small pressurre/density at the wall causing them to penetrate the wall
  4. The formulations under 1) above
  5. Different particles spacings, Kernels...
  6. Smaller Reynoldsnumber
    ...

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.