GBFieldData.h 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. #pragma once
  2. #include "otsdataconst.h"
  3. #include "OTSFieldData.h"
  4. #include "CGBLevel.h"
  5. #include <set>
  6. #include "GBParticle.h"
  7. namespace OTSGBCalculate
  8. {
  9. using namespace std;
  10. using namespace OTSDATA;
  11. class CGBFieldData : public COTSFieldData
  12. {
  13. public:
  14. CGBFieldData(); // constructor
  15. CGBFieldData(const CGBFieldData&); // copy constructor
  16. CGBFieldData(CGBFieldData*); // copy constructor
  17. CGBFieldData& operator=(const CGBFieldData&); // =operator
  18. BOOL operator==(const CGBFieldData&); // =operator
  19. virtual ~CGBFieldData(); // detractor
  20. // serialization
  21. virtual void Serialize(bool isStoring, tinyxml2::XMLDocument *classDoc, tinyxml2::XMLElement *rootNode);
  22. // id
  23. int GetFrameId() { return m_nFrameId; }
  24. void SetFrameId(int a_nFrameId) { m_nFrameId = a_nFrameId; }
  25. GB_GRADE_TYPE GetMyGrade(GB_LEVEL_TYPE type, GB_WIDTH_TYPE wide);
  26. // A level
  27. CGBLevelPtr GetALevel() { return m_pALevel; }
  28. // B level
  29. CGBLevelPtr GetBLevel() { return m_pBLevel; }
  30. // C level
  31. CGBLevelPtr GetCLevel() { return m_pCLevel; }
  32. // D level
  33. CGBLevelPtr GetDLevel() { return m_pDLevel; }
  34. // DS level
  35. CGBLevelPtr GetDSLevel() { return m_pDSLevel; }
  36. // D sulfide level
  37. CGBLevelPtr GetDSulfideLevel() { return m_pDSulfidLevel; }
  38. COTSParticlePtr FindAdjacentParticle(COTSParticlePtr p, COTSParticleList plist);
  39. // caculate Level
  40. //void CaculateLevel( OTSMODEL::GB_METHODE_TYPE a_nMethodType);
  41. COTSParticleList listAThinParticles;
  42. COTSParticleList listAWideParticles;
  43. COTSParticleList listASuperParticles;
  44. set<COTSParticlePtr> listBThinParticles;
  45. set<COTSParticlePtr> listBWideParticles;
  46. set<COTSParticlePtr> listBSuperParticles;
  47. COTSParticleList listCThinParticles;
  48. COTSParticleList listCWideParticles;
  49. COTSParticleList listCSuperParticles;
  50. COTSParticleList listDThinParticles;
  51. COTSParticleList listDWideParticles;
  52. COTSParticleList listDSuperParticles;
  53. COTSParticleList listDSParticles;
  54. COTSParticleList listDSulfideThinParticles;
  55. COTSParticleList listDSulfideWideParticles;
  56. COTSParticleList listDSulfideSuperParticles;
  57. COTSFieldDataList myReleventOTSFlds;
  58. std::map<COTSParticlePtr, GBParticle> mapAllParticles;
  59. std::vector <GBParticle> allMyParticles;
  60. void CaculateLevelByMethod1();
  61. // caculate Level by method 2
  62. void CaculateLevelByMethod2();
  63. void CaculateLevelASTM();
  64. void CaculateLevelDIN(COTSParticleList listParticle);
  65. protected:
  66. // cleanup
  67. void Cleanup();
  68. // initialization
  69. void Init();
  70. // duplication
  71. void Duplicate(const CGBFieldData& a_oSource);
  72. // caculate Level by method 1
  73. // caculate Level Width
  74. BOOL CaculateLevelThinWidth(COTSParticleList& a_listParticles, GB_LEVEL_TYPE a_nLevel);
  75. GB_WIDTH_TYPE CaculateLevelWidth(COTSParticlePtr Particle, GB_LEVEL_TYPE a_nLevel);
  76. BOOL CaculateLevelFatWidth(COTSParticleList& a_listParticles, GB_LEVEL_TYPE a_nLevel);
  77. BOOL CaculateSuper(COTSParticleList& a_listParticles, GB_LEVEL_TYPE a_nLevel);
  78. private:
  79. // id
  80. int m_nFrameId;
  81. // A level
  82. CGBLevelPtr m_pALevel;
  83. // B level
  84. CGBLevelPtr m_pBLevel;
  85. // C level
  86. CGBLevelPtr m_pCLevel;
  87. // D level
  88. CGBLevelPtr m_pDLevel;
  89. // DS level
  90. CGBLevelPtr m_pDSLevel;
  91. // DSulfide level
  92. CGBLevelPtr m_pDSulfidLevel;
  93. };
  94. typedef std::shared_ptr<CGBFieldData> __declspec(dllexport) CGBFieldDataPtr;
  95. typedef std::vector<CGBFieldDataPtr> __declspec(dllexport) CGBFieldList;
  96. }