|
@@ -110,7 +110,15 @@ namespace OTSGBCalculate
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- return *adjacentPart;
|
|
|
+ if ((*adjacentPart)->GetType() != OTS_PARTCLE_TYPE::INVALID)
|
|
|
+ {
|
|
|
+ return *adjacentPart;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return nullptr;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
#pragma endregion
|
|
@@ -271,7 +279,10 @@ namespace OTSGBCalculate
|
|
|
mapAllParticles.clear();
|
|
|
for (auto pParticle : m_listParticles)
|
|
|
{ // compute length width ratio
|
|
|
-
|
|
|
+ if (pParticle->GetType() == OTS_PARTICLE_TYPE::INVALID)//here we take all the particles except Invalid.
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
auto w = pParticle->GetDMin();
|
|
|
|
|
|
if (w == 0)
|
|
@@ -341,10 +352,9 @@ namespace OTSGBCalculate
|
|
|
if (dFeretDiameter >= 13)
|
|
|
{
|
|
|
// DS
|
|
|
- if (pParticle->GetType() != OTS_PARTICLE_TYPE::INVALID)//here we take all the particles except Invalid
|
|
|
- {
|
|
|
+
|
|
|
listDSParticles.push_back(pParticle);
|
|
|
- }
|
|
|
+
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -374,12 +384,11 @@ namespace OTSGBCalculate
|
|
|
else
|
|
|
{
|
|
|
// B or D
|
|
|
- if (pParticle->GetType() != OTS_PARTICLE_TYPE::INVALID)//here we take all the particles
|
|
|
- {
|
|
|
+
|
|
|
GBParticle gbP = GBParticle(pParticle, GB_LEVEL_TYPE::INVALID, GB_WIDTH_TYPE::INVALID);
|
|
|
//不能确定是B或D,先设为INVALID
|
|
|
listBAndDParticles.push_back(gbP);
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
|
|
@@ -519,7 +528,10 @@ namespace OTSGBCalculate
|
|
|
// get all the all particles for each level
|
|
|
for (auto pParticle : m_listParticles)
|
|
|
{
|
|
|
-
|
|
|
+ if (pParticle->GetType() == OTS_PARTICLE_TYPE::INVALID)//here we take all the particles except Invalid.
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
//check the denominator is zero or not
|
|
|
auto w = pParticle->GetDMin();
|
|
|
|
|
@@ -542,55 +554,57 @@ namespace OTSGBCalculate
|
|
|
if (dFeretDiameter >= 13)
|
|
|
{
|
|
|
// DS
|
|
|
- if (pParticle->GetType() != OTS_PARTICLE_TYPE::INVALID)//here we take all the particles except Invalid.
|
|
|
- {
|
|
|
+
|
|
|
listDSParticles.push_back(pParticle);
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
// D or Dsulfide
|
|
|
auto p = FindAdjacentParticle(pParticle, m_listParticles);
|
|
|
+
|
|
|
if (p == nullptr)//pParticle is a isolated particle.
|
|
|
{
|
|
|
- GB_CHEMICAL_TYPE ChemicalType = pParticle->GetChemicalType();
|
|
|
- if (ChemicalType == GB_CHEMICAL_TYPE::CHE_S)
|
|
|
- {
|
|
|
- auto wt = this->CaculateLevelWidth(pParticle, GB_LEVEL_TYPE::DSulfide_TYPE);
|
|
|
- switch (wt)
|
|
|
+
|
|
|
+
|
|
|
+ GB_CHEMICAL_TYPE ChemicalType = pParticle->GetChemicalType();
|
|
|
+ if (ChemicalType == GB_CHEMICAL_TYPE::CHE_S)
|
|
|
{
|
|
|
- case GB_WIDTH_TYPE::THIN:
|
|
|
- listDSulfideThinParticles.push_back(pParticle);
|
|
|
- break;
|
|
|
- case GB_WIDTH_TYPE::WIDE:
|
|
|
- listDSulfideWideParticles.push_back(pParticle);
|
|
|
- break;
|
|
|
- case GB_WIDTH_TYPE::SUPER:
|
|
|
- listDSulfideSuperParticles.push_back(pParticle);
|
|
|
- break;
|
|
|
+ auto wt = this->CaculateLevelWidth(pParticle, GB_LEVEL_TYPE::DSulfide_TYPE);
|
|
|
+ switch (wt)
|
|
|
+ {
|
|
|
+ case GB_WIDTH_TYPE::THIN:
|
|
|
+ listDSulfideThinParticles.push_back(pParticle);
|
|
|
+ break;
|
|
|
+ case GB_WIDTH_TYPE::WIDE:
|
|
|
+ listDSulfideWideParticles.push_back(pParticle);
|
|
|
+ break;
|
|
|
+ case GB_WIDTH_TYPE::SUPER:
|
|
|
+ listDSulfideSuperParticles.push_back(pParticle);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ mapAllParticles[pParticle] = GBParticle(pParticle, GB_LEVEL_TYPE::DSulfide_TYPE, wt);
|
|
|
}
|
|
|
- mapAllParticles[pParticle] = GBParticle(pParticle, GB_LEVEL_TYPE::DSulfide_TYPE, wt);
|
|
|
-
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- auto wt = this->CaculateLevelWidth(pParticle, GB_LEVEL_TYPE::D_TYPE);
|
|
|
- switch (wt)
|
|
|
+ else
|
|
|
{
|
|
|
- case GB_WIDTH_TYPE::THIN:
|
|
|
- listDThinParticles.push_back(pParticle);
|
|
|
- break;
|
|
|
- case GB_WIDTH_TYPE::WIDE:
|
|
|
- listDWideParticles.push_back(pParticle);
|
|
|
- break;
|
|
|
- case GB_WIDTH_TYPE::SUPER:
|
|
|
- listDSuperParticles.push_back(pParticle);
|
|
|
- break;
|
|
|
- }
|
|
|
- mapAllParticles[pParticle] = GBParticle(pParticle, GB_LEVEL_TYPE::D_TYPE, wt);
|
|
|
+ auto wt = this->CaculateLevelWidth(pParticle, GB_LEVEL_TYPE::D_TYPE);
|
|
|
+ switch (wt)
|
|
|
+ {
|
|
|
+ case GB_WIDTH_TYPE::THIN:
|
|
|
+ listDThinParticles.push_back(pParticle);
|
|
|
+ break;
|
|
|
+ case GB_WIDTH_TYPE::WIDE:
|
|
|
+ listDWideParticles.push_back(pParticle);
|
|
|
+ break;
|
|
|
+ case GB_WIDTH_TYPE::SUPER:
|
|
|
+ listDSuperParticles.push_back(pParticle);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ mapAllParticles[pParticle] = GBParticle(pParticle, GB_LEVEL_TYPE::D_TYPE, wt);
|
|
|
|
|
|
- }
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
else
|
|
|
{
|
|
@@ -688,7 +702,10 @@ namespace OTSGBCalculate
|
|
|
mapAllParticles.clear();
|
|
|
for (auto pParticle : m_listParticles)
|
|
|
{ // compute length width ratio
|
|
|
-
|
|
|
+ if (pParticle->GetType() == OTS_PARTICLE_TYPE::INVALID)//here we take all the particles except Invalid.
|
|
|
+ {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
auto w = pParticle->GetDMin();
|
|
|
|
|
|
if (w == 0)
|
|
@@ -759,21 +776,19 @@ namespace OTSGBCalculate
|
|
|
if (dFeretDiameter >= 13)
|
|
|
{
|
|
|
// DS
|
|
|
- if (pParticle->GetType() != OTS_PARTICLE_TYPE::INVALID)//here we take all the particles
|
|
|
- {
|
|
|
+
|
|
|
listDSParticles.push_back(pParticle);
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
// B or D
|
|
|
- if (pParticle->GetChemicalType() != GB_CHEMICAL_TYPE::INVALID)//here we take all the particles
|
|
|
- {
|
|
|
+
|
|
|
GBParticle gbP = GBParticle(pParticle, GB_LEVEL_TYPE::INVALID, GB_WIDTH_TYPE::INVALID);
|
|
|
//不能确定是B或D,先设为INVALID
|
|
|
listBAndDParticles.push_back(gbP);
|
|
|
- }
|
|
|
+
|
|
|
|
|
|
}
|
|
|
}
|