From 8a27989cbfd4674f5b55189b4f0029e5c31ca3d9 Mon Sep 17 00:00:00 2001 From: Andrew Heather <> Date: Mon, 8 Jun 2020 13:59:24 +0100 Subject: [PATCH] ENH: Added support for internal vol fields --- .../volFieldValue/volFieldValueTemplates.C | 20 ++++++++++++---- .../field/readFields/readFieldsTemplates.C | 24 +++++++++++++++---- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/src/functionObjects/field/fieldValues/volFieldValue/volFieldValueTemplates.C b/src/functionObjects/field/fieldValues/volFieldValue/volFieldValueTemplates.C index 8ac0d853c6..cedf0b359d 100644 --- a/src/functionObjects/field/fieldValues/volFieldValue/volFieldValueTemplates.C +++ b/src/functionObjects/field/fieldValues/volFieldValue/volFieldValueTemplates.C @@ -37,9 +37,14 @@ bool Foam::functionObjects::fieldValues::volFieldValue::validField const word& fieldName ) const { - typedef GeometricField vf; + typedef GeometricField VolFieldType; + typedef typename VolFieldType::Internal IntVolFieldType; - if (obr_.foundObject(fieldName)) + if + ( + obr_.foundObject(fieldName) + || obr_.foundObject(fieldName) + ) { return true; } @@ -56,11 +61,16 @@ Foam::functionObjects::fieldValues::volFieldValue::getFieldValues const bool mustGet ) const { - typedef GeometricField vf; + typedef GeometricField VolFieldType; + typedef typename VolFieldType::Internal IntVolFieldType; - if (obr_.foundObject(fieldName)) + if (obr_.foundObject(fieldName)) { - return filterField(obr_.lookupObject(fieldName)); + return filterField(obr_.lookupObject(fieldName)); + } + else if (obr_.foundObject(fieldName)) + { + return filterField(obr_.lookupObject(fieldName)); } if (mustGet) diff --git a/src/functionObjects/field/readFields/readFieldsTemplates.C b/src/functionObjects/field/readFields/readFieldsTemplates.C index 9b8d0ea39a..cdd0ca5ca5 100644 --- a/src/functionObjects/field/readFields/readFieldsTemplates.C +++ b/src/functionObjects/field/readFields/readFieldsTemplates.C @@ -6,7 +6,7 @@ \\/ M anipulation | ------------------------------------------------------------------------------- Copyright (C) 2011-2016 OpenFOAM Foundation - Copyright (C) 2015-2019 OpenCFD Ltd. + Copyright (C) 2015-2020 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -37,6 +37,7 @@ template bool Foam::functionObjects::readFields::loadField(const word& fieldName) { typedef GeometricField VolFieldType; + typedef typename VolFieldType::Internal IntVolFieldType; typedef GeometricField SurfaceFieldType; /// typedef DimensionedField SurfFieldType; @@ -47,6 +48,13 @@ bool Foam::functionObjects::readFields::loadField(const word& fieldName) << " " << fieldName << " already in database" << endl; } + else if (foundObject(fieldName)) + { + DebugInfo + << "readFields : " << IntVolFieldType::typeName + << " " << fieldName << " already in database" + << endl; + } else if (foundObject(fieldName)) { DebugInfo @@ -76,7 +84,15 @@ bool Foam::functionObjects::readFields::loadField(const word& fieldName) { // Store field on mesh database Log << " Reading " << fieldName << endl; - VolFieldType* fldPtr(new VolFieldType(fieldHeader, mesh_)); + auto* fldPtr(new VolFieldType(fieldHeader, mesh_)); + mesh_.objectRegistry::store(fldPtr); + return true; + } + else if (fieldHeader.typeHeaderOk(true, true, false)) + { + // Store field on mesh database + Log << " Reading " << fieldName << endl; + auto* fldPtr(new IntVolFieldType(fieldHeader, mesh_)); mesh_.objectRegistry::store(fldPtr); return true; } @@ -84,7 +100,7 @@ bool Foam::functionObjects::readFields::loadField(const word& fieldName) { // Store field on mesh database Log << " Reading " << fieldName << endl; - SurfaceFieldType* fldPtr(new SurfaceFieldType(fieldHeader, mesh_)); + auto* fldPtr(new SurfaceFieldType(fieldHeader, mesh_)); mesh_.objectRegistry::store(fldPtr); return true; } @@ -97,7 +113,7 @@ bool Foam::functionObjects::readFields::loadField(const word& fieldName) /// /// // Store field on surfMesh database /// Log << " Reading " << fieldName << endl; - /// SurfFieldType* fldPtr(new SurfFieldType(fieldHeader, s)); + /// auto* fldPtr(new SurfFieldType(fieldHeader, s)); /// s.store(fldPtr); /// return true; /// }