GBFieldData.h 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  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. const CString STR_Al = _T("Al");
  12. const CString STR_SI = _T("Si");
  13. const CString STR_O = _T("O");
  14. const CString STR_SUL = _T("S");
  15. const CString STR_N = _T("N");
  16. const CString STR_Mn = _T("Mn");
  17. const CString STR_Fe = _T("Fe");
  18. const CString STR_C = _T("C");
  19. const double MIN_ELEMENT_SUM = 0.02;
  20. const double RICH_ELEMENT_SUM = 5;
  21. class __declspec(dllexport) CGBFieldData : public COTSFieldData
  22. {
  23. public:
  24. CGBFieldData(); // constructor
  25. CGBFieldData(const CGBFieldData&); // copy constructor
  26. CGBFieldData(CGBFieldData*); // copy constructor
  27. CGBFieldData& operator=(const CGBFieldData&); // =operator
  28. BOOL operator==(const CGBFieldData&); // =operator
  29. virtual ~CGBFieldData(); // detractor
  30. void SetMyRect(COTSRect r) { m_myRect = r; }
  31. COTSRect GetMyRect() { return m_myRect; }
  32. // serialization
  33. //virtual void Serialize(bool isStoring, tinyxml2::XMLDocument *classDoc, tinyxml2::XMLElement *rootNode);
  34. // id
  35. int GetFrameId() { return m_nFrameId; }
  36. void SetFrameId(int a_nFrameId) { m_nFrameId = a_nFrameId; }
  37. // A level
  38. CGBLevelPtr GetALevel() { return m_pALevel; }
  39. // B level
  40. CGBLevelPtr GetBLevel() { return m_pBLevel; }
  41. // C level
  42. CGBLevelPtr GetCLevel() { return m_pCLevel; }
  43. // D level
  44. CGBLevelPtr GetDLevel() { return m_pDLevel; }
  45. // D sulfide level
  46. CGBLevelPtr GetDSulfideLevel() { return m_pDSulfidLevel; }
  47. COTSParticlePtr FindAdjacentParticle(COTSParticlePtr p, COTSParticleList plist);
  48. // caculate Level
  49. //void CaculateLevel( OTSMODEL::GB_METHODE_TYPE a_nMethodType);
  50. COTSParticleList listAThinParticles;
  51. COTSParticleList listAWideParticles;
  52. COTSParticleList listASuperParticles;
  53. set<COTSParticlePtr> listBThinParticles;
  54. set<COTSParticlePtr> listBWideParticles;
  55. set<COTSParticlePtr> listBSuperParticles;
  56. COTSParticleList listCThinParticles;
  57. COTSParticleList listCWideParticles;
  58. COTSParticleList listCSuperParticles;
  59. COTSParticleList listDThinParticles;
  60. COTSParticleList listDWideParticles;
  61. COTSParticleList listDSuperParticles;
  62. COTSParticleList listDSParticles;
  63. COTSParticleList listDSulfideThinParticles;
  64. COTSParticleList listDSulfideWideParticles;
  65. COTSParticleList listDSulfideSuperParticles;
  66. COTSFieldDataList myReleventOTSFlds;
  67. std::map<COTSParticlePtr, GBParticle> mapAllParticles;
  68. std::vector <GBParticle> allMyParticles;
  69. void CategoryByMethod1();
  70. // caculate Level by method 2
  71. void CategoryByMethod2();
  72. void CategoryByASTM();
  73. void CaculateLevelDIN(COTSParticleList listParticle);
  74. BOOL IdentifyPartChemicalType(COTSParticlePtr Particle);
  75. std::string GetGBGradeString();
  76. GB_GRADE_TYPE GetGBTopGrade();
  77. protected:
  78. // cleanup
  79. void Cleanup();
  80. // initialization
  81. void Init();
  82. // duplication
  83. void Duplicate(const CGBFieldData& a_oSource);
  84. // caculate Level by method 1
  85. // caculate Level Width
  86. BOOL CaculateLevelThinWidth(COTSParticleList& a_listParticles, GB_LEVEL_TYPE a_nLevel);
  87. GB_WIDTH_TYPE CaculateLevelWidth(COTSParticlePtr Particle, GB_LEVEL_TYPE a_nLevel);
  88. BOOL CaculateLevelFatWidth(COTSParticleList& a_listParticles, GB_LEVEL_TYPE a_nLevel);
  89. BOOL CaculateSuper(COTSParticleList& a_listParticles, GB_LEVEL_TYPE a_nLevel);
  90. private:
  91. // id
  92. int m_nFrameId;
  93. COTSRect m_myRect;
  94. // A level
  95. CGBLevelPtr m_pALevel;
  96. // B level
  97. CGBLevelPtr m_pBLevel;
  98. // C level
  99. CGBLevelPtr m_pCLevel;
  100. // D level
  101. CGBLevelPtr m_pDLevel;
  102. // DS level
  103. //CGBLevelPtr m_pDSLevel;
  104. // DSulfide level
  105. CGBLevelPtr m_pDSulfidLevel;
  106. };
  107. typedef std::shared_ptr<CGBFieldData> __declspec(dllexport) CGBFieldDataPtr;
  108. typedef std::vector<CGBFieldDataPtr> __declspec(dllexport) CGBFieldList;
  109. }