diff --git a/applications/utilities/mesh/manipulation/mergeMeshes/mergePolyMesh.C b/applications/utilities/mesh/manipulation/mergeMeshes/mergePolyMesh.C index 26d472c44d8b0577ed1eb478770de710e0822bbd..afe8c1ce63dda2e47d52fe7be7112ebe091a7988 100644 --- a/applications/utilities/mesh/manipulation/mergeMeshes/mergePolyMesh.C +++ b/applications/utilities/mesh/manipulation/mergeMeshes/mergePolyMesh.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -54,7 +54,7 @@ Foam::label Foam::mergePolyMesh::patchIndex(const polyPatch& p) { if (patchNames_[patchI] == pName) { - if (patchTypes_[patchI] == pType) + if (word(patchDicts_[patchI]["type"]) == pType) { // Found name and types match return patchI; @@ -68,7 +68,11 @@ Foam::label Foam::mergePolyMesh::patchIndex(const polyPatch& p) } // Patch not found. Append to the list - patchTypes_.append(pType); + { + OStringStream os; + p.write(os); + patchDicts_.append(dictionary(IStringStream(os.str())())); + } if (nameFound) { @@ -121,20 +125,22 @@ Foam::mergePolyMesh::mergePolyMesh(const IOobject& io) : polyMesh(io), meshMod_(*this), - patchTypes_(2*boundaryMesh().size()), patchNames_(2*boundaryMesh().size()), + patchDicts_(2*boundaryMesh().size()), pointZoneNames_(), faceZoneNames_(), cellZoneNames_() { // Insert the original patches into the list - wordList curPatchTypes = boundaryMesh().types(); wordList curPatchNames = boundaryMesh().names(); - forAll(curPatchTypes, patchI) + forAll(boundaryMesh(), patchI) { - patchTypes_.append(curPatchTypes[patchI]); - patchNames_.append(curPatchNames[patchI]); + patchNames_.append(boundaryMesh()[patchI].name()); + + OStringStream os; + boundaryMesh()[patchI].write(os); + patchDicts_.append(dictionary(IStringStream(os.str())())); } // Insert point, face and cell zones into the list @@ -379,7 +385,7 @@ void Foam::mergePolyMesh::addMesh(const polyMesh& m) void Foam::mergePolyMesh::merge() { Info<< "patch names: " << patchNames_ << nl - << "patch types: " << patchTypes_ << nl + << "patch dicts: " << patchDicts_ << nl << "point zone names: " << pointZoneNames_ << nl << "face zone names: " << faceZoneNames_ << nl << "cell zone names: " << cellZoneNames_ << endl; @@ -409,14 +415,16 @@ void Foam::mergePolyMesh::merge() for (; patchI < patchNames_.size(); patchI++) { // Add a patch + dictionary dict(patchDicts_[patchI]); + dict.set("nFaces", 0); + dict.set("startFace", endOfLastPatch); + newPatches[patchI] = ( polyPatch::New ( - patchTypes_[patchI], patchNames_[patchI], - 0, - endOfLastPatch, + dict, patchI, oldPatches ).ptr() diff --git a/applications/utilities/mesh/manipulation/mergeMeshes/mergePolyMesh.H b/applications/utilities/mesh/manipulation/mergeMeshes/mergePolyMesh.H index ef6c2f0ee43427d5b333a1d5c997646dd96f79f4..a9db4fb32e3f28c95de3dc98aaa4fd0cc22a591b 100644 --- a/applications/utilities/mesh/manipulation/mergeMeshes/mergePolyMesh.H +++ b/applications/utilities/mesh/manipulation/mergeMeshes/mergePolyMesh.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -58,12 +58,12 @@ class mergePolyMesh //- Topological change to accumulated all mesh changes polyTopoChange meshMod_; - //- Patch types - DynamicList<word> patchTypes_; - //- Patch names DynamicList<word> patchNames_; + //- Patch dictionaries + DynamicList<dictionary> patchDicts_; + //- Point zone names DynamicList<word> pointZoneNames_; diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.C b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.C index 05370cbc441a7134731e0905c6aaa8b20168e332..e39162f58569b1d5762e884a24322672e01891e1 100644 --- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.C +++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.C @@ -51,6 +51,7 @@ thermalBaffle1DFvPatchScalarField baffleActivated_(true), thickness_(p.size()), Qs_(p.size()), + solidDict_(), solidPtr_(NULL) {} @@ -70,6 +71,7 @@ thermalBaffle1DFvPatchScalarField baffleActivated_(ptf.baffleActivated_), thickness_(ptf.thickness_), Qs_(ptf.Qs_), + solidDict_(ptf.solidDict_), solidPtr_(ptf.solidPtr_) {} @@ -88,6 +90,7 @@ thermalBaffle1DFvPatchScalarField baffleActivated_(readBool(dict.lookup("baffleActivated"))), thickness_(scalarField("thickness", dict, p.size())), Qs_(scalarField("Qs", dict, p.size())), + solidDict_(dict), solidPtr_(new solidType(dict)) { if (!isA<mappedPatchBase>(this->patch().patch())) @@ -141,6 +144,7 @@ thermalBaffle1DFvPatchScalarField baffleActivated_(ptf.baffleActivated_), thickness_(ptf.thickness_), Qs_(ptf.Qs_), + solidDict_(ptf.solidDict_), solidPtr_(ptf.solidPtr_) {} @@ -158,12 +162,28 @@ thermalBaffle1DFvPatchScalarField baffleActivated_(ptf.baffleActivated_), thickness_(ptf.thickness_), Qs_(ptf.Qs_), + solidDict_(ptf.solidDict_), solidPtr_(ptf.solidPtr_) {} // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // +template<class solidType> +const solidType& thermalBaffle1DFvPatchScalarField<solidType>::solidPtr() const +{ + if (!solidPtr_.empty()) + { + return solidPtr_(); + } + else + { + solidPtr_.reset(new solidType(solidDict_)); + return solidPtr_(); + } +} + + template<class solidType> void thermalBaffle1DFvPatchScalarField<solidType>::autoMap ( @@ -171,6 +191,8 @@ void thermalBaffle1DFvPatchScalarField<solidType>::autoMap ) { mixedFvPatchScalarField::autoMap(m); + thickness_.autoMap(m); + Qs_.autoMap(m); } template<class solidType> @@ -181,6 +203,12 @@ void thermalBaffle1DFvPatchScalarField<solidType>::rmap ) { mixedFvPatchScalarField::rmap(ptf, addr); + + const thermalBaffle1DFvPatchScalarField& tiptf = + refCast<const thermalBaffle1DFvPatchScalarField>(ptf); + + thickness_.rmap(tiptf.thickness_, addr); + Qs_.rmap(tiptf.Qs_, addr); } @@ -264,7 +292,7 @@ void thermalBaffle1DFvPatchScalarField<solidType>::updateCoeffs() forAll(KDeltaw, i) { KDeltaw[i] = - solidPtr_().kappa(0.0, (Tp[i] + nbrTw[i])/2.0)/thickness_[i]; + solidPtr().kappa(0.0, (Tp[i] + nbrTw[i])/2.0)/thickness_[i]; } const scalarField q @@ -338,8 +366,7 @@ void thermalBaffle1DFvPatchScalarField<solidType>::updateCoeffs() } template<class solidType> -void thermalBaffle1DFvPatchScalarField<solidType>:: -write(Ostream& os) const +void thermalBaffle1DFvPatchScalarField<solidType>:: write(Ostream& os) const { mixedFvPatchScalarField::write(os); os.writeKeyword("TName") @@ -348,7 +375,7 @@ write(Ostream& os) const os.writeKeyword("baffleActivated") << baffleActivated_ << token::END_STATEMENT << nl; Qs_.writeEntry("Qs", os); - solidPtr_->write(os); + solidPtr().write(os); } diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.H b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.H index c2b209cb16421226b0907bbf8b881445a907dca3..399e80062a0c9de9daa571abc0fc30e7cf33e24c 100644 --- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.H +++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/thermalBaffle1D/thermalBaffle1DFvPatchScalarField.H @@ -70,8 +70,17 @@ class thermalBaffle1DFvPatchScalarField //- Superficial heat source [W/m2] scalarField Qs_; - // Solid thermo - autoPtr<solidType> solidPtr_; + //- Solid dictionary + dictionary solidDict_; + + //- Solid thermo + mutable autoPtr<solidType> solidPtr_; + + + // Private members + + //- Return non const solid thermo autoMap + const solidType& solidPtr() const; public: @@ -144,6 +153,7 @@ public: // Member functions + // Mapping functions //- Map (and resize as needed) from self given a mapping object @@ -160,6 +170,8 @@ public: ); + + //- Update the coefficients associated with the patch field virtual void updateCoeffs();