diff --git a/src/lagrangian/intermediate/Make/files b/src/lagrangian/intermediate/Make/files index 6695181469..2ee3d31c3f 100644 --- a/src/lagrangian/intermediate/Make/files +++ b/src/lagrangian/intermediate/Make/files @@ -45,10 +45,32 @@ $(REACTINGMPPARCEL)/makeBasicReactingMultiphaseParcelSubmodels.C /* bolt-on models */ -submodels/addOns/radiation/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.C -submodels/addOns/radiation/scatter/cloudScatter/cloudScatter.C +RADIATION=submodels/addOns/radiation +$(RADIATION)/absorptionEmission/cloudAbsorptionEmission/cloudAbsorptionEmission.C +$(RADIATION)/scatter/cloudScatter/cloudScatter.C + submodels/Kinematic/PatchInteractionModel/LocalInteraction/patchInteractionData.C +KINEMATICINJECTION=submodels/Kinematic/InjectionModel +$(KINEMATICINJECTION)/KinematicLookupTableInjection/kinematicParcelInjectionData.C +$(KINEMATICINJECTION)/KinematicLookupTableInjection/kinematicParcelInjectionDataIO.C +$(KINEMATICINJECTION)/KinematicLookupTableInjection/kinematicParcelInjectionDataIOList.C + +THERMOINJECTION=submodels/Thermodynamic/InjectionModel +$(THERMOINJECTION)/ThermoLookupTableInjection/thermoParcelInjectionData.C +$(THERMOINJECTION)/ThermoLookupTableInjection/thermoParcelInjectionDataIO.C +$(THERMOINJECTION)/ThermoLookupTableInjection/thermoParcelInjectionDataIOList.C + +REACTINGINJECTION=submodels/Reacting/InjectionModel +$(REACTINGINJECTION)/ReactingLookupTableInjection/reactingParcelInjectionData.C +$(REACTINGINJECTION)/ReactingLookupTableInjection/reactingParcelInjectionDataIO.C +$(REACTINGINJECTION)/ReactingLookupTableInjection/reactingParcelInjectionDataIOList.C + +REACTINGMPINJECTION=submodels/ReactingMultiphase/InjectionModel +$(REACTINGMPINJECTION)/ReactingMultiphaseLookupTableInjection/reactingMultiphaseParcelInjectionData.C +$(REACTINGMPINJECTION)/ReactingMultiphaseLookupTableInjection/reactingMultiphaseParcelInjectionDataIO.C +$(REACTINGMPINJECTION)/ReactingMultiphaseLookupTableInjection/reactingMultiphaseParcelInjectionDataIOList.C + /* data entries */ submodels/IO/DataEntry/makeDataEntries.C diff --git a/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelInjectionModels.H b/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelInjectionModels.H index e93dce2375..00f178d1d9 100644 --- a/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelInjectionModels.H +++ b/src/lagrangian/intermediate/parcels/include/makeReactingMultiphaseParcelInjectionModels.H @@ -38,6 +38,7 @@ License #include "ManualInjection.H" #include "NoInjection.H" #include "PatchInjection.H" +#include "ReactingMultiphaseLookupTableInjection.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -108,6 +109,13 @@ License ParcelType, \ ThermoType \ ); \ + makeInjectionModelThermoType \ + ( \ + ReactingMultiphaseLookupTableInjection, \ + KinematicCloud, \ + ParcelType, \ + ThermoType \ + ); // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C index 5fd976e016..31587079e6 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.C @@ -27,11 +27,6 @@ License #include "KinematicLookupTableInjection.H" #include "scalarIOList.H" -// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // - -template -Foam::label Foam::KinematicLookupTableInjection::INPUT_FILE_COLS = 9; - // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // template @@ -62,9 +57,9 @@ Foam::scalar Foam::KinematicLookupTableInjection::volumeToInject scalar volume = 0.0; if ((time0 >= 0.0) && (time0 < duration_)) { - forAll(mDot_, injectorI) + forAll(injectors_, i) { - volume += mDot_[injectorI]/rho_[injectorI]*(time1 - time0); + volume += injectors_[i].mDot()/injectors_[i].rho()*(time1 - time0); } } @@ -88,14 +83,7 @@ Foam::KinematicLookupTableInjection::KinematicLookupTableInjection ( readScalar(this->coeffDict().lookup("parcelsPerSecond")) ), - x_(0), - U_(0), - d_(0), - rho_(0), - mDot_(0), - injectorCells_(0) -{ - scalarListIOList injectorData + injectors_ ( IOobject ( @@ -105,55 +93,21 @@ Foam::KinematicLookupTableInjection::KinematicLookupTableInjection IOobject::MUST_READ, IOobject::NO_WRITE ) - ); - - x_.setSize(injectorData.size()); - U_.setSize(injectorData.size()); - d_.setSize(injectorData.size()); - rho_.setSize(injectorData.size()); - mDot_.setSize(injectorData.size()); - - // Populate lists - forAll(injectorData, injectorI) - { - if (injectorData[injectorI].size() != INPUT_FILE_COLS) - { - FatalErrorIn - ( - "KinematicLookupTableInjection" - "(" - "const dictionary&," - "CloudType& owner" - ")" - ) << "Incorrect number of entries in injector specification " - << "- found " << injectorData[injectorI].size() - << ", expected " << INPUT_FILE_COLS << ":" << nl - << " x0 x1 x2 u0 u1 u2 d rho mDot " << nl - << exit(FatalError); - } - x_[injectorI].component(0) = injectorData[injectorI][0]; - x_[injectorI].component(1) = injectorData[injectorI][1]; - x_[injectorI].component(2) = injectorData[injectorI][2]; - U_[injectorI].component(0) = injectorData[injectorI][3]; - U_[injectorI].component(1) = injectorData[injectorI][4]; - U_[injectorI].component(2) = injectorData[injectorI][5]; - d_[injectorI] = injectorData[injectorI][6]; - rho_[injectorI] = injectorData[injectorI][7]; - mDot_[injectorI] = injectorData[injectorI][8]; - } - + ), + injectorCells_(0) +{ // Set/cache the injector cells - injectorCells_.setSize(injectorData.size()); - forAll(x_, injectorI) + injectorCells_.setSize(injectors_.size()); + forAll(injectors_, i) { - this->findCellAtPosition(injectorCells_[injectorI], x_[injectorI]); + this->findCellAtPosition(injectorCells_[i], injectors_[i].x()); } // Determine volume of particles to inject this->volumeTotal_ = 0.0; - forAll(mDot_, injectorI) + forAll(injectors_, i) { - this->volumeTotal_ += mDot_[injectorI]/rho_[injectorI]; + this->volumeTotal_ += injectors_[i].mDot()/injectors_[i].rho(); } this->volumeTotal_ *= duration_; } @@ -194,7 +148,7 @@ void Foam::KinematicLookupTableInjection::setPositionAndCell { label injectorI = parcelI*injectorCells_.size()/nParcels; - position = x_[injectorI]; + position = injectors_[injectorI].x(); cellOwner = injectorCells_[injectorI]; } @@ -211,13 +165,13 @@ void Foam::KinematicLookupTableInjection::setProperties label injectorI = parcelI*injectorCells_.size()/nParcels; // set particle velocity - parcel.U() = U_[injectorI]; + parcel.U() = injectors_[injectorI].U(); // set particle diameter - parcel.d() = d_[injectorI]; + parcel.d() = injectors_[injectorI].d(); // set particle density - parcel.rho() = rho_[injectorI]; + parcel.rho() = injectors_[injectorI].rho(); } diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.H index e076f0ea58..b7dffffe99 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/KinematicLookupTableInjection/KinematicLookupTableInjection.H @@ -30,7 +30,10 @@ Description an injection site. ( - (x y z u v w d rho mDot) + (x y z) (u v w) d rho mDot // injector 1 + (x y z) (u v w) d rho mDot // injector 2 + ... + (x y z) (u v w) d rho mDot // injector N ); where: @@ -49,7 +52,7 @@ SourceFiles #define KinematicLookupTableInjection_H #include "InjectionModel.H" -#include "pdf.H" +#include "kinematicParcelInjectionDataIOList.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -76,27 +79,12 @@ class KinematicLookupTableInjection //- Number of parcels per injector - common to all injection sources const label nParcelsPerSecond_; - //- List of parcel position per injector / [m] - List x_; - - //- List of parcel velocity per injector / [m] - List U_; - - //- List of parcel diameter per injector / [m] - List d_; - - //- List of parcel fluid density pre injector / [kg/m3] - List rho_; - - //- List of parcel injection mass flow per injector / [kg/s] - List mDot_; + //- List of injectors + kinematicParcelInjectionDataIOList injectors_; //- List of injector cells per injector List