mirror of
https://git.salome-platform.org/gitpub/modules/smesh.git
synced 2025-04-12 12:47:28 +05:00
Compute Progress bar
+ double GetComputeProgress() const; + SMESH_Hypothesis * GetHypothesis(const int aHypID) const;
This commit is contained in:
parent
1481fb61da
commit
ffa2f0be82
@ -592,19 +592,9 @@ SMESH_Hypothesis::Hypothesis_Status
|
|||||||
if ( !subMesh || !subMesh->GetId())
|
if ( !subMesh || !subMesh->GetId())
|
||||||
return SMESH_Hypothesis::HYP_BAD_SUBSHAPE;
|
return SMESH_Hypothesis::HYP_BAD_SUBSHAPE;
|
||||||
|
|
||||||
StudyContextStruct *sc = _gen->GetStudyContext(_studyId);
|
SMESH_Hypothesis *anHyp = GetHypothesis( anHypId );
|
||||||
if (sc->mapHypothesis.find(anHypId) == sc->mapHypothesis.end())
|
if ( !anHyp )
|
||||||
{
|
|
||||||
if(MYDEBUG) MESSAGE("Hypothesis ID does not give an hypothesis");
|
|
||||||
if(MYDEBUG) {
|
|
||||||
SCRUTE(_studyId);
|
|
||||||
SCRUTE(anHypId);
|
|
||||||
}
|
|
||||||
throw SALOME_Exception(LOCALIZED("hypothesis does not exist"));
|
throw SALOME_Exception(LOCALIZED("hypothesis does not exist"));
|
||||||
}
|
|
||||||
|
|
||||||
SMESH_Hypothesis *anHyp = sc->mapHypothesis[anHypId];
|
|
||||||
MESSAGE( "SMESH_Mesh::AddHypothesis " << anHyp->GetName() );
|
|
||||||
|
|
||||||
bool isGlobalHyp = IsMainShape( aSubShape );
|
bool isGlobalHyp = IsMainShape( aSubShape );
|
||||||
|
|
||||||
@ -876,6 +866,22 @@ int SMESH_Mesh::GetHypotheses(const TopoDS_Shape & aSubShape,
|
|||||||
return nbHyps;
|
return nbHyps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*!
|
||||||
|
* \brief Return a hypothesis by its ID
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
SMESH_Hypothesis * SMESH_Mesh::GetHypothesis(const int anHypId) const
|
||||||
|
{
|
||||||
|
StudyContextStruct *sc = _gen->GetStudyContext(_studyId);
|
||||||
|
if (sc->mapHypothesis.find(anHypId) == sc->mapHypothesis.end())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
SMESH_Hypothesis *anHyp = sc->mapHypothesis[anHypId];
|
||||||
|
return anHyp;
|
||||||
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
/*!
|
/*!
|
||||||
*
|
*
|
||||||
@ -1301,6 +1307,12 @@ void SMESH_Mesh::ExportMED(const char * file,
|
|||||||
myWriter.Perform();
|
myWriter.Perform();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*!
|
||||||
|
* \brief Export the mesh to a SAUV file
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
void SMESH_Mesh::ExportSAUV(const char *file,
|
void SMESH_Mesh::ExportSAUV(const char *file,
|
||||||
const char* theMeshName,
|
const char* theMeshName,
|
||||||
bool theAutoGroups)
|
bool theAutoGroups)
|
||||||
@ -1445,6 +1457,54 @@ void SMESH_Mesh::ExportGMF(const char * file,
|
|||||||
myWriter.Perform();
|
myWriter.Perform();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//================================================================================
|
||||||
|
/*!
|
||||||
|
* \brief Return a ratio of "compute cost" of computed sub-meshes to the whole
|
||||||
|
* "compute cost".
|
||||||
|
*/
|
||||||
|
//================================================================================
|
||||||
|
|
||||||
|
double SMESH_Mesh::GetComputeProgress() const
|
||||||
|
{
|
||||||
|
double totalCost = 1e-100, computedCost = 0;
|
||||||
|
const SMESH_subMesh* curSM = _gen->GetCurrentSubMesh();
|
||||||
|
|
||||||
|
// get cost of already treated sub-meshes
|
||||||
|
if ( SMESH_subMesh* mainSM = GetSubMeshContaining( 1 ))
|
||||||
|
{
|
||||||
|
SMESH_subMeshIteratorPtr smIt = mainSM->getDependsOnIterator(/*includeSelf=*/true);
|
||||||
|
while ( smIt->more() )
|
||||||
|
{
|
||||||
|
SMESH_subMesh* sm = smIt->next();
|
||||||
|
const int smCost = sm->GetComputeCost();
|
||||||
|
totalCost += smCost;
|
||||||
|
if ( sm != curSM &&
|
||||||
|
( !sm->IsEmpty() ||
|
||||||
|
sm->GetComputeState() == SMESH_subMesh::FAILED_TO_COMPUTE ))
|
||||||
|
{
|
||||||
|
computedCost += smCost;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// get progress of a current algo
|
||||||
|
if ( curSM )
|
||||||
|
if ( SMESH_Algo* algo = curSM->GetAlgo() )
|
||||||
|
{
|
||||||
|
double rate = algo->GetProgress();
|
||||||
|
if ( 0. < rate && rate < 1.001 )
|
||||||
|
{
|
||||||
|
//cout << " rate: " << rate << " cost " << algo->GetComputeCost() << endl;
|
||||||
|
computedCost += rate * algo->GetComputeCost();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
computedCost += algo->GetProgressByTic() * algo->GetComputeCost();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//cout << "Total: " << totalCost << " progress: " << computedCost / totalCost << endl;
|
||||||
|
return computedCost / totalCost;
|
||||||
|
}
|
||||||
|
|
||||||
//================================================================================
|
//================================================================================
|
||||||
/*!
|
/*!
|
||||||
* \brief Return number of nodes in the mesh
|
* \brief Return number of nodes in the mesh
|
||||||
|
@ -148,6 +148,8 @@ public:
|
|||||||
const bool andAncestors,
|
const bool andAncestors,
|
||||||
std::list< TopoDS_Shape > * assignedTo=0) const;
|
std::list< TopoDS_Shape > * assignedTo=0) const;
|
||||||
|
|
||||||
|
SMESH_Hypothesis * GetHypothesis(const int aHypID) const;
|
||||||
|
|
||||||
const std::list<SMESHDS_Command*> & GetLog() throw(SALOME_Exception);
|
const std::list<SMESHDS_Command*> & GetLog() throw(SALOME_Exception);
|
||||||
|
|
||||||
void ClearLog() throw(SALOME_Exception);
|
void ClearLog() throw(SALOME_Exception);
|
||||||
@ -252,6 +254,8 @@ public:
|
|||||||
void ExportSAUV(const char *file,
|
void ExportSAUV(const char *file,
|
||||||
const char* theMeshName = NULL,
|
const char* theMeshName = NULL,
|
||||||
bool theAutoGroups = true) throw(SALOME_Exception);
|
bool theAutoGroups = true) throw(SALOME_Exception);
|
||||||
|
|
||||||
|
double GetComputeProgress() const;
|
||||||
|
|
||||||
int NbNodes() const throw(SALOME_Exception);
|
int NbNodes() const throw(SALOME_Exception);
|
||||||
int Nb0DElements() const throw(SALOME_Exception);
|
int Nb0DElements() const throw(SALOME_Exception);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user