mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: mapFields FO - read schemes and cache mapped fields by default. See #1390
This commit is contained in:
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2016 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2016-2019 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -66,10 +66,12 @@ void Foam::functionObjects::mapFields::createInterpolation
|
||||
(
|
||||
mapRegionName,
|
||||
meshTarget.time().constant(),
|
||||
meshTarget.time()
|
||||
meshTarget.time(),
|
||||
IOobject::MUST_READ
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
const fvMesh& mapRegion = mapRegionPtr_();
|
||||
const word mapMethodName(dict.get<word>("mapMethod"));
|
||||
if (!meshToMesh::interpolationMethodNames_.found(mapMethodName))
|
||||
@ -161,13 +163,17 @@ Foam::functionObjects::mapFields::mapFields
|
||||
|
||||
bool Foam::functionObjects::mapFields::read(const dictionary& dict)
|
||||
{
|
||||
fvMeshFunctionObject::read(dict);
|
||||
|
||||
if (fvMeshFunctionObject::read(dict))
|
||||
{
|
||||
dict.readEntry("fields", fieldNames_);
|
||||
createInterpolation(dict);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
bool Foam::functionObjects::mapFields::execute()
|
||||
{
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2016-2017 OpenCFD Ltd.
|
||||
\\ / A nd | Copyright (C) 2016-2019 OpenCFD Ltd.
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
@ -123,29 +123,41 @@ bool Foam::functionObjects::mapFields::writeFieldType() const
|
||||
|
||||
wordList fieldNames(this->mesh_.names(VolFieldType::typeName));
|
||||
labelList selected = findStrings(fieldNames_, fieldNames);
|
||||
forAll(selected, i)
|
||||
for (const label fieldi : selected)
|
||||
{
|
||||
const word& fieldName = fieldNames[selected[i]];
|
||||
const word& fieldName = fieldNames[fieldi];
|
||||
const VolFieldType& field = lookupObject<VolFieldType>(fieldName);
|
||||
|
||||
Log << " " << fieldName;
|
||||
|
||||
IOobject mapRegionIO
|
||||
if (!mapRegion.foundObject<VolFieldType>(fieldName))
|
||||
{
|
||||
VolFieldType* tmappedField =
|
||||
new VolFieldType
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
fieldName,
|
||||
time_.timeName(),
|
||||
mapRegion
|
||||
mapRegion,
|
||||
IOobject::NO_READ,
|
||||
IOobject::NO_WRITE
|
||||
),
|
||||
mapRegion,
|
||||
dimensioned<Type>(field.dimensions(), Zero)
|
||||
);
|
||||
|
||||
tmp<VolFieldType> tfieldMapRegion(interpPtr_->mapTgtToSrc(field));
|
||||
tmappedField->store();
|
||||
}
|
||||
|
||||
Log << ": interpolated";
|
||||
VolFieldType& mappedField =
|
||||
mapRegion.lookupObjectRef<VolFieldType>(fieldName);
|
||||
|
||||
VolFieldType fieldMapRegion(mapRegionIO, tfieldMapRegion);
|
||||
mappedField = interpPtr_->mapTgtToSrc(field);
|
||||
|
||||
evaluateConstraintTypes(fieldMapRegion);
|
||||
Log << " " << fieldName << ": interpolated";
|
||||
|
||||
fieldMapRegion.write();
|
||||
evaluateConstraintTypes(mappedField);
|
||||
|
||||
mappedField.write();
|
||||
|
||||
Log << " and written" << nl;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user