Import Geant4 11.0.0 source tree

This commit is contained in:
Gabriele Cosmo
2021-12-10 14:46:44 +01:00
committed by Ben Morgan
parent 6399a014b6
commit 80e2389dd8
3932 changed files with 202519 additions and 246221 deletions
+7 -3
View File
@@ -19,12 +19,16 @@ committal in the CVS repository !
* Reverse chronological order (last date on top), please *
----------------------------------------------------------
May 6, 2021 J.Apostolakis geom-bool-V10-07-02
October 12, 2021 G.Cosmo geom-bool-V10-07-03
- In G4BooleanSolid, use G4RecursiveMutex in place of G4Mutex in GetPolyhedron()
to avoid potential deadlocks in recursive Boolean operations.
Courtesy of S.Boogert (London Univ.).
May 6, 2021 J.Apostolakis geom-bool-V10-07-02
- Revised GetCubicVolume of UnionSolid and SubtractionSolid to use cubic volume
of constituent volume(s) and the intersection solid.
Test cases show the potential for improvement: factors of 40-3000.
Cases with small overlap will improve most. Not all cases will improve.
Cases with small overlap will improve most. Not all cases will improve.
Need to monitor cpu cost in most difficult cases:
- Union now involves 3 calculations (a, b, a n b) - likely 2x cost.
- Subtraction involves 2 calculations (a, a n b) - 1.5x cost.
@@ -42,7 +42,7 @@
namespace
{
G4Mutex polyhedronMutex = G4MUTEX_INITIALIZER;
G4RecursiveMutex polyhedronMutex = G4MUTEX_INITIALIZER;
}
//////////////////////////////////////////////////////////////////
@@ -346,7 +346,7 @@ G4Polyhedron* G4BooleanSolid::GetPolyhedron () const
fpPolyhedron->GetNumberOfRotationStepsAtTimeOfCreation() !=
fpPolyhedron->GetNumberOfRotationSteps())
{
G4AutoLock l(&polyhedronMutex);
G4RecursiveAutoLock l(&polyhedronMutex);
delete fpPolyhedron;
fpPolyhedron = CreatePolyhedron();
fRebuildPolyhedron = false;