Onboarding FEM Devs: Difference between revisions

From FreeCAD Documentation
No edit summary
No edit summary
Line 86: Line 86:
* [[Wrapping_a_Cplusplus_class_in_Python|Wrapping a Cplusplus class in Python]]
* [[Wrapping_a_Cplusplus_class_in_Python|Wrapping a Cplusplus class in Python]]
* [[Add_FEM_equation_tutorial|Add FEM equation tutorial]]
* [[Add_FEM_equation_tutorial|Add FEM equation tutorial]]
* [[Add_button_to_FEM_toolbar_tutorial|Add button to FEM toolbar tutorial]]
* [[Add_A_Button_In_FEM_Toolbar_Tutorial|Add button to FEM toolbar tutorial]]


== Related ==
== Related ==

Revision as of 10:30, 26 September 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:

Writing Unit Tests

TBD

Informative

Related