ParticleSTD.h 6.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. #pragma once
  2. #include <string>
  3. #include <vector>
  4. #include "element.h"
  5. #include <map>
  6. using namespace std;
  7. using namespace OTSDATA;
  8. class MaxEDSRule :public xmls::ISlo
  9. {
  10. public:
  11. virtual void Serialize(bool isStoring, tinyxml2::XMLDocument *classDoc, tinyxml2::XMLElement *rootNode) override;
  12. CElementsList m_elementList;
  13. std::vector<std::string> m_ImgPropertyList;
  14. std::vector<std::string> m_OtherpropertyList;
  15. std::vector<std::string> m_usingConstants;
  16. std::string m_expressionStr;
  17. double m_MaxEDSTime;
  18. };
  19. typedef std::shared_ptr<MaxEDSRule> MaxEDSRulePtr;
  20. typedef std::vector<MaxEDSRulePtr> MaxEDSRuleList;
  21. class ZeroElementRule :public xmls::ISlo
  22. {
  23. public:
  24. virtual void Serialize(bool isStoring, tinyxml2::XMLDocument *classDoc, tinyxml2::XMLElement *rootNode) override;
  25. CElementsList GetUsingElementList() const { return m_UsingelementList; }
  26. void SetUsingElementList(CElementsList val) { m_UsingelementList = val; }
  27. std::vector<std::string> GetImgPropertyList() const { return m_ImgPropertyList; }
  28. void SetImgPropertyList(std::vector<std::string> val) { m_ImgPropertyList = val; }
  29. std::vector<std::string> GetOtherpropertyList() const { return m_OtherpropertyList; }
  30. void SetOtherpropertyList(std::vector<std::string> val) { m_OtherpropertyList = val; }
  31. std::vector<std::string> GetUsingConstants() const { return m_usingConstants; }
  32. void SetUsingConstants(std::vector<std::string> val) { m_usingConstants = val; }
  33. std::string GetExpressionStr() const { return m_expressionStr; }
  34. void SetExpressionStr(std::string val) { m_expressionStr = val; }
  35. std::string GetZeroElementName() const { return m_ZeroElementName; }
  36. void SetZeroElementName(std::string val) { m_ZeroElementName = val; }
  37. private:
  38. CElementsList m_UsingelementList;
  39. std::vector<std::string> m_ImgPropertyList;
  40. std::vector<std::string> m_OtherpropertyList;
  41. std::vector<std::string> m_usingConstants;
  42. std::string m_expressionStr;
  43. std::string m_ZeroElementName;
  44. };
  45. typedef std::shared_ptr<ZeroElementRule> ZeroElementRulePtr;
  46. typedef std::vector<ZeroElementRulePtr> ZeroElementRuleList;
  47. class PartSTDItem :public xmls::ISlo
  48. {
  49. public:
  50. std::map<std::string, CElementPtr>& GetMapElements();
  51. virtual void Serialize(bool isStoring, tinyxml2::XMLDocument *classDoc, tinyxml2::XMLElement *rootNode) override;
  52. std::string GetHardness() const { return m_Hardness; }
  53. void SetHardness(std::string val) { m_Hardness = val; }
  54. std::string GetDensity() const { return m_Density; }
  55. void SetDensity(std::string val) { m_Density = val; }
  56. std::string GetElectrical_conductivity() const { return m_Electrical_conductivity; }
  57. void SetElectrical_conductivity(std::string val) { m_Electrical_conductivity = val; }
  58. int GetID() const { return ID; }
  59. void SetID(int val) { ID = val; }
  60. std::string GetName() const { return m_name; }
  61. void SetName(std::string val) { m_name = val; }
  62. std::string GetColor() const { return m_color; }
  63. void SetColor(std::string val) { m_color = val; }
  64. int GetGrpID() const { return m_grpId; }
  65. void SetGrpID(int val) { m_grpId = val; }
  66. std::string GetGrpName() const { return m_grpName; }
  67. void SetGrpName(std::string val) { m_grpName = val; }
  68. std::string GetGrpColor() const { return m_grpColor; }
  69. void SetGrpColor(std::string val) { m_grpColor = val; }
  70. std::vector<std::string> GetUsingImgPropertyNameList() { return m_ImgPropertyList; }
  71. void SetUsingImgPropertyNameList(std::vector<std::string> val) { m_ImgPropertyList= val; }
  72. std::vector<std::string> GetUsingOtherpropertyList() { return m_OtherpropertyList; }
  73. void SetUsingOtherpropertyList(std::vector<std::string> val) { m_OtherpropertyList = val; }
  74. std::vector<std::string> GetUsingConstants() const { return m_usingConstants; }
  75. std::string GetExpressionStr() const { return m_expressionStr; }
  76. void SetExpressionStr(std::string val) { m_expressionStr = val; }
  77. CElementsList GetKeyElementList() const { return m_KeyelementList; }
  78. void SetKeyElementList(CElementsList val) { m_KeyelementList=val; }
  79. CElementsList GetSubElementList() const { return m_SubelementList; }
  80. void SetSubElementList(CElementsList val) { m_SubelementList = val; }
  81. CElementsList GetAllSortedEleList()
  82. {
  83. std::multimap<int, CElementPtr> mapEles;// sorted all the using elements by the name's length,so that we can always handle the longer name element first.
  84. //because if we handle short name element first ,we may treat "Cu" as "C" or other have the same character in name element.
  85. for (auto ele : m_KeyelementList)
  86. {
  87. mapEles.insert(std::pair<int, CElementPtr>(ele->GetName().GetLength(), ele));
  88. }
  89. for (auto ele : m_SubelementList)
  90. {
  91. mapEles.insert(std::pair<int, CElementPtr>(ele->GetName().GetLength(), ele));
  92. }
  93. CElementsList eleList;
  94. for (auto itr = mapEles.rbegin(); itr != mapEles.rend(); itr++)
  95. {
  96. eleList.push_back(itr->second);
  97. }
  98. return eleList;
  99. }
  100. /*CElementsList m_SubelementList;*/
  101. std::string GetFormula() const { return m_Formula; }
  102. void SetFormula(std::string val) { m_Formula = val; }
  103. std::string GetElement() const { return m_Element; }
  104. void SetElement(std::string val) { m_Element = val; }
  105. double GetBSE() const { return m_BSE; }
  106. void SetBSE(double val) { m_BSE = val; }
  107. private:
  108. int ID;
  109. std::string m_name;
  110. std::string m_color;
  111. int m_grpId;
  112. std::string m_grpName;
  113. std::string m_grpColor;
  114. CElementsList m_KeyelementList;
  115. CElementsList m_SubelementList;
  116. std::vector<std::string> m_ImgPropertyList;
  117. std::vector<std::string> m_OtherpropertyList;
  118. std::vector<std::string> m_usingConstants;
  119. std::string m_expressionStr;
  120. std::map <std::string, CElementPtr> m_mapEleItems;
  121. std::string m_Hardness;
  122. std::string m_Density;
  123. std::string m_Electrical_conductivity;
  124. double m_BSE;
  125. std::string m_Formula;
  126. std::string m_Element;
  127. };
  128. typedef std::shared_ptr<PartSTDItem> PartSTDItemPtr;
  129. typedef std::vector<PartSTDItemPtr> PartSTDItemList;
  130. class ParticleSTD:public xmls::ISlo
  131. {
  132. public:
  133. ParticleSTD() {};
  134. ~ParticleSTD() {};
  135. //void AddItem();
  136. std::vector<PartSTDItemPtr> GetSTDItems();
  137. ZeroElementRuleList GetZeroRules();
  138. MaxEDSRuleList GetMaxEDSRules();
  139. bool LoadItemsFromFile();
  140. void PartSTDItemListClear();
  141. void ZeroElementRuleListClear();
  142. void MaxEDSRuleListClear();
  143. void ConstantsMapClear();
  144. void setSTDList(PartSTDItemList listSTDItem);
  145. void setZeroElementRuleList(ZeroElementRuleList listZeroElementRuleItem);
  146. void setMaxEDSRuleList(MaxEDSRuleList listMaxEDSRuleItem);
  147. void setConstantsMap(map<std::string, double> listConstantsItem);
  148. std::map<std::string, double>& GetMapConstants();
  149. virtual void Serialize(bool isStoring, tinyxml2::XMLDocument *classDoc, tinyxml2::XMLElement *rootNode) override;
  150. PartSTDItemPtr GetSTDItemById(int id);
  151. PartSTDItemList m_stdItems;
  152. ZeroElementRuleList m_zeroRules;
  153. std::map<std::string, double> m_mapConstants;
  154. MaxEDSRuleList m_MaxRules;
  155. };
  156. typedef std::shared_ptr<ParticleSTD> ParticleSTDPtr;
  157. typedef std::vector<ParticleSTDPtr> ParticleSTDList;