Skip to content
Snippets Groups Projects
Select Git revision
  • 6d834f31f857cee9b8165d7fe788e556582851cc
  • master default protected
  • NewDistributionGmshFWI
  • parametrizationSimpleWave
  • tuto_obstacle
  • everything
  • cleanup_configuuration_mesh
  • fix
  • source_estimation
  • unique_ptr
  • SobolevDirectionalFilter
  • OT
  • newPhysics
  • SimultaneousFrequency
  • SobolevDistance
  • BonesImaging
  • MultiParameter
  • UpdateAntho
  • v2.0
  • v1.0
20 results

updater.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()
    {
    }