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 "faceZoneToFaceZone.H"
00027 #include <OpenFOAM/polyMesh.H>
00028 #include <meshTools/faceZoneSet.H>
00029
00030 #include <OpenFOAM/addToRunTimeSelectionTable.H>
00031
00032
00033
00034 namespace Foam
00035 {
00036
00037 defineTypeNameAndDebug(faceZoneToFaceZone, 0);
00038
00039 addToRunTimeSelectionTable(topoSetSource, faceZoneToFaceZone, word);
00040
00041 addToRunTimeSelectionTable(topoSetSource, faceZoneToFaceZone, istream);
00042
00043 }
00044
00045
00046 Foam::topoSetSource::addToUsageTable Foam::faceZoneToFaceZone::usage_
00047 (
00048 faceZoneToFaceZone::typeName,
00049 "\n Usage: faceZoneToFaceZone <faceZone>\n\n"
00050 " Select all faces in the faceZone\n\n"
00051 );
00052
00053
00054
00055
00056
00057 Foam::faceZoneToFaceZone::faceZoneToFaceZone
00058 (
00059 const polyMesh& mesh,
00060 const word& setName
00061 )
00062 :
00063 topoSetSource(mesh),
00064 setName_(setName)
00065 {}
00066
00067
00068
00069 Foam::faceZoneToFaceZone::faceZoneToFaceZone
00070 (
00071 const polyMesh& mesh,
00072 const dictionary& dict
00073 )
00074 :
00075 topoSetSource(mesh),
00076 setName_(dict.lookup("zone"))
00077 {}
00078
00079
00080
00081 Foam::faceZoneToFaceZone::faceZoneToFaceZone
00082 (
00083 const polyMesh& mesh,
00084 Istream& is
00085 )
00086 :
00087 topoSetSource(mesh),
00088 setName_(checkIs(is))
00089 {}
00090
00091
00092
00093
00094 Foam::faceZoneToFaceZone::~faceZoneToFaceZone()
00095 {}
00096
00097
00098
00099
00100 void Foam::faceZoneToFaceZone::applyToSet
00101 (
00102 const topoSetSource::setAction action,
00103 topoSet& set
00104 ) const
00105 {
00106 if (!isA<faceZoneSet>(set))
00107 {
00108 WarningIn
00109 (
00110 "faceZoneToFaceZone::applyToSet(const topoSetSource::setAction"
00111 ", topoSet"
00112 ) << "Operation only allowed on a faceZoneSet." << endl;
00113 }
00114 else
00115 {
00116 faceZoneSet& fSet = refCast<faceZoneSet>(set);
00117
00118 if ((action == topoSetSource::NEW) || (action == topoSetSource::ADD))
00119 {
00120 Info<< " Adding all faces from faceZone " << setName_ << " ..."
00121 << endl;
00122
00123
00124 faceZoneSet loadedSet(mesh_, setName_);
00125
00126 DynamicList<label> newAddressing(fSet.addressing());
00127 DynamicList<bool> newFlipMap(fSet.flipMap());
00128
00129 forAll(loadedSet.addressing(), i)
00130 {
00131 if (!fSet.found(loadedSet.addressing()[i]))
00132 {
00133 newAddressing.append(loadedSet.addressing()[i]);
00134 newFlipMap.append(loadedSet.flipMap()[i]);
00135 }
00136 }
00137 fSet.addressing().transfer(newAddressing);
00138 fSet.flipMap().transfer(newFlipMap);
00139 fSet.updateSet();
00140 }
00141 else if (action == topoSetSource::DELETE)
00142 {
00143 Info<< " Removing all faces from faceZone " << setName_ << " ..."
00144 << endl;
00145
00146
00147 faceZoneSet loadedSet(mesh_, setName_);
00148
00149 DynamicList<label> newAddressing(fSet.addressing().size());
00150 DynamicList<bool> newFlipMap(fSet.flipMap().size());
00151
00152 forAll(fSet.addressing(), i)
00153 {
00154 if (!loadedSet.found(fSet.addressing()[i]))
00155 {
00156 newAddressing.append(fSet.addressing()[i]);
00157 newFlipMap.append(fSet.flipMap()[i]);
00158 }
00159 }
00160 fSet.addressing().transfer(newAddressing);
00161 fSet.flipMap().transfer(newFlipMap);
00162 fSet.updateSet();
00163 }
00164 }
00165 }
00166
00167
00168