Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 template<class Type>
00027 void Foam::calcTypes::addSubtract::writeAddSubtractField
00028 (
00029 const IOobject& baseHeader,
00030 const IOobject& addHeader,
00031 const fvMesh& mesh,
00032 bool& processed
00033 )
00034 {
00035 typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
00036
00037 if
00038 (
00039 baseHeader.headerClassName() == fieldType::typeName
00040 && baseHeader.headerClassName() == addHeader.headerClassName()
00041 )
00042 {
00043 if (resultName_ == "")
00044 {
00045 if (calcMode_ == ADD)
00046 {
00047 resultName_ = baseHeader.name() + "_add_" + addHeader.name();
00048 }
00049 else
00050 {
00051 resultName_ = baseHeader.name() + "_subtract_"
00052 + addHeader.name();
00053 }
00054 }
00055
00056 Info<< " Reading " << baseHeader.name() << endl;
00057 fieldType baseField(baseHeader, mesh);
00058
00059 Info<< " Reading " << addHeader.name() << endl;
00060 fieldType addField(addHeader, mesh);
00061
00062 if (baseField.dimensions() == addField.dimensions())
00063 {
00064 Info<< " Calculating " << resultName_ << endl;
00065
00066 fieldType newField
00067 (
00068 IOobject
00069 (
00070 resultName_,
00071 mesh.time().timeName(),
00072 mesh,
00073 IOobject::NO_READ
00074 ),
00075 calcMode_ == ADD ? baseField + addField : baseField - addField
00076 );
00077 newField.write();
00078 }
00079 else
00080 {
00081 Info<< " Cannot calculate " << resultName_ << nl
00082 << " - inconsistent dimensions: "
00083 << baseField.dimensions() << " - " << addField.dimensions()
00084 << endl;
00085 }
00086
00087 processed = true;
00088 }
00089 }
00090
00091
00092