hyteg merge requestshttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests2023-07-19T17:14:08+02:00https://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/630Change FEFunctionWriter to use CRTP2023-07-19T17:14:08+02:00Marcus MohrChange FEFunctionWriter to use CRTPThe previous inheritance concept, with FEFunctionWriter as base class for the concrete (AdiosWriter and VTKOutput) child classes was faulty. The
problem was that the add() method is templated and templated methods are currently not allow...The previous inheritance concept, with FEFunctionWriter as base class for the concrete (AdiosWriter and VTKOutput) child classes was faulty. The
problem was that the add() method is templated and templated methods are currently not allowed to be virtual, too.
So with this commit we change to CRTP. Not sure how much sense this makes, but it will at least enforce a minimal level of consistency in the methods offered by the "child" classes.Extend capabilities for exporting data by adding support for ADIOS2Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/619Refactor VTKOutput2023-06-27T13:41:44+02:00Marcus MohrRefactor VTKOutputIn order to prepare for different output formats and libraries this MR refactors the implementation of the existing `VTKOutput` class and also adapts structure of source file placement.In order to prepare for different output formats and libraries this MR refactors the implementation of the existing `VTKOutput` class and also adapts structure of source file placement.Extend capabilities for exporting data by adding support for ADIOS2Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/734Update/extend documentation of PrimitiveID class2024-03-28T20:35:31+01:00Marcus MohrUpdate/extend documentation of PrimitiveID classThis merge request
- re-writes and extends documentation text of `PrimitiveID` class
- adds three images to better explain the format of the bit pattern
- groups documentation of `PrimitiveID::asIntArray()` methods together
- updates met...This merge request
- re-writes and extends documentation text of `PrimitiveID` class
- adds three images to better explain the format of the bit pattern
- groups documentation of `PrimitiveID::asIntArray()` methods together
- updates meta-data in `PrimitiveID.hpp`
- relocates PrimitiveID.hpp to the sub-folder `src/hyteg/primitives`https://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/716GEMV2024-03-21T21:55:14+01:00Nils KohlGEMVThis MR implements the `gemv` as described in detail in #253.
It turns out that only minor changes have to applied to the `apply()` method to make this work (at least for the elementwise operators).This MR implements the `gemv` as described in detail in #253.
It turns out that only minor changes have to applied to the `apply()` method to make this work (at least for the elementwise operators).Nils KohlNils Kohlhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/708Rename PETScLUSolver::reassembleMatrix() to setReassembleMatrix()2024-02-23T10:15:40+01:00Marcus MohrRename PETScLUSolver::reassembleMatrix() to setReassembleMatrix()Rationale: It is a setter method and after the change naming is consistent with `EigenSparseDirectSolver::setReassembleMatrix()`Rationale: It is a setter method and after the change naming is consistent with `EigenSparseDirectSolver::setReassembleMatrix()`https://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/638Remove isDummy_ attribute from Function class2023-07-31T23:48:07+02:00Marcus MohrRemove isDummy_ attribute from Function classResolves issue #225Resolves issue #225Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/628Move Table and KeyValueStore to a central place2023-07-20T11:23:12+02:00Daniel BauerMove Table and KeyValueStore to a central placeRebase of !625.
`Table` and `KeyValueStore` can be used to write data in HyTeG apps/tests such that they can be later directly included in LaTeX code. See the docstrings for example usages.
This MR documents the existing classes and mo...Rebase of !625.
`Table` and `KeyValueStore` can be used to write data in HyTeG apps/tests such that they can be later directly included in LaTeX code. See the docstrings for example usages.
This MR documents the existing classes and moves them to `src/hyteg/dataexport`. Before, they were hidden away in `apps/2023-bauer-mt`.Daniel BauerDaniel Bauerhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/624Make HyTeG aware of system's byte order2023-07-12T13:17:33+02:00Marcus MohrMake HyTeG aware of system's byte orderMerge adds a new macro `HYTEG_ARCH_ENDIANESS` to HytegDefinitions that is set by CMake to the value of `CMAKE_CXX_BYTE_ORDER`. We also add a query method `systemEndianess()` to BuildInfo. We use this information then to place the correct...Merge adds a new macro `HYTEG_ARCH_ENDIANESS` to HytegDefinitions that is set by CMake to the value of `CMAKE_CXX_BYTE_ORDER`. We also add a query method `systemEndianess()` to BuildInfo. We use this information then to place the correct information into our VTU output files, instead of hardcoding LittleEndian everywhere.
In order to use the CMake macro we need 3.20 as minimal version and document this in our README.Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/622Resolve other aspect of issue 2022023-06-29T08:21:05+02:00Marcus MohrResolve other aspect of issue 202After this MR the FunctionPropertiesTest works for the P0FunctionTag case. This demonstrates that we can use our usual machinery now to query the number of DoFs of a ```P0Function```. This resolves #202.
Additionally extension of ```num...After this MR the FunctionPropertiesTest works for the P0FunctionTag case. This demonstrates that we can use our usual machinery now to query the number of DoFs of a ```P0Function```. This resolves #202.
Additionally extension of ```numberOfInnerDoFs()``` and ```numberOfLocalDoFs()``` should be more straightforward now, as we no longer need to implement a separate template specialisation.Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/599Handle edge orientations systematically by basis transformations2023-05-31T18:06:26+02:00Daniel BauerHandle edge orientations systematically by basis transformationsThe rationale behind this MR is detailed in https://i10git.cs.fau.de/terraneo/hhg_doku/-/blob/master/P3Function_thoughts/orientations.tex.
This MR implements the proposed approach for the N1E1 space.
# TL;DR
I spent some time thinking a...The rationale behind this MR is detailed in https://i10git.cs.fau.de/terraneo/hhg_doku/-/blob/master/P3Function_thoughts/orientations.tex.
This MR implements the proposed approach for the N1E1 space.
# TL;DR
I spent some time thinking about how to handle orientation of mesh entities and how to implement that in HyTeG having the general case in mind.
The conclusion is that we should perform basis transformations during communication.
More details about these transforms are given in [1].
As a result only two parts in HyTeG require care: the communication (PackInfo) and the matrix assembly.
The goal is to have both generated automatically.
# Some Notes
- N1E1 forms do not depend on edge directions any more. The reason why this was introduced initially was confusion on my side about the difference between matrix diagonals and linear forms.
- Assembly of linear forms is now a free function (for N1E1) and the Operator is not defined for linear forms anymore. I am open to discussions about this.
# Related
https://i10git.cs.fau.de/terraneo/hyteg-form-generator/-/merge_requests/30
[1] M. W. Scroggs, J. S. Dokken, C. N. Richardson, and G. N. Wells, “Construction of Arbitrary Order Finite Element Degree-of-Freedom Maps on Polygonal and Polyhedral Cell Meshes,” ACM Trans. Math. Softw., vol. 48, no. 2, pp. 1–23, Jun. 2022, doi: [10.1145/3524456](https://doi.org/10.1145/3524456).Daniel BauerDaniel Bauerhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/593Blending with Nedelec elements2023-05-11T13:55:32+02:00Daniel BauerBlending with Nedelec elementsWith these changes it is possible to use blending maps together with Nedelec elements.
- New forms and operators: generated affine (symbolic integration) and blending (quadrature order 2) mass and curl-curl, blending (quadrature order 6...With these changes it is possible to use blending maps together with Nedelec elements.
- New forms and operators: generated affine (symbolic integration) and blending (quadrature order 2) mass and curl-curl, blending (quadrature order 6) linear form (See https://i10git.cs.fau.de/terraneo/hyteg-form-generator/-/merge_requests/29)
- `evaluate` now transforms result to physical space
- `interpolate` interprets input as defined in physical space
Additional changes to the framework:
- Makes it possible to generate a partial toroidal mesh. Instead of the full ring, we can now generate only a slice (in toroidal direction) (https://i10git.cs.fau.de/hyteg/hyteg/-/commit/78451052bf1e3a960a057205344f11e7406a7959)
- Refactoring: Because of the new option for the toroidal mesh generator `numToroidalSlices` (and mutatis mutandis `numPoloidalSlices`) is renamed to `toroidalResolution` throughout the code (https://i10git.cs.fau.de/hyteg/hyteg/-/commit/53df9cfbabb57987f1d35940f76e1c6cf23493ec)
- Fixes at least one occurrence of `auto` being used for `Point3D`. This used to work, however, now that `PointND` is an Eigen vector, it just asks for trouble.
Tests:
- Forms (curl-curl, mass, linear form) with blending
- Interpolate/evaluate with blending
- GMG L2-Convergence with blending (on a toroidal slice)Daniel BauerDaniel Bauerhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/583Fix typos and documentation2023-04-13T13:27:04+02:00Daniel BauerFix typos and documentationThis MR groups several smaller changes, one per commit:
- Fixes documentation related to Nedelec function space (broken links, etc.).
- Applies suggestion from comment "this can be changed to Index once Index is same as Index".
- Fixes a...This MR groups several smaller changes, one per commit:
- Fixes documentation related to Nedelec function space (broken links, etc.).
- Applies suggestion from comment "this can be changed to Index once Index is same as Index".
- Fixes a typo in a comment.
- Renames the functions `getOrientattionInNeighboringMacro(Cell|Face)` to `getOrientationInNeighboringMacro(Cell|Face)` and reformats the affected files.Daniel BauerDaniel Bauerhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/582Remove eigen/typeAliases.hpp2023-04-11T14:43:58+02:00Daniel BauerRemove eigen/typeAliases.hppThe header file `eigen/typeAliases.hpp` was introduced to ease working with Eigen matrices/vectors with scalar type `real_t`.
It was later obsoleted by refactors to hyteg's `Matrix` and `PointND` types.
This MR removes the obsolete head...The header file `eigen/typeAliases.hpp` was introduced to ease working with Eigen matrices/vectors with scalar type `real_t`.
It was later obsoleted by refactors to hyteg's `Matrix` and `PointND` types.
This MR removes the obsolete header, replacing all occurrences of `Eigen::(Matrix|Vector).r\b` by their respective hyteg classes.
Note that additional typedefs for `MatrixXr` and `VectorXr` are added to `types/Matrix.hpp` because they are used in `solvers/GMRESSolver.hpp`.
See also https://i10git.cs.fau.de/terraneo/hyteg-form-generator/-/merge_requests/25.Daniel BauerDaniel Bauerhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/575A little bit of refactoring2023-03-21T18:32:47+01:00Marcus MohrA little bit of refactoringMarcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/566Remove FaceDoFunction_old and DGFunction_old2023-02-13T18:23:50+01:00Marcus MohrRemove FaceDoFunction_old and DGFunction_oldResolves issue #190.Resolves issue #190.Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/563Upgrade algorithm for finding plate associated with point2023-01-24T21:07:01+01:00Marcus MohrUpgrade algorithm for finding plate associated with pointThis merge request is superseding !560, as gitlab does, unfortunately, not allow to exchange the underlying branch of a merge request.This merge request is superseding !560, as gitlab does, unfortunately, not allow to exchange the underlying branch of a merge request.Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/557Resolve issue #1922023-01-12T15:36:21+01:00Marcus MohrResolve issue #192Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/546Issue #181: Modify Matrix and PointND classes2022-12-07T10:37:30+01:00Marcus MohrIssue #181: Modify Matrix and PointND classesIn light of issue #181 this commit changes the implementation details
of the Matrix and PointND classes, while leaving their API basically
unchanged.
The major switch is that both classes now use an Eigen::Matrix object
to store their d...In light of issue #181 this commit changes the implementation details
of the Matrix and PointND classes, while leaving their API basically
unchanged.
The major switch is that both classes now use an Eigen::Matrix object
to store their data instead of the previous static 1D array of type T.
This allows to delegate all the algebraic operations to the Eigen
library and makes certain operations also available for dimensions for
which so far they had not been implemented.Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/543Replace Matrix::adj() by Matrix::inverse()2022-11-22T17:34:33+01:00Marcus MohrReplace Matrix::adj() by Matrix::inverse()Resolves issue #188.Resolves issue #188.Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/535Resolve issue #1842022-12-06T16:25:39+01:00Marcus MohrResolve issue #184The merge will make the evaluate() and evaluateGradient() methods of P[12]Function and DGFunction expect physical instead of computational coordinates. Additionally it fixes the problem with piecewise defined blending maps described as p...The merge will make the evaluate() and evaluateGradient() methods of P[12]Function and DGFunction expect physical instead of computational coordinates. Additionally it fixes the problem with piecewise defined blending maps described as part of issue #184.Marcus MohrMarcus Mohr