Skip to content

Commit

Permalink
Removing the view version of the boundary condition marker arrays
Browse files Browse the repository at this point in the history
  • Loading branch information
jamiebramwell committed Apr 1, 2020
1 parent 10e0292 commit 1938e90
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 15 deletions.
28 changes: 24 additions & 4 deletions src/solvers/base_solver.cpp
Expand Up @@ -29,25 +29,45 @@ BaseSolver::BaseSolver(int n) : BaseSolver() { m_state.resize(n); }

void BaseSolver::SetEssentialBCs(std::vector<int> &ess_bdr, mfem::VectorCoefficient *ess_bdr_vec_coef)
{
m_ess_bdr = std::make_shared<mfem::Array<int> >(ess_bdr.data(), ess_bdr.size());
m_ess_bdr.SetSize(ess_bdr.size());

for (unsigned int i = 0; i < ess_bdr.size(); ++i) {
m_ess_bdr[i] = ess_bdr[i];
}

m_ess_bdr_vec_coef = ess_bdr_vec_coef;
}

void BaseSolver::SetNaturalBCs(std::vector<int> &nat_bdr, mfem::VectorCoefficient *nat_bdr_vec_coef)
{
m_nat_bdr = std::make_shared<mfem::Array<int> >(nat_bdr.data(), nat_bdr.size());
m_nat_bdr.SetSize(nat_bdr.size());

for (unsigned int i = 0; i < nat_bdr.size(); ++i) {
m_nat_bdr[i] = nat_bdr[i];
}

m_nat_bdr_vec_coef = nat_bdr_vec_coef;
}

void BaseSolver::SetEssentialBCs(std::vector<int> &ess_bdr, mfem::Coefficient *ess_bdr_coef)
{
m_ess_bdr = std::make_shared<mfem::Array<int> >(ess_bdr.data(), ess_bdr.size());
m_ess_bdr.SetSize(ess_bdr.size());

for (unsigned int i = 0; i < ess_bdr.size(); ++i) {
m_ess_bdr[i] = ess_bdr[i];
}

m_ess_bdr_coef = ess_bdr_coef;
}

void BaseSolver::SetNaturalBCs(std::vector<int> &nat_bdr, mfem::Coefficient *nat_bdr_coef)
{
m_nat_bdr = std::make_shared<mfem::Array<int> >(nat_bdr.data(), nat_bdr.size());
m_nat_bdr.SetSize(nat_bdr.size());

for (unsigned int i = 0; i < nat_bdr.size(); ++i) {
m_nat_bdr[i] = nat_bdr[i];
}

m_nat_bdr_coef = nat_bdr_coef;
}

