Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft PR: one-sided fluid-shell interaction #453

Closed
wants to merge 218 commits into from
Closed

Conversation

WeiyiVirtonomy
Copy link
Collaborator

Description

For one-sided fluid-shell interaction problems (e.g. blood flowing in elastic shell vessel), the shell particles cannot prevent penetration of fluid particles due to incompleteness of kernel support.

TODO

  • Modifying dW_ijV_j and e_ij of shell neighbors by counting in the contribution of 'ghost particles' in the cut off radius of fluid particles

Xiangyu-Hu and others added 30 commits July 13, 2022 22:15
# Conflicts:
#	tutorials/sphinx/examples/example1_2D_dambreak.rst
#	tutorials/sphinx/installation.rst
This reverts commit 65bc702, reversing
changes made to 125be31.
Here, cmake is modified, pay attention when PR.
@Xiangyu-Hu
Copy link
Owner

There were some mistakes in the parameters of FDA nozzle. It works now after correcting those parameters. The velocity distribution is very close to that of the case with volumetric solid boundary

Shell boundary: image

Solid boundary: image

Axial velocity: image

I also changed neighborhood.W_ij_ to the summation of the real particle and ghost particles, which is used in density summation. It seems that this makes the simulation more stable

Good. and Yes. the density summation you have mentioned should gives better results.

@WeiyiVirtonomy WeiyiVirtonomy temporarily deployed to github-pages October 26, 2023 14:34 — with GitHub Pages Inactive
@WeiyiVirtonomy
Copy link
Collaborator Author

Some problems:

  1. It seems that shell resolution cannot be larger than fluid resolution. This is the Hagen flow in a rigid shell wall boundary when resolution_wall > resolution_fluid:
image
  1. Test of the flow in an elastic tube fixed at the inlet and outlet. Fluid particles penetrate the wall just behind the constraint part (might be fixed if the shell particles are relaxed):
image When setting resolution_shell = 0.5*resolution_fluid, the penetration is delayed, but shell and fluid will properties diverge to NaN later.

I hope that we can discuss these problems tomorrow.

@Xiangyu-Hu
Copy link
Owner

The shell simulation has hourglass artifacts.
Did you update the shell normal direction at each time step?

@WeiyiVirtonomy
Copy link
Collaborator Author

Check $\sum_j W_{ij}V_j \approx 1$ and $\sum_j \nabla W_{ij}V_j \approx \mathbf{0}$:

Volumetric solid wall, with relaxed fluid particles:

  • $\sum_j W_{ij}V_j$
image

The inner fluid particles without contact to the wall, the total W_ijV_j is about 0.79, while the value of particles near the wall is about 0.94. I'm not sure about the reason, but the total number of inner and wall contact particles is larger near the boundary.

  • $\sum_j \nabla W_{ij}V_j$
image

The gradient summation near the wall is much higher than the inner region. The magnitude is about 476.

Shell, with relaxed fluid particles:

  • $\sum_j W_{ij}V_j$
image

The summation for inner particles is 0.79, for particles near the wall is 0.89.

  • $\sum_j \nabla W_{ij}V_j$
image The gradient summation for particles near the wall is about 285.

Volumetric solid, fluid particles not relaxed

  • $\sum_j W_{ij}V_j$
image

The summation for inner particles is 0.82, for particles near the wall varies from 0.81~0.98.

  • $\sum_j \nabla W_{ij}V_j$
image

The gradient summation for inner particles is 0, for particles near the wall is about 595.

Shell, fluid particles not relaxed

  • $\sum_j W_{ij}V_j$
image

The summation for inner particles is 0.82, for particles near the wall varies from 0.76~0.94.

  • $\sum_j \nabla W_{ij}V_j$
image

The gradient summation for inner particles is 0, for particles near the wall is about 515.

To conclude, for cylinder, the summation of W_ijV_j of volumetric solid is closer to 1 than the shell, and the difference is larger when the fluid particles are relaxed. The magnitude of dW_ijV_je_ij of volumetric solid is also higher. I think this means that the contribution of "ghost" shell particles is still smaller than that of volumetric solid.

@Xiangyu-Hu
Copy link
Owner

When you relax the fluid particles, did you use the wall particles as boundary particles and compute the force from them?

@WeiyiVirtonomy
Copy link
Collaborator Author

WeiyiVirtonomy commented Oct 30, 2023

The problem of unequal shell thickness and shell resolution:

Take shell thickness=2 * shell_resolution of a cylinder wall boundary as an example. The closest distance between a shell particle and a fluid particle is not 0.5 * (fluid_resolution+shell_resolution), but 0.5 * (fluid_resolution+shell thickness), so that the radius of fluid domain is expanded by 0.5*shell thickness behind the inlet buffer. I think that's why the accuracy of fluid velocity becomes lower in this case.
image

