hyteg merge requestshttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests2023-11-21T08:28:39+01:00https://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/665Fixes to several small oversights2023-11-21T08:28:39+01:00Daniel BauerFixes to several small oversightsThis MR includes fixes for several small oversights:
- Computation of P2 diagonal with varying coefficient in 2D.
Edge DoF indices must be adjusted between FEniCS and HyTeG ordering.
However, they used to be shuffled twice (in lines...This MR includes fixes for several small oversights:
- Computation of P2 diagonal with varying coefficient in 2D.
Edge DoF indices must be adjusted between FEniCS and HyTeG ordering.
However, they used to be shuffled twice (in lines 600-602 and again in lines 609-611).
[Details are explained below](https://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/665#note_26112).
- Adding single elements to a PETSc sparse matrix proxy added an unitialized value if `real_t` and `PETScReal` were different types.
- The `P2ConstantOperator` used to segfault when passed a blending form.
Now, the form initializes the geometry map to the identity.
- Vertex, edge and volume DoF functions now use Kahan summation in the `sumLocal` operation.
This fixes a test failure (icx, single precision, #236) caused by inaccurate pressure projection.
- Also includes some improvements to and a new test for the P2 diagonal implemented in `DiagonalNonConstantOperatorTest`.Daniel BauerDaniel Bauerhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/640Fix refine coarse mesh2023-08-17T16:18:58+02:00Daniel BauerFix refine coarse meshFixes an issue with `MeshInfo::refinedCoarseMesh`.
This method creates a new coarse mesh that shall look exactly like the old mesh on refinement level 1.
To this end, it introduces new vertices at all edges and creates new cells accordin...Fixes an issue with `MeshInfo::refinedCoarseMesh`.
This method creates a new coarse mesh that shall look exactly like the old mesh on refinement level 1.
To this end, it introduces new vertices at all edges and creates new cells accordingly.
The main challenge is not introducing the same midpoint twice, when refining neighboring cells.
Prior to this MR, a map from vertex coordinates, to ids of newly introduced vertices was used.
The problem however was that the coordinates of the midpoints were rounded differently depending on the order of the edge endpoints.
Actually, making the computation of the midpoint symmetric (e3fa0abfbeae300ebee831bea4f686130f4d4fe4) is enough to fix this issue.
However, since I am paranoid, I changed the map to be from edge endpoint vertex ids (sorted) to the vertex id of the midpoint.
This way, floating comparisons are removed entirely.
I strengthened the test accordingly and checked that it fails on the current master.
Lastly, I want to point out that this is a really nice real-world example demonstrating that you have to be careful with floating point arithmetic.
While both versions of the midpoint calculation are mathematically equivalent, only one of them is correct.Daniel BauerDaniel Bauerhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/637Resolve problems with Copy Assignment and FunctionMultiStore::remove()2023-07-31T18:49:21+02:00Marcus MohrResolve problems with Copy Assignment and FunctionMultiStore::remove()Resolves issue #224Resolves issue #224Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/621Fix broken master2023-06-27T17:03:09+02:00Marcus MohrFix broken masterMR !620 broke the pipeline for the master, because the new app had an incorrect path for including `VTKOutput.hpp` following the previously merged !619.
IMHO this is another good example, why fast-forward merges are to be preferred.MR !620 broke the pipeline for the master, because the new app had an incorrect path for including `VTKOutput.hpp` following the previously merged !619.
IMHO this is another good example, why fast-forward merges are to be preferred.Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/613Fix issue #2212023-06-14T10:03:44+02:00Marcus MohrFix issue #221Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/610Fix petsc::exportOperator()2023-06-06T19:04:05+02:00Marcus MohrFix petsc::exportOperator()[5cb62dc676] introduced "bool binary = false" as another optional parameter to the interface of PETScSparseMatrix::print(). It was forgotten, however, to adapt the call to print() inside petsc::exportOperator().[5cb62dc676] introduced "bool binary = false" as another optional parameter to the interface of PETScSparseMatrix::print(). It was forgotten, however, to adapt the call to print() inside petsc::exportOperator().https://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/591Fix position of symmetric cuboid2023-04-27T19:42:37+02:00Daniel BauerFix position of symmetric cuboidWe can create symmetric cuboids by specifying lower-left-front and upper-right-back corner coordinates.
However, those used to be only used for determining the size of the cube.
It would always be positioned at the origin.
This MR fixes...We can create symmetric cuboids by specifying lower-left-front and upper-right-back corner coordinates.
However, those used to be only used for determining the size of the cube.
It would always be positioned at the origin.
This MR fixes the positioning to be at the specified lower-left-front point.
A respective test is included.Daniel BauerDaniel Bauerhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/577Resolve issue #2042023-03-22T20:17:13+01:00Marcus MohrResolve issue #204Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/551Fixes the high velocities due to wrong rec tree2022-12-15T22:00:08+01:00Marcus MohrFixes the high velocities due to wrong rec treeThis change avoids having large velocities due to the creation of a
wrong reconstruction tree. Some plates have two reconstruction poles
at the same time, the plate reconstruction tree was set to get the
older plate ID instead of the cur...This change avoids having large velocities due to the creation of a
wrong reconstruction tree. Some plates have two reconstruction poles
at the same time, the plate reconstruction tree was set to get the
older plate ID instead of the current one.
Now the code is set to create the reconstruction tree with the age
provided by the user.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 Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/542Fix bugs in PlateVelocityProvider2022-11-17T16:47:00+01:00Marcus MohrFix bugs in PlateVelocityProviderMarcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/522Fixes issue 1832022-08-02T19:21:08+02:00Marcus MohrFixes issue 183Merge makes `IcosahedralShellMap` numerically robust w.r.t. settings using large radii.Merge makes `IcosahedralShellMap` numerically robust w.r.t. settings using large radii.Markus WiedemannMarkus Wiedemannhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/500Fixes bad_cast issue in P2P1ElementwiseBlendingStokesOperator and adds PrintI...2022-03-25T11:42:02+01:00Marcus MohrFixes bad_cast issue in P2P1ElementwiseBlendingStokesOperator and adds PrintInfoTestMarcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/490Bugfix for CSFVectorFunction::copyBoundaryConditionFromFile()2022-03-04T16:18:49+01:00Marcus MohrBugfix for CSFVectorFunction::copyBoundaryConditionFromFile()Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/485Updates meshing function for the full annulus2022-02-22T16:33:06+01:00Marcus MohrUpdates meshing function for the full annulus* Fixes a problem with the flagging of tangential edges where the
annulus is "glued" together; re-inserted edges were all markes as inner.
* Removes old version of MeshAnnulus() that had CRISSCROSS hardcoded.
* Updates MeshGenTest to t...* Fixes a problem with the flagging of tangential edges where the
annulus is "glued" together; re-inserted edges were all markes as inner.
* Removes old version of MeshAnnulus() that had CRISSCROSS hardcoded.
* Updates MeshGenTest to test all four meshing flavours.
* Introduces hollowFlag enum in MeshInfo class for setting in a mesh generator
flagInnerBoundary, flagInterior, flagOuterBoundary for closed and hollow
domains such as the full annulus and the thick spherical shell. MeshAnnulus()
now used these.
* Extends documentation.
* Also fixes clipping of CRISSCROSS and CROSS picture for MeshRectangle()Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/415Fixes issue #1502021-05-04T16:21:30+02:00Marcus MohrFixes issue #150The merge
- fixes issue #150
- extends **FunctionTrait** concept such that we can construct a vector function when we know the scalar function type
Cheers
MarcusThe merge
- fixes issue #150
- extends **FunctionTrait** concept such that we can construct a vector function when we know the scalar function type
Cheers
MarcusMarcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/414Hot-fix for IsoviscousConvectionAnnulus tutorial2021-05-04T00:01:35+02:00Marcus MohrHot-fix for IsoviscousConvectionAnnulus tutorialSee issue #150 for problem description.See issue #150 for problem description.Marcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/403Formally correct 3D implementation for two operators2021-03-31T13:29:01+02:00Marcus MohrFormally correct 3D implementation for two operatorsThe P2P1BlendingTaylorhoodStokesOperator and P2P1SurrogateTaylorhoodStokesOperator are formally implemented to work in 3D. However, due to missing 3D implementations of their underlying operators they can currently not be used in that se...The P2P1BlendingTaylorhoodStokesOperator and P2P1SurrogateTaylorhoodStokesOperator are formally implemented to work in 3D. However, due to missing 3D implementations of their underlying operators they can currently not be used in that setting. The formal implementation uses
- P2ToP1ConstantDivzOperator div_z;
- P1ToP2ConstantDivTzOperator divT_z;
Which the merge will formally replace by the corresponding blending/surrogate operator. This way is IMHO cleaner and the operators should work in 3D out-of-the-box, once the underlying operators get extended to 3D.
Cheers
MarcusMarcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/389Fixes / extensions for exportOperatorMatrix app2021-01-19T15:29:28+01:00Marcus MohrFixes / extensions for exportOperatorMatrix appMarcus MohrMarcus Mohrhttps://i10git.cs.fau.de/hyteg/hyteg/-/merge_requests/379MacroFaceIndexing fix2020-11-27T14:38:35+01:00Daniel DrzisgaMacroFaceIndexing fixWhile trying out different permutations of vertex orderings in a macro face, I noticed some kind of anomaly. Andreas dug deeper and managed to find a bug in `MacroFaceIndexing.hpp`. It seems like the tests had a mistake as well and that ...While trying out different permutations of vertex orderings in a macro face, I noticed some kind of anomaly. Andreas dug deeper and managed to find a bug in `MacroFaceIndexing.hpp`. It seems like the tests had a mistake as well and that is why the bug went unnoticed. We are still unsure why we have never noticed this error in any of our experiments. We can discuss more about this later in our meeting.Nils KohlNils Kohl