Skip to content
Snippets Groups Projects
Select Git revision
  • 43c92df9a5fd19bb2212e7952dfc51d15761daaf
  • master default protected
  • devel
  • MC/hide_eigen_sol
  • compare_at_gauss_points
  • mixed_interface_fix
  • detect-gmsh-api-version
  • MC/mpi_support
  • MC/volsrcs
  • fix-gmsh-master
  • find-gmsh
  • MC/hipify
  • v0.3.0
  • v0.2.0
  • v0.1.0
15 results

entity_data.cpp

Blame
  • entity_data.cpp 1.49 KiB
    #include "entity_data.h"
    
    entity_data_gpu::entity_data_gpu()
    {
    }
    
    entity_data_gpu::entity_data_gpu(const entity_data_cpu& ed)
    {
        g_order = ed.g_order;
        a_order = ed.a_order;
    
        num_all_elems = num_elems_all_orientations(ed);
    
        std::vector<int32_t> eo;
        eo.reserve(num_all_elems);
        for (int32_t iO = 0; iO < ed.num_orientations; iO++)
        {
            for (size_t iT = 0; iT < ed.num_elems[iO]; iT++)
                eo.push_back(iO);
        }
        assert(eo.size() == num_all_elems);
        element_orientation.copyin(eo.data(), eo.size());
    
        num_bf = ed.num_bf;
        dof_base = ed.dof_base;
        flux_base = ed.flux_base;
        
        auto rows = ed.num_bf*ed.num_orientations;
        auto cols = ed.num_bf*3;
        MatxRM<double> dm = MatxRM<double>::Zero(rows, cols);
        for (size_t i = 0; i < ed.num_orientations; i++)
        {
            dm.block(i*num_bf, 0, num_bf, num_bf) =
                ed.differentiation_matrices.block(i*num_bf, 0, num_bf, num_bf).transpose();
            
            dm.block(i*num_bf, num_bf, num_bf, num_bf) =
                ed.differentiation_matrices.block(i*num_bf, num_bf, num_bf, num_bf).transpose();
    
            dm.block(i*num_bf, 2*num_bf, num_bf, num_bf) =
                ed.differentiation_matrices.block(i*num_bf, 2*num_bf, num_bf, num_bf).transpose();
        }
    
        differentiation_matrices.init(dm.data(), dm.size());
    
        jacobians.copyin(ed.jacobians.data(), ed.jacobians.size());
    
        cell_determinants.copyin(ed.cell_determinants.data(), ed.cell_determinants.size());
    
    }
    
    entity_data_gpu::~entity_data_gpu()
    {
    }