parmes / solfec-1.0

Parallel Non-Smooth Contact Dynamics using MPI, C and Python
http://parmes.github.io/solfec-1.0
7 stars 3 forks source link

Constraints inside MESH-based bodies #72

Open stevebrasier opened 6 years ago

stevebrasier commented 6 years ago

Creating constraints inside a MESH-based body is failing at some points with a “Point outside of domain” error. Using DISPLAY_POINT demonstrates these points are inside the body at least. Discussion via email indicated that this occurs for points linked to elements which do not have a free face. Possibly we never ran into this before due to using coarse meshes (i.e. most elements would have a free face) or using surface nodesets to apply constraints.

Demo files to follow.

tkoziara commented 6 years ago

Steve, this is in fact not a bug but design feature, when I now look at it. Here is an explanation:

Solfec uses a list of geometrical objects attached to a body to perform contact detection. In case of FE bodies this list comprises only those elements which are adjacent, by a face, to the surface of the body. And by design only those elements are checked, when boundary conditions are applied to the finite element bodies.

Changing the above would be possible, but it would possibly take a little more work, than it may be worth, considering what your goal is.

Do you really need displacements boundary conditions inside of the bulk of finite element bodies? Would you not be able to achieve the same effect by placing constraints on the boundary?

On the other hand, if you would like to apply such constraints to rigid or pseudo-rigid bodies, while still using an FE mesh as geometry, you could convert such mesh into convices first, using MESH2CONVEX. Then it would work.

Let me know how you feel about the above:) (nice example code by the way, thanks for providing) Tomek

stevebrasier commented 6 years ago

Thanks. I guess, in general, there is no reason why arbitrary constraints (as used for boundary conditions) should not be placeable at any point within the body's volume. However, I take the point about the performance aspect. I think I'm happy to leave it as-is at the moment but I think it should be mentioned in the constraints section of the manual.

tkoziara commented 6 years ago

I could perhaps implement a way in which only the minimum extra information is stored with the bodies when this type of constrains has been applied; let me have a look at this first; perhaps it can work after all:)

On 21 March 2018 at 10:18, stevebrasier notifications@github.com wrote:

Thanks. I guess, in general, there is no reason why arbitrary constraints (as used for boundary conditions) should not be placeable at any point within the body's volume. However, I take the point about the performance aspect. I think I'm happy to leave it as-is at the moment but I think it should be mentioned in the constraints section of the manual.

— You are receiving this because you were assigned. Reply to this email directly, view it on GitHub https://github.com/tkoziara/solfec/issues/72#issuecomment-374874640, or mute the thread https://github.com/notifications/unsubscribe-auth/ACGKNK42lVX15KzySg6d7bc_uZPmMEI_ks5tghrbgaJpZM4StkZ3 .

tkoziara commented 6 years ago

Steve, this proved to be easier than thought - because what was needed was already there; I did not remember that at some earlier point I already extended this functionality but did not fully resolve it so that it was seen by the users; please update sources and do test it as much as you can, also in parallel; Best regards:) Tomek

tkoziara commented 6 years ago

Reopened in relation to #74