Skip to content

Commit

Permalink
Another fix in EquationBase SlaybaughLab#10
Browse files Browse the repository at this point in the history
  • Loading branch information
Weixiong Zheng committed Aug 29, 2017
1 parent 37ac05d commit 096fc01
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 26 deletions.
27 changes: 16 additions & 11 deletions src/transport/equation_base.cc
Original file line number Diff line number Diff line change
Expand Up @@ -94,17 +94,18 @@ void EquationBase<dim>::process_input
template <int dim>
void EquationBase<dim>::assemble_system
(std::vector<typename DoFHandler<dim>::active_cell_iterator> &local_cells,
std::vector<bool> &is_cell_at_bd)
std::vector<bool> &is_cell_at_bd,
std::vector<PETScWrappers::MPI::SparseMatrix*> &sys_mats)
{
radio ("Assemble volumetric bilinear forms");
assemble_volume_boundary (local_cells, is_cell_at_bd);
assemble_volume_boundary_bilinear_form (local_cells, is_cell_at_bd, sys_mats);

if (discretization=="dfem")
{
AssertThrow (transport_model_name=="ep",
ExcMessage("DFEM is only implemented for even parity"));
radio ("Assemble cell interface bilinear forms for DFEM");
assemble_interface (local_cells);
assemble_interface_bilinear_form (local_cells, sys_mats);
}
}

Expand Down Expand Up @@ -166,9 +167,9 @@ void EquationBase<dim>::initialize_assembly_related_objects

