GBFieldData.h 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  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. GB_METHODE_TYPE GetCalcuType() { return calcuType; }
  46. void SetCalcuType(GB_METHODE_TYPE calType) { calcuType = calType; }
  47. // D sulfide level
  48. CGBLevelPtr GetDSulfideLevel() { return m_pDSulfidLevel; }
  49. COTSParticlePtr FindAdjacentParticle(COTSParticlePtr p, COTSParticleList plist);
  50. // caculate Level
  51. //void CaculateLevel( OTSMODEL::GB_METHODE_TYPE a_nMethodType);
  52. COTSParticleList listAThinParticles;
  53. COTSParticleList listAWideParticles;
  54. COTSParticleList listASuperParticles;
  55. set<COTSParticlePtr> listBThinParticles;
  56. set<COTSParticlePtr> listBWideParticles;
  57. set<COTSParticlePtr> listBSuperParticles;
  58. COTSParticleList listCThinParticles;
  59. COTSParticleList listCWideParticles;
  60. COTSParticleList listCSuperParticles;
  61. COTSParticleList listDThinParticles;
  62. COTSParticleList listDWideParticles;
  63. COTSParticleList listDSuperParticles;
  64. COTSParticleList listDSParticles;
  65. COTSParticleList listDSulfideThinParticles;
  66. COTSParticleList listDSulfideWideParticles;
  67. COTSParticleList listDSulfideSuperParticles;
  68. COTSFieldDataList myReleventOTSFlds;
  69. std::map<COTSParticlePtr, GBParticle> mapAllParticles;
  70. std::vector <GBParticle> allMyParticles;
  71. void CategoryByMethod1();
  72. // caculate Level by method 2
  73. void CategoryByMethod2();
  74. void CategoryByASTM();
  75. void CaculateLevelDIN(COTSParticleList listParticle);
  76. BOOL IdentifyPartChemicalType(COTSParticlePtr Particle);
  77. std::string GetGBGradeString();
  78. GB_GRADE_TYPE GetGBTopGrade();
  79. protected:
  80. // cleanup
  81. void Cleanup();
  82. // initialization
  83. void Init();
  84. // duplication
  85. void Duplicate(const CGBFieldData& a_oSource);
  86. // caculate Level by method 1
  87. // caculate Level Width
  88. BOOL CaculateLevelThinWidth(COTSParticleList& a_listParticles, GB_LEVEL_TYPE a_nLevel);
  89. GB_WIDTH_TYPE CaculateLevelWidth(COTSParticlePtr Particle, GB_LEVEL_TYPE a_nLevel);
  90. BOOL CaculateLevelFatWidth(COTSParticleList& a_listParticles, GB_LEVEL_TYPE a_nLevel);
  91. BOOL CaculateSuper(COTSParticleList& a_listParticles, GB_LEVEL_TYPE a_nLevel);
  92. GB_METHODE_TYPE calcuType;
  93. private:
  94. // id
  95. int m_nFrameId;
  96. COTSRect m_myRect;
  97. // A level
  98. CGBLevelPtr m_pALevel;
  99. // B level
  100. CGBLevelPtr m_pBLevel;
  101. // C level
  102. CGBLevelPtr m_pCLevel;
  103. // D level
  104. CGBLevelPtr m_pDLevel;
  105. // DS level
  106. //CGBLevelPtr m_pDSLevel;
  107. // DSulfide level
  108. CGBLevelPtr m_pDSulfidLevel;
  109. };
  110. typedef std::shared_ptr<CGBFieldData> __declspec(dllexport) CGBFieldDataPtr;
  111. typedef std::vector<CGBFieldDataPtr> __declspec(dllexport) CGBFieldList;
  112. }