Chi-Tech
mgd_01ab_init_two_grid_volume_frac.cc
Go to the documentation of this file.
2#include "utils/chi_timer.h"
6
7//============================================= assemble matrix A
9{
10 const auto& grid = *grid_ptr_;
11 const auto& sdm = *sdm_ptr_;
12
13 const size_t ncells = grid.local_cells.size();
14 VF_.resize(ncells);
15
16 int counter = 0;
17 for (const auto& cell : grid.local_cells)
18 {
19 const auto& cell_mapping = sdm.GetCellMapping(cell);
20 const auto qp_data = cell_mapping.MakeVolumetricQuadraturePointData();
21 const size_t num_nodes = cell_mapping.NumNodes();
22
23 VF_[counter].resize(num_nodes, 0.0);
24
25 for (size_t i=0; i < num_nodes; ++i)
26 {
27 double vol_frac_shape_i = 0.0;
28 for (size_t qp : qp_data.QuadraturePointIndices())
29 vol_frac_shape_i += qp_data.ShapeValue(i, qp) * qp_data.JxW(qp);
30 vol_frac_shape_i /= cell_mapping.CellVolume();
31 VF_[counter][i] = vol_frac_shape_i;
32 }//for i
33
34 counter++;
35 }//for cell
36
37}
std::vector< std::vector< double > > VF_
chi_mesh::MeshContinuumPtr grid_ptr_
chi_math::SDMPtr sdm_ptr_