diff --git a/src/OpenFOAM/fields/Fields/Field/Field.C b/src/OpenFOAM/fields/Fields/Field/Field.C index 5422b19a13..68b263a36f 100644 --- a/src/OpenFOAM/fields/Fields/Field/Field.C +++ b/src/OpenFOAM/fields/Fields/Field/Field.C @@ -198,22 +198,35 @@ Foam::Field::Field else if (firstToken.wordToken() == "nonuniform") { is >> static_cast&>(*this); - if (this->size() != len) + label currentSize = this->size(); + if (currentSize != len) { - FatalIOErrorInFunction - ( - dict - ) << "size " << this->size() - << " is not equal to the given value of " << len - << exit(FatalIOError); + if (len < currentSize && allowConstructFromLargerSize) + { + #ifdef FULLDEBUG + IOWarningInFunction(dict) + << "Sizes do not match. " + << "Re-sizing " << currentSize + << " entries to " << len + << endl; + #endif + + // Resize the data + this->setSize(len); + } + else + { + FatalIOErrorInFunction(dict) + << "size " << this->size() + << " is not equal to the given value of " << len + << exit(FatalIOError); + } } } else { - FatalIOErrorInFunction - ( - dict - ) << "expected keyword 'uniform' or 'nonuniform', found " + FatalIOErrorInFunction(dict) + << "expected keyword 'uniform' or 'nonuniform', found " << firstToken.wordToken() << exit(FatalIOError); } diff --git a/src/OpenFOAM/fields/Fields/Field/FieldBase.C b/src/OpenFOAM/fields/Fields/Field/FieldBase.C index 91157104f4..5873bbcc51 100644 --- a/src/OpenFOAM/fields/Fields/Field/FieldBase.C +++ b/src/OpenFOAM/fields/Fields/Field/FieldBase.C @@ -29,5 +29,7 @@ License const char* const Foam::FieldBase::typeName("Field"); +bool Foam::FieldBase::allowConstructFromLargerSize = false; + // ************************************************************************* // diff --git a/src/OpenFOAM/fields/Fields/Field/FieldBase.H b/src/OpenFOAM/fields/Fields/Field/FieldBase.H index 5de4169ad3..77ec8644e4 100644 --- a/src/OpenFOAM/fields/Fields/Field/FieldBase.H +++ b/src/OpenFOAM/fields/Fields/Field/FieldBase.H @@ -57,6 +57,8 @@ public: //- Typename for Field static const char* const typeName; + static bool allowConstructFromLargerSize; + // Constructors