Skip to content
  1. Nov 13, 2024
  2. Oct 15, 2024
  3. Oct 10, 2024
    • Carsten Gräser's avatar
      6e1893ae
    • Carsten Gräser's avatar
      [hermite] Rename Hermite* to CubicHermite* · 47137b56
      Carsten Gräser authored
      There are many Hermite-type elements. The one implemented here
      is commonly known as cubic Hermite element.
      47137b56
    • Carsten Gräser's avatar
      [hermite][test] Disable test that has not been merged · 396cf3ee
      Carsten Gräser authored
      This commit is not ment to be merged but should
      be removed once the test is in. It only serves
      to disable it in a minimal invasive way such that
      the CI can be run.
      396cf3ee
    • Maik Porrmann's avatar
      [hermite][cleanup] Cleanup and improve MorleyPreBasis · ecb1f7c5
      Maik Porrmann authored and Carsten Gräser's avatar Carsten Gräser committed
      
      
      Layout cleanup:
      
      * Unify indentation.
      * Unify placement of opening/closing braces.
      * Unify placement of `static_assert`s and add missing conditions.
      * Surround each method by empty lines.
      * Put initializer and base class specifier in new line.
      * Fix a few typos.
      * For my inner Monk: Unify indentation of multiline doxygen comments.
      
      Other cleanup:
      
      * Cleanup includes.
      * Drop `coeffsize` and use `constexpr` function instead of nested ternary operators.
      * Rename `MorleyLocalBasis` to `MorleyReferenceLocalBasis`.
      
      Co-authored-by: Carsten Gräser's avatarCarsten Gräser <graeser@math.fau.de>
      ecb1f7c5
    • Maik Porrmann's avatar
      [hermite][cleanup] Cleanup and improve HermitePreBasis · 2b510f7c
      Maik Porrmann authored and Carsten Gräser's avatar Carsten Gräser committed
      
      
      Layout cleanup:
      
      * Unify indentation.
      * Unify placement of opening/closing braces.
      * Unify placement of `static_assert`s and add missing conditions.
      * Surround each method by empty lines.
      * Put initializer and base class specifier in new line.
      * Fix a few typos.
      * Order some `using` statements.
      * For my inner Monk: Unify indentation of multiline doxygen comments.
      
      Other cleanup:
      
      * Remove redundant members.
      * Cleanup includes.
      * Drop `coeffsize` and use `constexpr` function instead of nester ternary operators.
      * Rename `HermiteLocalBasis` to `HermiteReferenceLocalBasis`.
      * Improve documentation.
      * Extract generic mapper-based utilities into separate header:
        * A simple range over all subindices associated to an element within a `MCMGMapper`.
        * A function computing average mesh sizes for all DOFs addressed by a `MCMGMapper`.
      * Cleanup internal members:
        * Incorporate `LFE::fillMatrix()` into `LFE::bind()` to avoid useless indirection.
        * Incorporate `PreBasis::updateState()` into `PreBasis::update()` to avoid useless indirection.
        * Use meaningfull names for member variables instead of generic ones like `localState` and `data`.
        * Use `std::array<T,n>` instead of `std::vector<T>` if `n` is a small compile time constant.
      
      Interface improvements:
      
      * Add global basis.
      
      Further changes:
      
      * Test on a non-uniform grid.
      * Fix a bug (and memory leak) when binding to an element.
      * Order includes lexicographically.
      
      Co-authored-by: Carsten Gräser's avatarCarsten Gräser <graeser@math.fau.de>
      2b510f7c
  4. Oct 06, 2024
    • Carsten Gräser's avatar
      [hermite][cleanup][doc] Improve TransformedFiniteElementMixin · 3ff5ebe5
      Carsten Gräser authored
      
      
      * Extend documentation.
      * Move non-working 'example' into doxygen documenation.
      * Unify coding style.
      * Remove redundant calls to `resize()`.
      
      Co-authored-by: default avatarMaik Porrmann <maik.porrmann@tu-dresden.de>
      3ff5ebe5
    • Carsten Gräser's avatar
    • Carsten Gräser's avatar
      [hermite] Add FunctionalDescriptor class · 6932ab96
      Carsten Gräser authored
      This is needed to specify the nature of the DOFs
      of a Hermite-basis in order to identify those
      that need to be constrained for a certain boundary
      condition.
      6932ab96
    • Maik Porrmann's avatar
      [hermite] Add a Morley-basis · 2c678e2e
      Maik Porrmann authored and Carsten Gräser's avatar Carsten Gräser committed
      This implements the global basis for the
      nonconforming Morley-element. The implementation
      is based on `TransformedFiniteElementMixin`.
      This only provides the classical quadratic
      element in 2d and no higher-order or 3d extensions.
      
      Notice that the element is H^1- and H^2-nonconforming.
      2c678e2e
    • Maik Porrmann's avatar
      [hermite] Add a cubic Hermite-basis · cb6232ce
      Maik Porrmann authored and Carsten Gräser's avatar Carsten Gräser committed
      This uses the `TransformedFiniteElementMixin` helper
      class to imeplement the crucial local transformation
      needed to ensure global continuity of derivatives.
      The implementation provides:
      
      * The 1d cubic Hermite basis (aka cubic C1 splines)
      * The 2d cubic Hermite basis (aka Hermite triangle)
      * A version of the 2d cubic Hermite basis where
        the cubic element bubble is eliminated. This
        is known as 'reduced Hermite triangle'
        and provides one part of the mixed DKT-element.
      * The 3d cubic Hermite basis
      
      Notice that, except for the 1d case, these FE-spaces
      are one H^1 but not H^2 conforming.
      cb6232ce
    • Maik Porrmann's avatar
      [hermite] Add TransformedFiniteElementMixin class · 16af94aa
      Maik Porrmann authored and Carsten Gräser's avatar Carsten Gräser committed
      This CRTP-mixin class implements the `localBasis()`
      part of a `LocalFiniteElement` using a transformation
      of another basis. The implementation class is required
      to implement member functions `referenceLocalBasis()`
      and `transform()`. The former allows to define the
      local ansatz-space in terms of _some_ local basis
      based on the corresponding interface in dune-localfunctions.
      The target basis is then given by a set of linear
      combinations of those reference basis functions.
      The `transform()` methods implements the linear
      transformation indiced by those linear combinations.
      
      Since the same transformation is used for function
      values as well as any order of derivative, this
      __cannot__ be used to implement range transformation
      as e.g. Piola-transformations.
      16af94aa
  5. Oct 03, 2024
  6. Oct 02, 2024
  7. Sep 27, 2024
  8. Sep 25, 2024
  9. Sep 04, 2024
  10. Aug 10, 2024
  11. Aug 09, 2024
  12. Aug 07, 2024
  13. Jul 04, 2024
    • Carsten Gräser's avatar
      Merge branch 'cleanup/fix-stokes-pressure-sign' into 'master' · 51661c30
      Carsten Gräser authored
      [examples][doc] Fix sign of pressure in Stokes example
      
      See merge request !482
      51661c30
    • Carsten Gräser's avatar
      [doc] Adjust pressure sign for Stokes example in manual · 6c35d6c4
      Carsten Gräser authored
      This has been changed to the physically correct version in the
      example code, too.
      6c35d6c4
    • Carsten Gräser's avatar
      [examples] Fix sign of pressure in Stokes example · 06ee6c70
      Carsten Gräser authored
      While the exact sign is not important mathematically,
      the example used the physically wrong sign. Thus this
      is also uncommon in literature. The physically correct form
      of the Stokes equation is `-\Delta u + \grad p = f` which,
      after partial integration leads to a `-div(v)p` term in the
      weak form.
      
      This issues exists since the example was added. Maybe the
      initial version of the example was implemented based on the
      book by Braess. There, indeed the uncommon sign is used for
      the Stokes as well as for the Navier-Stokes equation.
      
      No surprisinly, the uncommon convention leads to confusing
      results. E.g. for the lid driven cavity flow, the pressure
      decreases towards the corner where the fluid is driven to.
      Similarly, for Poiseuille flow in a pipe the fluid is driven
      towards the high pressure side.
      06ee6c70
  14. Jun 29, 2024
Loading