Code_TYMPAN  4.4.0
Industrial site acoustic simulation
TYEtage.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) <2012> <EDF-R&D> <FRANCE>
3  * This program is free software; you can redistribute it and/or modify
4  * it under the terms of the GNU General Public License as published by
5  * the Free Software Foundation; either version 2 of the License, or
6  * (at your option) any later version.
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
10  * See the GNU General Public License for more details.
11  * You should have received a copy of the GNU General Public License along
12  * with this program; if not, write to the Free Software Foundation, Inc.,
13  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
14  */
15 
16 /*
17  *
18  *
19  *
20  *
21  */
22 
23 #ifndef __TY_ETAGE__
24 #define __TY_ETAGE__
25 
26 class OSegment3D;
27 
29 #include "TYMur.h"
30 #include "TYMachine.h"
32 #include "TYDalle.h"
33 
37 class TYEtage : public TYAcousticVolume
38 {
42 
43  // Methodes
44 public:
48  TYEtage();
52  TYEtage(const TYEtage& other);
56  virtual ~TYEtage();
57 
61  TYEtage& operator=(const TYEtage& other);
65  bool operator==(const TYEtage& other) const;
69  bool operator!=(const TYEtage& other) const;
70 
79  virtual bool deepCopy(const TYElement* pOther, bool copyId = true, bool pUseCopyTag = false);
80 
81  virtual std::string toString() const;
82 
83  virtual DOM_Element toXML(DOM_Element& domElement);
84  virtual int fromXML(DOM_Element domElement);
85 
86  virtual void getChilds(LPTYElementArray& childs, bool recursif = true);
87 
88  virtual void setDensiteSrcsH(double densite, bool recursif = true);
89  virtual void setDensiteSrcsV(double densite, bool recursif = true);
90 
91  virtual void setRegime(TYSpectre& Spectre, int regime = -1, bool recursif = true);
92  virtual bool remRegime(int regime);
93  virtual void setCurRegime(int regime);
94  virtual int addRegime(TYRegime regime);
95  virtual int addRegime();
96  virtual void setNextRegimeNb(const int& next);
97  virtual void setRegimeName(const QString& name);
98  virtual void propagateAtt(LPTYAttenuateur pAtt);
99 
101  virtual void exportCSV(std::ofstream& ofs);
102 
103  virtual TYTabSourcePonctuelleGeoNode getSrcs() const;
104  virtual TYSourcePonctuelle srcPonctEquiv() const;
105  virtual void distriSrcs();
106  virtual bool setSrcsLw();
107 
108  virtual double volume() const;
109  virtual double surface() const;
110  virtual TYTabVector normals() const;
111  virtual TYTabPoint sommets() const;
112  virtual TYTabLPPolygon faces() const;
113  virtual TYBox volEnglob() const;
114  virtual TYPoint centreGravite() const;
115  virtual int intersects(const OSegment3D& seg, TYTabPoint& ptList) const;
116  virtual int isInside(const TYPoint& pt) const;
117 
118  virtual void remAllSrcs();
120  virtual bool findAcousticSurface(const TYAcousticSurface* pAccSurf, OMatrix* pMatrix = 0);
121  virtual bool updateAcoustic(const bool& force = false);
122  virtual double activeSurface() const;
123 
124  // TODO Fonction jamais appelee. Envisager la suppression.
135  virtual TYSpectre setGlobalLW(const TYSpectre& spectre, const double& surfGlobale,
136  const int& regime = -1);
137 
138  void setacousticFacesPourCalcul(bool bPourCalculTrajet);
139 
144  {
145  return _tabMur;
146  }
150  const TYTabMurGeoNode& getTabMur() const
151  {
152  return _tabMur;
153  }
154 
158  bool addMur(LPTYMur pMur);
159 
168  bool remMur(const LPTYMur pMur);
169 
179  bool remMur(QString idMur);
180 
189  bool setMurs(const TYTabPoint& tabPts, double hauteur = 2.0, bool close = true);
190 
194  void remMurs();
195 
199  void setClosed(bool closed)
200  {
201  _closed = closed;
202  }
206  bool getClosed()
207  {
208  return _closed;
209  }
210 
215  {
216  return _pSol;
217  }
221  const LPTYDalle getSol() const
222  {
223  return _pSol;
224  }
225 
230  {
231  return _pPlafond;
232  }
236  const LPTYDalle getPlafond() const
237  {
238  return _pPlafond;
239  }
240 
246  TYTabPoint getContour() const;
247 
253  void setHauteur(double hauteur);
259  double getHauteur() const;
260 
264  void setParoi(const LPTYParoi pParoi);
269  {
270  return _pParoi;
271  }
272 
276  void updateParoi();
277 
282  {
283  return _tabMachine;
284  }
289  {
290  return _tabMachine;
291  }
296  {
297  _tabMachine = tab;
298  }
302  bool addMachine(LPTYMachineGeoNode pMachineGeoNode);
306  bool addMachine(LPTYMachine pMachine, const TYRepere& pos);
310  bool addMachine(LPTYMachine pMachine);
314  bool remMachine(const LPTYMachineGeoNode pMachineGeoNode);
318  bool remMachine(const LPTYMachine pMachine);
323  bool remMachine(QString idMachine);
327  void remAllMachine();
332  {
333  return TYMachine::safeDownCast(_tabMachine.at(index)->getElement());
334  }
343 
344  // BEGIN
349  {
350  return _tabSources;
351  }
356  {
357  return _tabSources;
358  }
363  {
364  _tabSources = tab;
365  }
369  bool addSource(LPTYUserSourcePonctuelleGeoNode pSourceGeoNode);
373  bool addSource(LPTYUserSourcePonctuelle pSource, const TYRepere& pos);
377  bool addSource(LPTYUserSourcePonctuelle pSource);
381  bool remSource(const LPTYUserSourcePonctuelleGeoNode pSourceGeoNode);
385  bool remSource(const LPTYUserSourcePonctuelle pSource);
390  bool remSource(QString idSource);
394  void remAllSources();
399  {
400  return TYUserSourcePonctuelle::safeDownCast(_tabSources.at(index)->getElement());
401  }
410 
411  // END
415  void findFaceMachineSol();
416 
421  void coeffSabine();
422 
426  void calculTempsReverb();
427 
432  {
433  return _TR;
434  }
435  void setTR(const TYSpectre& TR)
436  {
437  _TR = TR;
438  }
439 
446  OSpectre champDirect(const OPoint3D& unPoint);
447 
452  void calculChampRevSabine();
453 
459 
463  void calculChampReverbere();
464 
469  {
470  return _reverb;
471  }
472 
477  {
478  return _tabRegimesMachines;
479  }
481  {
482  return _tabRegimesMachines;
483  }
484 
488  void setTabRegimeMachines(const tabMapPtrElementRegime& tabRegimesMachines)
489  {
490  _tabRegimesMachines = tabRegimesMachines;
491  }
492 
496  TYMapPtrElementInt& getMapRegimes(const int& regime)
497  {
498  return _tabRegimesMachines[regime];
499  }
500 
504  void setMapRegimes(const int& regime, TYMapPtrElementInt mapRegimes)
505  {
506  _tabRegimesMachines[regime] = mapRegimes;
507  }
508 
513  {
514  return _tabEtatMachines;
515  }
517  {
518  return _tabEtatMachines;
519  }
520 
524  void setTabEtatMachines(const tabMapPtrElementBool& tabEtatMachines)
525  {
526  _tabEtatMachines = tabEtatMachines;
527  }
528 
532  TYMapPtrElementBool& getMapEtats(const int& regime)
533  {
534  return _tabEtatMachines[regime];
535  }
536 
540  void setMapEtats(const int& regime, TYMapPtrElementBool mapEtats)
541  {
542  _tabEtatMachines[regime] = mapEtats;
543  }
544 
545 protected:
550  void updateSolPlafond();
551 
556  const LPTYParoi pMurParoi);
557 
561  void updateZSource();
562 
567  void verifTabRegimeSources();
568 
569  // Membres
570 protected:
573 
576 
579 
582 
585 
588 
590  bool _closed;
591 
594 
597 
599  double _volumeLibre;
600 
603 
606 
609 
612 
615 
616 private:
617  // Ajoute pour obtenir un contour simple pour les ecrans
621 };
622 
628 typedef std::vector<LPTYEtageGeoNode> TYTabEtageGeoNode;
629 
630 #endif // __TY_ETAGE__
QDomElement DOM_Element
Definition: QT2DOM.h:30
std::vector< LPTYAcousticSurfaceGeoNode > TYTabAcousticSurfaceGeoNode
Collection de noeuds geometriques de type TYAcousticSurface.
#define TR(id)
std::vector< TYMapPtrElementBool > tabMapPtrElementBool
Tableau associant un regime et un tableau associatif d'elements et de booleen (etat machine vs regime...
Definition: TYDefines.h:385
std::vector< TYPoint > TYTabPoint
Collection de TYPoint.
Definition: TYDefines.h:340
std::map< TYElement *, bool > TYMapPtrElementBool
Etat d'utilisation des elements (utilise par les calculs)
Definition: TYDefines.h:376
std::vector< OVector3D > TYTabVector
Collection de OVector3D.
Definition: TYDefines.h:398
std::map< TYElement *, int > TYMapPtrElementInt
Tableau associatif des elements et d'un entier (utilise pour gerer les regimes)
Definition: TYDefines.h:379
std::vector< LPTYPolygon > TYTabLPPolygon
Collection de pointeurs de TYPolygon.
Definition: TYDefines.h:349
std::vector< TYMapPtrElementInt > tabMapPtrElementRegime
Tableau associant un regime a un tableau associatif d'entiers (regime machine in batiments vs regime ...
Definition: TYDefines.h:382
#define TY_EXT_GRAPHIC_DECL_ONLY(classname)
Definition: TYElement.h:432
std::vector< LPTYElement > LPTYElementArray
Definition: TYElement.h:345
#define OPROTODECL(classname)
Definition: TYElement.h:65
#define TY_EXTENSION_DECL_ONLY(classname)
Definition: TYElement.h:386
SmartPtr< TYEtageGeoNode > LPTYEtageGeoNode
Smart Pointer sur TYEtageGeoNode.
Definition: TYEtage.h:626
TYGeometryNode TYEtageGeoNode
Noeud geometrique de type TYEtage.
Definition: TYEtage.h:624
std::vector< LPTYEtageGeoNode > TYTabEtageGeoNode
Collection de noeuds geometriques de type TYEtage.
Definition: TYEtage.h:628
std::vector< LPTYMachineGeoNode > TYTabMachineGeoNode
Collection de noeuds geometriques de type TYMachine.
Definition: TYMachine.h:168
std::vector< LPTYMurGeoNode > TYTabMurGeoNode
Collection de noeuds geometriques de type TYMur.
Definition: TYMur.h:167
const char * name
std::vector< LPTYSourcePonctuelleGeoNode > TYTabSourcePonctuelleGeoNode
Collection de noeuds geometriques de type TYSourcePonctuelle.
std::vector< LPTYUserSourcePonctuelleGeoNode > TYTabUserSourcePonctuelleGeoNode
Collection de noeuds geometriques de type TYSourcePonctuelle.
The 4x4 matrix class.
Definition: 3d.h:625
The 3D point class.
Definition: 3d.h:487
static OPrototype * safeDownCast(OPrototype *pObject)
Definition: TYElement.cpp:71
Class to define a segment.
Definition: 3d.h:1089
Spectrum class.
Definition: Spectre.h:25
Definition: TYBox.h:34
virtual int fromXML(DOM_Element domElement)
Definition: TYEtage.cpp:355
virtual std::string toString() const
Definition: TYEtage.cpp:247
virtual ~TYEtage()
Definition: TYEtage.cpp:75
bool _closed
Indique si les murs constituant l'etage sont fermes.
Definition: TYEtage.h:590
void updateParoi()
Definition: TYEtage.cpp:2428
void setMapEtats(const int &regime, TYMapPtrElementBool mapEtats)
Definition: TYEtage.h:540
TYTabUserSourcePonctuelleGeoNode & getTabSources()
Definition: TYEtage.h:348
virtual TYTabPoint sommets() const
Definition: TYEtage.cpp:1870
void updateSolPlafond()
Definition: TYEtage.cpp:2245
TYEtage()
Definition: TYEtage.cpp:35
TYSpectre & getTR()
Definition: TYEtage.h:431
OSpectre _absoSabine
Spectre du coefficient de Sabine de l'etage.
Definition: TYEtage.h:602
bool operator==(const TYEtage &other) const
Definition: TYEtage.cpp:101
virtual void setCurRegime(int regime)
Definition: TYEtage.cpp:1437
virtual double volume() const
Definition: TYEtage.cpp:1833
LPTYDalle _pSol
Dalle pour le sol.
Definition: TYEtage.h:575
virtual void distriSrcs()
Definition: TYEtage.cpp:1648
LPTYDalle getPlafond()
Definition: TYEtage.h:229
LPTYDalle getSol()
Definition: TYEtage.h:214
void setMapRegimes(const int &regime, TYMapPtrElementInt mapRegimes)
Definition: TYEtage.h:504
virtual bool deepCopy(const TYElement *pOther, bool copyId=true, bool pUseCopyTag=false)
Definition: TYEtage.cpp:150
void setTabSources(const TYTabUserSourcePonctuelleGeoNode &tab)
Definition: TYEtage.h:362
void setacousticFacesPourCalcul(bool bPourCalculTrajet)
Definition: TYEtage.cpp:2004
virtual TYSourcePonctuelle srcPonctEquiv() const
Definition: TYEtage.cpp:1611
virtual void setNextRegimeNb(const int &next)
Definition: TYEtage.cpp:1544
void calculTempsReverb()
Definition: TYEtage.cpp:2229
virtual void setDensiteSrcsV(double densite, bool recursif=true)
Definition: TYEtage.cpp:1632
TYMapPtrElementInt & getMapRegimes(const int &regime)
Definition: TYEtage.h:496
LPTYMachineGeoNode findMachine(const LPTYMachine pMachine)
Definition: TYEtage.cpp:1202
void calculChampReverbere()
Definition: TYEtage.cpp:2360
virtual void setDensiteSrcsH(double densite, bool recursif=true)
Definition: TYEtage.cpp:1616
virtual TYPoint centreGravite() const
Definition: TYEtage.cpp:1922
TYTabMachineGeoNode & getTabMachine()
Definition: TYEtage.h:281
virtual int isInside(const TYPoint &pt) const
Definition: TYEtage.cpp:1952
LPTYDalle _pPlafond
Dalle pour le plafond.
Definition: TYEtage.h:578
int _typeReverb
Precise le mode de calcul du champ reverbere.
Definition: TYEtage.h:593
LPTYUserSourcePonctuelle getSource(int index)
Definition: TYEtage.h:398
TYTabPoint getContour() const
Definition: TYEtage.cpp:952
void calculChampRevKuttruff()
spectre de pression acoustique après fonction
LPTYParoi _pParoi
Paroi par defaut de l'etage.
Definition: TYEtage.h:587
bool remMur(const LPTYMur pMur)
Definition: TYEtage.cpp:819
void setTabEtatMachines(const tabMapPtrElementBool &tabEtatMachines)
Definition: TYEtage.h:524
virtual int intersects(const OSegment3D &seg, TYTabPoint &ptList) const
Definition: TYEtage.cpp:1947
bool operator!=(const TYEtage &other) const
Definition: TYEtage.cpp:145
virtual void exportCSV(std::ofstream &ofs)
Export au format csv sur un flux transmis.
Definition: TYEtage.cpp:745
double _surfAbsorbante
Surface d'absorption de la salle (comprend la suface des machines)
Definition: TYEtage.h:596
tabMapPtrElementRegime _tabRegimesMachines
Gestion des regimes des machines.
Definition: TYEtage.h:611
virtual TYTabAcousticSurfaceGeoNode acousticFaces()
Definition: TYEtage.cpp:2009
const LPTYDalle getSol() const
Definition: TYEtage.h:221
double _volumeLibre
Volume libre de la salle (volume de la salle vide - volume des machines)
Definition: TYEtage.h:599
virtual bool setSrcsLw()
Definition: TYEtage.cpp:1684
virtual bool findAcousticSurface(const TYAcousticSurface *pAccSurf, OMatrix *pMatrix=0)
Definition: TYEtage.cpp:2086
TYTabMurGeoNode & getTabMur()
Definition: TYEtage.h:143
bool addMur(LPTYMur pMur)
Definition: TYEtage.cpp:802
TYSpectre getPuissanceRayonnee(LPTYAcousticSurface pSurface, const OMatrix matMur, const LPTYParoi pMurParoi)
Definition: TYEtage.cpp:2580
TYTabMurGeoNode _tabMur
Liste des murs.
Definition: TYEtage.h:572
TYTabUserSourcePonctuelleGeoNode _tabSources
Liste des sources ponctuelles.
Definition: TYEtage.h:584
TYSpectre & getReverb()
Definition: TYEtage.h:468
virtual bool remRegime(int regime)
Definition: TYEtage.cpp:1420
TYTabAcousticSurfaceGeoNode _facesMachineSol
Collection des faces des machines collees au sol.
Definition: TYEtage.h:620
virtual DOM_Element toXML(DOM_Element &domElement)
Definition: TYEtage.cpp:252
TYSpectre _TR
Spectre de TR.
Definition: TYEtage.h:605
virtual void getChilds(LPTYElementArray &childs, bool recursif=true)
Definition: TYEtage.cpp:766
const TYTabMurGeoNode & getTabMur() const
Definition: TYEtage.h:150
const tabMapPtrElementRegime & getTabRegimeMachines() const
Definition: TYEtage.h:480
virtual TYTabVector normals() const
Definition: TYEtage.cpp:1853
const TYTabUserSourcePonctuelleGeoNode & getTabSources() const
Definition: TYEtage.h:355
virtual void remAllSrcs()
Definition: TYEtage.cpp:2543
tabMapPtrElementBool & getTabEtatMachines()
Definition: TYEtage.h:512
void setTabRegimeMachines(const tabMapPtrElementRegime &tabRegimesMachines)
Definition: TYEtage.h:488
void setTR(const TYSpectre &TR)
Definition: TYEtage.h:435
void coeffSabine()
Definition: TYEtage.cpp:2115
double getHauteur() const
Definition: TYEtage.cpp:1018
tabMapPtrElementRegime & getTabRegimeMachines()
Definition: TYEtage.h:476
const tabMapPtrElementBool & getTabEtatMachines() const
Definition: TYEtage.h:516
virtual void setRegime(TYSpectre &Spectre, int regime=-1, bool recursif=true)
Definition: TYEtage.cpp:1407
OSpectre champDirect(const OPoint3D &unPoint)
Definition: TYEtage.cpp:2285
bool remSource(const LPTYUserSourcePonctuelleGeoNode pSourceGeoNode)
Definition: TYEtage.cpp:1257
bool addSource(LPTYUserSourcePonctuelleGeoNode pSourceGeoNode)
Definition: TYEtage.cpp:1218
TYMapPtrElementBool & getMapEtats(const int &regime)
Definition: TYEtage.h:532
void setClosed(bool closed)
Definition: TYEtage.h:199
const TYTabMachineGeoNode & getTabMachine() const
Definition: TYEtage.h:288
virtual double surface() const
Definition: TYEtage.cpp:1838
void setParoi(const LPTYParoi pParoi)
Definition: TYEtage.cpp:2640
TYTabMachineGeoNode _tabMachine
Liste des sources.
Definition: TYEtage.h:581
void verifTabRegimeSources()
Definition: TYEtage.cpp:679
TYEtage & operator=(const TYEtage &other)
Definition: TYEtage.cpp:82
TYSpectre _reverb
Spectre du champ reverbere.
Definition: TYEtage.h:608
virtual void setRegimeName(const QString &name)
Definition: TYEtage.cpp:1557
void setTabMachine(const TYTabMachineGeoNode &tab)
Definition: TYEtage.h:295
LPTYUserSourcePonctuelleGeoNode findSource(const LPTYUserSourcePonctuelle pSource)
Definition: TYEtage.cpp:1391
virtual void propagateAtt(LPTYAttenuateur pAtt)
Definition: TYEtage.cpp:2669
void calculChampRevSabine()
spectre de pression acoustique après fonction
Definition: TYEtage.cpp:2372
virtual TYTabLPPolygon faces() const
Definition: TYEtage.cpp:1893
LPTYMachine getMachine(int index)
Definition: TYEtage.h:331
void remAllMachine()
Definition: TYEtage.cpp:1172
bool addMachine(LPTYMachineGeoNode pMachineGeoNode)
Definition: TYEtage.cpp:1030
virtual TYSpectre setGlobalLW(const TYSpectre &spectre, const double &surfGlobale, const int &regime=-1)
Definition: TYEtage.cpp:2571
void updateZSource()
Definition: TYEtage.cpp:2648
const LPTYDalle getPlafond() const
Definition: TYEtage.h:236
virtual bool updateAcoustic(const bool &force=false)
Definition: TYEtage.cpp:2509
void setHauteur(double hauteur)
Definition: TYEtage.cpp:994
void remAllSources()
Definition: TYEtage.cpp:1360
tabMapPtrElementBool _tabEtatMachines
Gestion des etats des machines.
Definition: TYEtage.h:614
bool getClosed()
Definition: TYEtage.h:206
bool remMachine(const LPTYMachineGeoNode pMachineGeoNode)
Definition: TYEtage.cpp:1069
void remMurs()
Definition: TYEtage.cpp:866
bool setMurs(const TYTabPoint &tabPts, double hauteur=2.0, bool close=true)
Definition: TYEtage.cpp:875
virtual TYBox volEnglob() const
Definition: TYEtage.cpp:1917
virtual double activeSurface() const
Definition: TYEtage.cpp:2556
bool _bPourCalculTrajet
Definition: TYEtage.h:618
void findFaceMachineSol()
Definition: TYEtage.cpp:2442
LPTYParoi getParoi()
Definition: TYEtage.h:268
virtual TYTabSourcePonctuelleGeoNode getSrcs() const
Definition: TYEtage.cpp:1575
virtual int addRegime()
Definition: TYEtage.cpp:1522