From 94d3e79a8617f88dc0219cfdeedfa3147833719d Mon Sep 17 00:00:00 2001
From: Adrian Kummerlaender
Date: Mon, 24 Jun 2019 14:43:36 +0200
Subject: Initialize at openlb-1-3
---
src/functors/lattice/MakeHeader | 66 +
src/functors/lattice/blockAverage3D.cpp | 31 +
src/functors/lattice/blockAverage3D.h | 46 +
src/functors/lattice/blockAverage3D.hh | 59 +
src/functors/lattice/blockBaseF2D.cpp | 50 +
src/functors/lattice/blockBaseF2D.h | 140 ++
src/functors/lattice/blockBaseF2D.hh | 195 +++
src/functors/lattice/blockBaseF3D.cpp | 47 +
src/functors/lattice/blockBaseF3D.h | 204 +++
src/functors/lattice/blockBaseF3D.hh | 309 ++++
src/functors/lattice/blockCalcF2D.cpp | 50 +
src/functors/lattice/blockCalcF2D.h | 97 ++
src/functors/lattice/blockCalcF2D.hh | 148 ++
src/functors/lattice/blockCalcF3D.cpp | 50 +
src/functors/lattice/blockCalcF3D.h | 97 ++
src/functors/lattice/blockCalcF3D.hh | 153 ++
src/functors/lattice/blockGeometryFaces3D.cpp | 31 +
src/functors/lattice/blockGeometryFaces3D.h | 46 +
src/functors/lattice/blockGeometryFaces3D.hh | 97 ++
src/functors/lattice/blockLatticeIntegralF2D.cpp | 43 +
src/functors/lattice/blockLatticeIntegralF2D.h | 184 +++
src/functors/lattice/blockLatticeIntegralF2D.hh | 458 ++++++
src/functors/lattice/blockLatticeIntegralF3D.cpp | 37 +
src/functors/lattice/blockLatticeIntegralF3D.h | 118 ++
src/functors/lattice/blockLatticeIntegralF3D.hh | 184 +++
src/functors/lattice/blockLatticeLocalF2D.cpp | 51 +
src/functors/lattice/blockLatticeLocalF2D.h | 463 ++++++
src/functors/lattice/blockLatticeLocalF2D.hh | 1229 ++++++++++++++++
src/functors/lattice/blockLatticeLocalF3D.cpp | 50 +
src/functors/lattice/blockLatticeLocalF3D.h | 587 ++++++++
src/functors/lattice/blockLatticeLocalF3D.hh | 1556 ++++++++++++++++++++
.../lattice/blockLatticeRefinementMetricF2D.cpp | 35 +
.../lattice/blockLatticeRefinementMetricF2D.h | 59 +
.../lattice/blockLatticeRefinementMetricF2D.hh | 129 ++
src/functors/lattice/blockLocalAverage2D.cpp | 31 +
src/functors/lattice/blockLocalAverage2D.h | 66 +
src/functors/lattice/blockLocalAverage2D.hh | 94 ++
src/functors/lattice/blockLocalAverage3D.cpp | 31 +
src/functors/lattice/blockLocalAverage3D.h | 66 +
src/functors/lattice/blockLocalAverage3D.hh | 96 ++
src/functors/lattice/blockMax3D.cpp | 33 +
src/functors/lattice/blockMax3D.h | 51 +
src/functors/lattice/blockMax3D.hh | 74 +
src/functors/lattice/blockMin3D.cpp | 33 +
src/functors/lattice/blockMin3D.h | 51 +
src/functors/lattice/blockMin3D.hh | 74 +
src/functors/lattice/blockReduction2D1D.cpp | 32 +
src/functors/lattice/blockReduction2D1D.h | 145 ++
src/functors/lattice/blockReduction2D1D.hh | 253 ++++
src/functors/lattice/blockReduction2D2D.cpp | 32 +
src/functors/lattice/blockReduction2D2D.h | 99 ++
src/functors/lattice/blockReduction2D2D.hh | 193 +++
src/functors/lattice/blockReduction3D2D.cpp | 32 +
src/functors/lattice/blockReduction3D2D.h | 169 +++
src/functors/lattice/blockReduction3D2D.hh | 278 ++++
src/functors/lattice/functors2D.h | 47 +
src/functors/lattice/functors2D.hh | 48 +
src/functors/lattice/functors3D.h | 55 +
src/functors/lattice/functors3D.hh | 55 +
src/functors/lattice/indicator/MakeHeader | 33 +
.../lattice/indicator/blockIndicatorBaseF2D.cpp | 32 +
.../lattice/indicator/blockIndicatorBaseF2D.h | 87 ++
.../lattice/indicator/blockIndicatorBaseF2D.hh | 87 ++
.../lattice/indicator/blockIndicatorBaseF3D.cpp | 32 +
.../lattice/indicator/blockIndicatorBaseF3D.h | 107 ++
.../lattice/indicator/blockIndicatorBaseF3D.hh | 88 ++
.../lattice/indicator/blockIndicatorF2D.cpp | 35 +
src/functors/lattice/indicator/blockIndicatorF2D.h | 144 ++
.../lattice/indicator/blockIndicatorF2D.hh | 215 +++
.../lattice/indicator/blockIndicatorF3D.cpp | 35 +
src/functors/lattice/indicator/blockIndicatorF3D.h | 140 ++
.../lattice/indicator/blockIndicatorF3D.hh | 228 +++
src/functors/lattice/indicator/indicator2D.h | 32 +
src/functors/lattice/indicator/indicator2D.hh | 32 +
src/functors/lattice/indicator/indicator3D.h | 32 +
src/functors/lattice/indicator/indicator3D.hh | 32 +
src/functors/lattice/indicator/module.mk | 27 +
.../lattice/indicator/superIndicatorBaseF2D.cpp | 32 +
.../lattice/indicator/superIndicatorBaseF2D.h | 95 ++
.../lattice/indicator/superIndicatorBaseF2D.hh | 102 ++
.../lattice/indicator/superIndicatorBaseF3D.cpp | 32 +
.../lattice/indicator/superIndicatorBaseF3D.h | 104 ++
.../lattice/indicator/superIndicatorBaseF3D.hh | 102 ++
.../lattice/indicator/superIndicatorF2D.cpp | 34 +
src/functors/lattice/indicator/superIndicatorF2D.h | 119 ++
.../lattice/indicator/superIndicatorF2D.hh | 164 +++
.../lattice/indicator/superIndicatorF3D.cpp | 35 +
src/functors/lattice/indicator/superIndicatorF3D.h | 129 ++
.../lattice/indicator/superIndicatorF3D.hh | 171 +++
src/functors/lattice/integral/MakeHeader | 37 +
src/functors/lattice/integral/blockIntegralF3D.cpp | 35 +
src/functors/lattice/integral/blockIntegralF3D.h | 61 +
src/functors/lattice/integral/blockIntegralF3D.hh | 117 ++
src/functors/lattice/integral/blockLpNorm2D.cpp | 33 +
src/functors/lattice/integral/blockLpNorm2D.h | 53 +
src/functors/lattice/integral/blockLpNorm2D.hh | 77 +
src/functors/lattice/integral/blockLpNorm3D.cpp | 33 +
src/functors/lattice/integral/blockLpNorm3D.h | 50 +
src/functors/lattice/integral/blockLpNorm3D.hh | 80 +
src/functors/lattice/integral/integral2D.h | 32 +
src/functors/lattice/integral/integral2D.hh | 32 +
src/functors/lattice/integral/integral3D.h | 34 +
src/functors/lattice/integral/integral3D.hh | 34 +
.../lattice/integral/latticeIntegralCommon.h | 94 ++
src/functors/lattice/integral/module.mk | 27 +
src/functors/lattice/integral/superIntegralF3D.cpp | 35 +
src/functors/lattice/integral/superIntegralF3D.h | 95 ++
src/functors/lattice/integral/superIntegralF3D.hh | 200 +++
src/functors/lattice/integral/superLpNorm2D.cpp | 33 +
src/functors/lattice/integral/superLpNorm2D.h | 106 ++
src/functors/lattice/integral/superLpNorm2D.hh | 133 ++
src/functors/lattice/integral/superLpNorm3D.cpp | 33 +
src/functors/lattice/integral/superLpNorm3D.h | 106 ++
src/functors/lattice/integral/superLpNorm3D.hh | 137 ++
.../lattice/integral/superPlaneIntegralF2D.cpp | 31 +
.../lattice/integral/superPlaneIntegralF2D.h | 203 +++
.../lattice/integral/superPlaneIntegralF2D.hh | 222 +++
.../lattice/integral/superPlaneIntegralF3D.cpp | 31 +
.../lattice/integral/superPlaneIntegralF3D.h | 279 ++++
.../lattice/integral/superPlaneIntegralF3D.hh | 322 ++++
.../lattice/integral/superPlaneIntegralFluxF2D.cpp | 90 ++
.../lattice/integral/superPlaneIntegralFluxF2D.h | 127 ++
.../lattice/integral/superPlaneIntegralFluxF2D.hh | 191 +++
.../lattice/integral/superPlaneIntegralFluxF3D.cpp | 144 ++
.../lattice/integral/superPlaneIntegralFluxF3D.h | 173 +++
.../lattice/integral/superPlaneIntegralFluxF3D.hh | 317 ++++
.../integral/superPlaneIntegralFluxMass2D.cpp | 31 +
.../integral/superPlaneIntegralFluxMass2D.h | 200 +++
.../integral/superPlaneIntegralFluxMass2D.hh | 203 +++
.../integral/superPlaneIntegralFluxMass3D.cpp | 31 +
.../integral/superPlaneIntegralFluxMass3D.h | 240 +++
.../integral/superPlaneIntegralFluxMass3D.hh | 249 ++++
src/functors/lattice/latticeFrameChangeF3D.cpp | 33 +
src/functors/lattice/latticeFrameChangeF3D.h | 130 ++
src/functors/lattice/latticeFrameChangeF3D.hh | 160 ++
src/functors/lattice/module.mk | 27 +
src/functors/lattice/reductionF2D.cpp | 37 +
src/functors/lattice/reductionF2D.h | 84 ++
src/functors/lattice/reductionF2D.hh | 90 ++
src/functors/lattice/reductionF3D.cpp | 47 +
src/functors/lattice/reductionF3D.h | 223 +++
src/functors/lattice/reductionF3D.hh | 542 +++++++
src/functors/lattice/superAverage3D.cpp | 31 +
src/functors/lattice/superAverage3D.h | 74 +
src/functors/lattice/superAverage3D.hh | 115 ++
src/functors/lattice/superBaseF2D.cpp | 44 +
src/functors/lattice/superBaseF2D.h | 139 ++
src/functors/lattice/superBaseF2D.hh | 150 ++
src/functors/lattice/superBaseF3D.cpp | 46 +
src/functors/lattice/superBaseF3D.h | 231 +++
src/functors/lattice/superBaseF3D.hh | 342 +++++
src/functors/lattice/superCalcF2D.cpp | 50 +
src/functors/lattice/superCalcF2D.h | 127 ++
src/functors/lattice/superCalcF2D.hh | 257 ++++
src/functors/lattice/superCalcF3D.cpp | 50 +
src/functors/lattice/superCalcF3D.h | 130 ++
src/functors/lattice/superCalcF3D.hh | 257 ++++
src/functors/lattice/superConst2D.cpp | 33 +
src/functors/lattice/superConst2D.h | 72 +
src/functors/lattice/superConst2D.hh | 58 +
src/functors/lattice/superConst3D.cpp | 33 +
src/functors/lattice/superConst3D.h | 72 +
src/functors/lattice/superConst3D.hh | 58 +
src/functors/lattice/superErrorNorm2D.cpp | 37 +
src/functors/lattice/superErrorNorm2D.h | 94 ++
src/functors/lattice/superErrorNorm2D.hh | 99 ++
src/functors/lattice/superErrorNorm3D.cpp | 37 +
src/functors/lattice/superErrorNorm3D.h | 94 ++
src/functors/lattice/superErrorNorm3D.hh | 99 ++
src/functors/lattice/superGeometryFaces3D.cpp | 31 +
src/functors/lattice/superGeometryFaces3D.h | 70 +
src/functors/lattice/superGeometryFaces3D.hh | 80 +
src/functors/lattice/superLatticeIntegralF2D.cpp | 42 +
src/functors/lattice/superLatticeIntegralF2D.h | 167 +++
src/functors/lattice/superLatticeIntegralF2D.hh | 346 +++++
src/functors/lattice/superLatticeIntegralF3D.cpp | 36 +
src/functors/lattice/superLatticeIntegralF3D.h | 107 ++
src/functors/lattice/superLatticeIntegralF3D.hh | 143 ++
src/functors/lattice/superLatticeLocalF2D.cpp | 49 +
src/functors/lattice/superLatticeLocalF2D.h | 375 +++++
src/functors/lattice/superLatticeLocalF2D.hh | 994 +++++++++++++
src/functors/lattice/superLatticeLocalF3D.cpp | 51 +
src/functors/lattice/superLatticeLocalF3D.h | 494 +++++++
src/functors/lattice/superLatticeLocalF3D.hh | 1269 ++++++++++++++++
.../lattice/superLatticeRefinementMetricF2D.cpp | 35 +
.../lattice/superLatticeRefinementMetricF2D.h | 91 ++
.../lattice/superLatticeRefinementMetricF2D.hh | 142 ++
src/functors/lattice/superLocalAverage2D.cpp | 31 +
src/functors/lattice/superLocalAverage2D.h | 63 +
src/functors/lattice/superLocalAverage2D.hh | 121 ++
src/functors/lattice/superLocalAverage3D.cpp | 31 +
src/functors/lattice/superLocalAverage3D.h | 63 +
src/functors/lattice/superLocalAverage3D.hh | 123 ++
src/functors/lattice/superMax3D.cpp | 33 +
src/functors/lattice/superMax3D.h | 65 +
src/functors/lattice/superMax3D.hh | 117 ++
src/functors/lattice/superMin3D.cpp | 33 +
src/functors/lattice/superMin3D.h | 65 +
src/functors/lattice/superMin3D.hh | 117 ++
.../timeAveraged/superLatticeTimeAveraged2D.h | 96 ++
.../timeAveraged/superLatticeTimeAveraged2D.hh | 197 +++
.../timeAveraged/superLatticeTimeAveraged3D.h | 96 ++
.../timeAveraged/superLatticeTimeAveraged3D.hh | 209 +++
src/functors/lattice/turbulentF3D.cpp | 40 +
src/functors/lattice/turbulentF3D.h | 477 ++++++
src/functors/lattice/turbulentF3D.hh | 1394 ++++++++++++++++++
206 files changed, 28660 insertions(+)
create mode 100644 src/functors/lattice/MakeHeader
create mode 100644 src/functors/lattice/blockAverage3D.cpp
create mode 100644 src/functors/lattice/blockAverage3D.h
create mode 100644 src/functors/lattice/blockAverage3D.hh
create mode 100644 src/functors/lattice/blockBaseF2D.cpp
create mode 100644 src/functors/lattice/blockBaseF2D.h
create mode 100644 src/functors/lattice/blockBaseF2D.hh
create mode 100644 src/functors/lattice/blockBaseF3D.cpp
create mode 100644 src/functors/lattice/blockBaseF3D.h
create mode 100644 src/functors/lattice/blockBaseF3D.hh
create mode 100644 src/functors/lattice/blockCalcF2D.cpp
create mode 100644 src/functors/lattice/blockCalcF2D.h
create mode 100644 src/functors/lattice/blockCalcF2D.hh
create mode 100644 src/functors/lattice/blockCalcF3D.cpp
create mode 100644 src/functors/lattice/blockCalcF3D.h
create mode 100644 src/functors/lattice/blockCalcF3D.hh
create mode 100644 src/functors/lattice/blockGeometryFaces3D.cpp
create mode 100644 src/functors/lattice/blockGeometryFaces3D.h
create mode 100644 src/functors/lattice/blockGeometryFaces3D.hh
create mode 100644 src/functors/lattice/blockLatticeIntegralF2D.cpp
create mode 100644 src/functors/lattice/blockLatticeIntegralF2D.h
create mode 100644 src/functors/lattice/blockLatticeIntegralF2D.hh
create mode 100644 src/functors/lattice/blockLatticeIntegralF3D.cpp
create mode 100644 src/functors/lattice/blockLatticeIntegralF3D.h
create mode 100644 src/functors/lattice/blockLatticeIntegralF3D.hh
create mode 100644 src/functors/lattice/blockLatticeLocalF2D.cpp
create mode 100644 src/functors/lattice/blockLatticeLocalF2D.h
create mode 100644 src/functors/lattice/blockLatticeLocalF2D.hh
create mode 100644 src/functors/lattice/blockLatticeLocalF3D.cpp
create mode 100644 src/functors/lattice/blockLatticeLocalF3D.h
create mode 100644 src/functors/lattice/blockLatticeLocalF3D.hh
create mode 100644 src/functors/lattice/blockLatticeRefinementMetricF2D.cpp
create mode 100644 src/functors/lattice/blockLatticeRefinementMetricF2D.h
create mode 100644 src/functors/lattice/blockLatticeRefinementMetricF2D.hh
create mode 100644 src/functors/lattice/blockLocalAverage2D.cpp
create mode 100644 src/functors/lattice/blockLocalAverage2D.h
create mode 100644 src/functors/lattice/blockLocalAverage2D.hh
create mode 100644 src/functors/lattice/blockLocalAverage3D.cpp
create mode 100644 src/functors/lattice/blockLocalAverage3D.h
create mode 100644 src/functors/lattice/blockLocalAverage3D.hh
create mode 100644 src/functors/lattice/blockMax3D.cpp
create mode 100644 src/functors/lattice/blockMax3D.h
create mode 100644 src/functors/lattice/blockMax3D.hh
create mode 100644 src/functors/lattice/blockMin3D.cpp
create mode 100644 src/functors/lattice/blockMin3D.h
create mode 100644 src/functors/lattice/blockMin3D.hh
create mode 100644 src/functors/lattice/blockReduction2D1D.cpp
create mode 100644 src/functors/lattice/blockReduction2D1D.h
create mode 100644 src/functors/lattice/blockReduction2D1D.hh
create mode 100644 src/functors/lattice/blockReduction2D2D.cpp
create mode 100644 src/functors/lattice/blockReduction2D2D.h
create mode 100644 src/functors/lattice/blockReduction2D2D.hh
create mode 100644 src/functors/lattice/blockReduction3D2D.cpp
create mode 100644 src/functors/lattice/blockReduction3D2D.h
create mode 100644 src/functors/lattice/blockReduction3D2D.hh
create mode 100644 src/functors/lattice/functors2D.h
create mode 100644 src/functors/lattice/functors2D.hh
create mode 100644 src/functors/lattice/functors3D.h
create mode 100644 src/functors/lattice/functors3D.hh
create mode 100644 src/functors/lattice/indicator/MakeHeader
create mode 100644 src/functors/lattice/indicator/blockIndicatorBaseF2D.cpp
create mode 100644 src/functors/lattice/indicator/blockIndicatorBaseF2D.h
create mode 100644 src/functors/lattice/indicator/blockIndicatorBaseF2D.hh
create mode 100644 src/functors/lattice/indicator/blockIndicatorBaseF3D.cpp
create mode 100644 src/functors/lattice/indicator/blockIndicatorBaseF3D.h
create mode 100644 src/functors/lattice/indicator/blockIndicatorBaseF3D.hh
create mode 100644 src/functors/lattice/indicator/blockIndicatorF2D.cpp
create mode 100644 src/functors/lattice/indicator/blockIndicatorF2D.h
create mode 100644 src/functors/lattice/indicator/blockIndicatorF2D.hh
create mode 100644 src/functors/lattice/indicator/blockIndicatorF3D.cpp
create mode 100644 src/functors/lattice/indicator/blockIndicatorF3D.h
create mode 100644 src/functors/lattice/indicator/blockIndicatorF3D.hh
create mode 100644 src/functors/lattice/indicator/indicator2D.h
create mode 100644 src/functors/lattice/indicator/indicator2D.hh
create mode 100644 src/functors/lattice/indicator/indicator3D.h
create mode 100644 src/functors/lattice/indicator/indicator3D.hh
create mode 100644 src/functors/lattice/indicator/module.mk
create mode 100644 src/functors/lattice/indicator/superIndicatorBaseF2D.cpp
create mode 100644 src/functors/lattice/indicator/superIndicatorBaseF2D.h
create mode 100644 src/functors/lattice/indicator/superIndicatorBaseF2D.hh
create mode 100644 src/functors/lattice/indicator/superIndicatorBaseF3D.cpp
create mode 100644 src/functors/lattice/indicator/superIndicatorBaseF3D.h
create mode 100644 src/functors/lattice/indicator/superIndicatorBaseF3D.hh
create mode 100644 src/functors/lattice/indicator/superIndicatorF2D.cpp
create mode 100644 src/functors/lattice/indicator/superIndicatorF2D.h
create mode 100644 src/functors/lattice/indicator/superIndicatorF2D.hh
create mode 100644 src/functors/lattice/indicator/superIndicatorF3D.cpp
create mode 100644 src/functors/lattice/indicator/superIndicatorF3D.h
create mode 100644 src/functors/lattice/indicator/superIndicatorF3D.hh
create mode 100644 src/functors/lattice/integral/MakeHeader
create mode 100644 src/functors/lattice/integral/blockIntegralF3D.cpp
create mode 100644 src/functors/lattice/integral/blockIntegralF3D.h
create mode 100644 src/functors/lattice/integral/blockIntegralF3D.hh
create mode 100644 src/functors/lattice/integral/blockLpNorm2D.cpp
create mode 100644 src/functors/lattice/integral/blockLpNorm2D.h
create mode 100644 src/functors/lattice/integral/blockLpNorm2D.hh
create mode 100644 src/functors/lattice/integral/blockLpNorm3D.cpp
create mode 100644 src/functors/lattice/integral/blockLpNorm3D.h
create mode 100644 src/functors/lattice/integral/blockLpNorm3D.hh
create mode 100644 src/functors/lattice/integral/integral2D.h
create mode 100644 src/functors/lattice/integral/integral2D.hh
create mode 100644 src/functors/lattice/integral/integral3D.h
create mode 100644 src/functors/lattice/integral/integral3D.hh
create mode 100644 src/functors/lattice/integral/latticeIntegralCommon.h
create mode 100644 src/functors/lattice/integral/module.mk
create mode 100644 src/functors/lattice/integral/superIntegralF3D.cpp
create mode 100644 src/functors/lattice/integral/superIntegralF3D.h
create mode 100644 src/functors/lattice/integral/superIntegralF3D.hh
create mode 100644 src/functors/lattice/integral/superLpNorm2D.cpp
create mode 100644 src/functors/lattice/integral/superLpNorm2D.h
create mode 100644 src/functors/lattice/integral/superLpNorm2D.hh
create mode 100644 src/functors/lattice/integral/superLpNorm3D.cpp
create mode 100644 src/functors/lattice/integral/superLpNorm3D.h
create mode 100644 src/functors/lattice/integral/superLpNorm3D.hh
create mode 100644 src/functors/lattice/integral/superPlaneIntegralF2D.cpp
create mode 100644 src/functors/lattice/integral/superPlaneIntegralF2D.h
create mode 100644 src/functors/lattice/integral/superPlaneIntegralF2D.hh
create mode 100644 src/functors/lattice/integral/superPlaneIntegralF3D.cpp
create mode 100644 src/functors/lattice/integral/superPlaneIntegralF3D.h
create mode 100644 src/functors/lattice/integral/superPlaneIntegralF3D.hh
create mode 100644 src/functors/lattice/integral/superPlaneIntegralFluxF2D.cpp
create mode 100644 src/functors/lattice/integral/superPlaneIntegralFluxF2D.h
create mode 100644 src/functors/lattice/integral/superPlaneIntegralFluxF2D.hh
create mode 100644 src/functors/lattice/integral/superPlaneIntegralFluxF3D.cpp
create mode 100644 src/functors/lattice/integral/superPlaneIntegralFluxF3D.h
create mode 100644 src/functors/lattice/integral/superPlaneIntegralFluxF3D.hh
create mode 100644 src/functors/lattice/integral/superPlaneIntegralFluxMass2D.cpp
create mode 100644 src/functors/lattice/integral/superPlaneIntegralFluxMass2D.h
create mode 100644 src/functors/lattice/integral/superPlaneIntegralFluxMass2D.hh
create mode 100644 src/functors/lattice/integral/superPlaneIntegralFluxMass3D.cpp
create mode 100644 src/functors/lattice/integral/superPlaneIntegralFluxMass3D.h
create mode 100644 src/functors/lattice/integral/superPlaneIntegralFluxMass3D.hh
create mode 100644 src/functors/lattice/latticeFrameChangeF3D.cpp
create mode 100644 src/functors/lattice/latticeFrameChangeF3D.h
create mode 100644 src/functors/lattice/latticeFrameChangeF3D.hh
create mode 100644 src/functors/lattice/module.mk
create mode 100644 src/functors/lattice/reductionF2D.cpp
create mode 100644 src/functors/lattice/reductionF2D.h
create mode 100644 src/functors/lattice/reductionF2D.hh
create mode 100644 src/functors/lattice/reductionF3D.cpp
create mode 100644 src/functors/lattice/reductionF3D.h
create mode 100644 src/functors/lattice/reductionF3D.hh
create mode 100644 src/functors/lattice/superAverage3D.cpp
create mode 100644 src/functors/lattice/superAverage3D.h
create mode 100644 src/functors/lattice/superAverage3D.hh
create mode 100644 src/functors/lattice/superBaseF2D.cpp
create mode 100644 src/functors/lattice/superBaseF2D.h
create mode 100644 src/functors/lattice/superBaseF2D.hh
create mode 100644 src/functors/lattice/superBaseF3D.cpp
create mode 100644 src/functors/lattice/superBaseF3D.h
create mode 100644 src/functors/lattice/superBaseF3D.hh
create mode 100644 src/functors/lattice/superCalcF2D.cpp
create mode 100644 src/functors/lattice/superCalcF2D.h
create mode 100644 src/functors/lattice/superCalcF2D.hh
create mode 100644 src/functors/lattice/superCalcF3D.cpp
create mode 100644 src/functors/lattice/superCalcF3D.h
create mode 100644 src/functors/lattice/superCalcF3D.hh
create mode 100644 src/functors/lattice/superConst2D.cpp
create mode 100644 src/functors/lattice/superConst2D.h
create mode 100644 src/functors/lattice/superConst2D.hh
create mode 100644 src/functors/lattice/superConst3D.cpp
create mode 100644 src/functors/lattice/superConst3D.h
create mode 100644 src/functors/lattice/superConst3D.hh
create mode 100644 src/functors/lattice/superErrorNorm2D.cpp
create mode 100644 src/functors/lattice/superErrorNorm2D.h
create mode 100644 src/functors/lattice/superErrorNorm2D.hh
create mode 100644 src/functors/lattice/superErrorNorm3D.cpp
create mode 100644 src/functors/lattice/superErrorNorm3D.h
create mode 100644 src/functors/lattice/superErrorNorm3D.hh
create mode 100644 src/functors/lattice/superGeometryFaces3D.cpp
create mode 100644 src/functors/lattice/superGeometryFaces3D.h
create mode 100644 src/functors/lattice/superGeometryFaces3D.hh
create mode 100644 src/functors/lattice/superLatticeIntegralF2D.cpp
create mode 100644 src/functors/lattice/superLatticeIntegralF2D.h
create mode 100644 src/functors/lattice/superLatticeIntegralF2D.hh
create mode 100644 src/functors/lattice/superLatticeIntegralF3D.cpp
create mode 100644 src/functors/lattice/superLatticeIntegralF3D.h
create mode 100644 src/functors/lattice/superLatticeIntegralF3D.hh
create mode 100644 src/functors/lattice/superLatticeLocalF2D.cpp
create mode 100644 src/functors/lattice/superLatticeLocalF2D.h
create mode 100644 src/functors/lattice/superLatticeLocalF2D.hh
create mode 100644 src/functors/lattice/superLatticeLocalF3D.cpp
create mode 100644 src/functors/lattice/superLatticeLocalF3D.h
create mode 100644 src/functors/lattice/superLatticeLocalF3D.hh
create mode 100644 src/functors/lattice/superLatticeRefinementMetricF2D.cpp
create mode 100644 src/functors/lattice/superLatticeRefinementMetricF2D.h
create mode 100644 src/functors/lattice/superLatticeRefinementMetricF2D.hh
create mode 100644 src/functors/lattice/superLocalAverage2D.cpp
create mode 100644 src/functors/lattice/superLocalAverage2D.h
create mode 100644 src/functors/lattice/superLocalAverage2D.hh
create mode 100644 src/functors/lattice/superLocalAverage3D.cpp
create mode 100644 src/functors/lattice/superLocalAverage3D.h
create mode 100644 src/functors/lattice/superLocalAverage3D.hh
create mode 100644 src/functors/lattice/superMax3D.cpp
create mode 100644 src/functors/lattice/superMax3D.h
create mode 100644 src/functors/lattice/superMax3D.hh
create mode 100644 src/functors/lattice/superMin3D.cpp
create mode 100644 src/functors/lattice/superMin3D.h
create mode 100644 src/functors/lattice/superMin3D.hh
create mode 100644 src/functors/lattice/timeAveraged/superLatticeTimeAveraged2D.h
create mode 100644 src/functors/lattice/timeAveraged/superLatticeTimeAveraged2D.hh
create mode 100644 src/functors/lattice/timeAveraged/superLatticeTimeAveraged3D.h
create mode 100644 src/functors/lattice/timeAveraged/superLatticeTimeAveraged3D.hh
create mode 100644 src/functors/lattice/turbulentF3D.cpp
create mode 100644 src/functors/lattice/turbulentF3D.h
create mode 100644 src/functors/lattice/turbulentF3D.hh
(limited to 'src/functors/lattice')
diff --git a/src/functors/lattice/MakeHeader b/src/functors/lattice/MakeHeader
new file mode 100644
index 0000000..da96b59
--- /dev/null
+++ b/src/functors/lattice/MakeHeader
@@ -0,0 +1,66 @@
+# This file is part of the OpenLB library
+#
+# Copyright (C) 2017 Adrian Kummerlaender
+# E-mail contact: info@openlb.net
+# The most recent release of OpenLB can be downloaded at
+#
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program 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 General Public License for more details.
+#
+# You should have received a copy of the GNU General Public
+# License along with this program; if not, write to the Free
+# Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+# Boston, MA 02110-1301, USA.
+
+
+generic :=
+
+precompiled := blockBaseF2D \
+ blockBaseF3D \
+ blockCalcF2D \
+ blockCalcF3D \
+ blockLatticeIntegralF2D \
+ blockLatticeIntegralF3D \
+ blockLatticeLocalF2D \
+ blockLatticeLocalF3D \
+ blockLocalAverage2D \
+ blockLocalAverage3D \
+ blockReduction2D2D \
+ blockReduction2D1D \
+ blockReduction3D2D \
+ blockMin3D \
+ blockMax3D \
+ blockAverage3D \
+ blockGeometryFaces3D \
+ blockLatticeRefinementMetricF2D \
+ superBaseF2D \
+ superBaseF3D \
+ superCalcF2D \
+ superCalcF3D \
+ superConst2D \
+ superConst3D \
+ superLatticeIntegralF2D \
+ superLatticeIntegralF3D \
+ superLatticeLocalF2D \
+ superLatticeLocalF3D \
+ superLocalAverage2D \
+ superLocalAverage3D \
+ reductionF2D \
+ reductionF3D \
+ turbulentF3D \
+ latticeFrameChangeF3D \
+ superMin3D \
+ superMax3D \
+ superAverage3D \
+ superGeometryFaces3D \
+ superErrorNorm2D \
+ superErrorNorm3D \
+ superLatticeRefinementMetricF2D
diff --git a/src/functors/lattice/blockAverage3D.cpp b/src/functors/lattice/blockAverage3D.cpp
new file mode 100644
index 0000000..b5c5af0
--- /dev/null
+++ b/src/functors/lattice/blockAverage3D.cpp
@@ -0,0 +1,31 @@
+/* This file is part of the OpenLB library
+ *
+ * Copyright (C) 2018 Adrian Kummerlaender
+ * E-mail contact: info@openlb.net
+ * The most recent release of OpenLB can be downloaded at
+ *
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+#include "blockAverage3D.h"
+#include "blockAverage3D.hh"
+
+namespace olb {
+
+template class BlockAverage3D;
+
+}
diff --git a/src/functors/lattice/blockAverage3D.h b/src/functors/lattice/blockAverage3D.h
new file mode 100644
index 0000000..aecebb0
--- /dev/null
+++ b/src/functors/lattice/blockAverage3D.h
@@ -0,0 +1,46 @@
+/* This file is part of the OpenLB library
+ *
+ * Copyright (C) Adrian Kummerlaender
+ * E-mail contact: info@openlb.net
+ * The most recent release of OpenLB can be downloaded at
+ *
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+#ifndef BLOCK_AVERAGE_3D_H
+#define BLOCK_AVERAGE_3D_H
+
+#include "integral/blockIntegralF3D.h"
+#include "geometry/cuboid3D.h"
+#include "indicator/blockIndicatorBaseF3D.h"
+
+namespace olb {
+
+
+/// BlockAverage3D returns the average in each component of f on a indicated subset
+template
+class BlockAverage3D final : public BlockSum3D {
+public:
+ BlockAverage3D(BlockF3D& f,
+ BlockIndicatorF3D& indicatorF);
+ bool operator() (W output[], const int input[]) override;
+};
+
+
+}
+
+#endif
diff --git a/src/functors/lattice/blockAverage3D.hh b/src/functors/lattice/blockAverage3D.hh
new file mode 100644
index 0000000..c49ef19
--- /dev/null
+++ b/src/functors/lattice/blockAverage3D.hh
@@ -0,0 +1,59 @@
+/* This file is part of the OpenLB library
+ *
+ * Copyright (C) Adrian Kummerlaender
+ * E-mail contact: info@openlb.net
+ * The most recent release of OpenLB can be downloaded at
+ *
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+#ifndef BLOCK_AVERAGE_3D_HH
+#define BLOCK_AVERAGE_3D_HH
+
+#include "blockAverage3D.h"
+
+namespace olb {
+
+
+template
+BlockAverage3D::BlockAverage3D(BlockF3D& f,
+ BlockIndicatorF3D& indicatorF)
+ : BlockSum3D(f, indicatorF)
+{
+ this->getName() = "BlockAverage("+f.getName()+")";
+}
+
+template
+bool BlockAverage3D::operator() (W output[], const int input[])
+{
+ for (int i = 0; i < this->getTargetDim(); ++i) {
+ output[i] = W(0);
+ }
+
+ const bool result = BlockSum3D::operator()(output, input);
+
+ for (int i = 0; i < this->getTargetDim()-1; ++i) {
+ output[i] /= output[this->getTargetDim()-1];
+ }
+
+ return result;
+}
+
+
+}
+
+#endif
diff --git a/src/functors/lattice/blockBaseF2D.cpp b/src/functors/lattice/blockBaseF2D.cpp
new file mode 100644
index 0000000..bb908e0
--- /dev/null
+++ b/src/functors/lattice/blockBaseF2D.cpp
@@ -0,0 +1,50 @@
+/* This file is part of the OpenLB library
+ *
+ * Copyright (C) 2013 Albert Mink, Lukas Baron, Mathias J. Krause
+ * E-mail contact: info@openlb.net
+ * The most recent release of OpenLB can be downloaded at
+ *
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+
+#include "blockBaseF2D.h"
+#include "blockBaseF2D.hh"
+#include "blockCalcF2D.hh"
+#include "dynamics/latticeDescriptors.h"
+
+namespace olb {
+
+template class BlockF2D;
+template class BlockF2D;
+template class BlockF2D;
+
+template class BlockDataF2D;
+template class BlockDataF2D;
+
+template class BlockDataViewF2D;
+template class BlockDataViewF2D;
+
+template class BlockIdentity2D;
+template class BlockIdentity2D;
+template class BlockIdentity2D;
+
+template class BlockLatticeF2D>;
+template class BlockLatticePhysF2D>;
+
+}
+
diff --git a/src/functors/lattice/blockBaseF2D.h b/src/functors/lattice/blockBaseF2D.h
new file mode 100644
index 0000000..9dda191
--- /dev/null
+++ b/src/functors/lattice/blockBaseF2D.h
@@ -0,0 +1,140 @@
+/* This file is part of the OpenLB library
+ *
+ * Copyright (C) 2013 Albert Mink, Lukas Baron, Mathias J. Krause
+ * E-mail contact: info@openlb.net
+ * The most recent release of OpenLB can be downloaded at
+ *
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+ */
+
+
+#ifndef BLOCK_BASE_F_2D_H
+#define BLOCK_BASE_F_2D_H
+
+#include "functors/genericF.h"
+#include "core/blockStructure2D.h"
+#include "core/blockData2D.h"
+#include "core/blockLatticeStructure2D.h"
+#include "core/unitConverter.h"
+
+#include
+#include
+
+/** Note: Throughout the whole source code directory genericFunctions, the
+ * template parameters for i/o dimensions are:
+ * F: S^m -> T^n (S=source, T=target)
+ */
+
+namespace olb {
+
+/// represents all functors that operate on a cuboid in general, mother class of BlockLatticeF, ..
+template
+class BlockF2D : public GenericF {
+protected:
+ BlockF2D(BlockStructure2D& blockStructure, int targetDim);
+ BlockF2D(int targetDim);
+ BlockStructure2D* _blockStructure;
+public:
+ // virtual due to BlockReduction2D1D
+ virtual BlockStructure2D& getBlockStructure();
+ void setBlockStructure(BlockStructure2D* blockStructure);
+
+ // not used anymore? blockData2D computes min/max as well
+ /// computes min/maxValue of blockStructure, [iDim]
+ // std::vector getMinValue();
+ // std::vector getMaxValue();
+
+ BlockF2D& operator-(BlockF2D& rhs);
+ BlockF2D& operator+(BlockF2D& rhs);
+ BlockF2D& operator*(BlockF2D& rhs);
+ BlockF2D& operator/(BlockF2D& rhs);
+};
+
+/// BlockDataF2D can store data of any BlockF2D
+template
+class BlockDataF2D : public BlockF2D {
+protected:
+ /// used for BlockReduction2D1D to build BlockData2D by the constructor
+ BlockDataF2D(int nx, int ny, int size=1);
+
+ std::unique_ptr> _blockDataStorage;
+ BlockData2D& _blockData;
+public:
+ BlockDataF2D(BlockData2D& blockData);
+ /// to store functor data, constuctor creates _blockData with functor data
+ BlockDataF2D(BlockF2D& f);
+ /// returns _blockData
+ BlockData2D& getBlockData();
+ /// access to _blockData via its get()
+ bool operator() (T output[], const int input[]) override;
+};
+
+/// Overlap-aware version of BlockDataF2D for usage in SuperDataF2D
+template
+class BlockDataViewF2D : public BlockDataF2D {
+private:
+ const int _overlap;
+public:
+ BlockDataViewF2D(BlockData2D& blockData, int overlap);
+ /// access to _blockData shifted by overlap
+ bool operator() (T output[], const int input[]) override;
+};
+
+/// identity functor
+template
+class BlockIdentity2D final : public BlockF2D {
+protected:
+ BlockF2D& _f;
+public:
+ BlockIdentity2D(BlockF2D& f);
+ // access operator should not delete f, since f still has the identity as child
+ bool operator() (T output[], const int input[]) override;
+};
+
+/// represents all functors that operate on a DESCRIPTOR in general, e.g. getVelocity(), getForce(), getPressure()
+template
+class BlockLatticeF2D : public BlockF2D {
+protected:
+ BlockLatticeF2D(BlockLatticeStructure2D& blockLattice, int targetDim);
+ BlockLatticeStructure2D& _blockLattice;
+public:
+ BlockLatticeStructure2D& getBlockLattice();
+};
+
+/// represents all functors that operate on a DESCRIPTOR with output in Phys, e.g. physVelocity(), physForce(), physPressure()
+template
+class BlockLatticePhysF2D : public BlockLatticeF2D {
+protected:
+ BlockLatticePhysF2D(BlockLatticeStructure2D& blockLattice,
+ const UnitConverter& converter, int targetDim);
+ const UnitConverter& _converter;
+};
+
+
+/// represents all thermal functors that operate on a DESCRIPTOR with output in Phys, e.g. physTemperature(), physHeatFlux()
+template
+class BlockLatticeThermalPhysF2D : public BlockLatticeF2D {
+protected:
+ BlockLatticeThermalPhysF2D(BlockLatticeStructure2D& blockLattice,
+ const ThermalUnitConverter& converter, int targetDim);
+ const ThermalUnitConverter& _converter;
+};
+
+
+} // end namespace olb
+
+#endif
diff --git a/src/functors/lattice/blockBaseF2D.hh b/src/functors/lattice/blockBaseF2D.hh
new file mode 100644
index 0000000..e4aa37a
--- /dev/null
+++ b/src/functors/lattice/blockBaseF2D.hh
@@ -0,0 +1,195 @@
+/* This file is part of the OpenLB library
+ *
+ * Copyright (C) 2013 Albert Mink, Lukas Baron, Mathias J. Krause
+ * E-mail contact: info@openlb.net
+ * The most recent release of OpenLB can be downloaded at
+ *
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+#ifndef BLOCK_BASE_F_2D_HH
+#define BLOCK_BASE_F_2D_HH
+
+#include "blockBaseF2D.h"
+
+namespace olb {
+
+
+// BlockF2D
+template
+BlockF2D::BlockF2D(BlockStructure2D& blockStructure, int targetDim)
+ : GenericF(targetDim,2), _blockStructure(&blockStructure) { }
+
+template
+BlockF2D::BlockF2D(int targetDim)
+ : GenericF(targetDim,2), _blockStructure(nullptr) { }
+
+template
+BlockStructure2D& BlockF2D::getBlockStructure()
+{
+ return *_blockStructure;
+}
+
+template
+void BlockF2D::setBlockStructure(BlockStructure2D* blockStructure)
+{
+ _blockStructure = blockStructure;
+}
+
+//template
+//std::vector BlockF2D::getMinValue()
+//{
+// T min[this->getTargetDim()];
+// T minTmp[this->getTargetDim()];
+// this->operator()(min,0,0);
+// for (int iX = 1; iX < _blockStructure.getNx(); ++iX) {
+// for (int iY = 1; iY < _blockStructure.getNy(); ++iY) {
+// this->operator()(minTmp,iX,iY);
+// for (int iDim = 0; iDim < this->getTargetDim(); ++iDim) {
+// if (min[iDim] > minTmp[iDim] ) {
+// min[iDim] = minTmp[iDim];
+// }
+// }
+// }
+// }
+// std::vector minV(min,min+this->getTargetDim());
+// return minV;
+//}
+
+
+//template
+//std::vector BlockF2D::getMaxValue()
+//{
+// T max[this->getTargetDim()];
+// T maxTmp[this->getTargetDim()];
+// this->operator()(max,0,0);
+// for (int iX = 1; iX < _blockStructure.getNx(); ++iX) {
+// for (int iY = 1; iY < _blockStructure.getNy(); ++iY) {
+// this->operator()(maxTmp,iX,iY);
+// for (int iDim = 0; iDim < this->getTargetDim(); ++iDim) {
+// if (max[iDim] > maxTmp[iDim] ) {
+// max[iDim] = maxTmp[iDim];
+// }
+// }
+// }
+// }
+// std::vector maxV(max,max+this->getTargetDim());
+// return maxV;
+//}
+
+
+template
+BlockDataF2D::BlockDataF2D(BlockData2D& blockData)
+ : BlockF2D(blockData, blockData.getSize()),
+ _blockData(blockData)
+{ }
+
+template
+BlockDataF2D::BlockDataF2D(BlockF2D& f)
+ : BlockF2D(f.getBlockStructure(), f.getTargetDim()),
+ _blockDataStorage(new BlockData2D(f)),
+ _blockData(*_blockDataStorage)
+{ }
+
+template
+BlockDataF2D::BlockDataF2D(int nx, int ny, int size)
+ // hacky solution to both managing BlockData2D using std::unique_ptr and
+ // passing it down the line to the base class
+ : BlockF2D(*(new BlockData2D(nx, ny, size)), size),
+ _blockDataStorage(static_cast*>(&(this->getBlockStructure()))),
+ _blockData(*_blockDataStorage)
+{ }
+
+template
+BlockData2D& BlockDataF2D::getBlockData()
+{
+ return _blockData;
+}
+
+template
+bool BlockDataF2D::operator()(T output[], const int input[])
+{
+ for (int iDim = 0; iDim < this->getTargetDim(); ++iDim) {
+ output[iDim] = static_cast(_blockData.get(input[0], input[1], iDim));
+ }
+ return true;
+}
+
+
+template
+BlockDataViewF2D::BlockDataViewF2D(BlockData2D& blockData, int overlap)
+ : BlockDataF2D(blockData),
+ _overlap(overlap)
+{ }
+
+template
+bool BlockDataViewF2D::operator() (T output[], const int input[])
+{
+ for (int iDim = 0; iDim < this->getTargetDim(); ++iDim) {
+ output[iDim] = this->_blockData.get(input[0] + _overlap,
+ input[1] + _overlap,
+ iDim);
+ }
+ return true;
+}
+
+
+// BlockIdendity2D
+template
+BlockIdentity2D::BlockIdentity2D(BlockF2D& f)
+ : BlockF2D(f.getBlockStructure() ,f.getTargetDim() ), _f(f)
+{
+ this->getName() = _f.getName();
+ std::swap( _f._ptrCalcC, this->_ptrCalcC );
+}
+
+template
+bool BlockIdentity2D::operator()(T output[], const int input[])
+{
+ _f(output,input);
+ return true;
+}
+
+
+// BlockLatticeF2D
+template
+BlockLatticeF2D::BlockLatticeF2D
+(BlockLatticeStructure2D& blockStructure, int targetDim)
+ : BlockF2D(blockStructure, targetDim), _blockLattice(blockStructure) { }
+
+template
+BlockLatticeStructure2D& BlockLatticeF2D::getBlockLattice()
+{
+ return _blockLattice;
+}
+
+
+template
+BlockLatticePhysF2D::BlockLatticePhysF2D
+(BlockLatticeStructure2D& blockLattice, const UnitConverter& converter, int targetDim)
+ : BlockLatticeF2D(blockLattice, targetDim), _converter(converter)
+{ }
+
+template
+BlockLatticeThermalPhysF2D::BlockLatticeThermalPhysF2D
+(BlockLatticeStructure2D& blockLattice, const ThermalUnitConverter& converter, int targetDim)
+ : BlockLatticeF2D(blockLattice, targetDim), _converter(converter)
+{ }
+
+} // end namespace olb
+
+#endif
diff --git a/src/functors/lattice/blockBaseF3D.cpp b/src/functors/lattice/blockBaseF3D.cpp
new file mode 100644
index 0000000..56bf695
--- /dev/null
+++ b/src/functors/lattice/blockBaseF3D.cpp
@@ -0,0 +1,47 @@
+/* This file is part of the OpenLB library
+ *
+ * Copyright (C) 2012 Lukas Baron, Mathias J. Krause, Albert Mink
+ * E-mail contact: info@openlb.net
+ * The most recent release of OpenLB can be downloaded at
+ *
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+
+#include "blockBaseF3D.h"
+#include "blockBaseF3D.hh"
+#include "blockCalcF3D.hh"
+#include "dynamics/latticeDescriptors.h"
+
+namespace olb {
+
+template class BlockF3D;
+template class BlockF3D;
+template class BlockF3D;
+
+template class BlockDataF3D;
+template class BlockDataViewF3D;
+
+template class BlockIdentity3D;
+template class BlockIdentity3D;
+template class BlockIdentity3D;
+
+template class BlockLatticeF3D>;
+template class BlockLatticeIdentity3D>;
+template class BlockLatticePhysF3D>;
+
+}
diff --git a/src/functors/lattice/blockBaseF3D.h b/src/functors/lattice/blockBaseF3D.h
new file mode 100644
index 0000000..d64ff50
--- /dev/null
+++ b/src/functors/lattice/blockBaseF3D.h
@@ -0,0 +1,204 @@
+/* This file is part of the OpenLB library
+ *
+ * Copyright (C) 2012 Lukas Baron, Mathias J. Krause, Albert Mink
+ * E-mail contact: info@openlb.net
+ * The most recent release of OpenLB can be downloaded at
+ *
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+#ifndef BLOCK_BASE_F_3D_H
+#define BLOCK_BASE_F_3D_H
+
+#include "functors/genericF.h"
+#include "core/blockData3D.h"
+#include "core/blockStructure3D.h"
+#include "core/blockLatticeStructure3D.h"
+#include "core/unitConverter.h"
+
+#include
+
+/** Note: Throughout the whole source code directory genericFunctions, the
+ * template parameters for i/o dimensions are:
+ * F: S^m -> T^n (S=source, T=target)
+ */
+
+namespace olb {
+
+
+/// represents all functors that operate on a cuboid in general, mother class of BlockLatticeF, ..
+template
+class BlockF3D : public GenericF {
+protected:
+ BlockF3D(BlockStructure3D& blockStructure, int targetDim);
+ BlockStructure3D& _blockStructure;
+public:
+ /// virtual destructor for defined behaviour
+ ~BlockF3D() override {};
+ virtual BlockStructure3D& getBlockStructure() const;
+
+ std::vector getMinValue();
+ std::vector getMaxValue();
+
+ BlockF3D& operator-(BlockF3D& rhs);
+ BlockF3D& operator+(BlockF3D& rhs);
+ BlockF3D& operator*(BlockF3D& rhs);
+ BlockF3D& operator/(BlockF3D& rhs);
+};
+
+/// BlockDataF3D can store data of any BlockFunctor3D
+template
+class BlockDataF3D : public BlockF3D {
+protected:
+ BlockDataF3D(int nx, int ny, int nz, int size=1);
+
+ std::unique_ptr> _blockDataStorage;
+ BlockData3D& _blockData;
+public:
+ /// Constructor
+ BlockDataF3D(BlockData3D& blockData);
+ /// to store functor data, constuctor creates _blockData with functor data
+ BlockDataF3D(BlockF3D& f);
+ /// returns _blockData
+ BlockData3D& getBlockData();
+ /// access to _blockData via its get()
+ bool operator() (BaseType output[], const int input[]) override;
+};
+
+/// Overlap-aware version of BlockDataF3D for usage in SuperDataF3D
+template
+class BlockDataViewF3D : public BlockDataF3D {
+private:
+ const int _overlap;
+public:
+ BlockDataViewF3D(BlockData3D& blockData, int overlap);
+ /// access to _blockData shifted by overlap
+ bool operator() (BaseType output[], const int input[]) override;
+};
+
+/// identity functor
+template
+class BlockIdentity3D final : public BlockF3D {
+protected:
+ BlockF3D& _f;
+public:
+ BlockIdentity3D(BlockF3D& f);
+ // access operator should not delete f, since f still has the identity as child
+ bool operator() (T output[], const int input[]) override;
+};
+
+/// functor to extract one component
+template
+class BlockExtractComponentF3D : public BlockF3D {
+protected:
+ BlockF3D& _f;
+ int _extractDim;
+public:
+ BlockExtractComponentF3D(BlockF3D& f, int extractDim);
+ int getExtractDim();
+ bool operator() (T output[], const int input[]);
+};
+
+/// functor to extract one component inside an indicator
+template
+class BlockExtractComponentIndicatorF3D : public BlockExtractComponentF3D {
+protected:
+ BlockIndicatorF3D& _indicatorF;
+public:
+ BlockExtractComponentIndicatorF3D(BlockF3D& f, int extractDim,
+ BlockIndicatorF3D& indicatorF);
+ bool operator() (T output[], const int input[]) override;
+};
+
+/// functor to extract data inside an indicator
+template
+class BlockExtractIndicatorF3D : public BlockF3D {
+protected:
+ BlockF3D& _f;
+ BlockIndicatorF3D& _indicatorF;
+public:
+ BlockExtractIndicatorF3D(BlockF3D& f,
+ BlockIndicatorF3D& indicatorF);
+ bool operator() (T output[], const int input[]);
+};
+
+/// functor to extract one component
+template
+class BlockDotProductF3D : public BlockF3D {
+protected:
+ BlockF3D& _f;
+ T _vector[];
+public:
+ BlockDotProductF3D(BlockF3D& f, T vector[]);
+ bool operator() (T output[], const int input[]);
+};
+
+
+/// represents all functors that operate on a DESCRIPTOR in general, e.g. getVelocity(), getForce(), getPressure()
+template
+class BlockLatticeF3D : public BlockF3D {
+protected:
+ BlockLatticeF3D(BlockLatticeStructure3D& blockLattice, int targetDim);
+ BlockLatticeStructure3D& _blockLattice;
+public:
+ /// Copy Constructor
+ //BlockLatticeF3D(BlockLatticeF3D const& rhs);
+ /// Assignment Operator
+ //BlockLatticeF3D& operator=(BlockLatticeF3D const& rhs);
+
+ BlockLatticeStructure3D& getBlockLattice();
+};
+
+
+/// identity functor
+template
+class BlockLatticeIdentity3D final : public BlockLatticeF3D {
+protected:
+ BlockLatticeF3D& _f;
+public:
+ BlockLatticeIdentity3D(BlockLatticeF3D& f);
+ bool operator() (T output[], const int input[]) override;
+};
+
+
+/// represents all functors that operate on a DESCRIPTOR with output in Phys, e.g. physVelocity(), physForce(), physPressure()
+template
+class BlockLatticePhysF3D : public BlockLatticeF3D {
+protected:
+ const UnitConverter& _converter;
+ BlockLatticePhysF3D(BlockLatticeStructure3D& blockLattice,
+ const UnitConverter& converter, int targetDim);
+public:
+ /// Copy Constructor
+ //BlockLatticePhysF3D(BlockLatticePhysF3D const& rhs);
+ /// Assignment Operator
+ //BlockLatticePhysF3D& operator=(BlockLatticePhysF3D const& rhs);
+};
+
+/// represents all thermal functors that operate on a DESCRIPTOR with output in Phys, e.g. physTemperature(), physHeatFlux()
+template
+class BlockLatticeThermalPhysF3D : public BlockLatticeF3D {
+protected:
+ BlockLatticeThermalPhysF3D(BlockLatticeStructure3D& blockLattice,
+ const ThermalUnitConverter& converter, int targetDim);
+ const ThermalUnitConverter& _converter;
+};
+
+
+} // end namespace olb
+
+#endif
diff --git a/src/functors/lattice/blockBaseF3D.hh b/src/functors/lattice/blockBaseF3D.hh
new file mode 100644
index 0000000..a8cf79d
--- /dev/null
+++ b/src/functors/lattice/blockBaseF3D.hh
@@ -0,0 +1,309 @@
+/* This file is part of the OpenLB library
+ *
+ * Copyright (C) 2012 Lukas Baron, Mathias J. Krause, Albert Mink
+ * E-mail contact: info@openlb.net
+ * The most recent release of OpenLB can be downloaded at
+ *
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this program; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301, USA.
+*/
+
+#ifndef BLOCK_BASE_F_3D_HH
+#define BLOCK_BASE_F_3D_HH
+
+#include "blockBaseF3D.h"
+
+namespace olb {
+
+
+template
+BlockF3D::BlockF3D(BlockStructure3D& blockStructure, int targetDim)
+ : GenericF(targetDim,3), _blockStructure(blockStructure) { }
+
+template
+BlockStructure3D& BlockF3D::getBlockStructure() const
+{
+ return _blockStructure;
+}
+
+template
+std::vector BlockF3D::getMinValue()
+{
+ T min[this->getTargetDim()];
+ T minTmp[this->getTargetDim()];
+ this->operator()(min,0,0);
+ for (int iX = 1; iX < _blockStructure.getNx(); ++iX) {
+ for (int iY = 1; iY < _blockStructure.getNy(); ++iY) {
+ for (int iZ = 1; iZ < _blockStructure.getNz(); ++iZ) {
+ this->operator()(minTmp,iX,iY,iZ);
+ for (int iDim = 0; iDim < this->getTargetDim(); ++iDim) {
+ if (min[iDim] > minTmp[iDim] ) {
+ min[iDim] = minTmp[iDim];
+ }
+ }
+ }
+ }
+ }
+ std::vector minV(min,min+this->getTargetDim());
+ return minV;
+}
+
+
+template
+std::vector BlockF3D::getMaxValue()
+{
+ T max[this->getTargetDim()];
+ T maxTmp[this->getTargetDim()];
+ this->operator()(max,0,0);
+ for (int iX = 1; iX < _blockStructure.getNx(); ++iX) {
+ for (int iY = 1; iY < _blockStructure.getNy(); ++iY) {
+ for (int iZ = 1; iZ < _blockStructure.getNz(); ++iZ) {
+ this->operator()(maxTmp,iX,iY,iZ);
+ for (int iDim = 0; iDim < this->getTargetDim(); ++iDim) {
+ if (max[iDim] > maxTmp[iDim] ) {
+ max[iDim] = maxTmp[iDim];
+ }
+ }
+ }
+ }
+ }
+ std::vector maxV(max,max+this->getTargetDim());
+ return maxV;
+}
+
+
+template
+BlockDataF3D::BlockDataF3D(BlockData3D& blockData)
+ : BlockF3D(blockData, blockData.getSize()),
+ _blockData(blockData)
+{ }
+
+template
+BlockDataF3D::BlockDataF3D(BlockF3D& f)
+ : BlockF3D(f.getBlockStructure(), f.getTargetDim()),
+ _blockDataStorage(new BlockData3D(f)),
+ _blockData(*_blockDataStorage)
+{ }
+
+template
+BlockDataF3D::BlockDataF3D(int nx, int ny, int nz, int size)
+// hacky solution to both managing BlockData3D using std::unique_ptr and
+// passing it down the line to the base class
+ : BlockF3D(*(new BlockData3D(nx, ny, nz, size)), size),
+ _blockDataStorage(static_cast*>(&(this->getBlockStructure()))),
+ _blockData(*_blockDataStorage)
+{ }
+
+template
+BlockData3D& BlockDataF3D::getBlockData()
+{
+ return _blockData;
+}
+
+template
+bool BlockDataF3D::operator() (BaseType output[], const int input[])
+{
+ for (int iDim = 0; iDim < this->getTargetDim(); ++iDim) {
+ output[iDim] = _blockData.get(input[0], input[1], input[2], iDim);
+ }
+ return true;
+}
+
+
+template
+BlockDataViewF3D::BlockDataViewF3D(BlockData3D& blockData, int overlap)
+ : BlockDataF3D(blockData),
+ _overlap(overlap)
+{ }
+
+template
+bool BlockDataViewF3D