|
@@ -4,163 +4,6 @@
|
|
|
using namespace OTSDATA;
|
|
|
namespace OTSClassifyEngine
|
|
|
{
|
|
|
- // min sum
|
|
|
- const double MIN_ELEMENT_SUM = 0.02;
|
|
|
- const long INC_DEFAULTSIZE = 100;
|
|
|
- const long INC_ELEMENTSIZE_MIN = 0;
|
|
|
- const CString STR_CONNECT = _T("-");
|
|
|
- const CString STR_FE = _T("Fe");
|
|
|
- const CString STR_C = _T("C");
|
|
|
- const CString STR_SI = _T("Si");
|
|
|
- const CString STR_O = _T("O");
|
|
|
- const CString STR_SUL = _T("S");
|
|
|
- const CString STR_N = _T("N");
|
|
|
- const CString STR_CR = _T("Cr");
|
|
|
- const double SIC_MOLAR_CUTOFF = 85.0;
|
|
|
- const double FEO_MOLAR_CUTOFF = 85.0;
|
|
|
-
|
|
|
- // key element
|
|
|
- const long INC_KEY_ELEMENT_MAX = 4;
|
|
|
- const double INC_KEY_ELEMENT_CUT_OFF = 0.02; // weight%
|
|
|
- const double INC_KEY_ELEMENT_TOTAL_100 = 5.0; // total molar value
|
|
|
- const CString INC_KEY_ELEMENT_NAMES[INC_KEY_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("S"),_T("N"),_T("O"),_T("C")
|
|
|
- };
|
|
|
-
|
|
|
- // sub element
|
|
|
- const long INC_SUB_ELEMENT_MAX = 12;
|
|
|
- const double INC_SUB_ELEMENT_CUT_OFF = 0.02; // weight%
|
|
|
- const double INC_SUB_ELEMENT_TOTAL_100 = 5.0; // molar value
|
|
|
- const CString INC_SUB_ELEMENT_NAMES[INC_SUB_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("Mg"),_T("Al"),_T("Si"),_T("Ca"),_T("Ti"),_T("V"),_T("Mn"),_T("Zr"),_T("Nb"),_T("Mo"),_T("Ce"),_T("La")
|
|
|
- };
|
|
|
-
|
|
|
- // element 100 % molar value mapping cut off
|
|
|
- const double ELEMENT_MAPPING_100MOLAR = 2.0;
|
|
|
-
|
|
|
- // sulfur classification
|
|
|
-
|
|
|
- const double MIN_SUL_MOLAR = ELEMENT_MAPPING_100MOLAR;
|
|
|
- const double MIN_SUL_SUB_MOLAR = ELEMENT_MAPPING_100MOLAR;
|
|
|
- const long INC_SUL_SUB_ELEMENT_MAX = 5;
|
|
|
- const CString INC_SUL_SUB_ELEMENT_NAMES[INC_SUL_SUB_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("Mn"),_T("Ca"),_T("Mg"),_T("Ce"),_T("La")
|
|
|
- };
|
|
|
- const CString INC_SULFILSES_NAMES[INC_SUL_SUB_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("MnS"),_T("CaS"),_T("MgS"),_T("Ce(La)2S3"),_T("Ce(La)2S3")
|
|
|
- };
|
|
|
- const double INC_SULFILSES_MAPPING_RATIO[INC_SUL_SUB_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- 1.0, 1.0, 1.0, 1.5, 1.5
|
|
|
- };
|
|
|
- const double SULFIDE_MOLAR_CUTOFF = 5.0;
|
|
|
- const CString SULFIDE_STR = _T("Sulfide");
|
|
|
-
|
|
|
- // O classification
|
|
|
- const long INC_OXIDE_SUB_ELEMENT_MAX = 9;
|
|
|
- const CString INC_OXIDE_SUB_ELEMENT_NAMES[INC_OXIDE_SUB_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("Al"),_T("Mg"),_T("Si"),_T("Mn"),_T("Ca"),_T("Ce"),_T("Cr"),_T("Ti"),_T("La")
|
|
|
- };
|
|
|
- const CString INC_OXIDE_NAMES[INC_OXIDE_SUB_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("Al2O3"),_T("MgO"),_T("SiO2"),_T("MnO"),_T("CaO"),_T("CeO"),_T("Oxide"),_T("Oxide"),_T("REOxide")
|
|
|
- };
|
|
|
- const double SIMPLE_OXIDE_MOLAR_CUTOFF = 90.0;
|
|
|
- const long REOXIDE_KEY_ELEMENT_MAX = 2;
|
|
|
- const CString REOXIDE_KEY_ELEMENT_NAMES[REOXIDE_KEY_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("Ce"),_T("La")
|
|
|
- };
|
|
|
- const CString REOXIDE_STR = _T("REOxide");
|
|
|
- const long REALOXIDE_SUB_ELEMENT_MAX = 2;
|
|
|
- const CString REALOXIDE_SUB_ELEMENT_NAMES[REALOXIDE_SUB_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("Si"),_T("Al")
|
|
|
- };
|
|
|
- const double REALOXIDE_ELEMELTS_MOLAR_CUTOFF = 90.0;
|
|
|
- const CString REALOXIDE_STR = _T("REAlOxide");
|
|
|
-
|
|
|
- const long SPINEL_KEY_ELEMENT_MAX = 2;
|
|
|
- const double REALOXIDE_ELEMENT_MOLAR_LOW_CUTOFF = 20;
|
|
|
- const CString SPINEL_KEY_ELEMENT_NAMES[SPINEL_KEY_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("Mg"),_T("Al")
|
|
|
- };
|
|
|
- const double SPINEL_KEY_ELEMENT_MOLAR_TOTAL = 90.0;
|
|
|
- const double SPINEL_ELEMENT_RATIO_MIN = 1.6;
|
|
|
- const double SPINEL_ELEMENT_RATIO_MAX = 2.4;
|
|
|
- const CString SPINEL_STR = _T("Spinel");
|
|
|
-
|
|
|
- const CString SILICATE_KEY_ELEMENT_NAME = _T("Si");
|
|
|
- const double SILICATE_KEY_ELEMENT_MOLAR_TOTAL_MIN = 10.0;
|
|
|
- const double SILICATE_KEY_ELEMENT_MOLAR_TOTAL_MAX = 90.0;
|
|
|
- const CString SILICATE_STR = _T("Silicate");
|
|
|
- const long ALUMINATE_KEY_ELEMENT_MAX = 2;
|
|
|
- const CString ALUMINATE_KEY_ELEMENT_NAME[ALUMINATE_KEY_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("Al"),_T("Ca")
|
|
|
- };
|
|
|
- const double ALUMINAT_KEY_ELEMENT_MOLAR_TOTAL_MIN = 10.0;
|
|
|
- const double ALUMINAT_KEY_ELEMENT_MOLAR_TOTAL_MAX = 90.0;
|
|
|
- const CString ALUMINATE12CaO_7Al2O3_STR = _T("12CaO-7Al2O3");
|
|
|
- const CString ALUMINATE3CaO_Al2O3_STR = _T("3CaO-Al2O3");
|
|
|
- const CString ALUMINATE_STR = _T("Aluminate");
|
|
|
- const CString Ca_ALUMINATE_STR = _T("Ca-Aluminate");
|
|
|
-
|
|
|
- const CString STR_OXIDE = _T("O");
|
|
|
- const double MIN_OXIDE_MOLAR = 5.0;
|
|
|
- const double MIN_OXIDE_SUB_MOLAR_TOTAL = 5.0;
|
|
|
- const double MIN_OXIDE_SUB_MOLAR_CUTOFF = ELEMENT_MAPPING_100MOLAR;
|
|
|
- const CString OXIDE_STR = _T("Oxide");
|
|
|
-
|
|
|
- // nitrogen classification
|
|
|
- const long INC_NITR_SUB_ELEMENT_MAX = 8;
|
|
|
- const CString INC_NITR_SUB_ELEMENT_NAMES[INC_NITR_SUB_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("Ti"),_T("V"),_T("Nb"),_T("Al"),_T("Zr"),_T("Cr"),_T("La"),_T("Ce")
|
|
|
- };
|
|
|
- const CString INC_NITR_NAMES[INC_NITR_SUB_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("TiN"),_T("VN"),_T("NbN"),_T("AlN"),_T("Nitride"),_T("Nitride"),_T("Nitride"),_T("Nitride")
|
|
|
- };
|
|
|
- const double INC_NITR_MAPPING_RATIO[INC_NITR_SUB_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- 1.0, 1.0, 1.0, 1.0, 1.0, 2.0, 1.0, 1.0
|
|
|
- };
|
|
|
- const CString STR_NITR = _T("N");
|
|
|
- const CString STR_Nb = _T("Nb");
|
|
|
- const double MIN_NITR_MOLAR = ELEMENT_MAPPING_100MOLAR;
|
|
|
- const double MIN_NITR_SUB_MOLAR = ELEMENT_MAPPING_100MOLAR;
|
|
|
- const double NITRIDE_MOLAR_CUTOFF = 5.0;
|
|
|
- const CString NITRIDE_STR = _T("Nitride");
|
|
|
-
|
|
|
-#pragma region ÐÂÌí¼ÓµÄ̼ÄÚÈÝ
|
|
|
- // carbon classification
|
|
|
- const long INC_CAR_SUB_ELEMENT_MAX = 1;
|
|
|
- const CString INC_CAR_SUB_ELEMENT_NAMES[INC_CAR_SUB_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("Nb")
|
|
|
- };
|
|
|
- const CString INC_CAR_NAMES[INC_CAR_SUB_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- _T("NbC")
|
|
|
- };
|
|
|
- const double INC_CAR_MAPPING_RATIO[INC_CAR_SUB_ELEMENT_MAX] =
|
|
|
- {
|
|
|
- 1.0
|
|
|
- };
|
|
|
- const CString STR_CAR = _T("C");
|
|
|
- const double MIN_CAR_MOLAR = ELEMENT_MAPPING_100MOLAR;
|
|
|
- const double MIN_CAR_SUB_MOLAR = ELEMENT_MAPPING_100MOLAR;
|
|
|
- const double CARBON_MOLAR_CUTOFF = 5.0;
|
|
|
- const CString CARBON_STR = _T("Carbon");
|
|
|
-#pragma endregion
|
|
|
-
|
|
|
typedef enum class __declspec(dllexport) INC_CLASSIFY_TYPE
|
|
|
{
|
|
|
INVALID = -1,
|
|
@@ -175,19 +18,6 @@ namespace OTSClassifyEngine
|
|
|
MAX = 7
|
|
|
} INC_CLASSIFY_TYPE;
|
|
|
|
|
|
- typedef enum class __declspec(dllexport) INC_COMMON_CLASSIFY_TYPE
|
|
|
- {
|
|
|
- INVALID = -1,
|
|
|
- MIN = 0,
|
|
|
- SULFIDE_OXIDE = 0,
|
|
|
- OXIDE = 1,
|
|
|
- SULFIDE = 2,
|
|
|
- NITRIDE = 3,
|
|
|
- SPINEL = 4,
|
|
|
- CARBON = 5,
|
|
|
- MAX = 5
|
|
|
- } INC_COMMON_CLASSIFY_TYPE;
|
|
|
-
|
|
|
class __declspec(dllexport) COTSClassifyEng
|
|
|
{
|
|
|
public:
|
|
@@ -199,10 +29,8 @@ namespace OTSClassifyEngine
|
|
|
|
|
|
|
|
|
// check if the x-ray is an inc x-ray
|
|
|
- BOOL IsAnValidIncXRay( CElementChemistriesList& a_listElementChemistries,
|
|
|
- CElementChemistriesList& a_listElChemsInc,
|
|
|
- CElementChemistriesList& a_listElChemsIncNoFe,
|
|
|
- double& a_dMolarSum,
|
|
|
+ BOOL FilterInvalidIncXRay( CElementChemistriesList a_listElementChemistries,
|
|
|
+ CElementChemistriesList& a_listElChemsIncNoFe,
|
|
|
double& a_dMolarSumNoFe,
|
|
|
OTS_PARTICLE_TYPE& a_nIncId,NOT_INCLUTION_ID& notIncId);
|
|
|
|
|
@@ -241,13 +69,6 @@ namespace OTSClassifyEngine
|
|
|
double a_dMolarSumNoFe,
|
|
|
int& a_nIncId);
|
|
|
|
|
|
-
|
|
|
- // user STD items classification
|
|
|
- /* BOOL UserClassify(
|
|
|
- CElementChemistriesList& a_listEltChemsInc,
|
|
|
- double a_dSum,
|
|
|
- int& a_nIncId);*/
|
|
|
-
|
|
|
// nominate element chemistries list
|
|
|
BOOL NomiNateElChemsList( CElementChemistriesList& a_listElChemsInc,
|
|
|
CElementChemistriesList& a_listNomiElChemsInc);
|
|
@@ -306,5 +127,15 @@ namespace OTSClassifyEngine
|
|
|
//CSTDItemsList listUserSTD;
|
|
|
// get classify STD items
|
|
|
BOOL GetClassifySTDItem(CInclutionSTDDataPtr a_pPartSTDDataPtr, INC_CLASSIFY_TYPE a_nClassifyType, CSTDItemsList& a_listSTDItems);
|
|
|
+ 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);
|
|
|
};
|
|
|
}
|