102 typedef dealii::LinearAlgebra::distributed::Vector<Number> VectorType;
103 typedef std::pair<unsigned int, unsigned int> Range;
104 typedef CellIntegrator<dim, n_components, Number> IntegratorCell;
105 typedef FaceIntegrator<dim, n_components, Number> IntegratorFace;
107 static unsigned int const vectorization_length = dealii::VectorizedArray<Number>::size();
109 typedef dealii::LAPACKFullMatrix<Number> LAPACKMatrix;
111 typedef dealii::FullMatrix<dealii::TrilinosScalar> FullMatrix_;
123 set_time(
double const time)
const;
131 dealii::AffineConstraints<Number>
const &
132 get_affine_constraints()
const;
134 dealii::MatrixFree<dim, Number>
const &
135 get_matrix_free()
const;
138 get_dof_index()
const;
141 get_quad_index()
const;
148 operator_is_singular()
const;
151 vmult(VectorType & dst, VectorType
const & src)
const;
154 vmult_add(VectorType & dst, VectorType
const & src)
const;
157 vmult_interface_down(VectorType & dst, VectorType
const & src)
const;
160 vmult_add_interface_up(VectorType & dst, VectorType
const & src)
const;
162 dealii::types::global_dof_index
165 dealii::types::global_dof_index
169 el(
unsigned int const,
unsigned int const)
const;
172 is_empty_locally()
const;
175 initialize_dof_vector(VectorType & vector)
const;
182 set_inhomogeneous_boundary_values(VectorType & solution)
const;
185 set_constrained_dofs_to_zero(VectorType & vector)
const;
188 calculate_inverse_diagonal(VectorType & diagonal)
const;
195 initialize_block_diagonal_preconditioner(
bool const initialize)
const;
202 update_block_diagonal_preconditioner()
const;
214#ifdef DEAL_II_WITH_TRILINOS
216 init_system_matrix(dealii::TrilinosWrappers::SparseMatrix & system_matrix,
217 MPI_Comm
const & mpi_comm)
const;
220 calculate_system_matrix(dealii::TrilinosWrappers::SparseMatrix & system_matrix)
const;
226#ifdef DEAL_II_WITH_PETSC
228 init_system_matrix(dealii::PETScWrappers::MPI::SparseMatrix & system_matrix,
229 MPI_Comm
const & mpi_comm)
const;
232 calculate_system_matrix(dealii::PETScWrappers::MPI::SparseMatrix & system_matrix)
const;
242 apply(VectorType & dst, VectorType
const & src)
const;
248 apply_add(VectorType & dst, VectorType
const & src)
const;
265 rhs(VectorType & dst)
const;
271 rhs_add(VectorType & dst)
const;
287 evaluate(VectorType & dst, VectorType
const & src)
const;
293 evaluate_add(VectorType & dst, VectorType
const & src)
const;
299 calculate_diagonal(VectorType & diagonal)
const;
302 add_diagonal(VectorType & diagonal)
const;
308 add_block_diagonal_matrices(std::vector<LAPACKMatrix> & matrices)
const;
311 apply_inverse_block_diagonal_matrix_based(VectorType & dst, VectorType
const & src)
const;
319 initialize_block_diagonal_preconditioner_matrix_free(
bool const initialize)
const;
324 update_block_diagonal_preconditioner_matrix_free()
const;
328 initialize_block_diagonal_preconditioner_matrix_based(
bool const initialize)
const;
332 update_block_diagonal_preconditioner_matrix_based()
const;
335 apply_add_block_diagonal_elementwise(
unsigned int const cell,
336 dealii::VectorizedArray<Number> *
const dst,
337 dealii::VectorizedArray<Number>
const *
const src,
338 unsigned int const problem_size)
const;
344 compute_factorized_additive_schwarz_matrices()
const;
347 apply_inverse_additive_schwarz_matrices(VectorType & dst, VectorType
const & src)
const;
351 reinit(dealii::MatrixFree<dim, Number>
const & matrix_free,
352 dealii::AffineConstraints<Number>
const & constraints,
356 reinit_cell(IntegratorCell & integrator,
unsigned int const cell)
const;
359 reinit_face(IntegratorFace & integrator_m,
360 IntegratorFace & integrator_p,
361 unsigned int const face)
const;
364 reinit_boundary_face(IntegratorFace & integrator_m,
unsigned int const face)
const;
367 reinit_face_cell_based(IntegratorFace & integrator_m,
368 IntegratorFace & integrator_p,
369 unsigned int const cell,
370 unsigned int const face,
371 dealii::types::boundary_id
const boundary_id)
const;
380 do_cell_integral(IntegratorCell & integrator)
const;
383 do_face_integral(IntegratorFace & integrator_m, IntegratorFace & integrator_p)
const;
386 do_boundary_integral(IntegratorFace & integrator,
387 OperatorType
const & operator_type,
388 dealii::types::boundary_id
const & boundary_id)
const;
391 do_boundary_integral_continuous(IntegratorFace & integrator,
392 dealii::types::boundary_id
const & boundary_id)
const;
397 do_face_int_integral(IntegratorFace & integrator_m, IntegratorFace & integrator_p)
const;
400 do_face_ext_integral(IntegratorFace & integrator_m, IntegratorFace & integrator_p)
const;
410 do_face_int_integral_cell_based(IntegratorFace & integrator_m,
411 IntegratorFace & integrator_p)
const;
428 mutable dealii::AffineConstraints<double> constraint_double;
453 typedef Elementwise::
454 IterativeSolver<dim, n_components, Number, ELEMENTWISE_OPERATOR, ELEMENTWISE_PRECONDITIONER>
457 mutable std::shared_ptr<ELEMENTWISE_OPERATOR> elementwise_operator;
458 mutable std::shared_ptr<ELEMENTWISE_PRECONDITIONER> elementwise_preconditioner;
459 mutable std::shared_ptr<ELEMENTWISE_SOLVER> elementwise_solver;
463 reinit_cell_derived(IntegratorCell & integrator,
unsigned int const cell)
const;
466 reinit_face_derived(IntegratorFace & integrator_m,
467 IntegratorFace & integrator_p,
468 unsigned int const face)
const;
471 reinit_boundary_face_derived(IntegratorFace & integrator_m,
unsigned int const face)
const;
474 reinit_face_cell_based_derived(IntegratorFace & integrator_m,
475 IntegratorFace & integrator_p,
476 unsigned int const cell,
477 unsigned int const face,
478 dealii::types::boundary_id
const boundary_id)
const;
488 create_standard_basis(
unsigned int j, IntegratorCell & integrator)
const;
491 create_standard_basis(
unsigned int j, IntegratorFace & integrator)
const;
494 create_standard_basis(
unsigned int j,
495 IntegratorFace & integrator_1,
496 IntegratorFace & integrator_2)
const;
508 cell_loop_full_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
510 VectorType
const & src,
511 Range
const & range)
const;
517 cell_loop(dealii::MatrixFree<dim, Number>
const & matrix_free,
519 VectorType
const & src,
520 Range
const & range)
const;
526 face_loop(dealii::MatrixFree<dim, Number>
const & matrix_free,
528 VectorType
const & src,
529 Range
const & range)
const;
539 boundary_face_loop_hom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
541 VectorType
const & src,
542 Range
const & range)
const;
546 boundary_face_loop_inhom_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
548 VectorType
const & src,
549 Range
const & range)
const;
553 boundary_face_loop_full_operator(dealii::MatrixFree<dim, Number>
const & matrix_free,
555 VectorType
const & src,
556 Range
const & range)
const;
564 cell_loop_empty(dealii::MatrixFree<dim, Number>
const & matrix_free,
566 VectorType
const & src,
567 Range
const & range)
const;
570 face_loop_empty(dealii::MatrixFree<dim, Number>
const & matrix_free,
572 VectorType
const & src,
573 Range
const & range)
const;
579 cell_loop_diagonal(dealii::MatrixFree<dim, Number>
const & matrix_free,
581 VectorType
const & src,
582 Range
const & range)
const;
585 face_loop_diagonal(dealii::MatrixFree<dim, Number>
const & matrix_free,
587 VectorType
const & src,
588 Range
const & range)
const;
591 boundary_face_loop_diagonal(dealii::MatrixFree<dim, Number>
const & matrix_free,
593 VectorType
const & src,
594 Range
const & range)
const;
597 cell_based_loop_diagonal(dealii::MatrixFree<dim, Number>
const & matrix_free,
599 VectorType
const & src,
600 Range
const & range)
const;
606 cell_loop_block_diagonal(dealii::MatrixFree<dim, Number>
const & matrix_free,
607 std::vector<LAPACKMatrix> & matrices,
608 std::vector<LAPACKMatrix>
const & src,
609 Range
const & range)
const;
612 face_loop_block_diagonal(dealii::MatrixFree<dim, Number>
const & matrix_free,
613 std::vector<LAPACKMatrix> & matrices,
614 std::vector<LAPACKMatrix>
const & src,
615 Range
const & range)
const;
618 boundary_face_loop_block_diagonal(dealii::MatrixFree<dim, Number>
const & matrix_free,
619 std::vector<LAPACKMatrix> & matrices,
620 std::vector<LAPACKMatrix>
const & src,
621 Range
const & range)
const;
625 cell_based_loop_block_diagonal(dealii::MatrixFree<dim, Number>
const & matrix_free,
626 std::vector<LAPACKMatrix> & matrices,
627 std::vector<LAPACKMatrix>
const & src,
628 Range
const & range)
const;
636 cell_loop_apply_inverse_block_diagonal_matrix_based(
637 dealii::MatrixFree<dim, Number>
const & matrix_free,
639 VectorType
const & src,
640 Range
const & range)
const;
646 template<
typename SparseMatrix>
648 internal_init_system_matrix(SparseMatrix & system_matrix,
649 dealii::DynamicSparsityPattern & dsp,
650 MPI_Comm
const & mpi_comm)
const;
652 template<
typename SparseMatrix>
654 internal_calculate_system_matrix(SparseMatrix & system_matrix)
const;
659 template<
typename SparseMatrix>
661 cell_loop_calculate_system_matrix(dealii::MatrixFree<dim, Number>
const & matrix_free,
663 SparseMatrix
const & src,
664 Range
const & range)
const;
666 template<
typename SparseMatrix>
668 face_loop_calculate_system_matrix(dealii::MatrixFree<dim, Number>
const & matrix_free,
670 SparseMatrix
const & src,
671 Range
const & range)
const;
673 template<
typename SparseMatrix>
675 boundary_face_loop_calculate_system_matrix(dealii::MatrixFree<dim, Number>
const & matrix_free,
677 SparseMatrix
const & src,
678 Range
const & range)
const;
684 set_constrained_dofs_to_one(VectorType & vector)
const;
691 evaluate_face_integrals()
const;
696 template<
typename SparseMatrix>
698 internal_compute_factorized_additive_schwarz_matrices()
const;
714 mutable std::vector<LAPACKMatrix> matrices;
719 mutable VectorType weights;
721 unsigned int n_mpi_processes;