Commit 512cec4f authored by Steven Walton's avatar Steven Walton

Making sure this takes

Switched to FloatType and not FloatDefault
parents fa4ec082 e7a0931f
......@@ -58,14 +58,14 @@ VTKM_EXEC OutType CellStretchMetric(const vtkm::IdComponent& numPts,
vtlm::CellShapeTagQuad,
const vtkm::exec::FunctorBase& worklet)
{
FloatDefault L0 = vtkm::MagnitudeSquared(pts[1] - pts[0]);
FloatDefault L1 = vtkm::MagnitudeSquared(pts[2] - pts[1]);
FloatDefault L2 = vtkm::MagnitudeSquared(pts[3] - pts[2]);
FloatDefault L3 = vtkm::MagnitudeSquared(pts[0] - pts[3]);
FloatType L0 = vtkm::MagnitudeSquared(pts[1] - pts[0]);
FloatType L1 = vtkm::MagnitudeSquared(pts[2] - pts[1]);
FloatType L2 = vtkm::MagnitudeSquared(pts[3] - pts[2]);
FloatType L3 = vtkm::MagnitudeSquared(pts[0] - pts[3]);
// Find the minimum length (use square of values to speed up)
FloatDefault D0 = pts[2] - pts[0];
FloatDefault D1 = pts[3] - pts[1];
FloatDefault D_max = vtkm::Max(D0,D1);
FloatType D0 = pts[2] - pts[0];
FloatType D1 = pts[3] - pts[1];
FloatType D_max = vtkm::Max(D0,D1);
if(D_max < FLOAT_MIN) return FLOAT_MAX;
return vtkm::Sqrt(2)/D_max * vtkm::Sqrt(L_min);
......@@ -77,23 +77,23 @@ VTKM_EXEC OutType CellStretchMetric(const vtkm::IdComponent& numPts,
vtlm::CellShapeTagHex,
const vtkm::exec::FunctorBase& worklet)
{
FloatDefault L0 = vtkm::MagnitudeSquared(pts[1] - pts[0]);
FloatDefault L1 = vtkm::MagnitudeSquared(pts[2] - pts[1]);
FloatDefault L2 = vtkm::MagnitudeSquared(pts[3] - pts[2]);
FloatDefault L3 = vtkm::MagnitudeSquared(pts[3] - pts[0]);
FloatDefault L4 = vtkm::MagnitudeSquared(pts[4] - pts[0]);
FloatDefault L5 = vtkm::MagnitudeSquared(pts[5] - pts[1]);
FloatDefault L6 = vtkm::MagnitudeSquared(pts[6] - pts[2]);
FloatDefault L7 = vtkm::MagnitudeSquared(pts[3] - pts[3]);
FloatDefault L8 = vtkm::MagnitudeSquared(pts[5] - pts[4]);
FloatDefault L9 = vtkm::MagnitudeSquared(pts[6] - pts[5]);
FloatDefault L10 = vtkm::MagnitudeSquared(pts[7] - pts[6]);
FloatDefault L11 = vtkm::MagnitudeSquared(pts[7] - pts[4]);
FloatDefault D0 = pts[6] - pts[0];
FloatDefault D1 = pts[7] - pts[1];
FloatDefault D2 = pts[4] - pts[2];
FloatDefault D3 = pts[5] - pts[3];
FloatDefault D_max = vtkm::Max(D0,D1,D2,D3);
FloatType L0 = vtkm::MagnitudeSquared(pts[1] - pts[0]);
FloatType L1 = vtkm::MagnitudeSquared(pts[2] - pts[1]);
FloatType L2 = vtkm::MagnitudeSquared(pts[3] - pts[2]);
FloatType L3 = vtkm::MagnitudeSquared(pts[3] - pts[0]);
FloatType L4 = vtkm::MagnitudeSquared(pts[4] - pts[0]);
FloatType L5 = vtkm::MagnitudeSquared(pts[5] - pts[1]);
FloatType L6 = vtkm::MagnitudeSquared(pts[6] - pts[2]);
FloatType L7 = vtkm::MagnitudeSquared(pts[3] - pts[3]);
FloatType L8 = vtkm::MagnitudeSquared(pts[5] - pts[4]);
FloatType L9 = vtkm::MagnitudeSquared(pts[6] - pts[5]);
FloatType L10 = vtkm::MagnitudeSquared(pts[7] - pts[6]);
FloatType L11 = vtkm::MagnitudeSquared(pts[7] - pts[4]);
FloatType D0 = pts[6] - pts[0];
FloatType D1 = pts[7] - pts[1];
FloatType D2 = pts[4] - pts[2];
FloatType D3 = pts[5] - pts[3];
FloatType D_max = vtkm::Max(D0,D1,D2,D3);
if(D_max < FLOAT_MIN) return FLOAT_MAX;
return vtkm::Sqrt(3) * vtkm::Sqrt(vtkm::Min(L0,L1,L2,L3,L4,L5,L6,L7,L8,L9,L10,L11)) / D_max;
}
......
//============================================================================
// Copyright (c) Kitware, Inc.
// All rights reserved.
// See LICENSE.txt for details.
// This software is distributed WITHOUT ANY WARRANTY; without even
// the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
// PURPOSE. See the above copyright notice for more information.
//
// Copyright 2014 National Technology & Engineering Solutions of Sandia, LLC (NTESS).
// Copyright 2014 UT-Battelle, LLC.
// Copyright 2014 Los Alamos National Security.
//
// Under the terms of Contract DE-NA0003525 with NTESS,
// the U.S. Government retains certain rights in this software.
//
// Under the terms of Contract DE-AC52-06NA25396 with Los Alamos National
// Laboratory (LANL), the U.S. Government retains certain rights in
// this software.
//============================================================================
#ifndef vtk_m_exec_CellWarpageMetric_h
#define vtk_m_exec_CellWarpageMetric_h
/*
* Mesh quality metric functions that compute the shape, or weighted Jacobian, of mesh cells.
* The Jacobian of a cell is weighted by the condition metric value of the cell.
*
* These metric computations are adapted from the VTK implementation of the Verdict library,
* which provides a set of cell metrics for evaluating the geometric qualities of regions of mesh spaces.
*
* See: The Verdict Library Reference Manual (for per-cell-type metric formulae)
* See: vtk/ThirdParty/verdict/vtkverdict (for VTK code implementation of this metric)
*/
#include "vtkm/CellShape.h"
#include "vtkm/CellTraits.h"
#include "vtkm/VecTraits.h"
#include "vtkm/VectorAnalysis.h"
#include "vtkm/exec/FunctorBase.h"
#include "vtkm/exec/cellmetrics/CellConditionMetric.h"
namespace vtkm
{
namespace exec
{
static constexpr FloatType FLOAT_MAX = vtkm::Infinity<FloatType>();
static constexpr FloatType FLOAT_MIN = vtkm::NegativeInfinity<FloatType>();
template <typename OutType, typename PointCoordVecType, typename CellShapeType>
VTKM_EXEC OutType CellStretchMetric(const vtkm::IdComponent& numPts,
const PointCoordVecType& pts,
CellShapeType shape,
const vtkm::exec::FunctorBase& worklet)
{
worklet.RaiseError("Shape type template must be specified to compute taper")
return OutType(-1.0);
}
template <typename OutType, typename PointCoordVecType>
VTKM_EXEC OutType CellTaperMetric(const vtkm::IdComponents &numPts,
const PointCoordVecType& pts,
vtkm::CellShapeQuad,
const vtkm::exec::FunctorBase& worklet)
{
FloatType N0 = vtkm::Cross((pts[0]-pts[3]),(pts[1]-pts[0]));
FloatType N1 = vtkm::Cross((pts[1]-pts[0]),(pts[2]-pts[1]));
FloatType N2 = vtkm::Cross((pts[2]-pts[1]),(pts[3]-pts[2]));
FloatType N3 = vtkm::Cross((pts[3]-pts[2]),(pts[0]-pts[3]));
if (
}
} // exec
} // vtkm
#endif vtk_m_exec_CellWarpage_Metric_h
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment