Skip to content
Snippets Groups Projects
Select Git revision
  • 77f95012d989b276bc3144f3f3eb77bd0e0923ae
  • develop default protected
  • save_clemence
  • feature/composite-scheme-other-fluxes
  • feature/advection
  • origin/stage/bouguettaia
  • feature/local-dt-fsi
  • feature/variational-hydro
  • feature/gmsh-reader
  • feature/reconstruction
  • feature/kinetic-schemes
  • feature/composite-scheme-sources
  • feature/serraille
  • feature/composite-scheme
  • hyperplastic
  • feature/polynomials
  • feature/gks
  • feature/implicit-solver-o2
  • feature/coupling_module
  • feature/implicit-solver
  • feature/merge-local-dt-fsi
  • v0.5.0 protected
  • v0.4.1 protected
  • v0.4.0 protected
  • v0.3.0 protected
  • v0.2.0 protected
  • v0.1.0 protected
  • Kidder
  • v0.0.4 protected
  • v0.0.3 protected
  • v0.0.2 protected
  • v0 protected
  • v0.0.1 protected
33 results

CRSMatrix.hpp

Blame
  • WriterBase.cpp 6.81 KiB
    #include <output/WriterBase.hpp>
    
    #include <mesh/IMesh.hpp>
    #include <output/OutputNamedItemValueSet.hpp>
    #include <scheme/DiscreteFunctionP0.hpp>
    #include <scheme/IDiscreteFunction.hpp>
    #include <scheme/IDiscreteFunctionDescriptor.hpp>
    #include <utils/Exceptions.hpp>
    
    template <size_t Dimension, typename DataType>
    void
    WriterBase::registerDiscreteFunctionP0(const std::string& name,
                                           const IDiscreteFunction& i_discrete_function,
                                           OutputNamedItemValueSet& named_item_value_set)
    {
      const DiscreteFunctionP0<Dimension, DataType>& discrete_function =
        dynamic_cast<const DiscreteFunctionP0<Dimension, DataType>&>(i_discrete_function);
      named_item_value_set.add(NamedItemValue{name, discrete_function.cellValues()});
    }
    
    template <size_t Dimension>
    void
    WriterBase::registerDiscreteFunctionP0(const std::string& name,
                                           const IDiscreteFunction& i_discrete_function,
                                           OutputNamedItemValueSet& named_item_value_set)
    {
      const ASTNodeDataType& data_type = i_discrete_function.dataType();
      switch (data_type) {
      case ASTNodeDataType::bool_t: {
        registerDiscreteFunctionP0<Dimension, bool>(name, i_discrete_function, named_item_value_set);
        break;
      }
      case ASTNodeDataType::unsigned_int_t: {
        registerDiscreteFunctionP0<Dimension, uint64_t>(name, i_discrete_function, named_item_value_set);
        break;
      }
      case ASTNodeDataType::int_t: {
        registerDiscreteFunctionP0<Dimension, int64_t>(name, i_discrete_function, named_item_value_set);
        break;
      }
      case ASTNodeDataType::double_t: {
        registerDiscreteFunctionP0<Dimension, double>(name, i_discrete_function, named_item_value_set);
        break;
      }
      case ASTNodeDataType::vector_t: {
        switch (data_type.dimension()) {
        case 1: {
          registerDiscreteFunctionP0<Dimension, TinyVector<1, double>>(name, i_discrete_function, named_item_value_set);
          break;
        }
        case 2: {
          registerDiscreteFunctionP0<Dimension, TinyVector<2, double>>(name, i_discrete_function, named_item_value_set);
          break;
        }
        case 3: {
          registerDiscreteFunctionP0<Dimension, TinyVector<3, double>>(name, i_discrete_function, named_item_value_set);
          break;
        }
        default: {
          throw UnexpectedError("invalid vector dimension");
        }
        }
        break;
      }
      case ASTNodeDataType::matrix_t: {
        Assert(data_type.nbRows() == data_type.nbColumns(), "invalid matrix dimensions");
        switch (data_type.nbRows()) {
        case 1: {
          registerDiscreteFunctionP0<Dimension, TinyMatrix<1, double>>(name, i_discrete_function, named_item_value_set);
          break;