Ferrite-FEM / Ferrite-FEM/Ferrite.jl

Clearing things in the `FEValues` section of the documentation

Open
#1,078 5 comments 0 reactions 0 assignees View on GitHub
docs
Dominant language
Julia
Stars
453
Forks
115
Avg merge
1d 17h
Merged PRs (30d)
11

Description

Hi there,

I am reading through some of the documentation and the section `FEValues` was not so straightforward to read for somebody coming from a background where tensors are not common. I think most of my issues might be related to that, but I think it does not hurt to make the text more clear as others might have the same issues.

For context I am mostly used to the vector forms (which should be equivalent with your definitions)

$$
\mathbf{x}(\mathbf{\xi}) = \mathbf{X}\mathbf{N}^g(\mathbf{\xi})
$$

$$
\mathbf{J}(\xi) = \nabla^\top \left(\mathbf{X}\mathbf{N}^g(\xi)\right) = \mathbf{X}\left(\nabla^\top\mathbf{N}(\xi)\right)
$$

I guess the introduction of the Hessian (or in general higher order things) is why tensors become useful.

My main issues were

1. The operators $\otimes$ and $\cdot$ are not properly introduced. I am still not sure if they're the standard Kronecker and dot products or not. From context I think that they're not - But somehow they're still very similar. Having a small definition or a link to somewhere were one could read more would be **very** useful.
2. Multivariate calculus can be confusing and its not made easier by different conventions (https://en.wikipedia.org/wiki/Matrix_calculus#Layout_conventions). Maybe give some indication of which conventions is used and stick to it. For what it is worth I do actually think that you are being consistent, but it could be a source of confusion. (For me this was mostly an issue when I thought $\otimes$ and $\cdot$ were the standard Kronecker and dot products since things only sort of made sense if you had used inconsistent derivative notation.)

In addition there are some non obvious things in the otherwise pretty useful walkthrough example:

1. The geometric shape functions were introduced as $N^g(\xi)$ but in the code they are called $M(\xi)$.
2. `cv` in the `Ferrite.reinit!` function is actually called `simple_cv` later while `cv` is something else.

Cheers,
Mikkel

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.