Very interesting that different elements give different results, even if you use hundreds of them. Would be interesting what the reason for this is. Mhh neiter nature nor materials does not know femelements. Which one is best ?! It is may be like a path. If the optimizer is on a specific path it just goes this way. There must be academic papers about this.
Mhh and tria3 give a better result than tria6 and quad4 (IMHO) really strange …
About differences – there might be more reasons: One can be newly created boundary which is dependant on specific mesh. If new boundary is smoother it gives more efficiently used elements whereas if it is bumpy it “handicap” elements. Another, harder to explain simply, is manner of using stress distribution and its filtering. Stress is taken as average from integration points (more for 2nd order elements) and taken as if it acts in the centre of gravity, which decreases advantage of 2nd order elements. Results of filtering in each iteration are given by filter range. Here I used range as 2 times element size, but there might be some more convenient values for different element types.
This is simple a results of numerical optimisation applied to a discrete system.
In discrete system it is not uncommon to have more than one local optimum.
Depending on the algorithm and starting point a different optimum will be obtained.
Various techniques exist to find the global optimum but it will install finding numerous local optima and determining which local optima is the best. http://www.springer.com/gp/book/9780387243481
Very interesting topic!
I was lucky to recently attend the am3d-conference
There were a few interesting presentations on topological optimizations. I found one in particular interesting. In addition to the pareto method trying to find the global optima from a series of local optima. The result of the software is a smooth surface, I wonder if they fit a nurbs surface somehow to the hexahedron elements after the optimization?
It works. I didn’t try nonlinear analysis, but I expect that there will be difficulties with face loads in optimization domain due to extreme deformation of “void” elements (they have still loaded nodes, but very small modulus). @sgrogam: Thank you for the links.
As regards nurbs surface, I guess it depends on sw. Perhaps DMST1990 in his scripts under Blender uses some kind of this functions. In Nastran it is after optimization possible to run function which smooth elements on the new boundary by changing position of nodes.
In most cases like “Solid Thinking” (Altiar) they use a geometric approach.
In my case i use Blender for smothing the surfaces with computational geometry methods (Thats the case why i use blender for the post processing). You get a geometric structure with a lot of polygon surfaces. Automatic Polygon → NURBS works in most cases by redesigning the optimization result. You can also use “Geomagic”(Not free). In this application you can transfer polygons into nurbs by 1 click.
You can also use mesh morphing for smoothing the results directly, but in this case you have a lot of boundarys according to numerical problems.
So i think in the end they use some geometric approach with polygons (new descrete mesh which is smothed by some method).
I think it’s worth double checking. wikipedia says Z88 it uses a version of GPL, They use word “freeware”, but I’m quite sure it used to be something different (I’m allergic to that word). Ubuntu repository says “Open source”. That note “If your company is interested in a free commercial use of Z88Aurora, please send us an email including your contact details.” doesn’t look likee GPL. Can someone with good German check the license?
I think this google translate of the basic part of it is quite exact to the German original…
The use of the Z88Aurora® software is permitted only for scientific purposes. The license allows the licensee to run the programs for scientific purposes. Legal restrictions are not affected by this.
The usage rights for the software are limited to the respective semester of the download. The usage rights are extended by one semester each, unless a different communication is made 2 weeks before the end of the semester on the website z88.de or a new version of the software is made available. If necessary, the notification is sent to the e-mail addresses registered for the newsletter.
A semester represents the time frame from 1 April to 30 September or from 1 October to 31 March of the respective year.
I asked them: “How can i install z88Arion on GNU/Linux”.
Answer: “It is to much effort to compile it on GNU/Linux.”
So i think they use some Windows implemented libarys.
It seams only z88os is opensource. This is the FEM solver which is used in Z88Aurora. It seams Z88Aurora (has a very nice gut (they says it. I actually never tested Aurora)) and Z88Arion (the optimizer) are Freeware but not OpenSource. Furthermore the usage is restricted to scientific purposes, whatever that for a layer means …
Furthermore the usage is restricted to scientific purposes, whatever that for a layer means …
Actually you can use it for commercial purposes but you have to sign a paper that you won’t take the developers to court if something goes wrong.
That’s how I unterstood it.
Hi FandaL, very good job. I’m testing it for 3dprinting and I have just a question, how can i convert the frd mesh into a handable mesh (stl??) and then go back to a solid with freecad??
Use FreeCAD to open the frd. A FEM mesh and a result object will be created. Select the FEM mesh → Menue FEM → Utilities → FEM mesh to mesh. You will have a FreeCAD mesh than. This one could you export to stl or directly convert to a solid with Menue Arch → Utilities → mesh to shape
Thank you so much, i was using the 0.16 version and so i wasn’t aware of such option. now tith 0.17 works like a charm. Now i’m trying to convert it back in a solid part to remesh it again and then optimizing again.
Hi Pisolino85,
It’s already some time I tried to make the solid in FreeCAD from optimization results. I wanted to smooth the mesh and check stresses, because they are not much representative on the bumpy boundaries. Maybe you are just doing something little different.
I transformed FEM results to the mesh, applied smoothing in the Mesh module and then changed it to solid to be able to mesh it again and run analysis to check stresses. After some trials with smoothing in Mesh module I ended with default settings for Laplacian filter and selecting only faces I wanted to smooth, i.e. without smoothing faces for boundary conditions. There were 2 problems. One is that this smoothing makes slim parts even slimmer, which would increase stresses in the structure. When I got finally valid solid it was hard to work with it due to lot of small faces (the tool Refine shape in the Part module helps in case of flat faces but not on bumpy or partially smoothed surfaces). Using some other software to work with meshes like Meshlab could help to remesh it better, but I didn’t try it.
More elegant way would be to reconstruct shape with some cool tools for reverse engineering, bsplines, nurbs, and staff like this, but I have not yet made time for doing this in FreeCAD.
I want to creat and display a 3D shell in matlab.(for example a barrel with 100 element) and I have a thickness vector(100*1) that containes the thicknesses of 100 shell elements.so I have an array that containes coordinates of shell nodes and element and a vector that containes thickness of shell element.
Now how can I display this 3D shell that each element , depend on value of its thickness was different in colour(gray)?.
Or how can I joint coordinate array and thickness vector or map the thickness vector on the shape of 3D shell and display a gray 3D shell? thank you
more explain
this question is about topology optimization. in final I must be have a figure like in attachment.i have a vector with size 100*1 for example [1 0 0 1 0 ….]. the name of this vector is thickness vector. ‘1’ means solid and ‘0’ means void in thickness vector. and I have an array (XYZ) for ploting 3D shell shap . I meshed this 3D shell to 100 rectangle elements. so corresponding each element in 3D shelh I have one number( 0 or 1) in thickness vector. now how can I display thickness of each element on output 3D shell plot with colour(e.g in final plot we can see each element that is solid be black and each element that is void be white ) .or how can I link or map thickness vector on the shell plot? address of picture: http://s9.picofile.com/file/8310446684/Capture.JPG thank you
if you have matlab code about shell topology optimization please give me.
Hi sam1361,
So you want to do the visualization of colored 3d-shell elements in Freecad? The optimization is still done in matlab?
If both is answered with “yes”, you maybe have a look at nurbs -editor… See https://forum.freecadweb.org/viewtopic.php?f=3&t=16473&start=20#p131778.
BR
Howil