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
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044 #ifndef attachDetach_H
00045 #define attachDetach_H
00046
00047 #include <dynamicMesh/polyMeshModifier.H>
00048 #include <OpenFOAM/polyPatchID.H>
00049 #include <OpenFOAM/ZoneIDs.H>
00050
00051
00052
00053 namespace Foam
00054 {
00055
00056
00057
00058
00059
00060 class attachDetach
00061 :
00062 public polyMeshModifier
00063 {
00064
00065
00066
00067 enum modifierState
00068 {
00069 UNKNOWN,
00070 ATTACHED,
00071 DETACHED
00072 };
00073
00074
00075
00076
00077
00078 faceZoneID faceZoneID_;
00079
00080
00081 polyPatchID masterPatchID_;
00082
00083
00084 polyPatchID slavePatchID_;
00085
00086
00087 scalarField triggerTimes_;
00088
00089
00090 Switch manualTrigger_;
00091
00092
00093 mutable label triggerIndex_;
00094
00095
00096 mutable modifierState state_;
00097
00098
00099 mutable bool trigger_;
00100
00101
00102
00103
00104
00105 mutable Map<label>* pointMatchMapPtr_;
00106
00107
00108
00109
00110
00111 attachDetach(const attachDetach&);
00112
00113
00114 void operator=(const attachDetach&);
00115
00116
00117 void checkDefinition();
00118
00119
00120
00121
00122 void attachInterface(polyTopoChange&) const;
00123
00124
00125 void detachInterface(polyTopoChange&) const;
00126
00127
00128 void calcPointMatchMap() const;
00129
00130
00131 const Map<label>& pointMatchMap() const;
00132
00133
00134 void clearAddressing() const;
00135
00136
00137
00138
00139
00140 static const scalar positionDifference_;
00141
00142
00143 public:
00144
00145
00146 TypeName("attachDetach");
00147
00148
00149
00150
00151
00152 attachDetach
00153 (
00154 const word& name,
00155 const label index,
00156 const polyTopoChanger& mme,
00157 const word& faceZoneName,
00158 const word& masterPatchName,
00159 const word& slavePatchName,
00160 const scalarField& triggerTimes,
00161 const bool manualTrigger = false
00162 );
00163
00164
00165 attachDetach
00166 (
00167 const word& name,
00168 const dictionary& dict,
00169 const label index,
00170 const polyTopoChanger& mesh
00171 );
00172
00173
00174
00175
00176 virtual ~attachDetach();
00177
00178
00179
00180
00181
00182 const polyPatchID& masterPatchID() const
00183 {
00184 return masterPatchID_;
00185 }
00186
00187
00188 const polyPatchID& slavePatchID() const
00189 {
00190 return slavePatchID_;
00191 }
00192
00193
00194 bool attached() const
00195 {
00196 return state_ == ATTACHED;
00197 }
00198
00199 const Switch& manualTrigger() const
00200 {
00201 return manualTrigger_;
00202 }
00203
00204
00205 bool setAttach() const;
00206
00207
00208 bool setDetach() const;
00209
00210
00211 virtual bool changeTopology() const;
00212
00213
00214
00215 virtual void setRefinement(polyTopoChange&) const;
00216
00217
00218 virtual void modifyMotionPoints(pointField& motionPoints) const;
00219
00220
00221 virtual void updateMesh(const mapPolyMesh&);
00222
00223
00224 const scalarField& triggerTimes() const
00225 {
00226 return triggerTimes_;
00227 }
00228
00229
00230
00231 virtual void write(Ostream&) const;
00232
00233
00234 virtual void writeDict(Ostream&) const;
00235 };
00236
00237
00238
00239
00240 }
00241
00242
00243
00244 #endif
00245
00246