Expand Down
4 changes: 2 additions & 2 deletions src/solvers/base_solver.hpp
Expand Up @@ -22,10 +22,10 @@ class BaseSolver {
mfem::BlockVector *m_block;

/// Essential BC markers
std::shared_ptr<mfem::Array<int> > m_ess_bdr;
mfem::Array<int> m_ess_bdr;

/// Natural BC markers
std::shared_ptr<mfem::Array<int> > m_nat_bdr;
mfem::Array<int> m_nat_bdr;

/// Pointer to the essential BC coefficient
mfem::Coefficient *m_ess_bdr_coef;
Expand Down
6 changes: 3 additions & 3 deletions src/solvers/elasticity_solver.cpp
Expand Up @@ -41,7 +41,7 @@ void ElasticitySolver::SetDisplacementBCs(std::vector<int> &disp_bdr, mfem::Vect
SetEssentialBCs(disp_bdr, disp_bdr_coef);

// Get the list of essential DOFs
displacement.space->GetEssentialTrueDofs(*m_ess_bdr.get(), m_ess_tdof_list);
displacement.space->GetEssentialTrueDofs(m_ess_bdr, m_ess_tdof_list);
}

void ElasticitySolver::SetTractionBCs(std::vector<int> &trac_bdr, mfem::VectorCoefficient *trac_bdr_coef)
Expand Down Expand Up @@ -78,7 +78,7 @@ void ElasticitySolver::CompleteSetup()

// Add the traction integrator
if (m_nat_bdr_vec_coef != nullptr) {
m_l_form->AddBoundaryIntegrator(new mfem::VectorBoundaryLFIntegrator(*m_nat_bdr_vec_coef), *m_nat_bdr.get());
m_l_form->AddBoundaryIntegrator(new mfem::VectorBoundaryLFIntegrator(*m_nat_bdr_vec_coef), m_nat_bdr);
m_l_form->Assemble();
m_rhs = m_l_form->ParallelAssemble();
} else {
Expand Down Expand Up @@ -157,7 +157,7 @@ void ElasticitySolver::QuasiStaticSolve()
*m_bc_rhs = *m_rhs;
if (m_ess_bdr_vec_coef != nullptr) {
m_ess_bdr_vec_coef->SetTime(m_time);
displacement.gf->ProjectBdrCoefficient(*m_ess_bdr_vec_coef, *m_ess_bdr.get());
displacement.gf->ProjectBdrCoefficient(*m_ess_bdr_vec_coef, m_ess_bdr);
displacement.gf->GetTrueDofs(displacement.true_vec);
mfem::EliminateBC(*m_K_mat, *m_K_e_mat, m_ess_tdof_list, displacement.true_vec, *m_bc_rhs);
}
Expand Down
6 changes: 3 additions & 3 deletions src/solvers/nonlinear_solid_solver.cpp
Expand Up @@ -64,7 +64,7 @@ void NonlinearSolidSolver::SetDisplacementBCs(std::vector<int> &disp_bdr, mfem::

// Get the list of essential DOFs

m_state[0].space->GetEssentialTrueDofs(*m_ess_bdr.get(), m_ess_tdof_list);
m_state[0].space->GetEssentialTrueDofs(m_ess_bdr, m_ess_tdof_list);
}

void NonlinearSolidSolver::SetTractionBCs(std::vector<int> &trac_bdr, mfem::VectorCoefficient *trac_bdr_coef)
Expand Down Expand Up @@ -110,12 +110,12 @@ void NonlinearSolidSolver::CompleteSetup()

// Add the traction integrator
if (m_nat_bdr_vec_coef != nullptr) {
m_H_form->AddBdrFaceIntegrator(new HyperelasticTractionIntegrator(*m_nat_bdr_vec_coef), *m_nat_bdr.get());
m_H_form->AddBdrFaceIntegrator(new HyperelasticTractionIntegrator(*m_nat_bdr_vec_coef), m_nat_bdr);
}

// Add the essential boundary
if (m_ess_bdr_vec_coef != nullptr) {
m_H_form->SetEssentialBC(*m_ess_bdr.get());
m_H_form->SetEssentialBC(m_ess_bdr);
}

// If dynamic, create the mass and viscosity forms
Expand Down
6 changes: 3 additions & 3 deletions src/solvers/thermal_solver.cpp
Expand Up @@ -38,7 +38,7 @@ void ThermalSolver::SetTemperatureBCs(std::vector<int> &ess_bdr, mfem::Coefficie
SetEssentialBCs(ess_bdr, ess_bdr_coef);

// Get the essential dof indicies and project the coefficient onto them
temperature.space->GetEssentialTrueDofs(*m_ess_bdr.get(), m_ess_tdof_list);
temperature.space->GetEssentialTrueDofs(m_ess_bdr, m_ess_tdof_list);
}

void ThermalSolver::SetFluxBCs(std::vector<int> &nat_bdr, mfem::Coefficient *nat_bdr_coef)
Expand Down Expand Up @@ -113,7 +113,7 @@ void ThermalSolver::CompleteSetup()
m_dyn_oper->SetMMatrix(m_M_mat, m_M_e_mat);
m_dyn_oper->SetKMatrix(m_K_mat, m_K_e_mat);
m_dyn_oper->SetLoadVector(m_rhs);
m_dyn_oper->SetEssentialBCs(m_ess_bdr_coef, *m_ess_bdr.get(), m_ess_tdof_list);
m_dyn_oper->SetEssentialBCs(m_ess_bdr_coef, m_ess_bdr, m_ess_tdof_list);

m_ode_solver->Init(*m_dyn_oper);
}
Expand All @@ -125,7 +125,7 @@ void ThermalSolver::QuasiStaticSolve()
*m_bc_rhs = *m_rhs;
if (m_ess_bdr_coef != nullptr) {
m_ess_bdr_coef->SetTime(m_time);
temperature.gf->ProjectBdrCoefficient(*m_ess_bdr_coef, *m_ess_bdr.get());
temperature.gf->ProjectBdrCoefficient(*m_ess_bdr_coef, m_ess_bdr);
temperature.gf->GetTrueDofs(temperature.true_vec);
mfem::EliminateBC(*m_K_mat, *m_K_e_mat, m_ess_tdof_list, temperature.true_vec, *m_bc_rhs);
}
Expand Down

0 comments on commit 1938e90

Please sign in to comment.