Skip to content

Commit

Permalink
added a new blog post for release of v0.4 (#232)
Browse files Browse the repository at this point in the history
Co-authored-by: Alexander Müller <[email protected]>
  • Loading branch information
tarun-mitruka and rath3t committed Jan 19, 2024
1 parent 8343c09 commit c297143
Show file tree
Hide file tree
Showing 13 changed files with 237 additions and 111 deletions.
10 changes: 0 additions & 10 deletions .github/workflows/docsDryRun.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,11 @@ name: Dry Run Documentation

on:
push:
paths-ignore:
- 'docs/**'
- '.github/workflows/ghpages.yml'
- '.github/workflows/createDockerContainer.yml'
- '**.md'

pull_request:
types: [opened]
branches:
- main
paths-ignore:
- 'docs/**'
- '.github/workflows/ghpages.yml'
- '.github/workflows/createDockerContainer.yml'
- '**.md'

jobs:
Build-Docs-Dry-Run:
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/ghpages.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ jobs:
pip install mkdocs-macros-plugin
pip install mkdocs-drawio-exporter
pip install mkdocs-glightbox
pip install mkdocs-material[imaging]
pip install mike
pip install mkdocs-bibtex
pip install pillow cairosvg
Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/style.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,12 @@ name: CodeStyle
on:
push:
paths-ignore:
- 'docs/**'
- '.github/workflows/ghpages.yml'
pull_request:
types: [opened]
branches:
- main
paths-ignore:
- 'docs/**'
- '.github/workflows/ghpages.yml'

env:
Expand Down
6 changes: 4 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
# Master (becomes Release v0.4)
# Master (becomes Release v0.5)

<!--
SPDX-FileCopyrightText: 2021-2024 The Ikarus Developers [email protected]
SPDX-License-Identifier: LGPL-3.0-or-later
-->

## Release v0.4 (Ganymede)

- Add CODE_OF_CONDUCT.md file
- Refactored Cmake and directory structure ([#146](https://github.com/ikarus-project/ikarus/pull/146))
- Added comment section to blog post ([511d83](https://github.com/ikarus-project/ikarus/commit/511d83f9e7c474c9b320db5bc9367114ebe2825d))
Expand All @@ -28,6 +30,7 @@ via `pip install pyikarus` ([#152](https://github.com/ikarus-project/ikarus/pull
- Added a wrapper to fix Dirichlet BCs for Lagrange Nodes ([#222](https://github.com/ikarus-project/ikarus/pull/222))
- Refactored `getDisplacementFunction` in finite elements ([#223](https://github.com/ikarus-project/ikarus/pull/223))
- Refactored load functions in finite elements ([#221](https://github.com/ikarus-project/ikarus/pull/221))
- Added doxygen class documentation ([#220](https://github.com/ikarus-project/ikarus/pull/220))

- Improve material library and Python bindings ([#186](https://github.com/ikarus-project/ikarus/pull/176)), default e.g.
`StVenantKirchhoff` is
Expand All @@ -36,7 +39,6 @@ via `pip install pyikarus` ([#152](https://github.com/ikarus-project/ikarus/pull
- `Ikarus::ILinearSolver` is no template anymore and renamed and uses double, use
`Ikarus::LinearSolverT<...>` instead ([#186](https://github.com/ikarus-project/ikarus/pull/176)),
if you need a fancy scalar type
- Added doxygen class documentation

## Release v0.3 (Prometheus)

Expand Down
4 changes: 3 additions & 1 deletion docs/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,13 @@ add_custom_target(

add_dependencies(site doxygen_ikarus)

file(GLOB_RECURSE markdownFiles CONFIGURE_DEPENDS *.md)

add_custom_target(
localSite
COMMAND ${MKDOCS_EXECUTABLE} serve
WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}"
DEPENDS mkdocs-macros.py mkdocs.yml
DEPENDS mkdocs-macros.py mkdocs.yml ${markdownFiles}
)

add_dependencies(localSite doxygen_ikarus)
Expand Down
7 changes: 5 additions & 2 deletions docs/markdownlint-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ default: true
#see for rules https://github.com/DavidAnson/markdownlint/blob/main/schema/.markdownlint.yaml
# MD013/line-length - Line length
MD013:
line_length: 140
line_length: 250
heading_line_length: 140
code_block_line_length: 250
code_blocks: true
Expand All @@ -16,7 +16,7 @@ MD013:
# MD033/no-inline-html - Inline HTML
MD033:
# Allowed elements
allowed_elements: [figure,a,br,img,p,figcaption]
allowed_elements: [figure,a,br,img,p,figcaption,div]

# MD051/link-fragments - Link fragments should be valid
MD051: false
Expand All @@ -26,3 +26,6 @@ MD052: false
# MD046/code-block-style - Code block style
# Material theme tabbed content feature use indented and simple use fenced; can't support both
MD046: false

MD007:
indent: 4
1 change: 1 addition & 0 deletions docs/mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ nav:
- Blog:
- 04_blog/index.md
# - 04_blog/posts/v0.3.md #remove comments here for local draft
# - 04_blog/posts/v0.4.md #remove comments here for local draft
- Class Reference: doxygen/html/index.html

# Customization
Expand Down
33 changes: 15 additions & 18 deletions docs/website/04_blog/posts/v0.3.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ in the following text.

<figure class="inline end" markdown>
![Prometheus brings fire to humanity](https://upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Heinrich_fueger_1817_prometheus_brings_fire_to_mankind.jpg/421px-Heinrich_fueger_1817_prometheus_brings_fire_to_mankind.jpg?20210918140744)
{width="600" loading=lazy}
<figcaption style="font-size: 12px"><a href="https://commons.wikimedia.org/wiki/File:Heinrich_fueger_1817_prometheus_brings_fire_to_mankind.jpg">Prometheus
brings fire to humanity</a> by <a href="https://en.wikipedia.org/wiki/Heinrich_F%C3%BCger">Heinrich Füger</a></figcaption>
</figure>
Expand Down Expand Up @@ -95,27 +94,25 @@ quickly resolve issues.
The following are some key milestones that have been completed or are planned to be released as stepping stones to version 1.0.

- [ ] Workflows

- [x] License and example checks ([#107](https://github.com/ikarus-project/ikarus/pull/107) and [#114](https://github.com/ikarus-project/ikarus/pull/114))
- [x] License and example checks ([#107](https://github.com/ikarus-project/ikarus/pull/107) and [#114](https://github.com/ikarus-project/ikarus/pull/114))
- [x] Create Docker images
- [x] Create a workflow to create a "release" and add a version to [DaRUS](https://darus.uni-stuttgart.de/dataset.xhtml?persistentId=doi%3A10.18419%2Fdarus-3303&version=DRAFT)
- [ ] Deploy Python bindings to [PyPi](https://pypi.org/) and create Python bindings

- [ ] Finite element technology

- [x] Linear elastic finite elements with EAS ([#74](https://github.com/ikarus-project/ikarus/pull/74 "To pull request"))
- [x] Path-following techniques ([#80](https://github.com/ikarus-project/ikarus/pull/80 "To pull request"))
- [ ] Efficient implementation of non-linear elasticity
- [ ] Standard plate and beam elements
- [ ] Handling inhomogeneous Dirichlet boundary conditions in all existing solving methods
- [ ] Include a mechanical-material library
- [ ] Linear dynamics
- [ ] More supporting examples
- [x] Linear elastic finite elements with EAS ([#74](https://github.com/ikarus-project/ikarus/pull/74 "To pull request"))
- [x] Path-following techniques ([#80](https://github.com/ikarus-project/ikarus/pull/80 "To pull request"))
- [ ] Efficient implementation of non-linear elasticity
- [ ] Standard plate and beam elements
- [ ] Handling inhomogeneous Dirichlet boundary conditions in all existing solving methods
- [ ] Include a mechanical-material library
- [ ] Linear dynamics
- [ ] More supporting examples

- [ ] Documentation
- [x] Improving existing documentation and describing examples of Ikarus
([#106](https://github.com/ikarus-project/ikarus/pull/106 "To pull request")
and [#125](https://github.com/ikarus-project/ikarus/pull/125 "To pull request"))
- [ ] Detailed explanations of examples in Ikarus
- [ ] Implementation of linear and non-linear elasticity
- [ ] Logo and gallery
- [x] Improving existing documentation and describing examples of Ikarus
([#106](https://github.com/ikarus-project/ikarus/pull/106 "To pull request")
and [#125](https://github.com/ikarus-project/ikarus/pull/125 "To pull request"))
- [ ] Detailed explanations of examples in Ikarus
- [ ] Implementation of linear and non-linear elasticity
- [ ] Logo and gallery
135 changes: 135 additions & 0 deletions docs/website/04_blog/posts/v0.4.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
---
draft: false
date: 2024-01-19
authors:
- am
- tm
categories:
- Release
- Python Bindings
- Structural mechanics
- Documentation
- Clang

comments: true
links:
- Pybind: https://pybind11.readthedocs.io/en/stable/index.html
- Clang 16: https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html
- PyPi: https://pypi.org
- Doxygen: https://www.doxygen.nl
---

# Release of v0.4 (Ganymede)

**On our journey to Ikarus v1.0, we've taken another significant step forward. Explore the latest release, v0.4 (Ganymede).
This release not only focuses on refactoring various interfaces but also introduces
exciting features such as Python bindings, result evaluators, the Kirchhoff-Love shell element,
added support for Clang 16, and more.**

<div class="grid cards" markdown>

- :fontawesome-brands-python: **Python** for accessibility, [PyPi](https://pypi.org/project/pyikarus/)
- :fontawesome-brands-docker: **Docker** for reproducibility and ease of use, [DockerHub](https://hub.docker.com/r/ikarusproject/ikarus-dev)
- :fontawesome-solid-book: **Documentation** Doxygen class documentation and examples [Class documentation](../../doxygen/html/index.html)
- :fontawesome-brands-gitter: **Gitter chat** For discussions and support, [Chat](https://gitter.im/ikarus-project/community)
- :fontawesome-solid-terminal: **Clang 16** Clang support for more C++ standard compliant code

</div>

<!-- more -->

## Python bindings

As mentioned in the [blog post](v0.3.md) of the v0.3 (Prometheus) release, Ikarus is a C++ library for finite element analysis.
In this version, we've introduced Python bindings, allowing users to work seamlessly within Python while still using Ikarus' powerful C++ backend.
These bindings are now available on [PyPi](https://pypi.org/project/pyikarus/), making it easy to install Ikarus with `pip install pyikarus`.
These Python bindings depend on other DUNE libraries because they are compiled just-in-time (JIT).
The easiest way to use the Python bindings is therefore within the provided Docker images [Docker image](https://hub.docker.com/r/ikarusproject/ikarus-dev)
we provide.
This addition aims to expand Ikarus's usage in academia for teaching purposes, providing a simpler interface for Python users.
Now, Ikarus can thus be integrated with popular libraries like [TensorFlow](https://www.tensorflow.org/) and [SciPy](https://scipy.org/) for data-driven simulations.

<figure class="inline end" markdown>
![The Rape of Ganymede](https://upload.wikimedia.org/wikipedia/commons/thumb/d/d4/Ganymede_receives_the_bowl_from_Hebe%2C_by_Peter_Paul_Rubens.jpg/1030px-Ganymede_receives_the_bowl_from_Hebe%2C_by_Peter_Paul_Rubens.jpg)
<figcaption style="font-size: 12px"><a href="https://commons.wikimedia.org/wiki/File:Ganymede_receives_the_bowl_from_Hebe,_by_Peter_Paul_Rubens.jpg">The Rape of Ganymede
</a> by <a href="https://en.wikipedia.org/wiki/Peter_Paul_Rubens">Peter Paul Rubens</a></figcaption>
![Ganymede](https://upload.wikimedia.org/wikipedia/commons/8/81/PIA24681-1041-Ganymede-JupiterMoon-Juno-20210607.jpg)
<figcaption style="font-size: 12px"><a href="https://en.wikipedia.org/wiki/Ganymede_(moon)">Ganymede</a> photographed by Juno in 2021. Moon of Jupiter and largest moon in the solar system.</figcaption>
</figure>

## Finite element technology

While linear-elastic finite elements and geometrically non-linear elements based on automatic differentiation were already present in Ikarus,
this release introduces a more explicit implementation of non-linear elements for increased efficiency.
Post-processing capabilities have been enhanced with wrappers for evaluating results like Von-Mises stress, principal stresses, and other
stress measures specific to different finite elements. Assemblers now allow the study of raw matrices and vectors before applying any boundary
conditions.
The release also integrates an interface for a material library, including material models like the St. Venant-Kirchhoff and a Neo-Hookean model.
One can directly use these in the finite element analysis, even for plane stress problems, by utilizing a vanishing stress wrapper ([Doxygen](../../doxygen/html/a01321.html)).
Improved control loggers enable static non-linear analysis, providing relevant information to users.
Additionally, a non-linear Kirchhoff-Love shell element is now available for studying thin-walled structures.

## Documentation

This release includes detailed documentation for all examples in `ikarus-examples` and adds [Doxygen](../../doxygen/html/index.html)
class documentation.
Each class and public function now have Doxygen comment blocks that provide comprehensive descriptions.

## Miscellaneous

In addition to the mentioned features, some miscellaneous additions have been made.
Changes in the directory structure and file naming now follow the convention of using only lowercase letters.

In addition, we've introduced Clang 16 support in this release, giving users the flexibility to choose their preferred compiler.
Ikarus continues to support GCC 12, ensuring compatibility with multiple compilers.

## Conferences

During 2023, Ikarus gained popularity and was presented at two conferences:
the [11th International Conference on Isogeometric Analysis](https://iga2023.sciencesconf.org/) and the [Dune User Meeting 2023](https://dune-project.org/community/meetings/2023-09-usermeeting/).
A snapshot from the IGA conference is shared, where Ikarus was presented alongside the `dune-iga` module.

<figure class="inline end" markdown>
![iga2023.png](../../auxiliaryImages/blogs/iga2023.jpg){width = "400"}
<figcaption>Ikarus presented at the <a href="https://iga2023.sciencesconf.org/">11th International Conference on Isogeometric Analysis</a> (Alex (left) and Tarun(right))</figcaption>
</figure>>

## What next?

The following are some key milestones that have been completed or are planned to be released as stepping stones to version 1.0.

- [x] Workflows
- [x] License and example checks ([#107](https://github.com/ikarus-project/ikarus/pull/107) and [#114](https://github.com/ikarus-project/ikarus/pull/114))
- [x] Create Docker images
- [x] Create a workflow to create a "release" and add a version to [DaRUS](https://darus.uni-stuttgart.de/dataset.xhtml?persistentId=doi%3A10.18419%2Fdarus-3303&version=DRAFT)
- [x] Deploy Python bindings to [PyPi](https://pypi.org/) and create Python bindings
- [x] Clang 16 support ([#186](https://github.com/ikarus-project/ikarus/pull/176 "To pull request"))

- [ ] Finite element technology
- [x] Linear elastic finite elements with EAS ([#74](https://github.com/ikarus-project/ikarus/pull/74 "To pull request"))
- [x] Path-following techniques ([#80](https://github.com/ikarus-project/ikarus/pull/80 "To pull request"))
- [x] Efficient implementation of non-linear elasticity ([#160](https://github.com/ikarus-project/ikarus/pull/160 "To pull request"))
- [x] Wrapper to evaluate results ([#165](https://github.com/ikarus-project/ikarus/pull/165 "To pull request"))
- [x] Interface for a mechanical-material library ([#154](https://github.com/ikarus-project/ikarus/pull/154 "To pull request"))
- [x] Kirchhoff-Love shell elements ([#177](https://github.com/ikarus-project/ikarus/pull/177 "To pull request")
and [#225](https://github.com/ikarus-project/ikarus/pull/225 "To pull request"))
- [x] Default adaptive step sizing and improved control loggers ([#193](https://github.com/ikarus-project/ikarus/pull/193 "To pull request"))
- [ ] Standard plate and beam elements
- [ ] Handling inhomogeneous Dirichlet boundary conditions in all existing solving methods
- [ ] Enhance the mechanical-material library
- [ ] Linear dynamics
- [ ] Local Assemblers
- [ ] Handling of reduced matrices and vectors
- [ ] Advanced adaptive step sizing features
- [ ] Push-forward and pull-back operations for stress measures
- [ ] Advanced locking-free non-linear finite elements

- [ ] Documentation
- [x] Improving existing documentation and describing examples of Ikarus
([#106](https://github.com/ikarus-project/ikarus/pull/106 "To pull request")
and [#125](https://github.com/ikarus-project/ikarus/pull/125 "To pull request"))
- [x] Detailed explanations of examples in Ikarus ([#140](https://github.com/ikarus-project/ikarus/pull/140 "To pull request"))
- [x] Class documentation ([#220](https://github.com/ikarus-project/ikarus/pull/220 "To pull request"))
- [ ] More Documentation for Python bindings
- [ ] Document list of dependencies
- [ ] Gallery
Binary file added docs/website/auxiliaryImages/blogs/iga2023.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions docs/website/doxygen/Doxylocal
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ EXCLUDE += @top_srcdir@/tests \
# the \image command).

IMAGE_PATH += @top_srcdir@/docs/website/auxiliaryImages
CREATE_SUBDIRS = YES
CREATE_SUBDIRS = NO

#for https://jothepro.github.io/doxygen-awesome-css/index.html#autotoc_md9
GENERATE_TREEVIEW = YES
Expand Down Expand Up @@ -115,4 +115,4 @@ UML_LOOK = NO
WARN_NO_PARAMDOC =YES
WARN_IF_INCOMPLETE_DOC=YES
WARN_IF_UNDOCUMENTED=YES
WARN_AS_ERROR=NO
WARN_AS_ERROR=FAIL_ON_WARNINGS
7 changes: 3 additions & 4 deletions ikarus/finiteelements/mechanics/materials/tags.hh
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
/**
* @file tags.hh
* @brief Definition of several material related enums
* @ingroup materials
*/

#pragma once
Expand All @@ -14,21 +13,21 @@
namespace Ikarus {
/**
*
* \ingroup Materialtags materials
* \ingroup Materialtags
* \brief A strongly typed enum class representing the type of the passed strain
*/
MAKE_ENUM(StrainTags, linear, deformationGradient, displacementGradient, greenLagrangian, rightCauchyGreenTensor);

/**
*
* \ingroup Materialtags materials
* \ingroup Materialtags
* \brief A strongly typed enum class representing the type of the computed stresses
*/
MAKE_ENUM(StressTags, linear, PK2, PK1, Cauchy, Kirchhoff);

/**
*
* \ingroup Materialtags materials
* \ingroup Materialtags
* \brief A strongly typed enum class representing the type of the computed tangent moduli
*/
MAKE_ENUM(TangentModuliTags, Material, Spatial, TwoPoint);
Expand Down
Loading

0 comments on commit c297143

Please sign in to comment.