← Back to team overview

yade-dev team mailing list archive

Re: [Branch ~yade-dev/yade/trunk] Rev 2611: 1. remove devirt-functors (unused)

 

Hi, Vaclav!

It seems, I have regression with this commit. My uniaxial test does not give
any destruction.
Could you not check your scripts, please?

Thanks.

Anton



On Mon, Dec 13, 2010 at 1:13 PM, <noreply@xxxxxxxxxxxxx> wrote:

> ------------------------------------------------------------
> 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:
>
>
>
> --
> lp:yade
> https://code.launchpad.net/~yade-dev/yade/trunk<https://code.launchpad.net/%7Eyade-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<https://code.launchpad.net/%7Eyade-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()]),
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~yade-dev<https://launchpad.net/%7Eyade-dev>
> Post to     : yade-dev@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~yade-dev<https://launchpad.net/%7Eyade-dev>
> More help   : https://help.launchpad.net/ListHelp
>
>

Follow ups

References