openfoam/applications/utilities/preProcessing/PDR/pdrFields/PDRsetFields.H
2020-12-11 20:24:24 +00:00

143 lines
5.1 KiB
C++

/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | www.openfoam.com
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2016 Shell Research Ltd.
Copyright (C) 2019 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 <http://www.gnu.org/licenses/>.
Description
Preparation of fields for PDRFoam
\*---------------------------------------------------------------------------*/
#ifndef PDRsetFields_H
#define PDRsetFields_H
#include "PDRarrays.H"
#include "PDRblock.H"
#include "PDRmeshArrays.H"
#include "PDRobstacle.H"
#include "PDRpatchDef.H"
#include "PDRparams.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
using namespace Foam;
//YCYCLIC is set to 1 for running the test cases with a cyclic boundry condition in the y direction
//TWO_D is set to 1 for running the 2D test cases (no z direction) - usually same case as YCYCLIC
//Now specified in CAD_PDRDict and read in as globals.
// The program also labels intersection obstacles as types 96 and 86, but not then use these values
// Obstacles in group definitions have a multiple of 100 added to the type number
#define floatSMALL 1.e-10
// Default initial values of field variables, used outside congested area,
//and everywhere for uniform fields. They atre strings because same routines
//are used to create b.c.s for scalars and tensors.
#define DEFAULT_K 0.00015
#define DEFAULT_EPS 1e-5
#define DEFAULT_T 300
#define DEFAULT_P 100000
#define DEFAULT_SU 0.5
#define DEFAULT_LOBS 0.1 // Does not matter what it is outside congestion
// but zero would cause problems with Ep
#define DEFAULT_EP 0.01 // Gives length scale 0.1, calc. as (Xp-0.999)/Ep with Xp=1
// Boundary conditions on walls for all variables where it is not "zero_gradient"
#define K_WALL_FN "kqRWallFunction"
#define EPS_WALL_FN "epsilonWallFunction"
#define ALPHAT_WALL "nutkWallFunction"
#define MUT_WALL_FN "mutkWallFunction"
#define NUT_WALL_FN "nutkWallFunction"
#define K_WALL_FN_LEGACY "compressible::kqRWallFunction"
#define EPS_WALL_FN_LEGACY "compressible::epsilonWallFunction"
#define ALPHAT_WALL_FN_LEGACY "alphatWallFunction;\n\t\tPrt\t0.85"
// The following parameters are used to decide when there arMAX_Ne sufficient (parts of)
// obstacles ina cell for them to define the length scale of the generated turbulence.
#define MIN_AB_FOR_SIZE 0.002
#define MAX_VB_FOR_SIZE 0.9
#define COUNT_FOR_SIZE 0.1
#define MIN_COUNT_FOR_SIZE 0.05
// These define how blocked a face or cell has to be for removal from the mesh
//#define BLOCKED_CELL_PAR 0.05 //<- Now pars.blockedCellPoros
//#define BLOCKED_FACE_PAR 0.95 //<- Now pars.blockedFacePar
//- Calculate block/block overlaps
//
// Binary self-intersections are to be checked for blocks.
// Resulting negative blocks are appended to blocks.
// These new blocks have the opposite sign from input blocks, and
// blockage multiplied by multiplier.
//
// If the number of newly generated blocks is required, check the size
// of blocks on output vs input to see how many have been added.
//
// \param[in,out] blocks
// \param[in] range - the range within blocks to be examined
//
// \return overlap volume
scalar block_overlap
(
DynamicList<PDRobstacle>& blocks,
const labelRange& range,
const scalar multiplier = 1.0
);
//- Calculate block/cylinder overlaps
//
// Binary intersections are to be checked for blocks and cylinders.
// Resulting negative blocks are appended to blocks.
// These new blocks have the opposite sign from input blocks, and
// blockage multiplied by multiplier.
//
// If the number of newly generated blocks is required, check the size
// of blocks on output vs input to see how many have been added.
//
// \param[in,out] arrp
// \param[in,out] blocks
// \param[in] range - the range within blocks to be examined
// \param[in] cylinders - the cylinders to be examined
//
// \return overlap volume
scalar block_cylinder_overlap
(
DynamicList<PDRobstacle>& blocks,
const labelRange& range,
const UList<PDRobstacle>& cylinders
);
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //