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.
The following adds the latest release version to your Julia environment.
julia> ]
(@v1.xx) pkg> add ComodoIf you would like to see all the Comodo files and examples (and perhaps also develop/change some of the functionality and examples), you can use the following to get the latest version of Comodo:
- Create a folder, e.g. named
dev_Comodo(a folder to view and develop Comodo in) - Open a terminal and navigate to this new folder.
- Trigger Julia here by calling
julia - From Julia now enter the following to activate
julia> ]
(@v1.xx) pkg> activate .This will create and activate a new environment called dev_Comodo.
- Now Comodo can be added "for development" to this environment using:
julia> ]
(@dev_Comodo) pkg> dev --local Comodo- Other packages can now be added to this environment as desired, e.g. FEBio.jl.
- Next if one is working in an editor like VS Code or Codium, one can open the
dev_Comodofolder there to start using this environment.
To get started install the package, study the documentation, and test some of the demos provided in the examples folder. If you did a simple add based installation you may not see the example files easily on your sytem. However you can download the examples from here as well. If you used the dev --local way of "installing" Comodo then the examples are available in the environment you defined.
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 ComodoThe 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 -> Imago.jl
- TetGen functionality
- Abaqus INP file creation -> AbaqusTools.jl
- Implement GMSH functionality and file import/export
- Topology optimisation -> Jutopia.jl
- Finite Element Analysis
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. Comodo.jl only accepts human generated contributions, as such content created using LLM's or other generative "AI" tools is not acceptable.
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
cdthere 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 VSCode/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 thesrcfolder. Please aim to match the style, degree of commenting, and documentation. - Please add testing for added functions in
runtests.jl, found in thetestfolder. - Ensure documentation for the added functions is listed in the documentation e.g. in
functions.md, found in thedocs/srcfolder. - 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. This license covers all source code shared here, including the examples provided.



