Closed tarun-mitruka closed 6 months ago
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 92.59%. Comparing base (
f10add6
) to head (0764350
).
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
Thanks for the review Alex. This PR is marked as draft as per the discussion of having an implementation that extends the idea of functionalities like applyToTree
and forEachNode
available in dune-typetree. The idea is to have a function like forEachPowerNode
which could use these existing functions and still manage the indices in the desired FlatInterleaved
format. The aim is then to have a neater readable code which avoids a recursive call to a function.
Actually we discussed it with a function forEachPowerOrLeafNode
This is evolving nicely but there are still things to make easier. We can also look at it together. Furthermore, we also have to modify
src/iks003_incompressibleLinearElasticity.cpp
because this breaks now, doesnt it? Maybe we want to make the function there a free function for the educational aspect or remove it completly.It actually doesnt brake but the
globalFlatIndices
member function is stale now and unused. Maybe this also has to be refactored in the docs?
I fixed the existing documentation related to globalFlatIndices
in docs/website/01_framework/finiteElements.md
. The examples are currently not breaking as the checks are passing. We can discuss if we want to use this feature and modify the examples itself altogether, like also the cantilever beam example can be simplified using this PR, or leave some examples untouched for training/academic purposes.
The src/iks003_incompressibleLinearElasticity.cpp
has to be refactored for sure in some way, sicne now it shows a completely unused function. We can move the member function to a free function for training/academic purposes or remove the member function completely.
The
src/iks003_incompressibleLinearElasticity.cpp
has to be refactored for sure in some way, sicne now it shows a completely unused function. We can move the member function to a free function for training/academic purposes or remove the member function completely.
Ah okay. Now I got what you meant. Then I remove it from iks003
. This doesn't affect the documentation. For training/academic purposes, one can still refer to iks002
to understand the working of this functionality.
FEBase
class now handles the localView
correctly depending on non-type template bool useFlat=false/true
for both flat and untouched version of the basis. This notion is also passed on to the finite elements. Refactoring of the finite elements itself to handle any basis type will be done while handling #244 and adding more tests to handle BlockedInterleaved
indices for the local assemblers will be done in a separate PR, may be while handling #228.
This PR is focused to handle the issue #241 to add handling of composite basis. In this PR,
powerbasisfe.hh
andscalarfe.hh
are merged to a filefebases.hh
. This is done to avoid duplication of code while adding another class to handle a composite basis. Due to this refactoring, the filefebases.hh
now resides outside -ikarus/finiteelements/febases.hh
and the folderikarus/finiteelements/febases/autodifffe.hh
is now renamed toikarus/finiteelements/autodiff/autodifffe.hh
.autodiffhelper.hh
will be moved fromutils
to this folder in a separate PR while handling #257.Global indices can now handle, for example, the following basis types:
scalarBasis
powerBasis
composite(scalarBasis, scalarBasis)
- For linear elastic Q1 elements, Timoshenko beam elements with higher order for $w$ compared to $\varphi$composite(powerBasis, scalarBasis)
- For linear elastic Q1 with additional pressure DOFscomposite(scalarBasis, powerBasis)
- For Reissner-Mindlin plates with different order for $w$ compared to $\varphi_x, \varphi_y$composite(powerBasis, powerBasis)
- For 7p-shells, advanced finite element technologiesA composite basis itself cannot have another composite basis though. The existing finite elements itself will be refactored to accommodate the changes in this PR while handling the issue #244.
!!! UPDATE Nested composite basis can also be handled after refactoring. BlockedInterleaved can also be handled by the global indices.