<div dir="ltr">Hi Bui,<div><br></div><div>There are already several implementations of search trees already present in Kratos. You can find them here:</div><div><br></div><div><a href="https://kratos.cimne.upc.es/projects/kratos/repository/show/kratos/kratos/spatial_containers">https://kratos.cimne.upc.es/projects/kratos/repository/show/kratos/kratos/spatial_containers</a><br></div><div><br></div><div>You will also find several other search data strucutres like bins as well.</div><div><br></div><div>Br,</div><div><br></div><div>Charlie</div><div><br></div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr">El mié., 7 oct. 2015 a las 12:37, &lt;<a href="mailto:maireni@cimne.upc.edu">maireni@cimne.upc.edu</a>&gt; escribió:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Dear Riccardo,<br>
If you put a high loading that make the structure enter to<br>
pastic region meaby you can or not reaches some convenrgences (sometimes<br>
simply do not converge because plastic is incremental).<br>
This thing is for the same load, during the  newton rapshon iteration<br>
process, the model can pass from pastic behavior (mainly those element<br>
where the load are applied ) to elastic behavior for redistribution of<br>
residual and internal forces.<br>
I am not good explain this in english but look the following:<br>
<br>
Begin NR method<br>
Initialize solution step()<br>
while not converge do<br>
{<br>
   Update internal variables to previous converged one (the last step<br>
converged)<br>
   {<br>
    Variable_new = Variable_old; /// you jus have it<br>
   }<br>
     Integrate internal forces<br>
     Calculate constitutive matrix<br>
     Fint-Fext&lt;convergence<br>
}<br>
<br>
Finalize Solution Step(Update internal odl variables)<br>
{<br>
Variable_old = Variable_new<br>
}<br>
<br>
If this is this situation, just an updates variables during the NR<br>
iteration need to be called ALWAYS.<br>
Take care about the load because in plastic regime you can or nor have<br>
convervence.<br>
This is the way that in Structural application is design.<br>
I dont know if i follow your idea, but is really necesary to have this<br>
function in the strategy separately.<br>
<br>
In any case, if you see that is good idea, you can add a new function in<br>
strategy but keeping the original<br>
member strategy base (Es mi humilde opinion).<br>
<br>
Regards<br>
<br>
Nelson<br>
<br>
<br>
El 2015-10-07 18:09, Hoang Giang Bui escribió:<br>
&gt; Dear all<br>
&gt;<br>
&gt; This addition is not harmful in my point of view. I just want to<br>
&gt; comment a bit on that. Basically in the case of structural solver, the<br>
&gt; new SolveSolutionStep function will comprise of:<br>
&gt;<br>
&gt; Clear the linear system<br>
&gt;<br>
&gt; loop until convergence:<br>
&gt;   scheme.InitializeNonLinIteration<br>
&gt;   builder_and_solver.Build<br>
&gt;   linear_solver.Solve<br>
&gt;<br>
&gt;   scheme.FinalizeNonLinIteration<br>
&gt;<br>
&gt; We wrap it under the name ExecuteIteration anyway (see<br>
&gt; uzawa_contact_strategy.py). Therefore it&#39;s just a name change.<br>
&gt;<br>
&gt; Cheers,<br>
&gt;<br>
&gt; Bui<br>
&gt;<br>
&gt; P/S: Is there a bounding volume tree implementation for efficient<br>
&gt; contact search already in the Kratos kernel/ else where in the<br>
&gt; application? I just want to know if I can use a better implementation,<br>
&gt; otherwise I will contribute my one to the repository.<br>
&gt;<br>
&gt; On Wed, Oct 7, 2015 at 11:57 AM, Riccardo Rossi &lt;<a href="mailto:rrossi@cimne.upc.edu" target="_blank">rrossi@cimne.upc.edu</a>&gt;<br>
&gt; wrote:<br>
&gt;<br>
&gt;&gt; Dear Nelson,<br>
&gt;&gt;<br>
&gt;&gt;  the point is the following:<br>
&gt;&gt;<br>
&gt;&gt; imagine that you do a FSI simulation and your structure is<br>
&gt;&gt; elastoplastic: you first have a  wrong guess (too high)  of the<br>
&gt;&gt; forces acting on the structure and you call &quot;solve&quot;. The structure<br>
&gt;&gt; becomes plastic and after reaching convergence it calls<br>
&gt;&gt; FinalizeSolutionStep where the constitutive law stores the internal<br>
&gt;&gt; variables for the next step.<br>
&gt;&gt;<br>
&gt;&gt; then you correct the forces (now much smaller) and you call solve<br>
&gt;&gt; again. The structure should not become plastic anymore HOWEVER it<br>
&gt;&gt; already stored the internal variables at the end of the previous<br>
&gt;&gt; step, so the results would wrongly believe that the structural<br>
&gt;&gt; behaviour is plastic, while really should have stayed elastic<br>
&gt;&gt;<br>
&gt;&gt; still... note that if you call &quot;Solve&quot; it will behave only as<br>
&gt;&gt; before. The difference is that you can choose when your Internal<br>
&gt;&gt; variables have to be stored (at the end of the complete fsi loop,<br>
&gt;&gt; not at the end of each solve!!)<br>
&gt;&gt;<br>
&gt;&gt; cheers<br>
&gt;&gt;<br>
&gt;&gt; Riccardo<br>
&gt;&gt;<br>
&gt;&gt; On Wed, Oct 7, 2015 at 9:40 AM, &lt;<a href="mailto:maireni@cimne.upc.edu" target="_blank">maireni@cimne.upc.edu</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt;&gt; Hi Riccardo,<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; I do not understrand yet why it is not necessary to call the<br>
&gt;&gt;&gt; initialize,<br>
&gt;&gt;&gt; predict and finalize functions.<br>
&gt;&gt;&gt; This methods are escencially important in structural and solid<br>
&gt;&gt;&gt; application where some internal variables<br>
&gt;&gt;&gt; or other need to be updated or reseted (mainly  in constitutive<br>
&gt;&gt;&gt; law).<br>
&gt;&gt;&gt; If bassically  does not want to call this method i prefere in my<br>
&gt;&gt;&gt; opinion<br>
&gt;&gt;&gt; to include a new member in base<br>
&gt;&gt;&gt; class of strategy where those calls can be avoided.<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; It really cost calls this function in each time step?<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Regards<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; Nelson<br>
&gt;&gt;&gt;<br>
&gt;&gt;&gt; El 2015-10-07 15:05, Riccardo Rossi escribió:<br>
&gt;&gt;&gt;&gt; Dear All,<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;   i believe there is a weakness in the current design of the<br>
&gt;&gt;&gt; solving<br>
&gt;&gt;&gt;&gt; strategies, and i would like to propose a small improvement to<br>
&gt;&gt;&gt; the<br>
&gt;&gt;&gt;&gt; current interface:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; the point is that as of today the strategy has essentially the<br>
&gt;&gt;&gt;&gt; following methods:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Initialize (to be called once)<br>
&gt;&gt;&gt;&gt; InitializeSolutionStep<br>
&gt;&gt;&gt;&gt; Predict<br>
&gt;&gt;&gt;&gt; FinalizeSolutionStep<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; and<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Solve --&gt; which combines everything in one single call.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; the problem is that is someone calls solve the<br>
&gt;&gt;&gt; InitializeSolutionStep<br>
&gt;&gt;&gt;&gt; and FinalizeSolutionStep are inevitably called, which is a<br>
&gt;&gt;&gt; problem if<br>
&gt;&gt;&gt;&gt; for example one<br>
&gt;&gt;&gt;&gt; would like to do repeated solves within a single time step.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; the typical scenario is that of a FSI simulation, but the same<br>
&gt;&gt;&gt; problem<br>
&gt;&gt;&gt;&gt; is also found for example in the RVE solver.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; My proposal would be to add a new function<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; &quot;SolveSolutionStep&quot;<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; which ONLY does the solution but WITHOUT CALLING<br>
&gt;&gt;&gt;&gt; InitializeSolutionStep, Predict, FinalizeSolutionStep<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; The point of doing this is that the &quot;solve&quot; call would be:<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Solve()<br>
&gt;&gt;&gt;&gt;     InitializeSolutionStep<br>
&gt;&gt;&gt;&gt;     Predict<br>
&gt;&gt;&gt;&gt;     SolveSolutionStep<br>
&gt;&gt;&gt;&gt;     FinalizeSolutionStep<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; but one would be able to call the very same thing from the<br>
&gt;&gt;&gt; python (or<br>
&gt;&gt;&gt;&gt; from a higher level strategy)<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; so that for example a FSI loop would become<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;     structural_solver.InitializeSolutionStep()<br>
&gt;&gt;&gt;&gt;     fluid_solver.InitializeSolutionStep()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;     structural_solver.Predict()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;     while(not converged)<br>
&gt;&gt;&gt;&gt;         structural_solver.SolveSolutionStep()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         apply_velocities_to_fluid()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         fluid_solver.SolveSolutionStep()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         apply_forces_to_structure()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;         check_convergence()<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;     structural_solver.FinalizeSolutionStep()<br>
&gt;&gt;&gt;&gt;     fluid_solver.FinalizeSolutionStep()<br>
&gt;&gt;&gt;&gt;    <br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Of course if someone uses the current Solve() nothing changes<br>
&gt;&gt;&gt; and<br>
&gt;&gt;&gt;&gt; current behaviour is unmodified...<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; any voice against such change? if not i&#39;ll go ahead...<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; ciao<br>
&gt;&gt;&gt;&gt; Riccardo<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;        <br>
&gt;&gt;&gt;&gt;       <br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; --<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Riccardo Rossi<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;   PhD, Civil Engineer<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; member of the Kratos Team: <a href="http://www.cimne.com/kratos" rel="noreferrer" target="_blank">www.cimne.com/kratos</a> [1] [1]<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; lecturer at Universitat Politècnica de Catalunya,<br>
&gt;&gt;&gt; BarcelonaTech (UPC)<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Research fellow at International Center for Numerical Methods<br>
&gt;&gt;&gt; in<br>
&gt;&gt;&gt;&gt; Engineering (CIMNE)<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; C/ Gran Capità, s/n, Campus Nord UPC, Ed. C1, Despatx C9<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;   08034 – Barcelona – Spain – <a href="http://www.cimne.com" rel="noreferrer" target="_blank">www.cimne.com</a> [2] [2]  - <br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;   T.(+34) 93 401 56 96 [3] skype: ROUGERED4<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;  <br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;   [3]<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;   [4] [5] [6] [7] [8] [9]<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Les dades personals contingudes en aquest missatge són<br>
&gt;&gt;&gt; tractades amb<br>
&gt;&gt;&gt;&gt; la finalitat de mantenir el contacte professional entre CIMNE i<br>
&gt;&gt;&gt; voste.<br>
&gt;&gt;&gt;&gt; Podra exercir els drets d&#39;accés, rectificació, cancel·lació<br>
&gt;&gt;&gt; i<br>
&gt;&gt;&gt;&gt; oposició, dirigint-se a <a href="mailto:cimne@cimne.upc.edu" target="_blank">cimne@cimne.upc.edu</a>. La utilització<br>
&gt;&gt;&gt; de la<br>
&gt;&gt;&gt;&gt; seva adreça de correu electronic per part de CIMNE queda<br>
&gt;&gt;&gt; subjecte a<br>
&gt;&gt;&gt;&gt; les disposicions de la Llei 34/2002, de Serveis de la Societat<br>
&gt;&gt;&gt; de la<br>
&gt;&gt;&gt;&gt; Informació i el Comerç Electronic.<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt;  Imprimiu aquest missatge, només si és estrictament<br>
&gt;&gt;&gt; necessari. [3]<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; Links:<br>
&gt;&gt;&gt;&gt; ------<br>
&gt;&gt;&gt;&gt; [1] <a href="http://www.cimne.com/kratos" rel="noreferrer" target="_blank">http://www.cimne.com/kratos</a> [1]<br>
&gt;&gt;&gt;&gt; [2] <a href="http://www.cimne.com" rel="noreferrer" target="_blank">http://www.cimne.com</a> [2]<br>
&gt;&gt;&gt;&gt; [3] <a href="http://www.cimne.com/" rel="noreferrer" target="_blank">http://www.cimne.com/</a> [4]<br>
&gt;&gt;&gt;&gt; [4] <a href="https://www.facebook.com/cimne" rel="noreferrer" target="_blank">https://www.facebook.com/cimne</a> [5]<br>
&gt;&gt;&gt;&gt; [5] <a href="http://blog.cimne.com/" rel="noreferrer" target="_blank">http://blog.cimne.com/</a> [6]<br>
&gt;&gt;&gt;&gt; [6] <a href="http://vimeo.com/cimne" rel="noreferrer" target="_blank">http://vimeo.com/cimne</a> [7]<br>
&gt;&gt;&gt;&gt; [7] <a href="http://www.youtube.com/user/CIMNEvideos" rel="noreferrer" target="_blank">http://www.youtube.com/user/CIMNEvideos</a> [8]<br>
&gt;&gt;&gt;&gt; [8] <a href="http://www.linkedin.com/company/cimne" rel="noreferrer" target="_blank">http://www.linkedin.com/company/cimne</a> [9]<br>
&gt;&gt;&gt;&gt; [9] <a href="https://twitter.com/cimne" rel="noreferrer" target="_blank">https://twitter.com/cimne</a> [10]<br>
&gt;&gt;&gt;&gt;<br>
&gt;&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt;&gt; Kratos mailing list<br>
&gt;&gt;&gt;&gt; <a href="mailto:Kratos@listas.cimne.upc.edu" target="_blank">Kratos@listas.cimne.upc.edu</a><br>
&gt;&gt;&gt;&gt; <a href="http://listas.cimne.upc.edu/cgi-bin/mailman/listinfo/kratos" rel="noreferrer" target="_blank">http://listas.cimne.upc.edu/cgi-bin/mailman/listinfo/kratos</a><br>
&gt;&gt;&gt; [11]<br>
&gt;&gt;&gt; _______________________________________________<br>
&gt;&gt;&gt; Kratos mailing list<br>
&gt;&gt;&gt; <a href="mailto:Kratos@listas.cimne.upc.edu" target="_blank">Kratos@listas.cimne.upc.edu</a><br>
&gt;&gt;&gt; <a href="http://listas.cimne.upc.edu/cgi-bin/mailman/listinfo/kratos" rel="noreferrer" target="_blank">http://listas.cimne.upc.edu/cgi-bin/mailman/listinfo/kratos</a> [11]<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt;<br>
&gt;&gt; Riccardo Rossi<br>
&gt;&gt;<br>
&gt;&gt; PhD, Civil Engineer<br>
&gt;&gt;<br>
&gt;&gt; member of the Kratos Team: <a href="http://www.cimne.com/kratos" rel="noreferrer" target="_blank">www.cimne.com/kratos</a> [1]<br>
&gt;&gt;<br>
&gt;&gt; lecturer at Universitat Politècnica de Catalunya, BarcelonaTech<br>
&gt;&gt; (UPC)<br>
&gt;&gt;<br>
&gt;&gt; Research fellow at International Center for Numerical Methods in<br>
&gt;&gt; Engineering (CIMNE)<br>
&gt;&gt;<br>
&gt;&gt; C/ Gran Capità, s/n, Campus Nord UPC, Ed. C1, Despatx C9<br>
&gt;&gt;<br>
&gt;&gt; 08034 – Barcelona – Spain – <a href="http://www.cimne.com" rel="noreferrer" target="_blank">www.cimne.com</a> [2]  - <br>
&gt;&gt;<br>
&gt;&gt; T.(+34) 93 401 56 96 skype: ROUGERED4<br>
&gt;&gt;<br>
&gt;&gt;  <br>
&gt;&gt;<br>
&gt;&gt; [4]<br>
&gt;&gt;<br>
&gt;&gt; [5] [6] [7] [8] [9] [10]<br>
&gt;&gt;<br>
&gt;&gt; Les dades personals contingudes en aquest missatge són tractades<br>
&gt;&gt; amb la finalitat de mantenir el contacte professional entre CIMNE i<br>
&gt;&gt; voste. Podra exercir els drets d&#39;accés, rectificació,<br>
&gt;&gt; cancel·lació i oposició, dirigint-se a <a href="mailto:cimne@cimne.upc.edu" target="_blank">cimne@cimne.upc.edu</a>. La<br>
&gt;&gt; utilització de la seva adreça de correu electronic per part de<br>
&gt;&gt; CIMNE queda subjecte a les disposicions de la Llei 34/2002, de<br>
&gt;&gt; Serveis de la Societat de la Informació i el Comerç Electronic.<br>
&gt;&gt;<br>
&gt;&gt;  Imprimiu aquest missatge, només si és estrictament necessari.<br>
&gt;&gt; [4]<br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Kratos mailing list<br>
&gt;&gt; <a href="mailto:Kratos@listas.cimne.upc.edu" target="_blank">Kratos@listas.cimne.upc.edu</a><br>
&gt;&gt; <a href="http://listas.cimne.upc.edu/cgi-bin/mailman/listinfo/kratos" rel="noreferrer" target="_blank">http://listas.cimne.upc.edu/cgi-bin/mailman/listinfo/kratos</a> [11]<br>
&gt;<br>
&gt; --<br>
&gt;<br>
&gt; With Best Regards !<br>
&gt; Giang Bui<br>
&gt; To learn and to excel<br>
&gt;<br>
&gt; Links:<br>
&gt; ------<br>
&gt; [1] <a href="http://www.cimne.com/kratos" rel="noreferrer" target="_blank">http://www.cimne.com/kratos</a><br>
&gt; [2] <a href="http://www.cimne.com" rel="noreferrer" target="_blank">http://www.cimne.com</a><br>
&gt; [3] tel:%28%2B34%29%2093%20401%2056%2096<br>
&gt; [4] <a href="http://www.cimne.com/" rel="noreferrer" target="_blank">http://www.cimne.com/</a><br>
&gt; [5] <a href="https://www.facebook.com/cimne" rel="noreferrer" target="_blank">https://www.facebook.com/cimne</a><br>
&gt; [6] <a href="http://blog.cimne.com/" rel="noreferrer" target="_blank">http://blog.cimne.com/</a><br>
&gt; [7] <a href="http://vimeo.com/cimne" rel="noreferrer" target="_blank">http://vimeo.com/cimne</a><br>
&gt; [8] <a href="http://www.youtube.com/user/CIMNEvideos" rel="noreferrer" target="_blank">http://www.youtube.com/user/CIMNEvideos</a><br>
&gt; [9] <a href="http://www.linkedin.com/company/cimne" rel="noreferrer" target="_blank">http://www.linkedin.com/company/cimne</a><br>
&gt; [10] <a href="https://twitter.com/cimne" rel="noreferrer" target="_blank">https://twitter.com/cimne</a><br>
&gt; [11] <a href="http://listas.cimne.upc.edu/cgi-bin/mailman/listinfo/kratos" rel="noreferrer" target="_blank">http://listas.cimne.upc.edu/cgi-bin/mailman/listinfo/kratos</a><br>
&gt;<br>
&gt; _______________________________________________<br>
&gt; Kratos mailing list<br>
&gt; <a href="mailto:Kratos@listas.cimne.upc.edu" target="_blank">Kratos@listas.cimne.upc.edu</a><br>
&gt; <a href="http://listas.cimne.upc.edu/cgi-bin/mailman/listinfo/kratos" rel="noreferrer" target="_blank">http://listas.cimne.upc.edu/cgi-bin/mailman/listinfo/kratos</a><br>
_______________________________________________<br>
Kratos mailing list<br>
<a href="mailto:Kratos@listas.cimne.upc.edu" target="_blank">Kratos@listas.cimne.upc.edu</a><br>
<a href="http://listas.cimne.upc.edu/cgi-bin/mailman/listinfo/kratos" rel="noreferrer" target="_blank">http://listas.cimne.upc.edu/cgi-bin/mailman/listinfo/kratos</a><br>
</blockquote></div>