18#ifndef PECLET_AMR_INDICATORS_HPP
19#define PECLET_AMR_INDICATORS_HPP
26#include "peclet/core/common/types.hpp"
37template <
int Dim,
unsigned Bits>
40 const Index n =
t.numLeaves();
41 std::vector<double>
e(
static_cast<std::size_t
>(n), 0.0);
43 const double ui =
u[
static_cast<std::size_t
>(
i)];
45 for (
int axis = 0; axis < Dim; ++axis) {
46 const Index jp =
t.faceNeighbor(
i, axis, +1);
47 const Index jm =
t.faceNeighbor(
i, axis, -1);
50 const double up =
u[
static_cast<std::size_t
>(
jp)];
51 const double um =
u[
static_cast<std::size_t
>(
jm)];
52 const double d2 =
up - 2.0 *
ui +
um;
53 const double nrm = std::fabs(
up -
ui) + std::fabs(
ui -
um) +
54 eps * (std::fabs(
up) + 2.0 * std::fabs(
ui) + std::fabs(
um));
58 e[
static_cast<std::size_t
>(
i)] = (
den2 > 0.0) ? std::sqrt(
num2 /
den2) : 0.0;
67template <
int Dim,
unsigned Bits>
69 const std::vector<double>&
u) {
70 const Index n =
t.numLeaves();
71 std::vector<double>
e(
static_cast<std::size_t
>(n), 0.0);
73 const double ui =
u[
static_cast<std::size_t
>(
i)];
75 for (
int axis = 0; axis < Dim; ++axis) {
76 const Index jp =
t.faceNeighbor(
i, axis, +1);
77 const Index jm =
t.faceNeighbor(
i, axis, -1);
81 u[
static_cast<std::size_t
>(
jp)] - 2.0 *
ui +
u[
static_cast<std::size_t
>(
jm)];
84 e[
static_cast<std::size_t
>(
i)] = std::sqrt(
s);
Per-block adaptive octree over block-local Morton codes.
std::vector< double > lohnerIndicator(const BlockOctree< Dim, Bits > &t, const std::vector< double > &u, double eps=0.01)
Löhner normalized second-difference indicator E_i ∈ [0,1], per leaf, for scalar u (indexed by leaf sl...
std::vector< double > secondDiffIndicator(const BlockOctree< Dim, Bits > &t, const std::vector< double > &u)
Raw second-derivative magnitude indicator, per leaf: the L2 norm over axes of the undivided second di...
std::vector< std::array< double, Dim > > transferFieldGradients(const BlockOctree< Dim, Bits > &oldT, const std::vector< double > &oldF)
Per-old-leaf minmod prolongation gradients (per fine-coordinate unit) — transferField's stencil,...