From b6381bf742adc137361620baf83332ce13e2f022 Mon Sep 17 00:00:00 2001 From: Guillaume Giudicelli Date: Tue, 2 Dec 2025 09:59:47 -0700 Subject: [PATCH 1/6] Add simple operators for type N tensors to support idaholab/moose#32023 --- include/numerics/type_n_tensor.h | 118 +++++++++++++++++++------------ 1 file changed, 73 insertions(+), 45 deletions(-) diff --git a/include/numerics/type_n_tensor.h b/include/numerics/type_n_tensor.h index 15bebec4f49..a27f54e4b70 100644 --- a/include/numerics/type_n_tensor.h +++ b/include/numerics/type_n_tensor.h @@ -37,9 +37,9 @@ namespace libMesh * This class will eventually define a rank-N tensor in \p LIBMESH_DIM * dimensional space of type T. * - * Right now it defines a shim to allow for rank-independent code to - * compile (but not give correct results) in the case of vector-valued - * elements and second derivatives. + * For routines that are too hard to implement with a general N-dimensional, + * it defines a shim to allow for rank-independent code to + * compile (but error on unimplemented). * * \author Roy Stogner * \date 2012 @@ -63,7 +63,7 @@ class TypeNTensor TypeNTensor (const TypeNTensor &) : _coords(std::vector(int_pow(LIBMESH_DIM, N))) {} - TypeNTensor & operator = (const TypeNTensor &) { libmesh_not_implemented(); return *this; } + TypeNTensor & operator=(const TypeNTensor &) { return *this; } operator TypeVector () const { libmesh_not_implemented(); return 0; } operator VectorValue () const { libmesh_not_implemented(); return 0; } @@ -104,42 +104,54 @@ class TypeNTensor /** * Add two tensors. */ - template - TypeNTensor::supertype> - operator + (const TypeNTensor &) const + template + TypeNTensor::supertype> + operator+(const TypeNTensor & other) const { - libmesh_not_implemented(); - return TypeNTensor::supertype>(); + TypeNTensor::supertype> sum; + unsigned int size = int_pow(LIBMESH_DIM, N); + sum._coords.resize(size); + for (unsigned int i = 0; i < size; i++) + sum._coords[i] = _coords[i] + other._coords[i]; + return sum; } /** * Add to this tensor. */ - template - const TypeNTensor & operator += (const TypeNTensor &/*rhs*/) + template + const TypeNTensor & operator+=(const TypeNTensor & other) { - libmesh_not_implemented(); + unsigned int size = int_pow(LIBMESH_DIM, N); + for (unsigned int i = 0; i < size; i++) + _coords[i] += other._coords[i]; return *this; } /** * Subtract two tensors. */ - template - TypeNTensor::supertype> - operator - (const TypeNTensor &) const + template + TypeNTensor::supertype> + operator-(const TypeNTensor & other) const { - libmesh_not_implemented(); - return TypeNTensor::supertype>(); + TypeNTensor::supertype> subtract; + unsigned int size = int_pow(LIBMESH_DIM, N); + subtract._coords.resize(size); + for (unsigned int i = 0; i < size; i++) + subtract._coords[i] = _coords[i] - other._coords[i]; + return subtract; } /** * Subtract from this tensor. */ - template - const TypeNTensor & operator -= (const TypeNTensor &) + template + const TypeNTensor & operator-=(const TypeNTensor & other) { - libmesh_not_implemented(); + unsigned int size = int_pow(LIBMESH_DIM, N); + for (unsigned int i = 0; i < size; i++) + _coords[i] -= other._coords[i]; return *this; } @@ -148,30 +160,39 @@ class TypeNTensor */ TypeNTensor operator - () const { - libmesh_not_implemented(); - return *this; + TypeNTensor minus; + unsigned int size = int_pow(LIBMESH_DIM, N); + minus._coords.resize(size); + for (unsigned int i = 0; i < size; i++) + minus._coords[i] = -_coords[i]; + return minus; } /** * Multiply every entry of a tensor by a number. */ template - typename boostcopy::enable_if_c< - ScalarTraits::value, - TypeNTensor::supertype>>::type - operator * (const Scalar) const + typename boostcopy::enable_if_c::value, + TypeNTensor::supertype>>::type + operator*(const Scalar factor) const { - libmesh_not_implemented(); - return TypeNTensor::supertype>(); + TypeNTensor multiplied; + unsigned int size = int_pow(LIBMESH_DIM, N); + multiplied._coords.resize(size); + for (unsigned int i = 0; i < size; i++) + multiplied._coords[i] = factor * _coords[i]; + return multiplied; } /** * Multiply every entry of this tensor by a number. */ template - const TypeNTensor & operator *= (const Scalar) + const TypeNTensor & operator*=(const Scalar factor) { - libmesh_not_implemented(); + unsigned int size = int_pow(LIBMESH_DIM, N); + for (unsigned int i = 0; i < size; i++) + _coords[i] *= factor; return *this; } @@ -179,21 +200,24 @@ class TypeNTensor * Divide every entry of a tensor by a number. */ template - typename boostcopy::enable_if_c< - ScalarTraits::value, - TypeNTensor::supertype>>::type - operator / (const Scalar) const + typename boostcopy::enable_if_c::value, + TypeNTensor::supertype>>::type + operator/(const Scalar factor) const { - libmesh_not_implemented(); + unsigned int size = int_pow(LIBMESH_DIM, N); + for (unsigned int i = 0; i < size; i++) + _coords[i] /= factor; return *this; } /** * Divide every entry of this tensor by a number. */ - const TypeNTensor & operator /= (const T) + const TypeNTensor & operator/=(const T factor) { - libmesh_not_implemented(); + unsigned int size = int_pow(LIBMESH_DIM, N); + for (unsigned int i = 0; i < size; i++) + _coords[i] /= factor; return *this; } @@ -218,11 +242,7 @@ class TypeNTensor * \returns The Frobenius norm of the tensor, i.e. the square-root of * the sum of the elements squared. */ - auto norm() const - { - libmesh_not_implemented(); - return 0.; - } + auto norm() const -> decltype(std::norm(T())) { return std::sqrt(norm_sq()); } /** * \returns The Frobenius norm of the tensor squared, i.e. the sum of the @@ -230,14 +250,22 @@ class TypeNTensor */ auto norm_sq() const { - libmesh_not_implemented(); - return 0.; + unsigned int size = int_pow(LIBMESH_DIM, N); + auto norm = 0.; + for (unsigned int i = 0; i < size; i++) + norm += _coords[i] * _coords[i]; + return norm; } /** * Set all entries of the tensor to 0. */ - void zero() { libmesh_not_implemented(); } + void zero() + { + unsigned int size = int_pow(LIBMESH_DIM, N); + for (unsigned int i = 0; i < size; i++) + _coords[i] = T(0); + } /** * \returns \p true if two tensors are equal, \p false otherwise. From 87f80c07a03569c470c369284910472f62475da8 Mon Sep 17 00:00:00 2001 From: Guillaume Giudicelli Date: Tue, 2 Dec 2025 10:31:49 -0700 Subject: [PATCH 2/6] Add slice routines and vector conversions to support idaholab/moose#32023 --- include/numerics/type_n_tensor.h | 36 ++++++++++++++++++++++++-------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/include/numerics/type_n_tensor.h b/include/numerics/type_n_tensor.h index a27f54e4b70..727d22db8d5 100644 --- a/include/numerics/type_n_tensor.h +++ b/include/numerics/type_n_tensor.h @@ -65,8 +65,16 @@ class TypeNTensor TypeNTensor & operator=(const TypeNTensor &) { return *this; } - operator TypeVector () const { libmesh_not_implemented(); return 0; } - operator VectorValue () const { libmesh_not_implemented(); return 0; } + operator TypeVector() const + { + libmesh_assert(N == 1); + return TypeVector(_coords[0], _coords[1], _coords[2]); + } + operator VectorValue() const + { + libmesh_assert(N == 1); + return VectorValue(_coords[0], _coords[1], _coords[2]); + } operator TypeTensor () const { libmesh_not_implemented(); return 0; } operator TensorValue () const { libmesh_not_implemented(); return 0; } @@ -79,21 +87,28 @@ class TypeNTensor /** * \returns A proxy for the \f$ i^{th} \f$ slice of the tensor. */ - const TypeNTensor slice (const unsigned int /*i*/) const + const TypeNTensor slice(const unsigned int i) const { - libmesh_not_implemented(); - return TypeNTensor(); + return const_cast *>(this)->slice(i); } /** * \returns A writable proxy for the \f$ i^{th} \f$ slice of the tensor. */ - TypeNTensor slice (const unsigned int /*i*/) + TypeNTensor slice(const unsigned int i) { - libmesh_not_implemented(); - return TypeNTensor(); + libmesh_assert(i <= N); + TypeNTensor slice; + unsigned int slice_size = int_pow(LIBMESH_DIM, N - 1); + slice._coords.resize(slice_size); + for (unsigned int j = 0; j < slice_size; j++) + slice._coords[j] = _coords[i * slice_size + j]; + return slice; } + /** + * Zero out a tensor by setting it with = 0 + */ template typename boostcopy::enable_if_c< ScalarTraits::value, @@ -322,7 +337,10 @@ class TypeNTensor void add_scaled (const TypeNTensor &, const T &); /** - * The coordinates of the \p TypeNTensor + * The coordinates of the \p TypeNTensor. + * The vector is indexed such that slice i is contiguous. + * In dimension 2, this would mean that slice i is the ith row, + * and _coords has row-major ordering and column minor-ordering */ std::vector _coords; From fb12680acf98eb0035418b23f06be8703d675a2a Mon Sep 17 00:00:00 2001 From: Guillaume Giudicelli Date: Tue, 2 Dec 2025 11:27:11 -0700 Subject: [PATCH 3/6] Add base input for type N tensor unit test --- tests/numerics/type_N_tensor_test.C | 80 +++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 tests/numerics/type_N_tensor_test.C diff --git a/tests/numerics/type_N_tensor_test.C b/tests/numerics/type_N_tensor_test.C new file mode 100644 index 00000000000..5be287fea28 --- /dev/null +++ b/tests/numerics/type_N_tensor_test.C @@ -0,0 +1,80 @@ +// libmesh includes +#include +#include +#include + +#include "libmesh_cppunit.h" + +using namespace libMesh; + +class TypeNTensorTest : public CppUnit::TestCase +{ +public: + void setUp() {} + + void tearDown() {} + + LIBMESH_CPPUNIT_TEST_SUITE(TypeNTensorTest); + + CPPUNIT_TEST(testOperatorsScalar); + CPPUNIT_TEST(testOperatorsTensor); + CPPUNIT_TEST(testCastVector); + CPPUNIT_TEST(testZero); + CPPUNIT_TEST(testSlice); + + CPPUNIT_TEST_SUITE_END(); + +private: + void testOperatorsScalar() + { + LOG_UNIT_TEST; + + // Add a number + + // Subtract a number + + // Multiply by a number + + // Divide by a number + + // TensorValue tensor(1, 2, 0, 3, 4, 0); + // VectorValue vector(5, 6, 0); + // auto left_mult = vector * tensor; + // auto right_mult = tensor * vector; + // LIBMESH_ASSERT_FP_EQUAL(23, left_mult(0), 1e-12); + // LIBMESH_ASSERT_FP_EQUAL(34, left_mult(1), 1e-12); + // LIBMESH_ASSERT_FP_EQUAL(17, right_mult(0), 1e-12); + // LIBMESH_ASSERT_FP_EQUAL(39, right_mult(1), 1e-12); + } + + void testOperatorsTensor() + { + // Add a tensor + + // Return sum of two tensors + + // Subtract a tensor + + // Return subtraction of one tensor by another + + // Add a scaled tensor + + } + + void ttestCastVector() + { + + } + + void testZero() + { + + } + + void testSlice() + { + + } +}; + +CPPUNIT_TEST_SUITE_REGISTRATION(TypeNTensorTest); From b38674017963518ef7604ada2ab07275bda9084e Mon Sep 17 00:00:00 2001 From: Guillaume Giudicelli Date: Tue, 2 Dec 2025 11:50:20 -0700 Subject: [PATCH 4/6] Re-bootstrap for new test file --- tests/Makefile.am | 1 + tests/Makefile.in | 141 ++++++++++++++++++++++++---- tests/numerics/type_N_tensor_test.C | 2 +- 3 files changed, 125 insertions(+), 19 deletions(-) diff --git a/tests/Makefile.am b/tests/Makefile.am index 6f27e83ae14..724934a4c0b 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -108,6 +108,7 @@ unit_tests_sources = \ numerics/type_vector_test.h \ numerics/vector_value_test.C \ numerics/type_tensor_test.C \ + numerics/type_N_tensor_test.C \ numerics/sparse_matrix_test.h \ numerics/dense_matrix_test.C \ numerics/petsc_matrix_test.C \ diff --git a/tests/Makefile.in b/tests/Makefile.in index d7774413900..b06c9b6c407 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -234,9 +234,9 @@ am__unit_tests_dbg_SOURCES_DIST = driver.C libmesh_cppunit.h \ numerics/parsed_function_test.C numerics/petsc_vector_test.C \ numerics/trilinos_epetra_vector_test.C \ numerics/type_vector_test.h numerics/vector_value_test.C \ - numerics/type_tensor_test.C numerics/sparse_matrix_test.h \ - numerics/dense_matrix_test.C numerics/petsc_matrix_test.C \ - numerics/diagonal_matrix_test.C \ + numerics/type_tensor_test.C numerics/type_N_tensor_test.C \ + numerics/sparse_matrix_test.h numerics/dense_matrix_test.C \ + numerics/petsc_matrix_test.C numerics/diagonal_matrix_test.C \ numerics/lumped_mass_matrix_test.C \ numerics/eigen_sparse_matrix_test.C \ numerics/tensor_traits_test.C parallel/message_tag.C \ @@ -345,6 +345,7 @@ am__objects_2 = unit_tests_dbg-driver.$(OBJEXT) \ numerics/unit_tests_dbg-trilinos_epetra_vector_test.$(OBJEXT) \ numerics/unit_tests_dbg-vector_value_test.$(OBJEXT) \ numerics/unit_tests_dbg-type_tensor_test.$(OBJEXT) \ + numerics/unit_tests_dbg-type_N_tensor_test.$(OBJEXT) \ numerics/unit_tests_dbg-dense_matrix_test.$(OBJEXT) \ numerics/unit_tests_dbg-petsc_matrix_test.$(OBJEXT) \ numerics/unit_tests_dbg-diagonal_matrix_test.$(OBJEXT) \ @@ -437,9 +438,9 @@ am__unit_tests_devel_SOURCES_DIST = driver.C libmesh_cppunit.h \ numerics/parsed_function_test.C numerics/petsc_vector_test.C \ numerics/trilinos_epetra_vector_test.C \ numerics/type_vector_test.h numerics/vector_value_test.C \ - numerics/type_tensor_test.C numerics/sparse_matrix_test.h \ - numerics/dense_matrix_test.C numerics/petsc_matrix_test.C \ - numerics/diagonal_matrix_test.C \ + numerics/type_tensor_test.C numerics/type_N_tensor_test.C \ + numerics/sparse_matrix_test.h numerics/dense_matrix_test.C \ + numerics/petsc_matrix_test.C numerics/diagonal_matrix_test.C \ numerics/lumped_mass_matrix_test.C \ numerics/eigen_sparse_matrix_test.C \ numerics/tensor_traits_test.C parallel/message_tag.C \ @@ -547,6 +548,7 @@ am__objects_4 = unit_tests_devel-driver.$(OBJEXT) \ numerics/unit_tests_devel-trilinos_epetra_vector_test.$(OBJEXT) \ numerics/unit_tests_devel-vector_value_test.$(OBJEXT) \ numerics/unit_tests_devel-type_tensor_test.$(OBJEXT) \ + numerics/unit_tests_devel-type_N_tensor_test.$(OBJEXT) \ numerics/unit_tests_devel-dense_matrix_test.$(OBJEXT) \ numerics/unit_tests_devel-petsc_matrix_test.$(OBJEXT) \ numerics/unit_tests_devel-diagonal_matrix_test.$(OBJEXT) \ @@ -635,9 +637,9 @@ am__unit_tests_oprof_SOURCES_DIST = driver.C libmesh_cppunit.h \ numerics/parsed_function_test.C numerics/petsc_vector_test.C \ numerics/trilinos_epetra_vector_test.C \ numerics/type_vector_test.h numerics/vector_value_test.C \ - numerics/type_tensor_test.C numerics/sparse_matrix_test.h \ - numerics/dense_matrix_test.C numerics/petsc_matrix_test.C \ - numerics/diagonal_matrix_test.C \ + numerics/type_tensor_test.C numerics/type_N_tensor_test.C \ + numerics/sparse_matrix_test.h numerics/dense_matrix_test.C \ + numerics/petsc_matrix_test.C numerics/diagonal_matrix_test.C \ numerics/lumped_mass_matrix_test.C \ numerics/eigen_sparse_matrix_test.C \ numerics/tensor_traits_test.C parallel/message_tag.C \ @@ -745,6 +747,7 @@ am__objects_6 = unit_tests_oprof-driver.$(OBJEXT) \ numerics/unit_tests_oprof-trilinos_epetra_vector_test.$(OBJEXT) \ numerics/unit_tests_oprof-vector_value_test.$(OBJEXT) \ numerics/unit_tests_oprof-type_tensor_test.$(OBJEXT) \ + numerics/unit_tests_oprof-type_N_tensor_test.$(OBJEXT) \ numerics/unit_tests_oprof-dense_matrix_test.$(OBJEXT) \ numerics/unit_tests_oprof-petsc_matrix_test.$(OBJEXT) \ numerics/unit_tests_oprof-diagonal_matrix_test.$(OBJEXT) \ @@ -833,9 +836,9 @@ am__unit_tests_opt_SOURCES_DIST = driver.C libmesh_cppunit.h \ numerics/parsed_function_test.C numerics/petsc_vector_test.C \ numerics/trilinos_epetra_vector_test.C \ numerics/type_vector_test.h numerics/vector_value_test.C \ - numerics/type_tensor_test.C numerics/sparse_matrix_test.h \ - numerics/dense_matrix_test.C numerics/petsc_matrix_test.C \ - numerics/diagonal_matrix_test.C \ + numerics/type_tensor_test.C numerics/type_N_tensor_test.C \ + numerics/sparse_matrix_test.h numerics/dense_matrix_test.C \ + numerics/petsc_matrix_test.C numerics/diagonal_matrix_test.C \ numerics/lumped_mass_matrix_test.C \ numerics/eigen_sparse_matrix_test.C \ numerics/tensor_traits_test.C parallel/message_tag.C \ @@ -943,6 +946,7 @@ am__objects_8 = unit_tests_opt-driver.$(OBJEXT) \ numerics/unit_tests_opt-trilinos_epetra_vector_test.$(OBJEXT) \ numerics/unit_tests_opt-vector_value_test.$(OBJEXT) \ numerics/unit_tests_opt-type_tensor_test.$(OBJEXT) \ + numerics/unit_tests_opt-type_N_tensor_test.$(OBJEXT) \ numerics/unit_tests_opt-dense_matrix_test.$(OBJEXT) \ numerics/unit_tests_opt-petsc_matrix_test.$(OBJEXT) \ numerics/unit_tests_opt-diagonal_matrix_test.$(OBJEXT) \ @@ -1031,9 +1035,9 @@ am__unit_tests_prof_SOURCES_DIST = driver.C libmesh_cppunit.h \ numerics/parsed_function_test.C numerics/petsc_vector_test.C \ numerics/trilinos_epetra_vector_test.C \ numerics/type_vector_test.h numerics/vector_value_test.C \ - numerics/type_tensor_test.C numerics/sparse_matrix_test.h \ - numerics/dense_matrix_test.C numerics/petsc_matrix_test.C \ - numerics/diagonal_matrix_test.C \ + numerics/type_tensor_test.C numerics/type_N_tensor_test.C \ + numerics/sparse_matrix_test.h numerics/dense_matrix_test.C \ + numerics/petsc_matrix_test.C numerics/diagonal_matrix_test.C \ numerics/lumped_mass_matrix_test.C \ numerics/eigen_sparse_matrix_test.C \ numerics/tensor_traits_test.C parallel/message_tag.C \ @@ -1141,6 +1145,7 @@ am__objects_10 = unit_tests_prof-driver.$(OBJEXT) \ numerics/unit_tests_prof-trilinos_epetra_vector_test.$(OBJEXT) \ numerics/unit_tests_prof-vector_value_test.$(OBJEXT) \ numerics/unit_tests_prof-type_tensor_test.$(OBJEXT) \ + numerics/unit_tests_prof-type_N_tensor_test.$(OBJEXT) \ numerics/unit_tests_prof-dense_matrix_test.$(OBJEXT) \ numerics/unit_tests_prof-petsc_matrix_test.$(OBJEXT) \ numerics/unit_tests_prof-diagonal_matrix_test.$(OBJEXT) \ @@ -1574,6 +1579,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ numerics/$(DEPDIR)/unit_tests_dbg-petsc_vector_test.Po \ numerics/$(DEPDIR)/unit_tests_dbg-tensor_traits_test.Po \ numerics/$(DEPDIR)/unit_tests_dbg-trilinos_epetra_vector_test.Po \ + numerics/$(DEPDIR)/unit_tests_dbg-type_N_tensor_test.Po \ numerics/$(DEPDIR)/unit_tests_dbg-type_tensor_test.Po \ numerics/$(DEPDIR)/unit_tests_dbg-vector_value_test.Po \ numerics/$(DEPDIR)/unit_tests_devel-composite_function_test.Po \ @@ -1592,6 +1598,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ numerics/$(DEPDIR)/unit_tests_devel-petsc_vector_test.Po \ numerics/$(DEPDIR)/unit_tests_devel-tensor_traits_test.Po \ numerics/$(DEPDIR)/unit_tests_devel-trilinos_epetra_vector_test.Po \ + numerics/$(DEPDIR)/unit_tests_devel-type_N_tensor_test.Po \ numerics/$(DEPDIR)/unit_tests_devel-type_tensor_test.Po \ numerics/$(DEPDIR)/unit_tests_devel-vector_value_test.Po \ numerics/$(DEPDIR)/unit_tests_oprof-composite_function_test.Po \ @@ -1610,6 +1617,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ numerics/$(DEPDIR)/unit_tests_oprof-petsc_vector_test.Po \ numerics/$(DEPDIR)/unit_tests_oprof-tensor_traits_test.Po \ numerics/$(DEPDIR)/unit_tests_oprof-trilinos_epetra_vector_test.Po \ + numerics/$(DEPDIR)/unit_tests_oprof-type_N_tensor_test.Po \ numerics/$(DEPDIR)/unit_tests_oprof-type_tensor_test.Po \ numerics/$(DEPDIR)/unit_tests_oprof-vector_value_test.Po \ numerics/$(DEPDIR)/unit_tests_opt-composite_function_test.Po \ @@ -1628,6 +1636,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ numerics/$(DEPDIR)/unit_tests_opt-petsc_vector_test.Po \ numerics/$(DEPDIR)/unit_tests_opt-tensor_traits_test.Po \ numerics/$(DEPDIR)/unit_tests_opt-trilinos_epetra_vector_test.Po \ + numerics/$(DEPDIR)/unit_tests_opt-type_N_tensor_test.Po \ numerics/$(DEPDIR)/unit_tests_opt-type_tensor_test.Po \ numerics/$(DEPDIR)/unit_tests_opt-vector_value_test.Po \ numerics/$(DEPDIR)/unit_tests_prof-composite_function_test.Po \ @@ -1646,6 +1655,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ numerics/$(DEPDIR)/unit_tests_prof-petsc_vector_test.Po \ numerics/$(DEPDIR)/unit_tests_prof-tensor_traits_test.Po \ numerics/$(DEPDIR)/unit_tests_prof-trilinos_epetra_vector_test.Po \ + numerics/$(DEPDIR)/unit_tests_prof-type_N_tensor_test.Po \ numerics/$(DEPDIR)/unit_tests_prof-type_tensor_test.Po \ numerics/$(DEPDIR)/unit_tests_prof-vector_value_test.Po \ parallel/$(DEPDIR)/unit_tests_dbg-message_tag.Po \ @@ -2301,9 +2311,9 @@ unit_tests_sources = driver.C libmesh_cppunit.h stream_redirector.h \ numerics/parsed_function_test.C numerics/petsc_vector_test.C \ numerics/trilinos_epetra_vector_test.C \ numerics/type_vector_test.h numerics/vector_value_test.C \ - numerics/type_tensor_test.C numerics/sparse_matrix_test.h \ - numerics/dense_matrix_test.C numerics/petsc_matrix_test.C \ - numerics/diagonal_matrix_test.C \ + numerics/type_tensor_test.C numerics/type_N_tensor_test.C \ + numerics/sparse_matrix_test.h numerics/dense_matrix_test.C \ + numerics/petsc_matrix_test.C numerics/diagonal_matrix_test.C \ numerics/lumped_mass_matrix_test.C \ numerics/eigen_sparse_matrix_test.C \ numerics/tensor_traits_test.C parallel/message_tag.C \ @@ -2718,6 +2728,8 @@ numerics/unit_tests_dbg-vector_value_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_dbg-type_tensor_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) +numerics/unit_tests_dbg-type_N_tensor_test.$(OBJEXT): \ + numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_dbg-dense_matrix_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_dbg-petsc_matrix_test.$(OBJEXT): \ @@ -3008,6 +3020,8 @@ numerics/unit_tests_devel-vector_value_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_devel-type_tensor_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) +numerics/unit_tests_devel-type_N_tensor_test.$(OBJEXT): \ + numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_devel-dense_matrix_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_devel-petsc_matrix_test.$(OBJEXT): \ @@ -3256,6 +3270,8 @@ numerics/unit_tests_oprof-vector_value_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_oprof-type_tensor_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) +numerics/unit_tests_oprof-type_N_tensor_test.$(OBJEXT): \ + numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_oprof-dense_matrix_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_oprof-petsc_matrix_test.$(OBJEXT): \ @@ -3504,6 +3520,8 @@ numerics/unit_tests_opt-vector_value_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_opt-type_tensor_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) +numerics/unit_tests_opt-type_N_tensor_test.$(OBJEXT): \ + numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_opt-dense_matrix_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_opt-petsc_matrix_test.$(OBJEXT): \ @@ -3752,6 +3770,8 @@ numerics/unit_tests_prof-vector_value_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_prof-type_tensor_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) +numerics/unit_tests_prof-type_N_tensor_test.$(OBJEXT): \ + numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_prof-dense_matrix_test.$(OBJEXT): \ numerics/$(am__dirstamp) numerics/$(DEPDIR)/$(am__dirstamp) numerics/unit_tests_prof-petsc_matrix_test.$(OBJEXT): \ @@ -4231,6 +4251,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_dbg-petsc_vector_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_dbg-tensor_traits_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_dbg-trilinos_epetra_vector_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_dbg-type_N_tensor_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_dbg-type_tensor_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_dbg-vector_value_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_devel-composite_function_test.Po@am__quote@ # am--include-marker @@ -4249,6 +4270,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_devel-petsc_vector_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_devel-tensor_traits_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_devel-trilinos_epetra_vector_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_devel-type_N_tensor_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_devel-type_tensor_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_devel-vector_value_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_oprof-composite_function_test.Po@am__quote@ # am--include-marker @@ -4267,6 +4289,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_oprof-petsc_vector_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_oprof-tensor_traits_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_oprof-trilinos_epetra_vector_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_oprof-type_N_tensor_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_oprof-type_tensor_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_oprof-vector_value_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_opt-composite_function_test.Po@am__quote@ # am--include-marker @@ -4285,6 +4308,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_opt-petsc_vector_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_opt-tensor_traits_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_opt-trilinos_epetra_vector_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_opt-type_N_tensor_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_opt-type_tensor_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_opt-vector_value_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_prof-composite_function_test.Po@am__quote@ # am--include-marker @@ -4303,6 +4327,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_prof-petsc_vector_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_prof-tensor_traits_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_prof-trilinos_epetra_vector_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_prof-type_N_tensor_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_prof-type_tensor_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@numerics/$(DEPDIR)/unit_tests_prof-vector_value_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@parallel/$(DEPDIR)/unit_tests_dbg-message_tag.Po@am__quote@ # am--include-marker @@ -5643,6 +5668,20 @@ numerics/unit_tests_dbg-type_tensor_test.obj: numerics/type_tensor_test.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_dbg-type_tensor_test.obj `if test -f 'numerics/type_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_tensor_test.C'; fi` +numerics/unit_tests_dbg-type_N_tensor_test.o: numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_dbg-type_N_tensor_test.o -MD -MP -MF numerics/$(DEPDIR)/unit_tests_dbg-type_N_tensor_test.Tpo -c -o numerics/unit_tests_dbg-type_N_tensor_test.o `test -f 'numerics/type_N_tensor_test.C' || echo '$(srcdir)/'`numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_dbg-type_N_tensor_test.Tpo numerics/$(DEPDIR)/unit_tests_dbg-type_N_tensor_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='numerics/type_N_tensor_test.C' object='numerics/unit_tests_dbg-type_N_tensor_test.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_dbg-type_N_tensor_test.o `test -f 'numerics/type_N_tensor_test.C' || echo '$(srcdir)/'`numerics/type_N_tensor_test.C + +numerics/unit_tests_dbg-type_N_tensor_test.obj: numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_dbg-type_N_tensor_test.obj -MD -MP -MF numerics/$(DEPDIR)/unit_tests_dbg-type_N_tensor_test.Tpo -c -o numerics/unit_tests_dbg-type_N_tensor_test.obj `if test -f 'numerics/type_N_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_N_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_N_tensor_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_dbg-type_N_tensor_test.Tpo numerics/$(DEPDIR)/unit_tests_dbg-type_N_tensor_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='numerics/type_N_tensor_test.C' object='numerics/unit_tests_dbg-type_N_tensor_test.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_dbg-type_N_tensor_test.obj `if test -f 'numerics/type_N_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_N_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_N_tensor_test.C'; fi` + numerics/unit_tests_dbg-dense_matrix_test.o: numerics/dense_matrix_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_dbg-dense_matrix_test.o -MD -MP -MF numerics/$(DEPDIR)/unit_tests_dbg-dense_matrix_test.Tpo -c -o numerics/unit_tests_dbg-dense_matrix_test.o `test -f 'numerics/dense_matrix_test.C' || echo '$(srcdir)/'`numerics/dense_matrix_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_dbg-dense_matrix_test.Tpo numerics/$(DEPDIR)/unit_tests_dbg-dense_matrix_test.Po @@ -7309,6 +7348,20 @@ numerics/unit_tests_devel-type_tensor_test.obj: numerics/type_tensor_test.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_devel-type_tensor_test.obj `if test -f 'numerics/type_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_tensor_test.C'; fi` +numerics/unit_tests_devel-type_N_tensor_test.o: numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_devel-type_N_tensor_test.o -MD -MP -MF numerics/$(DEPDIR)/unit_tests_devel-type_N_tensor_test.Tpo -c -o numerics/unit_tests_devel-type_N_tensor_test.o `test -f 'numerics/type_N_tensor_test.C' || echo '$(srcdir)/'`numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_devel-type_N_tensor_test.Tpo numerics/$(DEPDIR)/unit_tests_devel-type_N_tensor_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='numerics/type_N_tensor_test.C' object='numerics/unit_tests_devel-type_N_tensor_test.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_devel-type_N_tensor_test.o `test -f 'numerics/type_N_tensor_test.C' || echo '$(srcdir)/'`numerics/type_N_tensor_test.C + +numerics/unit_tests_devel-type_N_tensor_test.obj: numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_devel-type_N_tensor_test.obj -MD -MP -MF numerics/$(DEPDIR)/unit_tests_devel-type_N_tensor_test.Tpo -c -o numerics/unit_tests_devel-type_N_tensor_test.obj `if test -f 'numerics/type_N_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_N_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_N_tensor_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_devel-type_N_tensor_test.Tpo numerics/$(DEPDIR)/unit_tests_devel-type_N_tensor_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='numerics/type_N_tensor_test.C' object='numerics/unit_tests_devel-type_N_tensor_test.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_devel-type_N_tensor_test.obj `if test -f 'numerics/type_N_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_N_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_N_tensor_test.C'; fi` + numerics/unit_tests_devel-dense_matrix_test.o: numerics/dense_matrix_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_devel-dense_matrix_test.o -MD -MP -MF numerics/$(DEPDIR)/unit_tests_devel-dense_matrix_test.Tpo -c -o numerics/unit_tests_devel-dense_matrix_test.o `test -f 'numerics/dense_matrix_test.C' || echo '$(srcdir)/'`numerics/dense_matrix_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_devel-dense_matrix_test.Tpo numerics/$(DEPDIR)/unit_tests_devel-dense_matrix_test.Po @@ -8975,6 +9028,20 @@ numerics/unit_tests_oprof-type_tensor_test.obj: numerics/type_tensor_test.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_oprof-type_tensor_test.obj `if test -f 'numerics/type_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_tensor_test.C'; fi` +numerics/unit_tests_oprof-type_N_tensor_test.o: numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_oprof-type_N_tensor_test.o -MD -MP -MF numerics/$(DEPDIR)/unit_tests_oprof-type_N_tensor_test.Tpo -c -o numerics/unit_tests_oprof-type_N_tensor_test.o `test -f 'numerics/type_N_tensor_test.C' || echo '$(srcdir)/'`numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_oprof-type_N_tensor_test.Tpo numerics/$(DEPDIR)/unit_tests_oprof-type_N_tensor_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='numerics/type_N_tensor_test.C' object='numerics/unit_tests_oprof-type_N_tensor_test.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_oprof-type_N_tensor_test.o `test -f 'numerics/type_N_tensor_test.C' || echo '$(srcdir)/'`numerics/type_N_tensor_test.C + +numerics/unit_tests_oprof-type_N_tensor_test.obj: numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_oprof-type_N_tensor_test.obj -MD -MP -MF numerics/$(DEPDIR)/unit_tests_oprof-type_N_tensor_test.Tpo -c -o numerics/unit_tests_oprof-type_N_tensor_test.obj `if test -f 'numerics/type_N_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_N_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_N_tensor_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_oprof-type_N_tensor_test.Tpo numerics/$(DEPDIR)/unit_tests_oprof-type_N_tensor_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='numerics/type_N_tensor_test.C' object='numerics/unit_tests_oprof-type_N_tensor_test.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_oprof-type_N_tensor_test.obj `if test -f 'numerics/type_N_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_N_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_N_tensor_test.C'; fi` + numerics/unit_tests_oprof-dense_matrix_test.o: numerics/dense_matrix_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_oprof-dense_matrix_test.o -MD -MP -MF numerics/$(DEPDIR)/unit_tests_oprof-dense_matrix_test.Tpo -c -o numerics/unit_tests_oprof-dense_matrix_test.o `test -f 'numerics/dense_matrix_test.C' || echo '$(srcdir)/'`numerics/dense_matrix_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_oprof-dense_matrix_test.Tpo numerics/$(DEPDIR)/unit_tests_oprof-dense_matrix_test.Po @@ -10641,6 +10708,20 @@ numerics/unit_tests_opt-type_tensor_test.obj: numerics/type_tensor_test.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_opt-type_tensor_test.obj `if test -f 'numerics/type_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_tensor_test.C'; fi` +numerics/unit_tests_opt-type_N_tensor_test.o: numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_opt-type_N_tensor_test.o -MD -MP -MF numerics/$(DEPDIR)/unit_tests_opt-type_N_tensor_test.Tpo -c -o numerics/unit_tests_opt-type_N_tensor_test.o `test -f 'numerics/type_N_tensor_test.C' || echo '$(srcdir)/'`numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_opt-type_N_tensor_test.Tpo numerics/$(DEPDIR)/unit_tests_opt-type_N_tensor_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='numerics/type_N_tensor_test.C' object='numerics/unit_tests_opt-type_N_tensor_test.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_opt-type_N_tensor_test.o `test -f 'numerics/type_N_tensor_test.C' || echo '$(srcdir)/'`numerics/type_N_tensor_test.C + +numerics/unit_tests_opt-type_N_tensor_test.obj: numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_opt-type_N_tensor_test.obj -MD -MP -MF numerics/$(DEPDIR)/unit_tests_opt-type_N_tensor_test.Tpo -c -o numerics/unit_tests_opt-type_N_tensor_test.obj `if test -f 'numerics/type_N_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_N_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_N_tensor_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_opt-type_N_tensor_test.Tpo numerics/$(DEPDIR)/unit_tests_opt-type_N_tensor_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='numerics/type_N_tensor_test.C' object='numerics/unit_tests_opt-type_N_tensor_test.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_opt-type_N_tensor_test.obj `if test -f 'numerics/type_N_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_N_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_N_tensor_test.C'; fi` + numerics/unit_tests_opt-dense_matrix_test.o: numerics/dense_matrix_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_opt-dense_matrix_test.o -MD -MP -MF numerics/$(DEPDIR)/unit_tests_opt-dense_matrix_test.Tpo -c -o numerics/unit_tests_opt-dense_matrix_test.o `test -f 'numerics/dense_matrix_test.C' || echo '$(srcdir)/'`numerics/dense_matrix_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_opt-dense_matrix_test.Tpo numerics/$(DEPDIR)/unit_tests_opt-dense_matrix_test.Po @@ -12307,6 +12388,20 @@ numerics/unit_tests_prof-type_tensor_test.obj: numerics/type_tensor_test.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_prof-type_tensor_test.obj `if test -f 'numerics/type_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_tensor_test.C'; fi` +numerics/unit_tests_prof-type_N_tensor_test.o: numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_prof-type_N_tensor_test.o -MD -MP -MF numerics/$(DEPDIR)/unit_tests_prof-type_N_tensor_test.Tpo -c -o numerics/unit_tests_prof-type_N_tensor_test.o `test -f 'numerics/type_N_tensor_test.C' || echo '$(srcdir)/'`numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_prof-type_N_tensor_test.Tpo numerics/$(DEPDIR)/unit_tests_prof-type_N_tensor_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='numerics/type_N_tensor_test.C' object='numerics/unit_tests_prof-type_N_tensor_test.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_prof-type_N_tensor_test.o `test -f 'numerics/type_N_tensor_test.C' || echo '$(srcdir)/'`numerics/type_N_tensor_test.C + +numerics/unit_tests_prof-type_N_tensor_test.obj: numerics/type_N_tensor_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_prof-type_N_tensor_test.obj -MD -MP -MF numerics/$(DEPDIR)/unit_tests_prof-type_N_tensor_test.Tpo -c -o numerics/unit_tests_prof-type_N_tensor_test.obj `if test -f 'numerics/type_N_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_N_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_N_tensor_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_prof-type_N_tensor_test.Tpo numerics/$(DEPDIR)/unit_tests_prof-type_N_tensor_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='numerics/type_N_tensor_test.C' object='numerics/unit_tests_prof-type_N_tensor_test.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -c -o numerics/unit_tests_prof-type_N_tensor_test.obj `if test -f 'numerics/type_N_tensor_test.C'; then $(CYGPATH_W) 'numerics/type_N_tensor_test.C'; else $(CYGPATH_W) '$(srcdir)/numerics/type_N_tensor_test.C'; fi` + numerics/unit_tests_prof-dense_matrix_test.o: numerics/dense_matrix_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT numerics/unit_tests_prof-dense_matrix_test.o -MD -MP -MF numerics/$(DEPDIR)/unit_tests_prof-dense_matrix_test.Tpo -c -o numerics/unit_tests_prof-dense_matrix_test.o `test -f 'numerics/dense_matrix_test.C' || echo '$(srcdir)/'`numerics/dense_matrix_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) numerics/$(DEPDIR)/unit_tests_prof-dense_matrix_test.Tpo numerics/$(DEPDIR)/unit_tests_prof-dense_matrix_test.Po @@ -13550,6 +13645,7 @@ distclean: distclean-am -rm -f numerics/$(DEPDIR)/unit_tests_dbg-petsc_vector_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_dbg-tensor_traits_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_dbg-trilinos_epetra_vector_test.Po + -rm -f numerics/$(DEPDIR)/unit_tests_dbg-type_N_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_dbg-type_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_dbg-vector_value_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_devel-composite_function_test.Po @@ -13568,6 +13664,7 @@ distclean: distclean-am -rm -f numerics/$(DEPDIR)/unit_tests_devel-petsc_vector_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_devel-tensor_traits_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_devel-trilinos_epetra_vector_test.Po + -rm -f numerics/$(DEPDIR)/unit_tests_devel-type_N_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_devel-type_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_devel-vector_value_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_oprof-composite_function_test.Po @@ -13586,6 +13683,7 @@ distclean: distclean-am -rm -f numerics/$(DEPDIR)/unit_tests_oprof-petsc_vector_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_oprof-tensor_traits_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_oprof-trilinos_epetra_vector_test.Po + -rm -f numerics/$(DEPDIR)/unit_tests_oprof-type_N_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_oprof-type_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_oprof-vector_value_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_opt-composite_function_test.Po @@ -13604,6 +13702,7 @@ distclean: distclean-am -rm -f numerics/$(DEPDIR)/unit_tests_opt-petsc_vector_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_opt-tensor_traits_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_opt-trilinos_epetra_vector_test.Po + -rm -f numerics/$(DEPDIR)/unit_tests_opt-type_N_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_opt-type_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_opt-vector_value_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_prof-composite_function_test.Po @@ -13622,6 +13721,7 @@ distclean: distclean-am -rm -f numerics/$(DEPDIR)/unit_tests_prof-petsc_vector_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_prof-tensor_traits_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_prof-trilinos_epetra_vector_test.Po + -rm -f numerics/$(DEPDIR)/unit_tests_prof-type_N_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_prof-type_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_prof-vector_value_test.Po -rm -f parallel/$(DEPDIR)/unit_tests_dbg-message_tag.Po @@ -14192,6 +14292,7 @@ maintainer-clean: maintainer-clean-am -rm -f numerics/$(DEPDIR)/unit_tests_dbg-petsc_vector_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_dbg-tensor_traits_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_dbg-trilinos_epetra_vector_test.Po + -rm -f numerics/$(DEPDIR)/unit_tests_dbg-type_N_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_dbg-type_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_dbg-vector_value_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_devel-composite_function_test.Po @@ -14210,6 +14311,7 @@ maintainer-clean: maintainer-clean-am -rm -f numerics/$(DEPDIR)/unit_tests_devel-petsc_vector_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_devel-tensor_traits_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_devel-trilinos_epetra_vector_test.Po + -rm -f numerics/$(DEPDIR)/unit_tests_devel-type_N_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_devel-type_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_devel-vector_value_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_oprof-composite_function_test.Po @@ -14228,6 +14330,7 @@ maintainer-clean: maintainer-clean-am -rm -f numerics/$(DEPDIR)/unit_tests_oprof-petsc_vector_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_oprof-tensor_traits_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_oprof-trilinos_epetra_vector_test.Po + -rm -f numerics/$(DEPDIR)/unit_tests_oprof-type_N_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_oprof-type_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_oprof-vector_value_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_opt-composite_function_test.Po @@ -14246,6 +14349,7 @@ maintainer-clean: maintainer-clean-am -rm -f numerics/$(DEPDIR)/unit_tests_opt-petsc_vector_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_opt-tensor_traits_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_opt-trilinos_epetra_vector_test.Po + -rm -f numerics/$(DEPDIR)/unit_tests_opt-type_N_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_opt-type_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_opt-vector_value_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_prof-composite_function_test.Po @@ -14264,6 +14368,7 @@ maintainer-clean: maintainer-clean-am -rm -f numerics/$(DEPDIR)/unit_tests_prof-petsc_vector_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_prof-tensor_traits_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_prof-trilinos_epetra_vector_test.Po + -rm -f numerics/$(DEPDIR)/unit_tests_prof-type_N_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_prof-type_tensor_test.Po -rm -f numerics/$(DEPDIR)/unit_tests_prof-vector_value_test.Po -rm -f parallel/$(DEPDIR)/unit_tests_dbg-message_tag.Po diff --git a/tests/numerics/type_N_tensor_test.C b/tests/numerics/type_N_tensor_test.C index 5be287fea28..cb605880b6d 100644 --- a/tests/numerics/type_N_tensor_test.C +++ b/tests/numerics/type_N_tensor_test.C @@ -61,7 +61,7 @@ private: } - void ttestCastVector() + void testCastVector() { } From 7b9b3b4373bcd32bbf1002c0e54fb55949b91ac3 Mon Sep 17 00:00:00 2001 From: Guillaume Giudicelli Date: Tue, 2 Dec 2025 14:05:43 -0700 Subject: [PATCH 5/6] Implement some constructors, and mark as unimplemented the others --- include/numerics/type_n_tensor.h | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/include/numerics/type_n_tensor.h b/include/numerics/type_n_tensor.h index 727d22db8d5..bee1497c933 100644 --- a/include/numerics/type_n_tensor.h +++ b/include/numerics/type_n_tensor.h @@ -55,13 +55,31 @@ class TypeNTensor TypeNTensor () : _coords(std::vector(int_pow(LIBMESH_DIM, N))) {} - TypeNTensor (const T &) : _coords(std::vector(int_pow(LIBMESH_DIM, N))) {} + TypeNTensor(const T &) : _coords(std::vector(int_pow(LIBMESH_DIM, N))) + { + libmesh_not_implemented(); + } + + TypeNTensor(const TypeVector &) : _coords(std::vector(int_pow(LIBMESH_DIM, N))) + { + libmesh_not_implemented(); + } - TypeNTensor (const TypeVector &) : _coords(std::vector(int_pow(LIBMESH_DIM, N))) {} + TypeNTensor(const TypeTensor &) : _coords(std::vector(int_pow(LIBMESH_DIM, N))) + { + libmesh_not_implemented(); + } - TypeNTensor (const TypeTensor &) : _coords(std::vector(int_pow(LIBMESH_DIM, N))) {} + TypeNTensor(const TypeNTensor & TN) : _coords(std::vector(int_pow(LIBMESH_DIM, N))) + { + _coords = TN._coords; + } - TypeNTensor (const TypeNTensor &) : _coords(std::vector(int_pow(LIBMESH_DIM, N))) {} + TypeNTensor(const std::vector & vec) : _coords(std::vector(int_pow(LIBMESH_DIM, N))) + { + libmesh_assert(int_pow(LIBMESH_DIM, N) == vec.size()); + _coords = vec; + } TypeNTensor & operator=(const TypeNTensor &) { return *this; } From 4175ba9487b432367e19c82ed9bad8e0d88f56d8 Mon Sep 17 00:00:00 2001 From: Guillaume Giudicelli Date: Tue, 2 Dec 2025 14:12:37 -0700 Subject: [PATCH 6/6] Implement the 6 tests for order N tensors to support idaholab/moose#32023 --- tests/numerics/type_N_tensor_test.C | 80 ++++++++++++++++++++++++----- 1 file changed, 66 insertions(+), 14 deletions(-) diff --git a/tests/numerics/type_N_tensor_test.C b/tests/numerics/type_N_tensor_test.C index cb605880b6d..eea80820f0c 100644 --- a/tests/numerics/type_N_tensor_test.C +++ b/tests/numerics/type_N_tensor_test.C @@ -1,4 +1,5 @@ // libmesh includes +#include #include #include #include @@ -16,11 +17,14 @@ public: LIBMESH_CPPUNIT_TEST_SUITE(TypeNTensorTest); +#if LIBMESH_DIM > 2 CPPUNIT_TEST(testOperatorsScalar); CPPUNIT_TEST(testOperatorsTensor); CPPUNIT_TEST(testCastVector); CPPUNIT_TEST(testZero); + CPPUNIT_TEST(testNorm); CPPUNIT_TEST(testSlice); +#endif CPPUNIT_TEST_SUITE_END(); @@ -29,51 +33,99 @@ private: { LOG_UNIT_TEST; - // Add a number - - // Subtract a number + std::vector values = {0, 1, 2, 3, 4, 5, 6, 7, 8}; + TypeNTensor<2, Real> T(values); // Multiply by a number + T *= 3.1; + for (const auto i : index_range(values)) + LIBMESH_ASSERT_FP_EQUAL(3.1 * values[i], T._coords[i], 1e-12); // Divide by a number - - // TensorValue tensor(1, 2, 0, 3, 4, 0); - // VectorValue vector(5, 6, 0); - // auto left_mult = vector * tensor; - // auto right_mult = tensor * vector; - // LIBMESH_ASSERT_FP_EQUAL(23, left_mult(0), 1e-12); - // LIBMESH_ASSERT_FP_EQUAL(34, left_mult(1), 1e-12); - // LIBMESH_ASSERT_FP_EQUAL(17, right_mult(0), 1e-12); - // LIBMESH_ASSERT_FP_EQUAL(39, right_mult(1), 1e-12); + T /= 3.1; + for (const auto i : index_range(values)) + LIBMESH_ASSERT_FP_EQUAL(values[i], T._coords[i], 1e-12); } void testOperatorsTensor() { + std::vector values = {0, 1, 2, 3, 4, 5, 6, 7, 8}; + std::vector values2 = {0.1, 1.2, 2.3, 3.4, 4.5, 5.6, 6.7, 7.8, 8.9}; + TypeNTensor<2, Real> T(values); + TypeNTensor<2, Real> T2(values2); + // Add a tensor + T += T2; + for (const auto i : index_range(values)) + LIBMESH_ASSERT_FP_EQUAL(values[i] + values2[i], T._coords[i], 1e-12); // Return sum of two tensors + const auto T3 = T + T2; + for (const auto i : index_range(values)) + LIBMESH_ASSERT_FP_EQUAL(values[i] + 2 * values2[i], T3._coords[i], 1e-12); // Subtract a tensor + T -= T2; + for (const auto i : index_range(values)) + LIBMESH_ASSERT_FP_EQUAL(values[i], T._coords[i], 1e-12); // Return subtraction of one tensor by another + const auto T4 = T - T2; + for (const auto i : index_range(values)) + LIBMESH_ASSERT_FP_EQUAL(values[i] - values2[i], T4._coords[i], 1e-12); // Add a scaled tensor - + T.add_scaled(T2, 3); + for (const auto i : index_range(values)) + LIBMESH_ASSERT_FP_EQUAL(values[i] + 3 * values2[i], T._coords[i], 1e-12); } void testCastVector() { + std::vector values = {0, 1, 2}; + TypeNTensor<1, Real> T(values); + VectorValue v2 = T; + for (const auto i : index_range(values)) + LIBMESH_ASSERT_FP_EQUAL(values[i], v2(i), 1e-12); } void testZero() { + std::vector values = {0, 1, 2, 3, 4, 5, 6, 7, 8}; + TypeNTensor<2, Real> T(values); + TypeNTensor<2, Real> T2(values); + + T = 0; + for (const auto i : index_range(values)) + LIBMESH_ASSERT_FP_EQUAL(0., T._coords[i], 1e-12); + T2.zero(); + for (const auto i : index_range(values)) + LIBMESH_ASSERT_FP_EQUAL(0., T2._coords[i], 1e-12); + } + void testNorm() + { + std::vector values = {0, 1, 2, 3, 4, 5, 6, 7, 8}; + TypeNTensor<2, Real> T(values); + Real sum_sq = (8 * 9 * 17 / 6.); + LIBMESH_ASSERT_FP_EQUAL(sum_sq, T.norm_sq(), 1e-12); + LIBMESH_ASSERT_FP_EQUAL(std::sqrt(sum_sq), T.norm(), 1e-12); } void testSlice() { - + std::vector values = {0, 1, 2, 3, 4, 5, 6, 7, 8}; + TypeNTensor<2, Real> T(values); + const auto s0 = T.slice(0); + const auto s1 = T.slice(1); + const auto s2 = T.slice(2); + for (const auto i : make_range(3)) + LIBMESH_ASSERT_FP_EQUAL(values[i], s0._coords[i], 1e-12); + for (const auto i : make_range(3)) + LIBMESH_ASSERT_FP_EQUAL(values[3 + i], s1._coords[i], 1e-12); + for (const auto i : make_range(3)) + LIBMESH_ASSERT_FP_EQUAL(values[6 + i], s2._coords[i], 1e-12); } };