Browse Source

add sic and feo classification function.

gsp 3 years ago
parent
commit
9a55030935

+ 15 - 1
OTSCPP/OTSClassifyEngine/InclutionClassifyEngine.cpp

@@ -35,7 +35,21 @@ bool InclutionClassifyEngine::Classify(COTSParticlePtr particle, int SteelTech,
 	{
 		particle->SetType(OTS_PARTICLE_TYPE::NOT_IDENTIFIED);
 		particle->TypeName("Not Identified");
-	}	
+	}
+	else if (Id == (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED_SIC)
+	{
+		particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED);
+		particle->TypeName("SiC");
+		particle->SetClassifyId(7);
+		particle->TypeColor("7B68EE");
+	}
+	else if (Id == (int)OTS_PARTICLE_TYPE::NOT_IDENTIFIED_FEO)
+	{
+		particle->SetType(OTS_PARTICLE_TYPE::IDENTIFIED);
+		particle->TypeName("FeO");
+		particle->SetClassifyId(8);
+		particle->TypeColor("FF6347");
+	}
 	else 
 	{
 		if (stditm != nullptr)

+ 28 - 1
OTSCPP/OTSClassifyEngine/InclutionEngine/OTSClassifyEng.cpp

@@ -184,6 +184,34 @@ namespace OTSClassifyEngine
 			
 		}
 
+		// not a inc if this is a SiC 
+		//=========================================
+		// any carbon?
+		if (dCarbonMolar > MIN_DOUBLE_VALUE)
+		{
+			// calculate molar % of C + Si
+			double dMolarC_Si = Cal100NorValue(dCarbonMolar + dSiMolar, a_dMolarSumNoFe + dCarbonMolar);
+			if (dMolarC_Si > SIC_MOLAR_CUTOFF)
+			{
+				// this is a SiC, not a inclusion, return FALSE
+				a_nIncId = (int)OTS_PARTCLE_TYPE::NOT_IDENTIFIED_SIC;
+				return FALSE;
+			}
+		}
+		//=========================================
+
+		//FeO
+		if (dOMolar > MIN_DOUBLE_VALUE)
+		{  
+			// calculate molar % of Fe + O
+			double dMolarFe_O = Cal100NorValue(dOMolar + dFeMolar, a_dMolarSum + dCarbonMolar);
+			if (dMolarFe_O > FEO_MOLAR_CUTOFF)
+			{
+				// this is a FeO, not a inclusion, return FALSE
+				a_nIncId = (int)OTS_PARTCLE_TYPE::NOT_IDENTIFIED_FEO;
+				return FALSE;
+			}
+		}
 
 		// both key molar percentage sum and sub molar percentage sum have to be over certain values
 		double dSumKeyElementsMolar = Cal100NorValue(dSumKeyElements, a_dMolarSumNoFe);
@@ -349,7 +377,6 @@ namespace OTSClassifyEngine
 
 		// mapping Mn first
 		BOOL bMnMapped = FALSE;
-
 		{
 			CElementChemistryPtr pElChemMn = GetNamedElementChemistry(a_listElChemsIncNoFe, INC_SUL_SUB_ELEMENT_NAMES[0]);
 			double dMappingRatio = INC_SULFILSES_MAPPING_RADIO[0];

+ 1 - 1
OTSCPP/OTSData/otsdataconst.h

@@ -422,7 +422,7 @@ namespace OTSDATA
 		NOT_IDENTIFIED_SIC = 7,
 		NOT_IDENTIFIED_FEO = 8,
 		NOT_IDENTIFIED = 9,
-		IDENTIFIED = 10,//当为可识别类型时,可以被进一步识别为用户类型(1000以上),系统预定义类型(10000以上),所以最终颗粒类型不会为8,但可能为7
+		IDENTIFIED = 10,//当为可识别类型时(10),可以被进一步识别为用户类型(1000以上),系统预定义类型(10000以上),所以最终颗粒类型不会为10,但可能为7,8,9
 		MAX =10,
 
 		USER_DEFINED_MIN = 1000,