Ok, I will start with Gmesh.
Thanks!
Moderator: bernd
Ok, I will start with Gmesh.
You are right. I didn't word that exactly correctly. What I meant to say is that in the free software world, especially with a license like GPL, linking against a particular library is somehow considered "including" that library in your code. So, currently Netgen isn't linked against FreeCAD, but of course, it can be used externally, just like Gmsh is.bernd wrote: ↑Sun Apr 07, 2019 8:27 pm Just to make clear. Netgen was never included in FreeCAD source. FreeCAD needs to be compiled and linked against Netgen to make Netgen mesher inside FreeCAD working. May be, may be not, the provided FreeCAD binaries for various operating systems include netgen mesher or not!
As stated, to get started just use gmsh.
I have created the basic versions of solver.py, writer.py and tasks.py.
Code: Select all
...
# get member, empty lists are not supported by oofem
self.materials_linear = []
self.materials_nonlinear = []
...
yep the analysis member are collected and tbey will be parameter for the writer class. Empty lists is empty thus an ampty list will be given to the writer and thus the writer can not write this constraint and thus this constraint is not supported by the writer. Since your input file is a string in writer ATM you can pass a bunch of empty lists to the writer. If your solver runs you can step by step give live to the empty lists and implement the writer for this. Just see the oofem commits.Sudhanshu wrote: ↑Tue Apr 16, 2019 11:31 am I have some doubts in the tasks.py.
What does the Container class do? Does it store the various parameters like constraints and material properties?Code: Select all
... # get member, empty lists are not supported by oofem self.materials_linear = [] self.materials_nonlinear = [] ...
What is the meaning of "member" and "empty lists" here?
So I was editing the settings.py and came around the following code which I didn't fully understood:
Code: Select all
"oofem": _SolverDlg(
default="oofem",
param_path=_PARAM_PATH + "oofem",
use_default="UseStandardOofemLocation",
custom_path="OofemBinaryPath"),
Code: Select all
...
self.assertEqual('Fem::FemSolverObjectOofem', type_of_obj(ObjectsFem.makeSolverOofem(doc)))
...
self.assertTrue(is_of_type(ObjectsFem.makeSolverOofem(doc), 'Fem::FemSolverObjectOofem'))
...
self.assertTrue(is_derived_from(ObjectsFem.makeSolverOofem(doc), 'App::DocumentObject'))
self.assertTrue(is_derived_from(ObjectsFem.makeSolverOofem(doc), 'Fem::FemSolverObject'))
self.assertTrue(is_derived_from(ObjectsFem.makeSolverOofem(doc), 'Fem::FemSolverObjectPython'))
self.assertTrue(is_derived_from(ObjectsFem.makeSolverOofem(doc), 'Fem::FemSolverObjectOofem'))
...
self.assertTrue(ObjectsFem.makeSolverOofem(doc).isDerivedFrom('Fem::FemSolverObjectPython'))
....
I have followed the first two commits.
In your sample file written inline at https://github.com/Sudhanshu-Dubey14/Fr ... /writer.py , the lines from 127 to 135 are not needed, as these are for GUI of FElt, named "Velvet", which will not be used in your case.
Refer file name "1DBeam.out.m0.1.vtu" mentioned at line number 124 of https://github.com/Sudhanshu-Dubey14/Fr ... t/tasks.py
When you do development in Python, you need not to compile FreeCAD.