FreeFOAM The Cross-Platform CFD Toolkit
Hosted by SourceForge:
Get FreeFOAM at SourceForge.net.
            Fast, secure and Free Open Source software downloads

explicitSourceTemplates.C

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002   =========                 |
00003   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
00004    \\    /   O peration     |
00005     \\  /    A nd           | Copyright (C) 2010-2010 OpenCFD Ltd.
00006      \\/     M anipulation  |
00007 -------------------------------------------------------------------------------
00008 License
00009     This file is part of OpenFOAM.
00010 
00011     OpenFOAM is free software: you can redistribute it and/or modify it
00012     under the terms of the GNU General Public License as published by
00013     the Free Software Foundation, either version 3 of the License, or
00014     (at your option) any later version.
00015 
00016     OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
00017     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
00018     FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
00019     for more details.
00020 
00021     You should have received a copy of the GNU General Public License
00022     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
00023 
00024 \*---------------------------------------------------------------------------*/
00025 
00026 template<class Type>
00027 void Foam::explicitSource::addSources
00028 (
00029     Field<Type>& fieldSource,
00030     Type& data
00031 ) const
00032 {
00033     forAll(this->cells(), i)
00034     {
00035         fieldSource[this->cells()[i]] = data/volSource_[i];
00036     }
00037 }
00038 
00039 
00040 template <class Type>
00041 void Foam::explicitSource::addField
00042 (
00043     HashTable<Type>& fields,
00044     const wordList& fieldTypes,
00045     const wordList& fieldNames,
00046     const dictionary& fieldDataDict
00047 )
00048 {
00049     typedef GeometricField<Type, fvPatchField, volMesh> geometricField;
00050 
00051     forAll (fieldTypes, fieldI)
00052     {
00053         word fieldName = fieldNames[fieldI];
00054         word fieldType = fieldTypes[fieldI];
00055 
00056         if
00057         (
00058             (
00059                 fieldType
00060              == GeometricField<Type, fvPatchField, volMesh>::typeName
00061             ) &&
00062             (
00063                 this->mesh().foundObject<geometricField>(fieldName)
00064             )
00065         )
00066         {
00067             Type fieldValue = fieldDataDict.lookupOrDefault<Type>
00068             (
00069                 fieldName,
00070                 pTraits<Type>::zero
00071             );
00072 
00073             fields.insert(fieldName, fieldValue);
00074         }
00075     }
00076 }
00077 
00078 
00079 // ************************************************************************* //
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines