123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- #pragma once
- #include "InclutionSTDData.h"
- #include "OTSParticle.h"
- using namespace OTSDATA;
- namespace OTSClassifyEngine
- {
- typedef enum class __declspec(dllexport) INC_CLASSIFY_TYPE
- {
- INVALID = -1,
- MIN = 0,
- SIMPLE_OXIDE = 0,
- COMPLEX_OXIDE = 1,
- OXIDE = 2,
- SUL = 3,
- NITR = 4,
- USER = 5,
- CARBON = 6,
- MAX = 7
- } INC_CLASSIFY_TYPE;
- class __declspec(dllexport) COTSClassifyEng
- {
- public:
-
- COTSClassifyEng(CInclutionSTDDataPtr a_pPartSTDData); // constructor
- virtual ~COTSClassifyEng(); // detractor
- BOOL ClassifyXray(STEEL_TECHNOLOGY steelTech, CElementChemistriesList & a_listElementChemistries, int & a_nIncId, int& a_GrpId);
-
- // check if the x-ray is an inc x-ray
- BOOL FilterInvalidIncXRay( CElementChemistriesList a_listElementChemistries,
- CElementChemistriesList& a_listElChemsIncNoFe,
- double& a_dMolarSumNoFe,
- OTS_PARTICLE_TYPE& a_nIncId,NOT_INCLUTION_ID& notIncId);
- // system STD classification
- BOOL SystemClassify(STEEL_TECHNOLOGY steelTech,
- CElementChemistriesList& a_listElChemsIncNoFe,
- double a_dMolarSumNoFe,
- int& a_nIncId);
- BOOL GroupClassify(CElementChemistriesList& a_listElChemsIncNoFe,int incId, IDENTIFIED_INC_GRP_ID& a_GrpId);
- BOOL GroupClassify1(CElementChemistriesList& a_listElChemsIncNoFe, int incId, IDENTIFIED_INC_GRP_ID& a_GrpId);
- BOOL GetGroupNameAndColorById(int grpId, std::string& grpName, std::string& grpColor);
- // sulfides classification
- BOOL SulClassify(
- STEEL_TECHNOLOGY steelTech,
- CElementChemistriesList& a_listElChemsIncNoFe,
- double a_dMolarSumNoFe,
- int& a_nIncId);
- // oxides classification
- BOOL OxideClassify(
- CElementChemistriesList& a_listElChemsIncNoFe,
- double a_dSumNoFe,
- int& a_nIncId);
- // nitrides classification
- BOOL NitrideClassify(
- CElementChemistriesList& a_listElChemsIncNoFe,
- double a_dMolarSumNoFe,
- int& a_nIncId);
- // nominate element chemistries list
- BOOL NominateElChemsList(CElementChemistriesList& a_listElChemsInc,
- CElementChemistriesList& a_listNomiElChemsInc);
-
-
- protected:
-
- // check if this is a key element
- BOOL IsKeyElement(CElementChemistryPtr a_pElChem);
- // check if this is a sub element
- BOOL IsSubElement(CElementChemistryPtr a_pElChem);
- // get named element chemistry
- CElementChemistryPtr GetNamedElementChemistry(CElementChemistriesList& a_listChemistriesElements, const CString a_strElementName);
-
- // get STD item by name
- CSTDItemPtr GetSTDItemByName(CSTDItemsList& a_listSTDItems, CString a_strName);
- // get STD item name by id
- CString GetSTDItemNameById(CSTDItemsList& a_listSTDItems, int a_nItemId);
- // elements mapping
- BOOL ElementsMapping(double a_dMolarSumNoFe, double a_dMappingRadio, CElementChemistryPtr a_pFirstElChem, CElementChemistryPtr a_pSecondElChem, BOOL& a_bMapped);
- // check if is a simple
- BOOL IsASimpleOxide(CElementChemistriesList& a_listElChems, double a_dMolarSum, CString& a_strSimOxName);
- // check if is a REOxide
- BOOL IsAREOxide(CElementChemistriesList& a_listElChems, double a_dMolarSum);
- // check if is a REAlOxide
- BOOL IsAnREAlOxide(CElementChemistriesList& a_listElChems, double a_dMolarSum);
- // check if is a Spinel
- BOOL IsASpinel(CElementChemistriesList& a_listElChems, double a_dMolarSum);
- // check if is a Silicate
- BOOL IsASilicate(CElementChemistriesList& a_listElChems, double a_dMolarSum);
- // check if is a Aluminate
- BOOL IsAnCa_Aluminate(CElementChemistriesList& a_listElChems, double a_dMolarSum, CString& strName);
- // check if the element chemistries list matching the STD
- BOOL MatchingSTD(CElementChemistriesList& a_listElChems, CSTDItemPtr a_pSTDItem, double a_dMolarSum);
- // calculate 100% value
- double Cal100NorValue(double a_dValue, double a_dSumValue);
- private:
- CInclutionSTDDataPtr pPartSTDData;
- CSTDItemsList listSulfideSTD;
- CSTDItemsList listOxideSTD;
- CSTDItemsList listNitrideSTD;
- CSTDItemsList listCarbonSTD;
-
-
- // get classify STD items
- BOOL GetClassifySTDItem(CInclutionSTDDataPtr a_pPartSTDDataPtr, INC_CLASSIFY_TYPE a_nClassifyType, CSTDItemsList& a_listSTDItems);
- BOOL GetClassifyTypeOfSTDItem(int a_nIncId, INC_CLASSIFY_TYPE& a_nClassifyType);
- BOOL GetSulfildeOxideComplexItemId(CElementChemistriesList& a_listElChemsIncNoFe,
- double a_dMolarSumNoFe, CString strSulfideBaseName,
- int& nIncId);
- BOOL GetSulfildeNitrideComplexItemId(CElementChemistriesList& a_listElChemsIncNoFe,
- double a_dMolarSumNoFe, CString strSulfideBaseName,
- int& nIncId);
- void FilterOnSteelTech(STEEL_TECHNOLOGY steelTech,
- CElementChemistriesList& a_listElChemsInc);
- BOOL ElementMatching(double a_dMolarSumNoFe, CElementChemistriesList a_listElChemsInc, CElementChemistryPtr KeyEleChemistry, CString subEleName, double mappingRatio, double& dKeyEleResidualMolar100);
- BOOL ElementMatchingOnSteelTech(double a_dMolarSumNoFe, STEEL_TECHNOLOGY steelTech, CElementChemistriesList a_listElChemsIncNoFe, CElementChemistryPtr pSulElChem, CString& strProMappingSulName);
- };
- }
|