libMesh/libmesh: coverage diff

Base 0a0a9d Head #4536 676a4a
Total Total +/- New
Rate 65.94% 65.94% +0.01% 100.00%
Hits 79392 79407 +15 8
Misses 41014 41007 -7 0
Filename Stmts Miss Cover
include/geom/face_quad8.h 0 -2 +15.38%
src/fe/fe_base.C +8 0 +0.28%
src/geom/face_quad8.C 0 -5 +2.79%
TOTAL +8 -7 +0.01%
code
coverage unchanged
code
coverage increased
code
coverage decreased
+
line added or modified

include/geom/face_quad8.h

164  
165  
166  
167  
168  
169  
170  
171  
  /**
   * \returns 2 for all \p n.
   */
  virtual unsigned int n_second_order_adjacent_vertices (const unsigned int) const override
  { return 2; }

  /**
   * \returns The element-local number of the \f$ v^{th} \f$ vertex

src/fe/fe_base.C

828  
829  
830  
831 +
832 +
833  
834 +
835  
836  
837 +
838 +
839  
840 +
841 +
842 +
843  
844  
845  
  // adjacent mid-edge shapes. That replaces D by T^-1 diag(T d), which for this T is the sparse
  // update below. alpha = 1/5 is recommended there, and makes the weights strictly positive (QUAD8
  // 1/5 and 4/5, TRI6 1/15 and 1/10) while preserving the partition of unity. T = I elsewhere.
  if (_elem && (_elem->type() == TRI6 || _elem->type() == QUAD8) &&
      get_family() == LAGRANGE && sz == _elem->n_nodes())
    {
      const Real alpha = Real(1)/5;
      // Mid-edge nodes are the trailing indices, and only vertex entries are written, so D(m,m) here
      // is never a value an earlier iteration modified.
      for (const auto m : make_range(_elem->n_vertices(), sz))
        for (const auto v : make_range(_elem->n_second_order_adjacent_vertices(m)))
          {
            const auto vertex = _elem->second_order_adjacent_vertex(m, v);
            D(vertex, vertex) += alpha*D(m,m);
            D(vertex, m)      -= alpha*D(m,m);
          }
    }

src/geom/face_quad8.C

402  
403  
404  
405  
406  
407  
408  
409  
410  
411  
412  
413  
414  
415  



unsigned short int Quad8::second_order_adjacent_vertex (const unsigned int n,
                                                        const unsigned int v) const
{
  libmesh_assert_greater_equal (n, this->n_vertices());
  libmesh_assert_less (n, this->n_nodes());
  libmesh_assert_less (v, 2);
  // use the matrix from \p face_quad.C
  return _second_order_adjacent_vertices[n-this->n_vertices()][v];
}