hyteg merge requestshttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests2023-07-17T14:34:59+02:00https://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/627Add capability to export FE functions for visualisation using the ADIOS2 library2023-07-17T14:34:59+02:00Marcus MohrAdd capability to export FE functions for visualisation using the ADIOS2 libraryThis MR extends the dataexport capabilities of HyTeG by allowing to use the [ADIOS 2: The Adaptable Input Output (I/O) System version 2](https://csmd.ornl.gov/software/adios2) to write FE function data to file for visualisation with Para...This MR extends the dataexport capabilities of HyTeG by allowing to use the [ADIOS 2: The Adaptable Input Output (I/O) System version 2](https://csmd.ornl.gov/software/adios2) to write FE function data to file for visualisation with ParaView.
The corrent implementation so far only supports functions of type
- P1Function + P1VectorFunction
- P2Function + P2VectorFunction
- P2P1TaylorHoodFunction
but is easily extensible by adding another specialised sub-writer class.Extend capabilities for exporting data by adding support for ADIOS2Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/838Draft: Automatic projection of boundary nodes to surfaces2024-10-11T09:53:42+02:00Nils KohlDraft: Automatic projection of boundary nodes to surfacesDescription pending :)Description pending :)Nils KohlNils Kohlhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/836Add option to utilize reference temperature profiles in TerraNeo2024-10-04T10:57:27+02:00Eugenio D'AscoliAdd option to utilize reference temperature profiles in TerraNeoA reference temperature profile can be provided within the parameters.prm file.
If a profile is entered, the application will use this profile as the reference temperature profile throughout the mantle.
The temperature deviations will he...A reference temperature profile can be provided within the parameters.prm file.
If a profile is entered, the application will use this profile as the reference temperature profile throughout the mantle.
The temperature deviations will henceforth be estimated with respect to this profile.
The profile has to be in .json format with one entry holding the key "Radius (m)" and the corresponding
data values in descending order starting from the surface.
The second entry must be the temperature.Eugenio D'AscoliEugenio D'Ascolihttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/835[Rebased, 2nd time] Radially aligned annulus and icosahedral shell maps.2024-10-10T00:40:38+02:00Nils Kohl[Rebased, 2nd time] Radially aligned annulus and icosahedral shell maps.Rebased !834 on master.
-----
Re-introduced from 7bc4be0bc8f1e3a9c401b1e487f5622ad7845592 and parents (see !792).
-----
Opposed to their "unaligned" counterparts, the new maps align micro-vertices radially along rays from the origin....Rebased !834 on master.
-----
Re-introduced from 7bc4be0bc8f1e3a9c401b1e487f5622ad7845592 and parents (see !792).
-----
Opposed to their "unaligned" counterparts, the new maps align micro-vertices radially along rays from the origin.
These new maps are not well tested in combination with operators, but the forward mapping should be working and usable with the implementation of parametric maps via the MicroMesh class (example in `apps/show_mesh.cpp`).
-----
Includes refactoring of the `show_mesh` app.Nils KohlNils Kohlhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/834[Rebased] Radially aligned annulus and icosahedral shell maps.2024-09-25T09:58:13+02:00Nils Kohl[Rebased] Radially aligned annulus and icosahedral shell maps.Rebased !829 on master after merging !828.
-----
Re-introduced from 7bc4be0bc8f1e3a9c401b1e487f5622ad7845592 and parents (see !792).
-----
Opposed to their "unaligned" counterparts, the new maps align micro-vertices radially along ra...Rebased !829 on master after merging !828.
-----
Re-introduced from 7bc4be0bc8f1e3a9c401b1e487f5622ad7845592 and parents (see !792).
-----
Opposed to their "unaligned" counterparts, the new maps align micro-vertices radially along rays from the origin.
These new maps are not well tested in combination with operators, but the forward mapping should be working and usable with the implementation of parametric maps via the MicroMesh class (example in `apps/show_mesh.cpp`).Nils KohlNils Kohlhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/833Allow exporting a refined mesh from HyTeG (rebased)2024-09-24T16:16:44+02:00Marcus MohrAllow exporting a refined mesh from HyTeG (rebased)New rebased version of !822.New rebased version of !822.https://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/831Add PETSc MinRes as an option for the coarse grid solver2024-09-30T08:52:57+02:00Eugenio D'AscoliAdd PETSc MinRes as an option for the coarse grid solverUsers can now define if the HyTeG MinRes coarse grid solver will be used or if a PETSc MinRes coarse grid solver should be utilized in TerraNeo simulation runs.
By defining the corresponding flag "PETScFlag" within the parameters.prm fil...Users can now define if the HyTeG MinRes coarse grid solver will be used or if a PETSc MinRes coarse grid solver should be utilized in TerraNeo simulation runs.
By defining the corresponding flag "PETScFlag" within the parameters.prm file the coarse grid solver can be set.
If a PETSc MinRes solver is chosen it must be ensured that TerraNeo is build with PETSc being enabled.
The amount of PETSc coarse grid iterations is derived from the solver coarse grid iteration parameter in the parameters file.Eugenio D'AscoliEugenio D'Ascolihttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/830Add option to utilise reference temperature profiles in TerraNeo2024-09-30T13:52:17+02:00Eugenio D'AscoliAdd option to utilise reference temperature profiles in TerraNeoA reference temperature profile can be provided within the parameters.prm file.
If a profile is provided, the application will use this profile as the reference temperature profile throughout the mantle.
The temperature deviations will h...A reference temperature profile can be provided within the parameters.prm file.
If a profile is provided, the application will use this profile as the reference temperature profile throughout the mantle.
The temperature deviations will henceforth be estimated with respect to this profile.
The profile has to be in .json format with one entry holding the key "Radius (m)" and the corresponding
data values in descending order starting from the surface.
The second entry must be the temperature [K].Eugenio D'AscoliEugenio D'Ascolihttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/829Draft: Radially aligned annulus and icosahedral shell maps.2024-09-24T15:25:42+02:00Nils KohlDraft: Radially aligned annulus and icosahedral shell maps.Should be rebased onto master after !828 is merged.
-----
Re-introduced from 7bc4be0bc8f1e3a9c401b1e487f5622ad7845592 and parents (see !792).
-----
Opposed to their "unaligned" counterparts, the new maps align micro-vertices radially...Should be rebased onto master after !828 is merged.
-----
Re-introduced from 7bc4be0bc8f1e3a9c401b1e487f5622ad7845592 and parents (see !792).
-----
Opposed to their "unaligned" counterparts, the new maps align micro-vertices radially along rays from the origin.
These new maps are not well tested in combination with operators, but the forward mapping should be working and usable with the implementation of parametric maps via the MicroMesh class.Nils KohlNils Kohlhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/828[Rebased, 2nd time] MicroMesh & iso-/super-/sub-parametric elements2024-10-14T21:38:12+02:00Nils Kohl[Rebased, 2nd time] MicroMesh & iso-/super-/sub-parametric elements> Rebased. Old MRs: !814 (original), !821 (first rebase)
# Overview
This MR introduces utilities to work with iso-, sub-, and super-parametric meshes.
Mainly it enables/simplifies working with meshes the node-positions of which are sp...> Rebased. Old MRs: !814 (original), !821 (first rebase)
# Overview
This MR introduces utilities to work with iso-, sub-, and super-parametric meshes.
Mainly it enables/simplifies working with meshes the node-positions of which are specified as finite element functions.
Instead of using the blending function feature, the geometry can be interpolated into a (vector-valued) P1 or P2 space.
Using the HOG, the local Jacobians can be computed straightforwardly by evaluation of the gradients of the shape functions (see https://i10git.cs.fau.de/hyteg/hog/-/merge_requests/24).
Functions to generate appropriate volume meshes from either surface meshes or analytical descriptions of curved geometries are not yet included in this MR.
For more details see docstring of `MicroMesh`.
# Concrete changes
* `MicroMesh` class and several centralized functions to compute node positions
* corresponding VTK output adaptions
* some tests
* new operators via hyteg_operators update
# TODOs
## Necessary
- [x] generate isoparametric operators necessary for the tests and update hyteg-operators afterwards
- [x] proper VTK test before merging this (specifically, #278 would be very nice)
## Nice to have / next steps
- proper, stable mesh improvement
- semi-automated meshing from surface representations (e.g., via OpenMesh or gmsh)
- tutorial
- more operators
# Images
## 2D, piecewise quadratic mesh (P2, level 3)
(left: coarse mesh, middle: projected, right: projected and corrected with diffusion)
![curved_mesh_2D](/uploads/dfac15b0a63760d1264fbc4b6e46d4c3/curved_mesh_2D.png)
## 3D, piecewise quadratic mesh (P2, level 3)
(left: coarse mesh, middle: projected, right: projected with edges)
![curved_mesh_3D](/uploads/71f2d2ee2fb4e84b0a328bb90ecfc760/curved_mesh_3D.png)Nils KohlNils Kohlhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/822Allow exporting a refined mesh from HyTeG2024-09-24T11:04:01+02:00Marcus MohrAllow exporting a refined mesh from HyTeGIn the last developer meeting the funtionality for exporting a refined mesh from HyTeG to import into other FEM libraries to run comparisons was requested. This MR provides this functionality.
The `gmsh::exportRefinedMesh()` function ge...In the last developer meeting the funtionality for exporting a refined mesh from HyTeG to import into other FEM libraries to run comparisons was requested. This MR provides this functionality.
The `gmsh::exportRefinedMesh()` function generates a minimal MSH4.1 file containing the three sections
- **MeshFormat**
- **Nodes**
- **Elements**
These are enough to describe the plain mesh. Some applications might also require an **Entities** section. We could generate that, too, if need be. The current implementation uses the macro-primitives as entities and we could base the information in an Entities section also on these.
The implementation seems to work, as one can import the generated files into Gmsh or reimport them into HyTeG.![Gmsh-Annulus](/uploads/dd9bb125c0357010ae91e8aa432b5bb2/Gmsh-Annulus.png)![Gmsh-ThickSphericalShell](/uploads/49b363d10df29b91065dc626263c42f2/Gmsh-ThickSphericalShell.png)Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/821[Rebased] MicroMesh & iso-/super-/sub-parametric elements2024-09-18T14:12:03+02:00Nils Kohl[Rebased] MicroMesh & iso-/super-/sub-parametric elements> Rebased. Old MR: !814
# Overview
This MR introduces utilities to work with iso-, sub-, and super-parametric meshes.
Mainly it enables/simplifies working with meshes the node-positions of which are specified as finite element functi...> Rebased. Old MR: !814
# Overview
This MR introduces utilities to work with iso-, sub-, and super-parametric meshes.
Mainly it enables/simplifies working with meshes the node-positions of which are specified as finite element functions.
Instead of using the blending function feature, the geometry can be interpolated into a (vector-valued) P1 or P2 space.
Using the HOG, the local Jacobians can be computed straightforwardly by evaluation of the gradients of the shape functions (see https://i10git.cs.fau.de/hyteg/hog/-/merge_requests/24).
Functions to generate appropriate volume meshes from either surface meshes or analytical descriptions of curved geometries are not yet included in this MR.
For more details see docstring of `MicroMesh`.
# Concrete changes
* `MicroMesh` class and several centralized functions to compute node positions
* corresponding VTK output adaptions
* some tests
* new operators via hyteg_operators update
# TODOs
## Necessary
- [x] generate isoparametric operators necessary for the tests and update hyteg-operators afterwards
- [ ] proper VTK test before merging this (specifically, #278 would be very nice)
## Nice to have / next steps
- proper, stable mesh improvement
- semi-automated meshing from surface representations (e.g., via OpenMesh or gmsh)
- tutorial
- more operators
# Images
## 2D, piecewise quadratic mesh (P2, level 3)
(left: coarse mesh, middle: projected, right: projected and corrected with diffusion)
![curved_mesh_2D](/uploads/dfac15b0a63760d1264fbc4b6e46d4c3/curved_mesh_2D.png)
## 3D, piecewise quadratic mesh (P2, level 3)
(left: coarse mesh, middle: projected, right: projected with edges)
![curved_mesh_3D](/uploads/71f2d2ee2fb4e84b0a328bb90ecfc760/curved_mesh_3D.png)Nils KohlNils Kohlhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/818Add a reader for Gmsh files in MSH 4.1 format2024-08-29T11:39:44+02:00Marcus MohrAdd a reader for Gmsh files in MSH 4.1 formatThis MR supersedes !801, look there for details and discussion.This MR supersedes !801, look there for details and discussion.Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/814Draft: MicroMesh & iso-/super-/sub-parametric elements2024-09-18T14:11:49+02:00Nils KohlDraft: MicroMesh & iso-/super-/sub-parametric elements# Overview
This MR introduces utilities to work with iso-, sub-, and super-parametric meshes.
Mainly it enables/simplifies working with meshes the node-positions of which are specified as finite element functions.
Instead of using the ...# Overview
This MR introduces utilities to work with iso-, sub-, and super-parametric meshes.
Mainly it enables/simplifies working with meshes the node-positions of which are specified as finite element functions.
Instead of using the blending function feature, the geometry can be interpolated into a (vector-valued) P1 or P2 space.
Using the HOG, the local Jacobians can be computed straightforwardly by evaluation of the gradients of the shape functions (see https://i10git.cs.fau.de/hyteg/hog/-/merge_requests/24).
Functions to generate appropriate volume meshes from either surface meshes or analytical descriptions of curved geometries are not yet included in this MR.
For more details see docstring of `MicroMesh`.
# Concrete changes
* `MicroMesh` class and several centralized functions to compute node positions
* corresponding VTK output adaptions
* some tests
# TODOs
## Necessary
- [x] generate isoparametric operators necessary for the tests and update hyteg-operators afterwards
- [ ] proper VTK test before merging this (specifically, #278 would be very nice)
## Nice to have / next steps
- proper, stable mesh improvement
- semi-automated meshing from surface representations (e.g., via OpenMesh or gmsh)
- tutorial
- more operators
# Images
## 2D, piecewise quadratic mesh (P2, level 3)
(left: coarse mesh, middle: projected, right: projected and corrected with diffusion)
![curved_mesh_2D](/uploads/dfac15b0a63760d1264fbc4b6e46d4c3/curved_mesh_2D.png)
## 3D, piecewise quadratic mesh (P2, level 3)
(left: coarse mesh, middle: projected, right: projected with edges)
![curved_mesh_3D](/uploads/71f2d2ee2fb4e84b0a328bb90ecfc760/curved_mesh_3D.png)Nils KohlNils Kohlhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/808Add a prependHyTeGMeshDir() function and move 2D meshes into separate folder2024-08-09T07:59:43+02:00Marcus MohrAdd a prependHyTeGMeshDir() function and move 2D meshes into separate folderSee the original MR !798 for details and discussion. This MR uses a rebased branch on which the change of source code and parameter files was completed.See the original MR !798 for details and discussion. This MR uses a rebased branch on which the change of source code and parameter files was completed.Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/805Refactor solvers to use copyBCs2024-08-08T15:38:20+02:00Ponsuganth Ilangovan Ponkumar IlangoRefactor solvers to use copyBCsThis is partly related to #245
Basically refactors hyteg and petsc solver classes to use `copyBCs` from `FunctionTools.hpp` instead of using the FE function copy.
This would be useful for use cases where we have mixed boundary conditi...This is partly related to #245
Basically refactors hyteg and petsc solver classes to use `copyBCs` from `FunctionTools.hpp` instead of using the FE function copy.
This would be useful for use cases where we have mixed boundary conditions for FE component functions.Ponsuganth Ilangovan Ponkumar IlangoPonsuganth Ilangovan Ponkumar Ilangohttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/803Draft: Implement functionality to update non-dimensional numbers (e.g. Di, Ra, Grueneisen) based on user defined radial profiles2024-08-09T16:16:50+02:00Eugenio D'AscoliDraft: Implement functionality to update non-dimensional numbers (e.g. Di, Ra, Grueneisen) based on user defined radial profilesUsers can provide radial profiles for the calculation of non-dimensional numbers such as the
Grueneisen parameter, thermal expansivity or specific heat capacity.
If radial profile values lie in between given data points a linear interpo...Users can provide radial profiles for the calculation of non-dimensional numbers such as the
Grueneisen parameter, thermal expansivity or specific heat capacity.
If radial profile values lie in between given data points a linear interpolation will be
performed to estimate the radial profile value at the given location.
If a radial profile is used the non-dimensional numbers will be updated during runtime according to the
corresponding radial profile.
These radial profiles have to be in .json format with one entry for the radius holding the key-argument: "Radius (m)".
The radius entry must be sorted descending from surface (m) to CMB (m)
The second entry will hence be derived as data value entry.
A check for min and max radii of the radial profile will ensure that only reasonable profiles can be utilised (r_max <= r_surface and r_min >= r_CMB).Eugenio D'AscoliEugenio D'Ascolihttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/802Adding RMS to the radial profiles.2024-08-06T16:34:41+02:00Nils KohlAdding RMS to the radial profiles.Nils KohlNils Kohlhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/801Add a reader for Gmsh files in MSH 4.1 format2024-11-04T16:12:22+01:00Marcus MohrAdd a reader for Gmsh files in MSH 4.1 formatAs explained in #271 the MSH2.2 format is quite out-dated. However, it is currently the only mesh format we can import with HyTeG. This MR changes this by implementing a reader for the current MSH4.1 format. Doing so it fixes #271.
Addi...As explained in #271 the MSH2.2 format is quite out-dated. However, it is currently the only mesh format we can import with HyTeG. This MR changes this by implementing a reader for the current MSH4.1 format. Doing so it fixes #271.
Additionally the MR also addresses #275 by allowing to consistently using the physical tags in the mesh-file to set the primitives boundary flags. An example is given below which was generated with ParaView from the output of the `show_mesh` app for the `two-blocks.msh` file. In the file the two rectangular blocks have different physical tags, as have the vertices and edges for the left part, those in the right part and the two vertices and edge forming the interface between the two blocks. The images demonstrate that the reader correctly sets these values for all primitives present in the *Nodes* and *Elements* section of the file and also correctly deduces the flags for the derived primitives. In our case here these are the edges inside the two blocks.
![Edges](/uploads/57bb9e203686a5a4af529df7322ee37b/Edges.png)![Edges+Vertices](/uploads/dd8fa5e3e18e50d00bcc8ef86b0a66f8/Edges+Vertices.png)![Edges+Vertices+Faces](/uploads/c785e2d0feb4180b9212ff907c364ae4/Edges+Vertices+Faces.png)
I have not added a specific test for the new reader. Instead the MR replaces several 2D and 3D meshes used in the testsuite by versions in MSH4.1 format.Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/800Mixed Precision in HyTeG2024-08-07T17:44:03+02:00Michael ZikeliMixed Precision in HyTeGThis MR is the final version of my Masters's thesis, do to rebasing of `HyTeGs` codebase and the introduction of the `hyteg_operators` submodule and the `HOG` tool, merging my work was not as trivial.
The changes of this MR are divided ...This MR is the final version of my Masters's thesis, do to rebasing of `HyTeGs` codebase and the introduction of the `hyteg_operators` submodule and the `HOG` tool, merging my work was not as trivial.
The changes of this MR are divided into several parts:
- The application of my master thesis, i.e. a Poisson problem using IR as a solver, GMG as inner-solver, 1st order Chebychev as smoother and CG as coarse grid solver. This part is quite lengthy and includes a lot of scripts and apps for benchmarking and profiling. If requested, the entire folder `2023-zikeli-mt/MT-apps/` can be taken out from this MR and included in another MR. This part also includes an IR solver, that is meant to be a standalone solver and will be added to `src/hytec/solvers/` in a future issue (**TODO**).
- Some changes for the `memory` structure and `P1 functionalities` to allow for `float16`. (`src/hyteg/gridtransformators/` and `src/hyteg/memory/`)
- Some casting statements for the solvers to allow for solvers using mixed precision. (`src/hyteg/solvers/`)
- Some minor changes that could have been standalone MR but are too insignificant to do so, therefore, they are just added within this MR.
1. Printing the elements within a LaTeX `Table` in the scientific format. (`src/hyteg/dataexport/LaTeX/Table.hpp`)
2. Including a getter function for only the inner global DoFs. (`src/hyteg/p<{1,2}>functionspace/<{VertexDoFFuntions,P2Function}>.hpp`)
3. Adding a label for the `ChebyshevSmoother` to the `TimingTree`. (`src/hyteg/solvers/ChebyshevSmoother.hpp`)
- Lastly, some changes related to #229, !669
---
**Note:**
Since at the time this work was done, the submodule `hyteg_operators` was not a thing yet, I needed to generate some operators and add them to the repository in the folder `apps/2023-zikeli-mt/MT-apps/operators-used`. At some point, they can be replaced by the submodule, but as of right now, there is no nice way to model various precisions with `HOG` and use them `hyteg_operators`. This will be part of a separate issue (**TODO**). Once this issue is fixed, they can be removed from the repository again.Michael ZikeliMichael Zikeli