Xiangyu-Hu / SPHinXsys

SPHinXsys provides C++ APIs for engineering simulation and optimization. It aims at complex systems driven by fluid, structure, multi-body dynamics and beyond. The multi-physics library is based on a unique and unified computational framework by which strong coupling has been achieved for all involved physics.
https://www.sphinxsys.org/
Apache License 2.0
259 stars 199 forks source link

Add shell cases for test. #160

Closed DongWuTUM closed 10 months ago

DongWuTUM commented 1 year ago

Observations & Following work

Test case 2: Spherical cap

Reference: Owen, D.R.J., 1980. Finite elements in plasticity, theory and practice, https://doi.org/10.1007/s00466-017-1498-9

DongWuTUM commented 1 year ago

@BenceVirtonomy I create a new branch now that the master code has been updated and the bug in the shell particle reload has been fixed. (However, I later noticed that you had updated the branch feature/analytical 3d roof.)

BenceVirtonomy commented 1 year ago

@BenceVirtonomy I create a new branch now that the master code has been updated and the bug in the shell particle reload has been fixed. (However, I later noticed that you had updated the branch feature/analytical 3d roof.)

Great, thank you! The hourglass implementation was incorrect? I will pull this fix into my branch and test the hourglass again. I'm testing with a more uniform particle distribution based on centroidal voronoi tessellation (CVT). Also, I ran the 3d roof case with the given lattice particles and refined particle distribution and it doesn't seem to converge either (at least not with a reasonable resolution, this is with the "particle_number" refined form 16 till 256). I think it's also due to the definition of the volume. I'm not sure if just using dp^2 can represent the whole geometry accurately.

image

BenceVirtonomy commented 1 year ago

@BenceVirtonomy I create a new branch now that the master code has been updated and the bug in the shell particle reload has been fixed. (However, I later noticed that you had updated the branch feature/analytical 3d roof.)

Is it possible that it's due to the damping? That is inversely related to the particle size, so I wonder if the damping is so high that the structure deforms less...

DongWuTUM commented 1 year ago

Thank you, too! I calculated the roof case before. The results are shown in the figure. It seems to be converging. Anyway, I will test and double-check its convergence again, and check the definition of the volume. The physical damping is applied with a probability of 0.2 in each time step to prevent over-damping. I don't think it is the reason for the divergence. image

BenceVirtonomy commented 1 year ago

Did you check if it's already static with the 7e3 damping? I reduced the damping for myself because with 7e3 I get this curve below. Also, I would be careful calling it convergence when you go from 120 to 160. It's not even 2x the number of particles. image

DongWuTUM commented 1 year ago

I just checked the previously saved results. The damping physical_viscosity = 7.0e3, and the curve is below when particle_number = 30. You may be right, and I will recalculate the roof case and share the new results. But as the second figure shows, the displacement gap between the two resolutions is decreasing.

BenceVirtonomy commented 1 year ago

Okey, thanks. I would suggest plotting log x axis and keeping the refinement ratio constant.

Sent from Outlook for iOShttps://aka.ms/o0ukef


From: Dong Wu @.> Sent: Tuesday, November 8, 2022 9:16:58 PM To: Xiangyu-Hu/SPHinXsys @.> Cc: Bence.Rochlitz @.>; Mention @.> Subject: Re: [Xiangyu-Hu/SPHinXsys] Add shell cases for test. (PR #160)

I just checked the previously saved results. The damping physical_viscosity = 7.0e3, and the curve is below when particle_number = 30. You may be right, and I will recalculate the roof case and share the new results. But as the second figure shows, the displacement gap between the two resolutions is decreasing. [https://user-images.githubusercontent.com/100197018/200662742-f6f4db4f-49f4-4b0f-8590-a9fa5f08eedc.png]https://user-images.githubusercontent.com/100197018/200662742-f6f4db4f-49f4-4b0f-8590-a9fa5f08eedc.png[https://user-images.githubusercontent.com/100197018/200665625-1ae57181-557d-43e6-9aad-cb60b35c8809.png]https://user-images.githubusercontent.com/100197018/200665625-1ae57181-557d-43e6-9aad-cb60b35c8809.png

— Reply to this email directly, view it on GitHubhttps://github.com/Xiangyu-Hu/SPHinXsys/pull/160#issuecomment-1307777052, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ASUXTH4O4KUPJCB4LC4R2BDWHKYLVANCNFSM6AAAAAAR2SLNV4. You are receiving this because you were mentioned.Message ID: @.***>

DongWuTUM commented 1 year ago

Thank you! Your suggestions and opinions are nice and useful.

DongWuTUM commented 1 year ago
BenceVirtonomy commented 1 year ago

That's great, thanks. I remember now I actually ran it with the B_ removed, that might be the difference for me. I will run it again and check.

DongWuTUM commented 1 year ago

Observations

I examined the half-sphere case. When Bence tests it, it appears that the sphere is more than half. So I give the gravity in another direction. Half_sphere

Xiangyu-Hu commented 1 year ago

Observations

  • The algorithm is stable when the time step is in the order of 10e-7.

I examined the half-sphere case. When Bence tests it, it appears that the sphere is more than half. So I give the gravity in another direction. Half_sphere Half_sphere

This is beautiful !

BenceVirtonomy commented 1 year ago

That's great, do you have a reliable time step calculation? @DongWuTUM

DongWuTUM commented 1 year ago

Not yet...

DongWuTUM commented 1 year ago

All the new cases should have data for regression test.

Okay.

BenceVirtonomy commented 1 year ago

All the new cases should have data for regression test.

Okay.

Okay, but great that it's stable in general:)

BenceVirtonomy commented 1 year ago

@DongWuTUM @Xiangyu-Hu I agree that the sideways gravity is a better test. For me it's fine too but it gets hourglassed after a certain strain:

It's nice with hourglass control - I'm using: 'dt = 0.5 * computing_time_step_size.parallel_exec();' and it's stable all the way till the last time step. You can check it out on my branch: