1. 16 Aug, 2021 2 commits
    • Marcus Mohr's avatar
      Further extends capabilities of VTKOutput · 87190569
      Marcus Mohr authored
      We can now export all of the following functions
      - P[1,2]Function
      - P[1,2]VectorFunction
      - EdgeDoFFunction
      - DGFunction
      for all of the following value types
      - double
      - int32_t
      - int64_t
      Commit extends VTKOutputTest to check that this works and also
      makes some details of the implementations in VTK*Writer classes
      more consistent.
    • Marcus Mohr's avatar
      Upates and extends instantiations in Syncing.cpp · f81aa284
      Marcus Mohr authored
      Commit replace int / long by int32_t / int64_t and adds explicit
      instantiations for these two types where they were missing. Also
      we convert all real_t to double.
  2. 13 Aug, 2021 6 commits
    • Marcus Mohr's avatar
      Extending capabilities of VTKOutput · 23072e16
      Marcus Mohr authored
      This commit changes VTKOutput so that it export also functions of the
      following kind:
      - P1Function< int32_t >
      - P1Function< int64_t >
      and not only P1Function< double >.
      For this we replace the std::vector< P1Function< real_t > > in the class
      by an object of type FunctionMultiStore. This new class allows to store
      multiple functions from the same family, which can but need not differ in
      their value types.
    • Marcus Mohr's avatar
      Small update to VTKP1Writer · 07b9171d
      Marcus Mohr authored
      Opening and closing of <DataArray> element is now handled inside
      writeScalarFunction and writeVectorFunction.
    • Marcus Mohr's avatar
      Removes two leftover declarations from VTKOuput · 8b049d45
      Marcus Mohr authored
      After recent changes the following two function members of VTKOutput
      had no implementation anymore:
      - writeHeader()
      - writeFooterAndFile()
    • Marcus Mohr's avatar
      Relocates source files for some tests. · de94eed9
      Marcus Mohr authored
      Commit moves all tests in HyteG/tests/hyteg whose name starts with Function
      as well as teh FindMaxMinMagTest test into a new functions subdirectory.
    • Marcus Mohr's avatar
      Merge branch 'mohr/longGoodbye' into 'master' · d3ce92d1
      Marcus Mohr authored
      Changing integer types in explicit function instantiation
      See merge request !443
    • Marcus Mohr's avatar
      Changing integer types in explicit function instantiation · f2ad9a89
      Marcus Mohr authored
      Commit changes the data types when explicitely requesting instantion of
      - VertexDoFFunction
      - EdgeDoFFunction
      - P2Function
      from int and long to the more explicit and fully specified int32_t and
  3. 12 Aug, 2021 2 commits
  4. 11 Aug, 2021 3 commits
    • Marcus Mohr's avatar
      Changing template parameters for VectorToVectorOperator class · 1cc5c72c
      Marcus Mohr authored
      Instead of passing two template parameters
      - SrcVecFuncType
      - DstVecFuncType
      we now use three
      - ValueType
      - SrcVecFuncKind
      - DstVecFuncKind
      This influences the derived classes, so e.g. we now have
      typedef VectorMassOperator< real_t,
                                  P1ConstantMassOperator >
      instead of the previous
      typedef VectorMassOperator< P1VectorFunction< real_t >,
                                  P1ConstantMassOperator >
    • Marcus Mohr's avatar
    • Marcus Mohr's avatar
      Implements PETScVector conversions for P[1,2]VectorFunction · c0a0ed75
      Marcus Mohr authored
      In detail we can now call the following free functions using objects
      of type P[1,2]VectorFunction
      - createVectorFromFunction()
      - createFunctionFromVector()
      - applyDirichletBC()
      Commit also adds a simple VectorFunctionPetscTest that checks that
      conversion to and from works.
      We also rename the first argument of createFunctionFromVector() in
      PETScVector from src to dst, as this seems more self-explanatory.
  5. 09 Aug, 2021 9 commits
    • Marcus Mohr's avatar
      Merge branch 'mohr/enumerator-mc' into 'master' · 464922c5
      Marcus Mohr authored
      Implements enumerate() for Vector and BlockFunctions
      See merge request !441
    • Marcus Mohr's avatar
      Fixes to make BlockFunction::enumerate() compile in all cases · d61d9b0e
      Marcus Mohr authored
      - makes EdgeDoFFunction::enumerate() public
      - adds inclusion of FunctionProperties.hpp in BlockFunction.hpp
      - performs a hotfix in DGFunction class, as there was an inconsistency
        between uint_t and ValueType (low level implementation in DGVertex,
        DGEdge and DGFace expects to receive uint_t, but was passed ValueType,
        which fails e.g. for double)
    • Marcus Mohr's avatar
      Implements member function BlockFunction::enumerate() · 0f899882
      Marcus Mohr authored
      In order to implement enumerate for the BlockFunction class, we needed
      to also implement enumerate( level, offset ) in the GenericFunction and
      the FunctionWrapper class.
      Commit extends BlockFunctionBasicTest to check enumeration works for the
      case of a P2P1TaylorHoodBlockFunction.
    • Marcus Mohr's avatar
      Adds BlockFunction::getNumberOfLocalDoFs() · 8c97483a
      Marcus Mohr authored
      Commit adds a new member function to the BlockFunction class and a new
      specialisation for P2P1TaylorHoodBlockFunctionTag of the numberOfLocalDoFs
      free function. The latter is used to test the new member function in
    • Marcus Mohr's avatar
      Implements CSFVectorFunction::enumerate() member functions · 86dd786e
      Marcus Mohr authored
      The commit brings two versions of enumerate() for the CFSVectorFunction
      class. The first one performs a global enumeration which implies MPI
      communication. The other version just performs local operations and
      receives an offset for starting the indexing.
      We extend VectorFunctionBasicTest to test enumerating.
      In order to get enumerate working for P1VectorFunction<int>, the commit
      makes enumerate() with offset public in VertexDoFFunction.
    • Marcus Mohr's avatar
      Merge branch 'mohr/getMaxMinMag' into 'master' · d87756a5
      Marcus Mohr authored
      Extension of P2Function::getMaxValue() and others
      See merge request !440
    • Marcus Mohr's avatar
      Merge branch 'mohr/vtkRefactoring-mc' into 'master' · 2556bac1
      Marcus Mohr authored
      Refactoring of VTKOutput class
      See merge request !439
    • Marcus Mohr's avatar
      Extension of P2Function::getMaxValue() and others · 6fb58a37
      Marcus Mohr authored
      The three member functions
      - getMaxValue()
      - getMinValue()
      - getMaxMagnitude()
      of the P2Function class now allow to pass a bool mpiReduce. If this
      is false no communication happens and each process returns its local
      - The interface is now consistenct with that of VertexDoFFunction
        and EdgeDoFFunctions.
      - Change fixes the problem that, so far, we could not instantiate
      Commit additionally changes P2VectorFunction::getMaxComponentMagnitude()
      so that only one MPI communication step instead of dim is required.
      It also extends the VectorFunctionBasicTest to check that instantiation
    • Dominik Thoennes's avatar
      Merge branch 'thoennes/add-gcc-11' into 'master' · 5d5a5038
      Dominik Thoennes authored
      add gcc 11 to CI
      See merge request !435
  6. 06 Aug, 2021 4 commits
    • Marcus Mohr's avatar
      Reduces datatype hardcoding in VTK writer classes · 25f7841b
      Marcus Mohr authored
      Occurences of double and "Float64" get replaced by real_t and
      typeToString< real_t >().
    • Marcus Mohr's avatar
      Further unburdening of VTKOutput class · e1a18a8f
      Marcus Mohr authored
      The private methods
      - void writeCells2D()
      - void writeCells3D()
      - writePointsForMicroVertices()
      - writePointsForMicroEdges()
      are now members of a new VTKMeshWriter friend class.
      The private methods
      - writeEdgeDoFs()
      - writeEdgeDoFData()
      are now members of a new VTKEdgeDoFWriter friend class.
      Makes enumeration vtk::DataFormat scoped for forward declarations
    • Marcus Mohr's avatar
      Converts VTKOutput::DoFType to vtk::DoFType · a1fd1614
      Marcus Mohr authored
      Having DoFType as private enum inside VTKOuput will not work together
      smoothly with the VTK*Writer friend classes when we need to pass a
      DoFType. E.g. we cannot forward declare it. So the commit makes it an
      enum inside the vtk namespace instead.
    • Marcus Mohr's avatar
      Starts disentangling of VTKOutput class · 261fd4a5
      Marcus Mohr authored
      Commits places the following free functions in the new file VTKHelpers.hpp
      - writeXMLHeader()
      - writeXMLFooter()
      - writePieceHeader()
      - writePieceFooter()
      They now belong to the namespace vtk.
      We also convert VTKOutput::openDataElement() into a free function, placed
      in the same file and namespace as above.
      Additionally we remove the class enum VTKOutput::VTK_DATA_FORMAT and replace
      it by vtk::DataFormat.
      The private methods
      - writeP1()
      - writeVertexDoFData()
      - writeP1VectorFunctionData()
      are now members of a new VTKP1Writer friend class.
      The private methods
      - writeP2()
      - writeSingleP2Function()
      - writeSingleP2VectorFunction()
      are now members of a new VTKP2Writer friend class.
      The private method
      - writeDGDoF()
      is now a member of a new VTKDGDoFWriter friend class.
      Finally we modify the VTKOutputTest so that some data are actually written
      in base64 encoded binary
  7. 04 Aug, 2021 2 commits
  8. 30 Jul, 2021 1 commit
  9. 29 Jul, 2021 1 commit
  10. 28 Jul, 2021 2 commits
  11. 27 Jul, 2021 2 commits
    • Marcus Mohr's avatar
      Implements integrate() for P1FormHyTeG · 6dcd3f53
      Marcus Mohr authored
      The new HFG forms do not sport an integrate() method. Although they have
      an integrateRow0() method which does the same thing. However, for replacing
      some of the deprecated old forms integrate() is required. Since the manual
      HyTeG forms do no offer either integrate() or integrateRow0() this commit
      does a transitional implementation based in integrateAll() which is of course
      slow. Cleanup is definitely required.
    • Marcus Mohr's avatar
      Removes some deprecated HyTeG forms, see issue #153 · 5eec37d6
      Marcus Mohr authored
      The commit removes the following forms and associated tests:
      - P1FormMass
      - P1FormLaplace
      - P1FormEpsilon
      - P2FormEpsilon
      Where forms appeared in operator typedefs and instantiations
      they get replaced by forms generated with HFG.
  12. 23 Jul, 2021 1 commit
  13. 17 Jul, 2021 1 commit
  14. 16 Jul, 2021 2 commits
    • Marcus Mohr's avatar
      Adds three classes for P2 Epsilon Operators · 951aab54
      Marcus Mohr authored
      The new classes are children of the VectorToVectorOperator and called
      1. P2ConstantEpsilonOperator
      2. P2ElementwiseAffineEpsilonOperator
      3. P2ElementwiseBlendingEpsilonOperator
      Operator 1 uses the FEniCS forms p2_(tet_)stokes_epsilon(_tet) while
      the other use corresponding HyTeG forms. These are the var variants
      and, thus, need a callback function for the variable vicosity. This
      is to be passed to the constructor of the operators. They will use
      it to generate objects for the sub-forms and pass them to the
      constructors of their Elementwise sub-operators.
      Additionally commit implements a P2ConstantFullViscousOperator.
      The latter is based on FEniCS forms. So it does support neither
      blending nor variable viscosity.
      Adds a ViscousOperatorsTest that checks generation of objects of the
      four new operator types for a 2D and a 3D setting.
    • Marcus Mohr's avatar
      Adds a "full stokes" form for compressible mantle convection models · 8944a803
      Marcus Mohr authored
      Commit adds
      - a FEniCS ufl file for a pseudo 2D version, i.e. using 1/3 as factor
        instead of 1/2
      - a corresponding ufl file for 3D
      - and the generated form files for P1 and P2 elements
      Updates ufc_traits.hpp, as we need additional template specialisations
      in this file for the two new p[12]_tet_stokes_full_tet forms.
  15. 28 Jun, 2021 1 commit
  16. 24 Jun, 2021 1 commit