Contributions are welcome. Feature requests are welcome, please email me at tlcfem(at)gmail(dot)com
. If needed,
additional help/collaboration can be provided.
Code in high quality can be merged into the main repository. By doing so, the authors consent to modifications ( refactoring for maintenance, etc.) by other developers in future without notice.
Please use the file Resharper.DotSettings
to format the code. It is the configuration that can be imported
into ReSharper C++.
The .clang-format
generated can also be used to override format settings in various IDEs.
- Please use
snake_case
instead ofCamelCase
for variables. - Please use
CamelCase
for class names. Abbreviations shall be in upper case, for exampleNURBSSurface
instead ofNurbsSurface
. - Please use meaningful variable names instead of abstract names such as
a
,tt
, etc. - Please avoid abbreviations, except for common ones such as
ptr
andtmp
. For variables related to the corresponding theories, they can be spelled out. It does not hurt to defineepsilon_vol
instead ofev
to represent volumetric strain variable. This is for the ease of readability and maintenance.
- Do not use variadic static variables.
- Do not use raw pointers, instead, please use smart pointers.
- For performance, do not use four (second) dimensional containers for fourth (second) order tensor if it is symmetric.
- Use armadillo classes
mat
andvec
in general cases. If not applicable, use STL containersstd::vector
. - Provide unit tests (Catch2) if applicable, otherwise provide an example model that tests the code and documentation.
- Please check similar implemented code before getting started.
- Apply early return.
- Branch-free code is preferred.