PeriTriaxController vs. Peri3DController

Asked by Bruno Chareyre

Hi,

I'm not sure how to compare those two engines. What are the reason to choose one instead of the other?
The question is mostly for Jan, but I'm opening the discussion here since many users may face this choice.
Feedback from other users of these engines is welcome.

This is what can be done in a simulation with PeriTriaxController:
- all 9 components of the velocity gradient can be user defined (actually, it doesn't need a controller at all)
- 3 components of the final strain can be prescribed: exx, eyy, ezz
- 3 stress components can be prescribed: sxx, syy, szz (obviously, we can't impose at he same time exx and sxx)

- The stress can be controlled with two different algorithms:
* static algorithm: de = ds / E, where ds is the difference (goal - currentStress) and E is a stiffness evaluated from the current contact list (estimating E is the tricky part and weakness of the algorithm in the general case, the definition should depend on the contact law and other things, is has no exact definition to this date in the general case)
* dynamic algorithm d²e/dt² = ds/m, where "m" is user defined mass. More robust than the previous one (works whatever the contact law), but needs m to be defined carefully.

Typical situations where PeriTriax can be used are triaxial-like loading paths, but it is also possible to use it in simple shear with imposed vertical pressure (for instance).

What are the situations covered by Peri3D only?
Is it easier or more difficult to use Peri3D instead of PeriTriax?

Question information

Language:
English Edit question
Status:
Answered
For:
Yade Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Jan Stránský (honzik) said :
#1

Hi,

There were two main reasons why I did Peri3dController:

1) to learn programming
2) to be able to prescribe stress/strain in global coordinate system also
on rotated cell
3) to be able to prescribe also shear stresses

the first item is irrelevant, the second is easily implementable (if you
agree I can try to implement it to PeriTriaxController) and maybe also the
third item can be added to PeriTriaxController..

Jan

2012/10/31 Chareyre <email address hidden>

> New question #212881 on Yade:
> https://answers.launchpad.net/yade/+question/212881
>
> Hi,
>
> I'm not sure how to compare those two engines. What are the reason to
> choose one instead of the other?
> The question is mostly for Jan, but I'm opening the discussion here since
> many users may face this choice.
> Feedback from other users of these engines is welcome.
>
> This is what can be done in a simulation with PeriTriaxController:
> - all 9 components of the velocity gradient can be user defined (actually,
> it doesn't need a controller at all)
> - 3 components of the final strain can be prescribed: exx, eyy, ezz
> - 3 stress components can be prescribed: sxx, syy, szz (obviously, we
> can't impose at he same time exx and sxx)
>
> - The stress can be controlled with two different algorithms:
> * static algorithm: de = ds / E, where ds is the difference (goal -
> currentStress) and E is a stiffness evaluated from the current contact list
> (estimating E is the tricky part and weakness of the algorithm in the
> general case, the definition should depend on the contact law and other
> things, is has no exact definition to this date in the general case)
> * dynamic algorithm d²e/dt² = ds/m, where "m" is user defined mass. More
> robust than the previous one (works whatever the contact law), but needs m
> to be defined carefully.
>
> Typical situations where PeriTriax can be used are triaxial-like loading
> paths, but it is also possible to use it in simple shear with imposed
> vertical pressure.
>
> What are the situations covered by Peri3D only?
> Is it easier or more difficult to use Peri3D instead of PeriTriax?
>
>
>
> --
> You received this question notification because you are a member of
> yade-users, which is an answer contact for Yade.
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-users
> Post to : <email address hidden>
> Unsubscribe : https://launchpad.net/~yade-users
> More help : https://help.launchpad.net/ListHelp
>

Revision history for this message
Bruno Chareyre (bruno-chareyre) said :
#2

Thanks Jan.

1) You deserve the degree for this nice piece of code! ;)
2/3) Yes, it would be good to unify.

I'm still not too sure what is a "rotated" cell.
I mean, any rotation I can imagine would not break PeriTriax. You can for instance prescribe a rotation like velGrad(1,2)=R, velGrad(2,1)=-R, then control stress/strain 11, 22 and 33. It is also possible to start from arbitrary cell geometry (rotated, sheared, etc.). So, what is specific in Peri3D?

For shear stress, clearly, this is something PeriTriax will NOT control currently. I guess it is straightforward to control it in the static algorithm, since it is essentially what you did in Peri3D (or are there also differences in the static algorithms of the two engines?)
For the dynamic algorithm, it would not be really difficult either to generalize the algorithm to d²e_ij/dt² = ds_ij/m when i!=j. We could try that.

One thing to consider carefully is the complexity of the interface. If adding functionalities is at the price of additional complexity for the user, then it is maybe not worth it. I'll have to check example scripts with Peri3D.

Can you help with this problem?

Provide an answer of your own, or ask Bruno Chareyre for more information if necessary.

To post a message you must log in.