1. 16 May, 2019 1 commit
  2. 15 May, 2019 2 commits
  3. 13 May, 2019 1 commit
    • Andreas Dedner's avatar
      [!308] add restrict prolong and vectorial bfs to lfe space · 8bbdd641
      Andreas Dedner authored
      Merge branch 'bugfix/LagrangeSpaceRangeGT1' into 'master'
      
      ref:dune-fem/dune-fem Note: requires the
      feature/lagrangeinterpolate_with_general_container branch of
      dune-localfunctions
      
      This merge request adds the following features to the lfe spaces:
      
      -   use of vectorial bfe if the underlying lfe is scalar. Note that at the
          moment vector valued spaces like RT are not available as (V)^r spaces
      
      -   generic restrict/prolong operators which are based on the underlying local
          interpolation. Should work in general but some tests i.e. with an RT space
          still need to be added. Note that this required a new method on the
          restrict/prolong operators restrictFinalize which is called after
          restrictLocal has been called for all children on a given father. This
          approach assumes that one father element is completely finished before
          another coarse element is considered - if this does not hold the
          construction will fail. The LocalRP operators do not have a default
          interface class so the restrictFinalize method can not be default
          implemented.
      
      This MR also contains some other minor changes (which should not influence any
      code) which were required to make dune-fem play nicely with
      dune-localfunction.
      
      The restrction/prolongation is now implemented as follows:
      
      For the prolongation the interpolation on the children is directly used
      (without setting up a matrix), i.e., denoting with \$G_{CF}\$ the
      geometryInFather:
      
           u_C = I_C(u_F\circ G_{CF})
      
      For the restriction I want to do the same, i.e.,
      
            u_F = I_F(u_{\sum C}\circ (G_{CF})^{-1})
      
      where \$`\sum C`\$ denotes the local function which is equal to \$u_C\$ on the
      child \$C\$.
      
      A caveat is when \$I_F\$ requires an evaluation at a point on the boundary
      between children, i.e., in the Lagrange case at a vertex shared by two
      children. This will lead to problem when simply implementing this in the
      prolongLocal method using:
      
            u_F = \sum_C I_F(u_C\circ (G_{CF})^{-1})
      
      where \$u_C\$ is extended by zero outside of \$C\$. This leads to a doubling
      of the dof at the shared vertex. To avoid this problem the actual
      interpolation is performed in a new method restrictFinalize and a suitable
      weighted value is returned at the shared points.
      
      See merge request [!308]
      
        [!308]: gitlab.dune-project.org/dune-fem/dune-fem/merge_requests/308
      8bbdd641
  4. 09 May, 2019 2 commits
  5. 02 May, 2019 2 commits
  6. 01 May, 2019 2 commits
  7. 30 Apr, 2019 2 commits
  8. 27 Apr, 2019 3 commits
  9. 26 Apr, 2019 2 commits
  10. 25 Apr, 2019 3 commits
  11. 24 Apr, 2019 8 commits
    • Andreas Dedner's avatar
    • Andreas Dedner's avatar
      added a standard constructor (gv,interface,direction) to the LocalFESpace · f7a0f4fb
      Andreas Dedner authored
      The key is fixed to `Key(1)` which is perhaps not such a good idea -
      perhaps this should be part of the Traits?
      f7a0f4fb
    • Andreas Dedner's avatar
      added hessian method to LFE shape function set · a5fe4687
      Andreas Dedner authored
      bug fix
      
      bug fix
      
      fix the lfe space restrict prolong
      
      need Traits class in LFConverter so that it can be correctly passed into
      dune-localfunction's interpolate methods
      
      final clean up
      a5fe4687
    • Andreas Dedner's avatar
      `hasSingleGeometryType` is only a member on the `AdaptiveIS` so need to get · 2460b27f
      Andreas Dedner authored
      the property directly from the Grid capabilities in the `IndexSetDofMapper`
      
      don't use the `LagrangeLocalDofMapping` in the LFE space
      2460b27f
    • Andreas Dedner's avatar
      completed implementation of lfe restrict prolong - not working yet · 6979c466
      Andreas Dedner authored
      tried an approach to fix the generic restriction.
      restrictFinalize is not called after the data on the father has been
      computed. Still doesn't quite work....
      
      LocalRestrictProlong does not have an implemented default class so the new
         prolongFinalize( LocalFunctionOnFather )
      needs to be implemented (empty) in each specialization. I probably missed some
      6979c466
    • Robert K's avatar
      [cleanup][WANT_GRAPE] probably not used anymore. · 900ae801
      Robert K authored
      white space change.
      900ae801
    • Andreas Dedner's avatar
      Issue in dof manager when using LagrangeSpace with second order · c8e23903
      Andreas Dedner authored
      Can be seen by running ./lagrangeadapt
      in debug mode, error is
      
      dune/fem/space/common/dofmanager.hh:395: void Dune::Fem::ManagedDofStorageImplementation<GridImp, MapperType, DofArrayType>::dofCompress(bool) [with GridImp = Dune::ALUGrid<2, 2, (Dune::ALUGridElementType)0u, (Dune::ALUGridRefinementType)0u>; MapperType = Dune::Fem::IndexSetDofMapper<Dune::Fem::AdaptiveLeafGridPart<Dune::ALUGrid<2, 2, (Dune::ALUGridElementType)0u, (Dune::ALUGridRefinementType)0u>, (Dune::PartitionIteratorType)4u, false>, Dune::Fem::DefaultLocalDofMapping<Dune::Fem::AdaptiveLeafGridPart<Dune::ALUGrid<2, 2, (Dune::ALUGridElementType)0u, (Dune::ALUGridRefinementType)0u>, (Dune::PartitionIteratorType)4u, false> > >; DofArrayType = Dune::Fem::MutableBlockVector<Dune::Fem::DynamicArray<double, Dune::Fem::PODArrayAllocator<double> >, 1u>]: Assertion `newIndex < nSize' failed.
      
      The following issue is fixed here:
      
      the lfe spaces (e.g. the LagrangeSpace) is always hybrid, e.g., for dimension=2,
      polOrder=2 it will return 1 dof for (cube,0). The `IndexSetDofMapper` will
      therefore always create 3 blocks (one for vertices, for edges, and for (cube,0)).
      In the case of an `AdaptiveDofMapper` this leads to three queries
      concerning holes which is passed on to the `AdaptiveIndexSet` which only
      takes the codimension of the geometry type into account. So even on a
      triangular grid it will return the number of holes for codim=0 for the
      `(cube,0)` block which leads to wrong indices being computed.
      
      This fix simply checks if a geometry type that contains dofs is active in
      the index set - the `AdaptiveLeafIndexSet` only works in this case with a
      single geometry type anyway (see
         `assert( hasSingleGeometryType || geomTypes( codim ).size() == 1 )`
      in method `oldIndex` for example.
      
      added the log message to describe the previous fix
      c8e23903
    • Andreas Dedner's avatar
      change dune/fem/space/test/test-spaceinterpolation.cc to demonstrate the · 1a4564f9
      Andreas Dedner authored
      issue with the interpolate method on the LagrangeSpace (based on
      dune-localfunction) when used with dimRange>1
      
      get the LFESpaces to work correctly with dimR>1
      - still need to make sure RT,BDM, etc are doing he right thing
      - prolongation and restriction is not yet working (error in dof manager)
      
      remove some debug output
      
      fix an issue with the correct 'block index' in the lfe space. Now RT seems
      to work fine again
      1a4564f9
  12. 11 Apr, 2019 3 commits
  13. 05 Apr, 2019 3 commits
  14. 03 Apr, 2019 2 commits
  15. 22 Mar, 2019 1 commit
  16. 17 Mar, 2019 3 commits