mix boundary control

Asked by Chiara Modenese

Hi,

question on the way the servo-control algorithm works in case we want to control strains and stresses on the boundaries at the same time (e.g. triaxial phase). I am referring here to the PeriTriaxController engine. I am not sure to understand how the algorithm works when you have the mix control. In particular, how is the user supposed to set the maxStrainRate in such a case? (Bruno?)

Hope the question is clear, otherwise let me know.
Thanks! Chiara

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
Bruno Chareyre (bruno-chareyre) said :
#1

Hi Chiara,

You can't apply a strain rate directly, so you define a target strain and a max strainRate, and it will load at this rate on direction k, as soon as k is not stress-controlled.
This is how I set periTriax for a constant strain rate loading in direction 1, and constant stress on 0 and 2 (a few revisions ago, but I don't think it changed) :

triax.goal=[-1e4,triax.strain[1]-finalStrain,-1e4]
triax.maxStrainRate=[rate*10.0,rate,rate*10.0]
triax.stressMask=5

In goals "triax.strain[1]-finalStrain" means final strain with reference to current state.
Higher rates are allowed for axis 0 and 2, so that its not a limiting factor for stress regulation (maxima apply for all boundaries).
stressMask=5 set which directions are stress controled with bit mask (True*1+False*2+True*4).

I hope it helps.

Bruno

Revision history for this message
Chiara Modenese (chiara-modenese) said :
#2

Hi Bruno,
thanks for answer. I was wondering if permitting a higher rate could not be
problematic. I mean, I see the need for such a limitation. However, I am not
sure whether the factor of 10 you propose is always enough or perhaps too
restrictive in some cases. In the end everything seems to require
calibration :-(
Btw, looking at the code, strain_rate does seems to be constantly applied
even if the control is of strain type (line 201?).
cheers. Chiara

On 5 December 2010 20:10, Chareyre <email address hidden>wrote:

> Your question #136704 on Yade changed:
> https://answers.launchpad.net/yade/+question/136704
>
> Status: Open => Answered
>
> Chareyre proposed the following answer:
> Hi Chiara,
>
> You can't apply a strain rate directly, so you define a target strain and a
> max strainRate, and it will load at this rate on direction k, as soon as k
> is not stress-controlled.
> This is how I set periTriax for a constant strain rate loading in direction
> 1, and constant stress on 0 and 2 (a few revisions ago, but I don't think it
> changed) :
>
> triax.goal=[-1e4,triax.strain[1]-finalStrain,-1e4]
> triax.maxStrainRate=[rate*10.0,rate,rate*10.0]
> triax.stressMask=5
>
> In goals "triax.strain[1]-finalStrain" means final strain with reference to
> current state.
> Higher rates are allowed for axis 0 and 2, so that its not a limiting
> factor for stress regulation (maxima apply for all boundaries).
> stressMask=5 set which directions are stress controled with bit mask
> (True*1+False*2+True*4).
>
> I hope it helps.
>
> Bruno
>
> --
> If this answers your question, please go to the following page to let us
> know that it is solved:
> https://answers.launchpad.net/yade/+question/136704/+confirm?answer_id=0
>
> If you still need help, you can reply to this email or go to the
> following page to enter your feedback:
> https://answers.launchpad.net/yade/+question/136704
>
> You received this question notification because you are a direct
> subscriber of the question.
>

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

Nah, don't be afraid. :-)
If you consider Poisson's ratio (the real one) and usual dilatancy angles, you'll see that
x10 will not limit any realistic deformation.
If it was, you would see lateral stress increasing during the loading phase.

Bruno

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

> Btw, looking at the code, strain_rate does seems to be constantly applied
> even if the control is of strain type (line 201?).

I forgot to answer this one : it is constantly applied, see line 208.

B.

Revision history for this message
Robert Caulk (rcaulk) said :
#5

Hey Yade user, I am an automated bot :-). After reading your question, I decided to find some related threads and summarize them for you here. Please do not hesitate to follow up on my summarizations by following the links provided below.

Title: "Periodic - servo-control using stiffness - simulation loop"
Thread summary: Chiara seeks clarification on periodic cases in PerIsoCompressor.cpp, wondering if adding a gain parameter could improve servo-control and questioning stiffness calculation. They also query a note in NewtonIntegrator.cpp regarding updating velocity before moving the body. Bruno suggests considering an additional factor (1-damping) to relax the system and reduce gain. Jan shared his perspective on stress/strain control of periodic cells, mentioning that using formulas for stiffness computation was unsuitable due to approximation, and in current Peri3dController, strain can be prescribed directly. Honzik asked for a summary of the discussion.
https://answers.launchpad.net/yade/+question/159394

Title: "maxStrainRate in the PeriTriaxController"
Thread summary: Feng seeks clarification on the meaning of 'maxStrainRate' in PeriTriaxController, wondering if setting it to 0.1 means the wall shrinks at 0.1 m/s or by 0.1 times per second. Jan confirms that the second option (maxStrainRate = max rate of strain) is correct.
https://answers.launchpad.net/yade/+question/676830

Title: "how 'PeritriaxController' control stress on boundry"
Thread summary: The user is uncertain about how 'strain_rate' operates in their C++ code, specifically if it moves particles based on their coordinates and strain rate while using 'PeriTriaxController' to apply stress to their model. The issue was resolved by Bruno Chareyre.
https://answers.launchpad.net/yade/+question/429608

Revision history for this message
Robert Caulk (rcaulk) said :
#6

Hey there! As an automated bot, I've scanned through some relevant threads and put together a summary for you. Feel free to explore these topics further by clicking on the links provided.
Title: "Periodic - servo-control using stiffness - simulation loop"
Thread summary: Chiara seeks clarification on periodic cases in PerIsoCompressor.cpp and servo-control mechanism with stiffness and simulation loop in NewtonIntegrator.cpp. Bruno explains the similarity between servo-control mechanisms for rigid boundaries and dynamic cells, discussing the role of gain parameters and their units. He suggests adding a factor (1-damping) to relax the system, as there's no wall damping in the periodic case. Chareyre agrees with Bruno's suggestion and proposes using the size of the cell as a reference for the factor. Jan did not use this method and wrote his own controller, but Chiara asks for his opinion on the matter. Jan explains that they tried to compute stiffness of whole cells based on published formulas, which were approximations, making it unsuitable. In current Peri3dController, strain can be prescribed directly, and an appropriate strain component is estimated so that stress differs minimally from the ideal value for prescribed stress. Thanks Chareyre, that solved my question.
https://answers.launchpad.net/yade/+question/159394

Title: "maxStrainRate in the PeriTriaxController"
Thread summary: Feng asked about 'maxStrainRate' in PeriTriaxController, Jan clarified it means the wall is shrinking at 0.1 times per second.
https://answers.launchpad.net/yade/+question/676830

Title: "how 'PeritriaxController' control stress on boundry"
Thread summary: The user was uncertain about how 'strain_rate' works in C++ when using 'PeriTriaxController', believing it moves particles by their coordinates with strain rate multiplied by time dt. Bruno provided a link to more details on periodic boundary conditions, which solved the user's question.
https://answers.launchpad.net/yade/+question/429608

Can you help with this problem?

Provide an answer of your own, or ask Chiara Modenese for more information if necessary.

To post a message you must log in.