20 template <
typename scalar>
27 const int ensemble_size = ET::size;
30 dirichlet_number = pbl.
duBCs.size();
33 std::vector<std::vector<global_ordinal_type>> bcNodes = {};
35 for (
auto i = 0; i < dirichlet_number; ++i)
37 std::vector<global_ordinal_type> tmpMyBcNodes = {};
38 std::vector<global_ordinal_type> myBcNodes = {};
40 for (
auto j = 0; j < pbl.
duBCs[i]->nodes.size(); ++j)
41 tmpMyBcNodes.push_back(pbl.
duBCs[i]->nodes[j]->row);
43 std::sort(tmpMyBcNodes.begin(), tmpMyBcNodes.end());
45 if (tmpMyBcNodes.size() >= 1)
46 myBcNodes.push_back(tmpMyBcNodes[0]);
48 for (
auto ii = 1; ii < tmpMyBcNodes.size(); ++ii)
49 if (tmpMyBcNodes[ii] != tmpMyBcNodes[ii - 1])
50 myBcNodes.push_back(tmpMyBcNodes[ii]);
52 bcNodes.push_back(myBcNodes);
53 if (maxNumNodesPerBC < myBcNodes.size())
54 maxNumNodesPerBC = myBcNodes.size();
59 dirichlet_nodesList = Kokkos::View<int **, Kokkos::LayoutRight>(
"R", dirichlet_number, dirichlet_nodes + maxNumNodesPerBC);
61 for (
auto i = 0; i < dirichlet_number; ++i)
63 dirichlet_nodesList(i, dirichlet_size) = bcNodes[i].size();
64 for (
auto j = 0; j < bcNodes[i].size(); ++j)
66 dirichlet_nodesList(i, dirichlet_nodes + j) = bcNodes[i][j];
72 dirichlet_values = 1 + numDPN;
73 dirichlet_values_list = Kokkos::View<scalar ***, Kokkos::LayoutRight>(
"R", dirichlet_number, 1, 1 + 2 * numDPN);
74 for (
auto i = 0; i < dirichlet_number; ++i)
76 dirichlet_values_list(i, 0, dirichlet_time) = 0.;
77 for (
auto j = 0; j < numDPN; ++j)
78 if (pbl.
duBCs[i]->which_dof[j])
79 dirichlet_values_list(i, 0, dirichlet_dofs + j) = 1;
81 dirichlet_values_list(i, 0, dirichlet_dofs + j) = 0;
83 for (
int j = 0; j < ensemble_size; ++j)
85 ET::coeff(dirichlet_values_list(i, 0, dirichlet_values + 0), j) = pbl.
duBCs[i]->x_values[j];
86 ET::coeff(dirichlet_values_list(i, 0, dirichlet_values + 1), j) = pbl.
duBCs[i]->y_values[j];
87 ET::coeff(dirichlet_values_list(i, 0, dirichlet_values + 2), j) = pbl.
duBCs[i]->z_values[j];
89 ET::coeff(dirichlet_values_list(i, 0, dirichlet_values + 3), j) = pbl.
duBCs[i]->T_values[j];