← Back to team overview

yade-dev team mailing list archive

[Branch ~yade-pkg/yade/git-trunk] Rev 4096: Remove some more small cpp-files.

 

------------------------------------------------------------
revno: 4096
committer: Anton Gladky <gladky.anton@xxxxxxxxx>
timestamp: Mon 2014-07-21 11:09:14 +0200
message:
  Remove some more small cpp-files.
removed:
  pkg/common/BoundaryController.cpp
  pkg/common/Box.cpp
  pkg/common/Callbacks.cpp
  pkg/common/CylScGeom6D.cpp
  pkg/common/FieldApplier.cpp
  pkg/common/ForceResetter.cpp
  pkg/common/NormShearPhys.cpp
  pkg/common/Recorder.cpp
  pkg/common/StepDisplacer.cpp
  pkg/common/TorqueEngine.cpp
  pkg/dem/DemXDofGeom.cpp
modified:
  pkg/common/BoundaryController.hpp
  pkg/common/Box.hpp
  pkg/common/Callbacks.hpp
  pkg/common/CylScGeom6D.hpp
  pkg/common/FieldApplier.hpp
  pkg/common/ForceResetter.hpp
  pkg/common/MatchMaker.cpp
  pkg/common/MatchMaker.hpp
  pkg/common/NormShearPhys.hpp
  pkg/common/Recorder.hpp
  pkg/common/StepDisplacer.hpp
  pkg/common/TorqueEngine.hpp
  pkg/dem/DemXDofGeom.hpp
  pkg/dem/DomainLimiter.cpp


--
lp:yade
https://code.launchpad.net/~yade-pkg/yade/git-trunk

Your team Yade developers is subscribed to branch lp:yade.
To unsubscribe from this branch go to https://code.launchpad.net/~yade-pkg/yade/git-trunk/+edit-subscription
=== removed file 'pkg/common/BoundaryController.cpp'
--- pkg/common/BoundaryController.cpp	2014-07-03 17:20:40 +0000
+++ pkg/common/BoundaryController.cpp	1970-01-01 00:00:00 +0000
@@ -1,3 +0,0 @@
-#include<yade/pkg/common/BoundaryController.hpp>
-void BoundaryController::action(){ throw std::runtime_error("BoundaryController must not be used in simulations directly (BoundaryController::action called)."); }
-YADE_PLUGIN((BoundaryController));

=== modified file 'pkg/common/BoundaryController.hpp'
--- pkg/common/BoundaryController.hpp	2010-10-13 16:23:08 +0000
+++ pkg/common/BoundaryController.hpp	2014-07-21 09:09:14 +0000
@@ -1,7 +1,9 @@
 #pragma once
 #include<yade/core/GlobalEngine.hpp>
 class BoundaryController: public GlobalEngine{
-	virtual void action();
+	virtual void action() {
+		{ throw std::runtime_error("BoundaryController must not be used in simulations directly (BoundaryController::action called)."); }
+	}
 	YADE_CLASS_BASE_DOC(BoundaryController,GlobalEngine,"Base for engines controlling boundary conditions of simulations. Not to be used directly.");
 };
 REGISTER_SERIALIZABLE(BoundaryController);

=== removed file 'pkg/common/Box.cpp'
--- pkg/common/Box.cpp	2010-10-13 16:23:08 +0000
+++ pkg/common/Box.cpp	1970-01-01 00:00:00 +0000
@@ -1,15 +0,0 @@
-/*************************************************************************
-*  Copyright (C) 2004 by Olivier Galizzi                                 *
-*  olivier.galizzi@xxxxxxx                                               *
-*                                                                        *
-*  This program is free software; it is licensed under the terms of the  *
-*  GNU General Public License v2 or later. See file LICENSE for details. *
-*************************************************************************/
-
-#include "Box.hpp"
-
-Box::~Box ()
-{		
-}
-
-YADE_PLUGIN((Box));

