Documentation

LeanPool.HighContrastHomogenization.Support.Deterministic.ConstantCoefficientDirichletBesov.PartitionGeometry

Coarse-graining support: Support.Deterministic.ConstantCoefficientDirichletBesov.PartitionGeometry #

Imported from the Apache-2.0 CoarseGraining development at commit c7ddd76c08ade64fed1b8d2ca51be14dfee8deb4.

Raw one-sided overlap weights #

These are the planned Stage-7 building blocks for the uniform smooth overlap partition. Interior coordinates use a two-sided smooth transition across the outer collar of an overlap cube. If an overlap face coincides with a parent face, the corresponding one-sided transition is suppressed; this keeps the raw weight uniformly positive near ∂Q when we work relative to openCubeSet Q.

noncomputable def HCPolySupport.cubeCoordLower {d : ℕ} (Q : TriadicCube d) (i : Fin d) :

The lower coordinate endpoint of a triadic cube, used to describe its faces and membership.

Equations
Instances For
    noncomputable def HCPolySupport.cubeCoordUpper {d : ℕ} (Q : TriadicCube d) (i : Fin d) :

    The upper coordinate endpoint of a triadic cube, used to describe its faces and membership.

    Equations
    Instances For
      noncomputable def HCPolySupport.overlapCoordLower {d : ℕ} (S : TriadicCube d) (i : Fin d) :

      The lower coordinate endpoint of the overlap cube centered at S.

      Equations
      Instances For
        noncomputable def HCPolySupport.overlapCoordUpper {d : ℕ} (S : TriadicCube d) (i : Fin d) :

        The upper coordinate endpoint of the overlap cube centered at S.

        Equations
        Instances For
          theorem HCPolySupport.cubeCoordLower_child {d : ℕ} (Q : TriadicCube d) (digits : Fin d → Fin 3) (i : Fin d) :
          cubeCoordLower { scale := Q.scale - 1, index := fun (k : Fin d) => 3 * Q.index k + ↑↑(digits k) - 1 } i = cubeCoordLower Q i + ↑↑↑(digits i) * cubeScaleFactor { scale := Q.scale - 1, index := fun (k : Fin d) => 3 * Q.index k + ↑↑(digits k) - 1 }
          theorem HCPolySupport.cubeCoordUpper_child {d : ℕ} (Q : TriadicCube d) (digits : Fin d → Fin 3) (i : Fin d) :
          cubeCoordUpper { scale := Q.scale - 1, index := fun (k : Fin d) => 3 * Q.index k + ↑↑(digits k) - 1 } i = cubeCoordUpper Q i - (↑2 - ↑↑↑(digits i)) * cubeScaleFactor { scale := Q.scale - 1, index := fun (k : Fin d) => 3 * Q.index k + ↑↑(digits k) - 1 }
          theorem HCPolySupport.cubeScaleFactor_child_eq_three_mul {d : ℕ} (Q : TriadicCube d) (digits : Fin d → Fin 3) :
          cubeScaleFactor Q = 3 * cubeScaleFactor { scale := Q.scale - 1, index := fun (k : Fin d) => 3 * Q.index k + ↑↑(digits k) - 1 }
          theorem HCPolySupport.overlapCoordLower_child {d : ℕ} (Q : TriadicCube d) (digits : Fin d → Fin 3) (i : Fin d) :
          overlapCoordLower { scale := Q.scale - 1, index := fun (k : Fin d) => 3 * Q.index k + ↑↑(digits k) - 1 } i = cubeCoordLower Q i + (↑↑↑(digits i) - 1) * cubeScaleFactor { scale := Q.scale - 1, index := fun (k : Fin d) => 3 * Q.index k + ↑↑(digits k) - 1 }
          theorem HCPolySupport.overlapCoordUpper_child {d : ℕ} (Q : TriadicCube d) (digits : Fin d → Fin 3) (i : Fin d) :
          overlapCoordUpper { scale := Q.scale - 1, index := fun (k : Fin d) => 3 * Q.index k + ↑↑(digits k) - 1 } i = cubeCoordUpper Q i + (↑↑↑(digits i) - 1) * cubeScaleFactor { scale := Q.scale - 1, index := fun (k : Fin d) => 3 * Q.index k + ↑↑(digits k) - 1 }
          theorem HCPolySupport.overlapCubeSet_child_subset_cubeSet_of_digit_safe {d : ℕ} {Q R : TriadicCube d} {j : ℕ} (hR : R ∈ descendantsAtDepth Q j) (digits : Fin d → Fin 3) (hlo_safe : ∀ (i : Fin d), ↑(digits i) = 0 → cubeCoordLower Q i + cubeScaleFactor R ≤ cubeCoordLower R i) (hhi_safe : ∀ (i : Fin d), ↑(digits i) = 2 → cubeCoordUpper R i + cubeScaleFactor R ≤ cubeCoordUpper Q i) :
          overlapCubeSet { scale := R.scale - 1, index := fun (k : Fin d) => 3 * R.index k + ↑↑(digits k) - 1 } ⊆ cubeSet Q
          noncomputable def HCPolySupport.plateauChildDigit {d : ℕ} (Q R : TriadicCube d) (x : Vec d) (i : Fin d) :
          Fin 3

          The child digit used to obtain an overlap weight equal to one at x, choosing the middle digit near parent faces.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem HCPolySupport.plateauChildDigit_zero_safe {d : ℕ} {Q R : TriadicCube d} {j : ℕ} {x : Vec d} {i : Fin d} (hR : R ∈ descendantsAtDepth Q j) (hzero : ↑(plateauChildDigit Q R x i) = 0) :
            theorem HCPolySupport.plateauChildDigit_two_safe {d : ℕ} {Q R : TriadicCube d} {j : ℕ} {x : Vec d} {i : Fin d} (hR : R ∈ descendantsAtDepth Q j) (htwo : ↑(plateauChildDigit Q R x i) = 2) :
            noncomputable def HCPolySupport.plateauChildCube {d : ℕ} (Q R : TriadicCube d) (x : Vec d) :

            The child of R selected by the plateau digits to provide a unit raw overlap weight for points of R.

            Equations
            Instances For
              noncomputable def HCPolySupport.lowerOverlapTransition {d : ℕ} (Q S : TriadicCube d) (i : Fin d) (x : Vec d) :

              Smooth cutoff from the lower overlap face, set to one when that face reaches or lies beyond the lower parent face.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                noncomputable def HCPolySupport.upperOverlapTransition {d : ℕ} (Q S : TriadicCube d) (i : Fin d) (x : Vec d) :

                Smooth cutoff from the upper overlap face, set to one when that face reaches or lies beyond the upper parent face.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For