@WeiyiVirtonomy
Copy link
Collaborator Author

When you relax the fluid particles, did you use the wall particles as boundary particles and compute the force from them?

I'm not sure if I understood you correctly. Did you mean computing the summation of W_ij * V_j and dW_ijV_j * e_ij of boundary particles? I used the summation of all particles in inner configuration and contact configuration.

@Xiangyu-Hu
Copy link
Owner

When you relax the fluid particles, did you use the wall particles as boundary particles and compute the force from them?

I'm not sure if I understood you correctly. Did you mean computing the summation of W_ij * V_j and dW_ijV_j * e_ij of boundary particles? I used the summation of all particles in inner configuration and contact configuration.

I mean when you relax the fluid particles, the relaxation force from wall particle should be considered too.

@WeiyiVirtonomy
Copy link
Collaborator Author

When you relax the fluid particles, did you use the wall particles as boundary particles and compute the force from them?

I'm not sure if I understood you correctly. Did you mean computing the summation of W_ij * V_j and dW_ijV_j * e_ij of boundary particles? I used the summation of all particles in inner configuration and contact configuration.

I mean when you relax the fluid particles, the relaxation force from wall particle should be considered too.

I was not using RelaxationStepComplex, but the particle distribution looks still very weird after using this class. Fluid particles cluster near the boundary, and there's a gap between wall particles and fluid particles. Do you have any examples of 3D complex relaxation?

image

@Xiangyu-Hu
Copy link
Owner

When you relax the fluid particles, did you use the wall particles as boundary particles and compute the force from them?

I'm not sure if I understood you correctly. Did you mean computing the summation of W_ij * V_j and dW_ijV_j * e_ij of boundary particles? I used the summation of all particles in inner configuration and contact configuration.

I mean when you relax the fluid particles, the relaxation force from wall particle should be considered too.

I was not using RelaxationStepComplex, but the particle distribution looks still very weird after using this class. Fluid particles cluster near the boundary, and there's a gap between wall particles and fluid particles. Do you have any examples of 3D complex relaxation?

image

You need to know how to use it correctly.

@WeiyiVirtonomy
Copy link
Collaborator Author

When you relax the fluid particles, did you use the wall particles as boundary particles and compute the force from them?

I'm not sure if I understood you correctly. Did you mean computing the summation of W_ij * V_j and dW_ijV_j * e_ij of boundary particles? I used the summation of all particles in inner configuration and contact configuration.

I mean when you relax the fluid particles, the relaxation force from wall particle should be considered too.

I was not using RelaxationStepComplex, but the particle distribution looks still very weird after using this class. Fluid particles cluster near the boundary, and there's a gap between wall particles and fluid particles. Do you have any examples of 3D complex relaxation?
image

You need to know how to use it correctly.

It seems that I can't use the exact shape of fluid block in defineComponentLevelSetShape, otherwise the level set correction will wrongly constrain particles near the wall boundary. If level_set_correction is set to false, then the particles near inlet and outlet won't be correctly constraint. Would you mind telling me who is in charge of relaxation, so that I might ask them about how to set the level set shape?
image

@Xiangyu-Hu
Copy link
Owner

I think that you need some to check how the code works.

@WeiyiVirtonomy
Copy link
Collaborator Author

WeiyiVirtonomy commented Nov 3, 2023

Test on 2D channel flow with an elastic gate fails

https://github.com/Xiangyu-Hu/SPHinXsys/tree/documentation/tests/user_examples/test_2d_simplified_valve_shell

image

I'm testing a 2D simplified valve model, but the simulation crashes soon. Some singularities with extremely high velocity appear near the beam. The beam then folds into a strange shape. Flow field becomes very messy, and some fluid particles fly away.

image image

This happens no matter if I take the ghost particle contribution into consideration or not.
@ChiZhangatTUM I remember that SPHinXsys had a similar test case of fluid-shell interaction before https://www.youtube.com/watch?v=VpzV8dhn2Vs, which worked well. It would be helpful if someone could tell me what were the parameters you used.

@WeiyiVirtonomy
Copy link
Collaborator Author

I have created a new branch from master without codes from the old fluid-shell interaction branch (shell_fluid_interaction.h and shell_fluid_interaction.cpp are kept though, since I need these classes to calculate force from fluid on shell). I'll create a new PR and abandon this one later.
https://github.com/Xiangyu-Hu/SPHinXsys/tree/feature/one_sided_fluid_shell_interaction

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet