mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
improved setFields utility
This commit is contained in:
@ -37,14 +37,22 @@ Description
|
|||||||
|
|
||||||
using namespace Foam;
|
using namespace Foam;
|
||||||
|
|
||||||
template<class GeoField>
|
template<class Type>
|
||||||
void setFieldType
|
bool setFieldType
|
||||||
(
|
(
|
||||||
|
const word& fieldTypeDesc,
|
||||||
const fvMesh& mesh,
|
const fvMesh& mesh,
|
||||||
const labelList& selectedCells,
|
const labelList& selectedCells,
|
||||||
Istream& fieldValueStream
|
Istream& fieldValueStream
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
|
||||||
|
|
||||||
|
if (fieldTypeDesc != fieldType::typeName + "Value")
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
word fieldName(fieldValueStream);
|
word fieldName(fieldValueStream);
|
||||||
|
|
||||||
IOobject fieldHeader
|
IOobject fieldHeader
|
||||||
@ -61,15 +69,9 @@ void setFieldType
|
|||||||
Info<< " Setting " << fieldHeader.headerClassName()
|
Info<< " Setting " << fieldHeader.headerClassName()
|
||||||
<< " " << fieldName << endl;
|
<< " " << fieldName << endl;
|
||||||
|
|
||||||
GeoField field(fieldHeader, mesh);
|
fieldType field(fieldHeader, mesh);
|
||||||
|
|
||||||
typename GeoField::value_type value
|
const Type& value = pTraits<Type>(fieldValueStream);
|
||||||
(
|
|
||||||
static_cast<const typename GeoField::value_type&>
|
|
||||||
(
|
|
||||||
pTraits<typename GeoField::value_type>(fieldValueStream)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
if (selectedCells.size() == field.size())
|
if (selectedCells.size() == field.size())
|
||||||
{
|
{
|
||||||
@ -100,6 +102,8 @@ void setFieldType
|
|||||||
"Istream& fieldValueStream)"
|
"Istream& fieldValueStream)"
|
||||||
) << "Field " << fieldName << " not found" << endl;
|
) << "Field " << fieldName << " not found" << endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -133,32 +137,21 @@ public:
|
|||||||
{
|
{
|
||||||
word fieldType(fieldValues);
|
word fieldType(fieldValues);
|
||||||
|
|
||||||
if (fieldType == "volScalarFieldValue")
|
if
|
||||||
{
|
(
|
||||||
setFieldType<volScalarField>
|
!(
|
||||||
(mesh_, selectedCells_, fieldValues);
|
setFieldType<scalar>
|
||||||
}
|
(fieldType, mesh_, selectedCells_, fieldValues)
|
||||||
else if (fieldType == "volVectorFieldValue")
|
|| setFieldType<vector>
|
||||||
{
|
(fieldType, mesh_, selectedCells_, fieldValues)
|
||||||
setFieldType<volVectorField>
|
|| setFieldType<sphericalTensor>
|
||||||
(mesh_, selectedCells_, fieldValues);
|
(fieldType, mesh_, selectedCells_, fieldValues)
|
||||||
}
|
|| setFieldType<symmTensor>
|
||||||
else if (fieldType == "volSphericalTensorFieldValue")
|
(fieldType, mesh_, selectedCells_, fieldValues)
|
||||||
{
|
|| setFieldType<tensor>
|
||||||
setFieldType<volSphericalTensorField>
|
(fieldType, mesh_, selectedCells_, fieldValues)
|
||||||
(mesh_, selectedCells_, fieldValues);
|
)
|
||||||
}
|
)
|
||||||
else if (fieldType == "volSymmTensorFieldValue")
|
|
||||||
{
|
|
||||||
setFieldType<volSymmTensorField>
|
|
||||||
(mesh_, selectedCells_, fieldValues);
|
|
||||||
}
|
|
||||||
else if (fieldType == "volTensorFieldValue")
|
|
||||||
{
|
|
||||||
setFieldType<volTensorField>
|
|
||||||
(mesh_, selectedCells_, fieldValues);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
WarningIn("setField::iNew::operator()(Istream& is)")
|
WarningIn("setField::iNew::operator()(Istream& is)")
|
||||||
<< "field type " << fieldType << " not currently supported"
|
<< "field type " << fieldType << " not currently supported"
|
||||||
|
|||||||
Reference in New Issue
Block a user