Onboarding FEM Devs: Difference between revisions
m (→Informative) |
m (→Informative: added Add_FEM_Equation_Tutorial) |
||
Line 85: | Line 85: | ||
* [[Wrapping a Cplusplus class in Python]] |
* [[Wrapping a Cplusplus class in Python]] |
||
* [[Add FEM Equation Tutorial]] |
|||
* [[Add A Button In FEM Toolbar Tutorial]] |
* [[Add A Button In FEM Toolbar Tutorial]] |
||
Revision as of 01:14, 5 August 2021
Description
This page will orient new developers on how to setup their development environments in order to hack on the FEM workbench.
Setting up a Dev Environment
TBD
Prerequisites
- Netgen
Recommended
- Paraview
Compiling via Source
TBD
Compiling via Docker
TBD
Source Code Management
Keeping FreeCAD up-to-date is documented in Source code management page. Along with useful git
tips.
FEM Code Infrastructure
The FEM code lives in src/Mod/Fem
App/
console-mode application, defines basic structures and base classes for document objects, that are used by modules to build their own.Gui/
GUI-mode application, defines the 3D view, tools/functions used by workbench to interact with UI and 3D view, defines base classes for view providers.femcommands/
fem.dox
femexamples/
femguiobjects/
femguiutils/
feminout/
femmesh/
femobjects/
femresult/
femsolver/
femtaskpanels/
femtest/
femtools/
femviewprovider/
InitGui.py
Init.py
ObjectsFem.py
TestFemApp.py
TestFemGui.py
Coding Conventions
Please see coding_conventions.md file on the FreeCAD repository.
Adding New FEM Solvers
A new FEM solver requires the following:
- Mesh exporter
- Results importer
- Solver object (needs changes in solver settings, unit tests, ObjectsFem modules as well)
- Task and writer module (here is where the main solver input writing happens)
- GUI tool to create a solver
- GUI preference tab to set the solver binary path
- A solver input writing unit test. Best to take the ccx cantilever. This is available for all mesh element types
- Having one or two beers
See also:
- Extend_FEM_Module page
- The implementation efforts of the oofem solver
- The implementation efforts of the myStran solver
Writing Unit Tests
TBD