Author: sega
Date: 2009-08-10 19:59:33 +0200 (Mon, 10 Aug 2009)
New Revision: 1935

Modified:
   trunk/examples/STLImporterTest.py
   trunk/examples/dynamic_simulation_tests/ringCundallDamping.py
   trunk/examples/dynamic_simulation_tests/ringSimpleViscoelastic.py
   trunk/examples/rod_penetration/model.py
   
trunk/pkg/dem/Engine/EngineUnit/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp
   trunk/py/utils.py
Log:
fixed and updated some examples in keeping with last modifications

Modified: trunk/examples/STLImporterTest.py
===================================================================
--- trunk/examples/STLImporterTest.py   2009-08-10 12:11:49 UTC (rev 1934)
+++ trunk/examples/STLImporterTest.py   2009-08-10 17:59:33 UTC (rev 1935)
@@ -15,8 +15,8 @@
 
 ## Spheres
 sphereRadius = 0.2
-#nbSpheres = (10,10,10)
-nbSpheres = (5,5,5)
+nbSpheres = (10,10,10)
+#nbSpheres = (5,5,5)
 for i in xrange(nbSpheres[0]):
     for j in xrange(nbSpheres[1]):
         for k in xrange(nbSpheres[2]):
@@ -65,5 +65,9 @@
        ## Apply kinematics to walls
        
RotationEngine(subscribedBodies=imported,rotationAxis=[0,0,1],rotateAroundZero=True,angularVelocity=0.5)
 ]
-O.saveTmp();
-O.step()
+
+from yade import qt
+#qt.Controller()
+qt.View()
+O.run()
+

