yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #06535
[Branch ~yade-dev/yade/trunk] Rev 2611: 1. remove devirt-functors (unused)
------------------------------------------------------------
revno: 2611
committer: Václav Šmilauer <eu@xxxxxxxx>
branch nick: yade
timestamp: Mon 2010-12-13 13:11:43 +0100
message:
1. remove devirt-functors (unused)
2. rename SubdomainOptimizer to SubdomainBalancer
3. remove Dem3DofGeom::scaleDisplacementT (unused)
4. remove Law2_ScGeom_CpmPhys_Cpm (malfunctioning, unused)
5. remove SConscript-mono (unused)
removed:
SConscript-mono
renamed:
pkg/common/SubdomainOptimizer.cpp => pkg/common/SubdomainBalancer.cpp
pkg/common/SubdomainOptimizer.hpp => pkg/common/SubdomainBalancer.hpp
scripts/test/subdomain-optimizer.py => scripts/test/subdomain-balancer.py
modified:
SConstruct
examples/packs/packs.py
pkg/common/Cylinder.cpp
pkg/common/Cylinder.hpp
pkg/common/Dispatching.cpp
pkg/common/Dispatching.hpp
pkg/common/InteractionLoop.cpp
pkg/dem/ConcretePM.cpp
pkg/dem/ConcretePM.hpp
pkg/dem/Dem3DofGeom_FacetSphere.cpp
pkg/dem/Dem3DofGeom_FacetSphere.hpp
pkg/dem/Dem3DofGeom_SphereSphere.cpp
pkg/dem/Dem3DofGeom_SphereSphere.hpp
pkg/dem/Dem3DofGeom_WallSphere.cpp
pkg/dem/Dem3DofGeom_WallSphere.hpp
pkg/dem/DemXDofGeom.hpp
pkg/dem/ElasticContactLaw.cpp
pkg/dem/L3Geom.hpp
py/_eudoxos.cpp
py/system.py
scripts/test/clumpPack.py
scripts/test/law-test.py
pkg/common/SubdomainBalancer.cpp
pkg/common/SubdomainBalancer.hpp
scripts/test/subdomain-balancer.py
--
lp:yade
https://code.launchpad.net/~yade-dev/yade/trunk
Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-dev/yade/trunk/+edit-subscription
=== removed file 'SConscript-mono'
--- SConscript-mono 2010-10-14 08:18:42 +0000
+++ SConscript-mono 1970-01-01 00:00:00 +0000
@@ -1,101 +0,0 @@
-# vim: syntax=python
-Import('*')
-
-
-srcs=[] # list of single source files that will be compiled in chunks based on chunkSize
-extraSrcs=[] # list of _chunks_ (list/tuple) of sources that will be compiled separately
-pyMods=[] # list of symbolic links that will point to the resulting library; their sources must be specified in srcs/extraSrcs
-libs=[]
-
-### core
-
-pyMain='$PREFIX/bin/yade$SUFFIX'
-env['PLUGINDIR']='$PREFIX/lib/yade$SUFFIX'
-main=env.ScanReplace('core/main/main.py.in')
-batch=env.ScanReplace('core/main/yade-batch.in')
-env.AlwaysBuild(main)
-env.AlwaysBuild(batch)
-env.InstallAs(pyMain,main)
-env.InstallAs(pyMain+'-batch',batch)
-env.AddPostAction(pyMain,Chmod(pyMain,0755))
-env.AddPostAction(pyMain+'-batch',Chmod(pyMain+'-batch',0755))
-
-extraSrcs+=[['core/'+f for f in ['Body.cpp','BodyContainer.cpp','Bound.cpp','Cell.cpp','PartialEngine.cpp','Engine.cpp','FileGenerator.cpp','FrontEnd.cpp','Interaction.cpp','InteractionContainer.cpp','GroupRelationData.cpp','Material.cpp','Scene.cpp','Dispatcher.cpp','Omega.cpp','Shape.cpp','SimulationFlow.cpp','State.cpp','ThreadRunner.cpp','ThreadWorker.cpp','TimeStepper.cpp','corePlugins.cpp','main/pyboot.cpp']]]
-pyMods+=['boot']
-
-# libs
-srcs+=['lib/'+f for f in ['base/Math.cpp','factory/ClassFactory.cpp','factory/DynLibManager.cpp','multimethods/Indexable.cpp','serialization/Serializable.cpp','pyutil/gil.cpp']]
-if 'opengl' in env['features']:
- srcs+=['lib/opengl/GLUtils.cpp']
- libs+=['GL','GLU','glut']
-if 'cgal' in env['features']:
- extraSrcs+=[['lib/'+f for f in Split('triangulation/KinematicLocalisationAnalyser.cpp triangulation/Operations.cpp triangulation/RegularTriangulation.cpp triangulation/Timer.cpp triangulation/basicVTKwritter.cpp triangulation/FlowBoundingSphere.cpp triangulation/Deformation.cpp triangulation/Empilement.cpp triangulation/stdafx.cpp triangulation/Tenseur3.cpp triangulation/Tesselation.cpp triangulation/TriaxialState.cpp')]]
-
-# py
-if 'gts' in env['features']:
- extraSrcs+=['py/'+f for f in ('3rd-party/pygts-0.3.1/cleanup.c','3rd-party/pygts-0.3.1/edge.c','3rd-party/pygts-0.3.1/face.c','3rd-party/pygts-0.3.1/object.c','3rd-party/pygts-0.3.1/point.c','3rd-party/pygts-0.3.1/pygts.c','3rd-party/pygts-0.3.1/segment.c','3rd-party/pygts-0.3.1/surface.c','3rd-party/pygts-0.3.1/triangle.c','3rd-party/pygts-0.3.1/vertex.c')]
- pyMods+=['../gts/_gts']
- env.Install('$PLUGINDIR/py/gts',[env.File('py/3rd-party/pygts-0.3.1/__init__.py'),env.File('py/3rd-party/pygts-0.3.1/pygts.py')])
-
-pyMods+=['../miniEigen','WeightedAverage2d','log','_utils','_packPredicates','_packSpheres','_packObb','wrapper','_customConverters','_eudoxos','_packSpherePadder']
-srcs+=['py/mathWrap/miniEigen.cpp','py/WeightedAverage2d.cpp','py/_eudoxos.cpp','py/log.cpp','py/_utils.cpp','py/pack/_packPredicates.cpp','py/pack/_packSpheres.cpp','py/pack/_packObb.cpp','py/wrapper/yadeWrapper.cpp','py/wrapper/customConverters.cpp']
-extraSrcs+=[ ['py/pack/_packSpherePadder.cpp','py/pack/SpherePadder/SpherePadder.cpp','py/pack/SpherePadder/TetraMesh.cpp','py/pack/SpherePadder/CellPartition.cpp']+(['py/pack/SpherePadder/SpherePackingTriangulation.cpp'] if 'cgal' in env['features'] else []) ]
-
-env.Install('$PLUGINDIR/py/yade',[
- env.AlwaysBuild(env.ScanReplace('py/__init__.py.in')),
- env.AlwaysBuild(env.ScanReplace('py/config.py.in'))
- ]
- +[env.File('py/'+f) for f in ['utils.py','ymport.py','export.py','eudoxos.py','plot.py','params.py','linterpolation.py','timing.py','pack/pack.py','remote.py','system.py','export.py','post2d.py','runtime.py','manpage.py','_extraDocs.py',]]
-)
-env.Install('$PLUGINDIR/py/yade/tests',[env.File('__init__.py','py/tests'),env.File('wrapper.py','py/tests'),env.File('omega.py','py/tests')
-])
-
-env.Install('$PLUGINDIR/py',[
- env.File('mtTkinter.py','py/3rd-party/mtTkinter-0.3'),
-])
-
-# gui
-if 'qt4' in env['features']:
- env.Install('$PLUGINDIR/py/yade/qt',[env.File('gui/'+f) for f in ['qt4/img_rc.py','qt4/ui_controller.py','qt4/SerializableEditor.py','qt4/Inspector.py','qt4/__init__.py',]])
- env.Command('gui/qt4/img_rc.py','gui/qt4/img.qrc','pyrcc4 -o $buildDir/gui/qt4/img_rc.py gui/qt4/img.qrc')
- env.Command('gui/qt4/ui_controller.py','gui/qt4/controller.ui','pyuic4 -o $buildDir/gui/qt4/ui_controller.py gui/qt4/controller.ui')
- srcs+=['gui/qt4/GLViewer.cpp','gui/qt4/_GLViewer.cpp','gui/qt4/OpenGLManager.cpp']
- pyMods+=['qt/_GLViewer']
- libs+=[env['QGLVIEWER_LIB']]
-
-# pkg
-pluginsSrcs=[p.src for p in env['buildPlugs'].values()]
-srcs+=pluginsSrcs
-
-# building itself
-env['LIBS']=env['LIBS']+libs
-import os.path
-
-def makeChunk(chunk,srcs,baseDir=None):
- if not baseDir: baseDir=env['buildDir']
- chunk2=baseDir+'/'+chunk
- f=open(chunk2,'w')
- for s in srcs: f.write('#include<%s>\n'%os.path.abspath(env['topLevelDir']+'/'+s))
- return chunk2
-
-
-extraChunks=[(ff if isinstance(ff,str) else makeChunk('chunk%02d.%s'%(i,ff[0].split('.')[-1]),ff)) for i,ff in enumerate(extraSrcs)]
-#import pprint; pprint.pprint(extraSrcs)
-chunkSize=env['chunkSize']
-if chunkSize>1:
- srcsChunks=[srcs[chunkSize*i:chunkSize*(i+1)] for i in range(0,1+len(srcs)/chunkSize)]
- env.Install('$PLUGINDIR',env.SharedLibrary('yade',[makeChunk('yade%02d.cpp'%i,chunkSrcs) for i,chunkSrcs in enumerate(srcsChunks)]+extraChunks))
-elif chunkSize==1:
- env.Install('$PLUGINDIR',env.SharedLibrary('yade',srcs+extraChunks))
-else: # chunkSize<=0
- env.Install('$PLUGINDIR',env.SharedLibrary('yade',[makeChunk('yade.cpp',srcs)]+extraChunks))
-
-yadeSo=env.subst('$PLUGINDIR/libyade.so')
-import os, os.path
-for m in pyMods:
- mm=env.subst('$PLUGINDIR/py/yade/'+m+'.so')
- d=os.path.dirname(mm);
- if not os.path.exists(d): os.makedirs(d)
- relpath=os.path.relpath(yadeSo,d)
- env.Command(mm,yadeSo,'ln -s -f "%s" "%s"'%(relpath,mm))
-
=== modified file 'SConstruct'
--- SConstruct 2010-11-30 15:41:55 +0000
+++ SConstruct 2010-12-13 12:11:43 +0000
@@ -92,7 +92,7 @@
BoolVariable('gprof','Enable profiling information for gprof',0),
('optimize','Turn on optimizations (-1, 0 or 1); negative value sets optimization based on debugging: not optimize with debugging and vice versa.',-1,None,int),
EnumVariable('PGO','Whether to "gen"erate or "use" Profile-Guided Optimization','',['','gen','use'],{'no':'','0':'','false':''},1),
- ListVariable('features','Optional features that are turned on','log4cxx,opengl,gts,openmp,vtk,qt4',names=['opengl','log4cxx','cgal','openmp','gts','vtk','gl2ps','devirt-functors','qt4','never_use_this_one','subdomains']),
+ ListVariable('features','Optional features that are turned on','log4cxx,opengl,gts,openmp,vtk,qt4',names=['opengl','log4cxx','cgal','openmp','gts','vtk','gl2ps','qt4','never_use_this_one','subdomains']),
('jobs','Number of jobs to run at the same time (same as -j, but saved)',2,None,int),
#('extraModules', 'Extra directories with their own SConscript files (must be in-tree) (whitespace separated)',None,None,Split),
('buildPrefix','Where to create build-[version][variant] directory for intermediary files','..'),
=== modified file 'examples/packs/packs.py'
--- examples/packs/packs.py 2010-12-01 11:09:53 +0000
+++ examples/packs/packs.py 2010-12-13 12:11:43 +0000
@@ -91,10 +91,10 @@
qt.View()
except ImportError: pass
-log.setLevel('SubdomainOptimizer',log.TRACE)
+log.setLevel('SubdomainBalancer',log.TRACE)
O.engines=[
- SubdomainOptimizer(colorize=True,initRun=True,iterPeriod=100),
+ SubdomainBalancer(colorize=True,initRun=True,iterPeriod=100),
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Facet_Aabb(),Bo1_Wall_Aabb()],label='collider'),
InteractionLoop(
=== modified file 'pkg/common/Cylinder.cpp'
--- pkg/common/Cylinder.cpp 2010-12-10 20:20:16 +0000
+++ pkg/common/Cylinder.cpp 2010-12-13 12:11:43 +0000
@@ -28,18 +28,11 @@
//!Sphere-cylinder or cylinder-cylinder not implemented yet, see Ig2_ChainedCylinder_ChainedCylinder_ScGeom6D and test/chained-cylinder-spring.py
-#ifdef YADE_DEVIRT_FUNCTORS
-bool Ig2_Sphere_ChainedCylinder_CylScGeom::go(const shared_ptr<Shape>& cm1, const shared_ptr<Shape>& cm2, const State& state1, const State& state2, const Vector3r& shift2, const bool& force, const shared_ptr<Interaction>& c){ throw runtime_error("Do not call Ig2_Sphere_ChainedCylinder_CylScGeom::go, use getStaticFunctorPtr and call that function instead."); }
-bool Ig2_Sphere_ChainedCylinder_CylScGeom::goStatic(IGeomFunctor* _self, const shared_ptr<Shape>& cm1, const shared_ptr<Shape>& cm2, const State& state1, const State& state2, const Vector3r& shift2, const bool& force, const shared_ptr<Interaction>& c){
- const Ig2_Sphere_ChainedCylinder_CylScGeom* self=static_cast<Ig2_Sphere_ChainedCylinder_CylScGeom*>(_self);
- const Real& interactionDetectionFactor=self->interactionDetectionFactor;
-#else
bool Ig2_Sphere_ChainedCylinder_CylScGeom::go( const shared_ptr<Shape>& cm1,
const shared_ptr<Shape>& cm2,
const State& state1, const State& state2, const Vector3r& shift2, const bool& force,
const shared_ptr<Interaction>& c)
{
-#endif
// cerr<<"Ig2_Sphere_ChainedCylinder_CylScGeom::go"<<endl;
const State* sphereSt=YADE_CAST<const State*>(&state1);
const ChainedState* cylinderSt=YADE_CAST<const ChainedState*>(&state2);
@@ -141,18 +134,11 @@
}
-#ifdef YADE_DEVIRT_FUNCTORS
-bool Ig2_ChainedCylinder_ChainedCylinder_ScGeom6D::go(const shared_ptr<Shape>& cm1, const shared_ptr<Shape>& cm2, const State& state1, const State& state2, const Vector3r& shift2, const bool& force, const shared_ptr<Interaction>& c){ throw runtime_error("Do not call Ig2_Sphere_ChainedCylinder_CylScGeom::go, use getStaticFunctorPtr and call that function instead."); }
-bool Ig2_ChainedCylinder_ChainedCylinder_ScGeom6D::goStatic(IGeomFunctor* _self, const shared_ptr<Shape>& cm1, const shared_ptr<Shape>& cm2, const State& state1, const State& state2, const Vector3r& shift2, const bool& force, const shared_ptr<Interaction>& c){
- const Ig2_ChainedCylinder_ChainedCylinder_ScGeom6D* self=static_cast<Ig2_ChainedCylinder_ChainedCylinder_ScGeom6D*>(_self);
- const Real& interactionDetectionFactor=self->interactionDetectionFactor;
-#else
bool Ig2_ChainedCylinder_ChainedCylinder_ScGeom6D::go( const shared_ptr<Shape>& cm1,
const shared_ptr<Shape>& cm2,
const State& state1, const State& state2, const Vector3r& shift2, const bool& force,
const shared_ptr<Interaction>& c)
{
-#endif
const ChainedState *pChain1, *pChain2;
pChain1=YADE_CAST<const ChainedState*>(&state1);
pChain2=YADE_CAST<const ChainedState*>(&state2);
=== modified file 'pkg/common/Cylinder.hpp'
--- pkg/common/Cylinder.hpp 2010-12-06 19:24:20 +0000
+++ pkg/common/Cylinder.hpp 2010-12-13 12:11:43 +0000
@@ -113,10 +113,6 @@
// virtual ~Ig2_Sphere_ChainedCylinder_CylScGeom ();
virtual bool go(const shared_ptr<Shape>& cm1, const shared_ptr<Shape>& cm2, const State& state1, const State& state2, const Vector3r& shift2, const bool& force, const shared_ptr<Interaction>& c);
virtual bool goReverse( const shared_ptr<Shape>& cm1, const shared_ptr<Shape>& cm2, const State& state1, const State& state2, const Vector3r& shift2, const bool& force, const shared_ptr<Interaction>& c);
- #ifdef YADE_DEVIRT_FUNCTORS
- void* getStaticFuncPtr(){ return (void*)&Ig2_Sphere_ChainedCylinder_CylScGeom::goStatic; }
- static bool goStatic(IGeomFunctor* self, const shared_ptr<Shape>& cm1, const shared_ptr<Shape>& cm2, const State& state1, const State& se32, const Vector3r& shift2, const bool& force, const shared_ptr<Interaction>& c);
- #endif
YADE_CLASS_BASE_DOC_ATTRS(Ig2_Sphere_ChainedCylinder_CylScGeom,IGeomFunctor,"Create/update a :yref:`ScGeom` instance representing intersection of two :yref:`Spheres<Sphere>`.",
((Real,interactionDetectionFactor,1,,"Enlarge both radii by this factor (if >1), to permit creation of distant interactions."))
);
@@ -130,10 +126,6 @@
// virtual ~Ig2_ChainedCylinder_ChainedCylinder_ScGeom6D () {};
virtual bool go(const shared_ptr<Shape>& cm1, const shared_ptr<Shape>& cm2, const State& state1, const State& state2, const Vector3r& shift2, const bool& force, const shared_ptr<Interaction>& c);
virtual bool goReverse( const shared_ptr<Shape>& cm1, const shared_ptr<Shape>& cm2, const State& state1, const State& state2, const Vector3r& shift2, const bool& force, const shared_ptr<Interaction>& c);
- #ifdef YADE_DEVIRT_FUNCTORS
- void* getStaticFuncPtr(){ return (void*)&Ig2_Sphere_ChainedCylinder_CylScGeom::goStatic; }
- static bool goStatic(IGeomFunctor* self, const shared_ptr<Shape>& cm1, const shared_ptr<Shape>& cm2, const State& state1, const State& se32, const Vector3r& shift2, const bool& force, const shared_ptr<Interaction>& c);
- #endif
YADE_CLASS_BASE_DOC_ATTRS(Ig2_ChainedCylinder_ChainedCylinder_ScGeom6D,IGeomFunctor,"Create/update a :yref:`ScGeom` instance representing connexion between :yref:`chained cylinders<ChainedCylinder>`.",
((Real,interactionDetectionFactor,1,,"Enlarge both radii by this factor (if >1), to permit creation of distant interactions."))
);
=== modified file 'pkg/common/Dispatching.cpp'
--- pkg/common/Dispatching.cpp 2010-11-07 11:46:20 +0000
+++ pkg/common/Dispatching.cpp 2010-12-13 12:11:43 +0000
@@ -68,9 +68,6 @@
Vector3r shift2=scene->cell->Hsize*cellDist.cast<Real>();
updateScenePtr();
if(force){
- #ifdef YADE_DEVIRT_FUNCTORS
- throw logic_error("IGeomDispatcher::explicitAction not supported with the devirt-functors feature (yet)");
- #endif
assert(b1->shape && b2->shape);
shared_ptr<Interaction> I(new Interaction(b1->getId(),b2->getId()));
I->cellDist=cellDist;
=== modified file 'pkg/common/Dispatching.hpp'
--- pkg/common/Dispatching.hpp 2010-11-07 11:46:20 +0000
+++ pkg/common/Dispatching.hpp 2010-12-13 12:11:43 +0000
@@ -34,12 +34,6 @@
/*argument types*/ TYPELIST_7(const shared_ptr<Shape>&, const shared_ptr<Shape>&, const State&, const State&, const Vector3r&, const bool&, const shared_ptr<Interaction>&)
>{
public: virtual ~IGeomFunctor();
- #ifdef YADE_DEVIRT_FUNCTORS
- // type of the pointer to devirtualized functor (static method taking the functor instance as the first argument)
- typedef bool(*StaticFuncPtr)(IGeomFunctor*, const shared_ptr<Shape>&, const shared_ptr<Shape>&, const State&, const State&, const Vector3r&, const bool&, const shared_ptr<Interaction>&);
- // return devirtualized functor (static method); must be overridden in derived classes
- virtual void* getStaticFuncPtr(){ throw runtime_error(("IGeomFunctor::getStaticFuncPtr() not overridden in class "+getClassName()+".").c_str()); }
- #endif
YADE_CLASS_BASE_DOC(IGeomFunctor,Functor,"Functor for creating/updating :yref:`Interaction::geom` objects.");
};
REGISTER_SERIALIZABLE(IGeomFunctor);
=== modified file 'pkg/common/InteractionLoop.cpp'
--- pkg/common/InteractionLoop.cpp 2010-11-30 13:51:41 +0000
+++ pkg/common/InteractionLoop.cpp 2010-12-13 12:11:43 +0000
@@ -92,14 +92,9 @@
// IGeomDispatcher
if(unlikely(!I->functorCache.geom || !I->functorCache.phys)){
I->functorCache.geom=geomDispatcher->getFunctor2D(b1_->shape,b2_->shape,swap);
- #ifdef YADE_DEVIRT_FUNCTORS
- if(I->functorCache.geom){ I->functorCache.geomPtr=I->functorCache.geom->getStaticFuncPtr(); /* cerr<<"["<<I->functorCache.geomPtr<<"]"; */ }
- else
- #else
- if(!I->functorCache.geom)
- #endif
- // returns NULL ptr if no functor exists; remember that and shortcut
- {I->functorCache.geomExists=false; continue; }
+ // returns NULL ptr if no functor exists; remember that and shortcut
+ if(!I->functorCache.geom) {I->functorCache.geomExists=false; continue; }
+
}
// arguments for the geom functor are in the reverse order (dispatcher would normally call goReverse).
// we don't remember the fact that is reverse, so we swap bodies within the interaction
@@ -113,21 +108,11 @@
bool wasReal=I->isReal();
bool geomCreated;
if(!scene->isPeriodic){
- #ifdef YADE_DEVIRT_FUNCTORS
- geomCreated=(*((IGeomFunctor::StaticFuncPtr)I->functorCache.geomPtr))(I->functorCache.geom.get(),b1->shape,b2->shape, *b1->state, *b2->state, Vector3r::Zero(), /*force*/false, I);
- #else
- geomCreated=I->functorCache.geom->go(b1->shape,b2->shape, *b1->state, *b2->state, Vector3r::Zero(), /*force*/false, I);
- #endif
+ geomCreated=I->functorCache.geom->go(b1->shape,b2->shape, *b1->state, *b2->state, Vector3r::Zero(), /*force*/false, I);
} else { // handle periodicity
Vector3r shift2=cellHsize*I->cellDist.cast<Real>();
// in sheared cell, apply shear on the mutual position as well
- //shift2=scene->cell->shearPt(shift2);
- #ifdef YADE_DEVIRT_FUNCTORS
- // cast back from void* first
- geomCreated=(*((IGeomFunctor::StaticFuncPtr)I->functorCache.geomPtr))(I->functorCache.geom.get(),b1->shape,b2->shape,*b1->state,*b2->state,shift2,/*force*/false,I);
- #else
- geomCreated=I->functorCache.geom->go(b1->shape,b2->shape,*b1->state,*b2->state,shift2,/*force*/false,I);
- #endif
+ geomCreated=I->functorCache.geom->go(b1->shape,b2->shape,*b1->state,*b2->state,shift2,/*force*/false,I);
}
if(unlikely(!geomCreated)){
if(wasReal) LOG_WARN("IGeomFunctor returned false on existing interaction!");
=== renamed file 'pkg/common/SubdomainOptimizer.cpp' => 'pkg/common/SubdomainBalancer.cpp'
--- pkg/common/SubdomainOptimizer.cpp 2010-12-01 11:09:53 +0000
+++ pkg/common/SubdomainBalancer.cpp 2010-12-13 12:11:43 +0000
@@ -1,15 +1,15 @@
// © 2010 Václav Šmilauer <eu@xxxxxxxx>
#ifdef YADE_SUBDOMAINS
-#include<yade/pkg/common/SubdomainOptimizer.hpp>
+#include<yade/pkg/common/SubdomainBalancer.hpp>
#include<yade/pkg/dem/Clump.hpp>
-YADE_PLUGIN((SubdomainOptimizer));
-CREATE_LOGGER(SubdomainOptimizer);
+YADE_PLUGIN((SubdomainBalancer));
+CREATE_LOGGER(SubdomainBalancer);
#ifdef YADE_OPENMP
-void SubdomainOptimizer::updateSceneBbox(){
+void SubdomainBalancer::updateSceneBbox(){
Real inf=std::numeric_limits<Real>::infinity();
mn=Vector3r(inf,inf,inf); mx=Vector3r(-inf,-inf,-inf);
nParticles=0;
@@ -17,7 +17,7 @@
else { mn=Vector3r::Zero(); mx=scene->cell->getSize(); }
}
-void SubdomainOptimizer::initializeSplitPlanes(){
+void SubdomainBalancer::initializeSplitPlanes(){
// split planes for subdomains...
int nSubdom(scene->bodies->maxSubdomains);
assert(nSubdom>1); // the case ==1 should have been caught in ::action already
@@ -30,7 +30,7 @@
case 7: div="aaaaaa"; break;
case 8: div="abc"; break;
default:
- throw std::runtime_error(("SubdomainOptimizer: unsupported number of subdomains ("+lexical_cast<string>(nSubdom)+"), currently only 1â¦8 is possible.").c_str());
+ throw std::runtime_error(("SubdomainBalancer: unsupported number of subdomains ("+lexical_cast<string>(nSubdom)+"), currently only 1â¦8 is possible.").c_str());
}
Vector3r axesExtents(mx-mn);
string axesBySizeStr;
@@ -43,7 +43,7 @@
for(size_t i=0; i<3; i++){ axesBySizeStr.push_back(axesBySize[i]==0 ? 'x' : (axesBySize[i]==1 ? 'y' : 'z')); }
} else {
if(axesOrder.size()!=3 || axesOrder.find('x')==string::npos || axesOrder.find('y')==string::npos || axesOrder.find('z')==string::npos){
- throw std::invalid_argument(("SubdomainOptimizer: axesOrder must be a combination of 'x', 'y', 'z' characters (not '"+axesOrder+"')").c_str());
+ throw std::invalid_argument(("SubdomainBalancer: axesOrder must be a combination of 'x', 'y', 'z' characters (not '"+axesOrder+"')").c_str());
}
axesBySizeStr=axesOrder;
}
@@ -73,7 +73,7 @@
LOG_INFO("Established "<<nSubdom<<" subdomains, with split specification "<<div<<"="<<divXYZ<<".");
}
-void SubdomainOptimizer::adjustSplitPlanes(){
+void SubdomainBalancer::adjustSplitPlanes(){
assert(nParticles>0);
FOREACH(SplitPlane& sp, splits){
assert(sp.aboveSplit>=0);
@@ -92,7 +92,7 @@
}
}
-void SubdomainOptimizer::action(){
+void SubdomainBalancer::action(){
// check before we run that we are not useless
const int nSubdom(scene->bodies->maxSubdomains);
if(nSubdom==1){
@@ -156,7 +156,7 @@
}
#else
-void SubdomainOptimizer::action(){
+void SubdomainBalancer::action(){
LOG_INFO("Compiled without OpenMP support, no subdomains will be created; killing myself.");
dead=true;
}
=== renamed file 'pkg/common/SubdomainOptimizer.hpp' => 'pkg/common/SubdomainBalancer.hpp'
--- pkg/common/SubdomainOptimizer.hpp 2010-11-30 13:51:41 +0000
+++ pkg/common/SubdomainBalancer.hpp 2010-12-13 12:11:43 +0000
@@ -7,7 +7,7 @@
#include<yade/core/BodyContainer.hpp>
#include<yade/pkg/common/PeriodicEngines.hpp>
-class SubdomainOptimizer: public PeriodicEngine{
+class SubdomainBalancer: public PeriodicEngine{
struct SplitPlane{
int ax; // axis number
Real lim; // limit coordinate on axis ax
@@ -28,7 +28,7 @@
void adjustSplitPlanes();
public:
virtual void action();
- YADE_CLASS_BASE_DOC_ATTRS_CTOR(SubdomainOptimizer,PeriodicEngine,"Assigns :yref:`bodies <Omega.bodies>` to spatially-defined subdomains, which increase performance with OpenMP builds -- each OpenMP thread is responsible for processing one subdomain (if the respective loop is parallelized). Using subdomains is not mandatory, though without them, OpenMP-enabled builds are not parallelized.\n\nIn the first run, subdomains are created by finding planes splitting the simulation domain the desired number of subdomains (2â¦8). Later, due to particle motion, particles within one subdomain might not be spatially close, and subdomains assignments should be renewed; the interval at which this engine should be run terefore depends on the nature of simulation.\n\n.. note:: Constructor changes default values of :yref:`initRun <PeriodicEngine::initRun>` to ``True`` and :yref:`iterPeriod <PeriodicEngine.iterPeriod>` to 500, to make it suitable for running without setting further arguments.",
+ YADE_CLASS_BASE_DOC_ATTRS_CTOR(SubdomainBalancer,PeriodicEngine,"Assigns :yref:`bodies <Omega.bodies>` to spatially-defined subdomains, which increase performance with OpenMP builds -- each OpenMP thread is responsible for processing one subdomain (if the respective loop is parallelized). Using subdomains is not mandatory, though without them, OpenMP-enabled builds are not parallelized.\n\nIn the first run, subdomains are created by finding planes splitting the simulation domain the desired number of subdomains (2â¦8). Later, due to particle motion, particles within one subdomain might not be spatially close, and subdomains assignments should be renewed; the interval at which this engine should be run terefore depends on the nature of simulation.\n\n.. note:: Constructor changes default values of :yref:`initRun <PeriodicEngine::initRun>` to ``True`` and :yref:`iterPeriod <PeriodicEngine.iterPeriod>` to 500, to make it suitable for running without setting further arguments.",
((bool,colorize,true,,"Change :yref:`colors <Shape.color>` of particles to show subdomain assignment visually."))
((string,axesOrder,"",,"Order of axes that determine intial splitting planes orientation; if not set, they are determined from total extents of the simulation (from the longest to the shortest one). Must be combination of *x*, *y*, *z*."))
// ((string,div,"",,"Initial division string; "))
@@ -37,6 +37,6 @@
);
DECLARE_LOGGER;
};
-REGISTER_SERIALIZABLE(SubdomainOptimizer);
+REGISTER_SERIALIZABLE(SubdomainBalancer);
#endif /* YADE_SUBDOMAINS */
=== modified file 'pkg/dem/ConcretePM.cpp'
--- pkg/dem/ConcretePM.cpp 2010-11-07 11:46:20 +0000
+++ pkg/dem/ConcretePM.cpp 2010-12-13 12:11:43 +0000
@@ -4,7 +4,7 @@
#include<yade/pkg/dem/DemXDofGeom.hpp>
#include<yade/pkg/dem/Shop.hpp>
-YADE_PLUGIN((CpmState)(CpmMat)(Ip2_CpmMat_CpmMat_CpmPhys)(CpmPhys)(Law2_Dem3DofGeom_CpmPhys_Cpm)(Law2_ScGeom_CpmPhys_Cpm)
+YADE_PLUGIN((CpmState)(CpmMat)(Ip2_CpmMat_CpmMat_CpmPhys)(CpmPhys)(Law2_Dem3DofGeom_CpmPhys_Cpm)
#ifdef YADE_OPENGL
(Gl1_CpmPhys)
#endif
@@ -235,7 +235,7 @@
#endif
}
-
+#if 0
CREATE_LOGGER(Law2_ScGeom_CpmPhys_Cpm);
void Law2_ScGeom_CpmPhys_Cpm::go(shared_ptr<IGeom>& _geom, shared_ptr<IPhys>& _phys, Interaction* I){
ScGeom* geom=static_cast<ScGeom*>(_geom.get());
@@ -303,7 +303,7 @@
applyForceAtContactPoint(BC->normalForce+BC->shearForce,geom->contactPoint,I->getId1(),pos1,I->getId2(),pos2);
}
-
+#endif
#ifdef YADE_OPENGL
/********************** Gl1_CpmPhys ****************************/
=== modified file 'pkg/dem/ConcretePM.hpp'
--- pkg/dem/ConcretePM.hpp 2010-11-07 11:46:20 +0000
+++ pkg/dem/ConcretePM.hpp 2010-12-13 12:11:43 +0000
@@ -48,7 +48,6 @@
#include<yade/pkg/common/ElastMat.hpp>
#include<yade/pkg/common/Dispatching.hpp>
-#include<yade/pkg/dem/ScGeom.hpp>
#include<yade/pkg/common/PeriodicEngines.hpp>
#include<yade/pkg/common/NormShearPhys.hpp>
@@ -200,6 +199,7 @@
};
REGISTER_SERIALIZABLE(Law2_Dem3DofGeom_CpmPhys_Cpm);
+#if 0
class Law2_ScGeom_CpmPhys_Cpm: public LawFunctor{
public:
void go(shared_ptr<IGeom>& _geom, shared_ptr<IPhys>& _phys, Interaction* I);
@@ -210,7 +210,7 @@
DECLARE_LOGGER;
};
REGISTER_SERIALIZABLE(Law2_ScGeom_CpmPhys_Cpm);
-
+#endif
=== modified file 'pkg/dem/Dem3DofGeom_FacetSphere.cpp'
--- pkg/dem/Dem3DofGeom_FacetSphere.cpp 2010-11-07 11:46:20 +0000
+++ pkg/dem/Dem3DofGeom_FacetSphere.cpp 2010-12-13 12:11:43 +0000
@@ -38,15 +38,6 @@
return (displacementTMax/scale)*(1-scale);
}
-Vector3r Dem3DofGeom_FacetSphere::scaleDisplacementT(Real multiplier){
- assert(multiplier>=0 && multiplier<=1);
- Vector3r p1=contPtInTgPlane1(), p2=contPtInTgPlane2();
- Vector3r diff=.5*(multiplier-1)*(p2-p1);
- setTgPlanePts(p1-diff,p2+diff);
- return diff*2.0;
-}
-
-
CREATE_LOGGER(Ig2_Facet_Sphere_Dem3DofGeom);
bool Ig2_Facet_Sphere_Dem3DofGeom::go(const shared_ptr<Shape>& cm1, const shared_ptr<Shape>& cm2, const State& state1, const State& state2, const Vector3r& shift2, const bool& force, const shared_ptr<Interaction>& c){
Facet* facet=static_cast<Facet*>(cm1.get());
=== modified file 'pkg/dem/Dem3DofGeom_FacetSphere.hpp'
--- pkg/dem/Dem3DofGeom_FacetSphere.hpp 2010-11-07 11:46:20 +0000
+++ pkg/dem/Dem3DofGeom_FacetSphere.hpp 2010-12-13 12:11:43 +0000
@@ -16,7 +16,6 @@
virtual Real displacementN(){ return (se32.position-contactPoint).norm()-refLength;}
virtual Vector3r displacementT(){ relocateContactPoints(); return contPtInTgPlane2()-contPtInTgPlane1(); }
virtual Real slipToDisplacementTMax(Real displacementTMax);
- virtual Vector3r scaleDisplacementT(Real multiplier);
/***** end API ******/
void setTgPlanePts(const Vector3r&, const Vector3r&);
=== modified file 'pkg/dem/Dem3DofGeom_SphereSphere.cpp'
--- pkg/dem/Dem3DofGeom_SphereSphere.cpp 2010-11-07 11:46:20 +0000
+++ pkg/dem/Dem3DofGeom_SphereSphere.cpp 2010-12-13 12:11:43 +0000
@@ -78,17 +78,6 @@
return 2*diff.norm();
}
-/*! As above : perform slip of the projected contact points. Here, we directly give the multiplier applied on the distance for faster results.
- * The plastic displacement (vector) is returned.
- */
-Vector3r Dem3DofGeom_SphereSphere::scaleDisplacementT(Real multiplier){
- assert(multiplier>=0 && multiplier<=1);
- Vector3r p1=contPtInTgPlane1(), p2=contPtInTgPlane2();
- Vector3r diff=.5*(multiplier-1)*(p2-p1);
- setTgPlanePts(p1-diff,p2+diff);
- return diff*2.0;
-}
-
/* Move contact point on both spheres in such way that their relative position (displacementT) is the same;
* this should be done regularly to ensure that the angle doesn't go over Ï, since then quaternion would
=== modified file 'pkg/dem/Dem3DofGeom_SphereSphere.hpp'
--- pkg/dem/Dem3DofGeom_SphereSphere.hpp 2010-11-07 11:46:20 +0000
+++ pkg/dem/Dem3DofGeom_SphereSphere.hpp 2010-12-13 12:11:43 +0000
@@ -28,7 +28,6 @@
#endif
}
virtual Real slipToDisplacementTMax(Real displacementTMax);
- virtual Vector3r scaleDisplacementT(Real multiplier);
/********* end API ***********/
YADE_CLASS_BASE_DOC_ATTRS_INIT_CTOR_PY(Dem3DofGeom_SphereSphere,Dem3DofGeom,"Class representing 2 spheres in contact which computes 3 degrees of freedom (normal and shear deformation).",
=== modified file 'pkg/dem/Dem3DofGeom_WallSphere.cpp'
--- pkg/dem/Dem3DofGeom_WallSphere.cpp 2010-11-07 11:46:20 +0000
+++ pkg/dem/Dem3DofGeom_WallSphere.cpp 2010-12-13 12:11:43 +0000
@@ -38,14 +38,6 @@
return (displacementTMax/scale)*(1-scale);
}
-Vector3r Dem3DofGeom_WallSphere::scaleDisplacementT(Real multiplier){
- assert(multiplier>=0 && multiplier<=1);
- Vector3r p1=contPtInTgPlane1(), p2=contPtInTgPlane2();
- Vector3r diff=.5*(multiplier-1)*(p2-p1);
- setTgPlanePts(p1-diff,p2+diff);
- return diff*2.0;
-}
-
CREATE_LOGGER(Ig2_Wall_Sphere_Dem3DofGeom);
bool Ig2_Wall_Sphere_Dem3DofGeom::go(const shared_ptr<Shape>& cm1, const shared_ptr<Shape>& cm2, const State& state1, const State& state2, const Vector3r& shift2, const bool& force, const shared_ptr<Interaction>& c){
Wall* wall=static_cast<Wall*>(cm1.get());
=== modified file 'pkg/dem/Dem3DofGeom_WallSphere.hpp'
--- pkg/dem/Dem3DofGeom_WallSphere.hpp 2010-11-07 11:46:20 +0000
+++ pkg/dem/Dem3DofGeom_WallSphere.hpp 2010-12-13 12:11:43 +0000
@@ -14,7 +14,6 @@
virtual Real displacementN(){ return (se32.position-contactPoint).norm()-refLength;}
virtual Vector3r displacementT(){ relocateContactPoints(); return contPtInTgPlane2()-contPtInTgPlane1(); }
virtual Real slipToDisplacementTMax(Real displacementTMax);
- virtual Vector3r scaleDisplacementT(Real multiplier);
/***** end API ******/
void setTgPlanePts(const Vector3r&, const Vector3r&);
=== modified file 'pkg/dem/DemXDofGeom.hpp'
--- pkg/dem/DemXDofGeom.hpp 2010-10-13 16:23:08 +0000
+++ pkg/dem/DemXDofGeom.hpp 2010-12-13 12:11:43 +0000
@@ -31,7 +31,6 @@
virtual Real displacementN();
virtual Vector3r displacementT(){throw;}
virtual Real slipToDisplacementTMax(Real displacementTMax){throw;}; // plasticity
- virtual Vector3r scaleDisplacementT(Real multiplier){throw;}; // plasticity (variant using multiplier dispMax/disp)
// reference radii, for contact stiffness computation; set to negative for nonsense values
// end API
=== modified file 'pkg/dem/ElasticContactLaw.cpp'
--- pkg/dem/ElasticContactLaw.cpp 2010-12-06 19:24:20 +0000
+++ pkg/dem/ElasticContactLaw.cpp 2010-12-13 12:11:43 +0000
@@ -106,15 +106,7 @@
phys->normalForce=phys->kn*displN*geom->normal;
Real maxFsSq=phys->normalForce.squaredNorm()*pow(phys->tangensOfFrictionAngle,2);
Vector3r trialFs=phys->ks*geom->displacementT();
-
-// FIXME : This is generating bug https://bugs.launchpad.net/bugs/585898
-// Real trialFsSq = trialFs.squaredNorm();
-// if(trialFsSq>maxFsSq){
-// Real multiplier=sqrt(maxFsSq/trialFsSq);
-// geom->scaleDisplacementT(multiplier); trialFs*=multiplier;}
- //Workaround start
if(trialFs.squaredNorm()>maxFsSq){ geom->slipToDisplacementTMax(sqrt(maxFsSq)/phys->ks); trialFs*=sqrt(maxFsSq/(trialFs.squaredNorm()));}
- //Workaround end
phys->shearForce=trialFs;
applyForceAtContactPoint(phys->normalForce+trialFs,geom->contactPoint,contact->getId1(),geom->se31.position,contact->getId2(),geom->se32.position);
}
=== modified file 'pkg/dem/L3Geom.hpp'
--- pkg/dem/L3Geom.hpp 2010-12-12 13:55:12 +0000
+++ pkg/dem/L3Geom.hpp 2010-12-13 12:11:43 +0000
@@ -88,7 +88,7 @@
enum { APPROX_NO_RENORM_TRSF=1, APPROX_NO_MID_TRSF=2, APPROX_NO_MID_NORMAL=4, APPROX_NO_RENORM_MID_NORMAL=8 };
YADE_CLASS_BASE_DOC_ATTRS(Ig2_Sphere_Sphere_L3Geom_Inc,IGeomFunctor,"Incrementally compute :yref:`L3Geom` for contact of 2 spheres. Detailed documentation in py/_extraDocs.py",
- ((bool,noRatch,true,,"See :yref:`ScGeom.avoidGranularRatcheting`."))
+ ((bool,noRatch,true,,"See :yref:`Ig2_Sphere_Sphere_ScGeom.avoidGranularRatcheting`."))
((Real,distFactor,1,,"Create interaction if spheres are not futher than distFactor*(r1+r2)."))
((int,approxMask,0,,"Selectively enable geometrical approximations (bitmask); add the values for approximations to be enabled.\n\n"
"== ===============================================================\n"
=== modified file 'py/_eudoxos.cpp'
--- py/_eudoxos.cpp 2010-11-07 11:46:20 +0000
+++ py/_eudoxos.cpp 2010-12-13 12:11:43 +0000
@@ -6,6 +6,7 @@
#include<boost/python.hpp>
#include<yade/extra/boost_python_len.hpp>
#include<yade/pkg/dem/Shop.hpp>
+#include<yade/pkg/dem/DemXDofGeom.hpp>
#ifdef YADE_VTK
#pragma GCC diagnostic ignored "-Wdeprecated"
=== modified file 'py/system.py'
--- py/system.py 2010-11-15 09:59:10 +0000
+++ py/system.py 2010-12-13 12:11:43 +0000
@@ -28,65 +28,6 @@
# if old class name is used, the new object is constructed and a warning is issued about old name being used
# keep chronologically ordered, oldest first; script/rename-class.py appends at the end
_deprecated={
- 'CpmPhysDamageColorizer':'CpmStateUpdater', # renamed 10.10.2009
- 'GLDraw_Dem3DofGeom_FacetSphere':'Gl1_Dem3DofGeom_FacetSphere', # renamed 15.11.2009
- 'PeriodicInsertionSortCollider':'InsertionSortCollider', # integrated 25.11.2009
- 'BoundingVolumeMetaEngine':'BoundDispatcher', # Tue Dec 1 14:28:29 2009, vaclav@flux ## was BoundingVolumeDispatcher, generating double warning
- 'BoundingVolumeEngineUnit':'BoundFunctor', # Tue Dec 1 14:39:53 2009, vaclav@flux ## was BoundingVolumeFunctor, generating double warning
- 'InteractionGeometryMetaEngine':'InteractionGeometryDispatcher', # Tue Dec 1 14:40:36 2009, vaclav@flux
- 'InteractionPhysicsMetaEngine':'InteractionPhysicsDispatcher', # Tue Dec 1 14:40:53 2009, vaclav@flux
- 'InteractionPhysicsEngineUnit':'InteractionPhysicsFunctor', # Tue Dec 1 14:41:19 2009, vaclav@flux
- 'InteractionGeometryEngineUnit':'InteractionGeometryFunctor', # Tue Dec 1 14:41:56 2009, vaclav@flux
- 'BoundingVolume':'Bound', # Fri Dec 4 23:44:14 2009, vaclav@flux
- 'BoundingVolumeDispatcher':'BoundDispatcher', # Fri Dec 4 23:44:27 2009, vaclav@flux
- 'BoundingVolumeFunctor':'BoundFunctor', # Fri Dec 4 23:44:34 2009, vaclav@flux
- 'InteractingGeometry':'Shape', # Fri Dec 4 23:48:13 2009, vaclav@flux
- 'ConstitutiveLaw':'LawFunctor', # Fri Dec 4 23:57:51 2009, vaclav@flux
- 'ConstitutiveLawDispatcher':'LawDispatcher', # Fri Dec 4 23:57:59 2009, vaclav@flux
- 'ef2_Sphere_Sphere_Dem3DofGeom':'Ig2_Sphere_Sphere_Dem3DofGeom', # Sat Dec 5 00:02:03 2009, vaclav@flux
- 'ef2_Facet_Sphere_Dem3DofGeom':'Ig2_Facet_Sphere_Dem3DofGeom', # Sat Dec 5 00:02:13 2009, vaclav@flux
- 'ef2_Wall_Sphere_Dem3DofGeom':'Ig2_Wall_Sphere_Dem3DofGeom', # Sat Dec 5 00:02:22 2009, vaclav@flux
- 'NewtonsDampedLaw':'NewtonIntegrator', # Wed Dec 9 17:44:15 2009, vaclav@flux
- 'StandAloneEngine':'GlobalEngine', # Wed Dec 9 17:46:12 2009, vaclav@flux
- 'DeusExMachina':'PartialEngine', # Wed Dec 9 17:53:06 2009, vaclav@flux
- ## 'Sphere':'SphereModel', # 11/12/2009, vaclav@flux ### comment out to prevent loop, since InteractingSphere was renamed to Sphere later
- ## 'Facet':'FacetModel', # Fri Dec 11 15:27:41 2009, vaclav@flux ### dtto
- ## 'Box':'BoxModel', # Fri Dec 11 15:39:44 2009, vaclav@flux ### dtto
- 'GLDrawSphere':'GLDrawSphereModel', # Fri Dec 11 15:43:31 2009, vaclav@flux
- 'GLDrawBox':'GLDrawBoxModel', # Fri Dec 11 15:43:50 2009, vaclav@flux
- 'GLDrawFacet':'GLDrawFacetModel', # Fri Dec 11 15:44:04 2009, vaclav@flux
- 'GLDrawInteractingGeometryFunctor':'GlShapeFunctor', # Fri Dec 11 16:08:16 2009, vaclav@flux
- 'GLDrawGeometricalModelFunctor':'GlGeometricalModelFunctor', # Fri Dec 11 16:08:40 2009, vaclav@flux
- 'GLDrawBoundingVolumeFunctor':'GlBoundFunctor', # Fri Dec 11 16:09:16 2009, vaclav@flux
- 'GLDrawInteractionGeometryFunctor':'GlInteractionGeometryFunctor', # Fri Dec 11 16:09:48 2009, vaclav@flux
- 'GLDrawInteractionPhysicsFunctor':'GlInteractionPhysicsFunctor', # Fri Dec 11 16:10:02 2009, vaclav@flux
- 'GLDrawStateFunctor':'GlStateFunctor', # Fri Dec 11 16:10:29 2009, vaclav@flux
- 'GLDrawInteractingSphere':'Gl1_Sphere', # Fri Dec 11 16:20:51 2009, vaclav@flux
- 'GLDrawInteractingFacet':'Gl1_Facet', # Fri Dec 11 16:21:06 2009, vaclav@flux
- 'GLDrawInteractingBox':'Gl1_Box', # Fri Dec 11 16:21:17 2009, vaclav@flux
- 'TetraDraw':'Gl1_Tetra', # Fri Dec 11 16:22:18 2009, vaclav@flux
- 'MetaInteractingGeometry':'SceneShape', # Fri Dec 11 16:56:06 2009, vaclav@flux
- 'GLDrawMetaInteractingGeometry':'Gl1_SceneShape', # Fri Dec 11 17:00:00 2009, vaclav@flux
- 'GLDrawMetaInteractingGeometry':'Gl1_SceneShape', # Fri Dec 11 17:10:17 2009, vaclav@flux
- 'SpheresContactGeometry':'ScGeom', # Sun Dec 13 20:59:09 2009, vaclav@flux
- 'InteractingSphere2InteractingSphere4SpheresContactGeometry':'Ig2_Sphere_Sphere_ScGeom', # Sun Dec 13 21:02:31 2009, vaclav@flux
- 'InteractingFacet2InteractingSphere4SpheresContactGeometry':'Ig2_Facet_Sphere_ScGeom', # Sun Dec 13 21:02:57 2009, vaclav@flux
- 'InteractingBox2InteractingSphere4SpheresContactGeometry':'Ig2_Box_Sphere_ScGeom', # Sun Dec 13 21:03:10 2009, vaclav@flux
- 'InteractingSphere':'Sphere', # Sun Dec 13 21:13:40 2009, vaclav@flux
- 'InteractingFacet':'Facet', # Sun Dec 13 21:15:07 2009, vaclav@flux
- 'InteractingBox':'Box', # Sun Dec 13 21:15:16 2009, vaclav@flux
- 'MetaInteractingGeometry2AABB':'DontUseClass_MetaInteractingGeometry2AABB__youCanRemoveItSafelyFromYourSimulation_itWillBeRemovedInTheFutureCompletely', # Mon Dec 14 09:33:20 2009, vaclav@flux
- 'InteractingSphere2AABB':'Bo1_Sphere_Aabb', # Thu Dec 17 08:59:29 2009, vaclav@falx
- 'InteractingFacet2AABB':'Bo1_Facet_Aabb', # Thu Dec 17 08:59:56 2009, vaclav@falx
- 'InteractingBox2AABB':'Bo1_Box_Aabb', # Thu Dec 17 09:00:14 2009, vaclav@falx
- 'Wall2AABB':'Bo1_Wall_Aabb', # Thu Dec 17 09:01:07 2009, vaclav@falx
- 'AABB':'Aabb', # Thu Dec 17 09:01:35 2009, vaclav@falx
- 'GLDrawAABB':'Gl1_Aabb', # Thu Dec 17 09:07:58 2009, vaclav@falx
- 'GLDraw_Dem3DofGeom_SphereSphere':'Gl1_Dem3DofGeom_SphereSphere', # Fri Dec 18 23:01:39 2009, vaclav@flux
- 'BexContainer':'ForceContainer', # Fri Dec 25 11:43:44 2009, vaclav@flux
- 'BexResetter':'ForceResetter', # Fri Dec 25 11:44:01 2009, vaclav@flux
- 'PhysicalActionContainerResetter':'ForceResetter', # Fri Dec 25 11:45:32 2009, vaclav@flux
- 'PhysicalActionContainerReseter':'ForceResetter', # Fri Dec 25 11:45:51 2009, vaclav@flux
'GranularMat':'FrictMat', # Sun Jan 10 09:26:45 2010, vaclav@flux
'SimpleElasticRelationships':'Ip2_FrictMat_FrictMat_NormShearPhys', # Sun Jan 10 09:28:17 2010, vaclav@flux
'NormalInteraction':'NormPhys', # Sun Jan 10 09:28:56 2010, vaclav@flux
=== modified file 'scripts/test/clumpPack.py'
--- scripts/test/clumpPack.py 2010-12-10 14:52:22 +0000
+++ scripts/test/clumpPack.py 2010-12-13 12:11:43 +0000
@@ -9,7 +9,7 @@
O.bodies.append(utils.wall(position=0,axis=2))
O.engines=[
- SubdomainOptimizer(),
+ SubdomainBalancer(),
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Wall_Aabb()]),
InteractionLoop(
=== modified file 'scripts/test/law-test.py'
--- scripts/test/law-test.py 2010-12-06 22:58:31 +0000
+++ scripts/test/law-test.py 2010-12-13 12:11:43 +0000
@@ -38,7 +38,7 @@
#[Ig2_Sphere_Sphere_L3Geom_Inc(approxMask=63)],[Ip2_FrictMat_FrictMat_FrictPhys()],[Law2_L3Geom_FrictPhys_ElPerfPl(noBreak=True,noSlip=False)] # L3Geom
[Ig2_Sphere_Sphere_L6Geom_Inc(approxMask=63)],[Ip2_FrictMat_FrictMat_FrictPhys()],[Law2_L6Geom_FrictPhys_Linear(charLen=1)] # L6Geom
),
- LawTester(ids=[0,1],path=[(0,0,0)]*7+[(-1e-5,0,0),(-1e-5,.1,.1)],rotPath=[(0,.2,0),(0,0,0),(0,0,.2),(0,0,0),(.2,0,0),(-.2,0,0),(0,0,0)],pathSteps=[10],doneHook='tester.dead=True; O.pause();',label='tester',rotWeight=0),
+ LawTester(ids=[0,1],disPath=[(0,0,0)]*7+[(-1e-5,0,0),(-1e-5,.1,.1)],rotPath=[(0,.2,0),(0,0,0),(0,0,.2),(0,0,0),(.2,0,0),(-.2,0,0),(0,0,0)],pathSteps=[10],doneHook='tester.dead=True; O.pause();',label='tester',rotWeight=0),
#LawTester(ids=[0,1],path=[
# (-1e-5,0,0),(-.1,0,0),(-.1,.1,0),(-1e-5,.1,0), # towards, shear, back to intial normal distance
# (-.02,.1,.1),(-.02,-.1,.1),(-.02,-.1,-.1),(-.02,.1,-.1),(-.02,.1,.1), # go in square in the shear plane without changing normal deformation
@@ -50,10 +50,10 @@
def addPlotData():
i=O.interactions[0,1]
plot.addData(
- un=tester.ptOurs[0],us1=tester.ptOurs[1],us2=tester.ptOurs[2],
- ung=tester.ptGeom[0],us1g=tester.ptGeom[1],us2g=tester.ptGeom[2],
- phiX=tester.rotOurs[0],phiY=tester.rotOurs[1],phiZ=tester.rotOurs[2],
- phiXg=tester.rotGeom[0],phiYg=tester.rotGeom[1],phiZg=tester.rotGeom[2],
+ un=tester.uTest[0],us1=tester.uTest[1],us2=tester.uTest[2],
+ ung=tester.uGeom[0],us1g=tester.uGeom[1],us2g=tester.uGeom[2],
+ phiX=tester.uTest[3],phiY=tester.uTest[4],phiZ=tester.uTest[5],
+ phiXg=tester.uGeom[3],phiYg=tester.uGeom[4],phiZg=tester.uGeom[5],
i=O.iter,Fs=i.phys.shearForce.norm(),Fn=i.phys.normalForce.norm(),Tx=O.forces.t(0)[0],Tyz=sqrt(O.forces.t(0)[1]**2+O.forces.t(0)[2]**2)
)
plot.plots={'us1':('us2',),'Fn':('Fs',),'i':('un','us1','us2'),' i':('Fs','Fn','Tx','Tyz'),' i':('ung','us1g','us2g'),'i ':('phiX','phiXg','phiY','phiYg','phiZ','phiZg')} #'ung','us1g','us2g'
=== renamed file 'scripts/test/subdomain-optimizer.py' => 'scripts/test/subdomain-balancer.py'
--- scripts/test/subdomain-optimizer.py 2010-11-30 13:51:41 +0000
+++ scripts/test/subdomain-balancer.py 2010-12-13 12:11:43 +0000
@@ -1,5 +1,5 @@
from yade import pack,log,timing,utils
-log.setLevel("SubdomainOptimizer",log.INFO)
+log.setLevel("SubdomainBalancer",log.INFO)
#log.setLevel("BodyContainer",log.TRACE)
utils.readParamsFromTable(noTableOk=True,num=12000)
import yade.params.table
@@ -11,7 +11,7 @@
#O.bodies.append(utils.wall((0,0,0),axis=0))
#O.bodies.append(utils.wall((0,2,0),axis=1))
#O.bodies.append(utils.wall((2,0,0),axis=0))
-O.engines=([SubdomainOptimizer(axesOrder='xyz',colorize=True)] if 'SubdomainOptimizer' in dir() else [])+[
+O.engines=([SubdomainBalancer(axesOrder='xyz',colorize=True)] if 'SubdomainBalancer' in dir() else [])+[
ForceResetter(),
InsertionSortCollider([Bo1_Sphere_Aabb(),Bo1_Wall_Aabb()],sweepLength=.05*.05),
InteractionLoop([Ig2_Sphere_Sphere_ScGeom(),Ig2_Wall_Sphere_ScGeom()],[Ip2_FrictMat_FrictMat_FrictPhys()],[Law2_ScGeom_FrictPhys_CundallStrack()]),
Follow ups