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 #include "readFields.H"
00027 #include <finiteVolume/volFields.H>
00028 #include <finiteVolume/surfaceFields.H>
00029 #include <OpenFOAM/Time.H>
00030
00031
00032
00033 template<class Type>
00034 void Foam::readFields::loadField
00035 (
00036 const word& fieldName,
00037 PtrList<GeometricField<Type, fvPatchField, volMesh> >& vflds,
00038 PtrList<GeometricField<Type, fvsPatchField, surfaceMesh> >& sflds
00039 ) const
00040 {
00041 typedef GeometricField<Type, fvPatchField, volMesh> vfType;
00042 typedef GeometricField<Type, fvsPatchField, surfaceMesh> sfType;
00043
00044 if (obr_.foundObject<vfType>(fieldName))
00045 {
00046 if (debug)
00047 {
00048 Info<< "readFields : Field " << fieldName << " already in database"
00049 << endl;
00050 }
00051 }
00052 else if (obr_.foundObject<sfType>(fieldName))
00053 {
00054 if (debug)
00055 {
00056 Info<< "readFields : Field " << fieldName << " already in database"
00057 << endl;
00058 }
00059 }
00060 else
00061 {
00062 const fvMesh& mesh = refCast<const fvMesh>(obr_);
00063
00064 IOobject fieldHeader
00065 (
00066 fieldName,
00067 mesh.time().timeName(),
00068 mesh,
00069 IOobject::MUST_READ,
00070 IOobject::NO_WRITE
00071 );
00072
00073 if
00074 (
00075 fieldHeader.headerOk()
00076 && fieldHeader.headerClassName() == vfType::typeName
00077 )
00078 {
00079
00080 Info<< " Reading " << fieldName << endl;
00081 label sz = vflds.size();
00082 vflds.setSize(sz+1);
00083 vflds.set(sz, new vfType(fieldHeader, mesh));
00084 }
00085 else if
00086 (
00087 fieldHeader.headerOk()
00088 && fieldHeader.headerClassName() == sfType::typeName
00089 )
00090 {
00091
00092 Info<< " Reading " << fieldName << endl;
00093 label sz = sflds.size();
00094 sflds.setSize(sz+1);
00095 sflds.set(sz, new sfType(fieldHeader, mesh));
00096 }
00097 }
00098 }
00099
00100
00101