diff --git a/src/lagrangian/intermediate/parcels/include/makeParcelInjectionModels.H b/src/lagrangian/intermediate/parcels/include/makeParcelInjectionModels.H index 948dd463a6..76e6c0b5d1 100644 --- a/src/lagrangian/intermediate/parcels/include/makeParcelInjectionModels.H +++ b/src/lagrangian/intermediate/parcels/include/makeParcelInjectionModels.H @@ -28,6 +28,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#include "CellZoneInjection.H" #include "ConeInjection.H" #include "FieldActivatedInjection.H" #include "InflationInjection.H" @@ -43,6 +44,7 @@ License \ makeInjectionModel(CloudType); \ \ + makeInjectionModelType(CellZoneInjection, CloudType); \ makeInjectionModelType(ConeInjection, CloudType); \ makeInjectionModelType(FieldActivatedInjection, CloudType); \ makeInjectionModelType(InflationInjection, CloudType); \ diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelInjectionModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelInjectionModels.H index fc6543fb87..6dc5f69610 100644 --- a/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelInjectionModels.H +++ b/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelInjectionModels.H @@ -28,6 +28,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#include "CellZoneInjection.H" #include "ConeInjection.H" #include "FieldActivatedInjection.H" #include "ManualInjection.H" @@ -40,6 +41,7 @@ License #define makeReactingMultiphaseParcelInjectionModels(CloudType) \ \ makeInjectionModel(CloudType); \ + makeInjectionModelType(CellZoneInjection, CloudType); \ makeInjectionModelType(ConeInjection, CloudType); \ makeInjectionModelType(FieldActivatedInjection, CloudType); \ makeInjectionModelType(ManualInjection, CloudType); \ diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingParcelInjectionModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingParcelInjectionModels.H index 2185ebe8a9..274f92e36e 100644 --- a/src/lagrangian/intermediate/parcels/include/makeReactingParcelInjectionModels.H +++ b/src/lagrangian/intermediate/parcels/include/makeReactingParcelInjectionModels.H @@ -28,6 +28,7 @@ License // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // +#include "CellZoneInjection.H" #include "ConeInjection.H" #include "FieldActivatedInjection.H" #include "ManualInjection.H" @@ -40,6 +41,7 @@ License #define makeReactingParcelInjectionModels(CloudType) \ \ makeInjectionModel(CloudType); \ + makeInjectionModelType(CellZoneInjection, CloudType); \ makeInjectionModelType(ConeInjection, CloudType); \ makeInjectionModelType(FieldActivatedInjection, CloudType); \ makeInjectionModelType(ManualInjection, CloudType); \ diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.C new file mode 100644 index 0000000000..008b7a117d --- /dev/null +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/CellZoneInjection/CellZoneInjection.C @@ -0,0 +1,369 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2011-2011 OpenCFD Ltd. + \\/ M anipulation | +------------------------------------------------------------------------------- +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 . + +\*---------------------------------------------------------------------------*/ + +#include "CellZoneInjection.H" +#include "mathematicalConstants.H" +#include "polyMeshTetDecomposition.H" +#include "globalIndex.H" +#include "Pstream.H" + +// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // + +template +void Foam::CellZoneInjection::setPositions +( + const labelList& cellZoneCells +) +{ + const fvMesh& mesh = this->owner().mesh(); + const scalarField& V = mesh.V(); + const label nCells = cellZoneCells.size(); + cachedRandom& rnd = this->owner().rndGen(); + + DynamicList positions(nCells); // initial size only + DynamicList