Modified: trunk/examples/dynamic_simulation_tests/ringCundallDamping.py
===================================================================
--- trunk/examples/dynamic_simulation_tests/ringCundallDamping.py       
2009-08-10 12:11:49 UTC (rev 1934)
+++ trunk/examples/dynamic_simulation_tests/ringCundallDamping.py       
2009-08-10 17:59:33 UTC (rev 1935)
@@ -35,37 +35,48 @@
 
 ## Initializers 
 o.initializers=[
-       MetaEngine('BoundingVolumeMetaEngine',
-               [EngineUnit('InteractingSphere2AABB'),
-                       EngineUnit('InteractingFacet2AABB'),
-                       EngineUnit('MetaInteractingGeometry2AABB')]),
+       
BoundingVolumeMetaEngine([InteractingSphere2AABB(),InteractingFacet2AABB(),MetaInteractingGeometry2AABB()])
        ]
 
 ## Engines 
 o.engines=[
-       StandAloneEngine('PhysicalActionContainerReseter'),
-       MetaEngine('BoundingVolumeMetaEngine',[
-               EngineUnit('InteractingSphere2AABB'),
-               EngineUnit('InteractingFacet2AABB'),
-               EngineUnit('MetaInteractingGeometry2AABB')
+       ## Resets forces and momenta the act on bodies
+       BexResetter(),
+
+       ## Associates bounding volume to each body.
+       BoundingVolumeMetaEngine([
+               InteractingSphere2AABB(),
+               InteractingFacet2AABB(),
+               MetaInteractingGeometry2AABB()
        ]),
-       StandAloneEngine('PersistentSAPCollider'),
-       MetaEngine('InteractionGeometryMetaEngine',[
-               
EngineUnit('InteractingSphere2InteractingSphere4SpheresContactGeometry'),
-               
EngineUnit('InteractingFacet2InteractingSphere4SpheresContactGeometry')
+
+       ## Using bounding boxes find possible body collisions.
+       InsertionSortCollider(),
+
+       ## Create geometry information about each potential collision.
+       InteractionGeometryMetaEngine([
+               InteractingSphere2InteractingSphere4SpheresContactGeometry(),
+               InteractingFacet2InteractingSphere4SpheresContactGeometry()
        ]),
-       
MetaEngine('InteractionPhysicsMetaEngine',[EngineUnit('MacroMicroElasticRelationships')]),
-       StandAloneEngine('ElasticContactLaw'),
-       DeusExMachina('GravityEngine',{'gravity':[0,-9.81,0]}),
 
+       ## Create physical information about the interaction.
+       InteractionPhysicsMetaEngine([MacroMicroElasticRelationships()]),
+
+    ## Constitutive law
+       ElasticContactLaw(),
+
+       ## Apply gravity
+       GravityEngine(gravity=[0,-9.81,0]),
+
        ## NOTE: Non zero Cundall damping affected a dynamic simulation!
-       DeusExMachina('NewtonsDampedLaw',{'damping':0}),
+       NewtonsDampedLaw(damping=0.3),
 
+       ## Apply kinematics to walls
     ## angularVelocity = 0.73 rad/sec = 7 rpm
-    
DeusExMachina('RotationEngine',{'subscribedBodies':walls,'rotationAxis':[0,0,1],'rotateAroundZero':True,'angularVelocity':0.73}),
+       
RotationEngine(subscribedBodies=walls,rotationAxis=[0,0,1],rotateAroundZero=True,angularVelocity=0.73)
 ]
 
-o.miscParams=[Generic('GLDrawSphere',{'glutUse':True})]
+o.miscParams=[GLDrawSphere(glutUse=True)]
 
 for b in o.bodies:
     if b.shape.name=='Sphere':
@@ -78,5 +89,7 @@
 from yade import qt
 renderer=qt.Renderer()
 renderer['Body_wire']=True
-qt.Controller()
+#qt.Controller()
+qt.View()
+O.run()
 

Modified: trunk/examples/dynamic_simulation_tests/ringSimpleViscoelastic.py
===================================================================
--- trunk/examples/dynamic_simulation_tests/ringSimpleViscoelastic.py   
2009-08-10 12:11:49 UTC (rev 1934)
+++ trunk/examples/dynamic_simulation_tests/ringSimpleViscoelastic.py   
2009-08-10 17:59:33 UTC (rev 1935)
@@ -14,8 +14,8 @@
 es = 0.3
 
 ## Import wall's geometry
-p=utils.getViscoelasticFromSpheresInteraction(10e3,tc,en,es)
-walls = 
utils.import_stl_geometry('ring.stl',frictionAngle=frictionAngle,physParamsClass="SimpleViscoelasticBodyParameters",physParamsAttr={'kn':p['kn'],'cn':p['cn'],'ks':p['ks'],'cs':p['cs']})
+params=utils.getViscoelasticFromSpheresInteraction(10e3,tc,en,es)
+walls = 
utils.import_stl_geometry('ring.stl',frictionAngle=frictionAngle,physParamsClass="SimpleViscoelasticBodyParameters",**params)
 
 def 
fill_cylinder_with_spheres(sphereRadius,cylinderRadius,cylinderHeight,cylinderOrigin,cylinderSlope):
        spheresCount=0
@@ -40,45 +40,48 @@
 
 ## Initializers 
 o.initializers=[
-       MetaEngine('BoundingVolumeMetaEngine',
-               [EngineUnit('InteractingSphere2AABB'),
-                       EngineUnit('InteractingFacet2AABB'),
-                       EngineUnit('MetaInteractingGeometry2AABB')]),
+       ## Create bounding boxes. They are needed to zoom the 3d view properly 
before we start the simulation.
+       
BoundingVolumeMetaEngine([InteractingSphere2AABB(),InteractingFacet2AABB(),MetaInteractingGeometry2AABB()])
        ]
 
 ## Engines 
 o.engines=[
+       ## Resets forces and momenta the act on bodies
+       BexResetter(),
 
-       StandAloneEngine('PhysicalActionContainerReseter'),
-
-       MetaEngine('BoundingVolumeMetaEngine',[
-               EngineUnit('InteractingSphere2AABB'),
-               EngineUnit('InteractingFacet2AABB'),
-               EngineUnit('MetaInteractingGeometry2AABB')
+       ## Associates bounding volume to each body.
+       BoundingVolumeMetaEngine([
+               InteractingSphere2AABB(),
+               InteractingFacet2AABB(),
+               MetaInteractingGeometry2AABB()
        ]),
 
-       StandAloneEngine('PersistentSAPCollider'),
+       ## Using bounding boxes find possible body collisions.
+       InsertionSortCollider(),
 
-       MetaEngine('InteractionGeometryMetaEngine',[
-               
EngineUnit('InteractingSphere2InteractingSphere4SpheresContactGeometry'),
-               
EngineUnit('InteractingFacet2InteractingSphere4SpheresContactGeometry')
+       ## Create geometry information about each potential collision.
+       InteractionGeometryMetaEngine([
+               InteractingSphere2InteractingSphere4SpheresContactGeometry(),
+               InteractingFacet2InteractingSphere4SpheresContactGeometry()
        ]),
 
-       
MetaEngine('InteractionPhysicsMetaEngine',[EngineUnit('SimpleViscoelasticRelationships')]),
+       ## Create physical information about the interaction.
+       InteractionPhysicsMetaEngine([SimpleViscoelasticRelationships()]),
 
     ## Constitutive law
-       
MetaEngine('ConstitutiveLawDispatcher',[EngineUnit('ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw')]),
+       
ConstitutiveLawDispatcher([ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw()]),
 
-       DeusExMachina('GravityEngine',{'gravity':[0,-9.81,0]}),
-
+       ## Apply gravity
+       GravityEngine(gravity=[0,-9.81,0]),
        ## Cundall damping must been disabled!
-       DeusExMachina('NewtonsDampedLaw',{'damping':0}),
+       NewtonsDampedLaw(damping=0),
+       ## Apply kinematics to walls
+    ## angularVelocity = 0.73 rad/sec = 7 rpm
+       
RotationEngine(subscribedBodies=walls,rotationAxis=[0,0,1],rotateAroundZero=True,angularVelocity=0.73)
 
-    ## angularVelocity = 0.73 rad/sec = 7 rpm
-    
DeusExMachina('RotationEngine',{'subscribedBodies':walls,'rotationAxis':[0,0,1],'rotateAroundZero':True,'angularVelocity':0.73}),
 ]
 
-o.miscParams=[Generic('GLDrawSphere',{'glutUse':True})]
+o.miscParams=[GLDrawSphere(glutUse=True)]
 
 for b in o.bodies:
     if b.shape.name=='Sphere':
@@ -91,5 +94,7 @@
 from yade import qt
 renderer=qt.Renderer()
 renderer['Body_wire']=True
-qt.Controller()
+#qt.Controller()
+qt.View()
+O.run()
 

Modified: trunk/examples/rod_penetration/model.py
===================================================================
--- trunk/examples/rod_penetration/model.py     2009-08-10 12:11:49 UTC (rev 
1934)
+++ trunk/examples/rod_penetration/model.py     2009-08-10 17:59:33 UTC (rev 
1935)
@@ -45,35 +45,41 @@
 
 ## Initializers 
 o.initializers=[
-       MetaEngine('BoundingVolumeMetaEngine',[
-               EngineUnit('InteractingSphere2AABB'),
-               EngineUnit('InteractingFacet2AABB'),
-               EngineUnit('MetaInteractingGeometry2AABB')]),
+       
BoundingVolumeMetaEngine([InteractingSphere2AABB(),InteractingFacet2AABB(),MetaInteractingGeometry2AABB()])
        ]
 
 ## Engines 
 o.engines=[
-       StandAloneEngine('PhysicalActionContainerReseter'),
-       MetaEngine('BoundingVolumeMetaEngine',[
-               EngineUnit('InteractingSphere2AABB'),
-               EngineUnit('InteractingFacet2AABB'),
-               EngineUnit('MetaInteractingGeometry2AABB')
+       ## Resets forces and momenta the act on bodies
+       BexResetter(),
+
+       ## Associates bounding volume to each body.
+       BoundingVolumeMetaEngine([
+               InteractingSphere2AABB(),
+               InteractingFacet2AABB(),
+               MetaInteractingGeometry2AABB()
        ]),
-       StandAloneEngine('PersistentSAPCollider'),
-       MetaEngine('InteractionGeometryMetaEngine',[
-               
EngineUnit('InteractingSphere2InteractingSphere4SpheresContactGeometry'),
-               
EngineUnit('InteractingFacet2InteractingSphere4SpheresContactGeometry',{'shrinkFactor':shrinkFactor})
+       ## Using bounding boxes find possible body collisions.
+       InsertionSortCollider(),
+       ## Create geometry information about each potential collision.
+       InteractionGeometryMetaEngine([
+               InteractingSphere2InteractingSphere4SpheresContactGeometry(),
+               InteractingFacet2InteractingSphere4SpheresContactGeometry()
        ]),
-       
MetaEngine('InteractionPhysicsMetaEngine',[EngineUnit('MacroMicroElasticRelationships')]),
-       StandAloneEngine('ElasticContactLaw'),
-       DeusExMachina('GravityEngine',{'gravity':[0,-9.81,0]}),
-       DeusExMachina('NewtonsDampedLaw',{'damping':0.3}),
+       ## Create physical information about the interaction.
+       InteractionPhysicsMetaEngine([MacroMicroElasticRelationships()]),
+    ## Constitutive law
+       ElasticContactLaw(),
+       ## Apply gravity
+       GravityEngine(gravity=[0,-9.81,0]),
+       ## Motion equation
+       NewtonsDampedLaw(damping=0.3),
        ## Apply kinematics to rod
-       
DeusExMachina('TranslationEngine',{'subscribedBodies':range(rod),'translationAxis':[0,-1,0],'velocity':0.075}),
+       
TranslationEngine(subscribedBodies=rod,translationAxis=[0,-1,0],velocity=0.075),
        ## Save force on rod
-       
StandAloneEngine('ForceRecorder',{'startId':0,'endId':rod-1,'outputFile':'force-'+mesh+'.dat','interval':50}),
  
+       
ForceRecorder(startId=0,endId=len(rod)-1,outputFile='force-'+mesh+'.dat',interval=50),
  
        ## Save positions
-       
StandAloneEngine('SQLiteRecorder',{'recorders':['se3'],'dbFile':'positions-'+mesh+'.sqlite','iterPeriod':100})
+       
SQLiteRecorder(recorders=['se3'],dbFile='positions-'+mesh+'.sqlite',iterPeriod=100)
 
 ]
 

Modified: 
trunk/pkg/dem/Engine/EngineUnit/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp
===================================================================
--- 
trunk/pkg/dem/Engine/EngineUnit/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp
   2009-08-10 12:11:49 UTC (rev 1934)
+++ 
trunk/pkg/dem/Engine/EngineUnit/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp
   2009-08-10 17:59:33 UTC (rev 1935)
@@ -19,6 +19,11 @@
        int id1 = I->getId1();
        int id2 = I->getId2();
        
+       if (geom->penetrationDepth<0) {
+               rootBody->interactions->requestErase(id1,id2);
+               return;
+       }
+
        shared_ptr<BodyContainer>& bodies = rootBody->bodies;
 
        RigidBodyParameters* de1 = 
YADE_CAST<RigidBodyParameters*>((*bodies)[id1]->physicalParameters.get());
@@ -51,7 +56,7 @@
        Vector3r shearVelocity                  = 
relativeVelocity-normalVelocity*geom->normal;
        shearForce                             -= 
(phys->ks*dt+phys->cs)*shearVelocity;
 
-       phys->normalForce = ( phys->kn * std::max(geom->penetrationDepth,(Real) 
0) - phys->cn * normalVelocity ) * geom->normal;
+       phys->normalForce = ( phys->kn * geom->penetrationDepth - phys->cn * 
normalVelocity ) * geom->normal;
        phys->prevNormal = geom->normal;
 
        Real maxFs = phys->normalForce.SquaredLength() * 
std::pow(phys->tangensOfFrictionAngle,2);

Modified: trunk/py/utils.py
===================================================================
--- trunk/py/utils.py   2009-08-10 12:11:49 UTC (rev 1934)
+++ trunk/py/utils.py   2009-08-10 17:59:33 UTC (rev 1935)
@@ -327,7 +327,7 @@
        imported=range(begin,begin+imp.number_of_facets)
        for i in imported:
                if not noInteractingGeometry:
-                       o.bodies[i].mold.postProcessAttributes()
+                       o.bodies[i].mold.postProcessAttributes(True)
                o.bodies[i].shape['diffuseColor']=color
        return imported
 


_______________________________________________
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

Reply via email to