mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: checkMesh: write surface fields. Fixes #2023
This commit is contained in:
@ -6,7 +6,7 @@
|
|||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
Copyright (C) 2011-2017 OpenFOAM Foundation
|
Copyright (C) 2011-2017 OpenFOAM Foundation
|
||||||
Copyright (C) 2015-2020 OpenCFD Ltd.
|
Copyright (C) 2015-2021 OpenCFD Ltd.
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
This file is part of OpenFOAM.
|
This file is part of OpenFOAM.
|
||||||
@ -58,6 +58,9 @@ Usage
|
|||||||
\param -writeAllFields \n
|
\param -writeAllFields \n
|
||||||
Writes all mesh quality measures as fields.
|
Writes all mesh quality measures as fields.
|
||||||
|
|
||||||
|
\param -writeAllSurfaceFields \n
|
||||||
|
Adds writing of surface fields when used in combination with writeAllFields.
|
||||||
|
|
||||||
\param -writeFields '(\<fieldName\>)' \n
|
\param -writeFields '(\<fieldName\>)' \n
|
||||||
Writes selected mesh quality measures as fields.
|
Writes selected mesh quality measures as fields.
|
||||||
|
|
||||||
@ -111,6 +114,11 @@ int main(int argc, char *argv[])
|
|||||||
"writeAllFields",
|
"writeAllFields",
|
||||||
"Write volFields with mesh quality parameters"
|
"Write volFields with mesh quality parameters"
|
||||||
);
|
);
|
||||||
|
argList::addBoolOption
|
||||||
|
(
|
||||||
|
"writeAllSurfaceFields",
|
||||||
|
"Write surfaceFields with mesh quality parameters"
|
||||||
|
);
|
||||||
argList::addOption
|
argList::addOption
|
||||||
(
|
(
|
||||||
"writeFields",
|
"writeFields",
|
||||||
@ -163,6 +171,7 @@ int main(int argc, char *argv[])
|
|||||||
"faceZone"
|
"faceZone"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const bool writeFaceFields = args.found("writeAllSurfaceFields");
|
||||||
wordHashSet selectedFields;
|
wordHashSet selectedFields;
|
||||||
if (args.found("writeFields"))
|
if (args.found("writeFields"))
|
||||||
{
|
{
|
||||||
@ -182,6 +191,13 @@ int main(int argc, char *argv[])
|
|||||||
{
|
{
|
||||||
selectedFields = allFields;
|
selectedFields = allFields;
|
||||||
}
|
}
|
||||||
|
else if (writeFaceFields)
|
||||||
|
{
|
||||||
|
FatalErrorInFunction
|
||||||
|
<< "Option 'writeAllSurfaceFields' only valid in combination"
|
||||||
|
<< " with 'writeFields' or 'writeAllFields'"
|
||||||
|
<< nl << exit(FatalError);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (noTopology)
|
if (noTopology)
|
||||||
@ -306,7 +322,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
|
|
||||||
// Write selected fields
|
// Write selected fields
|
||||||
Foam::writeFields(mesh, selectedFields);
|
Foam::writeFields(mesh, selectedFields, writeFaceFields);
|
||||||
}
|
}
|
||||||
else if (state == polyMesh::POINTS_MOVED)
|
else if (state == polyMesh::POINTS_MOVED)
|
||||||
{
|
{
|
||||||
@ -338,7 +354,7 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
|
|
||||||
// Write selected fields
|
// Write selected fields
|
||||||
Foam::writeFields(mesh, selectedFields);
|
Foam::writeFields(mesh, selectedFields, writeFaceFields);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -117,10 +117,42 @@ void minFaceToCell
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void writeSurfaceField
|
||||||
|
(
|
||||||
|
const fvMesh& mesh,
|
||||||
|
const fileName& fName,
|
||||||
|
const scalarField& faceData
|
||||||
|
)
|
||||||
|
{
|
||||||
|
// Write single surfaceScalarField
|
||||||
|
|
||||||
|
surfaceScalarField fld
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
fName,
|
||||||
|
mesh.time().timeName(),
|
||||||
|
mesh,
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::AUTO_WRITE,
|
||||||
|
false
|
||||||
|
),
|
||||||
|
mesh,
|
||||||
|
dimensionedScalar(dimless, Zero),
|
||||||
|
calculatedFvsPatchScalarField::typeName
|
||||||
|
);
|
||||||
|
fld.primitiveFieldRef() = faceData;
|
||||||
|
//fld.correctBoundaryConditions();
|
||||||
|
Info<< " Writing face data to " << fName << endl;
|
||||||
|
fld.write();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Foam::writeFields
|
void Foam::writeFields
|
||||||
(
|
(
|
||||||
const fvMesh& mesh,
|
const fvMesh& mesh,
|
||||||
const wordHashSet& selectedFields
|
const wordHashSet& selectedFields,
|
||||||
|
const bool writeFaceFields
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (selectedFields.empty())
|
if (selectedFields.empty())
|
||||||
@ -173,6 +205,16 @@ void Foam::writeFields
|
|||||||
Info<< " Writing non-orthogonality (angle) to "
|
Info<< " Writing non-orthogonality (angle) to "
|
||||||
<< cellNonOrthoAngle.name() << endl;
|
<< cellNonOrthoAngle.name() << endl;
|
||||||
cellNonOrthoAngle.write();
|
cellNonOrthoAngle.write();
|
||||||
|
|
||||||
|
if (writeFaceFields)
|
||||||
|
{
|
||||||
|
writeSurfaceField
|
||||||
|
(
|
||||||
|
mesh,
|
||||||
|
"face_nonOrthoAngle",
|
||||||
|
SubField<scalar>(nonOrthoAngle, mesh.nInternalFaces())
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selectedFields.found("faceWeight"))
|
if (selectedFields.found("faceWeight"))
|
||||||
@ -202,6 +244,11 @@ void Foam::writeFields
|
|||||||
Info<< " Writing face interpolation weights (0..0.5) to "
|
Info<< " Writing face interpolation weights (0..0.5) to "
|
||||||
<< cellWeights.name() << endl;
|
<< cellWeights.name() << endl;
|
||||||
cellWeights.write();
|
cellWeights.write();
|
||||||
|
|
||||||
|
if (writeFaceFields)
|
||||||
|
{
|
||||||
|
writeSurfaceField(mesh, "face_faceWeight", mesh.weights());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -243,6 +290,16 @@ void Foam::writeFields
|
|||||||
maxFaceToCell(faceSkewness, cellSkewness);
|
maxFaceToCell(faceSkewness, cellSkewness);
|
||||||
Info<< " Writing face skewness to " << cellSkewness.name() << endl;
|
Info<< " Writing face skewness to " << cellSkewness.name() << endl;
|
||||||
cellSkewness.write();
|
cellSkewness.write();
|
||||||
|
|
||||||
|
if (writeFaceFields)
|
||||||
|
{
|
||||||
|
writeSurfaceField
|
||||||
|
(
|
||||||
|
mesh,
|
||||||
|
"face_skewness",
|
||||||
|
SubField<scalar>(faceSkewness, mesh.nInternalFaces())
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -431,6 +488,16 @@ void Foam::writeFields
|
|||||||
Info<< " Writing cell volume ratio to "
|
Info<< " Writing cell volume ratio to "
|
||||||
<< cellVolumeRatio.name() << endl;
|
<< cellVolumeRatio.name() << endl;
|
||||||
cellVolumeRatio.write();
|
cellVolumeRatio.write();
|
||||||
|
|
||||||
|
if (writeFaceFields)
|
||||||
|
{
|
||||||
|
writeSurfaceField
|
||||||
|
(
|
||||||
|
mesh,
|
||||||
|
"face_cellVolumeRatio",
|
||||||
|
SubField<scalar>(faceVolumeRatio, mesh.nInternalFaces())
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// minTetVolume
|
// minTetVolume
|
||||||
@ -560,6 +627,17 @@ void Foam::writeFields
|
|||||||
minPyrVolume.correctBoundaryConditions();
|
minPyrVolume.correctBoundaryConditions();
|
||||||
Info<< " Writing minPyrVolume to " << minPyrVolume.name() << endl;
|
Info<< " Writing minPyrVolume to " << minPyrVolume.name() << endl;
|
||||||
minPyrVolume.write();
|
minPyrVolume.write();
|
||||||
|
|
||||||
|
if (writeFaceFields)
|
||||||
|
{
|
||||||
|
scalarField minFacePyrVol(neiPyrVol);
|
||||||
|
minFacePyrVol = min
|
||||||
|
(
|
||||||
|
minFacePyrVol,
|
||||||
|
SubField<scalar>(ownPyrVol, mesh.nInternalFaces())
|
||||||
|
);
|
||||||
|
writeSurfaceField(mesh, "face_minPyrVolume", minFacePyrVol);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (selectedFields.found("cellRegion"))
|
if (selectedFields.found("cellRegion"))
|
||||||
|
|||||||
@ -5,6 +5,7 @@ namespace Foam
|
|||||||
void writeFields
|
void writeFields
|
||||||
(
|
(
|
||||||
const fvMesh& mesh,
|
const fvMesh& mesh,
|
||||||
const wordHashSet& selectedFields
|
const wordHashSet& selectedFields,
|
||||||
|
const bool writeFaceFields
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user