Changing the periodic cell for cylindrical samples

Asked by Nima Goudarzi

Hi

I'm trying to reduce the computation time for a vane shear test where a central vane penetrates the underlying sample to a certain depth and then starts rotating for about 90 degrees. I understand that this problem is essentially non-periodic in the sense that the built-in parallelepiped periodic cell does not allow for the exchange of particles for my cylindrical sample. I do not know if changing the YADE periodicity is possible to account for radial deformations. The development of a wedge shape periodic cell is of much interest with the capability to exchange particles from two connecting sides as opposed to the original cell where the particles exist from one boundary and enter from the opposite boundary. To summarize, is it possible to have a periodic cell with one corner located in the center of the cylindrical sample and particles exit and enter from two sides pointing toward the center? If required, I can give a draft of what I mean.
Also, where can I find the source code for the periodic cell in the trunk?

Thanks so much and looking forward to hearing your thoughts

Question information

Language:
English Edit question
Status:
Expired
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Jérôme Duriez (jduriez) said :
#1

Hi,

A short remark, just looking at your title. With periodic boundaries, you're dealing with an infinite medium, so I'm not sure you can call it "cylindrical".

You may also note that the replicated pattern (= the Cell) is always defined from a 3 vectors "basis" (basis in " " because these vectors are not necessarily independent).

For source code, see e.g. at
https://gitlab.com/yade-dev/trunk/-/blob/master/core/Cell.hpp and .cpp

https://gitlab.com/yade-dev/trunk/-/blob/master/pkg/dem/NewtonIntegrator.cpp is also relevant

Revision history for this message
Nima Goudarzi (nimagoudarzi58) said :
#2

Hi Jerome,

Thanks. My model domain is a true cylinder meaning that I have confinement in the circumferential direction. What I am looking for is the development of a periodic cell focusing on converging sides of a wedge (which could be of different angles). Regarding your comment for always dependency of base vectors, I assume that I am not able to change the shape of cell and it always remains parallelepiped (if I understood correctly - - please correct me if wrong ). Therefore, what I might be able to do would be a exit/entrance of particles in polar system rather than the existing Cartesian one while the cell is I still in its original parallelepiped configuration.

Regards
Nima

> On Sep 12, 2022, at 10:55 AM, Jérôme Duriez <email address hidden> wrote:
>
> Your question #703104 on Yade changed:
> https://answers.launchpad.net/yade/+question/703104
>
> Jérôme Duriez posted a new comment:
> Hi,
>
> A short remark, just looking at your title. With periodic boundaries,
> you're dealing with an infinite medium, so I'm not sure you can call it
> "cylindrical".
>
> You may also note that the replicated pattern (= the Cell) is always
> defined from a 3 vectors "basis" (basis in " " because these vectors are
> not necessarily independent).
>
> For source code, see e.g. at
> https://gitlab.com/yade-dev/trunk/-/blob/master/core/Cell.hpp and .cpp
>
> https://gitlab.com/yade-
> dev/trunk/-/blob/master/pkg/dem/NewtonIntegrator.cpp is also relevant
>
> --
> You received this question notification because you asked the question.

Revision history for this message
Jan Stránský (honzik) said :
#3

Hello,

the situation you describe is usually called "axisymmetric" (to give you some hint for better googling) and is widely used e.g. in FEM or modelling in general to reduce 3D problem to "2D" (other similar reductions being plane stress and plane strain).

It is currently not possible in Yade.

However, I was playing with the idea before and still it is in my TODO list :-D
Although most likely I will not ever accomplish it.

I **think** (it is really a brainstorming without any testing or evidence or estimation of needed time to make it work) that it would be possible, in C++ source code or even pure python.
After time step, you know positions of particles and can determine and evaluate the "axisymmetric" contacts and apply corresponding forces and torques to the particles.
Basically doing "manually" the job of collider and interaction loop.

The problem is also the boundary, which cannot (or it would be very difficult) be "smooth".

Cheers
Jan

Revision history for this message
Nima Goudarzi (nimagoudarzi58) said :
#4

Hi Jan,

