Robert
See [1] to illustrate the initial instability. I've fixed the displacement and the loading time (the time steps are really just providing the loop). The output shows displacement, force. If you plot the force you see that the load appears to converge after a few steps but then becomes very variable gain.
I've also attached the new abaqus generated mesh.
[1] http://paste.pocoo.org/show/323259/
On Wed, Jan 19, 2011 at 8:04 AM, Robert Cimrman cimr...@ntc.zcu.cz wrote:
Oh, this output! Then you can try also putting
'output_format' : 'h5',
into the options. All results will then be saved into a single HDF5 file with many time steps.
hth, r.
On Wed, 19 Jan 2011, Andre Smit wrote:
Thanks Robert - the code works great. Regarding the output - I was really
concerned about the large number of vtk files being generated when running thru simple.py with the extra iterations applied to stabilize the force. Now as a standalone I can suppress this and the script runs faster too! I like the idea of gradually reducing modulus for stabilization.
On Wed, Jan 19, 2011 at 3:09 AM, Robert Cimrman cimr...@ntc.zcu.cz wrote: One more thing: there was a bug in the Output() class constructor arguments, so you need the latest sources for the code below.
r.
On Wed, 19 Jan 2011, Robert Cimrman wrote:
The zero forces are because you have changed the traction() function to the form used by material-defining functions. It should look (like in your previous versions) as: def traction(ts, coors, bc=None): disp = -(ts.dt*(ts.step+1)) val = nm.empty_like(coors[:,0]) val.fill(disp) return val i.e. as a bc-defining function. As for too much output printed, yes, we should address the issue 16 one day in a systematic way. I do not know yet, how to control the output flexibly enough yet unobtrusively. Right now you can do several things: - you can use the fact, that all messages that SfePy outputs are printed using the output() function - it's not just a function but an instance of the Output class (see sfepy/base/base.py), and as such can be controlled: So after adding: from sfepy.base.base import output output.set_output(filename='output_log.txt') to the beginning of your main() function, all the output is redirected into the specified file. At the same time, messages you print using 'print' are still printed. - Note that you could use an Output instance to log your messages too: from sfepy.base.base import Output my_output = Output('strainer:', filename='my_log.txt', combined=True) my_output('hello!') I have modified your script in this way, see [2]. - the above method can be used together with using simple.py - you get the standard, and your custom outputs well-split. Just put: from sfepy.base.base import output, Output my_output = Output('strainer:', filename='my_log.txt', combined=True) output.set_output(filename='output_log.txt') at the top of the file, and run it with simple.py The example at [2] already has this - it can be run as both standalone and via simple.py... - the deprecation warnings coming from numpy/scipy can be suppressed by: import warnings warnings.filterwarnings("ignore") (also done at [2]) - the Log class in sfepy.base.log can be used to plot and log data, see examples/standalone/live_plot/live_plot.py As I think of it now, it seems that the issue 16 can be tackled by documenting the above features :) Does it help? r. PS: I used the old cylgeo.vtk mesh, as I do not have the new one, so you have to fix the paths and region definitions in the paste [2]. [2] http://paste.pocoo.org/show/323128/ On Wed, 19 Jan 2011, Andre Smit wrote: Robert Using simple.py is generating too much output. To have better control over this I decided to convert to a standalone app as shown at [1] using one of the sfepy examples as reference. Something is not working as the forces at each time step are zero. Can you please have a look. Thanks [1] http://paste.pocoo.org/show/323091/ On Tue, Jan 18, 2011 at 3:42 PM, Andre Smit <freev...@gmail.com> wrote: Robert - I had a good meeting with Yannis this afternoon. He is concerned that the strain condition in the specimen after each time step as currently coded is not stable and suggested that a few iterations be run at each displacement interval to ensure that the element moduli converge before moving onto the next time step or displacement interval. To test his idea I ran a few iterations at a constant displacement and found that the forces do fluctuate quite a bit but appear to converge (somewhat) after about 10 iterations. I presume the moduli of the elements would also stabilize. On Tue, Jan 18, 2011 at 10:48 AM, Robert Cimrman <cimr...@ntc.zcu.cz> wrote: On Tue, 18 Jan 2011, Andre Smit wrote: Robert I've revised the code loops as shown in [1]. Seems to work. Yes, I still find myself thinking in FORTRAN :( You will get used to it :) The code works for me (and is much shorter and readable now). As a matter of fact, the functions in sfepy.mechanics.matcoefs could be easily vectorized as well, and subsequently your glame() - it's another EasyToFix issue topic (new issue 150). I'm looking at the hyperelastic option now. I've also asked Yannis Tassoulas to consider joining as a co-author. He may have some ideas regarding plasticity options. OK. Plasticity would come handy - I still have not got to implementing it (first, I would have to study it :]). r. [1] http://paste.pocoo.org/show/322755/ On Tue, Jan 18, 2011 at 8:14 AM, Andre Smit <freev...@gmail.com> wrote: Thanks Robert! I'm working on the revisions and updates and will get back. The abstract is due at the end of January but I hope to get the bulk of the paper done by then as well, which is due in Feb sometime i.e. if abstract is accepted. On Mon, Jan 17, 2011 at 7:13 AM, Robert Cimrman <cimr...@ntc.zcu.cz> wrote: At [1] I have posted the code with "correct" avgqp() function. Yours was ok, as long as all the quadrature point weights were the same. The new implementation defines an auxiliary material with the quadrature point data, and calls the de_volume_average_mat term. Note that the order of the quadrature has to be the same as the one used for evaluating the strain. Then it seems to me, that you could avoid all those loops in functions Ft(), Fc(), Ec(), by using numpy vectorized operations, i.e. numpy.exp() instead of math.exp(). Also the failure loops (around line 193) could be IMHO vectorized using numpy.where() and fancy indexing. Try it as a NumPy excercise :) - you get big speed gain by this, and also the code would be shorter and more readable. I can give you a hand if you get stuck, of course. cheers, r. [1] http://paste.pocoo.org/show/322183/ On Mon, 17 Jan 2011, Robert Cimrman wrote: Hi Andre, (sorry for the delayed response - I'm accommodating in Fribourg again, and have not yet wifi at home...) On Fri, 14 Jan 2011, Andre Smit wrote: Robert I think I have something to share. How would you feel about co-authoring a paper to this conference - mainly to further expose SfePy but also to check that I'm not applying it incorrectly? That would be great, thanks for proposing it! Using the strain rate dependency example you provided I recoded an example looking at the failure of a cylindrical specimen under compression. The cylinder is made up of elements that I treat individually or discretely, checking the strain rates in each and using a relationship established in the lab, I calculate the compressive strengths in the elements based on these strain rates. If the stress in an element exceeds its strength then the element fails and I assign a low stiffness to that element. The code I'm using is available here: http://paste.pocoo.org/show/320646/ I will look at the code and try it ASAP. What is the deadline, anyway? A few notes straight from my head follow. What happens with the linear elastic assumption when you reduce stiffness in some elements? The code has some hyperelastic terms, in case they would be needed. Would you mind looking and commenting on this code. I'm a bit skeptical about the avgqp function which averages the strains at the quad points. Note that I use a normal distribution to vary the moduli of the elements initially. To get averaged element values of something defined in quadrature points, one can use either directly de_volume_average_mat term (a fake material definition would then be needed, I can show you), or use directly similar code to the one in the body of that term. I've attached the mesh: cylgeo.vtk. What I aim to do with the paper is demonstrate the influence of specimen geometry on strength. For simple compression and tension tests (on cylinders) this is trivial but with indirect tensile tests, for example, there is both compression and tension failure, and I hope to show using FEM that the strengths of materials determined using these tests are significantly influenced by the geometry of the specimen. Interesting! The force-displacement curves currently generated by the code look promising. I'm not sure the analysis can be refined by using smaller elements? The mesh is not very fine, yes. Another way to refine the analysis might be to use another material relation (hyperelastic?). r. On Fri, Jan 14, 2011 at 3:19 AM, Robert Cimrman <cimr...@ntc.zcu.cz> wrote: I see :) Good luck then! r. On Thu, 13 Jan 2011, Andre Smit wrote: No plans currently - still working on an analysis. Maybe if I can get it done before the end of the month :) On Thu, Jan 13, 2011 at 2:43 AM, Robert Cimrman <cimr...@ntc.zcu.cz> wrote: Hi Andre, are you planning to go there? r. On Mon, 10 Jan 2011, Andre Smit wrote: FYI: http://congress.cimne.com/CFRAC2011/frontal/default.asp -- Andre -- You received this message because you are subscribed to the Google Groups "sfepy-devel" group. To post to this group, send email to sfepy...@googlegroups.com. To unsubscribe from this group, send email to sfepy-devel...@googlegroups.com<sfepy-devel%...@googlegroups.com>
. For more options, visit this group at
http://groups.google.com/group/sfepy-devel?hl=en. -- Andre -- You received this message because you are subscribed to the Google Groups "sfepy-devel" group. To post to this group, send email to sfepy...@googlegroups.com. To unsubscribe from this group, send email to sfepy-devel...@googlegroups.com<sfepy-devel%...@googlegroups.com>
. For more options, visit this group at
http://groups.google.com/group/sfepy-devel?hl=en. -- You received this message because you are subscribed to the Google Groups "sfepy-devel" group. To post to this group, send email to sfepy...@googlegroups.com. To unsubscribe from this group, send email to sfepy-devel...@googlegroups.com<sfepy-devel%...@googlegroups.com>
. For more options, visit this group at
http://groups.google.com/group/sfepy-devel?hl=en. -- You received this message because you are subscribed to the Google Groups "sfepy-devel" group. To post to this group, send email to sfepy...@googlegroups.com. To unsubscribe from this group, send email to sfepy-devel...@googlegroups.com<sfepy-devel%...@googlegroups.com>
. For more options, visit this group at
http://groups.google.com/group/sfepy-devel?hl=en. -- Andre -- Andre -- You received this message because you are subscribed to the Google Groups "sfepy-devel" group. To post to this group, send email to sfepy...@googlegroups.com. To unsubscribe from this group, send email to sfepy-devel...@googlegroups.com<sfepy-devel%...@googlegroups.com>
. For more options, visit this group at
http://groups.google.com/group/sfepy-devel?hl=en. -- You received this message because you are subscribed to the Google Groups "sfepy-devel" group. To post to this group, send email to sfepy...@googlegroups.com. To unsubscribe from this group, send email to sfepy-devel...@googlegroups.com<sfepy-devel%...@googlegroups.com>
. For more options, visit this group at http://groups.google.com/group/sfepy-devel?hl=en.
-- Andre -- Andre -- You received this message because you are subscribed to the Google Groups "sfepy-devel" group. To post to this group, send email to sfepy...@googlegroups.com. To unsubscribe from this group, send email to sfepy-devel...@googlegroups.com<sfepy-devel%...@googlegroups.com>
. For more options, visit this group at http://groups.google.com/group/sfepy-devel?hl=en.
-- You received this message because you are subscribed to the Google Groups "sfepy-devel" group. To post to this group, send email to sfepy...@googlegroups.com. To unsubscribe from this group, send email to sfepy-devel...@googlegroups.com<sfepy-devel%...@googlegroups.com>
. For more options, visit this group at http://groups.google.com/group/sfepy-devel?hl=en.
-- You received this message because you are subscribed to the Google Groups "sfepy-devel" group. To post to this group, send email to sfepy...@googlegroups.com. To unsubscribe from this group, send email to sfepy-devel...@googlegroups.comsfepy-devel%...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/sfepy-devel?hl=en.
-- Andre
-- You received this message because you are subscribed to the Google Groups "sfepy-devel" group. To post to this group, send email to sfepy...@googlegroups.com. To unsubscribe from this group, send email to sfepy-devel...@googlegroups.comsfepy-devel%...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/sfepy-devel?hl=en.
-- You received this message because you are subscribed to the Google Groups "sfepy-devel" group. To post to this group, send email to sfepy...@googlegroups.com. To unsubscribe from this group, send email to sfepy-devel...@googlegroups.comsfepy-devel%...@googlegroups.com . For more options, visit this group at http://groups.google.com/group/sfepy-devel?hl=en.
-- Andre