Skip to content
Snippets Groups Projects
Commit 837eca64 authored by Axelle Drouard's avatar Axelle Drouard
Browse files

Fix node symmetry BC

parent ef580441
No related branches found
No related tags found
No related merge requests found
...@@ -842,6 +842,7 @@ class EulerKineticSolverMultiD ...@@ -842,6 +842,7 @@ class EulerKineticSolverMultiD
const auto& node_local_numbers_in_their_cells = p_mesh->connectivity().nodeLocalNumbersInTheirCells(); const auto& node_local_numbers_in_their_cells = p_mesh->connectivity().nodeLocalNumbersInTheirCells();
const auto& node_to_cell_matrix = p_mesh->connectivity().nodeToCellMatrix(); const auto& node_to_cell_matrix = p_mesh->connectivity().nodeToCellMatrix();
const NodeValuePerCell<const TinyVector<Dimension>> njr = MeshDataManager::instance().getMeshData(m_mesh).njr(); const NodeValuePerCell<const TinyVector<Dimension>> njr = MeshDataManager::instance().getMeshData(m_mesh).njr();
const NodeValuePerCell<const TinyVector<Dimension>> Cjr = MeshDataManager::instance().getMeshData(m_mesh).Cjr();
TinyVector<MeshType::Dimension> inv_S = zero; TinyVector<MeshType::Dimension> inv_S = zero;
for (size_t d = 0; d < MeshType::Dimension; ++d) { for (size_t d = 0; d < MeshType::Dimension; ++d) {
...@@ -867,12 +868,14 @@ class EulerKineticSolverMultiD ...@@ -867,12 +868,14 @@ class EulerKineticSolverMultiD
const NodeId node_id = node_list[i_node]; const NodeId node_id = node_list[i_node];
const auto& node_to_cell = node_to_cell_matrix[node_id]; const auto& node_to_cell = node_to_cell_matrix[node_id];
const auto& node_local_number_in_its_cell = node_local_numbers_in_their_cells.itemArray(node_id); const auto& node_local_number_in_its_cell = node_local_numbers_in_their_cells.itemArray(node_id);
double sum_Cjr = 0;
for (size_t i_cell = 0; i_cell < node_to_cell.size(); ++i_cell) { for (size_t i_cell = 0; i_cell < node_to_cell.size(); ++i_cell) {
const CellId cell_id = node_to_cell[i_cell]; const CellId cell_id = node_to_cell[i_cell];
const size_t i_node_cell = node_local_number_in_its_cell[i_cell]; const size_t i_node_cell = node_local_number_in_its_cell[i_cell];
nr[node_id] += njr(cell_id, i_node_cell); nr[node_id] += Cjr(cell_id, i_node_cell);
sum_Cjr += sqrt(dot(Cjr(cell_id, i_node_cell), Cjr(cell_id, i_node_cell)));
} }
nr[node_id] = 1. / sqrt(dot(nr[node_id], nr[node_id])) * nr[node_id]; nr[node_id] = 1. / sqrt(dot(nr[node_id], nr[node_id])) * nr[node_id];
auto nxn = tensorProduct(nr[node_id], nr[node_id]); auto nxn = tensorProduct(nr[node_id], nr[node_id]);
...@@ -953,11 +956,14 @@ class EulerKineticSolverMultiD ...@@ -953,11 +956,14 @@ class EulerKineticSolverMultiD
const auto& node_to_cell = node_to_cell_matrix[node_id]; const auto& node_to_cell = node_to_cell_matrix[node_id];
const auto& node_local_number_in_its_cell = node_local_numbers_in_their_cells.itemArray(node_id); const auto& node_local_number_in_its_cell = node_local_numbers_in_their_cells.itemArray(node_id);
double sum_Cjr = 0;
for (size_t i_cell = 0; i_cell < node_to_cell.size(); ++i_cell) { for (size_t i_cell = 0; i_cell < node_to_cell.size(); ++i_cell) {
const CellId cell_id = node_to_cell[i_cell]; const CellId cell_id = node_to_cell[i_cell];
const size_t i_node_cell = node_local_number_in_its_cell[i_cell]; const size_t i_node_cell = node_local_number_in_its_cell[i_cell];
nr[node_id] += njr(cell_id, i_node_cell); nr[node_id] += Cjr(cell_id, i_node_cell);
sum_Cjr += sqrt(dot(Cjr(cell_id, i_node_cell), Cjr(cell_id, i_node_cell)));
} }
nr[node_id] = 1. / sqrt(dot(nr[node_id], nr[node_id])) * nr[node_id]; nr[node_id] = 1. / sqrt(dot(nr[node_id], nr[node_id])) * nr[node_id];
auto nxn = tensorProduct(nr[node_id], nr[node_id]); auto nxn = tensorProduct(nr[node_id], nr[node_id]);
...@@ -1054,6 +1060,7 @@ class EulerKineticSolverMultiD ...@@ -1054,6 +1060,7 @@ class EulerKineticSolverMultiD
const auto& node_to_cell_matrix = p_mesh->connectivity().nodeToCellMatrix(); const auto& node_to_cell_matrix = p_mesh->connectivity().nodeToCellMatrix();
const auto& node_to_face_matrix = p_mesh->connectivity().nodeToFaceMatrix(); const auto& node_to_face_matrix = p_mesh->connectivity().nodeToFaceMatrix();
const NodeValuePerCell<const TinyVector<Dimension>> njr = MeshDataManager::instance().getMeshData(m_mesh).njr(); const NodeValuePerCell<const TinyVector<Dimension>> njr = MeshDataManager::instance().getMeshData(m_mesh).njr();
const NodeValuePerCell<const TinyVector<Dimension>> Cjr = MeshDataManager::instance().getMeshData(m_mesh).Cjr();
TinyVector<MeshType::Dimension> inv_S = zero; TinyVector<MeshType::Dimension> inv_S = zero;
for (size_t d = 0; d < MeshType::Dimension; ++d) { for (size_t d = 0; d < MeshType::Dimension; ++d) {
...@@ -1180,11 +1187,14 @@ class EulerKineticSolverMultiD ...@@ -1180,11 +1187,14 @@ class EulerKineticSolverMultiD
const auto& node_to_cell = node_to_cell_matrix[node_id]; const auto& node_to_cell = node_to_cell_matrix[node_id];
const auto& node_local_number_in_its_cell = node_local_numbers_in_their_cells.itemArray(node_id); const auto& node_local_number_in_its_cell = node_local_numbers_in_their_cells.itemArray(node_id);
double sum_Cjr = 0;
for (size_t i_cell = 0; i_cell < node_to_cell.size(); ++i_cell) { for (size_t i_cell = 0; i_cell < node_to_cell.size(); ++i_cell) {
const CellId cell_id = node_to_cell[i_cell]; const CellId cell_id = node_to_cell[i_cell];
const size_t i_node_cell = node_local_number_in_its_cell[i_cell]; const size_t i_node_cell = node_local_number_in_its_cell[i_cell];
nr[node_id] += njr(cell_id, i_node_cell); nr[node_id] += Cjr(cell_id, i_node_cell);
sum_Cjr += sqrt(dot(Cjr(cell_id, i_node_cell), Cjr(cell_id, i_node_cell)));
} }
nr[node_id] = 1. / sqrt(dot(nr[node_id], nr[node_id])) * nr[node_id]; nr[node_id] = 1. / sqrt(dot(nr[node_id], nr[node_id])) * nr[node_id];
auto nxn = tensorProduct(nr[node_id], nr[node_id]); auto nxn = tensorProduct(nr[node_id], nr[node_id]);
...@@ -1513,23 +1523,22 @@ class EulerKineticSolverMultiD ...@@ -1513,23 +1523,22 @@ class EulerKineticSolverMultiD
const CellValue<const TinyVector<Dimension>> rho_u = compute_PFn<TinyVector<Dimension>>(Fn_rho_u); const CellValue<const TinyVector<Dimension>> rho_u = compute_PFn<TinyVector<Dimension>>(Fn_rho_u);
const CellValue<const double> rho_E = compute_PFn<double>(Fn_rho_E); const CellValue<const double> rho_E = compute_PFn<double>(Fn_rho_E);
// NodeArray<double> Fr_rho = compute_Flux1_glace<double>(Fn_rho, is_boundary_node); NodeArray<double> Fr_rho = compute_Flux1_glace<double>(Fn_rho, is_boundary_node);
// NodeArray<TinyVector<Dimension>> Fr_rho_u = compute_Flux1_glace<TinyVector<Dimension>>(Fn_rho_u, NodeArray<TinyVector<Dimension>> Fr_rho_u = compute_Flux1_glace<TinyVector<Dimension>>(Fn_rho_u, is_boundary_node);
// is_boundary_node); NodeArray<double> Fr_rho_E = compute_Flux1_glace<double>(Fn_rho_E, NodeArray<double> Fr_rho_E = compute_Flux1_glace<double>(Fn_rho_E, is_boundary_node);
// is_boundary_node);
NodeArray<double> Fr_rho = compute_Flux1_eucclhyd<double>(Fn_rho, is_boundary_node); // NodeArray<double> Fr_rho = compute_Flux1_eucclhyd<double>(Fn_rho, is_boundary_node);
NodeArray<TinyVector<Dimension>> Fr_rho_u = // NodeArray<TinyVector<Dimension>> Fr_rho_u =
compute_Flux1_eucclhyd<TinyVector<Dimension>>(Fn_rho_u, is_boundary_node); // compute_Flux1_eucclhyd<TinyVector<Dimension>>(Fn_rho_u, is_boundary_node);
NodeArray<double> Fr_rho_E = compute_Flux1_eucclhyd<double>(Fn_rho_E, is_boundary_node); // NodeArray<double> Fr_rho_E = compute_Flux1_eucclhyd<double>(Fn_rho_E, is_boundary_node);
// FaceArray<double> Fl_rho = compute_Flux1_face<double>(Fn_rho); // FaceArray<double> Fl_rho = compute_Flux1_face<double>(Fn_rho);
// FaceArray<TinyVector<Dimension>> Fl_rho_u = compute_Flux1_face<TinyVector<Dimension>>(Fn_rho_u); // FaceArray<TinyVector<Dimension>> Fl_rho_u = compute_Flux1_face<TinyVector<Dimension>>(Fn_rho_u);
// FaceArray<double> Fl_rho_E = compute_Flux1_face<double>(Fn_rho_E); // FaceArray<double> Fl_rho_E = compute_Flux1_face<double>(Fn_rho_E);
// apply_face_bc(Fl_rho, Fl_rho_u, Fl_rho_E, rho, rho_u, rho_E, Fn_rho, Fn_rho_u, Fn_rho_E, bc_list); // apply_face_bc(Fl_rho, Fl_rho_u, Fl_rho_E, rho, rho_u, rho_E, Fn_rho, Fn_rho_u, Fn_rho_E, bc_list);
// apply_glace_bc(Fr_rho, Fr_rho_u, Fr_rho_E, rho, rho_u, rho_E, Fn_rho, Fn_rho_u, Fn_rho_E, bc_list); apply_glace_bc(Fr_rho, Fr_rho_u, Fr_rho_E, rho, rho_u, rho_E, Fn_rho, Fn_rho_u, Fn_rho_E, bc_list);
apply_eucclhyd_bc(Fr_rho, Fr_rho_u, Fr_rho_E, rho, rho_u, rho_E, Fn_rho, Fn_rho_u, Fn_rho_E, bc_list); // apply_eucclhyd_bc(Fr_rho, Fr_rho_u, Fr_rho_E, rho, rho_u, rho_E, Fn_rho, Fn_rho_u, Fn_rho_E, bc_list);
synchronize(Fr_rho); synchronize(Fr_rho);
synchronize(Fr_rho_u); synchronize(Fr_rho_u);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment