Author: eudoxos
Date: 2009-08-13 11:01:41 +0200 (Thu, 13 Aug 2009)
New Revision: 1940
Modified:
trunk/lib/multimethods/DynLibDispatcher.hpp
trunk/pkg/dem/DataClass/InteractionGeometry/DemXDofGeom.hpp
trunk/pkg/dem/meta/ConcretePM.hpp
trunk/pkg/dem/meta/RockPM.hpp
Log:
1. Fix assertion is 2d dispatch code, add indices to RpmPhys, RpmMat, CpmPhys,
CpmMat (would break dispatching if using more classes derived from the same
base in the dispatch matrix)
Modified: trunk/lib/multimethods/DynLibDispatcher.hpp
===================================================================
--- trunk/lib/multimethods/DynLibDispatcher.hpp 2009-08-12 21:12:21 UTC (rev
1939)
+++ trunk/lib/multimethods/DynLibDispatcher.hpp 2009-08-13 09:01:41 UTC (rev
1940)
@@ -462,8 +462,12 @@
index2 = base2->getClassIndex();
assert( index1 >= 0 );
assert( index2 >= 0 );
+ #if 0
+ if((unsigned)index1>=callBacks.size())
cerr<<__FILE__<<":"<<__LINE__<<" FATAL: Index out of range for class
"<<base1->getClassName()<<" (index=="<<index1<<",
callBacks.size()=="<<callBacks.size()<<endl;
+ if((unsigned)index2>=callBacks[index2].size())
cerr<<__FILE__<<":"<<__LINE__<<" FATAL: Index out of range for class
"<<base2->getClassName()<<" (index=="<<index2<<",
callBacks[index1].size()=="<<callBacks[index1].size()<<endl;
+ #endif
assert((unsigned int)( index1 ) < callBacks.size());
- assert((unsigned int)( index2 ) < callBacks.size());
+ assert((unsigned int)( index2 ) <
callBacks[index1].size());
if(callBacks[index1][index2])
return true;
Modified: trunk/pkg/dem/DataClass/InteractionGeometry/DemXDofGeom.hpp
===================================================================
--- trunk/pkg/dem/DataClass/InteractionGeometry/DemXDofGeom.hpp 2009-08-12
21:12:21 UTC (rev 1939)
+++ trunk/pkg/dem/DataClass/InteractionGeometry/DemXDofGeom.hpp 2009-08-13
09:01:41 UTC (rev 1940)
@@ -32,7 +32,7 @@
//! reference radii of particles (for initial contact stiffness
computation)
Real &refR1, &refR2;
- Dem3DofGeom(): normal(GenericSpheresContact::normal),
refR1(GenericSpheresContact::refR1), refR2(GenericSpheresContact::refR2) {}
+ Dem3DofGeom(): normal(GenericSpheresContact::normal),
refR1(GenericSpheresContact::refR1), refR2(GenericSpheresContact::refR2) {
createIndex(); }
// API that needs to be implemented in derived classes
virtual Real displacementN();
@@ -50,6 +50,7 @@
Real slipToStrainTMax(Real strainTMax){return
slipToDisplacementTMax(strainTMax*refLength)/refLength;}
REGISTER_CLASS_AND_BASE(Dem3DofGeom,InteractionGeometry);
+ REGISTER_CLASS_INDEX(Dem3DofGeom,InteractionGeometry);
REGISTER_ATTRIBUTES(InteractionGeometry,(refLength)(normal)(contactPoint)(se31)(se32)(refR1)(refR2));
};
REGISTER_SERIALIZABLE(Dem3DofGeom);
Modified: trunk/pkg/dem/meta/ConcretePM.hpp
===================================================================
--- trunk/pkg/dem/meta/ConcretePM.hpp 2009-08-12 21:12:21 UTC (rev 1939)
+++ trunk/pkg/dem/meta/ConcretePM.hpp 2009-08-13 09:01:41 UTC (rev 1940)
@@ -72,6 +72,7 @@
CpmMat(): epsVolumetric(0.), numBrokenCohesive(0),
numContacts(0), normDmg(0.), epsPlBroken(0.), normEpsPl(0.) {createIndex();};
REGISTER_ATTRIBUTES(BodyMacroParameters, (epsVolumetric)
(numBrokenCohesive) (numContacts) (normDmg) (epsPlBroken) (normEpsPl));
REGISTER_CLASS_AND_BASE(CpmMat,BodyMacroParameters);
+ REGISTER_CLASS_INDEX(CpmMat,BodyMacroParameters);
};
REGISTER_SERIALIZABLE(CpmMat);
@@ -185,6 +186,7 @@
);
REGISTER_CLASS_AND_BASE(CpmPhys,NormalShearInteraction);
DECLARE_LOGGER;
+ REGISTER_CLASS_INDEX(CpmPhys,NormalShearInteraction);
};
REGISTER_SERIALIZABLE(CpmPhys);
Modified: trunk/pkg/dem/meta/RockPM.hpp
===================================================================
--- trunk/pkg/dem/meta/RockPM.hpp 2009-08-12 21:12:21 UTC (rev 1939)
+++ trunk/pkg/dem/meta/RockPM.hpp 2009-08-13 09:01:41 UTC (rev 1940)
@@ -65,6 +65,7 @@
(Brittleness)
(G_over_E));
REGISTER_CLASS_AND_BASE(RpmMat,BodyMacroParameters);
+ REGISTER_CLASS_INDEX(RpmMat,BodyMacroParameters);
};
REGISTER_SERIALIZABLE(RpmMat);
@@ -119,5 +120,6 @@
(lengthMaxTension)
);
REGISTER_CLASS_AND_BASE(RpmPhys,NormalShearInteraction);
+ REGISTER_CLASS_INDEX(RpmPhys,NormalShearInteraction);
};
REGISTER_SERIALIZABLE(RpmPhys);
_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to : [email protected]
Unsubscribe : https://launchpad.net/~yade-dev
More help : https://help.launchpad.net/ListHelp
_______________________________________________
yade-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/yade-dev