Thanks for the comment. What I'm thinking is preserving the currently existing periodic boundary conditions in YADE and doing a trick to impose the entrance/exit of particles to/from two adjacent boundaries. This has been implemented before in DEM (see for example "Development of a mixed boundary environment for axi-symmetric DEM analyses"). I do not seek changes in the geometry of the periodic cell but am looking to placing the corner of the cell in the center of the cylindrical sample (please note that in the circumferential direction, the boundary is not periodic) and somehow changing the logic (C++) of locations of particles exit/reentry.
Looking forward to hearing your thoughts.

Cheers

Nima

Revision history for this message
Jan Stránský (honzik) said :
#5

Most of below comments is my opinion, not based on any actual tests or experience.

> preserving the currently existing periodic boundary conditions in YADE and doing a trick to impose the entrance/exit of particles to/from two adjacent boundaries

These are contradictory requirements.
Either you preserve existing approach, or you do "a trick" (also see below), not both.

Simply saying, what you want is not currently "simply" possible in Yade.

> doing a trick
> somehow changing the logic

The key would be THE trick and HOW to change the logic.

The periodic boundary conditions, or I like more to name it as periodic contact detection, now works on the "cubic" arrangement.

Of course, what you want would be possible to implement.
However, "a trick" would mean completely new algorithm(s) for the collider (and integrator and ... ?) and significant amount of work.

"changes in the geometry" or not is then irrelevant, as the new work would (should?) be independent of current implementation.

I would start with the python "prototype" discussed above.
Its performance would be terrible, but the implementation would not take so much time as C++ and you can test some features of the method.
Then, if it works and is promising, you can dive into C++.
Again, just my opinion, no strict rule.

Cheers
Jan

Revision history for this message
Nima Goudarzi (nimagoudarzi58) said :
#6

Hi Jan
Thanks. I do understand the difficulty of C++ implementation and am more interested in a simpler python version. I have made some progress with an equivalent method where I am able to project the location, velocity, and force of the particles which are exiting one of the boundaries. Here, I still need periodic boundaries to allow for the exit/entry unless there is a method to avoid YADE periodic boundaries at all (no boundaries where particles themselves provide the stability or facet boundaries with occasional contact activation/deactivation--- just brainstorming). As you mentioned earlier, boundaries are the issue and I am trying to figure out when the rotation (position, velocity, force) should take place or even if I need to generate new particles exactly at my desired location with the velocities and forces of the exiting particles to provide a smooth granular flow. In the latter, I remove the particles which fully exit the boundary which causes a temporary stop of the run (why is that?).

I just wanted to have your thoughts on the approach I have taken to mimic the periodicity.

Cheers,

Nima

Revision history for this message
Nima Goudarzi (nimagoudarzi58) said :
#7

Also, is there a way to disable the particle (and image) generation in the opposite boundary? I do not need two of the four periodic boundaries.

Regards

Revision history for this message
Jan Stránský (honzik) said :
#8

> Here, I still need periodic boundaries to allow for the exit/entry unless there is a method to avoid YADE periodic boundaries at all (no boundaries where particles themselves provide the stability or facet boundaries with occasional contact activation/deactivation--- just brainstorming).
> As you mentioned earlier, boundaries are the issue and I am trying to figure out when the rotation (position, velocity, force) should take place or even if I need to generate new particles exactly at my desired location with the velocities and forces of the exiting particles to provide a smooth granular flow.

In the existing implementation, I like the approach that the particle can have arbitrary position, but is treated as if it would be "wrapped" inside the periodic cell (and its periodic images being around).
This way, you do not need to delete/create particles, just take into account that in reality the particle is outside, virtually meaning that it would be "on the other side".

> In the latter, I remove the particles which fully exit the boundary which causes a temporary stop of the run (why is that?).

I have no idea :-)
Maybe some internal computation / processing due to deleted particles, in consequence deleted interactions ...
Impossible to say just from such description..

> Also, is there a way to disable the particle (and image) generation in the opposite boundary? I do not need two of the four periodic boundaries.

No (not in current implementation).
You can workaround it by enlarging the periodic cell, practically not using the periodicity in one direction, but from computation point of view, the simulation is still fully periodic.

Resume: forget existing periodic boundary conditions (periodic contact detection) for your use case, it is not usable.
You can get inspiration (e.g. the no delete/create approach), but you cannot directly use the code.

Cheers
Jan

Revision history for this message
Launchpad Janitor (janitor) said :
#9

This question was expired because it remained in the 'Open' state without activity for the last 15 days.