- Mar 26, 2024
-
-
-
Sander, Oliver authored
MixedRiemannianPNSolver See merge request !145
-
- Mar 25, 2024
-
-
Sander, Oliver authored
-
The MixedRiemannianPNSolver can assemble when different finite element spaces are used for deformations and rotations (in, e.g., a Cosserat model). CHOLMOD is used for the inner solver. This can be much faster than the MixedRiemannianTRSolver.
-
It is used by both TR and PN solvers, hence having it in a separate file is a cleaner design. While at it we also move it into the namespace Dune::GFE.
-
-
Sander, Oliver authored
Implement GlobalP2Mapper for 3d grids even without dune-parmg See merge request !146
-
Sander, Oliver authored
Previously this wouldn't compile, because GlobalP2Mapper only supported 1d and 2d grids when used without dune-parmg. This has now been fixed, so we can enable filmonsubstratetest and filmonsubstratetest-mixed (which involve a 3d grid) also for the situation without dune-parmg. Strangely, the test without the -mixed produces different results depending on whether the dune-parmg version of GlobalP2Mapper is used or not. Minor differences are to be expected because the precise behavior of multigrid methods (which are used by the TR solver) depends on the dof ordering. But the difference seen here is a bit large for my taste. I don't quite understand this, so this commit introduces some subcasing to make CI pass, and document the current behavior.
-
Sander, Oliver authored
It is pretty confusing to have the behavior of the solvers depend on the value of a preprocessor macro that is only used in this module in only a very inconsistent way.
-
Sander, Oliver authored
Unfortunately, this code is used even in sequential situations, but previously the code only supported 1d- and 2d grids. And as we still support installations without dune-parmg, this commit adds an implementation for hypercube grids of all dimensions.
-
Sander, Oliver authored
These tests have started to time out. I have no idea why.
-
- Mar 24, 2024
-
-
Sander, Oliver authored
There is no need to wrap the std::function that stores the Neumann force density into a std::shared_ptr.
-
Sander, Oliver authored
-
- Mar 19, 2024
-
-
Sander, Oliver authored
-
Sander, Oliver authored
Steps towards using LocalIntegralEnergy instead of problem-specific energy classes See merge request !144
-
Sander, Oliver authored
... if dune-common is newer than 2.9 The current build system does not require this argument anymore.
-
Sander, Oliver authored
-
Sander, Oliver authored
Plus some minor cleanup
-
Sander, Oliver authored
This makes for a cleaner design. Also, the density is identical to the one in nonplanarcosseratenergy.hh. Eventually, we will replace the density code there with the new density class introduced here. The new density CosseratShellDensity does not implement a particular interface yet. It is not clear to me yet how such an interface would look like, exactly.
-
Sander, Oliver authored
-
Sander, Oliver authored
This replaces the dedicated implementation of the quadrature loop for harmonic energies -- that is not needed anymore. In particular this means that the test for it can be removed. In theory it should be replaced with a test for the harmonic energy *density*, but that density implementation is so short that it doesn't really require a separate test.
-
Sander, Oliver authored
-
Sander, Oliver authored
Rather than using preprocessor switches. That's too fragile and not extensible.
-
Sander, Oliver authored
-
Sander, Oliver authored
If the target manifold is a product space, then ProductManifold must be used, and not a variadic list of the factor space types.
-
Sander, Oliver authored
-
Sander, Oliver authored
Together with the new test, this commit also contains a number of fixes for the SurfaceCosseratEnergy class. This class was not unit-tested previously, and unintentionally I messed it up badly during my recent modernization work. Finally, SurfaceCosseratEnergy had apparently never been tested without dune-curvedgeometry, which is however only an optional dependency. The commit therefore also adds the necessary conditionals. Then problem then is that the derivative of the outer normal of an intersection is not available from the standard grid interface. If dune-curvedgeometry is not available, this derivative is simply set to a zero matrix. Depending on the grid manager this may not actually be correct, though.
-
- Feb 12, 2024
-
-
Sander, Oliver authored
Various cleanup patches See merge request !143
-
Sander, Oliver authored
CollectiveCommunication has been deprecated for a while, and has recently been removed from dune-grid.
-
Sander, Oliver authored
'thickness' and 'kappa' are parameters in Cosserat shell models. They are not necessary for bulk models. Hence remove them.
-
Sander, Oliver authored
They do the same thing, essentially.
-
- Feb 07, 2024
-
-
Sander, Oliver authored
This is what the non-mixed ADOL-C assembler does, and I want to merge the two.
-
Sander, Oliver authored
Both classes are meant to do the same thing.
-
Sander, Oliver authored
This makes the interface more consistent.
-
Sander, Oliver authored
-
Sander, Oliver authored
-
Sander, Oliver authored
These two exist in base classes, and they are inherited anyway.
-
Sander, Oliver authored
ADOL-C can compute all derivatives with two different modes: scalar- and vector mode. In theory they should produce exactly the same results, but sometimes there are bugs (I have found a few of those myself). adolctest-scalar-and-vector-mode tested whether the two modes produced the same result for a particular Cosserat configuration. I do not think that dune-gfe is the right place for such a test. It tests for bugs in ADOL-C itself, and that is the job of ADOL-C's own test suite. Consequently, I am removing the test.
-
Sander, Oliver authored
This allows to get rid of a lot of (all) multiple inheritance.
-
Sander, Oliver authored
Previously, LocalEnergy would accept an arbitrary number of template arguments, and (with the exception of the first one) they would be interpreted as the factors of a product target space. This patch replaces this template list by a single template parameter, which has to be ProductManifold if a product space is desired. This has implications throughout the code. In particular, there are now two energy methods: One that still accepts coefficients sets in the form std::vector<TargetSpace> and a second one which accepts TupleVector<std::vector<Factors>...> The second one really only makes sense for product manifolds. However, as the 'energy' methods are pure virtual, they cannot be disabled by SFINAE or C++20 concepts. Therefore, the second 'energy' method exists always, accepting TupleVector<std::vector<TargetSpace> > if TargetSpace is not a product.
-