From ab5f6dbf4145a0fc955e7533938af9e007f05595 Mon Sep 17 00:00:00 2001 From: Andrew Heather <> Date: Fri, 14 Jun 2024 16:53:28 +0100 Subject: [PATCH] ENH: Added new createViewFactors utility Creates view factors for the view factor radiation model. User-selectable models: - raySearchEngine: model to generate rays, i.e. face-to-face connections - viewFactorModel: model to compute the view factors For visualisation, use: - Write the view factors as a volume field writeViewFactors yes; - Write the rays using OBJ format: writeRays yes; // default = no Participating patches must be in the \c vewFactorWall group, i.e. using the \c inGroups entry of the "\/polyMesh/boundary" file. \verbatim myPatch { type wall; inGroups 2(wall viewFactorWall); ... } \endverbatim Reads: - /viewFactorsDict : main controls - /finalAgglom : agglomeration addressing (from faceAgglomerate) Generates: - /F : view factors (matrix) - /mapDist : map used for parallel running - /globalFaceFaces : face addressing --- .../preProcessing/createViewFactors/Allwmake | 11 + .../createViewFactors/Make/files | 3 + .../createViewFactors/Make/options | 7 + .../createViewFactors/createViewFactors.C | 165 +++ .../viewFactorModels/Make/files | 12 + .../viewFactorModels/Make/options | 14 + .../raySearchEngine/raySearchEngine.C | 620 ++++++++++++ .../raySearchEngine/raySearchEngine.H | 289 ++++++ .../raySearchEngine/raySearchEngineI.H | 101 ++ .../raySearchEngine/raySearchEngineNew.C | 59 ++ .../raySearchEngineTemplates.C | 86 ++ .../voxel/voxelRaySearchEngine.C | 948 ++++++++++++++++++ .../voxel/voxelRaySearchEngine.H | 284 ++++++ .../voxel/voxelRaySearchEngineI.H | 155 +++ .../viewFactor2AI/viewFactor2AI.C | 138 +++ .../viewFactor2AI/viewFactor2AI.H | 117 +++ .../viewFactor2LI/viewFactor2LI.C | 141 +++ .../viewFactor2LI/viewFactor2LI.H | 130 +++ .../viewFactorHottel/viewFactorHottel.C | 153 +++ .../viewFactorHottel/viewFactorHottel.H | 135 +++ .../viewFactorModel/viewFactorModel.C | 290 ++++++ .../viewFactorModel/viewFactorModel.H | 185 ++++ .../viewFactorModel/viewFactorModelNew.C | 72 ++ 23 files changed, 4115 insertions(+) create mode 100755 applications/utilities/preProcessing/createViewFactors/Allwmake create mode 100644 applications/utilities/preProcessing/createViewFactors/createViewFactors/Make/files create mode 100644 applications/utilities/preProcessing/createViewFactors/createViewFactors/Make/options create mode 100644 applications/utilities/preProcessing/createViewFactors/createViewFactors/createViewFactors.C create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/Make/files create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/Make/options create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/raySearchEngine/raySearchEngine/raySearchEngine.C create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/raySearchEngine/raySearchEngine/raySearchEngine.H create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/raySearchEngine/raySearchEngine/raySearchEngineI.H create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/raySearchEngine/raySearchEngine/raySearchEngineNew.C create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/raySearchEngine/raySearchEngine/raySearchEngineTemplates.C create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/raySearchEngine/voxel/voxelRaySearchEngine.C create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/raySearchEngine/voxel/voxelRaySearchEngine.H create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/raySearchEngine/voxel/voxelRaySearchEngineI.H create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/viewFactorModel/viewFactor2AI/viewFactor2AI.C create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/viewFactorModel/viewFactor2AI/viewFactor2AI.H create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/viewFactorModel/viewFactor2LI/viewFactor2LI.C create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/viewFactorModel/viewFactor2LI/viewFactor2LI.H create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/viewFactorModel/viewFactorHottel/viewFactorHottel.C create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/viewFactorModel/viewFactorHottel/viewFactorHottel.H create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/viewFactorModel/viewFactorModel/viewFactorModel.C create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/viewFactorModel/viewFactorModel/viewFactorModel.H create mode 100644 applications/utilities/preProcessing/createViewFactors/viewFactorModels/viewFactorModel/viewFactorModel/viewFactorModelNew.C diff --git a/applications/utilities/preProcessing/createViewFactors/Allwmake b/applications/utilities/preProcessing/createViewFactors/Allwmake new file mode 100755 index 0000000000..9de13a5b03 --- /dev/null +++ b/applications/utilities/preProcessing/createViewFactors/Allwmake @@ -0,0 +1,11 @@ +#!/bin/sh +cd "${0%/*}" || exit # Run from this directory + + . "$WM_PROJECT_DIR"/wmake/scripts/AllwmakeParseArguments + +#------------------------------------------------------------------------------ + +wmake $targetType viewFactorModels +wmake $targetType createViewFactors + +#------------------------------------------------------------------------------ diff --git a/applications/utilities/preProcessing/createViewFactors/createViewFactors/Make/files b/applications/utilities/preProcessing/createViewFactors/createViewFactors/Make/files new file mode 100644 index 0000000000..3f36ae84ca --- /dev/null +++ b/applications/utilities/preProcessing/createViewFactors/createViewFactors/Make/files @@ -0,0 +1,3 @@ +createViewFactors.C + +EXE = $(FOAM_APPBIN)/createViewFactors diff --git a/applications/utilities/preProcessing/createViewFactors/createViewFactors/Make/options b/applications/utilities/preProcessing/createViewFactors/createViewFactors/Make/options new file mode 100644 index 0000000000..71f2b983ab --- /dev/null +++ b/applications/utilities/preProcessing/createViewFactors/createViewFactors/Make/options @@ -0,0 +1,7 @@ +EXE_INC = \ + -I../viewFactorModels/lnInclude \ + -I$(LIB_SRC)/finiteVolume/lnInclude + +EXE_LIBS = \ + -lviewFactorModels \ + -lfiniteVolume diff --git a/applications/utilities/preProcessing/createViewFactors/createViewFactors/createViewFactors.C b/applications/utilities/preProcessing/createViewFactors/createViewFactors/createViewFactors.C new file mode 100644 index 0000000000..84ad369a99 --- /dev/null +++ b/applications/utilities/preProcessing/createViewFactors/createViewFactors/createViewFactors.C @@ -0,0 +1,165 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | www.openfoam.com + \\/ M anipulation | +------------------------------------------------------------------------------- + Copyright (C) 2023 OpenCFD Ltd. +------------------------------------------------------------------------------- +License + This file is part of OpenFOAM. + + OpenFOAM 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 3 of the License, or + (at your option) any later version. + + OpenFOAM 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 OpenFOAM. If not, see . + +Application + createViewFactors + +Group + grpPreProcessingUtilities + +Description + Creates view factors to be used in the view-factor radiation model. + + Operands: + \table + Operand | Type | Location + input | dictionary | \/viewFactorsDict + input | dictionary | \/finalAgglom + output | scalarListList | \/F + output | mapDistribute | \/mapDist + output | labelListList | \/globalFaceFaces + output | volScalarField | \/viewVectorField + output | OBJ | allVisibleFaces.obj + \endtable + + where the dictionaries mean: + \table + Dictionary | Description + viewFactorsDict | Main-control dictionary + finalAgglom | (Optional) Agglomeration addressing (from faceAgglomerate) + F | View factors (matrix) + mapDist | Map used for parallel running + globalFaceFaces | Face addressing + viewVectorField | View factors as a volume field + allVisibleFaces.obj | The visualisation of the rays + \endtable + +Usage + Minimal example in \c /viewFactorsDict: + \verbatim + // Inherited entries + raySearchEngine ; + agglomerate ; + nRayPerFace