From: Qingyuan Shi Date: Thu, 8 May 2025 12:20:23 +0000 (+0800) Subject: Add instantiations and missing includes for TpetraWrappers::BlockVector X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b0487733c11f743c510309dc8d43500809612eea;p=dealii.git Add instantiations and missing includes for TpetraWrappers::BlockVector --- diff --git a/cmake/config/template-arguments.in b/cmake/config/template-arguments.in index 19e7b3a571..c76e73eb1c 100644 --- a/cmake/config/template-arguments.in +++ b/cmake/config/template-arguments.in @@ -117,6 +117,11 @@ VECTOR_TYPES := { Vector; @DEAL_II_EXPAND_TRILINOS_MPI_BLOCKVECTOR@; @DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR@; + + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_DOUBLE@; + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_FLOAT@; + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_DOUBLE@; + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_FLOAT@; } // same as VECTOR_TYPES but only real-valued vectors (and only with PETSc @@ -141,6 +146,8 @@ REAL_VECTOR_TYPES := { Vector; @DEAL_II_EXPAND_TRILINOS_MPI_BLOCKVECTOR@; @DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR_REAL@; + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_DOUBLE@; + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_FLOAT@; } // real vector types excluding block vectors @@ -166,7 +173,11 @@ EXTERNAL_PARALLEL_VECTORS := { @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@; @DEAL_II_EXPAND_TPETRA_VECTOR_COMPLEX_DOUBLE@; @DEAL_II_EXPAND_TPETRA_VECTOR_COMPLEX_FLOAT@; @DEAL_II_EXPAND_PETSC_MPI_VECTOR@; - @DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR@ + @DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR@; + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_DOUBLE@; + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_FLOAT@; + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_DOUBLE@; + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_FLOAT@; } // Vectors we can do GMG with excluding the LinearAlgebra::distributed::Vector<> (which is handled separately): @@ -183,6 +194,11 @@ VECTORS_WITHOUT_LAVEC := { Vector; @DEAL_II_EXPAND_TPETRA_VECTOR_COMPLEX_DOUBLE@; @DEAL_II_EXPAND_TPETRA_VECTOR_COMPLEX_FLOAT@; @DEAL_II_EXPAND_PETSC_MPI_VECTOR@; + + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_DOUBLE@; + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_FLOAT@; + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_DOUBLE@; + @DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_FLOAT@; } // Matrices diff --git a/cmake/configure/configure_20_trilinos.cmake b/cmake/configure/configure_20_trilinos.cmake index 2988a13444..51c15adb9a 100644 --- a/cmake/configure/configure_20_trilinos.cmake +++ b/cmake/configure/configure_20_trilinos.cmake @@ -430,12 +430,18 @@ macro(feature_trilinos_configure_external) set(DEAL_II_EXPAND_TPETRA_VECTOR_DOUBLE "LinearAlgebra::TpetraWrappers::Vector" "LinearAlgebra::TpetraWrappers::Vector") + set(DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_DOUBLE + "LinearAlgebra::TpetraWrappers::BlockVector" + "LinearAlgebra::TpetraWrappers::BlockVector") endif() if(_tpetra_inst_float) set(DEAL_II_EXPAND_TPETRA_VECTOR_FLOAT "LinearAlgebra::TpetraWrappers::Vector" "LinearAlgebra::TpetraWrappers::Vector") + set(DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_FLOAT + "LinearAlgebra::TpetraWrappers::BlockVector" + "LinearAlgebra::TpetraWrappers::BlockVector") endif() if(${DEAL_II_WITH_COMPLEX_NUMBERS}) @@ -443,12 +449,18 @@ macro(feature_trilinos_configure_external) set(DEAL_II_EXPAND_TPETRA_VECTOR_COMPLEX_DOUBLE "LinearAlgebra::TpetraWrappers::Vector, MemorySpace::Host>" "LinearAlgebra::TpetraWrappers::Vector, MemorySpace::Default>") + set(DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_DOUBLE + "LinearAlgebra::TpetraWrappers::BlockVector, MemorySpace::Host>" + "LinearAlgebra::TpetraWrappers::BlockVector, MemorySpace::Default>") endif() if(_tpetra_inst_complex_float) set(DEAL_II_EXPAND_TPETRA_VECTOR_COMPLEX_FLOAT "LinearAlgebra::TpetraWrappers::Vector, MemorySpace::Host>" "LinearAlgebra::TpetraWrappers::Vector, MemorySpace::Default>") + set(DEAL_II_EXPAND_TPETRA_BLOCKVECTOR_COMPLEX_FLOAT + "LinearAlgebra::TpetraWrappers::BlockVector, MemorySpace::Host>" + "LinearAlgebra::TpetraWrappers::BlockVector, MemorySpace::Default>") endif() endif() endif() diff --git a/include/deal.II/base/template_constraints.h b/include/deal.II/base/template_constraints.h index 7a37c5fad7..bd262f778d 100644 --- a/include/deal.II/base/template_constraints.h +++ b/include/deal.II/base/template_constraints.h @@ -671,8 +671,14 @@ namespace LinearAlgebra template class Vector; + template + class BlockVector; + template class SparseMatrix; + + template + class BlockSparseMatrix; } // namespace TpetraWrappers # endif } // namespace LinearAlgebra @@ -789,6 +795,11 @@ namespace concepts inline constexpr bool is_dealii_vector_type< dealii::LinearAlgebra::TpetraWrappers::Vector> = true; + + template + inline constexpr bool is_dealii_vector_type< + dealii::LinearAlgebra::TpetraWrappers::BlockVector> = + true; # endif # endif diff --git a/include/deal.II/fe/fe_tools_extrapolate.templates.h b/include/deal.II/fe/fe_tools_extrapolate.templates.h index 080c88069d..25e4b2a81d 100644 --- a/include/deal.II/fe/fe_tools_extrapolate.templates.h +++ b/include/deal.II/fe/fe_tools_extrapolate.templates.h @@ -40,6 +40,8 @@ #include #include #include +#include +#include #include #include diff --git a/include/deal.II/fe/fe_tools_interpolate.templates.h b/include/deal.II/fe/fe_tools_interpolate.templates.h index 791596f377..e88d7a794d 100644 --- a/include/deal.II/fe/fe_tools_interpolate.templates.h +++ b/include/deal.II/fe/fe_tools_interpolate.templates.h @@ -42,6 +42,7 @@ #include #include #include +#include #include #include #include @@ -514,6 +515,21 @@ namespace FETools { AssertThrow(false, ExcNotImplemented()); } + + template + void + back_interpolate( + const DoFHandler &, + const AffineConstraints::value_type> &, + const LinearAlgebra::TpetraWrappers::BlockVector &, + const DoFHandler &, + const AffineConstraints::value_type> &, + LinearAlgebra::TpetraWrappers::BlockVector &) + { + AssertThrow(false, ExcNotImplemented()); + } # endif #endif diff --git a/include/deal.II/lac/read_write_vector.h b/include/deal.II/lac/read_write_vector.h index 7cb5c6fcef..96f04aa81e 100644 --- a/include/deal.II/lac/read_write_vector.h +++ b/include/deal.II/lac/read_write_vector.h @@ -36,6 +36,7 @@ #ifdef DEAL_II_WITH_TRILINOS # include # include +# include # include # include diff --git a/include/deal.II/lac/trilinos_tpetra_block_vector.h b/include/deal.II/lac/trilinos_tpetra_block_vector.h index 120ce36073..b5daf8ba7a 100644 --- a/include/deal.II/lac/trilinos_tpetra_block_vector.h +++ b/include/deal.II/lac/trilinos_tpetra_block_vector.h @@ -228,6 +228,16 @@ namespace LinearAlgebra } // namespace LinearAlgebra +/** + * Declare dealii::LinearAlgebra::TpetraWrappers::BlockVector as distributed + * vector. + */ +template +struct is_serial_vector< + LinearAlgebra::TpetraWrappers::BlockVector> + : std::false_type +{}; + DEAL_II_NAMESPACE_CLOSE #endif // DEAL_II_TRILINOS_WITH_TPETRA diff --git a/include/deal.II/lac/vector_element_access.h b/include/deal.II/lac/vector_element_access.h index 07b142e2bb..48c2c92ba9 100644 --- a/include/deal.II/lac/vector_element_access.h +++ b/include/deal.II/lac/vector_element_access.h @@ -19,6 +19,7 @@ #include #include +#include #include DEAL_II_NAMESPACE_OPEN diff --git a/include/deal.II/numerics/vector_tools_point_value.templates.h b/include/deal.II/numerics/vector_tools_point_value.templates.h index 1df0564261..a3c94eaa27 100644 --- a/include/deal.II/numerics/vector_tools_point_value.templates.h +++ b/include/deal.II/numerics/vector_tools_point_value.templates.h @@ -29,6 +29,8 @@ #include #include #include +#include +#include #include #include diff --git a/source/base/time_stepping.cc b/source/base/time_stepping.cc index 3f83d15454..be7d505ff2 100644 --- a/source/base/time_stepping.cc +++ b/source/base/time_stepping.cc @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/source/dofs/dof_accessor_get.cc b/source/dofs/dof_accessor_get.cc index 345e9305f6..5bae801743 100644 --- a/source/dofs/dof_accessor_get.cc +++ b/source/dofs/dof_accessor_get.cc @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/source/dofs/dof_accessor_set.cc b/source/dofs/dof_accessor_set.cc index 21398d15c4..a10660f793 100644 --- a/source/dofs/dof_accessor_set.cc +++ b/source/dofs/dof_accessor_set.cc @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/source/fe/mapping_fe_field.cc b/source/fe/mapping_fe_field.cc index cc9d3aa8fc..8028a37918 100644 --- a/source/fe/mapping_fe_field.cc +++ b/source/fe/mapping_fe_field.cc @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include diff --git a/source/lac/solver.cc b/source/lac/solver.cc index 35ae14db51..aa1fc63f2d 100644 --- a/source/lac/solver.cc +++ b/source/lac/solver.cc @@ -21,6 +21,7 @@ #include #include #include +#include #include #include #include diff --git a/source/lac/vector_memory.cc b/source/lac/vector_memory.cc index b61e62ac11..37f02ac0b4 100644 --- a/source/lac/vector_memory.cc +++ b/source/lac/vector_memory.cc @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/source/multigrid/mg_base.cc b/source/multigrid/mg_base.cc index a13a8dd5e4..ff49fcb82b 100644 --- a/source/multigrid/mg_base.cc +++ b/source/multigrid/mg_base.cc @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include diff --git a/source/non_matching/fe_values.cc b/source/non_matching/fe_values.cc index 84e46159a0..f5f368b8be 100644 --- a/source/non_matching/fe_values.cc +++ b/source/non_matching/fe_values.cc @@ -22,6 +22,7 @@ #include #include #include +#include #include #include #include diff --git a/source/non_matching/mesh_classifier.cc b/source/non_matching/mesh_classifier.cc index cde8c7efa8..34f733990d 100644 --- a/source/non_matching/mesh_classifier.cc +++ b/source/non_matching/mesh_classifier.cc @@ -28,6 +28,7 @@ #include #include #include +#include #include #include #include diff --git a/source/non_matching/quadrature_generator.cc b/source/non_matching/quadrature_generator.cc index 55d88f611e..61f41cb55a 100644 --- a/source/non_matching/quadrature_generator.cc +++ b/source/non_matching/quadrature_generator.cc @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include diff --git a/source/numerics/data_out_dof_data.cc b/source/numerics/data_out_dof_data.cc index 6d44472d70..891a63947b 100644 --- a/source/numerics/data_out_dof_data.cc +++ b/source/numerics/data_out_dof_data.cc @@ -19,6 +19,8 @@ #include #include #include +#include +#include #include #include #include diff --git a/source/numerics/data_out_dof_data_codim.cc b/source/numerics/data_out_dof_data_codim.cc index d67f147c7a..95018fef70 100644 --- a/source/numerics/data_out_dof_data_codim.cc +++ b/source/numerics/data_out_dof_data_codim.cc @@ -19,6 +19,7 @@ #include #include #include +#include #include #include #include diff --git a/source/numerics/derivative_approximation.cc b/source/numerics/derivative_approximation.cc index 80e1125756..4b6621b12b 100644 --- a/source/numerics/derivative_approximation.cc +++ b/source/numerics/derivative_approximation.cc @@ -40,6 +40,7 @@ #include #include #include +#include #include #include #include diff --git a/source/trilinos/nox.cc b/source/trilinos/nox.cc index 9fd7815ca6..5833a86aac 100644 --- a/source/trilinos/nox.cc +++ b/source/trilinos/nox.cc @@ -25,6 +25,7 @@ # include # include # include +# include # include # include # include