Comodo is a Julia package for computational (bio)mechanics and computational design, and offers functionality for geometry processing, meshing, finite element analysis, automated design, topology optimisation, and image-based modelling.
Loosely Comodo could stand for Computational Modelling for Design Optimization. A more philosophical angle would be to say that DO is like -do in the Japanese art Judo (ju=柔=gentle, do=道=way), so in this sense Comodo stands for "the way of computational modelling". Comodo is perhaps best defined by its scope. Comodo aims to be a "one-stop-shop" for researchers in computational (bio)mechanics and computational design. It will feature tools for geometry processing, meshing, automated design / topology optimization, finite element analysis, as well as (e.g. medical) image processing and segmentation.
Comodo.jl started out as a modern re-implementation in Julia of the MATLAB toolbox GIBBON. However, rather than literally porting each functional unit, it instead aims to follow a similar philosophy and cover similar but more advanced core functionality.
julia> ]
(@v1.xx) pkg> add Comodo
To get started install the package, study the documentation, and test some of the demos provided in the examples
folder.
For finite element analysis users are encouraged to combine the Comodo capabilities with the open source C++ software FEBio, e.g. based on the Julia wrapper FEBio.jl. In addition, users may want to explore the Julia packages Gridap.jl and Ferrite.jl.
You can test Comodo by running
pkg> test Comodo
The source for the tests is runtests.jl
, found in the test
folder
New functionality to add:
- Levelset methods
- Element (e.g. Hex8, Tet4) based lattice structure creation creating both element and surface geometry.
- Triply periodic minimal surface lattices
- Spinodoid surfaces lattices
- Surface stitching method
- Medical image segmentation -> nearly done. (possibly seperate library)
- TetGen functionality
- Abaqus INP file creation -> nearly done. (possibly seperate library)
- Implement GMSH functionality and file import/export
Your help would be greatly appreciated! If you can contribute please do so by posting a pull-request. We are very much open to fully acknowledging your contributions e.g. by listing you as a contributor properly wherever possible, by welcoming you on board as a long term contributor, or by inviting you to be a co-author on publications featuring Comodo functionality.
To start contributing follow these steps:
- Fork this repository
- Copy the git URL (e.g. the SSH link) to your forked repository, we'll refer to it here as
<your repo URL>
- Now we'll work to create an environment to work in. Create a folder on your machine e.g.
COMODO_dev
, the folder name will also be the environment name later. - Next start julia from this folder (on Ubuntu simple open folder in termal or
cd
there and runjulia
) and run the following to trigger the creation and activation of a Julia environment matching the folder name e.g.COMODO_dev
:
] activate .
- Now run the following to add Comodo as a package to develop:
] dev --local <your repo URL>
- Now open VSCodium or your equivalent IDE and open the environment folder. You are now ready to start developing.
- Functionality should be added in the form of functions in
functions.jl
, found in thesrc
folder. Please aim to match the style, degree of commenting, and documentation. - Please add testing for added functions in
runtests.jl
, found in thetest
folder. - Ensure documentation for the added functions is listed in the documentation e.g. in
functions.md
, found in thedocs/src
folder. - Once tests are passing and documentation has been added you can commit and push your changes and submit a pull request.
Comodo.jl is released open source under the Apache 2.0 license.