From 713d56a8ae9c17de306fa3f33de5711833fcd2a8 Mon Sep 17 00:00:00 2001 From: Alex Lindsay Date: Mon, 14 Sep 2026 17:03:59 -0700 Subject: [PATCH 1/8] Add the one-dimensional nodal basis on the Gauss-Lobatto points The basis of degree p interpolates at the p+1 Gauss-Lobatto points, which it reads from QGaussLobatto so that it is collocated with the rule of the same count. At one of its own points a shape function is one or zero and its derivatives are rows of the differentiation matrices the basis carries, so the values a collocated quadrature rule asks for cost nothing to produce. Away from them the barycentric form gives the value and its first two derivatives. The differentiation matrix is built from the ratios of the barycentric weights, with each diagonal entry the negation of the sum of its row, since the shape functions sum to one everywhere and so their derivatives sum to zero. That identity supplies the endpoint entries, -p(p+1)/4 and p(p+1)/4, without a case of their own. The second derivative matrix is the first applied twice, which is exact because the derivative of a polynomial of degree p has degree p-1 and this basis interpolates it exactly. The bases for every tabulated point count are built together on first use, a few thousand operations, so that reaching one needs no lock. Co-Authored-By: Claude --- include/fe/fe_lagrange_gll_shape_1D.h | 303 ++++++++++++++++++++++++++ 1 file changed, 303 insertions(+) create mode 100644 include/fe/fe_lagrange_gll_shape_1D.h diff --git a/include/fe/fe_lagrange_gll_shape_1D.h b/include/fe/fe_lagrange_gll_shape_1D.h new file mode 100644 index 0000000000..a27cdeb7b5 --- /dev/null +++ b/include/fe/fe_lagrange_gll_shape_1D.h @@ -0,0 +1,303 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +#ifndef LIBMESH_FE_LAGRANGE_GLL_SHAPE_1D_H +#define LIBMESH_FE_LAGRANGE_GLL_SHAPE_1D_H + +// Local includes +#include "libmesh/enum_order.h" +#include "libmesh/int_range.h" +#include "libmesh/quadrature_gauss_lobatto.h" + +// C++ includes +#include +#include + +// The one-dimensional nodal basis on the Gauss-Lobatto points, which the tensor product +// elements build their shape functions from. +// +// The interpolation points of this basis are the points of the Gauss-Lobatto rule of the +// same count, read from QGaussLobatto so that the two carry the same values. A basis and a +// quadrature rule that share their points are collocated: every shape function is one at +// its own point and zero at the others, so the mass matrix a collocated rule assembles is +// diagonal, for any mapping and any element shape. That property is exact only while the +// two agree exactly, which is why the points are taken from the rule rather than recomputed +// here. + +namespace libMesh +{ + +/** + * The one-dimensional nodal basis on \p n Gauss-Lobatto points, of degree n-1. + */ +struct GLLBasis1D +{ + /// The interpolation points, in ascending order, the first and last being -1 and 1 + std::vector nodes; + + /// The barycentric weights, the i'th being the reciprocal of \f$\prod_{j \neq i}(\xi_i - \xi_j)\f$ + std::vector weights; + + /// \p deriv[k][i] is the derivative of the i'th shape function at the k'th point + std::vector> deriv; + + /// \p second[k][i] is the second derivative of the i'th shape function at the k'th point + std::vector> second; +}; + + +/** + * The number of points of the largest Gauss-Lobatto rule QGaussLobatto tabulates, the one + * it uses for the orders FORTYSECOND and FORTYTHIRD. A basis interpolates at the points of + * one of those rules, so its degree runs to one less than this. + */ +constexpr unsigned int fe_lagrange_gll_max_points_1D = 23; + + +/** + * \returns The one-dimensional nodal basis on \p n Gauss-Lobatto points. + */ +inline GLLBasis1D build_gll_basis_1D(const unsigned int n) +{ + GLLBasis1D b; + + // A rule of n points is exact through degree 2n-3, so that is the order that selects it + QGaussLobatto rule(1, static_cast(2*n - 3)); + rule.init(EDGE2); + libmesh_assert_equal_to(rule.n_points(), n); + + b.nodes.resize(n); + for (const auto i : make_range(n)) + b.nodes[i] = rule.qp(i)(0); + + b.weights.resize(n); + for (const auto i : make_range(n)) + { + Real product = 1.; + for (const auto j : make_range(n)) + if (j != i) + product *= b.nodes[i] - b.nodes[j]; + b.weights[i] = 1. / product; + } + + // Away from its own point the derivative of a shape function is the ratio of two + // barycentric weights over the distance between the points. At its own point it is minus + // the sum of the others in its row, since the shape functions sum to one everywhere and + // so their derivatives sum to zero. That identity gives the two endpoint entries, + // -p(p+1)/4 and p(p+1)/4, without a case of their own. + b.deriv.assign(n, std::vector(n, 0.)); + for (const auto k : make_range(n)) + { + Real row_sum = 0.; + for (const auto i : make_range(n)) + if (i != k) + { + b.deriv[k][i] = (b.weights[i] / b.weights[k]) / (b.nodes[k] - b.nodes[i]); + row_sum += b.deriv[k][i]; + } + b.deriv[k][k] = -row_sum; + } + + // The derivative of a polynomial of degree p is one of degree p-1, which this basis + // interpolates exactly, so applying the first derivative twice gives the second. + b.second.assign(n, std::vector(n, 0.)); + for (const auto k : make_range(n)) + for (const auto i : make_range(n)) + { + Real sum = 0.; + for (const auto m : make_range(n)) + sum += b.deriv[k][m] * b.deriv[m][i]; + b.second[k][i] = sum; + } + + return b; +} + +/** + * \returns The one-dimensional basis of degree \p order, built once and shared by all + * callers. + * + * The bases are built together on first use, which is a few thousand operations, so that + * no lock is needed to reach one. + */ +inline const GLLBasis1D & fe_lagrange_gll_1D_basis(const Order order) +{ + static const std::array bases = []() + { + std::array b; + for (unsigned int n = 2; n <= fe_lagrange_gll_max_points_1D; ++n) + b[n] = build_gll_basis_1D(n); + return b; + }(); + + const unsigned int n = static_cast(order) + 1; + + libmesh_error_msg_if(n < 2 || n > fe_lagrange_gll_max_points_1D, + "No Gauss-Lobatto nodal basis of order " << order << " is available; " + "the tabulated Gauss-Lobatto points run to " + << fe_lagrange_gll_max_points_1D << ", so the orders run from 1 to " + << fe_lagrange_gll_max_points_1D - 1 << "."); + + return bases[n]; +} + + +/** + * \returns The index of the point of \p b that sits at \p xi, or \p invalid_uint when \p xi + * is not one of them. + * + * The comparison is exact, and it holds for every point of a collocated quadrature rule + * because the basis and the rule read the same values from QGaussLobatto. + */ +inline unsigned int fe_lagrange_gll_1D_point(const GLLBasis1D & b, const Real xi) +{ + for (const auto i : index_range(b.nodes)) + if (b.nodes[i] == xi) + return cast_int(i); + + return invalid_uint; +} + +/** + * \returns The value of the \p i'th one-dimensional Gauss-Lobatto nodal shape function of + * degree \p order at \p xi. + * + * At one of the basis's own points the value is one or zero, which is the property a + * collocated quadrature rule rests on. Elsewhere the barycentric form gives it, whose + * numerator and denominator are the terms \f$w_j/(\xi - \xi_j)\f$ that the shape functions + * share. + */ +inline Real fe_lagrange_gll_1D_shape(const Order order, + const unsigned int i, + const Real xi) +{ + const GLLBasis1D & b = fe_lagrange_gll_1D_basis(order); + + libmesh_assert_less (i, b.nodes.size()); + + const unsigned int k = fe_lagrange_gll_1D_point(b, xi); + if (k != invalid_uint) + return (i == k) ? 1. : 0.; + + Real numerator = 0., denominator = 0.; + + for (const auto j : index_range(b.nodes)) + { + const Real term = b.weights[j] / (xi - b.nodes[j]); + + denominator += term; + + if (j == i) + numerator = term; + } + + return numerator / denominator; +} + +/** + * \returns The derivative of the \p i'th one-dimensional Gauss-Lobatto nodal shape function + * of degree \p order at \p xi. + * + * At one of the basis's own points this is a row of the differentiation matrix, which the + * basis carries. Elsewhere it follows from differentiating the barycentric form, as + * \f$\ell_i(\xi)\left[S_2/S_1 - 1/(\xi - \xi_i)\right]\f$ with + * \f$S_m = \sum_j w_j/(\xi-\xi_j)^m\f$. + */ +inline Real fe_lagrange_gll_1D_shape_deriv(const Order order, + const unsigned int i, + const unsigned int libmesh_dbg_var(j), + const Real xi) +{ + // only d()/dxi in 1D! + libmesh_assert_equal_to (j, 0); + + const GLLBasis1D & b = fe_lagrange_gll_1D_basis(order); + + libmesh_assert_less (i, b.nodes.size()); + + const unsigned int k = fe_lagrange_gll_1D_point(b, xi); + if (k != invalid_uint) + return b.deriv[k][i]; + + Real s1 = 0., s2 = 0., numerator = 0.; + + for (const auto m : index_range(b.nodes)) + { + const Real term = b.weights[m] / (xi - b.nodes[m]); + + s1 += term; + s2 += term / (xi - b.nodes[m]); + + if (m == i) + numerator = term; + } + + const Real value = numerator / s1; + + return value * (s2 / s1 - 1. / (xi - b.nodes[i])); +} + +/** + * \returns The second derivative of the \p i'th one-dimensional Gauss-Lobatto nodal shape + * function of degree \p order at \p xi. + * + * At one of the basis's own points this is a row of the second differentiation matrix. + * Elsewhere it follows from differentiating the barycentric form twice, as + * \f$2\ell_i(\xi)\left[1/d^2 - S_2/(d S_1) - S_3/S_1 + S_2^2/S_1^2\right]\f$ with + * \f$d = \xi - \xi_i\f$ and \f$S_m = \sum_j w_j/(\xi-\xi_j)^m\f$. + */ +inline Real fe_lagrange_gll_1D_shape_second_deriv(const Order order, + const unsigned int i, + const unsigned int libmesh_dbg_var(j), + const Real xi) +{ + // only d^2()/dxi^2 in 1D! + libmesh_assert_equal_to (j, 0); + + const GLLBasis1D & b = fe_lagrange_gll_1D_basis(order); + + libmesh_assert_less (i, b.nodes.size()); + + const unsigned int k = fe_lagrange_gll_1D_point(b, xi); + if (k != invalid_uint) + return b.second[k][i]; + + Real s1 = 0., s2 = 0., s3 = 0., numerator = 0.; + + for (const auto m : index_range(b.nodes)) + { + const Real d = xi - b.nodes[m]; + const Real term = b.weights[m] / d; + + s1 += term; + s2 += term / d; + s3 += term / (d * d); + + if (m == i) + numerator = term; + } + + const Real value = numerator / s1; + const Real d = xi - b.nodes[i]; + + return 2. * value * (1. / (d * d) - s2 / (d * s1) - s3 / s1 + (s2 * s2) / (s1 * s1)); +} + +} // namespace libMesh + +#endif // LIBMESH_FE_LAGRANGE_GLL_SHAPE_1D_H From 8a49c07479aa9cb6b4c1ef2e33e151a377890df4 Mon Sep 17 00:00:00 2001 From: Alex Lindsay Date: Tue, 15 Sep 2026 08:18:20 -0700 Subject: [PATCH 2/8] Add the L2_LAGRANGE_GLL family A nodal basis on the Gauss-Lobatto points, collocated with the Gauss-Lobatto rule of the same order: each shape function is one at its own point and zero at the others, so the mass matrix that rule assembles is diagonal, for any mapping and any element shape, and the values the rule asks for cost nothing to produce. The basis is a tensor product, so it lives on the tensor product element types alone. Every one of its degrees of freedom belongs to the element, which is what frees its order from the element's node count: a degree of freedom sits at a Gauss-Lobatto point, and past order two those are not nodes, so an order of eight runs on a plain QUAD4. The orders run from one to one less than the number of tabulated Gauss-Lobatto points, and asking beyond that says so. FEType::default_quadrature_rule returns the collocated rule, so a variable of this family is collocated without a caller arranging it. A rule of n points is exact through degree 2n-3, so the order yielding the p+1 points a basis of degree p interpolates at is 2p-1. That expression carries p refinement as well, since QBase raises a rule's order by twice the p_level it is initialized with and 2p-1 rises by two for each degree. Stiffness is still integrated exactly on an affine element, where the integrand has degree 2p-2 against the rule's 2p-1. The mass integrand has degree 2p, so it is the one term the rule does not reach, which is the trade that makes the matrix diagonal. Co-Authored-By: Claude --- Makefile.in | 415 ++++++++++++++++++++++++++++-- include/Makefile.in | 1 + include/enums/enum_fe_family.h | 3 + include/fe/fe_macro.h | 2 + include/include_HEADERS | 1 + include/libmesh/Makefile.am | 5 + include/libmesh/Makefile.in | 20 +- src/fe/fe_abstract.C | 12 + src/fe/fe_base.C | 12 + src/fe/fe_boundary.C | 2 + src/fe/fe_interface.C | 28 ++ src/fe/fe_l2_lagrange_gll.C | 198 ++++++++++++++ src/fe/fe_lagrange_gll_shape_0D.C | 147 +++++++++++ src/fe/fe_lagrange_gll_shape_1D.C | 217 ++++++++++++++++ src/fe/fe_lagrange_gll_shape_2D.C | 217 ++++++++++++++++ src/fe/fe_lagrange_gll_shape_3D.C | 217 ++++++++++++++++ src/fe/fe_transformation_base.C | 1 + src/fe/fe_type.C | 17 ++ src/libmesh_SOURCES | 5 + src/utils/string_to_enum.C | 1 + 20 files changed, 1493 insertions(+), 28 deletions(-) create mode 100644 src/fe/fe_l2_lagrange_gll.C create mode 100644 src/fe/fe_lagrange_gll_shape_0D.C create mode 100644 src/fe/fe_lagrange_gll_shape_1D.C create mode 100644 src/fe/fe_lagrange_gll_shape_2D.C create mode 100644 src/fe/fe_lagrange_gll_shape_3D.C diff --git a/Makefile.in b/Makefile.in index 39c3eacf72..b64ad5b3f9 100644 --- a/Makefile.in +++ b/Makefile.in @@ -325,10 +325,14 @@ am__libmesh_dbg_la_SOURCES_DIST = src/base/dirichlet_boundary.C \ src/fe/fe_hierarchic_shape_3D.C src/fe/fe_hierarchic_vec.C \ src/fe/fe_interface.C src/fe/fe_interface_inf_fe.C \ src/fe/fe_l2_hierarchic.C src/fe/fe_l2_lagrange.C \ - src/fe/fe_lagrange.C src/fe/fe_lagrange_shape_0D.C \ - src/fe/fe_lagrange_shape_1D.C src/fe/fe_lagrange_shape_2D.C \ - src/fe/fe_lagrange_shape_3D.C src/fe/fe_lagrange_vec.C \ - src/fe/fe_map.C src/fe/fe_monomial.C \ + src/fe/fe_l2_lagrange_gll.C src/fe/fe_lagrange.C \ + src/fe/fe_lagrange_gll_shape_0D.C \ + src/fe/fe_lagrange_gll_shape_1D.C \ + src/fe/fe_lagrange_gll_shape_2D.C \ + src/fe/fe_lagrange_gll_shape_3D.C \ + src/fe/fe_lagrange_shape_0D.C src/fe/fe_lagrange_shape_1D.C \ + src/fe/fe_lagrange_shape_2D.C src/fe/fe_lagrange_shape_3D.C \ + src/fe/fe_lagrange_vec.C src/fe/fe_map.C src/fe/fe_monomial.C \ src/fe/fe_monomial_shape_0D.C src/fe/fe_monomial_shape_1D.C \ src/fe/fe_monomial_shape_2D.C src/fe/fe_monomial_shape_3D.C \ src/fe/fe_monomial_vec.C src/fe/fe_nedelec_one.C \ @@ -673,7 +677,12 @@ am__objects_1 = src/base/libmesh_dbg_la-dirichlet_boundary.lo \ src/fe/libmesh_dbg_la-fe_interface_inf_fe.lo \ src/fe/libmesh_dbg_la-fe_l2_hierarchic.lo \ src/fe/libmesh_dbg_la-fe_l2_lagrange.lo \ + src/fe/libmesh_dbg_la-fe_l2_lagrange_gll.lo \ src/fe/libmesh_dbg_la-fe_lagrange.lo \ + src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_0D.lo \ + src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_1D.lo \ + src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_2D.lo \ + src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_3D.lo \ src/fe/libmesh_dbg_la-fe_lagrange_shape_0D.lo \ src/fe/libmesh_dbg_la-fe_lagrange_shape_1D.lo \ src/fe/libmesh_dbg_la-fe_lagrange_shape_2D.lo \ @@ -1140,10 +1149,14 @@ am__libmesh_devel_la_SOURCES_DIST = src/base/dirichlet_boundary.C \ src/fe/fe_hierarchic_shape_3D.C src/fe/fe_hierarchic_vec.C \ src/fe/fe_interface.C src/fe/fe_interface_inf_fe.C \ src/fe/fe_l2_hierarchic.C src/fe/fe_l2_lagrange.C \ - src/fe/fe_lagrange.C src/fe/fe_lagrange_shape_0D.C \ - src/fe/fe_lagrange_shape_1D.C src/fe/fe_lagrange_shape_2D.C \ - src/fe/fe_lagrange_shape_3D.C src/fe/fe_lagrange_vec.C \ - src/fe/fe_map.C src/fe/fe_monomial.C \ + src/fe/fe_l2_lagrange_gll.C src/fe/fe_lagrange.C \ + src/fe/fe_lagrange_gll_shape_0D.C \ + src/fe/fe_lagrange_gll_shape_1D.C \ + src/fe/fe_lagrange_gll_shape_2D.C \ + src/fe/fe_lagrange_gll_shape_3D.C \ + src/fe/fe_lagrange_shape_0D.C src/fe/fe_lagrange_shape_1D.C \ + src/fe/fe_lagrange_shape_2D.C src/fe/fe_lagrange_shape_3D.C \ + src/fe/fe_lagrange_vec.C src/fe/fe_map.C src/fe/fe_monomial.C \ src/fe/fe_monomial_shape_0D.C src/fe/fe_monomial_shape_1D.C \ src/fe/fe_monomial_shape_2D.C src/fe/fe_monomial_shape_3D.C \ src/fe/fe_monomial_vec.C src/fe/fe_nedelec_one.C \ @@ -1487,7 +1500,12 @@ am__objects_2 = src/base/libmesh_devel_la-dirichlet_boundary.lo \ src/fe/libmesh_devel_la-fe_interface_inf_fe.lo \ src/fe/libmesh_devel_la-fe_l2_hierarchic.lo \ src/fe/libmesh_devel_la-fe_l2_lagrange.lo \ + src/fe/libmesh_devel_la-fe_l2_lagrange_gll.lo \ src/fe/libmesh_devel_la-fe_lagrange.lo \ + src/fe/libmesh_devel_la-fe_lagrange_gll_shape_0D.lo \ + src/fe/libmesh_devel_la-fe_lagrange_gll_shape_1D.lo \ + src/fe/libmesh_devel_la-fe_lagrange_gll_shape_2D.lo \ + src/fe/libmesh_devel_la-fe_lagrange_gll_shape_3D.lo \ src/fe/libmesh_devel_la-fe_lagrange_shape_0D.lo \ src/fe/libmesh_devel_la-fe_lagrange_shape_1D.lo \ src/fe/libmesh_devel_la-fe_lagrange_shape_2D.lo \ @@ -1951,10 +1969,14 @@ am__libmesh_oprof_la_SOURCES_DIST = src/base/dirichlet_boundary.C \ src/fe/fe_hierarchic_shape_3D.C src/fe/fe_hierarchic_vec.C \ src/fe/fe_interface.C src/fe/fe_interface_inf_fe.C \ src/fe/fe_l2_hierarchic.C src/fe/fe_l2_lagrange.C \ - src/fe/fe_lagrange.C src/fe/fe_lagrange_shape_0D.C \ - src/fe/fe_lagrange_shape_1D.C src/fe/fe_lagrange_shape_2D.C \ - src/fe/fe_lagrange_shape_3D.C src/fe/fe_lagrange_vec.C \ - src/fe/fe_map.C src/fe/fe_monomial.C \ + src/fe/fe_l2_lagrange_gll.C src/fe/fe_lagrange.C \ + src/fe/fe_lagrange_gll_shape_0D.C \ + src/fe/fe_lagrange_gll_shape_1D.C \ + src/fe/fe_lagrange_gll_shape_2D.C \ + src/fe/fe_lagrange_gll_shape_3D.C \ + src/fe/fe_lagrange_shape_0D.C src/fe/fe_lagrange_shape_1D.C \ + src/fe/fe_lagrange_shape_2D.C src/fe/fe_lagrange_shape_3D.C \ + src/fe/fe_lagrange_vec.C src/fe/fe_map.C src/fe/fe_monomial.C \ src/fe/fe_monomial_shape_0D.C src/fe/fe_monomial_shape_1D.C \ src/fe/fe_monomial_shape_2D.C src/fe/fe_monomial_shape_3D.C \ src/fe/fe_monomial_vec.C src/fe/fe_nedelec_one.C \ @@ -2298,7 +2320,12 @@ am__objects_3 = src/base/libmesh_oprof_la-dirichlet_boundary.lo \ src/fe/libmesh_oprof_la-fe_interface_inf_fe.lo \ src/fe/libmesh_oprof_la-fe_l2_hierarchic.lo \ src/fe/libmesh_oprof_la-fe_l2_lagrange.lo \ + src/fe/libmesh_oprof_la-fe_l2_lagrange_gll.lo \ src/fe/libmesh_oprof_la-fe_lagrange.lo \ + src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_0D.lo \ + src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_1D.lo \ + src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_2D.lo \ + src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_3D.lo \ src/fe/libmesh_oprof_la-fe_lagrange_shape_0D.lo \ src/fe/libmesh_oprof_la-fe_lagrange_shape_1D.lo \ src/fe/libmesh_oprof_la-fe_lagrange_shape_2D.lo \ @@ -2762,10 +2789,14 @@ am__libmesh_opt_la_SOURCES_DIST = src/base/dirichlet_boundary.C \ src/fe/fe_hierarchic_shape_3D.C src/fe/fe_hierarchic_vec.C \ src/fe/fe_interface.C src/fe/fe_interface_inf_fe.C \ src/fe/fe_l2_hierarchic.C src/fe/fe_l2_lagrange.C \ - src/fe/fe_lagrange.C src/fe/fe_lagrange_shape_0D.C \ - src/fe/fe_lagrange_shape_1D.C src/fe/fe_lagrange_shape_2D.C \ - src/fe/fe_lagrange_shape_3D.C src/fe/fe_lagrange_vec.C \ - src/fe/fe_map.C src/fe/fe_monomial.C \ + src/fe/fe_l2_lagrange_gll.C src/fe/fe_lagrange.C \ + src/fe/fe_lagrange_gll_shape_0D.C \ + src/fe/fe_lagrange_gll_shape_1D.C \ + src/fe/fe_lagrange_gll_shape_2D.C \ + src/fe/fe_lagrange_gll_shape_3D.C \ + src/fe/fe_lagrange_shape_0D.C src/fe/fe_lagrange_shape_1D.C \ + src/fe/fe_lagrange_shape_2D.C src/fe/fe_lagrange_shape_3D.C \ + src/fe/fe_lagrange_vec.C src/fe/fe_map.C src/fe/fe_monomial.C \ src/fe/fe_monomial_shape_0D.C src/fe/fe_monomial_shape_1D.C \ src/fe/fe_monomial_shape_2D.C src/fe/fe_monomial_shape_3D.C \ src/fe/fe_monomial_vec.C src/fe/fe_nedelec_one.C \ @@ -3109,7 +3140,12 @@ am__objects_4 = src/base/libmesh_opt_la-dirichlet_boundary.lo \ src/fe/libmesh_opt_la-fe_interface_inf_fe.lo \ src/fe/libmesh_opt_la-fe_l2_hierarchic.lo \ src/fe/libmesh_opt_la-fe_l2_lagrange.lo \ + src/fe/libmesh_opt_la-fe_l2_lagrange_gll.lo \ src/fe/libmesh_opt_la-fe_lagrange.lo \ + src/fe/libmesh_opt_la-fe_lagrange_gll_shape_0D.lo \ + src/fe/libmesh_opt_la-fe_lagrange_gll_shape_1D.lo \ + src/fe/libmesh_opt_la-fe_lagrange_gll_shape_2D.lo \ + src/fe/libmesh_opt_la-fe_lagrange_gll_shape_3D.lo \ src/fe/libmesh_opt_la-fe_lagrange_shape_0D.lo \ src/fe/libmesh_opt_la-fe_lagrange_shape_1D.lo \ src/fe/libmesh_opt_la-fe_lagrange_shape_2D.lo \ @@ -3572,10 +3608,14 @@ am__libmesh_prof_la_SOURCES_DIST = src/base/dirichlet_boundary.C \ src/fe/fe_hierarchic_shape_3D.C src/fe/fe_hierarchic_vec.C \ src/fe/fe_interface.C src/fe/fe_interface_inf_fe.C \ src/fe/fe_l2_hierarchic.C src/fe/fe_l2_lagrange.C \ - src/fe/fe_lagrange.C src/fe/fe_lagrange_shape_0D.C \ - src/fe/fe_lagrange_shape_1D.C src/fe/fe_lagrange_shape_2D.C \ - src/fe/fe_lagrange_shape_3D.C src/fe/fe_lagrange_vec.C \ - src/fe/fe_map.C src/fe/fe_monomial.C \ + src/fe/fe_l2_lagrange_gll.C src/fe/fe_lagrange.C \ + src/fe/fe_lagrange_gll_shape_0D.C \ + src/fe/fe_lagrange_gll_shape_1D.C \ + src/fe/fe_lagrange_gll_shape_2D.C \ + src/fe/fe_lagrange_gll_shape_3D.C \ + src/fe/fe_lagrange_shape_0D.C src/fe/fe_lagrange_shape_1D.C \ + src/fe/fe_lagrange_shape_2D.C src/fe/fe_lagrange_shape_3D.C \ + src/fe/fe_lagrange_vec.C src/fe/fe_map.C src/fe/fe_monomial.C \ src/fe/fe_monomial_shape_0D.C src/fe/fe_monomial_shape_1D.C \ src/fe/fe_monomial_shape_2D.C src/fe/fe_monomial_shape_3D.C \ src/fe/fe_monomial_vec.C src/fe/fe_nedelec_one.C \ @@ -3919,7 +3959,12 @@ am__objects_5 = src/base/libmesh_prof_la-dirichlet_boundary.lo \ src/fe/libmesh_prof_la-fe_interface_inf_fe.lo \ src/fe/libmesh_prof_la-fe_l2_hierarchic.lo \ src/fe/libmesh_prof_la-fe_l2_lagrange.lo \ + src/fe/libmesh_prof_la-fe_l2_lagrange_gll.lo \ src/fe/libmesh_prof_la-fe_lagrange.lo \ + src/fe/libmesh_prof_la-fe_lagrange_gll_shape_0D.lo \ + src/fe/libmesh_prof_la-fe_lagrange_gll_shape_1D.lo \ + src/fe/libmesh_prof_la-fe_lagrange_gll_shape_2D.lo \ + src/fe/libmesh_prof_la-fe_lagrange_gll_shape_3D.lo \ src/fe/libmesh_prof_la-fe_lagrange_shape_0D.lo \ src/fe/libmesh_prof_la-fe_lagrange_shape_1D.lo \ src/fe/libmesh_prof_la-fe_lagrange_shape_2D.lo \ @@ -5197,7 +5242,12 @@ am__depfiles_remade = src/apps/$(DEPDIR)/amr_dbg-amr.Po \ src/fe/$(DEPDIR)/libmesh_dbg_la-fe_interface_inf_fe.Plo \ src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_hierarchic.Plo \ src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Plo \ + src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_1D.Plo \ + src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_2D.Plo \ + src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_3D.Plo \ src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_0D.Plo \ src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_1D.Plo \ src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_2D.Plo \ @@ -5285,7 +5335,12 @@ am__depfiles_remade = src/apps/$(DEPDIR)/amr_dbg-amr.Po \ src/fe/$(DEPDIR)/libmesh_devel_la-fe_interface_inf_fe.Plo \ src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_hierarchic.Plo \ src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Plo \ + src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_1D.Plo \ + src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_2D.Plo \ + src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_3D.Plo \ src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_0D.Plo \ src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_1D.Plo \ src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_2D.Plo \ @@ -5373,7 +5428,12 @@ am__depfiles_remade = src/apps/$(DEPDIR)/amr_dbg-amr.Po \ src/fe/$(DEPDIR)/libmesh_oprof_la-fe_interface_inf_fe.Plo \ src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_hierarchic.Plo \ src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Plo \ + src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_1D.Plo \ + src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_2D.Plo \ + src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_3D.Plo \ src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_0D.Plo \ src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_1D.Plo \ src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_2D.Plo \ @@ -5461,7 +5521,12 @@ am__depfiles_remade = src/apps/$(DEPDIR)/amr_dbg-amr.Po \ src/fe/$(DEPDIR)/libmesh_opt_la-fe_interface_inf_fe.Plo \ src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_hierarchic.Plo \ src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Plo \ + src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_1D.Plo \ + src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_2D.Plo \ + src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_3D.Plo \ src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_0D.Plo \ src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_1D.Plo \ src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_2D.Plo \ @@ -5549,7 +5614,12 @@ am__depfiles_remade = src/apps/$(DEPDIR)/amr_dbg-amr.Po \ src/fe/$(DEPDIR)/libmesh_prof_la-fe_interface_inf_fe.Plo \ src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_hierarchic.Plo \ src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Plo \ + src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_1D.Plo \ + src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_2D.Plo \ + src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_3D.Plo \ src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_0D.Plo \ src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_1D.Plo \ src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_2D.Plo \ @@ -8149,7 +8219,12 @@ libmesh_SOURCES = \ src/fe/fe_interface_inf_fe.C \ src/fe/fe_l2_hierarchic.C \ src/fe/fe_l2_lagrange.C \ + src/fe/fe_l2_lagrange_gll.C \ src/fe/fe_lagrange.C \ + src/fe/fe_lagrange_gll_shape_0D.C \ + src/fe/fe_lagrange_gll_shape_1D.C \ + src/fe/fe_lagrange_gll_shape_2D.C \ + src/fe/fe_lagrange_gll_shape_3D.C \ src/fe/fe_lagrange_shape_0D.C \ src/fe/fe_lagrange_shape_1D.C \ src/fe/fe_lagrange_shape_2D.C \ @@ -9274,8 +9349,18 @@ src/fe/libmesh_dbg_la-fe_l2_hierarchic.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_dbg_la-fe_l2_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_dbg_la-fe_l2_lagrange_gll.lo: src/fe/$(am__dirstamp) \ + src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_dbg_la-fe_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_0D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_1D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_2D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_3D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_dbg_la-fe_lagrange_shape_0D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_dbg_la-fe_lagrange_shape_1D.lo: src/fe/$(am__dirstamp) \ @@ -10523,8 +10608,18 @@ src/fe/libmesh_devel_la-fe_l2_hierarchic.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_devel_la-fe_l2_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_devel_la-fe_l2_lagrange_gll.lo: src/fe/$(am__dirstamp) \ + src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_devel_la-fe_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_devel_la-fe_lagrange_gll_shape_0D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_devel_la-fe_lagrange_gll_shape_1D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_devel_la-fe_lagrange_gll_shape_2D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_devel_la-fe_lagrange_gll_shape_3D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_devel_la-fe_lagrange_shape_0D.lo: \ src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_devel_la-fe_lagrange_shape_1D.lo: \ @@ -11697,8 +11792,18 @@ src/fe/libmesh_oprof_la-fe_l2_hierarchic.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_oprof_la-fe_l2_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_oprof_la-fe_l2_lagrange_gll.lo: src/fe/$(am__dirstamp) \ + src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_oprof_la-fe_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_0D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_1D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_2D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_3D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_oprof_la-fe_lagrange_shape_0D.lo: \ src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_oprof_la-fe_lagrange_shape_1D.lo: \ @@ -12871,8 +12976,18 @@ src/fe/libmesh_opt_la-fe_l2_hierarchic.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_opt_la-fe_l2_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_opt_la-fe_l2_lagrange_gll.lo: src/fe/$(am__dirstamp) \ + src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_opt_la-fe_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_opt_la-fe_lagrange_gll_shape_0D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_opt_la-fe_lagrange_gll_shape_1D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_opt_la-fe_lagrange_gll_shape_2D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_opt_la-fe_lagrange_gll_shape_3D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_opt_la-fe_lagrange_shape_0D.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_opt_la-fe_lagrange_shape_1D.lo: src/fe/$(am__dirstamp) \ @@ -14042,8 +14157,18 @@ src/fe/libmesh_prof_la-fe_l2_hierarchic.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_prof_la-fe_l2_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_prof_la-fe_l2_lagrange_gll.lo: src/fe/$(am__dirstamp) \ + src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_prof_la-fe_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_prof_la-fe_lagrange_gll_shape_0D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_prof_la-fe_lagrange_gll_shape_1D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_prof_la-fe_lagrange_gll_shape_2D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_prof_la-fe_lagrange_gll_shape_3D.lo: \ + src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_prof_la-fe_lagrange_shape_0D.lo: \ src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_prof_la-fe_lagrange_shape_1D.lo: \ @@ -15968,7 +16093,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_interface_inf_fe.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_hierarchic.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_1D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_2D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_3D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_0D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_1D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_2D.Plo@am__quote@ # am--include-marker @@ -16056,7 +16186,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_interface_inf_fe.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_hierarchic.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_1D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_2D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_3D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_0D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_1D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_2D.Plo@am__quote@ # am--include-marker @@ -16144,7 +16279,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_interface_inf_fe.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_hierarchic.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_1D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_2D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_3D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_0D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_1D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_2D.Plo@am__quote@ # am--include-marker @@ -16232,7 +16372,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_interface_inf_fe.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_hierarchic.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_1D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_2D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_3D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_0D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_1D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_2D.Plo@am__quote@ # am--include-marker @@ -16320,7 +16465,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_interface_inf_fe.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_hierarchic.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_1D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_2D.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_3D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_0D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_1D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_2D.Plo@am__quote@ # am--include-marker @@ -18629,6 +18779,13 @@ src/fe/libmesh_dbg_la-fe_l2_lagrange.lo: src/fe/fe_l2_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_dbg_la-fe_l2_lagrange.lo `test -f 'src/fe/fe_l2_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange.C +src/fe/libmesh_dbg_la-fe_l2_lagrange_gll.lo: src/fe/fe_l2_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_dbg_la-fe_l2_lagrange_gll.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange_gll.Tpo -c -o src/fe/libmesh_dbg_la-fe_l2_lagrange_gll.lo `test -f 'src/fe/fe_l2_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange_gll.Tpo src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange_gll.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_l2_lagrange_gll.C' object='src/fe/libmesh_dbg_la-fe_l2_lagrange_gll.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_dbg_la-fe_l2_lagrange_gll.lo `test -f 'src/fe/fe_l2_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange_gll.C + src/fe/libmesh_dbg_la-fe_lagrange.lo: src/fe/fe_lagrange.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_dbg_la-fe_lagrange.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange.Tpo -c -o src/fe/libmesh_dbg_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange.Tpo src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange.Plo @@ -18636,6 +18793,34 @@ src/fe/libmesh_dbg_la-fe_lagrange.lo: src/fe/fe_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_dbg_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C +src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_0D.lo: src/fe/fe_lagrange_gll_shape_0D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Tpo -c -o src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_0D.C' object='src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_0D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C + +src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_1D.lo: src/fe/fe_lagrange_gll_shape_1D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_1D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_1D.Tpo -c -o src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_1D.lo `test -f 'src/fe/fe_lagrange_gll_shape_1D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_1D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_1D.Tpo src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_1D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_1D.C' object='src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_1D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_1D.lo `test -f 'src/fe/fe_lagrange_gll_shape_1D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_1D.C + +src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_2D.lo: src/fe/fe_lagrange_gll_shape_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_2D.Tpo -c -o src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_2D.lo `test -f 'src/fe/fe_lagrange_gll_shape_2D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_2D.Tpo src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_2D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_2D.C' object='src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_2D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_2D.lo `test -f 'src/fe/fe_lagrange_gll_shape_2D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_2D.C + +src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_3D.lo: src/fe/fe_lagrange_gll_shape_3D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_3D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_3D.Tpo -c -o src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_3D.lo `test -f 'src/fe/fe_lagrange_gll_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_3D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_3D.Tpo src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_3D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_3D.C' object='src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_3D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_3D.lo `test -f 'src/fe/fe_lagrange_gll_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_3D.C + src/fe/libmesh_dbg_la-fe_lagrange_shape_0D.lo: src/fe/fe_lagrange_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_dbg_la-fe_lagrange_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_0D.Tpo -c -o src/fe/libmesh_dbg_la-fe_lagrange_shape_0D.lo `test -f 'src/fe/fe_lagrange_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_0D.Plo @@ -21961,6 +22146,13 @@ src/fe/libmesh_devel_la-fe_l2_lagrange.lo: src/fe/fe_l2_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_devel_la-fe_l2_lagrange.lo `test -f 'src/fe/fe_l2_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange.C +src/fe/libmesh_devel_la-fe_l2_lagrange_gll.lo: src/fe/fe_l2_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_devel_la-fe_l2_lagrange_gll.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange_gll.Tpo -c -o src/fe/libmesh_devel_la-fe_l2_lagrange_gll.lo `test -f 'src/fe/fe_l2_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange_gll.Tpo src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange_gll.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_l2_lagrange_gll.C' object='src/fe/libmesh_devel_la-fe_l2_lagrange_gll.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_devel_la-fe_l2_lagrange_gll.lo `test -f 'src/fe/fe_l2_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange_gll.C + src/fe/libmesh_devel_la-fe_lagrange.lo: src/fe/fe_lagrange.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_devel_la-fe_lagrange.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange.Tpo -c -o src/fe/libmesh_devel_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange.Tpo src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange.Plo @@ -21968,6 +22160,34 @@ src/fe/libmesh_devel_la-fe_lagrange.lo: src/fe/fe_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_devel_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C +src/fe/libmesh_devel_la-fe_lagrange_gll_shape_0D.lo: src/fe/fe_lagrange_gll_shape_0D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_devel_la-fe_lagrange_gll_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Tpo -c -o src/fe/libmesh_devel_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_0D.C' object='src/fe/libmesh_devel_la-fe_lagrange_gll_shape_0D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_devel_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C + +src/fe/libmesh_devel_la-fe_lagrange_gll_shape_1D.lo: src/fe/fe_lagrange_gll_shape_1D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_devel_la-fe_lagrange_gll_shape_1D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_1D.Tpo -c -o src/fe/libmesh_devel_la-fe_lagrange_gll_shape_1D.lo `test -f 'src/fe/fe_lagrange_gll_shape_1D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_1D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_1D.Tpo src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_1D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_1D.C' object='src/fe/libmesh_devel_la-fe_lagrange_gll_shape_1D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_devel_la-fe_lagrange_gll_shape_1D.lo `test -f 'src/fe/fe_lagrange_gll_shape_1D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_1D.C + +src/fe/libmesh_devel_la-fe_lagrange_gll_shape_2D.lo: src/fe/fe_lagrange_gll_shape_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_devel_la-fe_lagrange_gll_shape_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_2D.Tpo -c -o src/fe/libmesh_devel_la-fe_lagrange_gll_shape_2D.lo `test -f 'src/fe/fe_lagrange_gll_shape_2D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_2D.Tpo src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_2D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_2D.C' object='src/fe/libmesh_devel_la-fe_lagrange_gll_shape_2D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_devel_la-fe_lagrange_gll_shape_2D.lo `test -f 'src/fe/fe_lagrange_gll_shape_2D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_2D.C + +src/fe/libmesh_devel_la-fe_lagrange_gll_shape_3D.lo: src/fe/fe_lagrange_gll_shape_3D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_devel_la-fe_lagrange_gll_shape_3D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_3D.Tpo -c -o src/fe/libmesh_devel_la-fe_lagrange_gll_shape_3D.lo `test -f 'src/fe/fe_lagrange_gll_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_3D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_3D.Tpo src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_3D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_3D.C' object='src/fe/libmesh_devel_la-fe_lagrange_gll_shape_3D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_devel_la-fe_lagrange_gll_shape_3D.lo `test -f 'src/fe/fe_lagrange_gll_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_3D.C + src/fe/libmesh_devel_la-fe_lagrange_shape_0D.lo: src/fe/fe_lagrange_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_devel_la-fe_lagrange_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_0D.Tpo -c -o src/fe/libmesh_devel_la-fe_lagrange_shape_0D.lo `test -f 'src/fe/fe_lagrange_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_0D.Plo @@ -25293,6 +25513,13 @@ src/fe/libmesh_oprof_la-fe_l2_lagrange.lo: src/fe/fe_l2_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_oprof_la-fe_l2_lagrange.lo `test -f 'src/fe/fe_l2_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange.C +src/fe/libmesh_oprof_la-fe_l2_lagrange_gll.lo: src/fe/fe_l2_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_oprof_la-fe_l2_lagrange_gll.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange_gll.Tpo -c -o src/fe/libmesh_oprof_la-fe_l2_lagrange_gll.lo `test -f 'src/fe/fe_l2_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange_gll.Tpo src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange_gll.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_l2_lagrange_gll.C' object='src/fe/libmesh_oprof_la-fe_l2_lagrange_gll.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_oprof_la-fe_l2_lagrange_gll.lo `test -f 'src/fe/fe_l2_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange_gll.C + src/fe/libmesh_oprof_la-fe_lagrange.lo: src/fe/fe_lagrange.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_oprof_la-fe_lagrange.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange.Tpo -c -o src/fe/libmesh_oprof_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange.Tpo src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange.Plo @@ -25300,6 +25527,34 @@ src/fe/libmesh_oprof_la-fe_lagrange.lo: src/fe/fe_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_oprof_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C +src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_0D.lo: src/fe/fe_lagrange_gll_shape_0D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Tpo -c -o src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_0D.C' object='src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_0D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C + +src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_1D.lo: src/fe/fe_lagrange_gll_shape_1D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_1D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_1D.Tpo -c -o src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_1D.lo `test -f 'src/fe/fe_lagrange_gll_shape_1D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_1D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_1D.Tpo src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_1D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_1D.C' object='src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_1D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_1D.lo `test -f 'src/fe/fe_lagrange_gll_shape_1D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_1D.C + +src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_2D.lo: src/fe/fe_lagrange_gll_shape_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_2D.Tpo -c -o src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_2D.lo `test -f 'src/fe/fe_lagrange_gll_shape_2D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_2D.Tpo src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_2D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_2D.C' object='src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_2D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_2D.lo `test -f 'src/fe/fe_lagrange_gll_shape_2D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_2D.C + +src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_3D.lo: src/fe/fe_lagrange_gll_shape_3D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_3D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_3D.Tpo -c -o src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_3D.lo `test -f 'src/fe/fe_lagrange_gll_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_3D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_3D.Tpo src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_3D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_3D.C' object='src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_3D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_3D.lo `test -f 'src/fe/fe_lagrange_gll_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_3D.C + src/fe/libmesh_oprof_la-fe_lagrange_shape_0D.lo: src/fe/fe_lagrange_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_oprof_la-fe_lagrange_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_0D.Tpo -c -o src/fe/libmesh_oprof_la-fe_lagrange_shape_0D.lo `test -f 'src/fe/fe_lagrange_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_0D.Plo @@ -28625,6 +28880,13 @@ src/fe/libmesh_opt_la-fe_l2_lagrange.lo: src/fe/fe_l2_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_opt_la-fe_l2_lagrange.lo `test -f 'src/fe/fe_l2_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange.C +src/fe/libmesh_opt_la-fe_l2_lagrange_gll.lo: src/fe/fe_l2_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_opt_la-fe_l2_lagrange_gll.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange_gll.Tpo -c -o src/fe/libmesh_opt_la-fe_l2_lagrange_gll.lo `test -f 'src/fe/fe_l2_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange_gll.Tpo src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange_gll.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_l2_lagrange_gll.C' object='src/fe/libmesh_opt_la-fe_l2_lagrange_gll.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_opt_la-fe_l2_lagrange_gll.lo `test -f 'src/fe/fe_l2_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange_gll.C + src/fe/libmesh_opt_la-fe_lagrange.lo: src/fe/fe_lagrange.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_opt_la-fe_lagrange.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange.Tpo -c -o src/fe/libmesh_opt_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange.Tpo src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange.Plo @@ -28632,6 +28894,34 @@ src/fe/libmesh_opt_la-fe_lagrange.lo: src/fe/fe_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_opt_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C +src/fe/libmesh_opt_la-fe_lagrange_gll_shape_0D.lo: src/fe/fe_lagrange_gll_shape_0D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_opt_la-fe_lagrange_gll_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Tpo -c -o src/fe/libmesh_opt_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_0D.C' object='src/fe/libmesh_opt_la-fe_lagrange_gll_shape_0D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_opt_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C + +src/fe/libmesh_opt_la-fe_lagrange_gll_shape_1D.lo: src/fe/fe_lagrange_gll_shape_1D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_opt_la-fe_lagrange_gll_shape_1D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_1D.Tpo -c -o src/fe/libmesh_opt_la-fe_lagrange_gll_shape_1D.lo `test -f 'src/fe/fe_lagrange_gll_shape_1D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_1D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_1D.Tpo src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_1D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_1D.C' object='src/fe/libmesh_opt_la-fe_lagrange_gll_shape_1D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_opt_la-fe_lagrange_gll_shape_1D.lo `test -f 'src/fe/fe_lagrange_gll_shape_1D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_1D.C + +src/fe/libmesh_opt_la-fe_lagrange_gll_shape_2D.lo: src/fe/fe_lagrange_gll_shape_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_opt_la-fe_lagrange_gll_shape_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_2D.Tpo -c -o src/fe/libmesh_opt_la-fe_lagrange_gll_shape_2D.lo `test -f 'src/fe/fe_lagrange_gll_shape_2D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_2D.Tpo src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_2D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_2D.C' object='src/fe/libmesh_opt_la-fe_lagrange_gll_shape_2D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_opt_la-fe_lagrange_gll_shape_2D.lo `test -f 'src/fe/fe_lagrange_gll_shape_2D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_2D.C + +src/fe/libmesh_opt_la-fe_lagrange_gll_shape_3D.lo: src/fe/fe_lagrange_gll_shape_3D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_opt_la-fe_lagrange_gll_shape_3D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_3D.Tpo -c -o src/fe/libmesh_opt_la-fe_lagrange_gll_shape_3D.lo `test -f 'src/fe/fe_lagrange_gll_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_3D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_3D.Tpo src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_3D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_3D.C' object='src/fe/libmesh_opt_la-fe_lagrange_gll_shape_3D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_opt_la-fe_lagrange_gll_shape_3D.lo `test -f 'src/fe/fe_lagrange_gll_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_3D.C + src/fe/libmesh_opt_la-fe_lagrange_shape_0D.lo: src/fe/fe_lagrange_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_opt_la-fe_lagrange_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_0D.Tpo -c -o src/fe/libmesh_opt_la-fe_lagrange_shape_0D.lo `test -f 'src/fe/fe_lagrange_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_0D.Plo @@ -31957,6 +32247,13 @@ src/fe/libmesh_prof_la-fe_l2_lagrange.lo: src/fe/fe_l2_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_prof_la-fe_l2_lagrange.lo `test -f 'src/fe/fe_l2_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange.C +src/fe/libmesh_prof_la-fe_l2_lagrange_gll.lo: src/fe/fe_l2_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_prof_la-fe_l2_lagrange_gll.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange_gll.Tpo -c -o src/fe/libmesh_prof_la-fe_l2_lagrange_gll.lo `test -f 'src/fe/fe_l2_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange_gll.Tpo src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange_gll.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_l2_lagrange_gll.C' object='src/fe/libmesh_prof_la-fe_l2_lagrange_gll.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_prof_la-fe_l2_lagrange_gll.lo `test -f 'src/fe/fe_l2_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_l2_lagrange_gll.C + src/fe/libmesh_prof_la-fe_lagrange.lo: src/fe/fe_lagrange.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_prof_la-fe_lagrange.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange.Tpo -c -o src/fe/libmesh_prof_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange.Tpo src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange.Plo @@ -31964,6 +32261,34 @@ src/fe/libmesh_prof_la-fe_lagrange.lo: src/fe/fe_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_prof_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C +src/fe/libmesh_prof_la-fe_lagrange_gll_shape_0D.lo: src/fe/fe_lagrange_gll_shape_0D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_prof_la-fe_lagrange_gll_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Tpo -c -o src/fe/libmesh_prof_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_0D.C' object='src/fe/libmesh_prof_la-fe_lagrange_gll_shape_0D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_prof_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C + +src/fe/libmesh_prof_la-fe_lagrange_gll_shape_1D.lo: src/fe/fe_lagrange_gll_shape_1D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_prof_la-fe_lagrange_gll_shape_1D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_1D.Tpo -c -o src/fe/libmesh_prof_la-fe_lagrange_gll_shape_1D.lo `test -f 'src/fe/fe_lagrange_gll_shape_1D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_1D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_1D.Tpo src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_1D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_1D.C' object='src/fe/libmesh_prof_la-fe_lagrange_gll_shape_1D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_prof_la-fe_lagrange_gll_shape_1D.lo `test -f 'src/fe/fe_lagrange_gll_shape_1D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_1D.C + +src/fe/libmesh_prof_la-fe_lagrange_gll_shape_2D.lo: src/fe/fe_lagrange_gll_shape_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_prof_la-fe_lagrange_gll_shape_2D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_2D.Tpo -c -o src/fe/libmesh_prof_la-fe_lagrange_gll_shape_2D.lo `test -f 'src/fe/fe_lagrange_gll_shape_2D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_2D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_2D.Tpo src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_2D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_2D.C' object='src/fe/libmesh_prof_la-fe_lagrange_gll_shape_2D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_prof_la-fe_lagrange_gll_shape_2D.lo `test -f 'src/fe/fe_lagrange_gll_shape_2D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_2D.C + +src/fe/libmesh_prof_la-fe_lagrange_gll_shape_3D.lo: src/fe/fe_lagrange_gll_shape_3D.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_prof_la-fe_lagrange_gll_shape_3D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_3D.Tpo -c -o src/fe/libmesh_prof_la-fe_lagrange_gll_shape_3D.lo `test -f 'src/fe/fe_lagrange_gll_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_3D.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_3D.Tpo src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_3D.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll_shape_3D.C' object='src/fe/libmesh_prof_la-fe_lagrange_gll_shape_3D.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_prof_la-fe_lagrange_gll_shape_3D.lo `test -f 'src/fe/fe_lagrange_gll_shape_3D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_3D.C + src/fe/libmesh_prof_la-fe_lagrange_shape_0D.lo: src/fe/fe_lagrange_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_prof_la-fe_lagrange_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_0D.Tpo -c -o src/fe/libmesh_prof_la-fe_lagrange_shape_0D.lo `test -f 'src/fe/fe_lagrange_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_0D.Plo @@ -36723,7 +37048,12 @@ distclean: distclean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_interface_inf_fe.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_hierarchic.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_1D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_2D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_3D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_2D.Plo @@ -36811,7 +37141,12 @@ distclean: distclean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_interface_inf_fe.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_hierarchic.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_1D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_2D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_3D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_2D.Plo @@ -36899,7 +37234,12 @@ distclean: distclean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_interface_inf_fe.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_hierarchic.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_1D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_2D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_3D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_2D.Plo @@ -36987,7 +37327,12 @@ distclean: distclean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_interface_inf_fe.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_hierarchic.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_1D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_2D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_3D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_2D.Plo @@ -37075,7 +37420,12 @@ distclean: distclean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_interface_inf_fe.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_hierarchic.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_1D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_2D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_3D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_2D.Plo @@ -39234,7 +39584,12 @@ maintainer-clean: maintainer-clean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_interface_inf_fe.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_hierarchic.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_1D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_2D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_3D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_shape_2D.Plo @@ -39322,7 +39677,12 @@ maintainer-clean: maintainer-clean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_interface_inf_fe.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_hierarchic.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_1D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_2D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_3D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_shape_2D.Plo @@ -39410,7 +39770,12 @@ maintainer-clean: maintainer-clean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_interface_inf_fe.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_hierarchic.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_1D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_2D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_3D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_shape_2D.Plo @@ -39498,7 +39863,12 @@ maintainer-clean: maintainer-clean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_interface_inf_fe.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_hierarchic.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_1D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_2D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_3D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_shape_2D.Plo @@ -39586,7 +39956,12 @@ maintainer-clean: maintainer-clean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_interface_inf_fe.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_hierarchic.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_1D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_2D.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_3D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_shape_2D.Plo diff --git a/include/Makefile.in b/include/Makefile.in index e601120b29..3cc1dade11 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -712,6 +712,7 @@ include_HEADERS = \ fe/fe_compute_data.h \ fe/fe_interface.h \ fe/fe_interface_macros.h \ + fe/fe_lagrange_gll_shape_1D.h \ fe/fe_lagrange_shape_1D.h \ fe/fe_macro.h \ fe/fe_map.h \ diff --git a/include/enums/enum_fe_family.h b/include/enums/enum_fe_family.h index 193bd056c4..0de87c3a3b 100644 --- a/include/enums/enum_fe_family.h +++ b/include/enums/enum_fe_family.h @@ -69,6 +69,9 @@ enum FEFamily : int { RATIONAL_BERNSTEIN = 61, // Side-supported basis functions SIDE_HIERARCHIC = 71, + // Nodal basis functions on the Gauss-Lobatto points, which are + // collocated with the Gauss-Lobatto quadrature rule of the same order + L2_LAGRANGE_GLL = 81, // Invalid INVALID_FE = 99}; diff --git a/include/fe/fe_macro.h b/include/fe/fe_macro.h index 1bbb5f08d3..3b1b0d9078 100644 --- a/include/fe/fe_macro.h +++ b/include/fe/fe_macro.h @@ -80,6 +80,7 @@ template class LIBMESH_EXPORT FE< (_dim), LAGRANGE_VEC>; \ template class LIBMESH_EXPORT FE< (_dim), L2_LAGRANGE>; \ template class LIBMESH_EXPORT FE< (_dim), L2_LAGRANGE_VEC>; \ + template class LIBMESH_EXPORT FE< (_dim), L2_LAGRANGE_GLL>; \ template class LIBMESH_EXPORT FE< (_dim), MONOMIAL>; \ template class LIBMESH_EXPORT FE< (_dim), SCALAR>; \ template class LIBMESH_EXPORT FE< (_dim), SIDE_HIERARCHIC>; \ @@ -102,6 +103,7 @@ template class LIBMESH_EXPORT FE< (_dim), LAGRANGE_VEC>; \ template class LIBMESH_EXPORT FE< (_dim), L2_LAGRANGE>; \ template class LIBMESH_EXPORT FE< (_dim), L2_LAGRANGE_VEC>; \ + template class LIBMESH_EXPORT FE< (_dim), L2_LAGRANGE_GLL>; \ template class LIBMESH_EXPORT FE< (_dim), MONOMIAL>; \ template class LIBMESH_EXPORT FE< (_dim), SCALAR>; \ template class LIBMESH_EXPORT FE< (_dim), SIDE_HIERARCHIC>; \ diff --git a/include/include_HEADERS b/include/include_HEADERS index 079841ff6d..992e7c4773 100644 --- a/include/include_HEADERS +++ b/include/include_HEADERS @@ -87,6 +87,7 @@ include_HEADERS = \ fe/fe_compute_data.h \ fe/fe_interface.h \ fe/fe_interface_macros.h \ + fe/fe_lagrange_gll_shape_1D.h \ fe/fe_lagrange_shape_1D.h \ fe/fe_macro.h \ fe/fe_map.h \ diff --git a/include/libmesh/Makefile.am b/include/libmesh/Makefile.am index 0083c34c37..2b64e586ca 100644 --- a/include/libmesh/Makefile.am +++ b/include/libmesh/Makefile.am @@ -78,6 +78,7 @@ BUILT_SOURCES = \ fe_compute_data.h \ fe_interface.h \ fe_interface_macros.h \ + fe_lagrange_gll_shape_1D.h \ fe_lagrange_shape_1D.h \ fe_macro.h \ fe_map.h \ @@ -844,6 +845,9 @@ fe_interface.h: $(top_srcdir)/include/fe/fe_interface.h fe_interface_macros.h: $(top_srcdir)/include/fe/fe_interface_macros.h $(AM_V_GEN)rm -f $@ && $(LN_S) -f $< $@ +fe_lagrange_gll_shape_1D.h: $(top_srcdir)/include/fe/fe_lagrange_gll_shape_1D.h + $(AM_V_GEN)rm -f $@ && $(LN_S) -f $< $@ + fe_lagrange_shape_1D.h: $(top_srcdir)/include/fe/fe_lagrange_shape_1D.h $(AM_V_GEN)rm -f $@ && $(LN_S) -f $< $@ @@ -2178,3 +2182,4 @@ xdr_cxx.h: $(top_srcdir)/include/utils/xdr_cxx.h parallel_communicator_specializations: $(top_srcdir)/include/timpi_shims/parallel_communicator_specializations $(AM_V_GEN)rm -f $@ && $(LN_S) -f $< $@ + diff --git a/include/libmesh/Makefile.in b/include/libmesh/Makefile.in index 98e72774ce..e60b59bbe7 100644 --- a/include/libmesh/Makefile.in +++ b/include/libmesh/Makefile.in @@ -573,14 +573,15 @@ BUILT_SOURCES = dirichlet_boundaries.h dof_map.h dof_map_base.h \ uniform_refinement_estimator.h \ weighted_patch_recovery_error_estimator.h fe.h fe_abstract.h \ fe_base.h fe_compute_data.h fe_interface.h \ - fe_interface_macros.h fe_lagrange_shape_1D.h fe_macro.h \ - fe_map.h fe_reference_element_traits.h \ - fe_transformation_base.h fe_type.h fe_xyz_map.h \ - h1_fe_transformation.h hcurl_fe_transformation.h \ - hdiv_fe_transformation.h inf_fe.h inf_fe_instantiate_1D.h \ - inf_fe_instantiate_2D.h inf_fe_instantiate_3D.h inf_fe_macro.h \ - inf_fe_map.h bounding_box.h cell.h cell_c0polyhedron.h \ - cell_hex.h cell_hex20.h cell_hex27.h cell_hex8.h cell_inf.h \ + fe_interface_macros.h fe_lagrange_gll_shape_1D.h \ + fe_lagrange_shape_1D.h fe_macro.h fe_map.h \ + fe_reference_element_traits.h fe_transformation_base.h \ + fe_type.h fe_xyz_map.h h1_fe_transformation.h \ + hcurl_fe_transformation.h hdiv_fe_transformation.h inf_fe.h \ + inf_fe_instantiate_1D.h inf_fe_instantiate_2D.h \ + inf_fe_instantiate_3D.h inf_fe_macro.h inf_fe_map.h \ + bounding_box.h cell.h cell_c0polyhedron.h cell_hex.h \ + cell_hex20.h cell_hex27.h cell_hex8.h cell_inf.h \ cell_inf_hex.h cell_inf_hex16.h cell_inf_hex18.h \ cell_inf_hex8.h cell_inf_prism.h cell_inf_prism12.h \ cell_inf_prism6.h cell_polyhedron.h cell_prism.h \ @@ -1192,6 +1193,9 @@ fe_interface.h: $(top_srcdir)/include/fe/fe_interface.h fe_interface_macros.h: $(top_srcdir)/include/fe/fe_interface_macros.h $(AM_V_GEN)rm -f $@ && $(LN_S) -f $< $@ +fe_lagrange_gll_shape_1D.h: $(top_srcdir)/include/fe/fe_lagrange_gll_shape_1D.h + $(AM_V_GEN)rm -f $@ && $(LN_S) -f $< $@ + fe_lagrange_shape_1D.h: $(top_srcdir)/include/fe/fe_lagrange_shape_1D.h $(AM_V_GEN)rm -f $@ && $(LN_S) -f $< $@ diff --git a/src/fe/fe_abstract.C b/src/fe/fe_abstract.C index f35eaa96a0..7639ad94b1 100644 --- a/src/fe/fe_abstract.C +++ b/src/fe/fe_abstract.C @@ -100,6 +100,9 @@ std::unique_ptr FEAbstract::build(const unsigned int dim, case L2_LAGRANGE: return std::make_unique>(fet); + case L2_LAGRANGE_GLL: + return std::make_unique>(fet); + case L2_LAGRANGE_VEC: return std::make_unique>(fet); @@ -177,6 +180,9 @@ std::unique_ptr FEAbstract::build(const unsigned int dim, case L2_LAGRANGE: return std::make_unique>(fet); + case L2_LAGRANGE_GLL: + return std::make_unique>(fet); + case L2_LAGRANGE_VEC: return std::make_unique>(fet); @@ -256,6 +262,9 @@ std::unique_ptr FEAbstract::build(const unsigned int dim, case L2_LAGRANGE: return std::make_unique>(fet); + case L2_LAGRANGE_GLL: + return std::make_unique>(fet); + case L2_LAGRANGE_VEC: return std::make_unique>(fet); @@ -335,6 +344,9 @@ std::unique_ptr FEAbstract::build(const unsigned int dim, case L2_LAGRANGE: return std::make_unique>(fet); + case L2_LAGRANGE_GLL: + return std::make_unique>(fet); + case L2_LAGRANGE_VEC: return std::make_unique>(fet); diff --git a/src/fe/fe_base.C b/src/fe/fe_base.C index 92dbd181f6..dcb49f1d97 100644 --- a/src/fe/fe_base.C +++ b/src/fe/fe_base.C @@ -210,6 +210,9 @@ FEGenericBase::build (const unsigned int dim, case L2_LAGRANGE: return std::make_unique>(fet); + case L2_LAGRANGE_GLL: + return std::make_unique>(fet); + case HIERARCHIC: return std::make_unique>(fet); @@ -260,6 +263,9 @@ FEGenericBase::build (const unsigned int dim, case L2_LAGRANGE: return std::make_unique>(fet); + case L2_LAGRANGE_GLL: + return std::make_unique>(fet); + case HIERARCHIC: return std::make_unique>(fet); @@ -312,6 +318,9 @@ FEGenericBase::build (const unsigned int dim, case L2_LAGRANGE: return std::make_unique>(fet); + case L2_LAGRANGE_GLL: + return std::make_unique>(fet); + case HIERARCHIC: return std::make_unique>(fet); @@ -367,6 +376,9 @@ FEGenericBase::build (const unsigned int dim, case L2_LAGRANGE: return std::make_unique>(fet); + case L2_LAGRANGE_GLL: + return std::make_unique>(fet); + case HIERARCHIC: return std::make_unique>(fet); diff --git a/src/fe/fe_boundary.C b/src/fe/fe_boundary.C index 7ddb325095..2e9e1e93a4 100644 --- a/src/fe/fe_boundary.C +++ b/src/fe/fe_boundary.C @@ -79,6 +79,7 @@ LIBMESH_ERRORS_IN_LOW_D(L2_HIERARCHIC_VEC) LIBMESH_ERRORS_IN_LOW_D(SIDE_HIERARCHIC) LIBMESH_ERRORS_IN_LOW_D(LAGRANGE) LIBMESH_ERRORS_IN_LOW_D(L2_LAGRANGE) +LIBMESH_ERRORS_IN_LOW_D(L2_LAGRANGE_GLL) LIBMESH_ERRORS_IN_LOW_D(LAGRANGE_VEC) LIBMESH_ERRORS_IN_LOW_D(L2_LAGRANGE_VEC) LIBMESH_ERRORS_IN_LOW_D(MONOMIAL) @@ -1164,6 +1165,7 @@ template LIBMESH_EXPORT void FE<3,_type>::edge_reinit(Elem const *, unsigned int REINIT_AND_SIDE_MAPS(LAGRANGE); REINIT_AND_SIDE_MAPS(LAGRANGE_VEC); REINIT_AND_SIDE_MAPS(L2_LAGRANGE); +REINIT_AND_SIDE_MAPS(L2_LAGRANGE_GLL); REINIT_AND_SIDE_MAPS(L2_LAGRANGE_VEC); REINIT_AND_SIDE_MAPS(HIERARCHIC); REINIT_AND_SIDE_MAPS(HIERARCHIC_VEC); diff --git a/src/fe/fe_interface.C b/src/fe/fe_interface.C index 7dfc8bc0dd..34c6e6564e 100644 --- a/src/fe/fe_interface.C +++ b/src/fe/fe_interface.C @@ -19,6 +19,7 @@ // Local includes #include "libmesh/fe_interface.h" +#include "libmesh/fe_lagrange_gll_shape_1D.h" #ifdef LIBMESH_ENABLE_INFINITE_ELEMENTS #include "libmesh/fe_interface_macros.h" @@ -94,6 +95,7 @@ FEInterface::is_InfFE_elem(const ElemType et) fe_family_case_func(SIDE_HIERARCHIC, dim, func_and_args, prefix, suffix) \ fe_family_case_func(LAGRANGE, dim, func_and_args, prefix, suffix) \ fe_family_case_func(L2_LAGRANGE, dim, func_and_args, prefix, suffix) \ + fe_family_case_func(L2_LAGRANGE_GLL, dim, func_and_args, prefix, suffix) \ fe_family_case_func(MONOMIAL, dim, func_and_args, prefix, suffix) \ fe_family_case_func(SCALAR, dim, func_and_args, prefix, suffix) \ fe_family_case_func(XYZ, dim, func_and_args, prefix, suffix) \ @@ -108,6 +110,7 @@ FEInterface::is_InfFE_elem(const ElemType et) fe_family_case(SIDE_HIERARCHIC) \ fe_family_case(LAGRANGE) \ fe_family_case(L2_LAGRANGE) \ + fe_family_case(L2_LAGRANGE_GLL) \ fe_family_case(MONOMIAL) \ fe_family_case(SCALAR) \ fe_family_case(XYZ) \ @@ -2200,6 +2203,28 @@ unsigned int FEInterface::max_order(const FEType & fe_t, return unknown; } break; + case L2_LAGRANGE_GLL: + switch (el_t) + { + case EDGE2: + case EDGE3: + case EDGE4: + case QUAD4: + case QUADSHELL4: + case QUAD8: + case QUADSHELL8: + case QUAD9: + case QUADSHELL9: + case HEX8: + case HEX20: + case HEX27: + // A basis of degree p interpolates at p+1 Gauss-Lobatto points, and the points + // are tabulated up to fe_lagrange_gll_max_points_1D of them + return fe_lagrange_gll_max_points_1D - 1; + default: + return unknown; + } + break; case MONOMIAL: case L2_LAGRANGE: case L2_LAGRANGE_VEC: @@ -2617,6 +2642,7 @@ bool FEInterface::extra_hanging_dofs(const FEType & fe_t) { case LAGRANGE: case L2_LAGRANGE: + case L2_LAGRANGE_GLL: case MONOMIAL: case MONOMIAL_VEC: case L2_HIERARCHIC: @@ -2707,6 +2733,7 @@ FEInterface::is_hierarchic (const FEType & fe_type) case LAGRANGE: case LAGRANGE_VEC: case L2_LAGRANGE: + case L2_LAGRANGE_GLL: case L2_LAGRANGE_VEC: case NEDELEC_ONE: case RATIONAL_BERNSTEIN: @@ -2732,6 +2759,7 @@ FEContinuity FEInterface::get_continuity(const FEType & fe_type) case MONOMIAL_VEC: case L2_HIERARCHIC: case L2_LAGRANGE: + case L2_LAGRANGE_GLL: case XYZ: case SCALAR: case L2_RAVIART_THOMAS: diff --git a/src/fe/fe_l2_lagrange_gll.C b/src/fe/fe_l2_lagrange_gll.C new file mode 100644 index 0000000000..2d4ecad1e8 --- /dev/null +++ b/src/fe/fe_l2_lagrange_gll.C @@ -0,0 +1,198 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + + +// Local includes +#include "libmesh/elem.h" +#include "libmesh/enum_to_string.h" +#include "libmesh/fe.h" +#include "libmesh/fe_interface.h" +#include "libmesh/fe_lagrange_gll_shape_1D.h" +#include "libmesh/fe_macro.h" + + +namespace libMesh +{ + +/** + * \returns The number of degrees of freedom that the L2_LAGRANGE_GLL basis of order \p o + * carries on an element of type \p t. + * + * The basis is a tensor product of one-dimensional bases, so it lives on the tensor + * product element types alone, and it carries \f$(p+1)^d\f$ degrees of freedom on one of + * those whatever its node count: every degree of freedom belongs to the element, so an + * order of eight asks nothing of the element beyond its shape. + */ +unsigned int l2_lagrange_gll_n_dofs(const ElemType t, const Order o) +{ + libmesh_assert_greater (o, 0); + + const unsigned int n = static_cast(o) + 1; + + libmesh_error_msg_if(n > fe_lagrange_gll_max_points_1D, + "The L2_LAGRANGE_GLL basis of order " << o << " would interpolate at " + << n << " Gauss-Lobatto points, and they are tabulated up to " + << fe_lagrange_gll_max_points_1D << "."); + + switch (t) + { + case NODEELEM: + return 1; + + case EDGE2: + case EDGE3: + case EDGE4: + return n; + + case QUAD4: + case QUADSHELL4: + case QUAD8: + case QUADSHELL8: + case QUAD9: + case QUADSHELL9: + return n*n; + + case HEX8: + case HEX20: + case HEX27: + return n*n*n; + + case INVALID_ELEM: + return 0; + + default: + libmesh_error_msg("The L2_LAGRANGE_GLL basis is a tensor product, so it has no form on " + << Utility::enum_to_string(t) << "."); + } +} + + +unsigned int l2_lagrange_gll_n_dofs(const Elem * e, const Order o) +{ + libmesh_assert(e); + return l2_lagrange_gll_n_dofs(e->type(), o); +} + +/** + * Evaluates a solution at the nodes of \p elem, for the writers that report a variable + * there. + * + * The interpolation points of this basis are the Gauss-Lobatto points, which are the nodes + * of the element only at orders one and two, so beyond those the values are interpolated + * at the nodes rather than read off the coefficients. + */ +void l2_lagrange_gll_nodal_soln(const Elem * elem, + const Order order, + const std::vector & elem_soln, + std::vector & nodal_soln, + const bool add_p_level) +{ + const unsigned int n_nodes = elem->n_nodes(); + + nodal_soln.resize(n_nodes); + + const FEType fe_type(order, L2_LAGRANGE_GLL); + + const unsigned int n_sf = + FEInterface::n_shape_functions(fe_type, elem, add_p_level); + + std::vector refspace_nodes; + FEBase::get_refspace_nodes(elem->type(), refspace_nodes); + libmesh_assert_equal_to (refspace_nodes.size(), n_nodes); + libmesh_assert_equal_to (elem_soln.size(), n_sf); + + std::fill(nodal_soln.begin(), nodal_soln.end(), 0); + + for (const auto n : make_range(n_nodes)) + for (const auto i : make_range(n_sf)) + nodal_soln[n] += elem_soln[i] * + FEInterface::shape(fe_type, elem, i, refspace_nodes[n], add_p_level); +} + +LIBMESH_FE_NODAL_SOLN(L2_LAGRANGE_GLL, l2_lagrange_gll_nodal_soln) +LIBMESH_FE_SIDE_NODAL_SOLN(L2_LAGRANGE_GLL) + + +// Every degree of freedom of this basis belongs to the element +template <> unsigned int FE<0,L2_LAGRANGE_GLL>::n_dofs(const ElemType t, const Order o) { return l2_lagrange_gll_n_dofs(t, o); } +template <> unsigned int FE<1,L2_LAGRANGE_GLL>::n_dofs(const ElemType t, const Order o) { return l2_lagrange_gll_n_dofs(t, o); } +template <> unsigned int FE<2,L2_LAGRANGE_GLL>::n_dofs(const ElemType t, const Order o) { return l2_lagrange_gll_n_dofs(t, o); } +template <> unsigned int FE<3,L2_LAGRANGE_GLL>::n_dofs(const ElemType t, const Order o) { return l2_lagrange_gll_n_dofs(t, o); } + +template <> unsigned int FE<0,L2_LAGRANGE_GLL>::n_dofs(const Elem * e, const Order o) { return l2_lagrange_gll_n_dofs(e, o); } +template <> unsigned int FE<1,L2_LAGRANGE_GLL>::n_dofs(const Elem * e, const Order o) { return l2_lagrange_gll_n_dofs(e, o); } +template <> unsigned int FE<2,L2_LAGRANGE_GLL>::n_dofs(const Elem * e, const Order o) { return l2_lagrange_gll_n_dofs(e, o); } +template <> unsigned int FE<3,L2_LAGRANGE_GLL>::n_dofs(const Elem * e, const Order o) { return l2_lagrange_gll_n_dofs(e, o); } + +template <> unsigned int FE<0,L2_LAGRANGE_GLL>::n_dofs_at_node(const ElemType, const Order, const unsigned int) { return 0; } +template <> unsigned int FE<1,L2_LAGRANGE_GLL>::n_dofs_at_node(const ElemType, const Order, const unsigned int) { return 0; } +template <> unsigned int FE<2,L2_LAGRANGE_GLL>::n_dofs_at_node(const ElemType, const Order, const unsigned int) { return 0; } +template <> unsigned int FE<3,L2_LAGRANGE_GLL>::n_dofs_at_node(const ElemType, const Order, const unsigned int) { return 0; } + +template <> unsigned int FE<0,L2_LAGRANGE_GLL>::n_dofs_at_node(const Elem &, const Order, const unsigned int) { return 0; } +template <> unsigned int FE<1,L2_LAGRANGE_GLL>::n_dofs_at_node(const Elem &, const Order, const unsigned int) { return 0; } +template <> unsigned int FE<2,L2_LAGRANGE_GLL>::n_dofs_at_node(const Elem &, const Order, const unsigned int) { return 0; } +template <> unsigned int FE<3,L2_LAGRANGE_GLL>::n_dofs_at_node(const Elem &, const Order, const unsigned int) { return 0; } + +template <> unsigned int FE<0,L2_LAGRANGE_GLL>::n_dofs_per_elem(const ElemType t, const Order o) { return l2_lagrange_gll_n_dofs(t, o); } +template <> unsigned int FE<1,L2_LAGRANGE_GLL>::n_dofs_per_elem(const ElemType t, const Order o) { return l2_lagrange_gll_n_dofs(t, o); } +template <> unsigned int FE<2,L2_LAGRANGE_GLL>::n_dofs_per_elem(const ElemType t, const Order o) { return l2_lagrange_gll_n_dofs(t, o); } +template <> unsigned int FE<3,L2_LAGRANGE_GLL>::n_dofs_per_elem(const ElemType t, const Order o) { return l2_lagrange_gll_n_dofs(t, o); } + +template <> unsigned int FE<0,L2_LAGRANGE_GLL>::n_dofs_per_elem(const Elem & e, const Order o) { return l2_lagrange_gll_n_dofs(&e, o); } +template <> unsigned int FE<1,L2_LAGRANGE_GLL>::n_dofs_per_elem(const Elem & e, const Order o) { return l2_lagrange_gll_n_dofs(&e, o); } +template <> unsigned int FE<2,L2_LAGRANGE_GLL>::n_dofs_per_elem(const Elem & e, const Order o) { return l2_lagrange_gll_n_dofs(&e, o); } +template <> unsigned int FE<3,L2_LAGRANGE_GLL>::n_dofs_per_elem(const Elem & e, const Order o) { return l2_lagrange_gll_n_dofs(&e, o); } + + +template <> FEContinuity FE<0,L2_LAGRANGE_GLL>::get_continuity() const { return DISCONTINUOUS; } +template <> FEContinuity FE<1,L2_LAGRANGE_GLL>::get_continuity() const { return DISCONTINUOUS; } +template <> FEContinuity FE<2,L2_LAGRANGE_GLL>::get_continuity() const { return DISCONTINUOUS; } +template <> FEContinuity FE<3,L2_LAGRANGE_GLL>::get_continuity() const { return DISCONTINUOUS; } + +// A nodal basis is not hierarchic +template <> bool FE<0,L2_LAGRANGE_GLL>::is_hierarchic() const { return false; } +template <> bool FE<1,L2_LAGRANGE_GLL>::is_hierarchic() const { return false; } +template <> bool FE<2,L2_LAGRANGE_GLL>::is_hierarchic() const { return false; } +template <> bool FE<3,L2_LAGRANGE_GLL>::is_hierarchic() const { return false; } + +// The shape functions are the same on every element of a type +template <> bool FE<0,L2_LAGRANGE_GLL>::shapes_need_reinit() const { return false; } +template <> bool FE<1,L2_LAGRANGE_GLL>::shapes_need_reinit() const { return false; } +template <> bool FE<2,L2_LAGRANGE_GLL>::shapes_need_reinit() const { return false; } +template <> bool FE<3,L2_LAGRANGE_GLL>::shapes_need_reinit() const { return false; } + +// A DISCONTINUOUS basis shares nothing across a hanging node, so it constrains nothing +#ifdef LIBMESH_ENABLE_AMR +template <> +void FE<2,L2_LAGRANGE_GLL>::compute_constraints (DofConstraints &, + DofMap &, + const unsigned int, + const Elem *) +{ } + +template <> +void FE<3,L2_LAGRANGE_GLL>::compute_constraints (DofConstraints &, + DofMap &, + const unsigned int, + const Elem *) +{ } +#endif // LIBMESH_ENABLE_AMR + + +} // namespace libMesh diff --git a/src/fe/fe_lagrange_gll_shape_0D.C b/src/fe/fe_lagrange_gll_shape_0D.C new file mode 100644 index 0000000000..6a7cb0abe0 --- /dev/null +++ b/src/fe/fe_lagrange_gll_shape_0D.C @@ -0,0 +1,147 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + + +// Local includes +#include "libmesh/fe.h" +#include "libmesh/elem.h" + + +namespace libMesh +{ + + +LIBMESH_DEFAULT_VECTORIZED_FE(0,L2_LAGRANGE_GLL) + + +template <> +Real FE<0,L2_LAGRANGE_GLL>::shape(const ElemType, + const Order, + const unsigned int libmesh_dbg_var(i), + const Point &) +{ + libmesh_assert_less (i, 1); + return 1.; +} + + +template <> +Real FE<0,L2_LAGRANGE_GLL>::shape(const Elem *, + const Order, + const unsigned int libmesh_dbg_var(i), + const Point &, + const bool) +{ + libmesh_assert_less (i, 1); + return 1.; +} + + +template <> +Real FE<0,L2_LAGRANGE_GLL>::shape(const FEType, + const Elem *, + const unsigned int libmesh_dbg_var(i), + const Point &, + const bool) +{ + libmesh_assert_less (i, 1); + return 1.; +} + + +template <> +Real FE<0,L2_LAGRANGE_GLL>::shape_deriv(const ElemType, + const Order, + const unsigned int, + const unsigned int, + const Point &) +{ + libmesh_error_msg("No spatial derivatives in 0D!"); + return 0.; +} + + +template <> +Real FE<0,L2_LAGRANGE_GLL>::shape_deriv(const Elem *, + const Order, + const unsigned int, + const unsigned int, + const Point &, + const bool) +{ + libmesh_error_msg("No spatial derivatives in 0D!"); + return 0.; +} + + +template <> +Real FE<0,L2_LAGRANGE_GLL>::shape_deriv(const FEType, + const Elem *, + const unsigned int, + const unsigned int, + const Point &, + const bool) +{ + libmesh_error_msg("No spatial derivatives in 0D!"); + return 0.; +} + + +#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES + +template <> +Real FE<0,L2_LAGRANGE_GLL>::shape_second_deriv(const ElemType, + const Order, + const unsigned int, + const unsigned int, + const Point &) +{ + libmesh_error_msg("No spatial derivatives in 0D!"); + return 0.; +} + + +template <> +Real FE<0,L2_LAGRANGE_GLL>::shape_second_deriv(const Elem *, + const Order, + const unsigned int, + const unsigned int, + const Point &, + const bool) +{ + libmesh_error_msg("No spatial derivatives in 0D!"); + return 0.; +} + + +template <> +Real FE<0,L2_LAGRANGE_GLL>::shape_second_deriv(const FEType, + const Elem *, + const unsigned int, + const unsigned int, + const Point &, + const bool) +{ + libmesh_error_msg("No spatial derivatives in 0D!"); + return 0.; +} + + +#endif // LIBMESH_ENABLE_SECOND_DERIVATIVES + +} // namespace libMesh diff --git a/src/fe/fe_lagrange_gll_shape_1D.C b/src/fe/fe_lagrange_gll_shape_1D.C new file mode 100644 index 0000000000..6cb5ae7664 --- /dev/null +++ b/src/fe/fe_lagrange_gll_shape_1D.C @@ -0,0 +1,217 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +// Local includes +#include "libmesh/fe.h" +#include "libmesh/elem.h" +#include "libmesh/fe_lagrange_gll_shape_1D.h" + + +namespace libMesh +{ + +namespace { + +/** + * \returns The 1 dimensional tensor product of one-dimensional Gauss-Lobatto nodal + * shape functions, differentiated once in each coordinate that \p derivs names. + * + * The degrees of freedom of the L2_LAGRANGE_GLL basis all belong to the element, so the + * \p i'th runs over the points of the tensor grid in lexicographic order, the first + * coordinate varying fastest. + */ +Real tensor_shape(const Order order, + const unsigned int i, + const Point & p, + const unsigned int * const derivs, + const unsigned int n_derivs) +{ + const unsigned int n = static_cast(order) + 1; + + libmesh_assert_less (i, n); + + Real value = 1.; + unsigned int stride = 1; + + for (unsigned int d = 0; d != 1; ++d) + { + const unsigned int i_d = (i / stride) % n; + stride *= n; + + unsigned int n_d = 0; + for (unsigned int k = 0; k != n_derivs; ++k) + if (derivs[k] == d) + ++n_d; + + switch (n_d) + { + case 0: + value *= fe_lagrange_gll_1D_shape(order, i_d, p(d)); + break; + + case 1: + value *= fe_lagrange_gll_1D_shape_deriv(order, i_d, 0, p(d)); + break; + + default: + value *= fe_lagrange_gll_1D_shape_second_deriv(order, i_d, 0, p(d)); + break; + } + } + + return value; +} + +#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES +/// The coordinate pairs that the second derivative index runs over +const unsigned int second_deriv_pairs[1][2] = {{0, 0}}; +#endif // LIBMESH_ENABLE_SECOND_DERIVATIVES + +} // anonymous namespace + + +LIBMESH_DEFAULT_VECTORIZED_FE(1,L2_LAGRANGE_GLL) + + +template <> +Real FE<1,L2_LAGRANGE_GLL>::shape(const ElemType, + const Order order, + const unsigned int i, + const Point & p) +{ + return tensor_shape(order, i, p, nullptr, 0); +} + + +template <> +Real FE<1,L2_LAGRANGE_GLL>::shape(const Elem * elem, + const Order order, + const unsigned int i, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + + return tensor_shape(order + add_p_level*elem->p_level(), i, p, nullptr, 0); +} + + +template <> +Real FE<1,L2_LAGRANGE_GLL>::shape(const FEType fet, + const Elem * elem, + const unsigned int i, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + + return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, nullptr, 0); +} + + +template <> +Real FE<1,L2_LAGRANGE_GLL>::shape_deriv(const ElemType, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p) +{ + libmesh_assert_less (j, 1); + + return tensor_shape(order, i, p, &j, 1); +} + + +template <> +Real FE<1,L2_LAGRANGE_GLL>::shape_deriv(const Elem * elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 1); + + return tensor_shape(order + add_p_level*elem->p_level(), i, p, &j, 1); +} + + +template <> +Real FE<1,L2_LAGRANGE_GLL>::shape_deriv(const FEType fet, + const Elem * elem, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 1); + + return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, &j, 1); +} + + +#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES + +template <> +Real FE<1,L2_LAGRANGE_GLL>::shape_second_deriv(const ElemType, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p) +{ + libmesh_assert_less (j, 1); + + return tensor_shape(order, i, p, second_deriv_pairs[j], 2); +} + + +template <> +Real FE<1,L2_LAGRANGE_GLL>::shape_second_deriv(const Elem * elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 1); + + return tensor_shape(order + add_p_level*elem->p_level(), i, p, second_deriv_pairs[j], 2); +} + + +template <> +Real FE<1,L2_LAGRANGE_GLL>::shape_second_deriv(const FEType fet, + const Elem * elem, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 1); + + return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, second_deriv_pairs[j], 2); +} + + +#endif // LIBMESH_ENABLE_SECOND_DERIVATIVES + +} // namespace libMesh diff --git a/src/fe/fe_lagrange_gll_shape_2D.C b/src/fe/fe_lagrange_gll_shape_2D.C new file mode 100644 index 0000000000..5d346d72b2 --- /dev/null +++ b/src/fe/fe_lagrange_gll_shape_2D.C @@ -0,0 +1,217 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +// Local includes +#include "libmesh/fe.h" +#include "libmesh/elem.h" +#include "libmesh/fe_lagrange_gll_shape_1D.h" + + +namespace libMesh +{ + +namespace { + +/** + * \returns The 2 dimensional tensor product of one-dimensional Gauss-Lobatto nodal + * shape functions, differentiated once in each coordinate that \p derivs names. + * + * The degrees of freedom of the L2_LAGRANGE_GLL basis all belong to the element, so the + * \p i'th runs over the points of the tensor grid in lexicographic order, the first + * coordinate varying fastest. + */ +Real tensor_shape(const Order order, + const unsigned int i, + const Point & p, + const unsigned int * const derivs, + const unsigned int n_derivs) +{ + const unsigned int n = static_cast(order) + 1; + + libmesh_assert_less (i, n*n); + + Real value = 1.; + unsigned int stride = 1; + + for (unsigned int d = 0; d != 2; ++d) + { + const unsigned int i_d = (i / stride) % n; + stride *= n; + + unsigned int n_d = 0; + for (unsigned int k = 0; k != n_derivs; ++k) + if (derivs[k] == d) + ++n_d; + + switch (n_d) + { + case 0: + value *= fe_lagrange_gll_1D_shape(order, i_d, p(d)); + break; + + case 1: + value *= fe_lagrange_gll_1D_shape_deriv(order, i_d, 0, p(d)); + break; + + default: + value *= fe_lagrange_gll_1D_shape_second_deriv(order, i_d, 0, p(d)); + break; + } + } + + return value; +} + +#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES +/// The coordinate pairs that the second derivative index runs over +const unsigned int second_deriv_pairs[3][2] = {{0, 0}, {0, 1}, {1, 1}}; +#endif // LIBMESH_ENABLE_SECOND_DERIVATIVES + +} // anonymous namespace + + +LIBMESH_DEFAULT_VECTORIZED_FE(2,L2_LAGRANGE_GLL) + + +template <> +Real FE<2,L2_LAGRANGE_GLL>::shape(const ElemType, + const Order order, + const unsigned int i, + const Point & p) +{ + return tensor_shape(order, i, p, nullptr, 0); +} + + +template <> +Real FE<2,L2_LAGRANGE_GLL>::shape(const Elem * elem, + const Order order, + const unsigned int i, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + + return tensor_shape(order + add_p_level*elem->p_level(), i, p, nullptr, 0); +} + + +template <> +Real FE<2,L2_LAGRANGE_GLL>::shape(const FEType fet, + const Elem * elem, + const unsigned int i, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + + return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, nullptr, 0); +} + + +template <> +Real FE<2,L2_LAGRANGE_GLL>::shape_deriv(const ElemType, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p) +{ + libmesh_assert_less (j, 2); + + return tensor_shape(order, i, p, &j, 1); +} + + +template <> +Real FE<2,L2_LAGRANGE_GLL>::shape_deriv(const Elem * elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 2); + + return tensor_shape(order + add_p_level*elem->p_level(), i, p, &j, 1); +} + + +template <> +Real FE<2,L2_LAGRANGE_GLL>::shape_deriv(const FEType fet, + const Elem * elem, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 2); + + return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, &j, 1); +} + + +#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES + +template <> +Real FE<2,L2_LAGRANGE_GLL>::shape_second_deriv(const ElemType, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p) +{ + libmesh_assert_less (j, 3); + + return tensor_shape(order, i, p, second_deriv_pairs[j], 2); +} + + +template <> +Real FE<2,L2_LAGRANGE_GLL>::shape_second_deriv(const Elem * elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 3); + + return tensor_shape(order + add_p_level*elem->p_level(), i, p, second_deriv_pairs[j], 2); +} + + +template <> +Real FE<2,L2_LAGRANGE_GLL>::shape_second_deriv(const FEType fet, + const Elem * elem, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 3); + + return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, second_deriv_pairs[j], 2); +} + + +#endif // LIBMESH_ENABLE_SECOND_DERIVATIVES + +} // namespace libMesh diff --git a/src/fe/fe_lagrange_gll_shape_3D.C b/src/fe/fe_lagrange_gll_shape_3D.C new file mode 100644 index 0000000000..652eb8fe40 --- /dev/null +++ b/src/fe/fe_lagrange_gll_shape_3D.C @@ -0,0 +1,217 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +// Local includes +#include "libmesh/fe.h" +#include "libmesh/elem.h" +#include "libmesh/fe_lagrange_gll_shape_1D.h" + + +namespace libMesh +{ + +namespace { + +/** + * \returns The 3 dimensional tensor product of one-dimensional Gauss-Lobatto nodal + * shape functions, differentiated once in each coordinate that \p derivs names. + * + * The degrees of freedom of the L2_LAGRANGE_GLL basis all belong to the element, so the + * \p i'th runs over the points of the tensor grid in lexicographic order, the first + * coordinate varying fastest. + */ +Real tensor_shape(const Order order, + const unsigned int i, + const Point & p, + const unsigned int * const derivs, + const unsigned int n_derivs) +{ + const unsigned int n = static_cast(order) + 1; + + libmesh_assert_less (i, n*n*n); + + Real value = 1.; + unsigned int stride = 1; + + for (unsigned int d = 0; d != 3; ++d) + { + const unsigned int i_d = (i / stride) % n; + stride *= n; + + unsigned int n_d = 0; + for (unsigned int k = 0; k != n_derivs; ++k) + if (derivs[k] == d) + ++n_d; + + switch (n_d) + { + case 0: + value *= fe_lagrange_gll_1D_shape(order, i_d, p(d)); + break; + + case 1: + value *= fe_lagrange_gll_1D_shape_deriv(order, i_d, 0, p(d)); + break; + + default: + value *= fe_lagrange_gll_1D_shape_second_deriv(order, i_d, 0, p(d)); + break; + } + } + + return value; +} + +#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES +/// The coordinate pairs that the second derivative index runs over +const unsigned int second_deriv_pairs[6][2] = {{0, 0}, {0, 1}, {1, 1}, {0, 2}, {1, 2}, {2, 2}}; +#endif // LIBMESH_ENABLE_SECOND_DERIVATIVES + +} // anonymous namespace + + +LIBMESH_DEFAULT_VECTORIZED_FE(3,L2_LAGRANGE_GLL) + + +template <> +Real FE<3,L2_LAGRANGE_GLL>::shape(const ElemType, + const Order order, + const unsigned int i, + const Point & p) +{ + return tensor_shape(order, i, p, nullptr, 0); +} + + +template <> +Real FE<3,L2_LAGRANGE_GLL>::shape(const Elem * elem, + const Order order, + const unsigned int i, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + + return tensor_shape(order + add_p_level*elem->p_level(), i, p, nullptr, 0); +} + + +template <> +Real FE<3,L2_LAGRANGE_GLL>::shape(const FEType fet, + const Elem * elem, + const unsigned int i, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + + return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, nullptr, 0); +} + + +template <> +Real FE<3,L2_LAGRANGE_GLL>::shape_deriv(const ElemType, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p) +{ + libmesh_assert_less (j, 3); + + return tensor_shape(order, i, p, &j, 1); +} + + +template <> +Real FE<3,L2_LAGRANGE_GLL>::shape_deriv(const Elem * elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 3); + + return tensor_shape(order + add_p_level*elem->p_level(), i, p, &j, 1); +} + + +template <> +Real FE<3,L2_LAGRANGE_GLL>::shape_deriv(const FEType fet, + const Elem * elem, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 3); + + return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, &j, 1); +} + + +#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES + +template <> +Real FE<3,L2_LAGRANGE_GLL>::shape_second_deriv(const ElemType, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p) +{ + libmesh_assert_less (j, 6); + + return tensor_shape(order, i, p, second_deriv_pairs[j], 2); +} + + +template <> +Real FE<3,L2_LAGRANGE_GLL>::shape_second_deriv(const Elem * elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 6); + + return tensor_shape(order + add_p_level*elem->p_level(), i, p, second_deriv_pairs[j], 2); +} + + +template <> +Real FE<3,L2_LAGRANGE_GLL>::shape_second_deriv(const FEType fet, + const Elem * elem, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 6); + + return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, second_deriv_pairs[j], 2); +} + + +#endif // LIBMESH_ENABLE_SECOND_DERIVATIVES + +} // namespace libMesh diff --git a/src/fe/fe_transformation_base.C b/src/fe/fe_transformation_base.C index 0fb48dfdfc..caeee5dbcf 100644 --- a/src/fe/fe_transformation_base.C +++ b/src/fe/fe_transformation_base.C @@ -51,6 +51,7 @@ std::unique_ptr> FETransformationBase @@ -45,6 +46,22 @@ FEType::default_quadrature_rule (const unsigned int dim, if (family == SUBDIVISION) return std::make_unique(dim, static_cast(1 + extraorder)); + // The Gauss-Lobatto nodal bases interpolate at the points of the Gauss-Lobatto rule of + // their own order, so that rule is the one they are collocated with: it makes their mass + // matrix diagonal and asks nothing to evaluate their shape functions. A rule of n points + // is exact through degree 2n-3, so the order that yields the p+1 points a basis of degree + // p interpolates at is 2p-1. An extraorder carries past that, which buys accuracy on the + // integrands a Gauss-Lobatto rule of p+1 points does not reach and gives up collocation. + // + // A p refined element keeps the pairing: QBase raises the order of a rule by twice the + // p_level it is initialized with, and 2p-1 rises by two for each degree, so the rule on an + // element of level l carries the p+l+1 points that the basis of degree p+l interpolates at. + if (family == L2_LAGRANGE_GLL) + { + const int p = static_cast(order.get_order()); + return std::make_unique(dim, static_cast(2*p - 1 + extraorder)); + } + return std::make_unique(dim, static_cast(this->default_quadrature_order() + extraorder)); } diff --git a/src/libmesh_SOURCES b/src/libmesh_SOURCES index d73987f916..95b89dc894 100644 --- a/src/libmesh_SOURCES +++ b/src/libmesh_SOURCES @@ -65,7 +65,12 @@ libmesh_SOURCES = \ src/fe/fe_interface_inf_fe.C \ src/fe/fe_l2_hierarchic.C \ src/fe/fe_l2_lagrange.C \ + src/fe/fe_l2_lagrange_gll.C \ src/fe/fe_lagrange.C \ + src/fe/fe_lagrange_gll_shape_0D.C \ + src/fe/fe_lagrange_gll_shape_1D.C \ + src/fe/fe_lagrange_gll_shape_2D.C \ + src/fe/fe_lagrange_gll_shape_3D.C \ src/fe/fe_lagrange_shape_0D.C \ src/fe/fe_lagrange_shape_1D.C \ src/fe/fe_lagrange_shape_2D.C \ diff --git a/src/utils/string_to_enum.C b/src/utils/string_to_enum.C index 18e86cd1c6..1d8609bd96 100644 --- a/src/utils/string_to_enum.C +++ b/src/utils/string_to_enum.C @@ -223,6 +223,7 @@ std::map fefamily_to_enum { {"LAGRANGE_VEC" , LAGRANGE_VEC}, {"L2_LAGRANGE" , L2_LAGRANGE}, {"L2_LAGRANGE_VEC" , L2_LAGRANGE_VEC}, + {"L2_LAGRANGE_GLL" , L2_LAGRANGE_GLL}, {"HIERARCHIC" , HIERARCHIC}, {"HIERARCHIC_VEC" , HIERARCHIC_VEC}, {"L2_HIERARCHIC" , L2_HIERARCHIC}, From 93c3fc7585f3e9943818dde7917e33fb91bf4814 Mon Sep 17 00:00:00 2001 From: Alex Lindsay Date: Tue, 15 Sep 2026 08:18:27 -0700 Subject: [PATCH 3/8] Test the L2_LAGRANGE_GLL family The existing FETest harness covers the family's shape functions, their first and second derivatives, and the interface reporting its degree of freedom counts, at orders one through four on the tensor product element types. The new FEGLLCollocationTest covers what is particular to this family: that the matrix of shape function values at the points of the family's own quadrature rule is the identity, and that the mass matrix that rule assembles is diagonal, carrying the weight of each point times the Jacobian there. Both hold exactly rather than to a tolerance, which is what the basis reading its points from QGaussLobatto buys, so the assertions carry none. The mesh is skewed so that a diagonal mass matrix is a property of the basis rather than of a Jacobian that happens to be constant. testPartitionOfUnity fails an unlisted family rather than assume an answer for it, so the family joins those whose shape functions sum to one. Co-Authored-By: Claude --- tests/Makefile.am | 2 + tests/Makefile.in | 216 +++++++++++++++++++++++++++++ tests/fe/fe_gll_collocation_test.C | 188 +++++++++++++++++++++++++ tests/fe/fe_l2_lagrange_gll_test.C | 26 ++++ tests/fe/fe_test.h | 1 + 5 files changed, 433 insertions(+) create mode 100644 tests/fe/fe_gll_collocation_test.C create mode 100644 tests/fe/fe_l2_lagrange_gll_test.C diff --git a/tests/Makefile.am b/tests/Makefile.am index 40eecc7894..283e4ccd69 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -35,6 +35,8 @@ unit_tests_sources = \ fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C \ fe/fe_l2_lagrange_test.C \ + fe/fe_l2_lagrange_gll_test.C \ + fe/fe_gll_collocation_test.C \ fe/fe_lagrange_test.C \ fe/fe_monomial_test.C \ fe/fe_rational_map.C \ diff --git a/tests/Makefile.in b/tests/Makefile.in index ebc683c99b..1e37f81a00 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -218,6 +218,7 @@ am__unit_tests_dbg_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_hermite_test.C fe/fe_hierarchic_test.C \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ + fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ fe/fe_lagrange_test.C fe/fe_monomial_test.C \ fe/fe_rational_map.C fe/fe_rational_test.C fe/fe_side_test.C \ fe/fe_szabab_test.C fe/fe_test.h fe/fe_xyz_test.C \ @@ -305,6 +306,8 @@ am__objects_2 = unit_tests_dbg-driver.$(OBJEXT) \ fe/unit_tests_dbg-inf_fe_radial_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_l2_hierarchic_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_l2_lagrange_test.$(OBJEXT) \ + fe/unit_tests_dbg-fe_l2_lagrange_gll_test.$(OBJEXT) \ + fe/unit_tests_dbg-fe_gll_collocation_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_rational_map.$(OBJEXT) \ @@ -436,6 +439,7 @@ am__unit_tests_devel_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_hermite_test.C fe/fe_hierarchic_test.C \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ + fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ fe/fe_lagrange_test.C fe/fe_monomial_test.C \ fe/fe_rational_map.C fe/fe_rational_test.C fe/fe_side_test.C \ fe/fe_szabab_test.C fe/fe_test.h fe/fe_xyz_test.C \ @@ -522,6 +526,8 @@ am__objects_4 = unit_tests_devel-driver.$(OBJEXT) \ fe/unit_tests_devel-inf_fe_radial_test.$(OBJEXT) \ fe/unit_tests_devel-fe_l2_hierarchic_test.$(OBJEXT) \ fe/unit_tests_devel-fe_l2_lagrange_test.$(OBJEXT) \ + fe/unit_tests_devel-fe_l2_lagrange_gll_test.$(OBJEXT) \ + fe/unit_tests_devel-fe_gll_collocation_test.$(OBJEXT) \ fe/unit_tests_devel-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_devel-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_devel-fe_rational_map.$(OBJEXT) \ @@ -671,6 +677,7 @@ am__unit_tests_oprof_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_hermite_test.C fe/fe_hierarchic_test.C \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ + fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ fe/fe_lagrange_test.C fe/fe_monomial_test.C \ fe/fe_rational_map.C fe/fe_rational_test.C fe/fe_side_test.C \ fe/fe_szabab_test.C fe/fe_test.h fe/fe_xyz_test.C \ @@ -757,6 +764,8 @@ am__objects_6 = unit_tests_oprof-driver.$(OBJEXT) \ fe/unit_tests_oprof-inf_fe_radial_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_l2_hierarchic_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_l2_lagrange_test.$(OBJEXT) \ + fe/unit_tests_oprof-fe_l2_lagrange_gll_test.$(OBJEXT) \ + fe/unit_tests_oprof-fe_gll_collocation_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_rational_map.$(OBJEXT) \ @@ -884,6 +893,7 @@ am__unit_tests_opt_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_hermite_test.C fe/fe_hierarchic_test.C \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ + fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ fe/fe_lagrange_test.C fe/fe_monomial_test.C \ fe/fe_rational_map.C fe/fe_rational_test.C fe/fe_side_test.C \ fe/fe_szabab_test.C fe/fe_test.h fe/fe_xyz_test.C \ @@ -970,6 +980,8 @@ am__objects_8 = unit_tests_opt-driver.$(OBJEXT) \ fe/unit_tests_opt-inf_fe_radial_test.$(OBJEXT) \ fe/unit_tests_opt-fe_l2_hierarchic_test.$(OBJEXT) \ fe/unit_tests_opt-fe_l2_lagrange_test.$(OBJEXT) \ + fe/unit_tests_opt-fe_l2_lagrange_gll_test.$(OBJEXT) \ + fe/unit_tests_opt-fe_gll_collocation_test.$(OBJEXT) \ fe/unit_tests_opt-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_opt-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_opt-fe_rational_map.$(OBJEXT) \ @@ -1097,6 +1109,7 @@ am__unit_tests_prof_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_hermite_test.C fe/fe_hierarchic_test.C \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ + fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ fe/fe_lagrange_test.C fe/fe_monomial_test.C \ fe/fe_rational_map.C fe/fe_rational_test.C fe/fe_side_test.C \ fe/fe_szabab_test.C fe/fe_test.h fe/fe_xyz_test.C \ @@ -1183,6 +1196,8 @@ am__objects_10 = unit_tests_prof-driver.$(OBJEXT) \ fe/unit_tests_prof-inf_fe_radial_test.$(OBJEXT) \ fe/unit_tests_prof-fe_l2_hierarchic_test.$(OBJEXT) \ fe/unit_tests_prof-fe_l2_lagrange_test.$(OBJEXT) \ + fe/unit_tests_prof-fe_l2_lagrange_gll_test.$(OBJEXT) \ + fe/unit_tests_prof-fe_gll_collocation_test.$(OBJEXT) \ fe/unit_tests_prof-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_prof-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_prof-fe_rational_map.$(OBJEXT) \ @@ -1357,10 +1372,12 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_dbg-dual_shape_verification_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_clough_test.Po \ + fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_hdiv_grad_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_hermite_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_hierarchic_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_l2_hierarchic_test.Po \ + fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_monomial_test.Po \ @@ -1374,10 +1391,12 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_devel-dual_shape_verification_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_clough_test.Po \ + fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_hdiv_grad_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_hermite_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_hierarchic_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_l2_hierarchic_test.Po \ + fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_monomial_test.Po \ @@ -1391,10 +1410,12 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_oprof-dual_shape_verification_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_clough_test.Po \ + fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_hdiv_grad_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_hermite_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_hierarchic_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_l2_hierarchic_test.Po \ + fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_monomial_test.Po \ @@ -1408,10 +1429,12 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_opt-dual_shape_verification_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_clough_test.Po \ + fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_hdiv_grad_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_hermite_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_hierarchic_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_l2_hierarchic_test.Po \ + fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_monomial_test.Po \ @@ -1425,10 +1448,12 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_prof-dual_shape_verification_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_clough_test.Po \ + fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_hdiv_grad_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_hermite_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_hierarchic_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_l2_hierarchic_test.Po \ + fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_monomial_test.Po \ @@ -2459,6 +2484,7 @@ unit_tests_sources = driver.C libmesh_cppunit.h stream_redirector.h \ fe/fe_hermite_test.C fe/fe_hierarchic_test.C \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ + fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ fe/fe_lagrange_test.C fe/fe_monomial_test.C \ fe/fe_rational_map.C fe/fe_rational_test.C fe/fe_side_test.C \ fe/fe_szabab_test.C fe/fe_test.h fe/fe_xyz_test.C \ @@ -2821,6 +2847,10 @@ fe/unit_tests_dbg-fe_l2_hierarchic_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_dbg-fe_l2_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_dbg-fe_l2_lagrange_gll_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_dbg-fe_gll_collocation_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_dbg-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_dbg-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -3145,6 +3175,10 @@ fe/unit_tests_devel-fe_l2_hierarchic_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_devel-fe_l2_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_devel-fe_l2_lagrange_gll_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_devel-fe_gll_collocation_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_devel-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_devel-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -3449,6 +3483,10 @@ fe/unit_tests_oprof-fe_l2_hierarchic_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_oprof-fe_l2_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_oprof-fe_l2_lagrange_gll_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_oprof-fe_gll_collocation_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_oprof-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_oprof-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -3713,6 +3751,10 @@ fe/unit_tests_opt-fe_l2_hierarchic_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_opt-fe_l2_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_opt-fe_l2_lagrange_gll_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_opt-fe_gll_collocation_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_opt-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_opt-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -3977,6 +4019,10 @@ fe/unit_tests_prof-fe_l2_hierarchic_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_prof-fe_l2_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_prof-fe_l2_lagrange_gll_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_prof-fe_gll_collocation_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_prof-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_prof-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -4271,10 +4317,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-dual_shape_verification_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_clough_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_hdiv_grad_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_hermite_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_hierarchic_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_l2_hierarchic_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_monomial_test.Po@am__quote@ # am--include-marker @@ -4288,10 +4336,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-dual_shape_verification_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_clough_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_hdiv_grad_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_hermite_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_hierarchic_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_l2_hierarchic_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_monomial_test.Po@am__quote@ # am--include-marker @@ -4305,10 +4355,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-dual_shape_verification_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_clough_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_hdiv_grad_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_hermite_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_hierarchic_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_l2_hierarchic_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_monomial_test.Po@am__quote@ # am--include-marker @@ -4322,10 +4374,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-dual_shape_verification_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_clough_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_hdiv_grad_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_hermite_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_hierarchic_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_l2_hierarchic_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_monomial_test.Po@am__quote@ # am--include-marker @@ -4339,10 +4393,12 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-dual_shape_verification_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_clough_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_hdiv_grad_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_hermite_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_hierarchic_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_l2_hierarchic_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_monomial_test.Po@am__quote@ # am--include-marker @@ -5132,6 +5188,34 @@ fe/unit_tests_dbg-fe_l2_lagrange_test.obj: fe/fe_l2_lagrange_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 fe/unit_tests_dbg-fe_l2_lagrange_test.obj `if test -f 'fe/fe_l2_lagrange_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_test.C'; fi` +fe/unit_tests_dbg-fe_l2_lagrange_gll_test.o: fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_l2_lagrange_gll_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Tpo -c -o fe/unit_tests_dbg-fe_l2_lagrange_gll_test.o `test -f 'fe/fe_l2_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_l2_lagrange_gll_test.C' object='fe/unit_tests_dbg-fe_l2_lagrange_gll_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 fe/unit_tests_dbg-fe_l2_lagrange_gll_test.o `test -f 'fe/fe_l2_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_l2_lagrange_gll_test.C + +fe/unit_tests_dbg-fe_l2_lagrange_gll_test.obj: fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_l2_lagrange_gll_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Tpo -c -o fe/unit_tests_dbg-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_l2_lagrange_gll_test.C' object='fe/unit_tests_dbg-fe_l2_lagrange_gll_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 fe/unit_tests_dbg-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` + +fe/unit_tests_dbg-fe_gll_collocation_test.o: fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_gll_collocation_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_dbg-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_collocation_test.C' object='fe/unit_tests_dbg-fe_gll_collocation_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 fe/unit_tests_dbg-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C + +fe/unit_tests_dbg-fe_gll_collocation_test.obj: fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_gll_collocation_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_dbg-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_collocation_test.C' object='fe/unit_tests_dbg-fe_gll_collocation_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 fe/unit_tests_dbg-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` + fe/unit_tests_dbg-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Tpo -c -o fe/unit_tests_dbg-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Po @@ -6910,6 +6994,34 @@ fe/unit_tests_devel-fe_l2_lagrange_test.obj: fe/fe_l2_lagrange_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 fe/unit_tests_devel-fe_l2_lagrange_test.obj `if test -f 'fe/fe_l2_lagrange_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_test.C'; fi` +fe/unit_tests_devel-fe_l2_lagrange_gll_test.o: fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_l2_lagrange_gll_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Tpo -c -o fe/unit_tests_devel-fe_l2_lagrange_gll_test.o `test -f 'fe/fe_l2_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_l2_lagrange_gll_test.C' object='fe/unit_tests_devel-fe_l2_lagrange_gll_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 fe/unit_tests_devel-fe_l2_lagrange_gll_test.o `test -f 'fe/fe_l2_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_l2_lagrange_gll_test.C + +fe/unit_tests_devel-fe_l2_lagrange_gll_test.obj: fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_l2_lagrange_gll_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Tpo -c -o fe/unit_tests_devel-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_l2_lagrange_gll_test.C' object='fe/unit_tests_devel-fe_l2_lagrange_gll_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 fe/unit_tests_devel-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` + +fe/unit_tests_devel-fe_gll_collocation_test.o: fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_gll_collocation_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_devel-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_collocation_test.C' object='fe/unit_tests_devel-fe_gll_collocation_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 fe/unit_tests_devel-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C + +fe/unit_tests_devel-fe_gll_collocation_test.obj: fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_gll_collocation_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_devel-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_collocation_test.C' object='fe/unit_tests_devel-fe_gll_collocation_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 fe/unit_tests_devel-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` + fe/unit_tests_devel-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Tpo -c -o fe/unit_tests_devel-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Po @@ -8688,6 +8800,34 @@ fe/unit_tests_oprof-fe_l2_lagrange_test.obj: fe/fe_l2_lagrange_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 fe/unit_tests_oprof-fe_l2_lagrange_test.obj `if test -f 'fe/fe_l2_lagrange_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_test.C'; fi` +fe/unit_tests_oprof-fe_l2_lagrange_gll_test.o: fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_l2_lagrange_gll_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Tpo -c -o fe/unit_tests_oprof-fe_l2_lagrange_gll_test.o `test -f 'fe/fe_l2_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_l2_lagrange_gll_test.C' object='fe/unit_tests_oprof-fe_l2_lagrange_gll_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 fe/unit_tests_oprof-fe_l2_lagrange_gll_test.o `test -f 'fe/fe_l2_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_l2_lagrange_gll_test.C + +fe/unit_tests_oprof-fe_l2_lagrange_gll_test.obj: fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_l2_lagrange_gll_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Tpo -c -o fe/unit_tests_oprof-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_l2_lagrange_gll_test.C' object='fe/unit_tests_oprof-fe_l2_lagrange_gll_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 fe/unit_tests_oprof-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` + +fe/unit_tests_oprof-fe_gll_collocation_test.o: fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_gll_collocation_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_oprof-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_collocation_test.C' object='fe/unit_tests_oprof-fe_gll_collocation_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 fe/unit_tests_oprof-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C + +fe/unit_tests_oprof-fe_gll_collocation_test.obj: fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_gll_collocation_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_oprof-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_collocation_test.C' object='fe/unit_tests_oprof-fe_gll_collocation_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 fe/unit_tests_oprof-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` + fe/unit_tests_oprof-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Tpo -c -o fe/unit_tests_oprof-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Po @@ -10466,6 +10606,34 @@ fe/unit_tests_opt-fe_l2_lagrange_test.obj: fe/fe_l2_lagrange_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 fe/unit_tests_opt-fe_l2_lagrange_test.obj `if test -f 'fe/fe_l2_lagrange_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_test.C'; fi` +fe/unit_tests_opt-fe_l2_lagrange_gll_test.o: fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_l2_lagrange_gll_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Tpo -c -o fe/unit_tests_opt-fe_l2_lagrange_gll_test.o `test -f 'fe/fe_l2_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_l2_lagrange_gll_test.C' object='fe/unit_tests_opt-fe_l2_lagrange_gll_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 fe/unit_tests_opt-fe_l2_lagrange_gll_test.o `test -f 'fe/fe_l2_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_l2_lagrange_gll_test.C + +fe/unit_tests_opt-fe_l2_lagrange_gll_test.obj: fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_l2_lagrange_gll_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Tpo -c -o fe/unit_tests_opt-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_l2_lagrange_gll_test.C' object='fe/unit_tests_opt-fe_l2_lagrange_gll_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 fe/unit_tests_opt-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` + +fe/unit_tests_opt-fe_gll_collocation_test.o: fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_gll_collocation_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_opt-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_collocation_test.C' object='fe/unit_tests_opt-fe_gll_collocation_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 fe/unit_tests_opt-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C + +fe/unit_tests_opt-fe_gll_collocation_test.obj: fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_gll_collocation_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_opt-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_collocation_test.C' object='fe/unit_tests_opt-fe_gll_collocation_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 fe/unit_tests_opt-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` + fe/unit_tests_opt-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Tpo -c -o fe/unit_tests_opt-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Po @@ -12244,6 +12412,34 @@ fe/unit_tests_prof-fe_l2_lagrange_test.obj: fe/fe_l2_lagrange_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 fe/unit_tests_prof-fe_l2_lagrange_test.obj `if test -f 'fe/fe_l2_lagrange_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_test.C'; fi` +fe/unit_tests_prof-fe_l2_lagrange_gll_test.o: fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_l2_lagrange_gll_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Tpo -c -o fe/unit_tests_prof-fe_l2_lagrange_gll_test.o `test -f 'fe/fe_l2_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_l2_lagrange_gll_test.C' object='fe/unit_tests_prof-fe_l2_lagrange_gll_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 fe/unit_tests_prof-fe_l2_lagrange_gll_test.o `test -f 'fe/fe_l2_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_l2_lagrange_gll_test.C + +fe/unit_tests_prof-fe_l2_lagrange_gll_test.obj: fe/fe_l2_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_l2_lagrange_gll_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Tpo -c -o fe/unit_tests_prof-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_l2_lagrange_gll_test.C' object='fe/unit_tests_prof-fe_l2_lagrange_gll_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 fe/unit_tests_prof-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` + +fe/unit_tests_prof-fe_gll_collocation_test.o: fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_gll_collocation_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_prof-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_collocation_test.C' object='fe/unit_tests_prof-fe_gll_collocation_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 fe/unit_tests_prof-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C + +fe/unit_tests_prof-fe_gll_collocation_test.obj: fe/fe_gll_collocation_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_gll_collocation_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_prof-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_collocation_test.C' object='fe/unit_tests_prof-fe_gll_collocation_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 fe/unit_tests_prof-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` + fe/unit_tests_prof-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Tpo -c -o fe/unit_tests_prof-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Po @@ -14190,10 +14386,12 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_dbg-dual_shape_verification_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_clough_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_l2_hierarchic_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_monomial_test.Po @@ -14207,10 +14405,12 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_devel-dual_shape_verification_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_clough_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_l2_hierarchic_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_monomial_test.Po @@ -14224,10 +14424,12 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_oprof-dual_shape_verification_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_clough_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_l2_hierarchic_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_monomial_test.Po @@ -14241,10 +14443,12 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_opt-dual_shape_verification_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_clough_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_l2_hierarchic_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_monomial_test.Po @@ -14258,10 +14462,12 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_prof-dual_shape_verification_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_clough_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_l2_hierarchic_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_monomial_test.Po @@ -14872,10 +15078,12 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_dbg-dual_shape_verification_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_clough_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_l2_hierarchic_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_monomial_test.Po @@ -14889,10 +15097,12 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_devel-dual_shape_verification_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_clough_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_l2_hierarchic_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_monomial_test.Po @@ -14906,10 +15116,12 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_oprof-dual_shape_verification_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_clough_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_l2_hierarchic_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_monomial_test.Po @@ -14923,10 +15135,12 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_opt-dual_shape_verification_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_clough_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_l2_hierarchic_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_monomial_test.Po @@ -14940,10 +15154,12 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_prof-dual_shape_verification_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_clough_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_l2_hierarchic_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_monomial_test.Po diff --git a/tests/fe/fe_gll_collocation_test.C b/tests/fe/fe_gll_collocation_test.C new file mode 100644 index 0000000000..6e196cb900 --- /dev/null +++ b/tests/fe/fe_gll_collocation_test.C @@ -0,0 +1,188 @@ +// A nodal basis whose interpolation points are the points of a quadrature rule is +// collocated with it: each shape function is one at its own point and zero at every other, +// so the matrix of shape function values is the identity and the mass matrix the rule +// assembles is diagonal. The second holds for any mapping and any element shape, since the +// Jacobian only scales a diagonal entry. +// +// The property is exact rather than approximate, so these tests compare against 1 and 0 +// with no tolerance. That is what the basis reading its points from QGaussLobatto buys: a +// basis that computed its own would agree only to roundoff. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "test_comm.h" +#include "libmesh_cppunit.h" + +#include +#include +#include + +using namespace libMesh; + +template +class FEGLLCollocationTest : public CppUnit::TestCase +{ +protected: + std::unique_ptr _mesh; + std::string libmesh_suite_name; + +public: + void setUp() + { + _mesh = std::make_unique(*TestCommWorld); + + const unsigned int dim = Elem::type_to_dim_map[elem_type]; + + if (dim == 1) + MeshTools::Generation::build_line(*_mesh, 2, 0., 1., elem_type); + else if (dim == 2) + MeshTools::Generation::build_square(*_mesh, 2, 2, 0., 1., 0., 1., elem_type); + else + MeshTools::Generation::build_cube(*_mesh, 2, 2, 2, 0., 1., 0., 1., 0., 1., elem_type); + + // Skew the mesh so that no element is a scaled copy of the reference element, which + // holds the diagonal mass matrix to being a property of the basis rather than of a + // Jacobian that happens to be constant. + for (auto * node : _mesh->node_ptr_range()) + { + Node & p = *node; + const Real y = (LIBMESH_DIM > 1) ? p(1) : 0.; + const Real z = (LIBMESH_DIM > 2) ? p(2) : 0.; + + p(0) += 0.3 * y + 0.17 * z; + if (LIBMESH_DIM > 1) + p(1) += 0.23 * z; + } + } + + void tearDown() { _mesh.reset(); } + + /// The rule the family pairs itself with, which is the one it is collocated with + std::unique_ptr collocated_rule(const FEType & fe_type, const unsigned int dim) + { + return fe_type.default_quadrature_rule(dim); + } + + void testShapesAreIdentity() + { + LOG_UNIT_TEST; + + const FEType fe_type(order, L2_LAGRANGE_GLL); + const unsigned int dim = Elem::type_to_dim_map[elem_type]; + + std::unique_ptr fe = FEBase::build(dim, fe_type); + std::unique_ptr qrule = collocated_rule(fe_type, dim); + fe->attach_quadrature_rule(qrule.get()); + + // The accessors have to be reached before reinit, which is what tells the element what + // to compute + const std::vector> & phi = fe->get_phi(); + + unsigned int n_elem = 0; + + for (const auto * elem : _mesh->active_local_element_ptr_range()) + { + fe->reinit(elem); + + // The default rule carries one point per degree of freedom + CPPUNIT_ASSERT_EQUAL(phi.size(), std::size_t(qrule->n_points())); + + for (const auto i : index_range(phi)) + for (const auto q : index_range(phi[i])) + CPPUNIT_ASSERT_EQUAL((i == q) ? Real(1) : Real(0), phi[i][q]); + + ++n_elem; + } + + _mesh->comm().sum(n_elem); + CPPUNIT_ASSERT(n_elem > 0); + } + + void testMassMatrixIsDiagonal() + { + LOG_UNIT_TEST; + + const FEType fe_type(order, L2_LAGRANGE_GLL); + const unsigned int dim = Elem::type_to_dim_map[elem_type]; + + std::unique_ptr fe = FEBase::build(dim, fe_type); + std::unique_ptr qrule = collocated_rule(fe_type, dim); + fe->attach_quadrature_rule(qrule.get()); + + const std::vector> & phi = fe->get_phi(); + const std::vector & JxW = fe->get_JxW(); + + for (const auto * elem : _mesh->active_local_element_ptr_range()) + { + fe->reinit(elem); + + const std::size_t n_dofs = phi.size(); + + for (const auto i : make_range(n_dofs)) + for (const auto j : make_range(n_dofs)) + { + Real m = 0.; + for (const auto q : index_range(JxW)) + m += JxW[q] * phi[i][q] * phi[j][q]; + + if (i == j) + { + // A diagonal entry is the weight of its own point times the Jacobian + // there, which is positive on a valid element, so the mass matrix is + // positive definite and its inverse costs a reciprocal per entry + CPPUNIT_ASSERT(m > 0.); + LIBMESH_ASSERT_FP_EQUAL(JxW[i], m, TOLERANCE*TOLERANCE); + } + else + CPPUNIT_ASSERT_EQUAL(Real(0), m); + } + } + } +}; + +#define INSTANTIATE_FEGLLCOLLOCATIONTEST(elemtype, order) \ + class FEGLLCollocationTest_##order##_##elemtype : \ + public FEGLLCollocationTest { \ + public: \ + FEGLLCollocationTest_##order##_##elemtype() : \ + FEGLLCollocationTest() { \ + if (unitlog->summarized_logs_enabled()) \ + this->libmesh_suite_name = "FEGLLCollocationTest"; \ + else \ + this->libmesh_suite_name = \ + "FEGLLCollocationTest_" #order "_" #elemtype; \ + } \ + CPPUNIT_TEST_SUITE( FEGLLCollocationTest_##order##_##elemtype ); \ + CPPUNIT_TEST( testShapesAreIdentity ); \ + CPPUNIT_TEST( testMassMatrixIsDiagonal ); \ + CPPUNIT_TEST_SUITE_END(); \ + }; \ + \ + CPPUNIT_TEST_SUITE_REGISTRATION( FEGLLCollocationTest_##order##_##elemtype ) + +INSTANTIATE_FEGLLCOLLOCATIONTEST(EDGE2, FIRST); +INSTANTIATE_FEGLLCOLLOCATIONTEST(EDGE3, THIRD); +INSTANTIATE_FEGLLCOLLOCATIONTEST(EDGE3, EIGHTH); + +#if LIBMESH_DIM > 1 +INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD4, FIRST); +INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD9, SECOND); +INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD9, FOURTH); +INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD9, EIGHTH); +#endif + +#if LIBMESH_DIM > 2 +INSTANTIATE_FEGLLCOLLOCATIONTEST(HEX8, FIRST); +INSTANTIATE_FEGLLCOLLOCATIONTEST(HEX27, SECOND); +INSTANTIATE_FEGLLCOLLOCATIONTEST(HEX27, FOURTH); +#endif diff --git a/tests/fe/fe_l2_lagrange_gll_test.C b/tests/fe/fe_l2_lagrange_gll_test.C new file mode 100644 index 0000000000..3e9eaec453 --- /dev/null +++ b/tests/fe/fe_l2_lagrange_gll_test.C @@ -0,0 +1,26 @@ +#include "fe_test.h" + +// The L2_LAGRANGE_GLL basis is a tensor product, so it lives on the tensor product element +// types alone. Every one of its degrees of freedom belongs to the element, so it asks +// nothing of the element's node count and an order above two runs on a first order type. + +INSTANTIATE_FETEST(FIRST, L2_LAGRANGE_GLL, EDGE2); +INSTANTIATE_FETEST(SECOND, L2_LAGRANGE_GLL, EDGE2); +INSTANTIATE_FETEST(SECOND, L2_LAGRANGE_GLL, EDGE3); +INSTANTIATE_FETEST(THIRD, L2_LAGRANGE_GLL, EDGE3); +INSTANTIATE_FETEST(FOURTH, L2_LAGRANGE_GLL, EDGE3); + +#if LIBMESH_DIM > 1 +INSTANTIATE_FETEST(FIRST, L2_LAGRANGE_GLL, QUAD4); +INSTANTIATE_FETEST(SECOND, L2_LAGRANGE_GLL, QUAD4); +INSTANTIATE_FETEST(SECOND, L2_LAGRANGE_GLL, QUAD9); +INSTANTIATE_FETEST(THIRD, L2_LAGRANGE_GLL, QUAD9); +INSTANTIATE_FETEST(FOURTH, L2_LAGRANGE_GLL, QUAD9); +#endif + +#if LIBMESH_DIM > 2 +INSTANTIATE_FETEST(FIRST, L2_LAGRANGE_GLL, HEX8); +INSTANTIATE_FETEST(SECOND, L2_LAGRANGE_GLL, HEX8); +INSTANTIATE_FETEST(SECOND, L2_LAGRANGE_GLL, HEX27); +INSTANTIATE_FETEST(THIRD, L2_LAGRANGE_GLL, HEX27); +#endif diff --git a/tests/fe/fe_test.h b/tests/fe/fe_test.h index 01cb9ff675..adcc1a9901 100644 --- a/tests/fe/fe_test.h +++ b/tests/fe/fe_test.h @@ -814,6 +814,7 @@ class FETest : public FETestBase { case LAGRANGE: case L2_LAGRANGE: + case L2_LAGRANGE_GLL: case BERNSTEIN: case RATIONAL_BERNSTEIN: { From ebcc3e6a8260fd32079d6f0f1a0b4182dfe36c57 Mon Sep 17 00:00:00 2001 From: Alex Lindsay Date: Tue, 15 Sep 2026 08:59:10 -0700 Subject: [PATCH 4/8] Share the tensor product among the Gauss-Lobatto nodal families The tensor product evaluation and the table of second derivative coordinate pairs stood in each of the three dimension files, so a fix to either wanted three applications and the C0 family would have added three more copies. They stand once now, in a header the dimension files reach through, leaving those files holding only the specializations that FE requires per dimension and family, as fe_lagrange_shape_2D.C already does for LAGRANGE and L2_LAGRANGE. What separates the families is which tensor index a shape function index names, and that alone, so it is a function of its own that each family specializes. A family without a specialization does not link. The pair table is now one table rather than one per dimension: libMesh numbers the second derivatives so that a given dimension uses the leading d(d+1)/2 of them, an edge reading the first entry, a face the first three and a cell all six. Co-Authored-By: Claude --- include/Makefile.in | 1 + include/fe/fe_lagrange_gll_shape.h | 154 +++++++++++++++++++++++++++++ include/include_HEADERS | 1 + include/libmesh/Makefile.am | 4 + include/libmesh/Makefile.in | 21 ++-- src/fe/fe_lagrange_gll_shape_1D.C | 95 +++++------------- src/fe/fe_lagrange_gll_shape_2D.C | 95 +++++------------- src/fe/fe_lagrange_gll_shape_3D.C | 95 +++++------------- 8 files changed, 241 insertions(+), 225 deletions(-) create mode 100644 include/fe/fe_lagrange_gll_shape.h diff --git a/include/Makefile.in b/include/Makefile.in index 3cc1dade11..c1923dea64 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -712,6 +712,7 @@ include_HEADERS = \ fe/fe_compute_data.h \ fe/fe_interface.h \ fe/fe_interface_macros.h \ + fe/fe_lagrange_gll_shape.h \ fe/fe_lagrange_gll_shape_1D.h \ fe/fe_lagrange_shape_1D.h \ fe/fe_macro.h \ diff --git a/include/fe/fe_lagrange_gll_shape.h b/include/fe/fe_lagrange_gll_shape.h new file mode 100644 index 0000000000..3b925f1ad2 --- /dev/null +++ b/include/fe/fe_lagrange_gll_shape.h @@ -0,0 +1,154 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +#ifndef LIBMESH_FE_LAGRANGE_GLL_SHAPE_H +#define LIBMESH_FE_LAGRANGE_GLL_SHAPE_H + +// Local includes +#include "libmesh/enum_fe_family.h" +#include "libmesh/enum_order.h" +#include "libmesh/fe_lagrange_gll_shape_1D.h" + +// The tensor product that the Gauss-Lobatto nodal families on the tensor product element +// types build their shape functions from. The families differ in which tensor index a shape +// function index names, and in nothing else, so the evaluation lives here once. + +namespace libMesh +{ + +/** + * The pairs of coordinates that the second derivative index runs over, in the order libMesh + * numbers them. + * + * The order is such that a given dimension uses the leading \f$d(d+1)/2\f$ of them, so one + * table serves all three: an edge reads the first entry, a face the first three, and a cell + * all six. + */ +constexpr unsigned int fe_lagrange_gll_second_deriv_pairs[6][2] = + {{0, 0}, // d^2 phi / dxi^2 + {0, 1}, // d^2 phi / dxi deta + {1, 1}, // d^2 phi / deta^2 + {0, 2}, // d^2 phi / dxi dzeta + {1, 2}, // d^2 phi / deta dzeta + {2, 2}}; // d^2 phi / dzeta^2 + + +/** + * \returns The number of second derivatives that a shape function of dimension \p Dim has. + */ +template +constexpr unsigned int fe_lagrange_gll_n_second_derivs() +{ + return Dim * (Dim + 1) / 2; +} + +/** + * Fills the leading \p dim entries of \p indices with the tensor index that shape function + * \p i of order \p order names, the entry for a coordinate giving the one-dimensional shape + * function that coordinate contributes. + * + * This is the whole of what separates the Gauss-Lobatto nodal families, so it is declared + * here and specialized once per family. A family that has no specialization does not link, + * which is what should happen. + */ +template +void fe_lagrange_gll_tensor_index(const Elem * elem, + const Order order, + const unsigned int dim, + const unsigned int i, + unsigned int * indices); + + +/** + * The L2_LAGRANGE_GLL degrees of freedom all belong to the element, so their indices run over + * the tensor grid in lexicographic order with the first coordinate varying fastest, which is + * also the order in which QBase lays out a tensor product rule. The element carries no index + * of its own here, so it goes unread. + */ +template <> +inline void fe_lagrange_gll_tensor_index(const Elem *, + const Order order, + const unsigned int dim, + const unsigned int i, + unsigned int * indices) +{ + const unsigned int n = static_cast(order) + 1; + + unsigned int stride = 1; + + for (unsigned int d = 0; d != dim; ++d) + { + indices[d] = (i / stride) % n; + stride *= n; + } + + libmesh_assert_less (i, stride); +} + +/** + * \returns The \p Dim dimensional tensor product of one-dimensional Gauss-Lobatto nodal shape + * functions that shape function \p i of family \p T names, differentiated once in each + * coordinate that the leading \p n_derivs entries of \p derivs name. + * + * A value passes no coordinates, a first derivative one, and a second derivative two, so the + * three shape routines of every family and dimension reach the basis through this one + * function. + */ +template +inline Real fe_lagrange_gll_shape(const Elem * elem, + const Order order, + const unsigned int i, + const Point & p, + const unsigned int * const derivs, + const unsigned int n_derivs) +{ + unsigned int indices[3]; + + fe_lagrange_gll_tensor_index(elem, order, Dim, i, indices); + + Real value = 1.; + + for (unsigned int d = 0; d != Dim; ++d) + { + unsigned int n_d = 0; + for (unsigned int k = 0; k != n_derivs; ++k) + if (derivs[k] == d) + ++n_d; + + switch (n_d) + { + case 0: + value *= fe_lagrange_gll_1D_shape(order, indices[d], p(d)); + break; + + case 1: + value *= fe_lagrange_gll_1D_shape_deriv(order, indices[d], 0, p(d)); + break; + + default: + value *= fe_lagrange_gll_1D_shape_second_deriv(order, indices[d], 0, p(d)); + break; + } + } + + return value; +} + +} // namespace libMesh + +#endif // LIBMESH_FE_LAGRANGE_GLL_SHAPE_H diff --git a/include/include_HEADERS b/include/include_HEADERS index 992e7c4773..b68076915e 100644 --- a/include/include_HEADERS +++ b/include/include_HEADERS @@ -87,6 +87,7 @@ include_HEADERS = \ fe/fe_compute_data.h \ fe/fe_interface.h \ fe/fe_interface_macros.h \ + fe/fe_lagrange_gll_shape.h \ fe/fe_lagrange_gll_shape_1D.h \ fe/fe_lagrange_shape_1D.h \ fe/fe_macro.h \ diff --git a/include/libmesh/Makefile.am b/include/libmesh/Makefile.am index 2b64e586ca..f26b85e7a4 100644 --- a/include/libmesh/Makefile.am +++ b/include/libmesh/Makefile.am @@ -78,6 +78,7 @@ BUILT_SOURCES = \ fe_compute_data.h \ fe_interface.h \ fe_interface_macros.h \ + fe_lagrange_gll_shape.h \ fe_lagrange_gll_shape_1D.h \ fe_lagrange_shape_1D.h \ fe_macro.h \ @@ -845,6 +846,9 @@ fe_interface.h: $(top_srcdir)/include/fe/fe_interface.h fe_interface_macros.h: $(top_srcdir)/include/fe/fe_interface_macros.h $(AM_V_GEN)rm -f $@ && $(LN_S) -f $< $@ +fe_lagrange_gll_shape.h: $(top_srcdir)/include/fe/fe_lagrange_gll_shape.h + $(AM_V_GEN)rm -f $@ && $(LN_S) -f $< $@ + fe_lagrange_gll_shape_1D.h: $(top_srcdir)/include/fe/fe_lagrange_gll_shape_1D.h $(AM_V_GEN)rm -f $@ && $(LN_S) -f $< $@ diff --git a/include/libmesh/Makefile.in b/include/libmesh/Makefile.in index e60b59bbe7..51a2749960 100644 --- a/include/libmesh/Makefile.in +++ b/include/libmesh/Makefile.in @@ -573,15 +573,15 @@ BUILT_SOURCES = dirichlet_boundaries.h dof_map.h dof_map_base.h \ uniform_refinement_estimator.h \ weighted_patch_recovery_error_estimator.h fe.h fe_abstract.h \ fe_base.h fe_compute_data.h fe_interface.h \ - fe_interface_macros.h fe_lagrange_gll_shape_1D.h \ - fe_lagrange_shape_1D.h fe_macro.h fe_map.h \ - fe_reference_element_traits.h fe_transformation_base.h \ - fe_type.h fe_xyz_map.h h1_fe_transformation.h \ - hcurl_fe_transformation.h hdiv_fe_transformation.h inf_fe.h \ - inf_fe_instantiate_1D.h inf_fe_instantiate_2D.h \ - inf_fe_instantiate_3D.h inf_fe_macro.h inf_fe_map.h \ - bounding_box.h cell.h cell_c0polyhedron.h cell_hex.h \ - cell_hex20.h cell_hex27.h cell_hex8.h cell_inf.h \ + fe_interface_macros.h fe_lagrange_gll_shape.h \ + fe_lagrange_gll_shape_1D.h fe_lagrange_shape_1D.h fe_macro.h \ + fe_map.h fe_reference_element_traits.h \ + fe_transformation_base.h fe_type.h fe_xyz_map.h \ + h1_fe_transformation.h hcurl_fe_transformation.h \ + hdiv_fe_transformation.h inf_fe.h inf_fe_instantiate_1D.h \ + inf_fe_instantiate_2D.h inf_fe_instantiate_3D.h inf_fe_macro.h \ + inf_fe_map.h bounding_box.h cell.h cell_c0polyhedron.h \ + cell_hex.h cell_hex20.h cell_hex27.h cell_hex8.h cell_inf.h \ cell_inf_hex.h cell_inf_hex16.h cell_inf_hex18.h \ cell_inf_hex8.h cell_inf_prism.h cell_inf_prism12.h \ cell_inf_prism6.h cell_polyhedron.h cell_prism.h \ @@ -1193,6 +1193,9 @@ fe_interface.h: $(top_srcdir)/include/fe/fe_interface.h fe_interface_macros.h: $(top_srcdir)/include/fe/fe_interface_macros.h $(AM_V_GEN)rm -f $@ && $(LN_S) -f $< $@ +fe_lagrange_gll_shape.h: $(top_srcdir)/include/fe/fe_lagrange_gll_shape.h + $(AM_V_GEN)rm -f $@ && $(LN_S) -f $< $@ + fe_lagrange_gll_shape_1D.h: $(top_srcdir)/include/fe/fe_lagrange_gll_shape_1D.h $(AM_V_GEN)rm -f $@ && $(LN_S) -f $< $@ diff --git a/src/fe/fe_lagrange_gll_shape_1D.C b/src/fe/fe_lagrange_gll_shape_1D.C index 6cb5ae7664..8f2b4baa3c 100644 --- a/src/fe/fe_lagrange_gll_shape_1D.C +++ b/src/fe/fe_lagrange_gll_shape_1D.C @@ -16,74 +16,16 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // Local includes #include "libmesh/fe.h" #include "libmesh/elem.h" -#include "libmesh/fe_lagrange_gll_shape_1D.h" +#include "libmesh/fe_lagrange_gll_shape.h" namespace libMesh { -namespace { - -/** - * \returns The 1 dimensional tensor product of one-dimensional Gauss-Lobatto nodal - * shape functions, differentiated once in each coordinate that \p derivs names. - * - * The degrees of freedom of the L2_LAGRANGE_GLL basis all belong to the element, so the - * \p i'th runs over the points of the tensor grid in lexicographic order, the first - * coordinate varying fastest. - */ -Real tensor_shape(const Order order, - const unsigned int i, - const Point & p, - const unsigned int * const derivs, - const unsigned int n_derivs) -{ - const unsigned int n = static_cast(order) + 1; - - libmesh_assert_less (i, n); - - Real value = 1.; - unsigned int stride = 1; - - for (unsigned int d = 0; d != 1; ++d) - { - const unsigned int i_d = (i / stride) % n; - stride *= n; - - unsigned int n_d = 0; - for (unsigned int k = 0; k != n_derivs; ++k) - if (derivs[k] == d) - ++n_d; - - switch (n_d) - { - case 0: - value *= fe_lagrange_gll_1D_shape(order, i_d, p(d)); - break; - - case 1: - value *= fe_lagrange_gll_1D_shape_deriv(order, i_d, 0, p(d)); - break; - - default: - value *= fe_lagrange_gll_1D_shape_second_deriv(order, i_d, 0, p(d)); - break; - } - } - - return value; -} - -#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES -/// The coordinate pairs that the second derivative index runs over -const unsigned int second_deriv_pairs[1][2] = {{0, 0}}; -#endif // LIBMESH_ENABLE_SECOND_DERIVATIVES - -} // anonymous namespace - LIBMESH_DEFAULT_VECTORIZED_FE(1,L2_LAGRANGE_GLL) @@ -94,7 +36,8 @@ Real FE<1,L2_LAGRANGE_GLL>::shape(const ElemType, const unsigned int i, const Point & p) { - return tensor_shape(order, i, p, nullptr, 0); + return fe_lagrange_gll_shape + (nullptr, order, i, p, nullptr, 0); } @@ -107,7 +50,8 @@ Real FE<1,L2_LAGRANGE_GLL>::shape(const Elem * elem, { libmesh_assert(elem); - return tensor_shape(order + add_p_level*elem->p_level(), i, p, nullptr, 0); + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, nullptr, 0); } @@ -120,7 +64,8 @@ Real FE<1,L2_LAGRANGE_GLL>::shape(const FEType fet, { libmesh_assert(elem); - return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, nullptr, 0); + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, nullptr, 0); } @@ -133,7 +78,8 @@ Real FE<1,L2_LAGRANGE_GLL>::shape_deriv(const ElemType, { libmesh_assert_less (j, 1); - return tensor_shape(order, i, p, &j, 1); + return fe_lagrange_gll_shape + (nullptr, order, i, p, &j, 1); } @@ -148,7 +94,8 @@ Real FE<1,L2_LAGRANGE_GLL>::shape_deriv(const Elem * elem, libmesh_assert(elem); libmesh_assert_less (j, 1); - return tensor_shape(order + add_p_level*elem->p_level(), i, p, &j, 1); + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, &j, 1); } @@ -163,7 +110,8 @@ Real FE<1,L2_LAGRANGE_GLL>::shape_deriv(const FEType fet, libmesh_assert(elem); libmesh_assert_less (j, 1); - return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, &j, 1); + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, &j, 1); } @@ -176,9 +124,10 @@ Real FE<1,L2_LAGRANGE_GLL>::shape_second_deriv(const ElemType, const unsigned int j, const Point & p) { - libmesh_assert_less (j, 1); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<1>()); - return tensor_shape(order, i, p, second_deriv_pairs[j], 2); + return fe_lagrange_gll_shape + (nullptr, order, i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); } @@ -191,9 +140,10 @@ Real FE<1,L2_LAGRANGE_GLL>::shape_second_deriv(const Elem * elem, const bool add_p_level) { libmesh_assert(elem); - libmesh_assert_less (j, 1); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<1>()); - return tensor_shape(order + add_p_level*elem->p_level(), i, p, second_deriv_pairs[j], 2); + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); } @@ -206,9 +156,10 @@ Real FE<1,L2_LAGRANGE_GLL>::shape_second_deriv(const FEType fet, const bool add_p_level) { libmesh_assert(elem); - libmesh_assert_less (j, 1); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<1>()); - return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, second_deriv_pairs[j], 2); + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); } diff --git a/src/fe/fe_lagrange_gll_shape_2D.C b/src/fe/fe_lagrange_gll_shape_2D.C index 5d346d72b2..b1803b3698 100644 --- a/src/fe/fe_lagrange_gll_shape_2D.C +++ b/src/fe/fe_lagrange_gll_shape_2D.C @@ -16,74 +16,16 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // Local includes #include "libmesh/fe.h" #include "libmesh/elem.h" -#include "libmesh/fe_lagrange_gll_shape_1D.h" +#include "libmesh/fe_lagrange_gll_shape.h" namespace libMesh { -namespace { - -/** - * \returns The 2 dimensional tensor product of one-dimensional Gauss-Lobatto nodal - * shape functions, differentiated once in each coordinate that \p derivs names. - * - * The degrees of freedom of the L2_LAGRANGE_GLL basis all belong to the element, so the - * \p i'th runs over the points of the tensor grid in lexicographic order, the first - * coordinate varying fastest. - */ -Real tensor_shape(const Order order, - const unsigned int i, - const Point & p, - const unsigned int * const derivs, - const unsigned int n_derivs) -{ - const unsigned int n = static_cast(order) + 1; - - libmesh_assert_less (i, n*n); - - Real value = 1.; - unsigned int stride = 1; - - for (unsigned int d = 0; d != 2; ++d) - { - const unsigned int i_d = (i / stride) % n; - stride *= n; - - unsigned int n_d = 0; - for (unsigned int k = 0; k != n_derivs; ++k) - if (derivs[k] == d) - ++n_d; - - switch (n_d) - { - case 0: - value *= fe_lagrange_gll_1D_shape(order, i_d, p(d)); - break; - - case 1: - value *= fe_lagrange_gll_1D_shape_deriv(order, i_d, 0, p(d)); - break; - - default: - value *= fe_lagrange_gll_1D_shape_second_deriv(order, i_d, 0, p(d)); - break; - } - } - - return value; -} - -#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES -/// The coordinate pairs that the second derivative index runs over -const unsigned int second_deriv_pairs[3][2] = {{0, 0}, {0, 1}, {1, 1}}; -#endif // LIBMESH_ENABLE_SECOND_DERIVATIVES - -} // anonymous namespace - LIBMESH_DEFAULT_VECTORIZED_FE(2,L2_LAGRANGE_GLL) @@ -94,7 +36,8 @@ Real FE<2,L2_LAGRANGE_GLL>::shape(const ElemType, const unsigned int i, const Point & p) { - return tensor_shape(order, i, p, nullptr, 0); + return fe_lagrange_gll_shape + (nullptr, order, i, p, nullptr, 0); } @@ -107,7 +50,8 @@ Real FE<2,L2_LAGRANGE_GLL>::shape(const Elem * elem, { libmesh_assert(elem); - return tensor_shape(order + add_p_level*elem->p_level(), i, p, nullptr, 0); + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, nullptr, 0); } @@ -120,7 +64,8 @@ Real FE<2,L2_LAGRANGE_GLL>::shape(const FEType fet, { libmesh_assert(elem); - return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, nullptr, 0); + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, nullptr, 0); } @@ -133,7 +78,8 @@ Real FE<2,L2_LAGRANGE_GLL>::shape_deriv(const ElemType, { libmesh_assert_less (j, 2); - return tensor_shape(order, i, p, &j, 1); + return fe_lagrange_gll_shape + (nullptr, order, i, p, &j, 1); } @@ -148,7 +94,8 @@ Real FE<2,L2_LAGRANGE_GLL>::shape_deriv(const Elem * elem, libmesh_assert(elem); libmesh_assert_less (j, 2); - return tensor_shape(order + add_p_level*elem->p_level(), i, p, &j, 1); + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, &j, 1); } @@ -163,7 +110,8 @@ Real FE<2,L2_LAGRANGE_GLL>::shape_deriv(const FEType fet, libmesh_assert(elem); libmesh_assert_less (j, 2); - return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, &j, 1); + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, &j, 1); } @@ -176,9 +124,10 @@ Real FE<2,L2_LAGRANGE_GLL>::shape_second_deriv(const ElemType, const unsigned int j, const Point & p) { - libmesh_assert_less (j, 3); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<2>()); - return tensor_shape(order, i, p, second_deriv_pairs[j], 2); + return fe_lagrange_gll_shape + (nullptr, order, i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); } @@ -191,9 +140,10 @@ Real FE<2,L2_LAGRANGE_GLL>::shape_second_deriv(const Elem * elem, const bool add_p_level) { libmesh_assert(elem); - libmesh_assert_less (j, 3); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<2>()); - return tensor_shape(order + add_p_level*elem->p_level(), i, p, second_deriv_pairs[j], 2); + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); } @@ -206,9 +156,10 @@ Real FE<2,L2_LAGRANGE_GLL>::shape_second_deriv(const FEType fet, const bool add_p_level) { libmesh_assert(elem); - libmesh_assert_less (j, 3); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<2>()); - return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, second_deriv_pairs[j], 2); + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); } diff --git a/src/fe/fe_lagrange_gll_shape_3D.C b/src/fe/fe_lagrange_gll_shape_3D.C index 652eb8fe40..31c95105c0 100644 --- a/src/fe/fe_lagrange_gll_shape_3D.C +++ b/src/fe/fe_lagrange_gll_shape_3D.C @@ -16,74 +16,16 @@ // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + // Local includes #include "libmesh/fe.h" #include "libmesh/elem.h" -#include "libmesh/fe_lagrange_gll_shape_1D.h" +#include "libmesh/fe_lagrange_gll_shape.h" namespace libMesh { -namespace { - -/** - * \returns The 3 dimensional tensor product of one-dimensional Gauss-Lobatto nodal - * shape functions, differentiated once in each coordinate that \p derivs names. - * - * The degrees of freedom of the L2_LAGRANGE_GLL basis all belong to the element, so the - * \p i'th runs over the points of the tensor grid in lexicographic order, the first - * coordinate varying fastest. - */ -Real tensor_shape(const Order order, - const unsigned int i, - const Point & p, - const unsigned int * const derivs, - const unsigned int n_derivs) -{ - const unsigned int n = static_cast(order) + 1; - - libmesh_assert_less (i, n*n*n); - - Real value = 1.; - unsigned int stride = 1; - - for (unsigned int d = 0; d != 3; ++d) - { - const unsigned int i_d = (i / stride) % n; - stride *= n; - - unsigned int n_d = 0; - for (unsigned int k = 0; k != n_derivs; ++k) - if (derivs[k] == d) - ++n_d; - - switch (n_d) - { - case 0: - value *= fe_lagrange_gll_1D_shape(order, i_d, p(d)); - break; - - case 1: - value *= fe_lagrange_gll_1D_shape_deriv(order, i_d, 0, p(d)); - break; - - default: - value *= fe_lagrange_gll_1D_shape_second_deriv(order, i_d, 0, p(d)); - break; - } - } - - return value; -} - -#ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES -/// The coordinate pairs that the second derivative index runs over -const unsigned int second_deriv_pairs[6][2] = {{0, 0}, {0, 1}, {1, 1}, {0, 2}, {1, 2}, {2, 2}}; -#endif // LIBMESH_ENABLE_SECOND_DERIVATIVES - -} // anonymous namespace - LIBMESH_DEFAULT_VECTORIZED_FE(3,L2_LAGRANGE_GLL) @@ -94,7 +36,8 @@ Real FE<3,L2_LAGRANGE_GLL>::shape(const ElemType, const unsigned int i, const Point & p) { - return tensor_shape(order, i, p, nullptr, 0); + return fe_lagrange_gll_shape + (nullptr, order, i, p, nullptr, 0); } @@ -107,7 +50,8 @@ Real FE<3,L2_LAGRANGE_GLL>::shape(const Elem * elem, { libmesh_assert(elem); - return tensor_shape(order + add_p_level*elem->p_level(), i, p, nullptr, 0); + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, nullptr, 0); } @@ -120,7 +64,8 @@ Real FE<3,L2_LAGRANGE_GLL>::shape(const FEType fet, { libmesh_assert(elem); - return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, nullptr, 0); + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, nullptr, 0); } @@ -133,7 +78,8 @@ Real FE<3,L2_LAGRANGE_GLL>::shape_deriv(const ElemType, { libmesh_assert_less (j, 3); - return tensor_shape(order, i, p, &j, 1); + return fe_lagrange_gll_shape + (nullptr, order, i, p, &j, 1); } @@ -148,7 +94,8 @@ Real FE<3,L2_LAGRANGE_GLL>::shape_deriv(const Elem * elem, libmesh_assert(elem); libmesh_assert_less (j, 3); - return tensor_shape(order + add_p_level*elem->p_level(), i, p, &j, 1); + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, &j, 1); } @@ -163,7 +110,8 @@ Real FE<3,L2_LAGRANGE_GLL>::shape_deriv(const FEType fet, libmesh_assert(elem); libmesh_assert_less (j, 3); - return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, &j, 1); + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, &j, 1); } @@ -176,9 +124,10 @@ Real FE<3,L2_LAGRANGE_GLL>::shape_second_deriv(const ElemType, const unsigned int j, const Point & p) { - libmesh_assert_less (j, 6); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<3>()); - return tensor_shape(order, i, p, second_deriv_pairs[j], 2); + return fe_lagrange_gll_shape + (nullptr, order, i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); } @@ -191,9 +140,10 @@ Real FE<3,L2_LAGRANGE_GLL>::shape_second_deriv(const Elem * elem, const bool add_p_level) { libmesh_assert(elem); - libmesh_assert_less (j, 6); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<3>()); - return tensor_shape(order + add_p_level*elem->p_level(), i, p, second_deriv_pairs[j], 2); + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); } @@ -206,9 +156,10 @@ Real FE<3,L2_LAGRANGE_GLL>::shape_second_deriv(const FEType fet, const bool add_p_level) { libmesh_assert(elem); - libmesh_assert_less (j, 6); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<3>()); - return tensor_shape(fet.order + add_p_level*elem->p_level(), i, p, second_deriv_pairs[j], 2); + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); } From ce8aba31a03353a68e8f4a9032af4e6f0cb12d56 Mon Sep 17 00:00:00 2001 From: Alex Lindsay Date: Tue, 15 Sep 2026 08:59:17 -0700 Subject: [PATCH 5/8] Hold the Gauss-Lobatto basis to LAGRANGE where the two coincide At orders one and two on the tensor product element types the Gauss-Lobatto nodal families and LAGRANGE are the same functions, because the Gauss-Lobatto points of those orders, {-1,1} and {-1,0,1}, are where those elements put their nodes. They reach those functions by different routes: LAGRANGE evaluates a closed form per order, and the Gauss-Lobatto basis evaluates a barycentric form against its point table. Nothing held the two together, so either could have drifted without a test noticing. This pairs each Gauss-Lobatto shape function with the LAGRANGE one whose node sits at the same reference point and holds them to the same values away from those points. It is what would catch the point table, the barycentric evaluation, or the tensor index map moving away from values that are already settled. The serendipity types are left out. LAGRANGE spans a smaller space on QUAD8 and HEX20, eight and twenty functions against the nine and twenty seven of a tensor product of the same order, so there is no pairing to hold there. Co-Authored-By: Claude --- tests/Makefile.am | 1 + tests/Makefile.in | 147 ++++++++++++++++--- tests/fe/fe_gll_lagrange_agreement_test.C | 171 ++++++++++++++++++++++ 3 files changed, 301 insertions(+), 18 deletions(-) create mode 100644 tests/fe/fe_gll_lagrange_agreement_test.C diff --git a/tests/Makefile.am b/tests/Makefile.am index 283e4ccd69..359bb0b8a6 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -37,6 +37,7 @@ unit_tests_sources = \ fe/fe_l2_lagrange_test.C \ fe/fe_l2_lagrange_gll_test.C \ fe/fe_gll_collocation_test.C \ + fe/fe_gll_lagrange_agreement_test.C \ fe/fe_lagrange_test.C \ fe/fe_monomial_test.C \ fe/fe_rational_map.C \ diff --git a/tests/Makefile.in b/tests/Makefile.in index 1e37f81a00..49611acfc8 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -219,9 +219,10 @@ am__unit_tests_dbg_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ - fe/fe_lagrange_test.C fe/fe_monomial_test.C \ - fe/fe_rational_map.C fe/fe_rational_test.C fe/fe_side_test.C \ - fe/fe_szabab_test.C fe/fe_test.h fe/fe_xyz_test.C \ + fe/fe_gll_lagrange_agreement_test.C fe/fe_lagrange_test.C \ + fe/fe_monomial_test.C fe/fe_rational_map.C \ + fe/fe_rational_test.C fe/fe_side_test.C fe/fe_szabab_test.C \ + fe/fe_test.h fe/fe_xyz_test.C \ fe/dual_shape_verification_test.C geom/bbox_test.C \ geom/edge_test.C geom/elem_test.C geom/elem_test.h \ geom/node_test.C geom/point_test.C geom/point_test.h \ @@ -308,6 +309,7 @@ am__objects_2 = unit_tests_dbg-driver.$(OBJEXT) \ fe/unit_tests_dbg-fe_l2_lagrange_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_l2_lagrange_gll_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_gll_collocation_test.$(OBJEXT) \ + fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_rational_map.$(OBJEXT) \ @@ -440,9 +442,10 @@ am__unit_tests_devel_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ - fe/fe_lagrange_test.C fe/fe_monomial_test.C \ - fe/fe_rational_map.C fe/fe_rational_test.C fe/fe_side_test.C \ - fe/fe_szabab_test.C fe/fe_test.h fe/fe_xyz_test.C \ + fe/fe_gll_lagrange_agreement_test.C fe/fe_lagrange_test.C \ + fe/fe_monomial_test.C fe/fe_rational_map.C \ + fe/fe_rational_test.C fe/fe_side_test.C fe/fe_szabab_test.C \ + fe/fe_test.h fe/fe_xyz_test.C \ fe/dual_shape_verification_test.C geom/bbox_test.C \ geom/edge_test.C geom/elem_test.C geom/elem_test.h \ geom/node_test.C geom/point_test.C geom/point_test.h \ @@ -528,6 +531,7 @@ am__objects_4 = unit_tests_devel-driver.$(OBJEXT) \ fe/unit_tests_devel-fe_l2_lagrange_test.$(OBJEXT) \ fe/unit_tests_devel-fe_l2_lagrange_gll_test.$(OBJEXT) \ fe/unit_tests_devel-fe_gll_collocation_test.$(OBJEXT) \ + fe/unit_tests_devel-fe_gll_lagrange_agreement_test.$(OBJEXT) \ fe/unit_tests_devel-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_devel-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_devel-fe_rational_map.$(OBJEXT) \ @@ -678,9 +682,10 @@ am__unit_tests_oprof_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ - fe/fe_lagrange_test.C fe/fe_monomial_test.C \ - fe/fe_rational_map.C fe/fe_rational_test.C fe/fe_side_test.C \ - fe/fe_szabab_test.C fe/fe_test.h fe/fe_xyz_test.C \ + fe/fe_gll_lagrange_agreement_test.C fe/fe_lagrange_test.C \ + fe/fe_monomial_test.C fe/fe_rational_map.C \ + fe/fe_rational_test.C fe/fe_side_test.C fe/fe_szabab_test.C \ + fe/fe_test.h fe/fe_xyz_test.C \ fe/dual_shape_verification_test.C geom/bbox_test.C \ geom/edge_test.C geom/elem_test.C geom/elem_test.h \ geom/node_test.C geom/point_test.C geom/point_test.h \ @@ -766,6 +771,7 @@ am__objects_6 = unit_tests_oprof-driver.$(OBJEXT) \ fe/unit_tests_oprof-fe_l2_lagrange_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_l2_lagrange_gll_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_gll_collocation_test.$(OBJEXT) \ + fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_rational_map.$(OBJEXT) \ @@ -894,9 +900,10 @@ am__unit_tests_opt_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ - fe/fe_lagrange_test.C fe/fe_monomial_test.C \ - fe/fe_rational_map.C fe/fe_rational_test.C fe/fe_side_test.C \ - fe/fe_szabab_test.C fe/fe_test.h fe/fe_xyz_test.C \ + fe/fe_gll_lagrange_agreement_test.C fe/fe_lagrange_test.C \ + fe/fe_monomial_test.C fe/fe_rational_map.C \ + fe/fe_rational_test.C fe/fe_side_test.C fe/fe_szabab_test.C \ + fe/fe_test.h fe/fe_xyz_test.C \ fe/dual_shape_verification_test.C geom/bbox_test.C \ geom/edge_test.C geom/elem_test.C geom/elem_test.h \ geom/node_test.C geom/point_test.C geom/point_test.h \ @@ -982,6 +989,7 @@ am__objects_8 = unit_tests_opt-driver.$(OBJEXT) \ fe/unit_tests_opt-fe_l2_lagrange_test.$(OBJEXT) \ fe/unit_tests_opt-fe_l2_lagrange_gll_test.$(OBJEXT) \ fe/unit_tests_opt-fe_gll_collocation_test.$(OBJEXT) \ + fe/unit_tests_opt-fe_gll_lagrange_agreement_test.$(OBJEXT) \ fe/unit_tests_opt-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_opt-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_opt-fe_rational_map.$(OBJEXT) \ @@ -1110,9 +1118,10 @@ am__unit_tests_prof_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ - fe/fe_lagrange_test.C fe/fe_monomial_test.C \ - fe/fe_rational_map.C fe/fe_rational_test.C fe/fe_side_test.C \ - fe/fe_szabab_test.C fe/fe_test.h fe/fe_xyz_test.C \ + fe/fe_gll_lagrange_agreement_test.C fe/fe_lagrange_test.C \ + fe/fe_monomial_test.C fe/fe_rational_map.C \ + fe/fe_rational_test.C fe/fe_side_test.C fe/fe_szabab_test.C \ + fe/fe_test.h fe/fe_xyz_test.C \ fe/dual_shape_verification_test.C geom/bbox_test.C \ geom/edge_test.C geom/elem_test.C geom/elem_test.h \ geom/node_test.C geom/point_test.C geom/point_test.h \ @@ -1198,6 +1207,7 @@ am__objects_10 = unit_tests_prof-driver.$(OBJEXT) \ fe/unit_tests_prof-fe_l2_lagrange_test.$(OBJEXT) \ fe/unit_tests_prof-fe_l2_lagrange_gll_test.$(OBJEXT) \ fe/unit_tests_prof-fe_gll_collocation_test.$(OBJEXT) \ + fe/unit_tests_prof-fe_gll_lagrange_agreement_test.$(OBJEXT) \ fe/unit_tests_prof-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_prof-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_prof-fe_rational_map.$(OBJEXT) \ @@ -1373,6 +1383,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_clough_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po \ + fe/$(DEPDIR)/unit_tests_dbg-fe_gll_lagrange_agreement_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_hdiv_grad_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_hermite_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_hierarchic_test.Po \ @@ -1392,6 +1403,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_clough_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po \ + fe/$(DEPDIR)/unit_tests_devel-fe_gll_lagrange_agreement_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_hdiv_grad_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_hermite_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_hierarchic_test.Po \ @@ -1411,6 +1423,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_clough_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po \ + fe/$(DEPDIR)/unit_tests_oprof-fe_gll_lagrange_agreement_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_hdiv_grad_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_hermite_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_hierarchic_test.Po \ @@ -1430,6 +1443,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_clough_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po \ + fe/$(DEPDIR)/unit_tests_opt-fe_gll_lagrange_agreement_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_hdiv_grad_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_hermite_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_hierarchic_test.Po \ @@ -1449,6 +1463,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_clough_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po \ + fe/$(DEPDIR)/unit_tests_prof-fe_gll_lagrange_agreement_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_hdiv_grad_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_hermite_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_hierarchic_test.Po \ @@ -2485,9 +2500,10 @@ unit_tests_sources = driver.C libmesh_cppunit.h stream_redirector.h \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ - fe/fe_lagrange_test.C fe/fe_monomial_test.C \ - fe/fe_rational_map.C fe/fe_rational_test.C fe/fe_side_test.C \ - fe/fe_szabab_test.C fe/fe_test.h fe/fe_xyz_test.C \ + fe/fe_gll_lagrange_agreement_test.C fe/fe_lagrange_test.C \ + fe/fe_monomial_test.C fe/fe_rational_map.C \ + fe/fe_rational_test.C fe/fe_side_test.C fe/fe_szabab_test.C \ + fe/fe_test.h fe/fe_xyz_test.C \ fe/dual_shape_verification_test.C geom/bbox_test.C \ geom/edge_test.C geom/elem_test.C geom/elem_test.h \ geom/node_test.C geom/point_test.C geom/point_test.h \ @@ -2851,6 +2867,8 @@ fe/unit_tests_dbg-fe_l2_lagrange_gll_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_dbg-fe_gll_collocation_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_dbg-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_dbg-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -3179,6 +3197,8 @@ fe/unit_tests_devel-fe_l2_lagrange_gll_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_devel-fe_gll_collocation_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_devel-fe_gll_lagrange_agreement_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_devel-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_devel-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -3487,6 +3507,8 @@ fe/unit_tests_oprof-fe_l2_lagrange_gll_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_oprof-fe_gll_collocation_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_oprof-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_oprof-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -3755,6 +3777,8 @@ fe/unit_tests_opt-fe_l2_lagrange_gll_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_opt-fe_gll_collocation_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_opt-fe_gll_lagrange_agreement_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_opt-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_opt-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -4023,6 +4047,8 @@ fe/unit_tests_prof-fe_l2_lagrange_gll_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_prof-fe_gll_collocation_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_prof-fe_gll_lagrange_agreement_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_prof-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_prof-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -4318,6 +4344,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_clough_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_gll_lagrange_agreement_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_hdiv_grad_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_hermite_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_hierarchic_test.Po@am__quote@ # am--include-marker @@ -4337,6 +4364,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_clough_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_gll_lagrange_agreement_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_hdiv_grad_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_hermite_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_hierarchic_test.Po@am__quote@ # am--include-marker @@ -4356,6 +4384,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_clough_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_gll_lagrange_agreement_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_hdiv_grad_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_hermite_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_hierarchic_test.Po@am__quote@ # am--include-marker @@ -4375,6 +4404,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_clough_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_gll_lagrange_agreement_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_hdiv_grad_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_hermite_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_hierarchic_test.Po@am__quote@ # am--include-marker @@ -4394,6 +4424,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_clough_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_gll_lagrange_agreement_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_hdiv_grad_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_hermite_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_hierarchic_test.Po@am__quote@ # am--include-marker @@ -5216,6 +5247,20 @@ fe/unit_tests_dbg-fe_gll_collocation_test.obj: fe/fe_gll_collocation_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 fe/unit_tests_dbg-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` +fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.o: fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_gll_lagrange_agreement_test.Tpo -c -o fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.o `test -f 'fe/fe_gll_lagrange_agreement_test.C' || echo '$(srcdir)/'`fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_gll_lagrange_agreement_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_gll_lagrange_agreement_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_lagrange_agreement_test.C' object='fe/unit_tests_dbg-fe_gll_lagrange_agreement_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 fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.o `test -f 'fe/fe_gll_lagrange_agreement_test.C' || echo '$(srcdir)/'`fe/fe_gll_lagrange_agreement_test.C + +fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.obj: fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_gll_lagrange_agreement_test.Tpo -c -o fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_gll_lagrange_agreement_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_gll_lagrange_agreement_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_lagrange_agreement_test.C' object='fe/unit_tests_dbg-fe_gll_lagrange_agreement_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 fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` + fe/unit_tests_dbg-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Tpo -c -o fe/unit_tests_dbg-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Po @@ -7022,6 +7067,20 @@ fe/unit_tests_devel-fe_gll_collocation_test.obj: fe/fe_gll_collocation_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 fe/unit_tests_devel-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` +fe/unit_tests_devel-fe_gll_lagrange_agreement_test.o: fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_gll_lagrange_agreement_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_gll_lagrange_agreement_test.Tpo -c -o fe/unit_tests_devel-fe_gll_lagrange_agreement_test.o `test -f 'fe/fe_gll_lagrange_agreement_test.C' || echo '$(srcdir)/'`fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_gll_lagrange_agreement_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_gll_lagrange_agreement_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_lagrange_agreement_test.C' object='fe/unit_tests_devel-fe_gll_lagrange_agreement_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 fe/unit_tests_devel-fe_gll_lagrange_agreement_test.o `test -f 'fe/fe_gll_lagrange_agreement_test.C' || echo '$(srcdir)/'`fe/fe_gll_lagrange_agreement_test.C + +fe/unit_tests_devel-fe_gll_lagrange_agreement_test.obj: fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_gll_lagrange_agreement_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_gll_lagrange_agreement_test.Tpo -c -o fe/unit_tests_devel-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_gll_lagrange_agreement_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_gll_lagrange_agreement_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_lagrange_agreement_test.C' object='fe/unit_tests_devel-fe_gll_lagrange_agreement_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 fe/unit_tests_devel-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` + fe/unit_tests_devel-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Tpo -c -o fe/unit_tests_devel-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Po @@ -8828,6 +8887,20 @@ fe/unit_tests_oprof-fe_gll_collocation_test.obj: fe/fe_gll_collocation_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 fe/unit_tests_oprof-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` +fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.o: fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_gll_lagrange_agreement_test.Tpo -c -o fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.o `test -f 'fe/fe_gll_lagrange_agreement_test.C' || echo '$(srcdir)/'`fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_gll_lagrange_agreement_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_gll_lagrange_agreement_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_lagrange_agreement_test.C' object='fe/unit_tests_oprof-fe_gll_lagrange_agreement_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 fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.o `test -f 'fe/fe_gll_lagrange_agreement_test.C' || echo '$(srcdir)/'`fe/fe_gll_lagrange_agreement_test.C + +fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.obj: fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_gll_lagrange_agreement_test.Tpo -c -o fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_gll_lagrange_agreement_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_gll_lagrange_agreement_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_lagrange_agreement_test.C' object='fe/unit_tests_oprof-fe_gll_lagrange_agreement_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 fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` + fe/unit_tests_oprof-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Tpo -c -o fe/unit_tests_oprof-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Po @@ -10634,6 +10707,20 @@ fe/unit_tests_opt-fe_gll_collocation_test.obj: fe/fe_gll_collocation_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 fe/unit_tests_opt-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` +fe/unit_tests_opt-fe_gll_lagrange_agreement_test.o: fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_gll_lagrange_agreement_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_gll_lagrange_agreement_test.Tpo -c -o fe/unit_tests_opt-fe_gll_lagrange_agreement_test.o `test -f 'fe/fe_gll_lagrange_agreement_test.C' || echo '$(srcdir)/'`fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_gll_lagrange_agreement_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_gll_lagrange_agreement_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_lagrange_agreement_test.C' object='fe/unit_tests_opt-fe_gll_lagrange_agreement_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 fe/unit_tests_opt-fe_gll_lagrange_agreement_test.o `test -f 'fe/fe_gll_lagrange_agreement_test.C' || echo '$(srcdir)/'`fe/fe_gll_lagrange_agreement_test.C + +fe/unit_tests_opt-fe_gll_lagrange_agreement_test.obj: fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_gll_lagrange_agreement_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_gll_lagrange_agreement_test.Tpo -c -o fe/unit_tests_opt-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_gll_lagrange_agreement_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_gll_lagrange_agreement_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_lagrange_agreement_test.C' object='fe/unit_tests_opt-fe_gll_lagrange_agreement_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 fe/unit_tests_opt-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` + fe/unit_tests_opt-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Tpo -c -o fe/unit_tests_opt-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Po @@ -12440,6 +12527,20 @@ fe/unit_tests_prof-fe_gll_collocation_test.obj: fe/fe_gll_collocation_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 fe/unit_tests_prof-fe_gll_collocation_test.obj `if test -f 'fe/fe_gll_collocation_test.C'; then $(CYGPATH_W) 'fe/fe_gll_collocation_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_collocation_test.C'; fi` +fe/unit_tests_prof-fe_gll_lagrange_agreement_test.o: fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_gll_lagrange_agreement_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_gll_lagrange_agreement_test.Tpo -c -o fe/unit_tests_prof-fe_gll_lagrange_agreement_test.o `test -f 'fe/fe_gll_lagrange_agreement_test.C' || echo '$(srcdir)/'`fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_gll_lagrange_agreement_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_gll_lagrange_agreement_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_lagrange_agreement_test.C' object='fe/unit_tests_prof-fe_gll_lagrange_agreement_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 fe/unit_tests_prof-fe_gll_lagrange_agreement_test.o `test -f 'fe/fe_gll_lagrange_agreement_test.C' || echo '$(srcdir)/'`fe/fe_gll_lagrange_agreement_test.C + +fe/unit_tests_prof-fe_gll_lagrange_agreement_test.obj: fe/fe_gll_lagrange_agreement_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_gll_lagrange_agreement_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_gll_lagrange_agreement_test.Tpo -c -o fe/unit_tests_prof-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_gll_lagrange_agreement_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_gll_lagrange_agreement_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_gll_lagrange_agreement_test.C' object='fe/unit_tests_prof-fe_gll_lagrange_agreement_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 fe/unit_tests_prof-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` + fe/unit_tests_prof-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Tpo -c -o fe/unit_tests_prof-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Po @@ -14387,6 +14488,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_gll_lagrange_agreement_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_hierarchic_test.Po @@ -14406,6 +14508,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_gll_lagrange_agreement_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_hierarchic_test.Po @@ -14425,6 +14528,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_gll_lagrange_agreement_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_hierarchic_test.Po @@ -14444,6 +14548,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_gll_lagrange_agreement_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_hierarchic_test.Po @@ -14463,6 +14568,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_gll_lagrange_agreement_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_hierarchic_test.Po @@ -15079,6 +15185,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_gll_lagrange_agreement_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_hierarchic_test.Po @@ -15098,6 +15205,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_gll_lagrange_agreement_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_hierarchic_test.Po @@ -15117,6 +15225,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_gll_lagrange_agreement_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_hierarchic_test.Po @@ -15136,6 +15245,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_gll_lagrange_agreement_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_hierarchic_test.Po @@ -15155,6 +15265,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_gll_lagrange_agreement_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_hdiv_grad_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_hermite_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_hierarchic_test.Po diff --git a/tests/fe/fe_gll_lagrange_agreement_test.C b/tests/fe/fe_gll_lagrange_agreement_test.C new file mode 100644 index 0000000000..7145995da6 --- /dev/null +++ b/tests/fe/fe_gll_lagrange_agreement_test.C @@ -0,0 +1,171 @@ +// LAGRANGE and the Gauss-Lobatto nodal families are the same functions at orders one and two +// on the tensor product element types, because the Gauss-Lobatto points of those orders, +// {-1,1} and {-1,0,1}, are where those elements put their nodes. The two are separate +// implementations of that shared ground: LAGRANGE evaluates a closed form per order, and the +// Gauss-Lobatto basis evaluates a barycentric form against its point table. Nothing couples +// them, so this test does, by pairing each Gauss-Lobatto shape function with the LAGRANGE one +// whose node sits at the same reference point and holding the two to the same values. +// +// It is what would catch the point table, the barycentric evaluation, or the tensor index map +// drifting away from a basis whose values are already settled. + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "test_comm.h" +#include "libmesh_cppunit.h" + +#include +#include + +using namespace libMesh; + +template +class FEGLLLagrangeAgreementTest : public CppUnit::TestCase +{ +protected: + std::unique_ptr _mesh; + std::string libmesh_suite_name; + +public: + void setUp() + { + _mesh = std::make_unique(*TestCommWorld); + + const unsigned int dim = Elem::type_to_dim_map[elem_type]; + + if (dim == 1) + MeshTools::Generation::build_line(*_mesh, 1, 0., 1., elem_type); + else if (dim == 2) + MeshTools::Generation::build_square(*_mesh, 1, 1, 0., 1., 0., 1., elem_type); + else + MeshTools::Generation::build_cube(*_mesh, 1, 1, 1, 0., 1., 0., 1., 0., 1., elem_type); + } + + void tearDown() { _mesh.reset(); } + + /// The reference point that Gauss-Lobatto shape function \p i interpolates at + Point gll_point(const unsigned int i, const unsigned int dim) + { + const unsigned int n = static_cast(order) + 1; + + // The n point Gauss-Lobatto rule, which is exact through degree 2n-3 + QGaussLobatto rule(1, static_cast(2*n - 3)); + rule.init(EDGE2); + + Point q; + unsigned int stride = 1; + + for (const auto d : make_range(dim)) + { + q(d) = rule.qp((i / stride) % n)(0); + stride *= n; + } + + return q; + } + + /// The node of \p elem whose reference position is \p q, or invalid_uint if it has none + unsigned int node_at(const Elem & elem, const Point & q) + { + unsigned int found = invalid_uint; + + for (const auto n : elem.node_index_range()) + if (elem.master_point(n).relative_fuzzy_equals(q, TOLERANCE)) + { + // The pairing has to be one node per shape function for the comparison to mean + // anything, so a second match is a failure rather than a choice + CPPUNIT_ASSERT_EQUAL(invalid_uint, found); + found = n; + } + + return found; + } + + void testAgreesWithLagrange() + { + LOG_UNIT_TEST; + + const unsigned int dim = Elem::type_to_dim_map[elem_type]; + + const FEType gll_type(order, L2_LAGRANGE_GLL); + const FEType lagrange_type(order, LAGRANGE); + + // Points spread over the reference element, away from its own interpolation points, so + // that agreement is of the functions rather than of the values they are pinned to + std::vector samples; + for (int a = -3; a <= 3; ++a) + for (int b = -3; b <= 3; ++b) + for (int c = -3; c <= 3; ++c) + samples.emplace_back(a/7., (dim > 1) ? b/7. : 0., (dim > 2) ? c/7. : 0.); + + unsigned int n_paired = 0; + + for (const auto * elem : _mesh->active_local_element_ptr_range()) + { + const unsigned int n_gll = FEInterface::n_shape_functions(gll_type, elem); + const unsigned int n_lag = FEInterface::n_shape_functions(lagrange_type, elem); + + // The bases span the same space here, so they have the same count + CPPUNIT_ASSERT_EQUAL(n_lag, n_gll); + + for (const auto i : make_range(n_gll)) + { + const unsigned int n = node_at(*elem, gll_point(i, dim)); + CPPUNIT_ASSERT(n != invalid_uint); + + for (const Point & q : samples) + LIBMESH_ASSERT_FP_EQUAL(FEInterface::shape(lagrange_type, elem, n, q), + FEInterface::shape(gll_type, elem, i, q), + TOLERANCE*TOLERANCE); + + ++n_paired; + } + } + + _mesh->comm().sum(n_paired); + CPPUNIT_ASSERT(n_paired > 0); + } +}; + +#define INSTANTIATE_FEGLLAGREEMENTTEST(elemtype, order) \ + class FEGLLLagrangeAgreementTest_##order##_##elemtype : \ + public FEGLLLagrangeAgreementTest { \ + public: \ + FEGLLLagrangeAgreementTest_##order##_##elemtype() : \ + FEGLLLagrangeAgreementTest() { \ + if (unitlog->summarized_logs_enabled()) \ + this->libmesh_suite_name = "FEGLLLagrangeAgreementTest"; \ + else \ + this->libmesh_suite_name = \ + "FEGLLLagrangeAgreementTest_" #order "_" #elemtype; \ + } \ + CPPUNIT_TEST_SUITE( FEGLLLagrangeAgreementTest_##order##_##elemtype ); \ + CPPUNIT_TEST( testAgreesWithLagrange ); \ + CPPUNIT_TEST_SUITE_END(); \ + }; \ + \ + CPPUNIT_TEST_SUITE_REGISTRATION( FEGLLLagrangeAgreementTest_##order##_##elemtype ) + +// The element types whose nodes are the Gauss-Lobatto points of the order in question. The +// serendipity types are left out: LAGRANGE spans a smaller space on QUAD8 and HEX20 than a +// tensor product basis of the same order, so there is no pairing to hold there. +INSTANTIATE_FEGLLAGREEMENTTEST(EDGE2, FIRST); +INSTANTIATE_FEGLLAGREEMENTTEST(EDGE3, SECOND); + +#if LIBMESH_DIM > 1 +INSTANTIATE_FEGLLAGREEMENTTEST(QUAD4, FIRST); +INSTANTIATE_FEGLLAGREEMENTTEST(QUAD9, SECOND); +#endif + +#if LIBMESH_DIM > 2 +INSTANTIATE_FEGLLAGREEMENTTEST(HEX8, FIRST); +INSTANTIATE_FEGLLAGREEMENTTEST(HEX27, SECOND); +#endif From c34efad561e13008ab2732a4ce7392f08345e8b0 Mon Sep 17 00:00:00 2001 From: Alex Lindsay Date: Tue, 15 Sep 2026 10:33:27 -0700 Subject: [PATCH 6/8] Add the LAGRANGE_GLL family The continuous nodal basis on the Gauss-Lobatto points, collocated with the Gauss-Lobatto rule of its order as the L2 family already is, so its mass matrix is diagonal. It is diagonal globally and not only per element, since the map from a degree of freedom to the point it interpolates at is one to one. The degrees of freedom are distributed as HIERARCHIC distributes its own, one per vertex, p-1 per edge, (p-1)^2 per face and the rest on the element, so the element needs a node for each entity that owns any. That is what limits the order a type reaches: without mid-edge nodes an edge's degrees of freedom have nowhere to sit, so QUAD4 and HEX8 stop at order one, and in three dimensions a face owns degrees of freedom too, so HEX20 stops there as well while HEX27 does not. Interior degrees of freedom belong to the element, so no type needs an interior node and QUAD8 reaches any order. Two elements sharing an entity have to agree on which point each of its degrees of freedom sits at, and each numbers that entity's vertices its own way. Rather than enumerate the symmetries, the index is built from the vertices themselves: a vertex of a tensor product element sits at -1 or 1 in each coordinate, so it converts straight to a tensor index, and an edge or face degree of freedom is that index stepped along the entity from a corner both elements pick out. Elem::positive_edge_orientation names the lesser end of an edge, and Elem::oriented_face_vertices lists a face's vertices from its least vertex in the direction the rest run from it, which is an origin and two axes. So one expression covers every edge and every face of every tensor product element instead of one case apiece. extra_hanging_dofs is true, with HIERARCHIC and the other continuous high order families rather than with LAGRANGE. Past order two none of the points a mid-edge or mid-face node owns is the node itself, so that node cannot double as a vertex for the elements meeting it at a refinement interface and needs a degree of freedom of its own there. Co-Authored-By: Claude --- Makefile.in | 81 ++++++- include/enums/enum_fe_family.h | 1 + include/fe/fe_lagrange_gll_shape.h | 173 +++++++++++++++ include/fe/fe_macro.h | 2 + src/fe/fe_abstract.C | 12 ++ src/fe/fe_base.C | 12 ++ src/fe/fe_boundary.C | 2 + src/fe/fe_interface.C | 11 + src/fe/fe_lagrange_gll.C | 326 +++++++++++++++++++++++++++++ src/fe/fe_lagrange_gll_shape_0D.C | 113 +++++++++- src/fe/fe_lagrange_gll_shape_1D.C | 132 +++++++++++- src/fe/fe_lagrange_gll_shape_2D.C | 132 +++++++++++- src/fe/fe_lagrange_gll_shape_3D.C | 132 +++++++++++- src/fe/fe_transformation_base.C | 1 + src/fe/fe_type.C | 2 +- src/libmesh_SOURCES | 1 + src/utils/string_to_enum.C | 1 + 17 files changed, 1124 insertions(+), 10 deletions(-) create mode 100644 src/fe/fe_lagrange_gll.C diff --git a/Makefile.in b/Makefile.in index b64ad5b3f9..7108a5bf10 100644 --- a/Makefile.in +++ b/Makefile.in @@ -326,7 +326,7 @@ am__libmesh_dbg_la_SOURCES_DIST = src/base/dirichlet_boundary.C \ src/fe/fe_interface.C src/fe/fe_interface_inf_fe.C \ src/fe/fe_l2_hierarchic.C src/fe/fe_l2_lagrange.C \ src/fe/fe_l2_lagrange_gll.C src/fe/fe_lagrange.C \ - src/fe/fe_lagrange_gll_shape_0D.C \ + src/fe/fe_lagrange_gll.C src/fe/fe_lagrange_gll_shape_0D.C \ src/fe/fe_lagrange_gll_shape_1D.C \ src/fe/fe_lagrange_gll_shape_2D.C \ src/fe/fe_lagrange_gll_shape_3D.C \ @@ -679,6 +679,7 @@ am__objects_1 = src/base/libmesh_dbg_la-dirichlet_boundary.lo \ src/fe/libmesh_dbg_la-fe_l2_lagrange.lo \ src/fe/libmesh_dbg_la-fe_l2_lagrange_gll.lo \ src/fe/libmesh_dbg_la-fe_lagrange.lo \ + src/fe/libmesh_dbg_la-fe_lagrange_gll.lo \ src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_0D.lo \ src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_1D.lo \ src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_2D.lo \ @@ -1150,7 +1151,7 @@ am__libmesh_devel_la_SOURCES_DIST = src/base/dirichlet_boundary.C \ src/fe/fe_interface.C src/fe/fe_interface_inf_fe.C \ src/fe/fe_l2_hierarchic.C src/fe/fe_l2_lagrange.C \ src/fe/fe_l2_lagrange_gll.C src/fe/fe_lagrange.C \ - src/fe/fe_lagrange_gll_shape_0D.C \ + src/fe/fe_lagrange_gll.C src/fe/fe_lagrange_gll_shape_0D.C \ src/fe/fe_lagrange_gll_shape_1D.C \ src/fe/fe_lagrange_gll_shape_2D.C \ src/fe/fe_lagrange_gll_shape_3D.C \ @@ -1502,6 +1503,7 @@ am__objects_2 = src/base/libmesh_devel_la-dirichlet_boundary.lo \ src/fe/libmesh_devel_la-fe_l2_lagrange.lo \ src/fe/libmesh_devel_la-fe_l2_lagrange_gll.lo \ src/fe/libmesh_devel_la-fe_lagrange.lo \ + src/fe/libmesh_devel_la-fe_lagrange_gll.lo \ src/fe/libmesh_devel_la-fe_lagrange_gll_shape_0D.lo \ src/fe/libmesh_devel_la-fe_lagrange_gll_shape_1D.lo \ src/fe/libmesh_devel_la-fe_lagrange_gll_shape_2D.lo \ @@ -1970,7 +1972,7 @@ am__libmesh_oprof_la_SOURCES_DIST = src/base/dirichlet_boundary.C \ src/fe/fe_interface.C src/fe/fe_interface_inf_fe.C \ src/fe/fe_l2_hierarchic.C src/fe/fe_l2_lagrange.C \ src/fe/fe_l2_lagrange_gll.C src/fe/fe_lagrange.C \ - src/fe/fe_lagrange_gll_shape_0D.C \ + src/fe/fe_lagrange_gll.C src/fe/fe_lagrange_gll_shape_0D.C \ src/fe/fe_lagrange_gll_shape_1D.C \ src/fe/fe_lagrange_gll_shape_2D.C \ src/fe/fe_lagrange_gll_shape_3D.C \ @@ -2322,6 +2324,7 @@ am__objects_3 = src/base/libmesh_oprof_la-dirichlet_boundary.lo \ src/fe/libmesh_oprof_la-fe_l2_lagrange.lo \ src/fe/libmesh_oprof_la-fe_l2_lagrange_gll.lo \ src/fe/libmesh_oprof_la-fe_lagrange.lo \ + src/fe/libmesh_oprof_la-fe_lagrange_gll.lo \ src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_0D.lo \ src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_1D.lo \ src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_2D.lo \ @@ -2790,7 +2793,7 @@ am__libmesh_opt_la_SOURCES_DIST = src/base/dirichlet_boundary.C \ src/fe/fe_interface.C src/fe/fe_interface_inf_fe.C \ src/fe/fe_l2_hierarchic.C src/fe/fe_l2_lagrange.C \ src/fe/fe_l2_lagrange_gll.C src/fe/fe_lagrange.C \ - src/fe/fe_lagrange_gll_shape_0D.C \ + src/fe/fe_lagrange_gll.C src/fe/fe_lagrange_gll_shape_0D.C \ src/fe/fe_lagrange_gll_shape_1D.C \ src/fe/fe_lagrange_gll_shape_2D.C \ src/fe/fe_lagrange_gll_shape_3D.C \ @@ -3142,6 +3145,7 @@ am__objects_4 = src/base/libmesh_opt_la-dirichlet_boundary.lo \ src/fe/libmesh_opt_la-fe_l2_lagrange.lo \ src/fe/libmesh_opt_la-fe_l2_lagrange_gll.lo \ src/fe/libmesh_opt_la-fe_lagrange.lo \ + src/fe/libmesh_opt_la-fe_lagrange_gll.lo \ src/fe/libmesh_opt_la-fe_lagrange_gll_shape_0D.lo \ src/fe/libmesh_opt_la-fe_lagrange_gll_shape_1D.lo \ src/fe/libmesh_opt_la-fe_lagrange_gll_shape_2D.lo \ @@ -3609,7 +3613,7 @@ am__libmesh_prof_la_SOURCES_DIST = src/base/dirichlet_boundary.C \ src/fe/fe_interface.C src/fe/fe_interface_inf_fe.C \ src/fe/fe_l2_hierarchic.C src/fe/fe_l2_lagrange.C \ src/fe/fe_l2_lagrange_gll.C src/fe/fe_lagrange.C \ - src/fe/fe_lagrange_gll_shape_0D.C \ + src/fe/fe_lagrange_gll.C src/fe/fe_lagrange_gll_shape_0D.C \ src/fe/fe_lagrange_gll_shape_1D.C \ src/fe/fe_lagrange_gll_shape_2D.C \ src/fe/fe_lagrange_gll_shape_3D.C \ @@ -3961,6 +3965,7 @@ am__objects_5 = src/base/libmesh_prof_la-dirichlet_boundary.lo \ src/fe/libmesh_prof_la-fe_l2_lagrange.lo \ src/fe/libmesh_prof_la-fe_l2_lagrange_gll.lo \ src/fe/libmesh_prof_la-fe_lagrange.lo \ + src/fe/libmesh_prof_la-fe_lagrange_gll.lo \ src/fe/libmesh_prof_la-fe_lagrange_gll_shape_0D.lo \ src/fe/libmesh_prof_la-fe_lagrange_gll_shape_1D.lo \ src/fe/libmesh_prof_la-fe_lagrange_gll_shape_2D.lo \ @@ -5244,6 +5249,7 @@ am__depfiles_remade = src/apps/$(DEPDIR)/amr_dbg-amr.Po \ src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange.Plo \ src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Plo \ src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_1D.Plo \ src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_2D.Plo \ @@ -5337,6 +5343,7 @@ am__depfiles_remade = src/apps/$(DEPDIR)/amr_dbg-amr.Po \ src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange.Plo \ src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Plo \ src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_1D.Plo \ src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_2D.Plo \ @@ -5430,6 +5437,7 @@ am__depfiles_remade = src/apps/$(DEPDIR)/amr_dbg-amr.Po \ src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange.Plo \ src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Plo \ src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_1D.Plo \ src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_2D.Plo \ @@ -5523,6 +5531,7 @@ am__depfiles_remade = src/apps/$(DEPDIR)/amr_dbg-amr.Po \ src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange.Plo \ src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Plo \ src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_1D.Plo \ src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_2D.Plo \ @@ -5616,6 +5625,7 @@ am__depfiles_remade = src/apps/$(DEPDIR)/amr_dbg-amr.Po \ src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange.Plo \ src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange.Plo \ + src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll.Plo \ src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Plo \ src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_1D.Plo \ src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_2D.Plo \ @@ -8221,6 +8231,7 @@ libmesh_SOURCES = \ src/fe/fe_l2_lagrange.C \ src/fe/fe_l2_lagrange_gll.C \ src/fe/fe_lagrange.C \ + src/fe/fe_lagrange_gll.C \ src/fe/fe_lagrange_gll_shape_0D.C \ src/fe/fe_lagrange_gll_shape_1D.C \ src/fe/fe_lagrange_gll_shape_2D.C \ @@ -9353,6 +9364,8 @@ src/fe/libmesh_dbg_la-fe_l2_lagrange_gll.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_dbg_la-fe_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_dbg_la-fe_lagrange_gll.lo: src/fe/$(am__dirstamp) \ + src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_0D.lo: \ src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_1D.lo: \ @@ -10612,6 +10625,8 @@ src/fe/libmesh_devel_la-fe_l2_lagrange_gll.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_devel_la-fe_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_devel_la-fe_lagrange_gll.lo: src/fe/$(am__dirstamp) \ + src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_devel_la-fe_lagrange_gll_shape_0D.lo: \ src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_devel_la-fe_lagrange_gll_shape_1D.lo: \ @@ -11796,6 +11811,8 @@ src/fe/libmesh_oprof_la-fe_l2_lagrange_gll.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_oprof_la-fe_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_oprof_la-fe_lagrange_gll.lo: src/fe/$(am__dirstamp) \ + src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_0D.lo: \ src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_1D.lo: \ @@ -12980,6 +12997,8 @@ src/fe/libmesh_opt_la-fe_l2_lagrange_gll.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_opt_la-fe_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_opt_la-fe_lagrange_gll.lo: src/fe/$(am__dirstamp) \ + src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_opt_la-fe_lagrange_gll_shape_0D.lo: \ src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_opt_la-fe_lagrange_gll_shape_1D.lo: \ @@ -14161,6 +14180,8 @@ src/fe/libmesh_prof_la-fe_l2_lagrange_gll.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_prof_la-fe_lagrange.lo: src/fe/$(am__dirstamp) \ src/fe/$(DEPDIR)/$(am__dirstamp) +src/fe/libmesh_prof_la-fe_lagrange_gll.lo: src/fe/$(am__dirstamp) \ + src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_prof_la-fe_lagrange_gll_shape_0D.lo: \ src/fe/$(am__dirstamp) src/fe/$(DEPDIR)/$(am__dirstamp) src/fe/libmesh_prof_la-fe_lagrange_gll_shape_1D.lo: \ @@ -16095,6 +16116,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_1D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_2D.Plo@am__quote@ # am--include-marker @@ -16188,6 +16210,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_1D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_2D.Plo@am__quote@ # am--include-marker @@ -16281,6 +16304,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_1D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_2D.Plo@am__quote@ # am--include-marker @@ -16374,6 +16398,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_1D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_2D.Plo@am__quote@ # am--include-marker @@ -16467,6 +16492,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange.Plo@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_1D.Plo@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_2D.Plo@am__quote@ # am--include-marker @@ -18793,6 +18819,13 @@ src/fe/libmesh_dbg_la-fe_lagrange.lo: src/fe/fe_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_dbg_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C +src/fe/libmesh_dbg_la-fe_lagrange_gll.lo: src/fe/fe_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_dbg_la-fe_lagrange_gll.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll.Tpo -c -o src/fe/libmesh_dbg_la-fe_lagrange_gll.lo `test -f 'src/fe/fe_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll.Tpo src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll.C' object='src/fe/libmesh_dbg_la-fe_lagrange_gll.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_dbg_la-fe_lagrange_gll.lo `test -f 'src/fe/fe_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll.C + src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_0D.lo: src/fe/fe_lagrange_gll_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_dbg_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_dbg_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Tpo -c -o src/fe/libmesh_dbg_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Plo @@ -22160,6 +22193,13 @@ src/fe/libmesh_devel_la-fe_lagrange.lo: src/fe/fe_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_devel_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C +src/fe/libmesh_devel_la-fe_lagrange_gll.lo: src/fe/fe_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_devel_la-fe_lagrange_gll.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll.Tpo -c -o src/fe/libmesh_devel_la-fe_lagrange_gll.lo `test -f 'src/fe/fe_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll.Tpo src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll.C' object='src/fe/libmesh_devel_la-fe_lagrange_gll.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_devel_la-fe_lagrange_gll.lo `test -f 'src/fe/fe_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll.C + src/fe/libmesh_devel_la-fe_lagrange_gll_shape_0D.lo: src/fe/fe_lagrange_gll_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_devel_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_devel_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_devel_la-fe_lagrange_gll_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Tpo -c -o src/fe/libmesh_devel_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Plo @@ -25527,6 +25567,13 @@ src/fe/libmesh_oprof_la-fe_lagrange.lo: src/fe/fe_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_oprof_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C +src/fe/libmesh_oprof_la-fe_lagrange_gll.lo: src/fe/fe_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_oprof_la-fe_lagrange_gll.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll.Tpo -c -o src/fe/libmesh_oprof_la-fe_lagrange_gll.lo `test -f 'src/fe/fe_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll.Tpo src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll.C' object='src/fe/libmesh_oprof_la-fe_lagrange_gll.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_oprof_la-fe_lagrange_gll.lo `test -f 'src/fe/fe_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll.C + src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_0D.lo: src/fe/fe_lagrange_gll_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_oprof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_oprof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Tpo -c -o src/fe/libmesh_oprof_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Plo @@ -28894,6 +28941,13 @@ src/fe/libmesh_opt_la-fe_lagrange.lo: src/fe/fe_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_opt_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C +src/fe/libmesh_opt_la-fe_lagrange_gll.lo: src/fe/fe_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_opt_la-fe_lagrange_gll.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll.Tpo -c -o src/fe/libmesh_opt_la-fe_lagrange_gll.lo `test -f 'src/fe/fe_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll.Tpo src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll.C' object='src/fe/libmesh_opt_la-fe_lagrange_gll.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_opt_la-fe_lagrange_gll.lo `test -f 'src/fe/fe_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll.C + src/fe/libmesh_opt_la-fe_lagrange_gll_shape_0D.lo: src/fe/fe_lagrange_gll_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_opt_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_opt_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_opt_la-fe_lagrange_gll_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Tpo -c -o src/fe/libmesh_opt_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Plo @@ -32261,6 +32315,13 @@ src/fe/libmesh_prof_la-fe_lagrange.lo: src/fe/fe_lagrange.C @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ @am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_prof_la-fe_lagrange.lo `test -f 'src/fe/fe_lagrange.C' || echo '$(srcdir)/'`src/fe/fe_lagrange.C +src/fe/libmesh_prof_la-fe_lagrange_gll.lo: src/fe/fe_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_prof_la-fe_lagrange_gll.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll.Tpo -c -o src/fe/libmesh_prof_la-fe_lagrange_gll.lo `test -f 'src/fe/fe_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll.Tpo src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll.Plo +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='src/fe/fe_lagrange_gll.C' object='src/fe/libmesh_prof_la-fe_lagrange_gll.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -c -o src/fe/libmesh_prof_la-fe_lagrange_gll.lo `test -f 'src/fe/fe_lagrange_gll.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll.C + src/fe/libmesh_prof_la-fe_lagrange_gll_shape_0D.lo: src/fe/fe_lagrange_gll_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libmesh_prof_la_CPPFLAGS) $(CPPFLAGS) $(libmesh_prof_la_CXXFLAGS) $(CXXFLAGS) -MT src/fe/libmesh_prof_la-fe_lagrange_gll_shape_0D.lo -MD -MP -MF src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Tpo -c -o src/fe/libmesh_prof_la-fe_lagrange_gll_shape_0D.lo `test -f 'src/fe/fe_lagrange_gll_shape_0D.C' || echo '$(srcdir)/'`src/fe/fe_lagrange_gll_shape_0D.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Tpo src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Plo @@ -37050,6 +37111,7 @@ distclean: distclean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_2D.Plo @@ -37143,6 +37205,7 @@ distclean: distclean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_2D.Plo @@ -37236,6 +37299,7 @@ distclean: distclean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_2D.Plo @@ -37329,6 +37393,7 @@ distclean: distclean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_2D.Plo @@ -37422,6 +37487,7 @@ distclean: distclean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_2D.Plo @@ -39586,6 +39652,7 @@ maintainer-clean: maintainer-clean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_dbg_la-fe_lagrange_gll_shape_2D.Plo @@ -39679,6 +39746,7 @@ maintainer-clean: maintainer-clean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_devel_la-fe_lagrange_gll_shape_2D.Plo @@ -39772,6 +39840,7 @@ maintainer-clean: maintainer-clean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_oprof_la-fe_lagrange_gll_shape_2D.Plo @@ -39865,6 +39934,7 @@ maintainer-clean: maintainer-clean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_opt_la-fe_lagrange_gll_shape_2D.Plo @@ -39958,6 +40028,7 @@ maintainer-clean: maintainer-clean-recursive -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_l2_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange.Plo + -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_0D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_1D.Plo -rm -f src/fe/$(DEPDIR)/libmesh_prof_la-fe_lagrange_gll_shape_2D.Plo diff --git a/include/enums/enum_fe_family.h b/include/enums/enum_fe_family.h index 0de87c3a3b..567dfb338c 100644 --- a/include/enums/enum_fe_family.h +++ b/include/enums/enum_fe_family.h @@ -72,6 +72,7 @@ enum FEFamily : int { // Nodal basis functions on the Gauss-Lobatto points, which are // collocated with the Gauss-Lobatto quadrature rule of the same order L2_LAGRANGE_GLL = 81, + LAGRANGE_GLL = 82, // Invalid INVALID_FE = 99}; diff --git a/include/fe/fe_lagrange_gll_shape.h b/include/fe/fe_lagrange_gll_shape.h index 3b925f1ad2..441c479e0e 100644 --- a/include/fe/fe_lagrange_gll_shape.h +++ b/include/fe/fe_lagrange_gll_shape.h @@ -20,10 +20,14 @@ #define LIBMESH_FE_LAGRANGE_GLL_SHAPE_H // Local includes +#include "libmesh/elem.h" #include "libmesh/enum_fe_family.h" #include "libmesh/enum_order.h" #include "libmesh/fe_lagrange_gll_shape_1D.h" +// C++ includes +#include + // The tensor product that the Gauss-Lobatto nodal families on the tensor product element // types build their shape functions from. The families differ in which tensor index a shape // function index names, and in nothing else, so the evaluation lives here once. @@ -100,6 +104,175 @@ inline void fe_lagrange_gll_tensor_index(const Elem *, libmesh_assert_less (i, stride); } +/** + * Fills the leading \p dim entries of \p indices with the tensor index of vertex \p v. + * + * A vertex of a tensor product element sits at -1 or 1 in each coordinate of the reference + * element, which is the first or the last of the interpolation points along it. + */ +inline void fe_lagrange_gll_vertex_index(const Elem & elem, + const unsigned int degree, + const unsigned int dim, + const unsigned int v, + unsigned int * indices) +{ + const Point q = elem.master_point(v); + + for (unsigned int d = 0; d != dim; ++d) + { + libmesh_assert_equal_to (std::abs(q(d)), 1.); + indices[d] = (q(d) > 0.) ? degree : 0; + } +} + + +/** + * Fills \p indices with the tensor index reached by stepping \p step interpolation points from + * the vertex whose index is \p from toward the vertex whose index is \p to. + * + * The two vertices are the ends of an edge, so they differ in one coordinate, and stepping + * along it counts up from \p from or down from it according to which end it is. Deriving the + * step from the vertices rather than from a table per edge is what keeps one expression + * standing for every edge of every tensor product element. + */ +inline void fe_lagrange_gll_step_index(const unsigned int degree, + const unsigned int dim, + const unsigned int * from, + const unsigned int * to, + const unsigned int step, + unsigned int * indices) +{ + unsigned int n_moved = 0; + + for (unsigned int d = 0; d != dim; ++d) + if (from[d] != to[d]) + { + indices[d] = (to[d] == degree) ? step : (degree - step); + ++n_moved; + } + + // The ends of an edge of a tensor product element differ in one coordinate, and the caller + // relies on that to lay independent steps over each other + libmesh_assert_equal_to (n_moved, 1u); +} + + +/** + * The LAGRANGE_GLL degrees of freedom are distributed as HIERARCHIC distributes its own: one + * on each vertex, degree-1 on each edge, (degree-1)^2 on each face, and the rest on the + * element. libMesh numbers them by node, in node order, and then the element's own, so a + * shape function index names an entity and a position within it. + * + * Two elements sharing an entity have to agree on which interpolation point each of its + * degrees of freedom sits at, and each numbers that entity's vertices its own way. The + * agreement comes from Elem::positive_edge_orientation and Elem::oriented_face_vertices, which + * both elements compute from the positions of the same vertices: an edge is walked from its + * lesser end, and a face from its least vertex along the lesser of the two edges leaving it. + */ +template <> +inline void fe_lagrange_gll_tensor_index(const Elem * elem, + const Order order, + const unsigned int dim, + const unsigned int i, + unsigned int * indices) +{ + libmesh_assert(elem); + + const unsigned int degree = static_cast(order); + const unsigned int n_v = elem->n_vertices(); + + if (i < n_v) + { + fe_lagrange_gll_vertex_index(*elem, degree, dim, i, indices); + return; + } + + // Below a vertex apiece there is nothing else to hold + libmesh_assert_greater (degree, 1); + + const unsigned int per_edge = degree - 1; + + // An edge element has no edges of its own, so what follows its vertices is its interior + if (dim == 1) + { + indices[0] = i - n_v + 1; + libmesh_assert_less (indices[0], degree); + return; + } + + const unsigned int n_e = elem->n_edges(); + + if (i < n_v + n_e * per_edge) + { + const unsigned int e = (i - n_v) / per_edge; + const unsigned int k = (i - n_v) % per_edge; + + // The node carrying this edge's degrees of freedom follows the vertices in node order + libmesh_assert (elem->is_node_on_edge(n_v + e, e)); + + // positive_edge_orientation reports whether the edge's own first vertex is the greater + // of the two, so walking from the lesser means starting at the second when it does + const bool reversed = elem->positive_edge_orientation(e); + + unsigned int from[3], to[3]; + fe_lagrange_gll_vertex_index(*elem, degree, dim, + elem->local_edge_node(e, reversed ? 1 : 0), from); + fe_lagrange_gll_vertex_index(*elem, degree, dim, + elem->local_edge_node(e, reversed ? 0 : 1), to); + + for (unsigned int d = 0; d != dim; ++d) + indices[d] = from[d]; + + fe_lagrange_gll_step_index(degree, dim, from, to, k + 1, indices); + return; + } + + const unsigned int per_face = per_edge * per_edge; + const unsigned int after_edges = n_v + n_e * per_edge; + const unsigned int n_f = (dim > 2) ? elem->n_faces() : 0; + + if (i < after_edges + n_f * per_face) + { + const unsigned int f = (i - after_edges) / per_face; + const unsigned int m = (i - after_edges) % per_face; + + // The node carrying this face's degrees of freedom follows the edge nodes + libmesh_assert (elem->is_node_on_side(n_v + n_e + f, f)); + + // The face's vertices from its least vertex toward the lesser of that vertex's neighbors, + // so the last is its other neighbor + const std::vector face_vertices = elem->oriented_face_vertices(f); + + unsigned int from[3], first[3], second[3]; + fe_lagrange_gll_vertex_index(*elem, degree, dim, face_vertices.front(), from); + fe_lagrange_gll_vertex_index(*elem, degree, dim, face_vertices[1], first); + fe_lagrange_gll_vertex_index(*elem, degree, dim, face_vertices.back(), second); + + for (unsigned int d = 0; d != dim; ++d) + indices[d] = from[d]; + + // The face's two directions move different coordinates, and the third holds the value + // the whole face shares, so the two steps do not tread on each other + fe_lagrange_gll_step_index(degree, dim, from, first, m % per_edge + 1, indices); + fe_lagrange_gll_step_index(degree, dim, from, second, m / per_edge + 1, indices); + return; + } + + // What is left belongs to the element, and runs over the interior of the tensor grid in + // lexicographic order with the first coordinate varying fastest + const unsigned int m = i - (after_edges + n_f * per_face); + unsigned int stride = 1; + + for (unsigned int d = 0; d != dim; ++d) + { + indices[d] = (m / stride) % per_edge + 1; + stride *= per_edge; + } + + libmesh_assert_less (m, stride); +} + + /** * \returns The \p Dim dimensional tensor product of one-dimensional Gauss-Lobatto nodal shape * functions that shape function \p i of family \p T names, differentiated once in each diff --git a/include/fe/fe_macro.h b/include/fe/fe_macro.h index 3b1b0d9078..53f90301ea 100644 --- a/include/fe/fe_macro.h +++ b/include/fe/fe_macro.h @@ -81,6 +81,7 @@ template class LIBMESH_EXPORT FE< (_dim), L2_LAGRANGE>; \ template class LIBMESH_EXPORT FE< (_dim), L2_LAGRANGE_VEC>; \ template class LIBMESH_EXPORT FE< (_dim), L2_LAGRANGE_GLL>; \ + template class LIBMESH_EXPORT FE< (_dim), LAGRANGE_GLL>; \ template class LIBMESH_EXPORT FE< (_dim), MONOMIAL>; \ template class LIBMESH_EXPORT FE< (_dim), SCALAR>; \ template class LIBMESH_EXPORT FE< (_dim), SIDE_HIERARCHIC>; \ @@ -104,6 +105,7 @@ template class LIBMESH_EXPORT FE< (_dim), L2_LAGRANGE>; \ template class LIBMESH_EXPORT FE< (_dim), L2_LAGRANGE_VEC>; \ template class LIBMESH_EXPORT FE< (_dim), L2_LAGRANGE_GLL>; \ + template class LIBMESH_EXPORT FE< (_dim), LAGRANGE_GLL>; \ template class LIBMESH_EXPORT FE< (_dim), MONOMIAL>; \ template class LIBMESH_EXPORT FE< (_dim), SCALAR>; \ template class LIBMESH_EXPORT FE< (_dim), SIDE_HIERARCHIC>; \ diff --git a/src/fe/fe_abstract.C b/src/fe/fe_abstract.C index 7639ad94b1..36e8dfbfba 100644 --- a/src/fe/fe_abstract.C +++ b/src/fe/fe_abstract.C @@ -103,6 +103,9 @@ std::unique_ptr FEAbstract::build(const unsigned int dim, case L2_LAGRANGE_GLL: return std::make_unique>(fet); + case LAGRANGE_GLL: + return std::make_unique>(fet); + case L2_LAGRANGE_VEC: return std::make_unique>(fet); @@ -183,6 +186,9 @@ std::unique_ptr FEAbstract::build(const unsigned int dim, case L2_LAGRANGE_GLL: return std::make_unique>(fet); + case LAGRANGE_GLL: + return std::make_unique>(fet); + case L2_LAGRANGE_VEC: return std::make_unique>(fet); @@ -265,6 +271,9 @@ std::unique_ptr FEAbstract::build(const unsigned int dim, case L2_LAGRANGE_GLL: return std::make_unique>(fet); + case LAGRANGE_GLL: + return std::make_unique>(fet); + case L2_LAGRANGE_VEC: return std::make_unique>(fet); @@ -347,6 +356,9 @@ std::unique_ptr FEAbstract::build(const unsigned int dim, case L2_LAGRANGE_GLL: return std::make_unique>(fet); + case LAGRANGE_GLL: + return std::make_unique>(fet); + case L2_LAGRANGE_VEC: return std::make_unique>(fet); diff --git a/src/fe/fe_base.C b/src/fe/fe_base.C index dcb49f1d97..aa368d49ed 100644 --- a/src/fe/fe_base.C +++ b/src/fe/fe_base.C @@ -213,6 +213,9 @@ FEGenericBase::build (const unsigned int dim, case L2_LAGRANGE_GLL: return std::make_unique>(fet); + case LAGRANGE_GLL: + return std::make_unique>(fet); + case HIERARCHIC: return std::make_unique>(fet); @@ -266,6 +269,9 @@ FEGenericBase::build (const unsigned int dim, case L2_LAGRANGE_GLL: return std::make_unique>(fet); + case LAGRANGE_GLL: + return std::make_unique>(fet); + case HIERARCHIC: return std::make_unique>(fet); @@ -321,6 +327,9 @@ FEGenericBase::build (const unsigned int dim, case L2_LAGRANGE_GLL: return std::make_unique>(fet); + case LAGRANGE_GLL: + return std::make_unique>(fet); + case HIERARCHIC: return std::make_unique>(fet); @@ -379,6 +388,9 @@ FEGenericBase::build (const unsigned int dim, case L2_LAGRANGE_GLL: return std::make_unique>(fet); + case LAGRANGE_GLL: + return std::make_unique>(fet); + case HIERARCHIC: return std::make_unique>(fet); diff --git a/src/fe/fe_boundary.C b/src/fe/fe_boundary.C index 2e9e1e93a4..452ca2575b 100644 --- a/src/fe/fe_boundary.C +++ b/src/fe/fe_boundary.C @@ -80,6 +80,7 @@ LIBMESH_ERRORS_IN_LOW_D(SIDE_HIERARCHIC) LIBMESH_ERRORS_IN_LOW_D(LAGRANGE) LIBMESH_ERRORS_IN_LOW_D(L2_LAGRANGE) LIBMESH_ERRORS_IN_LOW_D(L2_LAGRANGE_GLL) +LIBMESH_ERRORS_IN_LOW_D(LAGRANGE_GLL) LIBMESH_ERRORS_IN_LOW_D(LAGRANGE_VEC) LIBMESH_ERRORS_IN_LOW_D(L2_LAGRANGE_VEC) LIBMESH_ERRORS_IN_LOW_D(MONOMIAL) @@ -1166,6 +1167,7 @@ REINIT_AND_SIDE_MAPS(LAGRANGE); REINIT_AND_SIDE_MAPS(LAGRANGE_VEC); REINIT_AND_SIDE_MAPS(L2_LAGRANGE); REINIT_AND_SIDE_MAPS(L2_LAGRANGE_GLL); +REINIT_AND_SIDE_MAPS(LAGRANGE_GLL); REINIT_AND_SIDE_MAPS(L2_LAGRANGE_VEC); REINIT_AND_SIDE_MAPS(HIERARCHIC); REINIT_AND_SIDE_MAPS(HIERARCHIC_VEC); diff --git a/src/fe/fe_interface.C b/src/fe/fe_interface.C index 34c6e6564e..3e402a82ed 100644 --- a/src/fe/fe_interface.C +++ b/src/fe/fe_interface.C @@ -96,6 +96,7 @@ FEInterface::is_InfFE_elem(const ElemType et) fe_family_case_func(LAGRANGE, dim, func_and_args, prefix, suffix) \ fe_family_case_func(L2_LAGRANGE, dim, func_and_args, prefix, suffix) \ fe_family_case_func(L2_LAGRANGE_GLL, dim, func_and_args, prefix, suffix) \ + fe_family_case_func(LAGRANGE_GLL, dim, func_and_args, prefix, suffix) \ fe_family_case_func(MONOMIAL, dim, func_and_args, prefix, suffix) \ fe_family_case_func(SCALAR, dim, func_and_args, prefix, suffix) \ fe_family_case_func(XYZ, dim, func_and_args, prefix, suffix) \ @@ -111,6 +112,7 @@ FEInterface::is_InfFE_elem(const ElemType et) fe_family_case(LAGRANGE) \ fe_family_case(L2_LAGRANGE) \ fe_family_case(L2_LAGRANGE_GLL) \ + fe_family_case(LAGRANGE_GLL) \ fe_family_case(MONOMIAL) \ fe_family_case(SCALAR) \ fe_family_case(XYZ) \ @@ -2204,6 +2206,7 @@ unsigned int FEInterface::max_order(const FEType & fe_t, } break; case L2_LAGRANGE_GLL: + case LAGRANGE_GLL: switch (el_t) { case EDGE2: @@ -2660,6 +2663,11 @@ bool FEInterface::extra_hanging_dofs(const FEType & fe_t) case HIERARCHIC: case HIERARCHIC_VEC: case L2_HIERARCHIC_VEC: + // A mid-edge or mid-face node of this family owns the interpolation points inside its + // entity, and past order two none of those is the node itself, so the node cannot serve + // as a vertex for the elements meeting it at a refinement interface and needs a degree + // of freedom of its own there + case LAGRANGE_GLL: fe_family_horder_case() default: return true; @@ -2689,6 +2697,7 @@ bool FEInterface::orientation_dependent (const FEFamily & fe_family) case HIERARCHIC: case L2_HIERARCHIC: case HIERARCHIC_VEC: + case LAGRANGE_GLL: case L2_HIERARCHIC_VEC: case BERNSTEIN: case RATIONAL_BERNSTEIN: @@ -2732,6 +2741,7 @@ FEInterface::is_hierarchic (const FEType & fe_type) case CLOUGH: // maybe some day? case LAGRANGE: case LAGRANGE_VEC: + case LAGRANGE_GLL: case L2_LAGRANGE: case L2_LAGRANGE_GLL: case L2_LAGRANGE_VEC: @@ -2769,6 +2779,7 @@ FEContinuity FEInterface::get_continuity(const FEType & fe_type) // C0 elements case LAGRANGE: + case LAGRANGE_GLL: case HIERARCHIC: case BERNSTEIN: case SZABAB: diff --git a/src/fe/fe_lagrange_gll.C b/src/fe/fe_lagrange_gll.C new file mode 100644 index 0000000000..03f25cb690 --- /dev/null +++ b/src/fe/fe_lagrange_gll.C @@ -0,0 +1,326 @@ +// The libMesh Finite Element Library. +// Copyright (C) 2002-2026 Benjamin S. Kirk, John W. Peterson, Roy H. Stogner + +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. + +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + + +// Local includes +#include "libmesh/elem.h" +#include "libmesh/enum_to_string.h" +#include "libmesh/fe.h" +#include "libmesh/fe_interface.h" +#include "libmesh/fe_lagrange_gll_shape_1D.h" +#include "libmesh/fe_macro.h" + + +namespace libMesh +{ + +/** + * \returns The number of degrees of freedom that the LAGRANGE_GLL basis of order \p o carries + * on an element of type \p t. + * + * The basis is a tensor product, so it lives on the tensor product element types alone, and + * carries \f$(p+1)^d\f$ degrees of freedom on one of those. + * + * The element has to have a node for each entity that owns degrees of freedom, which is what + * limits the order some types reach. A vertex owns one and an edge owns p-1, so a type without + * mid-edge nodes stops at order one. A face owns \f$(p-1)^2\f$, so in three dimensions a type + * without face nodes stops there too. Interior degrees of freedom belong to the element rather + * than to a node, so no type needs an interior node, and these are the same limits HIERARCHIC + * carries for the same reason. + */ +unsigned int lagrange_gll_n_dofs(const ElemType t, const Order o) +{ + libmesh_assert_greater (o, 0); + + const unsigned int n = static_cast(o) + 1; + + libmesh_error_msg_if(n > fe_lagrange_gll_max_points_1D, + "The LAGRANGE_GLL basis of order " << o << " would interpolate at " + << n << " Gauss-Lobatto points, and they are tabulated up to " + << fe_lagrange_gll_max_points_1D << "."); + + switch (t) + { + case NODEELEM: + return 1; + + // An edge owns no entity between its vertices and its interior, so it needs no node + // beyond them at any order + case EDGE2: + case EDGE3: + case EDGE4: + return n; + + // Without mid-edge nodes there is nowhere to put an edge's degrees of freedom + case QUAD4: + case QUADSHELL4: + libmesh_error_msg_if(o > FIRST, + "The LAGRANGE_GLL basis of order " << o << " puts " << o - 1 + << " degrees of freedom on each edge, and " + << Utility::enum_to_string(t) << " has no mid-edge node to own them. " + "QUAD8 or QUAD9 does."); + libmesh_fallthrough(); + case QUAD8: + case QUADSHELL8: + case QUAD9: + case QUADSHELL9: + return n*n; + + // In three dimensions a face owns degrees of freedom as well, so a type needs face + // nodes and not only mid-edge ones + case HEX8: + libmesh_error_msg_if(o > FIRST, + "The LAGRANGE_GLL basis of order " << o + << " puts degrees of freedom on the edges and faces of a hexahedron, " + "and HEX8 has no node to own them. HEX27 does."); + libmesh_fallthrough(); + case HEX20: + libmesh_error_msg_if(o > FIRST, + "The LAGRANGE_GLL basis of order " << o << " puts " << (o - 1)*(o - 1) + << " degrees of freedom on each face, and HEX20 has no face node to " + "own them. HEX27 does."); + libmesh_fallthrough(); + case HEX27: + return n*n*n; + + case INVALID_ELEM: + return 0; + + default: + libmesh_error_msg("The LAGRANGE_GLL basis is a tensor product, so it has no form on " + << Utility::enum_to_string(t) << "."); + } +} + + +unsigned int lagrange_gll_n_dofs(const Elem * e, const Order o) +{ + libmesh_assert(e); + return lagrange_gll_n_dofs(e->type(), o); +} + +/** + * \returns The number of degrees of freedom that node \p n of an element of type \p t owns. + * + * A vertex owns the one whose interpolation point it is. A mid-edge node owns the p-1 points + * inside its edge, and a mid-face node the \f$(p-1)^2\f$ inside its face. An interior node owns + * none: those points belong to the element, which is what lets static condensation reach them + * and what keeps a type without an interior node usable. + */ +unsigned int lagrange_gll_n_dofs_at_node(const ElemType t, + const Order o, + const unsigned int n) +{ + libmesh_assert_greater (o, 0); + + const unsigned int per_edge = static_cast(o) - 1; + + switch (t) + { + case NODEELEM: + return 1; + + case EDGE2: + case EDGE3: + case EDGE4: + return (n < 2) ? 1 : 0; + + case QUAD4: + case QUADSHELL4: + libmesh_assert_less (n, 4); + libmesh_fallthrough(); + case QUAD8: + case QUADSHELL8: + case QUAD9: + case QUADSHELL9: + if (n < 4) + return 1; + if (n < 8) + return per_edge; + return 0; + + case HEX8: + libmesh_assert_less (n, 8); + libmesh_fallthrough(); + case HEX20: + case HEX27: + if (n < 8) + return 1; + if (n < 20) + return per_edge; + if (n < 26) + return per_edge * per_edge; + return 0; + + case INVALID_ELEM: + return 0; + + default: + libmesh_error_msg("The LAGRANGE_GLL basis is a tensor product, so it has no form on " + << Utility::enum_to_string(t) << "."); + } +} + +/** + * \returns The number of degrees of freedom that the element itself owns, which are the + * interpolation points interior to it: \f$(p-1)^d\f$ of them. + */ +unsigned int lagrange_gll_n_dofs_per_elem(const ElemType t, const Order o) +{ + libmesh_assert_greater (o, 0); + + const unsigned int per_edge = static_cast(o) - 1; + + switch (t) + { + case NODEELEM: + case INVALID_ELEM: + return 0; + + case EDGE2: + case EDGE3: + case EDGE4: + return per_edge; + + case QUAD4: + case QUADSHELL4: + case QUAD8: + case QUADSHELL8: + case QUAD9: + case QUADSHELL9: + return per_edge * per_edge; + + case HEX8: + case HEX20: + case HEX27: + return per_edge * per_edge * per_edge; + + default: + libmesh_error_msg("The LAGRANGE_GLL basis is a tensor product, so it has no form on " + << Utility::enum_to_string(t) << "."); + } +} + + +/** + * Evaluates a solution at the nodes of \p elem, for the writers that report a variable there. + * + * The vertex coefficients are already values at their nodes, but past order two the remaining + * interpolation points are not nodes, so the values at the nodes are interpolated rather than + * read off. + */ +void lagrange_gll_nodal_soln(const Elem * elem, + const Order order, + const std::vector & elem_soln, + std::vector & nodal_soln, + const bool add_p_level) +{ + const unsigned int n_nodes = elem->n_nodes(); + + nodal_soln.resize(n_nodes); + + const FEType fe_type(order, LAGRANGE_GLL); + + const unsigned int n_sf = + FEInterface::n_shape_functions(fe_type, elem, add_p_level); + + std::vector refspace_nodes; + FEBase::get_refspace_nodes(elem->type(), refspace_nodes); + libmesh_assert_equal_to (refspace_nodes.size(), n_nodes); + libmesh_assert_equal_to (elem_soln.size(), n_sf); + + std::fill(nodal_soln.begin(), nodal_soln.end(), 0); + + for (const auto n : make_range(n_nodes)) + for (const auto i : make_range(n_sf)) + nodal_soln[n] += elem_soln[i] * + FEInterface::shape(fe_type, elem, i, refspace_nodes[n], add_p_level); +} + +LIBMESH_FE_NODAL_SOLN(LAGRANGE_GLL, lagrange_gll_nodal_soln) +LIBMESH_FE_SIDE_NODAL_SOLN(LAGRANGE_GLL) + + +template <> unsigned int FE<0,LAGRANGE_GLL>::n_dofs(const ElemType t, const Order o) { return lagrange_gll_n_dofs(t, o); } +template <> unsigned int FE<1,LAGRANGE_GLL>::n_dofs(const ElemType t, const Order o) { return lagrange_gll_n_dofs(t, o); } +template <> unsigned int FE<2,LAGRANGE_GLL>::n_dofs(const ElemType t, const Order o) { return lagrange_gll_n_dofs(t, o); } +template <> unsigned int FE<3,LAGRANGE_GLL>::n_dofs(const ElemType t, const Order o) { return lagrange_gll_n_dofs(t, o); } + +template <> unsigned int FE<0,LAGRANGE_GLL>::n_dofs(const Elem * e, const Order o) { return lagrange_gll_n_dofs(e, o); } +template <> unsigned int FE<1,LAGRANGE_GLL>::n_dofs(const Elem * e, const Order o) { return lagrange_gll_n_dofs(e, o); } +template <> unsigned int FE<2,LAGRANGE_GLL>::n_dofs(const Elem * e, const Order o) { return lagrange_gll_n_dofs(e, o); } +template <> unsigned int FE<3,LAGRANGE_GLL>::n_dofs(const Elem * e, const Order o) { return lagrange_gll_n_dofs(e, o); } + +template <> unsigned int FE<0,LAGRANGE_GLL>::n_dofs_at_node(const ElemType t, const Order o, const unsigned int n) { return lagrange_gll_n_dofs_at_node(t, o, n); } +template <> unsigned int FE<1,LAGRANGE_GLL>::n_dofs_at_node(const ElemType t, const Order o, const unsigned int n) { return lagrange_gll_n_dofs_at_node(t, o, n); } +template <> unsigned int FE<2,LAGRANGE_GLL>::n_dofs_at_node(const ElemType t, const Order o, const unsigned int n) { return lagrange_gll_n_dofs_at_node(t, o, n); } +template <> unsigned int FE<3,LAGRANGE_GLL>::n_dofs_at_node(const ElemType t, const Order o, const unsigned int n) { return lagrange_gll_n_dofs_at_node(t, o, n); } + +template <> unsigned int FE<0,LAGRANGE_GLL>::n_dofs_at_node(const Elem & e, const Order o, const unsigned int n) { return lagrange_gll_n_dofs_at_node(e.type(), o, n); } +template <> unsigned int FE<1,LAGRANGE_GLL>::n_dofs_at_node(const Elem & e, const Order o, const unsigned int n) { return lagrange_gll_n_dofs_at_node(e.type(), o, n); } +template <> unsigned int FE<2,LAGRANGE_GLL>::n_dofs_at_node(const Elem & e, const Order o, const unsigned int n) { return lagrange_gll_n_dofs_at_node(e.type(), o, n); } +template <> unsigned int FE<3,LAGRANGE_GLL>::n_dofs_at_node(const Elem & e, const Order o, const unsigned int n) { return lagrange_gll_n_dofs_at_node(e.type(), o, n); } + +template <> unsigned int FE<0,LAGRANGE_GLL>::n_dofs_per_elem(const ElemType t, const Order o) { return lagrange_gll_n_dofs_per_elem(t, o); } +template <> unsigned int FE<1,LAGRANGE_GLL>::n_dofs_per_elem(const ElemType t, const Order o) { return lagrange_gll_n_dofs_per_elem(t, o); } +template <> unsigned int FE<2,LAGRANGE_GLL>::n_dofs_per_elem(const ElemType t, const Order o) { return lagrange_gll_n_dofs_per_elem(t, o); } +template <> unsigned int FE<3,LAGRANGE_GLL>::n_dofs_per_elem(const ElemType t, const Order o) { return lagrange_gll_n_dofs_per_elem(t, o); } + +template <> unsigned int FE<0,LAGRANGE_GLL>::n_dofs_per_elem(const Elem & e, const Order o) { return lagrange_gll_n_dofs_per_elem(e.type(), o); } +template <> unsigned int FE<1,LAGRANGE_GLL>::n_dofs_per_elem(const Elem & e, const Order o) { return lagrange_gll_n_dofs_per_elem(e.type(), o); } +template <> unsigned int FE<2,LAGRANGE_GLL>::n_dofs_per_elem(const Elem & e, const Order o) { return lagrange_gll_n_dofs_per_elem(e.type(), o); } +template <> unsigned int FE<3,LAGRANGE_GLL>::n_dofs_per_elem(const Elem & e, const Order o) { return lagrange_gll_n_dofs_per_elem(e.type(), o); } + +// A nodal basis on the Gauss-Lobatto points is continuous across a shared entity +// because the two elements agree on which point each shared degree of freedom sits at +template <> FEContinuity FE<0,LAGRANGE_GLL>::get_continuity() const { return C_ZERO; } +template <> FEContinuity FE<1,LAGRANGE_GLL>::get_continuity() const { return C_ZERO; } +template <> FEContinuity FE<2,LAGRANGE_GLL>::get_continuity() const { return C_ZERO; } +template <> FEContinuity FE<3,LAGRANGE_GLL>::get_continuity() const { return C_ZERO; } + +// A nodal basis is not hierarchic +template <> bool FE<0,LAGRANGE_GLL>::is_hierarchic() const { return false; } +template <> bool FE<1,LAGRANGE_GLL>::is_hierarchic() const { return false; } +template <> bool FE<2,LAGRANGE_GLL>::is_hierarchic() const { return false; } +template <> bool FE<3,LAGRANGE_GLL>::is_hierarchic() const { return false; } + +// The shape functions follow the orientation of the entity owning each degree of +// freedom, so an element whose entities are oriented differently needs them again +template <> bool FE<0,LAGRANGE_GLL>::shapes_need_reinit() const { return true; } +template <> bool FE<1,LAGRANGE_GLL>::shapes_need_reinit() const { return true; } +template <> bool FE<2,LAGRANGE_GLL>::shapes_need_reinit() const { return true; } +template <> bool FE<3,LAGRANGE_GLL>::shapes_need_reinit() const { return true; } + +#ifdef LIBMESH_ENABLE_AMR +template <> +void FE<2,LAGRANGE_GLL>::compute_constraints (DofConstraints & constraints, + DofMap & dof_map, + const unsigned int variable_number, + const Elem * elem) +{ compute_proj_constraints(constraints, dof_map, variable_number, elem); } + +template <> +void FE<3,LAGRANGE_GLL>::compute_constraints (DofConstraints & constraints, + DofMap & dof_map, + const unsigned int variable_number, + const Elem * elem) +{ compute_proj_constraints(constraints, dof_map, variable_number, elem); } +#endif // LIBMESH_ENABLE_AMR + + +} // namespace libMesh diff --git a/src/fe/fe_lagrange_gll_shape_0D.C b/src/fe/fe_lagrange_gll_shape_0D.C index 6a7cb0abe0..1fe3cd9967 100644 --- a/src/fe/fe_lagrange_gll_shape_0D.C +++ b/src/fe/fe_lagrange_gll_shape_0D.C @@ -25,8 +25,8 @@ namespace libMesh { - LIBMESH_DEFAULT_VECTORIZED_FE(0,L2_LAGRANGE_GLL) +LIBMESH_DEFAULT_VECTORIZED_FE(0,LAGRANGE_GLL) template <> @@ -64,6 +64,41 @@ Real FE<0,L2_LAGRANGE_GLL>::shape(const FEType, } +template <> +Real FE<0,LAGRANGE_GLL>::shape(const ElemType, + const Order, + const unsigned int libmesh_dbg_var(i), + const Point &) +{ + libmesh_assert_less (i, 1); + return 1.; +} + + +template <> +Real FE<0,LAGRANGE_GLL>::shape(const Elem *, + const Order, + const unsigned int libmesh_dbg_var(i), + const Point &, + const bool) +{ + libmesh_assert_less (i, 1); + return 1.; +} + + +template <> +Real FE<0,LAGRANGE_GLL>::shape(const FEType, + const Elem *, + const unsigned int libmesh_dbg_var(i), + const Point &, + const bool) +{ + libmesh_assert_less (i, 1); + return 1.; +} + + template <> Real FE<0,L2_LAGRANGE_GLL>::shape_deriv(const ElemType, const Order, @@ -102,6 +137,44 @@ Real FE<0,L2_LAGRANGE_GLL>::shape_deriv(const FEType, } +template <> +Real FE<0,LAGRANGE_GLL>::shape_deriv(const ElemType, + const Order, + const unsigned int, + const unsigned int, + const Point &) +{ + libmesh_error_msg("No spatial derivatives in 0D!"); + return 0.; +} + + +template <> +Real FE<0,LAGRANGE_GLL>::shape_deriv(const Elem *, + const Order, + const unsigned int, + const unsigned int, + const Point &, + const bool) +{ + libmesh_error_msg("No spatial derivatives in 0D!"); + return 0.; +} + + +template <> +Real FE<0,LAGRANGE_GLL>::shape_deriv(const FEType, + const Elem *, + const unsigned int, + const unsigned int, + const Point &, + const bool) +{ + libmesh_error_msg("No spatial derivatives in 0D!"); + return 0.; +} + + #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES template <> @@ -142,6 +215,44 @@ Real FE<0,L2_LAGRANGE_GLL>::shape_second_deriv(const FEType, } +template <> +Real FE<0,LAGRANGE_GLL>::shape_second_deriv(const ElemType, + const Order, + const unsigned int, + const unsigned int, + const Point &) +{ + libmesh_error_msg("No spatial derivatives in 0D!"); + return 0.; +} + + +template <> +Real FE<0,LAGRANGE_GLL>::shape_second_deriv(const Elem *, + const Order, + const unsigned int, + const unsigned int, + const Point &, + const bool) +{ + libmesh_error_msg("No spatial derivatives in 0D!"); + return 0.; +} + + +template <> +Real FE<0,LAGRANGE_GLL>::shape_second_deriv(const FEType, + const Elem *, + const unsigned int, + const unsigned int, + const Point &, + const bool) +{ + libmesh_error_msg("No spatial derivatives in 0D!"); + return 0.; +} + + #endif // LIBMESH_ENABLE_SECOND_DERIVATIVES } // namespace libMesh diff --git a/src/fe/fe_lagrange_gll_shape_1D.C b/src/fe/fe_lagrange_gll_shape_1D.C index 8f2b4baa3c..1503d6d08c 100644 --- a/src/fe/fe_lagrange_gll_shape_1D.C +++ b/src/fe/fe_lagrange_gll_shape_1D.C @@ -26,8 +26,8 @@ namespace libMesh { - LIBMESH_DEFAULT_VECTORIZED_FE(1,L2_LAGRANGE_GLL) +LIBMESH_DEFAULT_VECTORIZED_FE(1,LAGRANGE_GLL) template <> @@ -115,6 +115,91 @@ Real FE<1,L2_LAGRANGE_GLL>::shape_deriv(const FEType fet, } +template <> +Real FE<1,LAGRANGE_GLL>::shape(const ElemType, + const Order, + const unsigned int, + const Point &) +{ + libmesh_error_msg("The LAGRANGE_GLL shape functions follow the orientation of the " + "entity owning each degree of freedom, so they need an Elem."); + return 0.; +} + + +template <> +Real FE<1,LAGRANGE_GLL>::shape(const Elem * elem, + const Order order, + const unsigned int i, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, nullptr, 0); +} + + +template <> +Real FE<1,LAGRANGE_GLL>::shape(const FEType fet, + const Elem * elem, + const unsigned int i, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, nullptr, 0); +} + + +template <> +Real FE<1,LAGRANGE_GLL>::shape_deriv(const ElemType, + const Order, + const unsigned int, + const unsigned int, + const Point &) +{ + libmesh_error_msg("The LAGRANGE_GLL shape functions follow the orientation of the " + "entity owning each degree of freedom, so they need an Elem."); + return 0.; +} + + +template <> +Real FE<1,LAGRANGE_GLL>::shape_deriv(const Elem * elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 1); + + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, &j, 1); +} + + +template <> +Real FE<1,LAGRANGE_GLL>::shape_deriv(const FEType fet, + const Elem * elem, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 1); + + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, &j, 1); +} + + #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES template <> @@ -163,6 +248,51 @@ Real FE<1,L2_LAGRANGE_GLL>::shape_second_deriv(const FEType fet, } +template <> +Real FE<1,LAGRANGE_GLL>::shape_second_deriv(const ElemType, + const Order, + const unsigned int, + const unsigned int, + const Point &) +{ + libmesh_error_msg("The LAGRANGE_GLL shape functions follow the orientation of the " + "entity owning each degree of freedom, so they need an Elem."); + return 0.; +} + + +template <> +Real FE<1,LAGRANGE_GLL>::shape_second_deriv(const Elem * elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<1>()); + + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); +} + + +template <> +Real FE<1,LAGRANGE_GLL>::shape_second_deriv(const FEType fet, + const Elem * elem, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<1>()); + + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); +} + + #endif // LIBMESH_ENABLE_SECOND_DERIVATIVES } // namespace libMesh diff --git a/src/fe/fe_lagrange_gll_shape_2D.C b/src/fe/fe_lagrange_gll_shape_2D.C index b1803b3698..b929e3fb95 100644 --- a/src/fe/fe_lagrange_gll_shape_2D.C +++ b/src/fe/fe_lagrange_gll_shape_2D.C @@ -26,8 +26,8 @@ namespace libMesh { - LIBMESH_DEFAULT_VECTORIZED_FE(2,L2_LAGRANGE_GLL) +LIBMESH_DEFAULT_VECTORIZED_FE(2,LAGRANGE_GLL) template <> @@ -115,6 +115,91 @@ Real FE<2,L2_LAGRANGE_GLL>::shape_deriv(const FEType fet, } +template <> +Real FE<2,LAGRANGE_GLL>::shape(const ElemType, + const Order, + const unsigned int, + const Point &) +{ + libmesh_error_msg("The LAGRANGE_GLL shape functions follow the orientation of the " + "entity owning each degree of freedom, so they need an Elem."); + return 0.; +} + + +template <> +Real FE<2,LAGRANGE_GLL>::shape(const Elem * elem, + const Order order, + const unsigned int i, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, nullptr, 0); +} + + +template <> +Real FE<2,LAGRANGE_GLL>::shape(const FEType fet, + const Elem * elem, + const unsigned int i, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, nullptr, 0); +} + + +template <> +Real FE<2,LAGRANGE_GLL>::shape_deriv(const ElemType, + const Order, + const unsigned int, + const unsigned int, + const Point &) +{ + libmesh_error_msg("The LAGRANGE_GLL shape functions follow the orientation of the " + "entity owning each degree of freedom, so they need an Elem."); + return 0.; +} + + +template <> +Real FE<2,LAGRANGE_GLL>::shape_deriv(const Elem * elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 2); + + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, &j, 1); +} + + +template <> +Real FE<2,LAGRANGE_GLL>::shape_deriv(const FEType fet, + const Elem * elem, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 2); + + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, &j, 1); +} + + #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES template <> @@ -163,6 +248,51 @@ Real FE<2,L2_LAGRANGE_GLL>::shape_second_deriv(const FEType fet, } +template <> +Real FE<2,LAGRANGE_GLL>::shape_second_deriv(const ElemType, + const Order, + const unsigned int, + const unsigned int, + const Point &) +{ + libmesh_error_msg("The LAGRANGE_GLL shape functions follow the orientation of the " + "entity owning each degree of freedom, so they need an Elem."); + return 0.; +} + + +template <> +Real FE<2,LAGRANGE_GLL>::shape_second_deriv(const Elem * elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<2>()); + + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); +} + + +template <> +Real FE<2,LAGRANGE_GLL>::shape_second_deriv(const FEType fet, + const Elem * elem, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<2>()); + + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); +} + + #endif // LIBMESH_ENABLE_SECOND_DERIVATIVES } // namespace libMesh diff --git a/src/fe/fe_lagrange_gll_shape_3D.C b/src/fe/fe_lagrange_gll_shape_3D.C index 31c95105c0..d6b641fda9 100644 --- a/src/fe/fe_lagrange_gll_shape_3D.C +++ b/src/fe/fe_lagrange_gll_shape_3D.C @@ -26,8 +26,8 @@ namespace libMesh { - LIBMESH_DEFAULT_VECTORIZED_FE(3,L2_LAGRANGE_GLL) +LIBMESH_DEFAULT_VECTORIZED_FE(3,LAGRANGE_GLL) template <> @@ -115,6 +115,91 @@ Real FE<3,L2_LAGRANGE_GLL>::shape_deriv(const FEType fet, } +template <> +Real FE<3,LAGRANGE_GLL>::shape(const ElemType, + const Order, + const unsigned int, + const Point &) +{ + libmesh_error_msg("The LAGRANGE_GLL shape functions follow the orientation of the " + "entity owning each degree of freedom, so they need an Elem."); + return 0.; +} + + +template <> +Real FE<3,LAGRANGE_GLL>::shape(const Elem * elem, + const Order order, + const unsigned int i, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, nullptr, 0); +} + + +template <> +Real FE<3,LAGRANGE_GLL>::shape(const FEType fet, + const Elem * elem, + const unsigned int i, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, nullptr, 0); +} + + +template <> +Real FE<3,LAGRANGE_GLL>::shape_deriv(const ElemType, + const Order, + const unsigned int, + const unsigned int, + const Point &) +{ + libmesh_error_msg("The LAGRANGE_GLL shape functions follow the orientation of the " + "entity owning each degree of freedom, so they need an Elem."); + return 0.; +} + + +template <> +Real FE<3,LAGRANGE_GLL>::shape_deriv(const Elem * elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 3); + + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, &j, 1); +} + + +template <> +Real FE<3,LAGRANGE_GLL>::shape_deriv(const FEType fet, + const Elem * elem, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, 3); + + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, &j, 1); +} + + #ifdef LIBMESH_ENABLE_SECOND_DERIVATIVES template <> @@ -163,6 +248,51 @@ Real FE<3,L2_LAGRANGE_GLL>::shape_second_deriv(const FEType fet, } +template <> +Real FE<3,LAGRANGE_GLL>::shape_second_deriv(const ElemType, + const Order, + const unsigned int, + const unsigned int, + const Point &) +{ + libmesh_error_msg("The LAGRANGE_GLL shape functions follow the orientation of the " + "entity owning each degree of freedom, so they need an Elem."); + return 0.; +} + + +template <> +Real FE<3,LAGRANGE_GLL>::shape_second_deriv(const Elem * elem, + const Order order, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<3>()); + + return fe_lagrange_gll_shape + (elem, order + add_p_level*elem->p_level(), i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); +} + + +template <> +Real FE<3,LAGRANGE_GLL>::shape_second_deriv(const FEType fet, + const Elem * elem, + const unsigned int i, + const unsigned int j, + const Point & p, + const bool add_p_level) +{ + libmesh_assert(elem); + libmesh_assert_less (j, fe_lagrange_gll_n_second_derivs<3>()); + + return fe_lagrange_gll_shape + (elem, fet.order + add_p_level*elem->p_level(), i, p, fe_lagrange_gll_second_deriv_pairs[j], 2); +} + + #endif // LIBMESH_ENABLE_SECOND_DERIVATIVES } // namespace libMesh diff --git a/src/fe/fe_transformation_base.C b/src/fe/fe_transformation_base.C index caeee5dbcf..2ade6f106c 100644 --- a/src/fe/fe_transformation_base.C +++ b/src/fe/fe_transformation_base.C @@ -52,6 +52,7 @@ std::unique_ptr> FETransformationBase(order.get_order()); return std::make_unique(dim, static_cast(2*p - 1 + extraorder)); diff --git a/src/libmesh_SOURCES b/src/libmesh_SOURCES index 95b89dc894..b67cae3541 100644 --- a/src/libmesh_SOURCES +++ b/src/libmesh_SOURCES @@ -67,6 +67,7 @@ libmesh_SOURCES = \ src/fe/fe_l2_lagrange.C \ src/fe/fe_l2_lagrange_gll.C \ src/fe/fe_lagrange.C \ + src/fe/fe_lagrange_gll.C \ src/fe/fe_lagrange_gll_shape_0D.C \ src/fe/fe_lagrange_gll_shape_1D.C \ src/fe/fe_lagrange_gll_shape_2D.C \ diff --git a/src/utils/string_to_enum.C b/src/utils/string_to_enum.C index 1d8609bd96..6eb25055fd 100644 --- a/src/utils/string_to_enum.C +++ b/src/utils/string_to_enum.C @@ -223,6 +223,7 @@ std::map fefamily_to_enum { {"LAGRANGE_VEC" , LAGRANGE_VEC}, {"L2_LAGRANGE" , L2_LAGRANGE}, {"L2_LAGRANGE_VEC" , L2_LAGRANGE_VEC}, + {"LAGRANGE_GLL" , LAGRANGE_GLL}, {"L2_LAGRANGE_GLL" , L2_LAGRANGE_GLL}, {"HIERARCHIC" , HIERARCHIC}, {"HIERARCHIC_VEC" , HIERARCHIC_VEC}, From 46f9d51b6586d6df1319a0f1ea8017ccf4c35b6c Mon Sep 17 00:00:00 2001 From: Alex Lindsay Date: Tue, 15 Sep 2026 10:33:36 -0700 Subject: [PATCH 7/8] Test the LAGRANGE_GLL family The FETest harness covers the shape functions and their first two derivatives at orders one through four, and FEOrientationTest covers what a continuous basis needs beyond that: that the shape functions of a degree of freedom follow the orientation of the one entity owning it, and that two elements sharing a side arrive at the same shape function for a degree of freedom they share. Those are the properties the index map is built to satisfy, and they are held at orders three through five on QUAD9 and HEX27, over a skewed mesh and every permutation of an element, so each of the eight symmetries of a quadrilateral face is reached. The collocation test now runs over both Gauss-Lobatto families. They differ in the order they number their degrees of freedom rather than in where those sit, so the L2 family's matrix of shape function values is the identity while the C0 family's is a permutation of it. What both are held to is that each shape function is one at exactly one point and exactly zero at the rest and that no two claim the same point, which is what the diagonal mass matrix rests on. The mass matrix is still summed the way an assembly loop would sum it, so that the diagonal is a property of that arithmetic rather than one read back from the values just asserted. Co-Authored-By: Claude --- tests/fe/fe_gll_collocation_test.C | 171 +++++++++++++++++++---------- tests/fe/fe_lagrange_gll_test.C | 25 +++++ tests/fe/fe_orientation_test.C | 5 + tests/fe/fe_test.h | 1 + 4 files changed, 145 insertions(+), 57 deletions(-) create mode 100644 tests/fe/fe_lagrange_gll_test.C diff --git a/tests/fe/fe_gll_collocation_test.C b/tests/fe/fe_gll_collocation_test.C index 6e196cb900..811b894d2f 100644 --- a/tests/fe/fe_gll_collocation_test.C +++ b/tests/fe/fe_gll_collocation_test.C @@ -1,12 +1,18 @@ -// A nodal basis whose interpolation points are the points of a quadrature rule is -// collocated with it: each shape function is one at its own point and zero at every other, -// so the matrix of shape function values is the identity and the mass matrix the rule -// assembles is diagonal. The second holds for any mapping and any element shape, since the -// Jacobian only scales a diagonal entry. +// A nodal basis whose interpolation points are the points of a quadrature rule is collocated +// with it: each shape function is one at its own point and zero at every other, so the mass +// matrix that rule assembles is diagonal. That holds for any mapping and any element shape, +// since the Jacobian only scales a diagonal entry, and it holds for both Gauss-Lobatto nodal +// families, which differ in the order they number their degrees of freedom rather than in +// where those degrees of freedom sit. // -// The property is exact rather than approximate, so these tests compare against 1 and 0 -// with no tolerance. That is what the basis reading its points from QGaussLobatto buys: a -// basis that computed its own would agree only to roundoff. +// The L2 family numbers them in the order the rule lays out its points, so its matrix of shape +// function values is the identity. The C0 family numbers them by the entity that owns them, so +// the matrix is a permutation of the identity. What both hold to is that the map from a degree +// of freedom to its point is one to one, which is what the diagonal rests on. +// +// The property is exact rather than approximate, so the tests compare against 1 and 0 with no +// tolerance. That is what the basis reading its points from QGaussLobatto buys: a basis that +// computed its own would agree only to roundoff. #include #include @@ -29,7 +35,7 @@ using namespace libMesh; -template +template class FEGLLCollocationTest : public CppUnit::TestCase { protected: @@ -67,25 +73,59 @@ public: void tearDown() { _mesh.reset(); } - /// The rule the family pairs itself with, which is the one it is collocated with - std::unique_ptr collocated_rule(const FEType & fe_type, const unsigned int dim) + /** + * The point of the collocated rule that each degree of freedom interpolates at, taken from + * the shape function values and holding them to being one there and zero everywhere else. + * + * The L2 family numbers its degrees of freedom in the order the rule lays out its points, so + * this map is the identity for it. The C0 family numbers them by the entity that owns them, + * so the map is a permutation. Either way it is one to one, which is what makes the mass + * matrix diagonal. + */ + std::vector collocation_map(const std::vector> & phi) { - return fe_type.default_quadrature_rule(dim); + std::vector point_of_dof(phi.size(), invalid_uint); + std::vector taken(phi.size(), false); + + for (const auto i : index_range(phi)) + { + CPPUNIT_ASSERT_EQUAL(phi.size(), phi[i].size()); + + for (const auto q : index_range(phi[i])) + { + if (phi[i][q] == 1.) + { + CPPUNIT_ASSERT_EQUAL(invalid_uint, point_of_dof[i]); + point_of_dof[i] = cast_int(q); + } + else + // Exactly zero, not nearly: the basis and the rule carry the same points + CPPUNIT_ASSERT_EQUAL(Real(0), phi[i][q]); + } + + CPPUNIT_ASSERT(point_of_dof[i] != invalid_uint); + + // One degree of freedom per point, so that no point is claimed twice + CPPUNIT_ASSERT(!taken[point_of_dof[i]]); + taken[point_of_dof[i]] = true; + } + + return point_of_dof; } - void testShapesAreIdentity() + void testShapesAreCollocated() { LOG_UNIT_TEST; - const FEType fe_type(order, L2_LAGRANGE_GLL); + const FEType fe_type(order, family); const unsigned int dim = Elem::type_to_dim_map[elem_type]; std::unique_ptr fe = FEBase::build(dim, fe_type); - std::unique_ptr qrule = collocated_rule(fe_type, dim); + std::unique_ptr qrule = fe_type.default_quadrature_rule(dim); fe->attach_quadrature_rule(qrule.get()); - // The accessors have to be reached before reinit, which is what tells the element what - // to compute + // The accessors have to be reached before reinit, which is what tells the element what to + // compute const std::vector> & phi = fe->get_phi(); unsigned int n_elem = 0; @@ -94,12 +134,15 @@ public: { fe->reinit(elem); - // The default rule carries one point per degree of freedom + // The rule carries one point per degree of freedom CPPUNIT_ASSERT_EQUAL(phi.size(), std::size_t(qrule->n_points())); - for (const auto i : index_range(phi)) - for (const auto q : index_range(phi[i])) - CPPUNIT_ASSERT_EQUAL((i == q) ? Real(1) : Real(0), phi[i][q]); + const std::vector point_of_dof = collocation_map(phi); + + // The L2 family also agrees with the rule on the order of the points + if (family == L2_LAGRANGE_GLL) + for (const auto i : index_range(point_of_dof)) + CPPUNIT_ASSERT_EQUAL(cast_int(i), point_of_dof[i]); ++n_elem; } @@ -112,11 +155,11 @@ public: { LOG_UNIT_TEST; - const FEType fe_type(order, L2_LAGRANGE_GLL); + const FEType fe_type(order, family); const unsigned int dim = Elem::type_to_dim_map[elem_type]; std::unique_ptr fe = FEBase::build(dim, fe_type); - std::unique_ptr qrule = collocated_rule(fe_type, dim); + std::unique_ptr qrule = fe_type.default_quadrature_rule(dim); fe->attach_quadrature_rule(qrule.get()); const std::vector> & phi = fe->get_phi(); @@ -126,8 +169,12 @@ public: { fe->reinit(elem); + const std::vector point_of_dof = collocation_map(phi); const std::size_t n_dofs = phi.size(); + // Summed the way an assembly loop would sum it, so that the diagonal is a property of + // the arithmetic that assembles a mass matrix rather than one read back from the shape + // function values the assertions above already hold for (const auto i : make_range(n_dofs)) for (const auto j : make_range(n_dofs)) { @@ -137,11 +184,11 @@ public: if (i == j) { - // A diagonal entry is the weight of its own point times the Jacobian - // there, which is positive on a valid element, so the mass matrix is - // positive definite and its inverse costs a reciprocal per entry + // A diagonal entry is the weight of its own point times the Jacobian there, + // which is positive on a valid element, so the mass matrix is positive + // definite and its inverse costs a reciprocal per entry CPPUNIT_ASSERT(m > 0.); - LIBMESH_ASSERT_FP_EQUAL(JxW[i], m, TOLERANCE*TOLERANCE); + LIBMESH_ASSERT_FP_EQUAL(JxW[point_of_dof[i]], m, TOLERANCE*TOLERANCE); } else CPPUNIT_ASSERT_EQUAL(Real(0), m); @@ -150,39 +197,49 @@ public: } }; -#define INSTANTIATE_FEGLLCOLLOCATIONTEST(elemtype, order) \ - class FEGLLCollocationTest_##order##_##elemtype : \ - public FEGLLCollocationTest { \ - public: \ - FEGLLCollocationTest_##order##_##elemtype() : \ - FEGLLCollocationTest() { \ - if (unitlog->summarized_logs_enabled()) \ - this->libmesh_suite_name = "FEGLLCollocationTest"; \ - else \ - this->libmesh_suite_name = \ - "FEGLLCollocationTest_" #order "_" #elemtype; \ - } \ - CPPUNIT_TEST_SUITE( FEGLLCollocationTest_##order##_##elemtype ); \ - CPPUNIT_TEST( testShapesAreIdentity ); \ - CPPUNIT_TEST( testMassMatrixIsDiagonal ); \ - CPPUNIT_TEST_SUITE_END(); \ - }; \ - \ - CPPUNIT_TEST_SUITE_REGISTRATION( FEGLLCollocationTest_##order##_##elemtype ) - -INSTANTIATE_FEGLLCOLLOCATIONTEST(EDGE2, FIRST); -INSTANTIATE_FEGLLCOLLOCATIONTEST(EDGE3, THIRD); -INSTANTIATE_FEGLLCOLLOCATIONTEST(EDGE3, EIGHTH); +#define INSTANTIATE_FEGLLCOLLOCATIONTEST(elemtype, order, family) \ + class FEGLLCollocationTest_##family##_##order##_##elemtype : \ + public FEGLLCollocationTest { \ + public: \ + FEGLLCollocationTest_##family##_##order##_##elemtype() : \ + FEGLLCollocationTest() { \ + if (unitlog->summarized_logs_enabled()) \ + this->libmesh_suite_name = "FEGLLCollocationTest"; \ + else \ + this->libmesh_suite_name = \ + "FEGLLCollocationTest_" #family "_" #order "_" #elemtype; \ + } \ + CPPUNIT_TEST_SUITE( FEGLLCollocationTest_##family##_##order##_##elemtype ); \ + CPPUNIT_TEST( testShapesAreCollocated ); \ + CPPUNIT_TEST( testMassMatrixIsDiagonal ); \ + CPPUNIT_TEST_SUITE_END(); \ + }; \ + \ + CPPUNIT_TEST_SUITE_REGISTRATION( FEGLLCollocationTest_##family##_##order##_##elemtype ) + +INSTANTIATE_FEGLLCOLLOCATIONTEST(EDGE2, FIRST, L2_LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(EDGE3, THIRD, L2_LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(EDGE3, EIGHTH, L2_LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(EDGE2, FIRST, LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(EDGE3, THIRD, LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(EDGE3, EIGHTH, LAGRANGE_GLL); #if LIBMESH_DIM > 1 -INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD4, FIRST); -INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD9, SECOND); -INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD9, FOURTH); -INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD9, EIGHTH); +INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD4, FIRST, L2_LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD9, SECOND, L2_LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD9, FOURTH, L2_LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD9, EIGHTH, L2_LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD4, FIRST, LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD9, SECOND, LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD9, FOURTH, LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(QUAD9, EIGHTH, LAGRANGE_GLL); #endif #if LIBMESH_DIM > 2 -INSTANTIATE_FEGLLCOLLOCATIONTEST(HEX8, FIRST); -INSTANTIATE_FEGLLCOLLOCATIONTEST(HEX27, SECOND); -INSTANTIATE_FEGLLCOLLOCATIONTEST(HEX27, FOURTH); +INSTANTIATE_FEGLLCOLLOCATIONTEST(HEX8, FIRST, L2_LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(HEX27, SECOND, L2_LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(HEX27, FOURTH, L2_LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(HEX8, FIRST, LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(HEX27, SECOND, LAGRANGE_GLL); +INSTANTIATE_FEGLLCOLLOCATIONTEST(HEX27, FOURTH, LAGRANGE_GLL); #endif diff --git a/tests/fe/fe_lagrange_gll_test.C b/tests/fe/fe_lagrange_gll_test.C new file mode 100644 index 0000000000..5ff6c48f17 --- /dev/null +++ b/tests/fe/fe_lagrange_gll_test.C @@ -0,0 +1,25 @@ +#include "fe_test.h" + +// The C0 Gauss-Lobatto basis needs a node for each entity that owns degrees of freedom, so +// order two and above wants mid-edge nodes in two dimensions and face nodes as well in three. + +INSTANTIATE_FETEST(FIRST, LAGRANGE_GLL, EDGE2); +INSTANTIATE_FETEST(SECOND, LAGRANGE_GLL, EDGE2); +INSTANTIATE_FETEST(SECOND, LAGRANGE_GLL, EDGE3); +INSTANTIATE_FETEST(THIRD, LAGRANGE_GLL, EDGE3); +INSTANTIATE_FETEST(FOURTH, LAGRANGE_GLL, EDGE3); + +#if LIBMESH_DIM > 1 +INSTANTIATE_FETEST(FIRST, LAGRANGE_GLL, QUAD4); +INSTANTIATE_FETEST(SECOND, LAGRANGE_GLL, QUAD8); +INSTANTIATE_FETEST(SECOND, LAGRANGE_GLL, QUAD9); +INSTANTIATE_FETEST(THIRD, LAGRANGE_GLL, QUAD9); +INSTANTIATE_FETEST(FOURTH, LAGRANGE_GLL, QUAD9); +#endif + +#if LIBMESH_DIM > 2 +INSTANTIATE_FETEST(FIRST, LAGRANGE_GLL, HEX8); +INSTANTIATE_FETEST(SECOND, LAGRANGE_GLL, HEX27); +INSTANTIATE_FETEST(THIRD, LAGRANGE_GLL, HEX27); +INSTANTIATE_FETEST(FOURTH, LAGRANGE_GLL, HEX27); +#endif diff --git a/tests/fe/fe_orientation_test.C b/tests/fe/fe_orientation_test.C index 220bff534e..b27902479d 100644 --- a/tests/fe/fe_orientation_test.C +++ b/tests/fe/fe_orientation_test.C @@ -350,10 +350,15 @@ public: INSTANTIATE_FEORIENTATIONTEST(TRI6, THIRD, HIERARCHIC); INSTANTIATE_FEORIENTATIONTEST(QUAD9, THIRD, HIERARCHIC); +INSTANTIATE_FEORIENTATIONTEST(QUAD9, THIRD, LAGRANGE_GLL); +INSTANTIATE_FEORIENTATIONTEST(QUAD9, FOURTH, LAGRANGE_GLL); INSTANTIATE_FEORIENTATIONTEST(TET14, THIRD, HIERARCHIC); INSTANTIATE_FEORIENTATIONTEST(TET14, FOURTH, HIERARCHIC); INSTANTIATE_FEORIENTATIONTEST(HEX27, THIRD, HIERARCHIC); INSTANTIATE_FEORIENTATIONTEST(HEX27, FOURTH, HIERARCHIC); +INSTANTIATE_FEORIENTATIONTEST(HEX27, THIRD, LAGRANGE_GLL); +INSTANTIATE_FEORIENTATIONTEST(HEX27, FOURTH, LAGRANGE_GLL); +INSTANTIATE_FEORIENTATIONTEST(HEX27, FIFTH, LAGRANGE_GLL); INSTANTIATE_FEORIENTATIONTEST(PRISM21, THIRD, HIERARCHIC); INSTANTIATE_FEORIENTATIONTEST(PRISM21, FOURTH, HIERARCHIC); INSTANTIATE_FECONFORMITYTEST(HEX27, THIRD, SIDE_HIERARCHIC); diff --git a/tests/fe/fe_test.h b/tests/fe/fe_test.h index adcc1a9901..10818b5af3 100644 --- a/tests/fe/fe_test.h +++ b/tests/fe/fe_test.h @@ -814,6 +814,7 @@ class FETest : public FETestBase { case LAGRANGE: case L2_LAGRANGE: + case LAGRANGE_GLL: case L2_LAGRANGE_GLL: case BERNSTEIN: case RATIONAL_BERNSTEIN: From 03feac663aab8ff52402948158d05498a91c904f Mon Sep 17 00:00:00 2001 From: Alex Lindsay Date: Tue, 15 Sep 2026 10:33:47 -0700 Subject: [PATCH 8/8] Test that a hanging node leaves a basis holding its own polynomials A conforming basis on an adaptively refined mesh needs the degrees of freedom on a hanging node constrained to the coarse side they lie on. Nothing here exercised that machinery for any family, and it is invisible on a conforming mesh, so a family could carry the wrong answer for extra_hanging_dofs and every existing test would still pass. This holds the constrained space to containing the polynomials of its own order, which it must, since a polynomial that smooth is continuous across the interface and so already conforms. Projecting one onto the space therefore reproduces it, and a wrong constraint shows up as a solution that no longer does, because enforcing it moves the hanging degrees of freedom off the values that interpolate the polynomial. LAGRANGE is the control: its constraints are long settled, so a failure there would be this test's fault rather than a family's. HIERARCHIC covers the other family allocating a separate degree of freedom at a hanging node, and LAGRANGE_GLL is what the test was written for. Setting that family's extra_hanging_dofs back to false fails exactly its three cases and leaves the other four passing, so the test does discriminate. Co-Authored-By: Claude --- tests/Makefile.am | 2 + tests/Makefile.in | 246 ++++++++++++++++++++++++++++-- tests/fe/fe_amr_constraint_test.C | 168 ++++++++++++++++++++ 3 files changed, 404 insertions(+), 12 deletions(-) create mode 100644 tests/fe/fe_amr_constraint_test.C diff --git a/tests/Makefile.am b/tests/Makefile.am index 359bb0b8a6..957860e05e 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -36,8 +36,10 @@ unit_tests_sources = \ fe/fe_l2_hierarchic_test.C \ fe/fe_l2_lagrange_test.C \ fe/fe_l2_lagrange_gll_test.C \ + fe/fe_lagrange_gll_test.C \ fe/fe_gll_collocation_test.C \ fe/fe_gll_lagrange_agreement_test.C \ + fe/fe_amr_constraint_test.C \ fe/fe_lagrange_test.C \ fe/fe_monomial_test.C \ fe/fe_rational_map.C \ diff --git a/tests/Makefile.in b/tests/Makefile.in index 49611acfc8..da6bdcbd93 100644 --- a/tests/Makefile.in +++ b/tests/Makefile.in @@ -218,8 +218,10 @@ am__unit_tests_dbg_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_hermite_test.C fe/fe_hierarchic_test.C \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ - fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ - fe/fe_gll_lagrange_agreement_test.C fe/fe_lagrange_test.C \ + fe/fe_l2_lagrange_gll_test.C fe/fe_lagrange_gll_test.C \ + fe/fe_gll_collocation_test.C \ + fe/fe_gll_lagrange_agreement_test.C \ + fe/fe_amr_constraint_test.C fe/fe_lagrange_test.C \ fe/fe_monomial_test.C fe/fe_rational_map.C \ fe/fe_rational_test.C fe/fe_side_test.C fe/fe_szabab_test.C \ fe/fe_test.h fe/fe_xyz_test.C \ @@ -308,8 +310,10 @@ am__objects_2 = unit_tests_dbg-driver.$(OBJEXT) \ fe/unit_tests_dbg-fe_l2_hierarchic_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_l2_lagrange_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_l2_lagrange_gll_test.$(OBJEXT) \ + fe/unit_tests_dbg-fe_lagrange_gll_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_gll_collocation_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.$(OBJEXT) \ + fe/unit_tests_dbg-fe_amr_constraint_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_dbg-fe_rational_map.$(OBJEXT) \ @@ -441,8 +445,10 @@ am__unit_tests_devel_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_hermite_test.C fe/fe_hierarchic_test.C \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ - fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ - fe/fe_gll_lagrange_agreement_test.C fe/fe_lagrange_test.C \ + fe/fe_l2_lagrange_gll_test.C fe/fe_lagrange_gll_test.C \ + fe/fe_gll_collocation_test.C \ + fe/fe_gll_lagrange_agreement_test.C \ + fe/fe_amr_constraint_test.C fe/fe_lagrange_test.C \ fe/fe_monomial_test.C fe/fe_rational_map.C \ fe/fe_rational_test.C fe/fe_side_test.C fe/fe_szabab_test.C \ fe/fe_test.h fe/fe_xyz_test.C \ @@ -530,8 +536,10 @@ am__objects_4 = unit_tests_devel-driver.$(OBJEXT) \ fe/unit_tests_devel-fe_l2_hierarchic_test.$(OBJEXT) \ fe/unit_tests_devel-fe_l2_lagrange_test.$(OBJEXT) \ fe/unit_tests_devel-fe_l2_lagrange_gll_test.$(OBJEXT) \ + fe/unit_tests_devel-fe_lagrange_gll_test.$(OBJEXT) \ fe/unit_tests_devel-fe_gll_collocation_test.$(OBJEXT) \ fe/unit_tests_devel-fe_gll_lagrange_agreement_test.$(OBJEXT) \ + fe/unit_tests_devel-fe_amr_constraint_test.$(OBJEXT) \ fe/unit_tests_devel-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_devel-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_devel-fe_rational_map.$(OBJEXT) \ @@ -681,8 +689,10 @@ am__unit_tests_oprof_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_hermite_test.C fe/fe_hierarchic_test.C \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ - fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ - fe/fe_gll_lagrange_agreement_test.C fe/fe_lagrange_test.C \ + fe/fe_l2_lagrange_gll_test.C fe/fe_lagrange_gll_test.C \ + fe/fe_gll_collocation_test.C \ + fe/fe_gll_lagrange_agreement_test.C \ + fe/fe_amr_constraint_test.C fe/fe_lagrange_test.C \ fe/fe_monomial_test.C fe/fe_rational_map.C \ fe/fe_rational_test.C fe/fe_side_test.C fe/fe_szabab_test.C \ fe/fe_test.h fe/fe_xyz_test.C \ @@ -770,8 +780,10 @@ am__objects_6 = unit_tests_oprof-driver.$(OBJEXT) \ fe/unit_tests_oprof-fe_l2_hierarchic_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_l2_lagrange_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_l2_lagrange_gll_test.$(OBJEXT) \ + fe/unit_tests_oprof-fe_lagrange_gll_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_gll_collocation_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.$(OBJEXT) \ + fe/unit_tests_oprof-fe_amr_constraint_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_oprof-fe_rational_map.$(OBJEXT) \ @@ -899,8 +911,10 @@ am__unit_tests_opt_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_hermite_test.C fe/fe_hierarchic_test.C \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ - fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ - fe/fe_gll_lagrange_agreement_test.C fe/fe_lagrange_test.C \ + fe/fe_l2_lagrange_gll_test.C fe/fe_lagrange_gll_test.C \ + fe/fe_gll_collocation_test.C \ + fe/fe_gll_lagrange_agreement_test.C \ + fe/fe_amr_constraint_test.C fe/fe_lagrange_test.C \ fe/fe_monomial_test.C fe/fe_rational_map.C \ fe/fe_rational_test.C fe/fe_side_test.C fe/fe_szabab_test.C \ fe/fe_test.h fe/fe_xyz_test.C \ @@ -988,8 +1002,10 @@ am__objects_8 = unit_tests_opt-driver.$(OBJEXT) \ fe/unit_tests_opt-fe_l2_hierarchic_test.$(OBJEXT) \ fe/unit_tests_opt-fe_l2_lagrange_test.$(OBJEXT) \ fe/unit_tests_opt-fe_l2_lagrange_gll_test.$(OBJEXT) \ + fe/unit_tests_opt-fe_lagrange_gll_test.$(OBJEXT) \ fe/unit_tests_opt-fe_gll_collocation_test.$(OBJEXT) \ fe/unit_tests_opt-fe_gll_lagrange_agreement_test.$(OBJEXT) \ + fe/unit_tests_opt-fe_amr_constraint_test.$(OBJEXT) \ fe/unit_tests_opt-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_opt-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_opt-fe_rational_map.$(OBJEXT) \ @@ -1117,8 +1133,10 @@ am__unit_tests_prof_SOURCES_DIST = driver.C libmesh_cppunit.h \ fe/fe_hermite_test.C fe/fe_hierarchic_test.C \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ - fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ - fe/fe_gll_lagrange_agreement_test.C fe/fe_lagrange_test.C \ + fe/fe_l2_lagrange_gll_test.C fe/fe_lagrange_gll_test.C \ + fe/fe_gll_collocation_test.C \ + fe/fe_gll_lagrange_agreement_test.C \ + fe/fe_amr_constraint_test.C fe/fe_lagrange_test.C \ fe/fe_monomial_test.C fe/fe_rational_map.C \ fe/fe_rational_test.C fe/fe_side_test.C fe/fe_szabab_test.C \ fe/fe_test.h fe/fe_xyz_test.C \ @@ -1206,8 +1224,10 @@ am__objects_10 = unit_tests_prof-driver.$(OBJEXT) \ fe/unit_tests_prof-fe_l2_hierarchic_test.$(OBJEXT) \ fe/unit_tests_prof-fe_l2_lagrange_test.$(OBJEXT) \ fe/unit_tests_prof-fe_l2_lagrange_gll_test.$(OBJEXT) \ + fe/unit_tests_prof-fe_lagrange_gll_test.$(OBJEXT) \ fe/unit_tests_prof-fe_gll_collocation_test.$(OBJEXT) \ fe/unit_tests_prof-fe_gll_lagrange_agreement_test.$(OBJEXT) \ + fe/unit_tests_prof-fe_amr_constraint_test.$(OBJEXT) \ fe/unit_tests_prof-fe_lagrange_test.$(OBJEXT) \ fe/unit_tests_prof-fe_monomial_test.$(OBJEXT) \ fe/unit_tests_prof-fe_rational_map.$(OBJEXT) \ @@ -1380,6 +1400,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ base/$(DEPDIR)/unit_tests_prof-overlapping_coupling_test.Po \ base/$(DEPDIR)/unit_tests_prof-point_neighbor_coupling_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-dual_shape_verification_test.Po \ + fe/$(DEPDIR)/unit_tests_dbg-fe_amr_constraint_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_clough_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po \ @@ -1390,6 +1411,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_l2_hierarchic_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_test.Po \ + fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_monomial_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_orientation_test.Po \ @@ -1400,6 +1422,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_dbg-fe_xyz_test.Po \ fe/$(DEPDIR)/unit_tests_dbg-inf_fe_radial_test.Po \ fe/$(DEPDIR)/unit_tests_devel-dual_shape_verification_test.Po \ + fe/$(DEPDIR)/unit_tests_devel-fe_amr_constraint_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_clough_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po \ @@ -1410,6 +1433,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_l2_hierarchic_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_test.Po \ + fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_monomial_test.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_orientation_test.Po \ @@ -1420,6 +1444,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_devel-fe_xyz_test.Po \ fe/$(DEPDIR)/unit_tests_devel-inf_fe_radial_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-dual_shape_verification_test.Po \ + fe/$(DEPDIR)/unit_tests_oprof-fe_amr_constraint_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_clough_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po \ @@ -1430,6 +1455,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_l2_hierarchic_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_test.Po \ + fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_monomial_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_orientation_test.Po \ @@ -1440,6 +1466,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_oprof-fe_xyz_test.Po \ fe/$(DEPDIR)/unit_tests_oprof-inf_fe_radial_test.Po \ fe/$(DEPDIR)/unit_tests_opt-dual_shape_verification_test.Po \ + fe/$(DEPDIR)/unit_tests_opt-fe_amr_constraint_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_clough_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po \ @@ -1450,6 +1477,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_l2_hierarchic_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_test.Po \ + fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_monomial_test.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_orientation_test.Po \ @@ -1460,6 +1488,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_opt-fe_xyz_test.Po \ fe/$(DEPDIR)/unit_tests_opt-inf_fe_radial_test.Po \ fe/$(DEPDIR)/unit_tests_prof-dual_shape_verification_test.Po \ + fe/$(DEPDIR)/unit_tests_prof-fe_amr_constraint_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_bernstein_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_clough_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po \ @@ -1470,6 +1499,7 @@ am__depfiles_remade = ./$(DEPDIR)/unit_tests_dbg-driver.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_l2_hierarchic_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_test.Po \ + fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_gll_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_monomial_test.Po \ fe/$(DEPDIR)/unit_tests_prof-fe_orientation_test.Po \ @@ -2499,8 +2529,10 @@ unit_tests_sources = driver.C libmesh_cppunit.h stream_redirector.h \ fe/fe_hermite_test.C fe/fe_hierarchic_test.C \ fe/fe_orientation_test.C fe/inf_fe_radial_test.C \ fe/fe_l2_hierarchic_test.C fe/fe_l2_lagrange_test.C \ - fe/fe_l2_lagrange_gll_test.C fe/fe_gll_collocation_test.C \ - fe/fe_gll_lagrange_agreement_test.C fe/fe_lagrange_test.C \ + fe/fe_l2_lagrange_gll_test.C fe/fe_lagrange_gll_test.C \ + fe/fe_gll_collocation_test.C \ + fe/fe_gll_lagrange_agreement_test.C \ + fe/fe_amr_constraint_test.C fe/fe_lagrange_test.C \ fe/fe_monomial_test.C fe/fe_rational_map.C \ fe/fe_rational_test.C fe/fe_side_test.C fe/fe_szabab_test.C \ fe/fe_test.h fe/fe_xyz_test.C \ @@ -2865,10 +2897,14 @@ fe/unit_tests_dbg-fe_l2_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_dbg-fe_l2_lagrange_gll_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_dbg-fe_lagrange_gll_test.$(OBJEXT): fe/$(am__dirstamp) \ + fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_dbg-fe_gll_collocation_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_dbg-fe_amr_constraint_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_dbg-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_dbg-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -3195,10 +3231,14 @@ fe/unit_tests_devel-fe_l2_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_devel-fe_l2_lagrange_gll_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_devel-fe_lagrange_gll_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_devel-fe_gll_collocation_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_devel-fe_gll_lagrange_agreement_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_devel-fe_amr_constraint_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_devel-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_devel-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -3505,10 +3545,14 @@ fe/unit_tests_oprof-fe_l2_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_oprof-fe_l2_lagrange_gll_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_oprof-fe_lagrange_gll_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_oprof-fe_gll_collocation_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_oprof-fe_amr_constraint_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_oprof-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_oprof-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -3775,10 +3819,14 @@ fe/unit_tests_opt-fe_l2_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_opt-fe_l2_lagrange_gll_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_opt-fe_lagrange_gll_test.$(OBJEXT): fe/$(am__dirstamp) \ + fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_opt-fe_gll_collocation_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_opt-fe_gll_lagrange_agreement_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_opt-fe_amr_constraint_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_opt-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_opt-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -4045,10 +4093,14 @@ fe/unit_tests_prof-fe_l2_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_prof-fe_l2_lagrange_gll_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_prof-fe_lagrange_gll_test.$(OBJEXT): fe/$(am__dirstamp) \ + fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_prof-fe_gll_collocation_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_prof-fe_gll_lagrange_agreement_test.$(OBJEXT): \ fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) +fe/unit_tests_prof-fe_amr_constraint_test.$(OBJEXT): \ + fe/$(am__dirstamp) fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_prof-fe_lagrange_test.$(OBJEXT): fe/$(am__dirstamp) \ fe/$(DEPDIR)/$(am__dirstamp) fe/unit_tests_prof-fe_monomial_test.$(OBJEXT): fe/$(am__dirstamp) \ @@ -4341,6 +4393,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@base/$(DEPDIR)/unit_tests_prof-overlapping_coupling_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@base/$(DEPDIR)/unit_tests_prof-point_neighbor_coupling_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-dual_shape_verification_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_amr_constraint_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_clough_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po@am__quote@ # am--include-marker @@ -4351,6 +4404,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_l2_hierarchic_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_monomial_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_orientation_test.Po@am__quote@ # am--include-marker @@ -4361,6 +4415,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-fe_xyz_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_dbg-inf_fe_radial_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-dual_shape_verification_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_amr_constraint_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_clough_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po@am__quote@ # am--include-marker @@ -4371,6 +4426,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_l2_hierarchic_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_monomial_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_orientation_test.Po@am__quote@ # am--include-marker @@ -4381,6 +4437,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-fe_xyz_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_devel-inf_fe_radial_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-dual_shape_verification_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_amr_constraint_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_clough_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po@am__quote@ # am--include-marker @@ -4391,6 +4448,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_l2_hierarchic_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_monomial_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_orientation_test.Po@am__quote@ # am--include-marker @@ -4401,6 +4459,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-fe_xyz_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_oprof-inf_fe_radial_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-dual_shape_verification_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_amr_constraint_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_clough_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po@am__quote@ # am--include-marker @@ -4411,6 +4470,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_l2_hierarchic_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_monomial_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_orientation_test.Po@am__quote@ # am--include-marker @@ -4421,6 +4481,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-fe_xyz_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_opt-inf_fe_radial_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-dual_shape_verification_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_amr_constraint_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_bernstein_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_clough_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po@am__quote@ # am--include-marker @@ -4431,6 +4492,7 @@ distclean-compile: @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_l2_hierarchic_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_test.Po@am__quote@ # am--include-marker +@AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_gll_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_monomial_test.Po@am__quote@ # am--include-marker @AMDEP_TRUE@@am__include@ @am__quote@fe/$(DEPDIR)/unit_tests_prof-fe_orientation_test.Po@am__quote@ # am--include-marker @@ -5233,6 +5295,20 @@ fe/unit_tests_dbg-fe_l2_lagrange_gll_test.obj: fe/fe_l2_lagrange_gll_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 fe/unit_tests_dbg-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` +fe/unit_tests_dbg-fe_lagrange_gll_test.o: fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_lagrange_gll_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_gll_test.Tpo -c -o fe/unit_tests_dbg-fe_lagrange_gll_test.o `test -f 'fe/fe_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_lagrange_gll_test.C' object='fe/unit_tests_dbg-fe_lagrange_gll_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 fe/unit_tests_dbg-fe_lagrange_gll_test.o `test -f 'fe/fe_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_gll_test.C + +fe/unit_tests_dbg-fe_lagrange_gll_test.obj: fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_lagrange_gll_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_gll_test.Tpo -c -o fe/unit_tests_dbg-fe_lagrange_gll_test.obj `if test -f 'fe/fe_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_lagrange_gll_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_lagrange_gll_test.C' object='fe/unit_tests_dbg-fe_lagrange_gll_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 fe/unit_tests_dbg-fe_lagrange_gll_test.obj `if test -f 'fe/fe_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_lagrange_gll_test.C'; fi` + fe/unit_tests_dbg-fe_gll_collocation_test.o: fe/fe_gll_collocation_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_gll_collocation_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_dbg-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po @@ -5261,6 +5337,20 @@ fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.obj: fe/fe_gll_lagrange_agreeme @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 fe/unit_tests_dbg-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` +fe/unit_tests_dbg-fe_amr_constraint_test.o: fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_amr_constraint_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_amr_constraint_test.Tpo -c -o fe/unit_tests_dbg-fe_amr_constraint_test.o `test -f 'fe/fe_amr_constraint_test.C' || echo '$(srcdir)/'`fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_amr_constraint_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_amr_constraint_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_amr_constraint_test.C' object='fe/unit_tests_dbg-fe_amr_constraint_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 fe/unit_tests_dbg-fe_amr_constraint_test.o `test -f 'fe/fe_amr_constraint_test.C' || echo '$(srcdir)/'`fe/fe_amr_constraint_test.C + +fe/unit_tests_dbg-fe_amr_constraint_test.obj: fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_amr_constraint_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_amr_constraint_test.Tpo -c -o fe/unit_tests_dbg-fe_amr_constraint_test.obj `if test -f 'fe/fe_amr_constraint_test.C'; then $(CYGPATH_W) 'fe/fe_amr_constraint_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_amr_constraint_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_amr_constraint_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_amr_constraint_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_amr_constraint_test.C' object='fe/unit_tests_dbg-fe_amr_constraint_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 fe/unit_tests_dbg-fe_amr_constraint_test.obj `if test -f 'fe/fe_amr_constraint_test.C'; then $(CYGPATH_W) 'fe/fe_amr_constraint_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_amr_constraint_test.C'; fi` + fe/unit_tests_dbg-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_dbg_CPPFLAGS) $(CPPFLAGS) $(unit_tests_dbg_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_dbg-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Tpo -c -o fe/unit_tests_dbg-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Po @@ -7053,6 +7143,20 @@ fe/unit_tests_devel-fe_l2_lagrange_gll_test.obj: fe/fe_l2_lagrange_gll_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 fe/unit_tests_devel-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` +fe/unit_tests_devel-fe_lagrange_gll_test.o: fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_lagrange_gll_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_gll_test.Tpo -c -o fe/unit_tests_devel-fe_lagrange_gll_test.o `test -f 'fe/fe_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_lagrange_gll_test.C' object='fe/unit_tests_devel-fe_lagrange_gll_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 fe/unit_tests_devel-fe_lagrange_gll_test.o `test -f 'fe/fe_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_gll_test.C + +fe/unit_tests_devel-fe_lagrange_gll_test.obj: fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_lagrange_gll_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_gll_test.Tpo -c -o fe/unit_tests_devel-fe_lagrange_gll_test.obj `if test -f 'fe/fe_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_lagrange_gll_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_lagrange_gll_test.C' object='fe/unit_tests_devel-fe_lagrange_gll_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 fe/unit_tests_devel-fe_lagrange_gll_test.obj `if test -f 'fe/fe_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_lagrange_gll_test.C'; fi` + fe/unit_tests_devel-fe_gll_collocation_test.o: fe/fe_gll_collocation_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_gll_collocation_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_devel-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po @@ -7081,6 +7185,20 @@ fe/unit_tests_devel-fe_gll_lagrange_agreement_test.obj: fe/fe_gll_lagrange_agree @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 fe/unit_tests_devel-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` +fe/unit_tests_devel-fe_amr_constraint_test.o: fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_amr_constraint_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_amr_constraint_test.Tpo -c -o fe/unit_tests_devel-fe_amr_constraint_test.o `test -f 'fe/fe_amr_constraint_test.C' || echo '$(srcdir)/'`fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_amr_constraint_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_amr_constraint_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_amr_constraint_test.C' object='fe/unit_tests_devel-fe_amr_constraint_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 fe/unit_tests_devel-fe_amr_constraint_test.o `test -f 'fe/fe_amr_constraint_test.C' || echo '$(srcdir)/'`fe/fe_amr_constraint_test.C + +fe/unit_tests_devel-fe_amr_constraint_test.obj: fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_amr_constraint_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_amr_constraint_test.Tpo -c -o fe/unit_tests_devel-fe_amr_constraint_test.obj `if test -f 'fe/fe_amr_constraint_test.C'; then $(CYGPATH_W) 'fe/fe_amr_constraint_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_amr_constraint_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_amr_constraint_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_amr_constraint_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_amr_constraint_test.C' object='fe/unit_tests_devel-fe_amr_constraint_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 fe/unit_tests_devel-fe_amr_constraint_test.obj `if test -f 'fe/fe_amr_constraint_test.C'; then $(CYGPATH_W) 'fe/fe_amr_constraint_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_amr_constraint_test.C'; fi` + fe/unit_tests_devel-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_devel_CPPFLAGS) $(CPPFLAGS) $(unit_tests_devel_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_devel-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Tpo -c -o fe/unit_tests_devel-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Po @@ -8873,6 +8991,20 @@ fe/unit_tests_oprof-fe_l2_lagrange_gll_test.obj: fe/fe_l2_lagrange_gll_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 fe/unit_tests_oprof-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` +fe/unit_tests_oprof-fe_lagrange_gll_test.o: fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_lagrange_gll_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_gll_test.Tpo -c -o fe/unit_tests_oprof-fe_lagrange_gll_test.o `test -f 'fe/fe_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_lagrange_gll_test.C' object='fe/unit_tests_oprof-fe_lagrange_gll_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 fe/unit_tests_oprof-fe_lagrange_gll_test.o `test -f 'fe/fe_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_gll_test.C + +fe/unit_tests_oprof-fe_lagrange_gll_test.obj: fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_lagrange_gll_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_gll_test.Tpo -c -o fe/unit_tests_oprof-fe_lagrange_gll_test.obj `if test -f 'fe/fe_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_lagrange_gll_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_lagrange_gll_test.C' object='fe/unit_tests_oprof-fe_lagrange_gll_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 fe/unit_tests_oprof-fe_lagrange_gll_test.obj `if test -f 'fe/fe_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_lagrange_gll_test.C'; fi` + fe/unit_tests_oprof-fe_gll_collocation_test.o: fe/fe_gll_collocation_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_gll_collocation_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_oprof-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po @@ -8901,6 +9033,20 @@ fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.obj: fe/fe_gll_lagrange_agree @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 fe/unit_tests_oprof-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` +fe/unit_tests_oprof-fe_amr_constraint_test.o: fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_amr_constraint_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_amr_constraint_test.Tpo -c -o fe/unit_tests_oprof-fe_amr_constraint_test.o `test -f 'fe/fe_amr_constraint_test.C' || echo '$(srcdir)/'`fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_amr_constraint_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_amr_constraint_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_amr_constraint_test.C' object='fe/unit_tests_oprof-fe_amr_constraint_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 fe/unit_tests_oprof-fe_amr_constraint_test.o `test -f 'fe/fe_amr_constraint_test.C' || echo '$(srcdir)/'`fe/fe_amr_constraint_test.C + +fe/unit_tests_oprof-fe_amr_constraint_test.obj: fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_amr_constraint_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_amr_constraint_test.Tpo -c -o fe/unit_tests_oprof-fe_amr_constraint_test.obj `if test -f 'fe/fe_amr_constraint_test.C'; then $(CYGPATH_W) 'fe/fe_amr_constraint_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_amr_constraint_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_amr_constraint_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_amr_constraint_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_amr_constraint_test.C' object='fe/unit_tests_oprof-fe_amr_constraint_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 fe/unit_tests_oprof-fe_amr_constraint_test.obj `if test -f 'fe/fe_amr_constraint_test.C'; then $(CYGPATH_W) 'fe/fe_amr_constraint_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_amr_constraint_test.C'; fi` + fe/unit_tests_oprof-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_oprof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_oprof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_oprof-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Tpo -c -o fe/unit_tests_oprof-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Po @@ -10693,6 +10839,20 @@ fe/unit_tests_opt-fe_l2_lagrange_gll_test.obj: fe/fe_l2_lagrange_gll_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 fe/unit_tests_opt-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` +fe/unit_tests_opt-fe_lagrange_gll_test.o: fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_lagrange_gll_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_gll_test.Tpo -c -o fe/unit_tests_opt-fe_lagrange_gll_test.o `test -f 'fe/fe_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_lagrange_gll_test.C' object='fe/unit_tests_opt-fe_lagrange_gll_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 fe/unit_tests_opt-fe_lagrange_gll_test.o `test -f 'fe/fe_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_gll_test.C + +fe/unit_tests_opt-fe_lagrange_gll_test.obj: fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_lagrange_gll_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_gll_test.Tpo -c -o fe/unit_tests_opt-fe_lagrange_gll_test.obj `if test -f 'fe/fe_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_lagrange_gll_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_lagrange_gll_test.C' object='fe/unit_tests_opt-fe_lagrange_gll_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 fe/unit_tests_opt-fe_lagrange_gll_test.obj `if test -f 'fe/fe_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_lagrange_gll_test.C'; fi` + fe/unit_tests_opt-fe_gll_collocation_test.o: fe/fe_gll_collocation_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_gll_collocation_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_opt-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po @@ -10721,6 +10881,20 @@ fe/unit_tests_opt-fe_gll_lagrange_agreement_test.obj: fe/fe_gll_lagrange_agreeme @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 fe/unit_tests_opt-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` +fe/unit_tests_opt-fe_amr_constraint_test.o: fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_amr_constraint_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_amr_constraint_test.Tpo -c -o fe/unit_tests_opt-fe_amr_constraint_test.o `test -f 'fe/fe_amr_constraint_test.C' || echo '$(srcdir)/'`fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_amr_constraint_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_amr_constraint_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_amr_constraint_test.C' object='fe/unit_tests_opt-fe_amr_constraint_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 fe/unit_tests_opt-fe_amr_constraint_test.o `test -f 'fe/fe_amr_constraint_test.C' || echo '$(srcdir)/'`fe/fe_amr_constraint_test.C + +fe/unit_tests_opt-fe_amr_constraint_test.obj: fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_amr_constraint_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_amr_constraint_test.Tpo -c -o fe/unit_tests_opt-fe_amr_constraint_test.obj `if test -f 'fe/fe_amr_constraint_test.C'; then $(CYGPATH_W) 'fe/fe_amr_constraint_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_amr_constraint_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_amr_constraint_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_amr_constraint_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_amr_constraint_test.C' object='fe/unit_tests_opt-fe_amr_constraint_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 fe/unit_tests_opt-fe_amr_constraint_test.obj `if test -f 'fe/fe_amr_constraint_test.C'; then $(CYGPATH_W) 'fe/fe_amr_constraint_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_amr_constraint_test.C'; fi` + fe/unit_tests_opt-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_opt_CPPFLAGS) $(CPPFLAGS) $(unit_tests_opt_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_opt-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Tpo -c -o fe/unit_tests_opt-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Po @@ -12513,6 +12687,20 @@ fe/unit_tests_prof-fe_l2_lagrange_gll_test.obj: fe/fe_l2_lagrange_gll_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 fe/unit_tests_prof-fe_l2_lagrange_gll_test.obj `if test -f 'fe/fe_l2_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_l2_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_l2_lagrange_gll_test.C'; fi` +fe/unit_tests_prof-fe_lagrange_gll_test.o: fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_lagrange_gll_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_gll_test.Tpo -c -o fe/unit_tests_prof-fe_lagrange_gll_test.o `test -f 'fe/fe_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_lagrange_gll_test.C' object='fe/unit_tests_prof-fe_lagrange_gll_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 fe/unit_tests_prof-fe_lagrange_gll_test.o `test -f 'fe/fe_lagrange_gll_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_gll_test.C + +fe/unit_tests_prof-fe_lagrange_gll_test.obj: fe/fe_lagrange_gll_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_lagrange_gll_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_gll_test.Tpo -c -o fe/unit_tests_prof-fe_lagrange_gll_test.obj `if test -f 'fe/fe_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_lagrange_gll_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_gll_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_gll_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_lagrange_gll_test.C' object='fe/unit_tests_prof-fe_lagrange_gll_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 fe/unit_tests_prof-fe_lagrange_gll_test.obj `if test -f 'fe/fe_lagrange_gll_test.C'; then $(CYGPATH_W) 'fe/fe_lagrange_gll_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_lagrange_gll_test.C'; fi` + fe/unit_tests_prof-fe_gll_collocation_test.o: fe/fe_gll_collocation_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_gll_collocation_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Tpo -c -o fe/unit_tests_prof-fe_gll_collocation_test.o `test -f 'fe/fe_gll_collocation_test.C' || echo '$(srcdir)/'`fe/fe_gll_collocation_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po @@ -12541,6 +12729,20 @@ fe/unit_tests_prof-fe_gll_lagrange_agreement_test.obj: fe/fe_gll_lagrange_agreem @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 fe/unit_tests_prof-fe_gll_lagrange_agreement_test.obj `if test -f 'fe/fe_gll_lagrange_agreement_test.C'; then $(CYGPATH_W) 'fe/fe_gll_lagrange_agreement_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_gll_lagrange_agreement_test.C'; fi` +fe/unit_tests_prof-fe_amr_constraint_test.o: fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_amr_constraint_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_amr_constraint_test.Tpo -c -o fe/unit_tests_prof-fe_amr_constraint_test.o `test -f 'fe/fe_amr_constraint_test.C' || echo '$(srcdir)/'`fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_amr_constraint_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_amr_constraint_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_amr_constraint_test.C' object='fe/unit_tests_prof-fe_amr_constraint_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 fe/unit_tests_prof-fe_amr_constraint_test.o `test -f 'fe/fe_amr_constraint_test.C' || echo '$(srcdir)/'`fe/fe_amr_constraint_test.C + +fe/unit_tests_prof-fe_amr_constraint_test.obj: fe/fe_amr_constraint_test.C +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_amr_constraint_test.obj -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_amr_constraint_test.Tpo -c -o fe/unit_tests_prof-fe_amr_constraint_test.obj `if test -f 'fe/fe_amr_constraint_test.C'; then $(CYGPATH_W) 'fe/fe_amr_constraint_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_amr_constraint_test.C'; fi` +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_amr_constraint_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_amr_constraint_test.Po +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='fe/fe_amr_constraint_test.C' object='fe/unit_tests_prof-fe_amr_constraint_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 fe/unit_tests_prof-fe_amr_constraint_test.obj `if test -f 'fe/fe_amr_constraint_test.C'; then $(CYGPATH_W) 'fe/fe_amr_constraint_test.C'; else $(CYGPATH_W) '$(srcdir)/fe/fe_amr_constraint_test.C'; fi` + fe/unit_tests_prof-fe_lagrange_test.o: fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(unit_tests_prof_CPPFLAGS) $(CPPFLAGS) $(unit_tests_prof_CXXFLAGS) $(CXXFLAGS) -MT fe/unit_tests_prof-fe_lagrange_test.o -MD -MP -MF fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Tpo -c -o fe/unit_tests_prof-fe_lagrange_test.o `test -f 'fe/fe_lagrange_test.C' || echo '$(srcdir)/'`fe/fe_lagrange_test.C @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Tpo fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Po @@ -14485,6 +14687,7 @@ distclean: distclean-am -rm -f base/$(DEPDIR)/unit_tests_prof-overlapping_coupling_test.Po -rm -f base/$(DEPDIR)/unit_tests_prof-point_neighbor_coupling_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-dual_shape_verification_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_amr_constraint_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po @@ -14495,6 +14698,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_l2_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_monomial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_orientation_test.Po @@ -14505,6 +14709,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_xyz_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-inf_fe_radial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-dual_shape_verification_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_amr_constraint_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po @@ -14515,6 +14720,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_l2_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_monomial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_orientation_test.Po @@ -14525,6 +14731,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_xyz_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-inf_fe_radial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-dual_shape_verification_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_amr_constraint_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po @@ -14535,6 +14742,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_l2_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_monomial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_orientation_test.Po @@ -14545,6 +14753,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_xyz_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-inf_fe_radial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-dual_shape_verification_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_amr_constraint_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po @@ -14555,6 +14764,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_l2_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_monomial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_orientation_test.Po @@ -14565,6 +14775,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_xyz_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-inf_fe_radial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-dual_shape_verification_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_amr_constraint_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po @@ -14575,6 +14786,7 @@ distclean: distclean-am -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_l2_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_monomial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_orientation_test.Po @@ -15182,6 +15394,7 @@ maintainer-clean: maintainer-clean-am -rm -f base/$(DEPDIR)/unit_tests_prof-overlapping_coupling_test.Po -rm -f base/$(DEPDIR)/unit_tests_prof-point_neighbor_coupling_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-dual_shape_verification_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_amr_constraint_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_gll_collocation_test.Po @@ -15192,6 +15405,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_l2_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_l2_lagrange_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_monomial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_orientation_test.Po @@ -15202,6 +15416,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_dbg-fe_xyz_test.Po -rm -f fe/$(DEPDIR)/unit_tests_dbg-inf_fe_radial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-dual_shape_verification_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_amr_constraint_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_gll_collocation_test.Po @@ -15212,6 +15427,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_l2_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_l2_lagrange_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_monomial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_orientation_test.Po @@ -15222,6 +15438,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_devel-fe_xyz_test.Po -rm -f fe/$(DEPDIR)/unit_tests_devel-inf_fe_radial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-dual_shape_verification_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_amr_constraint_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_gll_collocation_test.Po @@ -15232,6 +15449,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_l2_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_l2_lagrange_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_monomial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_orientation_test.Po @@ -15242,6 +15460,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_oprof-fe_xyz_test.Po -rm -f fe/$(DEPDIR)/unit_tests_oprof-inf_fe_radial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-dual_shape_verification_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_amr_constraint_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_gll_collocation_test.Po @@ -15252,6 +15471,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_l2_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_l2_lagrange_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_monomial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_orientation_test.Po @@ -15262,6 +15482,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_opt-fe_xyz_test.Po -rm -f fe/$(DEPDIR)/unit_tests_opt-inf_fe_radial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-dual_shape_verification_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_amr_constraint_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_bernstein_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_clough_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_gll_collocation_test.Po @@ -15272,6 +15493,7 @@ maintainer-clean: maintainer-clean-am -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_l2_hierarchic_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_l2_lagrange_test.Po + -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_gll_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_lagrange_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_monomial_test.Po -rm -f fe/$(DEPDIR)/unit_tests_prof-fe_orientation_test.Po diff --git a/tests/fe/fe_amr_constraint_test.C b/tests/fe/fe_amr_constraint_test.C new file mode 100644 index 0000000000..b4428ac720 --- /dev/null +++ b/tests/fe/fe_amr_constraint_test.C @@ -0,0 +1,168 @@ +// A conforming basis on an adaptively refined mesh needs the degrees of freedom on a hanging +// node constrained to the coarse side it lies on. Whether that machinery is right is not +// visible on a conforming mesh, and nothing else here exercises it, so this holds it to the +// property it exists to preserve: the constrained space still contains the polynomials of its +// own order, so projecting one reproduces it exactly, on both sides of the interface. +// +// A wrong constraint shows up as a solution that no longer equals the polynomial it was +// projected from, since enforcing the constraint moves the hanging degrees of freedom away +// from the values that interpolate it. + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "test_comm.h" +#include "libmesh_cppunit.h" + +#include +#include +#include + +using namespace libMesh; + +namespace { + +/** + * A polynomial of total degree \p D, which the tensor product space of order \p D holds, so a + * family of that order can reproduce it and a projection onto it should. + */ +template +Number amr_test_poly(const Point & p, + const Parameters &, + const std::string &, + const std::string &) +{ + const Real s = 1. + p(0) + 2.*p(1) + 3.*p(2); + + Real value = 1.; + for (unsigned int d = 0; d != D; ++d) + value *= s; + + return value; +} + +} + +#ifdef LIBMESH_ENABLE_AMR + +template +class FEAMRConstraintTest : public CppUnit::TestCase +{ +protected: + std::unique_ptr _mesh; + std::string libmesh_suite_name; + +public: + void setUp() + { + _mesh = std::make_unique(*TestCommWorld); + + const unsigned int dim = Elem::type_to_dim_map[elem_type]; + + // A second order type, which the families needing mid-edge and face nodes ask for + ElemType base = elem_type; + if (elem_type == QUAD9) base = QUAD4; + if (elem_type == HEX27) base = HEX8; + if (elem_type == EDGE3) base = EDGE2; + + if (dim == 1) + MeshTools::Generation::build_line(*_mesh, 4, 0., 1., base); + else if (dim == 2) + MeshTools::Generation::build_square(*_mesh, 2, 2, 0., 1., 0., 1., base); + else + MeshTools::Generation::build_cube(*_mesh, 2, 2, 2, 0., 1., 0., 1., 0., 1., base); + + if (base != elem_type) + _mesh->all_second_order(); + + // Refine part of the mesh, which is what puts a hanging node on the interface between the + // refined elements and their unrefined neighbours + MeshRefinement refine(*_mesh); + + for (auto * elem : _mesh->active_element_ptr_range()) + if (elem->id() % 4 == 0) + elem->set_refinement_flag(Elem::REFINE); + + refine.refine_and_coarsen_elements(); + } + + void tearDown() { _mesh.reset(); } + + void testConstrainedSpaceHoldsPolynomials() + { + LOG_UNIT_TEST; + + EquationSystems es(*_mesh); + System & sys = es.add_system("amr"); + sys.add_variable("u", FEType(order, family)); + es.init(); + + sys.project_solution(amr_test_poly(order)>, + nullptr, es.parameters); + + // The constraints the projection just enforced must leave the polynomial intact, at points + // spread through the mesh so that some fall in the refined part and some outside it + Parameters dummy; + unsigned int n_checked = 0; + + for (int a = 1; a < 8; ++a) + for (int b = 1; b < 8; ++b) + { + const unsigned int dim = Elem::type_to_dim_map[elem_type]; + const Point q(a/8., (dim > 1) ? b/8. : 0., (dim > 2) ? (a + b)/16. : 0.); + + const Number expected = + amr_test_poly(order)>(q, dummy, "", ""); + const Number actual = sys.point_value(0, q); + + LIBMESH_ASSERT_NUMBERS_EQUAL(expected, actual, TOLERANCE*std::sqrt(TOLERANCE)); + ++n_checked; + } + + CPPUNIT_ASSERT(n_checked > 0); + } +}; + +#define INSTANTIATE_FEAMRCONSTRAINTTEST(elemtype, order, family) \ + class FEAMRConstraintTest_##family##_##order##_##elemtype : \ + public FEAMRConstraintTest { \ + public: \ + FEAMRConstraintTest_##family##_##order##_##elemtype() : \ + FEAMRConstraintTest() { \ + if (unitlog->summarized_logs_enabled()) \ + this->libmesh_suite_name = "FEAMRConstraintTest"; \ + else \ + this->libmesh_suite_name = \ + "FEAMRConstraintTest_" #family "_" #order "_" #elemtype; \ + } \ + CPPUNIT_TEST_SUITE( FEAMRConstraintTest_##family##_##order##_##elemtype ); \ + CPPUNIT_TEST( testConstrainedSpaceHoldsPolynomials ); \ + CPPUNIT_TEST_SUITE_END(); \ + }; \ + \ + CPPUNIT_TEST_SUITE_REGISTRATION( FEAMRConstraintTest_##family##_##order##_##elemtype ) + +// The Gauss-Lobatto basis this exists for, with LAGRANGE and HIERARCHIC beside it. LAGRANGE is +// the control: its constraints are long settled, so a failure there would be the test's fault +// rather than the family's. HIERARCHIC is the other family that allocates a separate degree of +// freedom at a hanging node, which is the path this was written to cover. +INSTANTIATE_FEAMRCONSTRAINTTEST(QUAD9, SECOND, LAGRANGE); +INSTANTIATE_FEAMRCONSTRAINTTEST(QUAD9, THIRD, LAGRANGE_GLL); +INSTANTIATE_FEAMRCONSTRAINTTEST(QUAD9, FOURTH, LAGRANGE_GLL); +INSTANTIATE_FEAMRCONSTRAINTTEST(QUAD9, THIRD, HIERARCHIC); + +#if LIBMESH_DIM > 2 +INSTANTIATE_FEAMRCONSTRAINTTEST(HEX27, SECOND, LAGRANGE); +INSTANTIATE_FEAMRCONSTRAINTTEST(HEX27, THIRD, LAGRANGE_GLL); +INSTANTIATE_FEAMRCONSTRAINTTEST(HEX27, THIRD, HIERARCHIC); +#endif + +#endif // LIBMESH_ENABLE_AMR