yade-dev team mailing list archive
-
yade-dev team
-
Mailing list archive
-
Message #04884
[Branch ~yade-dev/yade/trunk] Rev 2292: 1. Remove dem6dof related classes
------------------------------------------------------------
revno: 2292
committer: Václav Šmilauer <eudoxos@xxxxxxxx>
branch nick: trunk
timestamp: Wed 2010-06-16 18:39:17 +0200
message:
1. Remove dem6dof related classes
2. add a few more publications to the bibtex db
modified:
debian/control-template
doc/publications.bib
pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.cpp
pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.hpp
pkg/dem/DataClass/InteractionGeometry/DemXDofGeom.cpp
pkg/dem/DataClass/InteractionGeometry/DemXDofGeom.hpp
pkg/dem/Engine/GlobalEngine/ElasticContactLaw.cpp
pkg/dem/Engine/GlobalEngine/ElasticContactLaw.hpp
py/utils.py
scripts/test/periodic-shear.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
=== modified file 'debian/control-template'
--- debian/control-template 2010-06-13 21:28:46 +0000
+++ debian/control-template 2010-06-16 16:39:17 +0000
@@ -2,7 +2,7 @@
Section: x11
Priority: optional
Maintainer: Václav Šmilauer <eudoxos@xxxxxxxx>
-Build-Depends: debhelper (>= 5), scons, libqt3-mt-dev, qt3-dev-tools, freeglut3-dev, libboost-dev (>=1.35), libboost-date-time-dev (>=1.35), libboost-filesystem-dev (>=1.35), libboost-thread-dev (>=1.35), libboost-regex-dev (>=1.35), libboost-python-dev (>=1.35), libboost-iostreams-dev (>=1.35), libboost-program-options-dev, libboost-serialization-dev, liblog4cxx9-dev | liblog4cxx10-dev, docbook-to-man, ipython, libsqlite3-dev, libgts-dev, python-numpy, g++(>>4.0), libvtk5-dev, libgl1-mesa-dev, gdb, ipython, python-matplotlib, python-tk, libeigen2-dev @', libqglviewer-qt3-dev' if DISTRIBUTION!='hardy' else ''@ @', binutils-gold' if DISTRIBUTION not in ('hardy','intrepid','jaunty','lenny') else ''@ @', texlive-latex-recommended, texlive-latex-extra, lmodern, texlive-pictures, texlive-xetex, python-sphinx, python-bibtex' if DISTRIBUTION not in ('hardy','intrepid','jaunty','lenny') else ''@
+Build-Depends: debhelper (>= 5), scons, libqt3-mt-dev, qt3-dev-tools, freeglut3-dev, libboost-dev (>=1.35), libboost-date-time-dev (>=1.35), libboost-filesystem-dev (>=1.35), libboost-thread-dev (>=1.35), libboost-regex-dev (>=1.35), libboost-python-dev (>=1.35), libboost-iostreams-dev (>=1.35), libboost-program-options-dev, libboost-serialization-dev, liblog4cxx9-dev | liblog4cxx10-dev, docbook-to-man, ipython, libsqlite3-dev, libgts-dev, python-numpy, g++(>>4.0), libvtk5-dev, libgl1-mesa-dev, gdb, ipython, python-matplotlib, python-tk, libeigen2-dev @', libqglviewer-qt3-dev' if DISTRIBUTION!='hardy' else ''@ @', binutils-gold' if DISTRIBUTION not in ('hardy','intrepid','jaunty','lenny') else ''@ @', texlive-latex-recommended, texlive-latex-extra, lmodern, texlive-pictures, texlive-xetex, python-sphinx, python-bibtex, graphviz, dvipng' if DISTRIBUTION not in ('hardy','intrepid','jaunty','lenny') else ''@
Standards-Version: 3.7.2
Package: yade@_VERSION@
=== modified file 'doc/publications.bib'
--- doc/publications.bib 2010-06-13 21:25:46 +0000
+++ doc/publications.bib 2010-06-16 16:39:17 +0000
@@ -1,7 +1,7 @@
@inproceedings{Stransky2010,
title={Macroscopic elastic properties of particle models},
author={Jan Stránský and Milan Jirásek and Václav Šmilauer},
- booktitle={Proceedings of the Interaction Conference on Modelling and Simulation 2010, Prague},
+ booktitle={Proceedings of the International Conference on Modelling and Simulation 2010, Prague},
year={2010},
month={June},
publisher={preprint},
@@ -87,3 +87,34 @@
pages={97-122},
}
+@article{Jerier2010,
+ author = {Jerier, Jean-François and Richefeu, Vincent and Imbault, Didier and Donzé, Fréderic-Victor},
+ doi = {10.1016/j.cma.2010.01.016},
+ issn = {00457825},
+ journal = {Computer Methods in Applied Mechanics and Engineering},
+ title = {Packing spherical discrete elements for large scale simulations},
+ year = {2010}
+}
+
+@article{Jerier2009,
+ author = {Jerier, Jean-François and Imbault, Didier and Donzé, Fréederic-Victor and Doremus, Pierre},
+ doi = {10.1007/s10035-008-0116-0},
+ journal = {Granular Matter},
+ year={2009},
+ volume={11},
+ title = {A geometric algorithm based on tetrahedral meshes to generate a dense polydisperse sphere packing},
+}
+
+@article{Harthong2009,
+ author = {Harthong, B. and Jerier, J. F. and Dorémus, P. and Imbault, D. and Donzé, F. V.},
+ doi = {10.1016/j.ijsolstr.2009.05.008},
+ issn = {00207683},
+ journal = {International Journal of Solids and Structures},
+ month = {September},
+ number = {18-19},
+ pages = {3357--3364},
+ title = {Modeling of high-density compaction of granular materials by the Discrete Element Method},
+ volume = {46},
+ year = {2009}
+}
+
=== modified file 'pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.cpp'
--- pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.cpp 2010-06-08 22:25:00 +0000
+++ pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.cpp 2010-06-16 16:39:17 +0000
@@ -2,11 +2,11 @@
#include<yade/pkg-common/Sphere.hpp>
#include<yade/core/Omega.hpp>
-YADE_PLUGIN((Dem3DofGeom_SphereSphere)(Dem6DofGeom_SphereSphere)
+YADE_PLUGIN((Dem3DofGeom_SphereSphere)
#ifdef YADE_OPENGL
(Gl1_Dem3DofGeom_SphereSphere)
#endif
- (Ig2_Sphere_Sphere_Dem3DofGeom)(Ig2_Sphere_Sphere_Dem6DofGeom));
+ (Ig2_Sphere_Sphere_Dem3DofGeom));
Dem3DofGeom_SphereSphere::~Dem3DofGeom_SphereSphere(){}
@@ -108,24 +108,6 @@
}
-Dem6DofGeom_SphereSphere::~Dem6DofGeom_SphereSphere(){}
-
-Vector3r Dem6DofGeom_SphereSphere::relRotVector() const{
- // FIXME: this is not correct, as it assumes normal will not change (?)
- Quaternionr relOri12=ori1.conjugate()*ori2;
- Quaternionr oriDiff=initRelOri12.conjugate()*relOri12;
- AngleAxisr aa(oriDiff);
- if(aa.angle()>Mathr::PI)aa.angle()-=Mathr::TWO_PI;
- // cerr<<axis<<";"<<angle<<";"<<ori1<<";"<<ori2<<";"<<oriDiff<<endl;
- return aa.angle()*aa.axis();
-}
-
-void Dem6DofGeom_SphereSphere::bendTwistAbs(Vector3r& bend, Real& twist){
- const Vector3r& relRot=relRotVector();
- twist=relRot.dot(normal);
- bend=relRot-twist*normal;
-}
-
#ifdef YADE_OPENGL
#include<yade/lib-opengl/OpenGLWrapper.hpp>
@@ -223,19 +205,3 @@
return true;
}
-CREATE_LOGGER(Ig2_Sphere_Sphere_Dem6DofGeom);
-bool Ig2_Sphere_Sphere_Dem6DofGeom::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){
- bool hadIntrGeom=c->interactionGeometry;
- if(!Ig2_Sphere_Sphere_Dem3DofGeom::go(cm1,cm2,state1,state2,shift2,force,c)) return false;
- // HACK: dem3dof functor creates a dem3dof instance; we need to copy-construct dem6dof from it instead
- // proper solution would be to factor out the computation part from the dem3dof to separate functions and call those from here, or make the dem3dof functor templated on the dem3dof/dem6dof
- if(!hadIntrGeom){
- assert(c->interactionGeometry);
- assert(c->interactionGeometry->getClassName()=="Dem3DofGeom_SphereSphere");
- const shared_ptr<Dem6DofGeom_SphereSphere> geom(new Dem6DofGeom_SphereSphere(*YADE_CAST<Dem3DofGeom_SphereSphere*>(c->interactionGeometry.get())));
- geom->initRelOri12=state1.ori.conjugate()*state2.ori;
- c->interactionGeometry=geom;
- //TRVAR3(geom->refLength,geom->contactPoint,geom->initRelOri12)
- }
- return true;
-}
=== modified file 'pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.hpp'
--- pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.hpp 2010-05-24 15:42:48 +0000
+++ pkg/dem/DataClass/InteractionGeometry/Dem3DofGeom_SphereSphere.hpp 2010-06-16 16:39:17 +0000
@@ -46,21 +46,6 @@
};
REGISTER_SERIALIZABLE(Dem3DofGeom_SphereSphere);
-class Dem6DofGeom_SphereSphere: public Dem3DofGeom_SphereSphere{
- public:
- // return relative rotation, composed of both bend and twist
- Vector3r relRotVector() const;
- virtual void bendTwistAbs(Vector3r& bend, Real& twist);
- virtual ~Dem6DofGeom_SphereSphere();
- Dem6DofGeom_SphereSphere(const Dem3DofGeom_SphereSphere& ss): Dem3DofGeom_SphereSphere(ss){ createIndex(); }
- YADE_CLASS_BASE_DOC_ATTRS_CTOR(Dem6DofGeom_SphereSphere,Dem3DofGeom_SphereSphere,"Class representing 2 sphere in contact which computes 6 degrees of freedom (normal, shear, bending and twisting deformation)",
- ((Quaternionr,initRelOri12,,"Initial relative orientation of spheres, used for bending and twisting computation.")),
- /*ctor*/ createIndex();
- );
- REGISTER_CLASS_INDEX(Dem6DofGeom_SphereSphere,Dem3DofGeom_SphereSphere);
-};
-REGISTER_SERIALIZABLE(Dem6DofGeom_SphereSphere);
-
#ifdef YADE_OPENGL
#include<yade/pkg-common/GLDrawFunctors.hpp>
class Gl1_Dem3DofGeom_SphereSphere:public GlInteractionGeometryFunctor{
@@ -93,13 +78,3 @@
};
REGISTER_SERIALIZABLE(Ig2_Sphere_Sphere_Dem3DofGeom);
-class Ig2_Sphere_Sphere_Dem6DofGeom: public Ig2_Sphere_Sphere_Dem3DofGeom{
- public:
- 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>&, const shared_ptr<Shape>&, const State&, const State&, const Vector3r& shift2, const bool& force, const shared_ptr<Interaction>&){throw runtime_error("goReverse on symmetric functor should never be called!");}
- FUNCTOR2D(Sphere,Sphere);
- DEFINE_FUNCTOR_ORDER_2D(Sphere,Sphere);
- YADE_CLASS_BASE_DOC(Ig2_Sphere_Sphere_Dem6DofGeom,Ig2_Sphere_Sphere_Dem3DofGeom,"Create/update contact of 2 spheres with 6 DOFs (:yref:`Dem6DofGeom_SphereSphere` instance) [experimental]");
- DECLARE_LOGGER;
-};
-REGISTER_SERIALIZABLE(Ig2_Sphere_Sphere_Dem6DofGeom);
=== modified file 'pkg/dem/DataClass/InteractionGeometry/DemXDofGeom.cpp'
--- pkg/dem/DataClass/InteractionGeometry/DemXDofGeom.cpp 2010-01-24 16:27:40 +0000
+++ pkg/dem/DataClass/InteractionGeometry/DemXDofGeom.cpp 2010-06-16 16:39:17 +0000
@@ -1,6 +1,5 @@
#include"DemXDofGeom.hpp"
-YADE_PLUGIN((GenericSpheresContact)(Dem3DofGeom)(Dem6DofGeom));
+YADE_PLUGIN((GenericSpheresContact)(Dem3DofGeom));
Real Dem3DofGeom::displacementN(){throw;}
Dem3DofGeom::~Dem3DofGeom(){}
-Dem6DofGeom::~Dem6DofGeom(){}
GenericSpheresContact::~GenericSpheresContact(){}
=== modified file 'pkg/dem/DataClass/InteractionGeometry/DemXDofGeom.hpp'
--- pkg/dem/DataClass/InteractionGeometry/DemXDofGeom.hpp 2010-05-20 18:39:42 +0000
+++ pkg/dem/DataClass/InteractionGeometry/DemXDofGeom.hpp 2010-06-16 16:39:17 +0000
@@ -55,16 +55,4 @@
};
REGISTER_SERIALIZABLE(Dem3DofGeom);
-#if 1
-/*! Abstract class for providing torsion and bending, in addition to inherited normal and shear strains. */
-class Dem6DofGeom: public Dem3DofGeom {
- public:
- //! rotations perpendicular to the normal (bending; in global coords) and parallel with the normal (torsion)
- virtual void bendTwistAbs(Vector3r& bend, Real& twist) {throw std::logic_error("bendTwistAbs not overridden in derived class.");};
- void bendTwistRel(Vector3r& bend, Real& twist){ bendTwistAbs(bend,twist); bend/=refLength; twist/=refLength;}
- virtual ~Dem6DofGeom();
- YADE_CLASS_BASE_DOC(Dem6DofGeom,Dem3DofGeom,"Abstract class for providing torsion and bending, in addition to inherited normal and shear strains.");
-};
-REGISTER_SERIALIZABLE(Dem6DofGeom);
-#endif
=== modified file 'pkg/dem/Engine/GlobalEngine/ElasticContactLaw.cpp'
--- pkg/dem/Engine/GlobalEngine/ElasticContactLaw.cpp 2010-05-28 09:35:32 +0000
+++ pkg/dem/Engine/GlobalEngine/ElasticContactLaw.cpp 2010-06-16 16:39:17 +0000
@@ -14,7 +14,7 @@
#include<yade/core/Scene.hpp>
#include<yade/core/Scene.hpp>
-YADE_PLUGIN((Law2_ScGeom_FrictPhys_Basic)(Law2_Dem3DofGeom_FrictPhys_Basic)(ElasticContactLaw)(Law2_Dem6DofGeom_FrictPhys_Beam));
+YADE_PLUGIN((Law2_ScGeom_FrictPhys_Basic)(Law2_Dem3DofGeom_FrictPhys_Basic)(ElasticContactLaw));
Real Law2_ScGeom_FrictPhys_Basic::Real0=0;
Real Law2_ScGeom_FrictPhys_Basic::getPlasticDissipation() {return (Real) plasticDissipation;}
@@ -137,20 +137,3 @@
applyForceAtContactPoint(phys->normalForce+trialFs,geom->contactPoint,contact->getId1(),geom->se31.position,contact->getId2(),geom->se32.position,scene);
}
-// same as elasticContactLaw, but using Dem3DofGeom
-void Law2_Dem6DofGeom_FrictPhys_Beam::go(shared_ptr<InteractionGeometry>& ig, shared_ptr<InteractionPhysics>& ip, Interaction* contact, Scene* scene){
- // normal & shear forces
- Dem6DofGeom* geom=static_cast<Dem6DofGeom*>(ig.get());
- FrictPhys* phys=static_cast<FrictPhys*>(ip.get());
- Real displN=geom->displacementN();
- phys->normalForce=phys->kn*displN*geom->normal;
- phys->shearForce=phys->ks*geom->displacementT();
- applyForceAtContactPoint(phys->normalForce+phys->shearForce,geom->contactPoint,contact->getId1(),geom->se31.position,contact->getId2(),geom->se32.position,scene);
- // bend&twist:
- Vector3r bend; Real twist;
- geom->bendTwistAbs(bend,twist);
- Vector3r tt=bend*phys->kn+geom->normal*twist*phys->kn;
- cerr<<twist<<";"<<bend<<endl;
- scene->forces.addTorque(contact->getId1(),tt);
- scene->forces.addTorque(contact->getId2(),-tt);
-}
=== modified file 'pkg/dem/Engine/GlobalEngine/ElasticContactLaw.hpp'
--- pkg/dem/Engine/GlobalEngine/ElasticContactLaw.hpp 2010-05-26 08:18:36 +0000
+++ pkg/dem/Engine/GlobalEngine/ElasticContactLaw.hpp 2010-06-16 16:39:17 +0000
@@ -51,15 +51,6 @@
};
REGISTER_SERIALIZABLE(Law2_Dem3DofGeom_FrictPhys_Basic);
-/* Class for demonstrating beam-like behavior of the contact (normal, shear, bend and twist) */
-class Law2_Dem6DofGeom_FrictPhys_Beam: public LawFunctor{
- public:
- virtual void go(shared_ptr<InteractionGeometry>& _geom, shared_ptr<InteractionPhysics>& _phys, Interaction* I, Scene*);
- FUNCTOR2D(Dem6DofGeom,FrictPhys);
- YADE_CLASS_BASE_DOC(Law2_Dem6DofGeom_FrictPhys_Beam,LawFunctor,"Class for demonstrating beam-like behavior of contact (normal, shear, bend and twist) [broken][experimental]");
-};
-REGISTER_SERIALIZABLE(Law2_Dem6DofGeom_FrictPhys_Beam);
-
class ElasticContactLaw : public GlobalEngine{
shared_ptr<Law2_ScGeom_FrictPhys_Basic> functor;
public :
=== modified file 'py/utils.py'
--- py/utils.py 2010-05-19 21:05:54 +0000
+++ py/utils.py 2010-06-16 16:39:17 +0000
@@ -323,7 +323,7 @@
if wallMask&32: ret+=doWall(E,H,G,F)
return ret
-def facetCylinder(center,radius,height,orientation=[1,0,0,0],segmentsNumber=10,wallMask=7,closed=1,**kw):
+def facetCylinder(center,radius,height,orientation=Quaternion.Identity,segmentsNumber=10,wallMask=7,closed=1,**kw):
"""
Create arbitrarily-aligned cylinder composed of facets, with given center, radius, height and orientation.
Return List of facets forming the cylinder;
@@ -367,10 +367,9 @@
Y=radius*math.sin(i)
P1.append(Vector3(X,Y,-height/2))
P2.append(Vector3(X,Y,+height/2))
- qTemp = Quaternion(Vector3(orientation[0],orientation[1],orientation[2]),orientation[3])
for i in range(0,len(P1)):
- P1[i]=qTemp.Rotate(P1[i])+Vector3(center[0],center[1],center[2])
- P2[i]=qTemp.Rotate(P2[i])+Vector3(center[0],center[1],center[2])
+ P1[i]=orientation*(P1[i])+Vector3(center[0],center[1],center[2])
+ P2[i]=orientation*(P2[i])+Vector3(center[0],center[1],center[2])
ret=[]
for i in range(2,len(P1)):
=== modified file 'scripts/test/periodic-shear.py'
--- scripts/test/periodic-shear.py 2010-01-10 09:09:32 +0000
+++ scripts/test/periodic-shear.py 2010-06-16 16:39:17 +0000
@@ -32,8 +32,7 @@
O.step()
O.saveTmp()
rdr=yade.qt.Renderer()
-#rdr['Body_bounding_volume']=True
-rdr['intrAllWire']=True
+rdr.intrAllWire=True
#from yade import log
#import yade.qt,time
#v=yade.qt.View()