=== modified file 'pkg/common/Box.hpp'
--- pkg/common/Box.hpp	2010-10-13 16:23:08 +0000
+++ pkg/common/Box.hpp	2014-07-21 09:09:14 +0000
@@ -14,7 +14,7 @@
 class Box: public Shape{
 	public:
 		Box(const Vector3r& _extents): extents(_extents){}
-		virtual ~Box ();
+		virtual ~Box () {};
 	YADE_CLASS_BASE_DOC_ATTRS_CTOR(Box,Shape,"Box (cuboid) particle geometry. (Avoid using in new code, prefer :yref:`Facet` instead.",
 		((Vector3r,extents,,,"Half-size of the cuboid")),
 		/* ctor */ createIndex();

=== removed file 'pkg/common/Callbacks.cpp'
--- pkg/common/Callbacks.cpp	2011-01-09 16:34:50 +0000
+++ pkg/common/Callbacks.cpp	1970-01-01 00:00:00 +0000
@@ -1,13 +0,0 @@
-#include<yade/pkg/common/Callbacks.hpp>
-
-#ifdef YADE_BODY_CALLBACK
-	BodyCallback::~BodyCallback(){};
-#endif
-
-IntrCallback::~IntrCallback(){};
-
-YADE_PLUGIN((IntrCallback)
-	#ifdef YADE_BODY_CALLBACK
-		(BodyCallback)
-	#endif
-);

=== modified file 'pkg/common/Callbacks.hpp'
--- pkg/common/Callbacks.hpp	2014-07-03 17:20:40 +0000
+++ pkg/common/Callbacks.hpp	2014-07-21 09:09:14 +0000
@@ -9,7 +9,7 @@
 
 class IntrCallback: public Serializable{
 	public:
-	virtual ~IntrCallback(); // vtable
+	virtual ~IntrCallback() {}; // vtable
 	typedef void(*FuncPtr)(IntrCallback*,Interaction*);
 	// should be set at every step by InteractionLoop
 	Scene* scene;
@@ -26,7 +26,7 @@
 #ifdef YADE_BODY_CALLBACKS
 	class BodyCallback: public Serializable{
 		public:
-		virtual ~BodyCallback(); // vtable
+		virtual ~BodyCallback() {}; // vtable
 		typedef void(*FuncPtr)(BodyCallback*,Body*);
 		// set at every step, before stepInit() is called
 		Scene* scene;

=== removed file 'pkg/common/CylScGeom6D.cpp'
--- pkg/common/CylScGeom6D.cpp	2012-04-10 19:19:27 +0000
+++ pkg/common/CylScGeom6D.cpp	1970-01-01 00:00:00 +0000
@@ -1,24 +0,0 @@
-#include "CylScGeom6D.hpp"
-#include<yade/core/Omega.hpp>
-#include<yade/core/Scene.hpp>
-
-CylScGeom::~CylScGeom() {}
-CylScGeom6D::~CylScGeom6D() {}
-
-
-
-void CylScGeom6D::precomputeRotations(const State& rbp1, const State& rbp2, bool isNew, bool creep) {
-    initRotations(rbp1,rbp2);
-}
-
-void CylScGeom6D::initRotations(const State& state1, const State& state2)
-{
-    initialOrientation1	= state1.ori;
-    initialOrientation2	= state2.ori;
-    twist=0;
-    bending=Vector3r::Zero();
-    twistCreep=Quaternionr(1.0,0.0,0.0,0.0);
-}
-
-YADE_PLUGIN((CylScGeom6D)(CylScGeom));
-

=== modified file 'pkg/common/CylScGeom6D.hpp'
--- pkg/common/CylScGeom6D.hpp	2014-05-06 15:32:52 +0000
+++ pkg/common/CylScGeom6D.hpp	2014-07-21 09:09:14 +0000
@@ -10,7 +10,7 @@
     State fictiousState;
 // 		shared_ptr<Interaction> duplicate;
 
-    virtual ~CylScGeom ();
+    virtual ~CylScGeom () {};
     YADE_CLASS_BASE_DOC_ATTRS_CTOR(CylScGeom,ScGeom,"Geometry of a cylinder-sphere contact.",
                                    ((bool,onNode,false,,"contact on node?"))
                                    ((int,isDuplicate,0,,"this flag is turned true (1) automatically if the contact is shared between two chained cylinders. A duplicated interaction will be skipped once by the constitutive law, so that only one contact at a time is effective. If isDuplicate=2, it means one of the two duplicates has no longer geometric interaction, and should be erased by the constitutive laws."))
@@ -28,9 +28,17 @@
 
 class CylScGeom6D: public ScGeom6D {
 public:
-    virtual ~CylScGeom6D();
-    void precomputeRotations(const State& rbp1, const State& rbp2, bool isNew, bool creep=false);
-    void initRotations(const State& rbp1, const State& rbp2);
+    virtual ~CylScGeom6D() {};
+    void precomputeRotations(const State& rbp1, const State& rbp2, bool isNew, bool creep=false) {
+      initRotations(rbp1,rbp2);
+    }
+    void initRotations(const State& rbp1, const State& rbp2){
+      initialOrientation1 = rbp1.ori;
+      initialOrientation2 = rbp2.ori;
+      twist=0;
+      bending=Vector3r::Zero();
+      twistCreep=Quaternionr(1.0,0.0,0.0,0.0);
+    }
     State fictiousState;
     YADE_CLASS_BASE_DOC_ATTRS_INIT_CTOR_PY(CylScGeom6D,ScGeom6D,"Class representing :yref:`geometry<IGeom>` of two :yref:`bodies<Body>` in contact. The contact has 6 DOFs (normal, 2×shear, twist, 2xbending) and uses :yref:`ScGeom` incremental algorithm for updating shear.",
                                            ((bool,onNode,false,,"contact on node?"))

=== removed file 'pkg/common/FieldApplier.cpp'
--- pkg/common/FieldApplier.cpp	2010-11-07 11:46:20 +0000
+++ pkg/common/FieldApplier.cpp	1970-01-01 00:00:00 +0000
@@ -1,5 +0,0 @@
-#include<yade/pkg/common/FieldApplier.hpp>
-#include<stdexcept>
-void FieldApplier::action(){ throw std::runtime_error("FieldApplier must not be used in simulations directly (FieldApplier::action called)."); }
-YADE_PLUGIN((FieldApplier));
-

=== modified file 'pkg/common/FieldApplier.hpp'
--- pkg/common/FieldApplier.hpp	2010-11-13 21:11:39 +0000
+++ pkg/common/FieldApplier.hpp	2014-07-21 09:09:14 +0000
@@ -1,7 +1,11 @@
 #pragma once
-#include<yade/core/GlobalEngine.hpp>
+#include <yade/core/GlobalEngine.hpp>
+#include <stdexcept>
+
 class FieldApplier: public GlobalEngine{
-	virtual void action();
+	virtual void action() {
+		throw std::runtime_error("FieldApplier must not be used in simulations directly (FieldApplier::action called).");
+	}
 	YADE_CLASS_BASE_DOC_ATTRS(FieldApplier,GlobalEngine,"Base for engines applying force files on particles. Not to be used directly.",
 		((int,fieldWorkIx,-1,(Attr::hidden|Attr::noSave),"Index for the work done by this field, if tracking energies."))
 	);

=== removed file 'pkg/common/ForceResetter.cpp'
--- pkg/common/ForceResetter.cpp	2013-03-06 17:30:45 +0000
+++ pkg/common/ForceResetter.cpp	1970-01-01 00:00:00 +0000
@@ -1,10 +0,0 @@
-#include<yade/pkg/common/ForceResetter.hpp>
-#include<yade/core/Scene.hpp>
-
-YADE_PLUGIN((ForceResetter));
-
-void ForceResetter::action(){
-	scene->forces.reset(scene->iter);
-	if(scene->trackEnergy) scene->energy->resetResettables();
-}
-

=== modified file 'pkg/common/ForceResetter.hpp'
--- pkg/common/ForceResetter.hpp	2010-10-29 10:12:44 +0000
+++ pkg/common/ForceResetter.hpp	2014-07-21 09:09:14 +0000
@@ -1,11 +1,15 @@
 #pragma once
 
 #include<yade/core/GlobalEngine.hpp>
+#include<yade/core/Scene.hpp>
 
 class Scene;
 class ForceResetter: public GlobalEngine{
 	public:
-		virtual void action();
+		virtual void action() {
+			scene->forces.reset(scene->iter);
+			if(scene->trackEnergy) scene->energy->resetResettables();
+		}
 	YADE_CLASS_BASE_DOC(ForceResetter,GlobalEngine,"Reset all forces stored in Scene::forces (``O.forces`` in python). Typically, this is the first engine to be run at every step. In addition, reset those energies that should be reset, if energy tracing is enabled.");
 };
 REGISTER_SERIALIZABLE(ForceResetter);

=== modified file 'pkg/common/MatchMaker.cpp'
--- pkg/common/MatchMaker.cpp	2014-07-03 17:20:40 +0000
+++ pkg/common/MatchMaker.cpp	2014-07-21 09:09:14 +0000
@@ -1,9 +1,33 @@
 // 2010 © Václav Šmilauer <eudoxos@xxxxxxxx>
 
-#include<yade/pkg/common/MatchMaker.hpp>
+#include <yade/pkg/common/MatchMaker.hpp>
 
 YADE_PLUGIN((MatchMaker));
-MatchMaker::~MatchMaker(){}
+
+
+// =======================================================
+// Some plugins from removed CPP-fiels
+#include <yade/pkg/common/TorqueEngine.hpp>
+#include <yade/pkg/common/ForceResetter.hpp>
+#include <yade/pkg/common/FieldApplier.hpp>
+#include <yade/pkg/common/Callbacks.hpp>
+#include <yade/pkg/common/BoundaryController.hpp>
+#include <yade/pkg/common/NormShearPhys.hpp>
+#include <yade/pkg/common/Recorder.hpp>
+#include <yade/pkg/common/CylScGeom6D.hpp>
+#include <yade/pkg/common/Box.hpp>
+#include <yade/pkg/common/StepDisplacer.hpp>
+
+YADE_PLUGIN((IntrCallback)
+	#ifdef YADE_BODY_CALLBACK
+		(BodyCallback)
+	#endif
+);
+YADE_PLUGIN((ForceResetter)(TorqueEngine)(FieldApplier)(BoundaryController)
+            (NormPhys)(NormShearPhys)(Recorder)(CylScGeom6D)(CylScGeom)(Box)
+            (StepDisplacer));
+
+// =======================================================
 
 Real MatchMaker::operator()(int id1, int id2, Real val1, Real val2) const {
 	FOREACH(const Vector3r& m, matches){

=== modified file 'pkg/common/MatchMaker.hpp'
--- pkg/common/MatchMaker.hpp	2014-07-03 17:20:40 +0000
+++ pkg/common/MatchMaker.hpp	2014-07-21 09:09:14 +0000
@@ -24,7 +24,7 @@
 		bool fbNeedsValues;
 	#endif 
 	public:
-		virtual ~MatchMaker();
+		virtual ~MatchMaker() {};
 		MatchMaker(std::string _algo): algo(_algo){ postLoad(*this); }
 		MatchMaker(Real _val): algo("val"), val(_val){ postLoad(*this); }
 		Real computeFallback(Real val1, Real val2) const ;

=== removed file 'pkg/common/NormShearPhys.cpp'
--- pkg/common/NormShearPhys.cpp	2010-10-13 16:23:08 +0000
+++ pkg/common/NormShearPhys.cpp	1970-01-01 00:00:00 +0000
@@ -1,8 +0,0 @@
-#include"NormShearPhys.hpp"
-YADE_PLUGIN((NormPhys)(NormShearPhys));
-/* At least one virtual function must be in the shared object; let's put empty desctructors here
- * Otherwise downcasting via dynamic_cast will not work (no vtable in the shared lib?)
- */
-NormPhys::~NormPhys(){};
-NormShearPhys::~NormShearPhys(){};
-

=== modified file 'pkg/common/NormShearPhys.hpp'
--- pkg/common/NormShearPhys.hpp	2012-02-14 16:51:38 +0000
+++ pkg/common/NormShearPhys.hpp	2014-07-21 09:09:14 +0000
@@ -6,7 +6,7 @@
 
 class NormPhys:public IPhys {
 	public:
-		virtual ~NormPhys();
+		virtual ~NormPhys() {};
 	YADE_CLASS_BASE_DOC_ATTRS_CTOR(NormPhys,IPhys,"Abstract class for interactions that have normal stiffness.",
 		((Real,kn,0,,"Normal stiffness"))
 		((Vector3r,normalForce,Vector3r::Zero(),,"Normal force after previous step (in global coordinates).")),
@@ -18,7 +18,7 @@
 
 class NormShearPhys: public NormPhys{
 	public:
-		virtual ~NormShearPhys();
+		virtual ~NormShearPhys() {};
 	YADE_CLASS_BASE_DOC_ATTRS_CTOR(NormShearPhys,NormPhys,
 		"Abstract class for interactions that have shear stiffnesses, in addition to normal stiffness. This class is used in the PFC3d-style stiffness timestepper.",
 		((Real,ks,0,,"Shear stiffness"))

=== removed file 'pkg/common/Recorder.cpp'
--- pkg/common/Recorder.cpp	2014-07-02 16:11:24 +0000
+++ pkg/common/Recorder.cpp	1970-01-01 00:00:00 +0000
@@ -1,15 +0,0 @@
-// 2009 © Václav Šmilauer <eudoxos@xxxxxxxx>
-#include<yade/pkg/common/Recorder.hpp>
-YADE_PLUGIN((Recorder));
-
-Recorder::~Recorder(){}
-void Recorder::openAndCheck(){
-	assert(!out.is_open());
-	
-	std::string fileTemp = file;
-	if (addIterNum) fileTemp+="-" + boost::lexical_cast<string>(scene->iter);
-	
-	if(fileTemp.empty()) throw ios_base::failure(__FILE__ ": Empty filename.");
-	out.open(fileTemp.c_str(), truncate ? fstream::trunc : fstream::app);
-	if(!out.good()) throw ios_base::failure(__FILE__ ": I/O error opening file `"+fileTemp+"'.");
-}

=== modified file 'pkg/common/Recorder.hpp'
--- pkg/common/Recorder.hpp	2014-07-03 17:20:40 +0000
+++ pkg/common/Recorder.hpp	2014-07-21 09:09:14 +0000
@@ -2,12 +2,21 @@
 #pragma once 
 #include<yade/pkg/common/PeriodicEngines.hpp>
 class Recorder: public PeriodicEngine{
-	void openAndCheck();
+	void openAndCheck() {
+		assert(!out.is_open());
+		
+		std::string fileTemp = file;
+		if (addIterNum) fileTemp+="-" + boost::lexical_cast<string>(scene->iter);
+		
+		if(fileTemp.empty()) throw ios_base::failure(__FILE__ ": Empty filename.");
+		out.open(fileTemp.c_str(), truncate ? fstream::trunc : fstream::app);
+		if(!out.good()) throw ios_base::failure(__FILE__ ": I/O error opening file `"+fileTemp+"'.");
+	}
 	protected:
 		//! stream object that derived engines should write to
 		std::ofstream out;
 	public:
-		virtual ~Recorder(); // vtable
+		virtual ~Recorder() {};
 		virtual bool isActivated(){
 			if(PeriodicEngine::isActivated()){
 				if(!out.is_open()) openAndCheck();

=== removed file 'pkg/common/StepDisplacer.cpp'
--- pkg/common/StepDisplacer.cpp	2010-12-21 12:19:50 +0000
+++ pkg/common/StepDisplacer.cpp	1970-01-01 00:00:00 +0000
@@ -1,24 +0,0 @@
-// 2008 © Václav Šmilauer <eudoxos@xxxxxxxx> 
-#include"StepDisplacer.hpp"
-#include<yade/core/State.hpp>
-#include<yade/core/Scene.hpp>
-CREATE_LOGGER(StepDisplacer);
-YADE_PLUGIN((StepDisplacer));
-
-void StepDisplacer::action(){
-	FOREACH(Body::id_t id, ids){
-		const shared_ptr<Body>& b=Body::byId(id,scene);
-		if(setVelocities){
-			const Real& dt=scene->dt;
-			b->state->vel=mov/dt;
-			AngleAxisr aa(rot); aa.axis().normalize();
-			b->state->angVel=aa.axis()*aa.angle()/dt;
-			LOG_DEBUG("Angular velocity set to "<<aa.axis()*aa.angle()/dt<<". Axis="<<aa.axis()<<", angle="<<aa.angle());
-		}
-		if(!setVelocities){
-			b->state->pos+=mov;
-			b->state->ori=rot*b->state->ori;
-		}
-	}
-}
-

=== modified file 'pkg/common/StepDisplacer.hpp'
--- pkg/common/StepDisplacer.hpp	2011-02-21 14:45:36 +0000
+++ pkg/common/StepDisplacer.hpp	2014-07-21 09:09:14 +0000
@@ -1,11 +1,27 @@
 // 2008 © Václav Šmilauer <eudoxos@xxxxxxxx> 
 #pragma once
-
 #include<yade/core/PartialEngine.hpp>
+#include<yade/core/State.hpp>
+#include<yade/core/Scene.hpp>
 
 class StepDisplacer: public PartialEngine {
 	public:
-		virtual void action();
+		virtual void action() {
+			FOREACH(Body::id_t id, ids){
+			const shared_ptr<Body>& b=Body::byId(id,scene);
+			if(setVelocities){
+				const Real& dt=scene->dt;
+				b->state->vel=mov/dt;
+				AngleAxisr aa(rot); aa.axis().normalize();
+				b->state->angVel=aa.axis()*aa.angle()/dt;
+				LOG_DEBUG("Angular velocity set to "<<aa.axis()*aa.angle()/dt<<". Axis="<<aa.axis()<<", angle="<<aa.angle());
+			}
+			if(!setVelocities){
+				b->state->pos+=mov;
+				b->state->ori=rot*b->state->ori;
+			}
+		}
+	}
 	YADE_CLASS_BASE_DOC_ATTRS(StepDisplacer,PartialEngine,"Apply generalized displacement (displacement or rotation) stepwise on subscribed bodies. Could be used for purposes of contact law tests (by moving one sphere compared to another), but in this case, see rather :yref:`LawTester`",
 		((Vector3r,mov,Vector3r::Zero(),,"Linear displacement step to be applied per iteration, by addition to :yref:`State.pos`."))
 		((Quaternionr,rot,Quaternionr::Identity(),,"Rotation step to be applied per iteration (via rotation composition with :yref:`State.ori`)."))
@@ -14,5 +30,3 @@
 	DECLARE_LOGGER;
 };
 REGISTER_SERIALIZABLE(StepDisplacer);
-	
-

=== removed file 'pkg/common/TorqueEngine.cpp'
--- pkg/common/TorqueEngine.cpp	2010-10-13 16:23:08 +0000
+++ pkg/common/TorqueEngine.cpp	1970-01-01 00:00:00 +0000
@@ -1,12 +0,0 @@
-#include"TorqueEngine.hpp"
-#include<yade/core/Scene.hpp>
-
-void TorqueEngine::action(){
-	FOREACH(const Body::id_t id, ids){
-		// check that body really exists?
-		scene->forces.addTorque(id,moment);
-	}
-}
-
-YADE_PLUGIN((TorqueEngine));
-

=== modified file 'pkg/common/TorqueEngine.hpp'
--- pkg/common/TorqueEngine.hpp	2010-10-13 16:23:08 +0000
+++ pkg/common/TorqueEngine.hpp	2014-07-21 09:09:14 +0000
@@ -8,11 +8,17 @@
 
 #pragma once
 
-#include<yade/core/PartialEngine.hpp>
+#include <yade/core/PartialEngine.hpp>
+#include <yade/core/Scene.hpp>
 
 class TorqueEngine: public PartialEngine{
 	public:
-		virtual void action();
+		virtual void action() {
+			FOREACH(const Body::id_t id, ids){
+			// check that body really exists?
+			scene->forces.addTorque(id,moment);
+		}
+	}
 	YADE_CLASS_BASE_DOC_ATTRS(TorqueEngine,PartialEngine,"Apply given torque (momentum) value at every subscribed particle, at every step.",
 		((Vector3r,moment,Vector3r::Zero(),,"Torque value to be applied."))
 	);

=== removed file 'pkg/dem/DemXDofGeom.cpp'
--- pkg/dem/DemXDofGeom.cpp	2013-08-29 10:30:31 +0000
+++ pkg/dem/DemXDofGeom.cpp	1970-01-01 00:00:00 +0000
@@ -1,3 +0,0 @@
-#include"DemXDofGeom.hpp"
-YADE_PLUGIN((GenericSpheresContact));
-GenericSpheresContact::~GenericSpheresContact(){}

=== modified file 'pkg/dem/DemXDofGeom.hpp'
--- pkg/dem/DemXDofGeom.hpp	2013-08-29 10:30:31 +0000
+++ pkg/dem/DemXDofGeom.hpp	2014-07-21 09:09:14 +0000
@@ -16,6 +16,6 @@
 	);
 	REGISTER_CLASS_INDEX(GenericSpheresContact,IGeom);
 
-	virtual ~GenericSpheresContact(); // vtable
+	virtual ~GenericSpheresContact() {};
 };
 REGISTER_SERIALIZABLE(GenericSpheresContact);

=== modified file 'pkg/dem/DomainLimiter.cpp'
--- pkg/dem/DomainLimiter.cpp	2014-07-03 07:16:58 +0000
+++ pkg/dem/DomainLimiter.cpp	2014-07-21 09:09:14 +0000
@@ -1,7 +1,8 @@
 #include<yade/pkg/dem/DomainLimiter.hpp>
+#include<yade/pkg/dem/DemXDofGeom.hpp>
 #include<yade/pkg/dem/Shop.hpp>
 
-YADE_PLUGIN((DomainLimiter)(LawTester)
+YADE_PLUGIN((DomainLimiter)(LawTester)(GenericSpheresContact)
 	#ifdef YADE_OPENGL
 		(GlExtra_LawTester)(GlExtra_OctreeCubes)
 	#endif