|
@@ -10,8 +10,47 @@ namespace OTSClassifyEngine
|
|
|
|
|
|
using namespace OTSClassifyEngine;
|
|
|
|
|
|
- COTSClassifyEng::COTSClassifyEng() // constructor
|
|
|
+ COTSClassifyEng::COTSClassifyEng(CInclutionSTDDataPtr a_pPartSTDData) // constructor
|
|
|
{
|
|
|
+ ASSERT(a_pPartSTDData);
|
|
|
+ // get all sulfides STD items
|
|
|
+ pPartSTDData = a_pPartSTDData;
|
|
|
+ if (!GetClassifySTDItem(a_pPartSTDData, INC_CLASSIFY_TYPE::SUL, listSulfideSTD))
|
|
|
+ {
|
|
|
+ // something is wrong
|
|
|
+ LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::SulClassify: failed to call GetClassifySTDItem method."));
|
|
|
+ }
|
|
|
+
|
|
|
+ // get all oxides STD items
|
|
|
+
|
|
|
+ if (!GetClassifySTDItem(a_pPartSTDData, INC_CLASSIFY_TYPE::OXIDE, listOxideSTD))
|
|
|
+ {
|
|
|
+ // something wrong
|
|
|
+ LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::OxideClassify: failed to call GetClassifySTDItem method."));
|
|
|
+ }
|
|
|
+ // get all nitride STD items
|
|
|
+
|
|
|
+ if (!GetClassifySTDItem(a_pPartSTDData, INC_CLASSIFY_TYPE::NITR, listNitrideSTD))
|
|
|
+ {
|
|
|
+ // something wrong
|
|
|
+ LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::NitrideClassify: failed to call GetClassifySTDItem method."));
|
|
|
+ }
|
|
|
+ // get all nitride STD items
|
|
|
+
|
|
|
+ if (!GetClassifySTDItem(a_pPartSTDData, INC_CLASSIFY_TYPE::CARBON, listCarbonSTD))
|
|
|
+ {
|
|
|
+ // something wrong
|
|
|
+ LogErrorTrace(__FILE__, __LINE__, _T("CClassifyEng::NitrideClassify: failed to call GetClassifySTDItem method."));
|
|
|
+ }
|
|
|
+ // get user STD items
|
|
|
+
|
|
|
+ //if (!GetClassifySTDItem(a_pPartSTDData, INC_CLASSIFY_TYPE::USER, listUserSTD))
|
|
|
+ //{
|
|
|
+ // // something wrong
|
|
|
+ // LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::OxideClassify: failed to call GetClassifySTDItem method."));
|
|
|
+ //
|
|
|
+ //}
|
|
|
+
|
|
|
}
|
|
|
|
|
|
COTSClassifyEng::~COTSClassifyEng() // detractor
|
|
@@ -19,17 +58,10 @@ namespace OTSClassifyEngine
|
|
|
}
|
|
|
|
|
|
//Dispose ClassifyXray
|
|
|
- BOOL COTSClassifyEng::ClassifyXray(CInclutionSTDDataPtr a_pPartSTDData, STEEL_TECHNOLOGY steelTech, CElementChemistriesList& a_listElementChemistries, int& a_nIncId, int& a_GrpId)
|
|
|
+ BOOL COTSClassifyEng::ClassifyXray( STEEL_TECHNOLOGY steelTech, CElementChemistriesList& a_listElementChemistries, int& a_nIncId, int& a_GrpId)
|
|
|
{
|
|
|
|
|
|
- // safety check
|
|
|
- ASSERT(a_pPartSTDData);
|
|
|
- if (!a_pPartSTDData)
|
|
|
- {
|
|
|
- /*SendLogMessageToNlog("begin to classify particles", (int)PostLogLevel::warn);*/
|
|
|
- LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::ClassifyXray: invalid CPartSTDDataPtr."));
|
|
|
- return FALSE;
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
// the element chemistries list is an inclusion
|
|
|
CElementChemistriesList listElChemsInc;
|
|
@@ -63,7 +95,7 @@ namespace OTSClassifyEngine
|
|
|
|
|
|
// system STD classification
|
|
|
int nIncId = (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED;
|
|
|
- if (!SystemClassify(a_pPartSTDData, steelTech, listElChemsIncNoFe, dMolarSumNoFe, nIncId))
|
|
|
+ if (!SystemClassify( steelTech, listElChemsIncNoFe, dMolarSumNoFe, nIncId))
|
|
|
{
|
|
|
LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::ClassifyXray: failed to call SystemClassify method."));
|
|
|
a_nIncId = (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED;
|
|
@@ -75,18 +107,18 @@ namespace OTSClassifyEngine
|
|
|
{// identified, return TRUE
|
|
|
a_nIncId = nIncId;
|
|
|
IDENTIFIED_INC_GRP_ID grpid;
|
|
|
- GroupClassify(a_pPartSTDData,listElChemsIncNoFe,nIncId, grpid);
|
|
|
+ GroupClassify(listElChemsIncNoFe,nIncId, grpid);
|
|
|
a_GrpId = (int)grpid;
|
|
|
return TRUE;
|
|
|
}
|
|
|
|
|
|
// user STD classification
|
|
|
- if (!UserClassify(a_pPartSTDData, listElChemsInc, dMolarSum, nIncId))
|
|
|
+ /*if (!UserClassify(a_pPartSTDData, listElChemsInc, dMolarSum, nIncId))
|
|
|
{
|
|
|
LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::ClassifyXray: failed to call UserClassify method."));
|
|
|
a_nIncId = (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED;
|
|
|
return FALSE;
|
|
|
- }
|
|
|
+ }*/
|
|
|
|
|
|
// identified?
|
|
|
if (nIncId > (int)OTS_PARTICLE_TYPE::IDENTIFIED)
|
|
@@ -94,7 +126,7 @@ namespace OTSClassifyEngine
|
|
|
// identified, return TRUE
|
|
|
a_nIncId = nIncId;
|
|
|
IDENTIFIED_INC_GRP_ID grpid;
|
|
|
- GroupClassify(a_pPartSTDData,listElChemsIncNoFe,nIncId, grpid);
|
|
|
+ GroupClassify(listElChemsIncNoFe,nIncId, grpid);
|
|
|
a_GrpId = (int)grpid;
|
|
|
return TRUE;
|
|
|
}
|
|
@@ -102,7 +134,7 @@ namespace OTSClassifyEngine
|
|
|
// can't identify this inclusion
|
|
|
a_nIncId = (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED;
|
|
|
IDENTIFIED_INC_GRP_ID grpid;
|
|
|
- GroupClassify(a_pPartSTDData,listElChemsIncNoFe,nIncId, grpid);
|
|
|
+ GroupClassify(listElChemsIncNoFe,nIncId, grpid);
|
|
|
a_GrpId = (int)grpid;
|
|
|
return TRUE;
|
|
|
}
|
|
@@ -268,20 +300,17 @@ namespace OTSClassifyEngine
|
|
|
}
|
|
|
|
|
|
// system classification
|
|
|
- BOOL COTSClassifyEng::SystemClassify(CInclutionSTDDataPtr a_pPartSTDData,
|
|
|
+ BOOL COTSClassifyEng::SystemClassify(
|
|
|
STEEL_TECHNOLOGY steelTech,
|
|
|
CElementChemistriesList& a_listElChemsIncNoFe,
|
|
|
double a_dMolarSumNoFe,
|
|
|
int& a_nIncId)
|
|
|
{
|
|
|
- // safety check
|
|
|
- ASSERT(a_pPartSTDData);
|
|
|
-
|
|
|
|
|
|
|
|
|
// try sulfide classification
|
|
|
int nIncId = (int)OTS_PARTICLE_TYPE::INVALID;
|
|
|
- if (!SulClassify(a_pPartSTDData, steelTech, a_listElChemsIncNoFe, a_dMolarSumNoFe, nIncId))
|
|
|
+ if (!SulClassify(steelTech, a_listElChemsIncNoFe, a_dMolarSumNoFe, nIncId))
|
|
|
{
|
|
|
// something wrong
|
|
|
LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::ClassifyXray: failed to call SulClassify method."));
|
|
@@ -299,7 +328,7 @@ namespace OTSClassifyEngine
|
|
|
}
|
|
|
|
|
|
// nitride classification
|
|
|
- if (!NitrideClassify(a_pPartSTDData, a_listElChemsIncNoFe, a_dMolarSumNoFe, nIncId))
|
|
|
+ if (!NitrideClassify(a_listElChemsIncNoFe, a_dMolarSumNoFe, nIncId))
|
|
|
{
|
|
|
// something wrong
|
|
|
LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::ClassifyXray: failed to call NitrideClassify method."));
|
|
@@ -315,7 +344,7 @@ namespace OTSClassifyEngine
|
|
|
}
|
|
|
|
|
|
// oxide classification
|
|
|
- if (!OxideClassify(a_pPartSTDData, a_listElChemsIncNoFe, a_dMolarSumNoFe, nIncId))
|
|
|
+ if (!OxideClassify(a_listElChemsIncNoFe, a_dMolarSumNoFe, nIncId))
|
|
|
{
|
|
|
// something wrong
|
|
|
LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::ClassifyXray: failed to call OxideClassify method."));
|
|
@@ -331,7 +360,7 @@ namespace OTSClassifyEngine
|
|
|
}
|
|
|
|
|
|
// CarbonClassify classification
|
|
|
- if (!CarbonClassify(a_pPartSTDData, a_listElChemsIncNoFe, a_dMolarSumNoFe, nIncId))
|
|
|
+ if (!CarbonClassify(a_listElChemsIncNoFe, a_dMolarSumNoFe, nIncId))
|
|
|
{
|
|
|
// something wrong
|
|
|
LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::ClassifyXray: failed to call CarbonClassify method."));
|
|
@@ -351,7 +380,7 @@ namespace OTSClassifyEngine
|
|
|
return TRUE;
|
|
|
}
|
|
|
|
|
|
- BOOL COTSClassifyEng::GroupClassify(CInclutionSTDDataPtr a_pPartSTDData,CElementChemistriesList& a_listElChemsIncNoFe,int incId, IDENTIFIED_INC_GRP_ID& a_GrpId)
|
|
|
+ BOOL COTSClassifyEng::GroupClassify(CElementChemistriesList& a_listElChemsIncNoFe,int incId, IDENTIFIED_INC_GRP_ID& a_GrpId)
|
|
|
{
|
|
|
|
|
|
double dOWeight = 0;
|
|
@@ -364,7 +393,7 @@ namespace OTSClassifyEngine
|
|
|
|
|
|
}*/
|
|
|
|
|
|
- auto stdItm =a_pPartSTDData->GetSTDItemById( incId);
|
|
|
+ auto stdItm =pPartSTDData->GetSTDItemById( incId);
|
|
|
if (incId == (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED)
|
|
|
{
|
|
|
a_GrpId = IDENTIFIED_INC_GRP_ID::Others;
|
|
@@ -551,25 +580,14 @@ namespace OTSClassifyEngine
|
|
|
|
|
|
|
|
|
// sulfides classification
|
|
|
- BOOL COTSClassifyEng::SulClassify(CInclutionSTDDataPtr a_pPartSTDData,
|
|
|
+ BOOL COTSClassifyEng::SulClassify(
|
|
|
STEEL_TECHNOLOGY steelTech,
|
|
|
CElementChemistriesList& a_listElChemsIncNoFe,
|
|
|
double a_dMolarSumNoFe,
|
|
|
int& a_nIncId)
|
|
|
{
|
|
|
- // safety check
|
|
|
- ASSERT(a_pPartSTDData);
|
|
|
|
|
|
-
|
|
|
- // get all sulfides STD items
|
|
|
- CSTDItemsList listSulfideSTD;
|
|
|
- if (!GetClassifySTDItem(a_pPartSTDData, INC_CLASSIFY_TYPE::SUL, listSulfideSTD))
|
|
|
- {
|
|
|
- // something is wrong
|
|
|
- LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::SulClassify: failed to call GetClassifySTDItem method."));
|
|
|
- return FALSE;
|
|
|
- }
|
|
|
- //GetSTDItemNameById
|
|
|
+
|
|
|
// check if element chemistries list contain any sulfur
|
|
|
CElementChemistryPtr pSulElChem = GetNamedElementChemistry(a_listElChemsIncNoFe, STR_SUL);
|
|
|
if (!pSulElChem)
|
|
@@ -815,7 +833,7 @@ namespace OTSClassifyEngine
|
|
|
|
|
|
// check if the rest element chemistries map an oxide
|
|
|
int nIncId = (int)OTS_PARTICLE_TYPE::INVALID;
|
|
|
- if (!OxideClassify(a_pPartSTDData, listChemistriesToAnalysis, a_dMolarSumNoFe, nIncId))
|
|
|
+ if (!OxideClassify(listChemistriesToAnalysis, a_dMolarSumNoFe, nIncId))
|
|
|
{
|
|
|
// something wrong
|
|
|
LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::SulClassify: failed to call OxideClassify method."));
|
|
@@ -830,7 +848,7 @@ namespace OTSClassifyEngine
|
|
|
// confirm the oxide sulfide id
|
|
|
|
|
|
// get the STD item of the mapped oxide
|
|
|
- CSTDItemPtr pOxideSTDItem = a_pPartSTDData->GetSTDItemById(nIncId);
|
|
|
+ CSTDItemPtr pOxideSTDItem = pPartSTDData->GetSTDItemById(nIncId);
|
|
|
if (pOxideSTDItem)
|
|
|
{
|
|
|
// get mapped oxide name
|
|
@@ -934,24 +952,12 @@ namespace OTSClassifyEngine
|
|
|
}
|
|
|
|
|
|
// oxides classification
|
|
|
- BOOL COTSClassifyEng::OxideClassify(CInclutionSTDDataPtr a_pPartSTDData,
|
|
|
+ BOOL COTSClassifyEng::OxideClassify(
|
|
|
CElementChemistriesList& a_listElChemsIncNoFe,
|
|
|
double a_dMolarSumNoFe,
|
|
|
int& a_nIncId)
|
|
|
{
|
|
|
- // safety check
|
|
|
- ASSERT(a_pPartSTDData);
|
|
|
-
|
|
|
-
|
|
|
- // get all oxides STD items
|
|
|
- CSTDItemsList listOxideSTD;
|
|
|
- if (!GetClassifySTDItem(a_pPartSTDData, INC_CLASSIFY_TYPE::OXIDE, listOxideSTD))
|
|
|
- {
|
|
|
- // something wrong
|
|
|
- LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::OxideClassify: failed to call GetClassifySTDItem method."));
|
|
|
- return FALSE;
|
|
|
- }
|
|
|
-
|
|
|
+
|
|
|
// check if element chemistries list contain any oxygen
|
|
|
CElementChemistryPtr pOElChem = GetNamedElementChemistry(a_listElChemsIncNoFe, STR_OXIDE);
|
|
|
if (!pOElChem)
|
|
@@ -1119,24 +1125,12 @@ namespace OTSClassifyEngine
|
|
|
}
|
|
|
|
|
|
// nitrides classification
|
|
|
- BOOL COTSClassifyEng::NitrideClassify(CInclutionSTDDataPtr a_pPartSTDData,
|
|
|
+ BOOL COTSClassifyEng::NitrideClassify(
|
|
|
CElementChemistriesList& a_listElChemsIncNoFe,
|
|
|
double a_dMolarSumNoFe,
|
|
|
int& a_nIncId)
|
|
|
{
|
|
|
- // safety check
|
|
|
- ASSERT(a_pPartSTDData);
|
|
|
-
|
|
|
-
|
|
|
- // get all nitride STD items
|
|
|
- CSTDItemsList listNitrideSTD;
|
|
|
- if (!GetClassifySTDItem(a_pPartSTDData, INC_CLASSIFY_TYPE::NITR, listNitrideSTD))
|
|
|
- {
|
|
|
- // something wrong
|
|
|
- LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::NitrideClassify: failed to call GetClassifySTDItem method."));
|
|
|
- return FALSE;
|
|
|
- }
|
|
|
-
|
|
|
+
|
|
|
// check if element chemistries list contain any nitrogen
|
|
|
CElementChemistryPtr pNitrElChem = GetNamedElementChemistry(a_listElChemsIncNoFe, STR_NITR);
|
|
|
if (!pNitrElChem)
|
|
@@ -1272,7 +1266,7 @@ namespace OTSClassifyEngine
|
|
|
|
|
|
// check if the rest element chemistries map an oxide
|
|
|
int nIncId = (int)OTS_PARTICLE_TYPE::INVALID;
|
|
|
- if (!OxideClassify(a_pPartSTDData, a_listElChemsIncNoFe, a_dMolarSumNoFe, nIncId))
|
|
|
+ if (!OxideClassify( a_listElChemsIncNoFe, a_dMolarSumNoFe, nIncId))
|
|
|
{
|
|
|
// something wrong
|
|
|
LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::NitrideClassify: failed to call OxideClassify method."));
|
|
@@ -1287,7 +1281,7 @@ namespace OTSClassifyEngine
|
|
|
// confirm the oxide nitride id
|
|
|
|
|
|
// get the STD item of the mapped oxide
|
|
|
- CSTDItemPtr pOxideSTDItem = a_pPartSTDData->GetSTDItemById(nIncId);
|
|
|
+ CSTDItemPtr pOxideSTDItem = pPartSTDData->GetSTDItemById(nIncId);
|
|
|
if (pOxideSTDItem)
|
|
|
{
|
|
|
// get mapped oxide name
|
|
@@ -1391,23 +1385,12 @@ namespace OTSClassifyEngine
|
|
|
}
|
|
|
|
|
|
// nitrides classification
|
|
|
- BOOL COTSClassifyEng::CarbonClassify(CInclutionSTDDataPtr a_pPartSTDData,
|
|
|
+ BOOL COTSClassifyEng::CarbonClassify(
|
|
|
CElementChemistriesList& a_listElChemsIncNoFe,
|
|
|
double a_dMolarSumNoFe,
|
|
|
int& a_nIncId)
|
|
|
{
|
|
|
- // safety check
|
|
|
- ASSERT(a_pPartSTDData);
|
|
|
-
|
|
|
-
|
|
|
- // get all nitride STD items
|
|
|
- CSTDItemsList listCarbonSTD;
|
|
|
- if (!GetClassifySTDItem(a_pPartSTDData, INC_CLASSIFY_TYPE::CARBON, listCarbonSTD))
|
|
|
- {
|
|
|
- // something wrong
|
|
|
- LogErrorTrace(__FILE__, __LINE__, _T("CClassifyEng::NitrideClassify: failed to call GetClassifySTDItem method."));
|
|
|
- return FALSE;
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
// check if element chemistries list contain any nitrogen
|
|
|
CElementChemistryPtr pCarElChem = GetNamedElementChemistry(a_listElChemsIncNoFe, STR_CAR);
|
|
@@ -1547,41 +1530,31 @@ namespace OTSClassifyEngine
|
|
|
}
|
|
|
|
|
|
|
|
|
- // user STD items classification
|
|
|
- BOOL COTSClassifyEng::UserClassify(CInclutionSTDDataPtr a_pPartSTDData,
|
|
|
- CElementChemistriesList& a_listEltChemsInc,
|
|
|
- double dSum,
|
|
|
- int& a_nIncId)
|
|
|
- {
|
|
|
- // safety check
|
|
|
- ASSERT(a_pPartSTDData);
|
|
|
-
|
|
|
-
|
|
|
- // get user STD items
|
|
|
- CSTDItemsList listUserSTD;
|
|
|
- if (!GetClassifySTDItem(a_pPartSTDData, INC_CLASSIFY_TYPE::USER, listUserSTD))
|
|
|
- {
|
|
|
- // something wrong
|
|
|
- LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::OxideClassify: failed to call GetClassifySTDItem method."));
|
|
|
- return FALSE;
|
|
|
- }
|
|
|
-
|
|
|
- // try to identify the oxide
|
|
|
- for (auto pUserSTD : listUserSTD)
|
|
|
- {
|
|
|
- // matching STD?
|
|
|
- if (MatchingSTD(a_listEltChemsInc, pUserSTD, dSum))
|
|
|
- {
|
|
|
- // found matching STD
|
|
|
- a_nIncId = pUserSTD->GetSTDId();
|
|
|
- return TRUE;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // can't identify this inclusion
|
|
|
- a_nIncId = (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED;
|
|
|
- return TRUE;
|
|
|
- }
|
|
|
+ //// user STD items classification
|
|
|
+ //BOOL COTSClassifyEng::UserClassify(
|
|
|
+ // CElementChemistriesList& a_listEltChemsInc,
|
|
|
+ // double dSum,
|
|
|
+ // int& a_nIncId)
|
|
|
+ //{
|
|
|
+ //
|
|
|
+ //
|
|
|
+
|
|
|
+ // // try to identify the oxide
|
|
|
+ // for (auto pUserSTD : listUserSTD)
|
|
|
+ // {
|
|
|
+ // // matching STD?
|
|
|
+ // if (MatchingSTD(a_listEltChemsInc, pUserSTD, dSum))
|
|
|
+ // {
|
|
|
+ // // found matching STD
|
|
|
+ // a_nIncId = pUserSTD->GetSTDId();
|
|
|
+ // return TRUE;
|
|
|
+ // }
|
|
|
+ // }
|
|
|
+
|
|
|
+ // // can't identify this inclusion
|
|
|
+ // a_nIncId = (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED;
|
|
|
+ // return TRUE;
|
|
|
+ //}
|
|
|
|
|
|
// nominate element chemistries list
|
|
|
BOOL COTSClassifyEng::NomiNateElChemsList( CElementChemistriesList& a_listElChemsInc,
|
|
@@ -1740,15 +1713,7 @@ namespace OTSClassifyEngine
|
|
|
// get classify STD items
|
|
|
BOOL COTSClassifyEng::GetClassifySTDItem(CInclutionSTDDataPtr a_pPartSTDDataPtr, INC_CLASSIFY_TYPE a_nClassifyType, CSTDItemsList& a_listSTDItems)
|
|
|
{
|
|
|
- // safety check
|
|
|
- ASSERT(a_pPartSTDDataPtr);
|
|
|
- if (!a_pPartSTDDataPtr)
|
|
|
- {
|
|
|
- // something wrong
|
|
|
- LogErrorTrace(__FILE__, __LINE__, _T("COTSClassifyEng::GetClassifySTDItem: invalid CPartSTDDataPtr."));
|
|
|
- return FALSE;
|
|
|
- }
|
|
|
-
|
|
|
+
|
|
|
// cal STD item id value range
|
|
|
OTS_STD_ITEM_VALUE nSTDIdRangeMin = OTS_STD_ITEM_VALUE::INVALID;
|
|
|
OTS_STD_ITEM_VALUE nSTDIdRangeMax = OTS_STD_ITEM_VALUE::INVALID;
|