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 "rawTopoChangerFvMesh.H"
00027 #include <OpenFOAM/Time.H>
00028
00029
00030
00031 template<class Type, template<class> class PatchField, class GeoMesh>
00032 void Foam::rawTopoChangerFvMesh::setUnmappedValues
00033 (
00034 GeometricField<Type, PatchField, GeoMesh>& fld,
00035 const PackedList<1>& mappedFace,
00036 const GeometricField<Type, PatchField, GeoMesh>& baseFld
00037 )
00038 {
00039
00040
00041 forAll(fld.boundaryField(), patchI)
00042 {
00043 PatchField<Type>& fvp = const_cast<PatchField<Type>&>
00044 (
00045 fld.boundaryField()[patchI]
00046 );
00047
00048 label start = fvp.patch().patch().start();
00049 forAll(fvp, i)
00050 {
00051 if (!mappedFace[start+i])
00052 {
00053
00054
00055
00056
00057 fvp[i] = baseFld.boundaryField()[patchI][i];
00058 }
00059 }
00060 }
00061 }
00062
00063
00064 template<class Type, template<class> class PatchField, class GeoMesh>
00065 void Foam::rawTopoChangerFvMesh::zeroUnmappedValues
00066 (
00067 const PackedList<1>& mappedFace
00068 ) const
00069 {
00070 typedef GeometricField<Type, PatchField, GeoMesh> FieldType;
00071
00072 const wordList fldNames(names(FieldType::typeName));
00073
00074 forAll(fldNames, i)
00075 {
00076
00077
00078 FieldType& fld = const_cast<FieldType&>
00079 (
00080 lookupObject<FieldType>(fldNames[i])
00081 );
00082
00083 setUnmappedValues
00084 (
00085 fld,
00086 mappedFace,
00087 FieldType
00088 (
00089 IOobject
00090 (
00091 "zero",
00092 time().timeName(),
00093 *this,
00094 IOobject::NO_READ,
00095 IOobject::NO_WRITE,
00096 false
00097 ),
00098 *this,
00099 dimensioned<Type>("0", fld.dimensions(), pTraits<Type>::zero)
00100 )
00101 );
00102 }
00103 }
00104
00105
00106