template <int dim>
void EquationBase<dim>::assemble_volume_boundary_bilinear_form
(std::vector<PETScWrappers::MPI::SparseMatrix*> &sys_mats,
std::vector<typename DoFHandler<dim>::active_cell_iterator> &local_cells,
std::vector<bool> &is_cell_at_bd)
(std::vector<typename DoFHandler<dim>::active_cell_iterator> &local_cells,
std::vector<bool> &is_cell_at_bd,
std::vector<PETScWrappers::MPI::SparseMatrix*> &sys_mats)
{
// volumetric pre-assembly matrices
std::vector<std::vector<FullMatrix<double> > >
Expand Down Expand Up @@ -411,7 +412,9 @@ void EquationBase<dim>::scale_fiss_transfer_matrices (double keff)
// generate rhs for equation
template <int dim>
void EquationBase<dim>::assemble_linear_form
(std::vector<PETScWrappers::MPI::Vector*> &vec_rhs,
(std::vector<typename DoFHandler<dim>::active_cell_iterator> &local_cells,
std::vector<bool> &is_cell_at_bd,
std::vector<PETScWrappers::MPI::Vector*> &vec_rhs,
std::vector<PETScWrappers::MPI::Vector*> &vec_fixed_rhs,
std::vector<PETScWrappers::MPI::Vector*> &vec_aflx,/*in case of reflective BC*/
std::vector<Vector<double> > &sflx_this_proc,
Expand All @@ -426,7 +429,7 @@ void EquationBase<dim>::assemble_linear_form
for (unsigned int ic=0; ic<this->local_cells.size(); ++ic)
{
Vector<double> cell_rhs (this->dofs_per_cell);
typename DoFHandler<dim>::active_cell_iterator cell = this->local_cells[ic];
typename DoFHandler<dim>::active_cell_iterator cell = local_cells[ic];
cell->get_dof_indices (this->local_dof_indices);
fv->reinit (cell);
std::vector<double> cell_sflx;
Expand Down Expand Up @@ -460,18 +463,20 @@ void EquationBase<dim>::integrate_scattering_linear_form

template <int dim>
void EquationBase<dim>::assemble_fixed_linear_form
(std::vector<PETScWrappers::MPI::Vector*> &vec_fixed_rhs,
(std::vector<typename DoFHandler<dim>::active_cell_iterator> &local_cells,
std::vector<bool> &is_cell_at_bd,
std::vector<PETScWrappers::MPI::Vector*> &vec_fixed_rhs,
std::vector<Vector<double> > &sflx_prev)
{
for (unsigned int k=0; k<n_total_vars; ++k)
{
unsigned int g = get_component_group (k);
unsigned int i_dir = get_component_direction (k);
*vec_fixed_rhs[k] = 0.0;
for (unsigned int ic=0; ic<this->local_cells.size(); ++ic)
for (unsigned int ic=0; ic<local_cells.size(); ++ic)
{
Vector<double> cell_rhs (this->dofs_per_cell);
typename DoFHandler<dim>::active_cell_iterator cell = this->local_cells[ic];
typename DoFHandler<dim>::active_cell_iterator cell = local_cells[ic];
cell->get_dof_indices (this->local_dof_indices);
fv->reinit (cell);
integrate_cell_fixed_linear_form (cell, cell_rhs,
Expand Down
27 changes: 12 additions & 15 deletions src/transport/equation_base.h
Original file line number Diff line number Diff line change
Expand Up @@ -61,23 +61,22 @@ class EquationBase
void run ();

virtual void assemble_bilinear_form
(std::vector<PETScWrappers::MPI::SparseMatrix*> &sys_mats,
std::vector<typename DoFHandler<dim>::active_cell_iterator> &local_cells,
std::vector<bool> &is_cell_at_bd)
(std::vector<typename DoFHandler<dim>::active_cell_iterator> &local_cells,
std::vector<bool> &is_cell_at_bd,
std::vector<PETScWrappers::MPI::SparseMatrix*> &sys_mats);

virtual void assemble_volume_boundary_bilinear_form
(std::vector<PETScWrappers::MPI::SparseMatrix*> &sys_mats,
std::vector<typename DoFHandler<dim>::active_cell_iterator> &local_cells,
std::vector<bool> &is_cell_at_bd);
(std::vector<typename DoFHandler<dim>::active_cell_iterator> &local_cells,
std::vector<bool> &is_cell_at_bd,
std::vector<PETScWrappers::MPI::SparseMatrix*> &sys_mats);

virtual void assemble_interface_bilinear_form
(std::vector<PETScWrappers::MPI::SparseMatrix*> &sys_mats,
std::vector<typename DoFHandler<dim>::active_cell_iterator> &local_cells,
std::vector<bool> &is_cell_at_bd);
(std::vector<typename DoFHandler<dim>::active_cell_iterator> &local_cells,
std::vector<bool> &is_cell_at_bd,
std::vector<PETScWrappers::MPI::SparseMatrix*> &sys_mats);

virtual void pre_assemble_cell_matrices
(const std_cxx11::shared_ptr<FEValues<dim> > fv,
typename DoFHandler<dim>::active_cell_iterator &cell,
(typename DoFHandler<dim>::active_cell_iterator &cell,
std::vector<std::vector<FullMatrix<double> > > &streaming_at_qp,
std::vector<FullMatrix<double> > &collision_at_qp);

Expand All @@ -90,8 +89,7 @@ class EquationBase
const unsigned int &i_dir=0);

virtual void integrate_boundary_bilinear_form
(std::vector<PETScWrappers::MPI::SparseMatrix*> &sys_mats,
typename DoFHandler<dim>::active_cell_iterator &cell,
(typename DoFHandler<dim>::active_cell_iterator &cell,
unsigned int &fn,/*face number*/
FullMatrix<double> &cell_matrix,
const unsigned int &g,
Expand All @@ -105,8 +103,7 @@ class EquationBase
const unsigned int &i_dir=0);

virtual void integrate_interface_bilinear_form
(std::vector<PETScWrappers::MPI::SparseMatrix*> &sys_mats,
typename DoFHandler<dim>::active_cell_iterator &cell,
(typename DoFHandler<dim>::active_cell_iterator &cell,
typename DoFHandler<dim>::cell_iterator &neigh,/*cell iterator for cell*/
unsigned int &fn,/*concerning face number in local cell*/
unsigned int &i_dir,
Expand Down

0 comments on commit 096fc01

Please sign in to comment.