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::writeAddSubtractValue
00028 (
00029 const IOobject& baseHeader,
00030 const string& valueStr,
00031 const fvMesh& mesh,
00032 bool& processed
00033 )
00034 {
00035 typedef GeometricField<Type, fvPatchField, volMesh> fieldType;
00036
00037 if (baseHeader.headerClassName() == fieldType::typeName)
00038 {
00039 if (resultName_ == "")
00040 {
00041 if (calcMode_ == ADD)
00042 {
00043 resultName_ = baseHeader.name() + "_add_value";
00044 }
00045 else
00046 {
00047 resultName_ = baseHeader.name() + "_subtract_value";
00048 }
00049 }
00050
00051 Type value;
00052 IStringStream(valueStr)() >> value;
00053
00054 Info<< " Reading " << baseHeader.name() << endl;
00055 fieldType baseField(baseHeader, mesh);
00056
00057 fieldType newField
00058 (
00059 IOobject
00060 (
00061 resultName_,
00062 mesh.time().timeName(),
00063 mesh,
00064 IOobject::NO_READ
00065 ),
00066 baseField
00067 );
00068
00069 Info<< " Calculating " << resultName_ << endl;
00070 if (calcMode_ == ADD)
00071 {
00072 newField == baseField
00073 + dimensioned<Type>("value", baseField.dimensions(), value);
00074 }
00075 else
00076 {
00077 newField == baseField
00078 - dimensioned<Type>("value", baseField.dimensions(), value);
00079 }
00080
00081 newField.write();
00082
00083 processed = true;
00084 }
00085
00086 }
00087
00088
00089