Author: sega
Date: 2009-03-12 18:27:35 +0100 (Thu, 12 Mar 2009)
New Revision: 1718

Added:
   
trunk/pkg/dem/Engine/EngineUnit/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp
   
trunk/pkg/dem/Engine/EngineUnit/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp
Removed:
   
trunk/pkg/dem/Engine/EngineUnit/Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp
   
trunk/pkg/dem/Engine/EngineUnit/Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp
   trunk/pkg/dem/Engine/StandAloneEngine/SimpleViscoelasticContactLaw.cpp
   trunk/pkg/dem/Engine/StandAloneEngine/SimpleViscoelasticContactLaw.hpp
Modified:
   trunk/examples/STLImporterTest.py
   trunk/examples/dynamic_simulation_tests/ringSimpleViscoelastic.py
   trunk/pkg/common/DataClass/PhysicalParameters/RigidBodyParameters.cpp
   trunk/pkg/common/DataClass/PhysicalParameters/RigidBodyParameters.hpp
   trunk/pkg/common/Engine/DeusExMachina/RotationEngine.cpp
   trunk/pkg/dem/DataClass/InteractionGeometry/SpheresContactGeometry.cpp
   trunk/pkg/dem/DataClass/InteractionGeometry/SpheresContactGeometry.hpp
   trunk/pkg/dem/Engine/StandAloneEngine/ElasticContactLaw.cpp
   trunk/pkg/dem/PreProcessor/MembraneTest.cpp
   trunk/pkg/dem/PreProcessor/TestSimpleViscoelastic.cpp
   trunk/pkg/dem/SConscript
Log:
1. Remove zeroPoint
2. Add prefix ef2_ to Spheres_Viscoelastic_SimpleViscoelasticContactLaw


Modified: trunk/examples/STLImporterTest.py
===================================================================
--- trunk/examples/STLImporterTest.py   2009-03-10 13:22:50 UTC (rev 1717)
+++ trunk/examples/STLImporterTest.py   2009-03-12 17:27:35 UTC (rev 1718)
@@ -64,7 +64,7 @@
        ## Create physical information about the interaction.
        
MetaEngine('InteractionPhysicsMetaEngine',[EngineUnit('SimpleViscoelasticRelationships')]),
     ## Constitutive law
-       
MetaEngine('ConstitutiveLawDispatcher',[EngineUnit('Spheres_Viscoelastic_SimpleViscoelasticContactLaw')]),
+       
MetaEngine('ConstitutiveLawDispatcher',[EngineUnit('ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw')]),
        ## Apply gravity
        DeusExMachina('GravityEngine',{'gravity':[0,-9.81,0]}),
        ## Cundall damping must been disabled!

Modified: trunk/examples/dynamic_simulation_tests/ringSimpleViscoelastic.py
===================================================================
--- trunk/examples/dynamic_simulation_tests/ringSimpleViscoelastic.py   
2009-03-10 13:22:50 UTC (rev 1717)
+++ trunk/examples/dynamic_simulation_tests/ringSimpleViscoelastic.py   
2009-03-12 17:27:35 UTC (rev 1718)
@@ -68,9 +68,7 @@
        
MetaEngine('InteractionPhysicsMetaEngine',[EngineUnit('SimpleViscoelasticRelationships')]),
 
     ## Constitutive law
-       
MetaEngine('ConstitutiveLawDispatcher',[EngineUnit('Spheres_Viscoelastic_SimpleViscoelasticContactLaw')]),
-    ## or InteractionSolver 
-       #StandAloneEngine('SimpleViscoelasticContactLaw'),
+       
MetaEngine('ConstitutiveLawDispatcher',[EngineUnit('ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw')]),
 
        DeusExMachina('GravityEngine',{'gravity':[0,-9.81,0]}),
 

Modified: trunk/pkg/common/DataClass/PhysicalParameters/RigidBodyParameters.cpp
===================================================================
--- trunk/pkg/common/DataClass/PhysicalParameters/RigidBodyParameters.cpp       
2009-03-10 13:22:50 UTC (rev 1717)
+++ trunk/pkg/common/DataClass/PhysicalParameters/RigidBodyParameters.cpp       
2009-03-12 17:27:35 UTC (rev 1718)
@@ -16,7 +16,6 @@
        acceleration = Vector3r(0,0,0);
        angularAcceleration = Vector3r(0,0,0);
        angularVelocity=Vector3r(0,0,0);
-       zeroPoint=Vector3r(0,0,0);
 }
 
 RigidBodyParameters::~RigidBodyParameters()
@@ -28,7 +27,6 @@
        ParticleParameters::registerAttributes();
        REGISTER_ATTRIBUTE(inertia);
        REGISTER_ATTRIBUTE(angularVelocity);
-//     REGISTER_ATTRIBUTE(zeroPoint); // must be set by kinematic Engine
 }
 
 YADE_PLUGIN();

Modified: trunk/pkg/common/DataClass/PhysicalParameters/RigidBodyParameters.hpp
===================================================================
--- trunk/pkg/common/DataClass/PhysicalParameters/RigidBodyParameters.hpp       
2009-03-10 13:22:50 UTC (rev 1717)
+++ trunk/pkg/common/DataClass/PhysicalParameters/RigidBodyParameters.hpp       
2009-03-12 17:27:35 UTC (rev 1718)
@@ -20,10 +20,6 @@
                // state
                                ,angularAcceleration
                                ,angularVelocity;
-
-               /// It is the rotation center of kinematic (non-isDymanic) 
body. 
-               /// It is non-serializable and must be set by kinematic Engine. 
-               Vector3r zeroPoint;
        
                RigidBodyParameters ();
                virtual ~RigidBodyParameters ();

Modified: trunk/pkg/common/Engine/DeusExMachina/RotationEngine.cpp
===================================================================
--- trunk/pkg/common/Engine/DeusExMachina/RotationEngine.cpp    2009-03-10 
13:22:50 UTC (rev 1717)
+++ trunk/pkg/common/Engine/DeusExMachina/RotationEngine.cpp    2009-03-12 
17:27:35 UTC (rev 1718)
@@ -74,7 +74,6 @@
        std::vector<int>::const_iterator iiEnd = subscribedBodies.end();
 
        Real dt = Omega::instance().getTimeStep();
-       // time = dt;
 
        Quaternionr q;
        q.FromAxisAngle(rotationAxis,angularVelocity*dt);
@@ -86,16 +85,19 @@
        {
                RigidBodyParameters * rb = 
static_cast<RigidBodyParameters*>((*bodies)[*ii]->physicalParameters.get());
 
+               rb->angularVelocity     = rotationAxis*angularVelocity;
+
                if(rotateAroundZero)
-                       rb->se3.position        = 
q*(rb->se3.position-zeroPoint)+zeroPoint; // for RotatingBox
+        {
+            const Vector3r l = rb->se3.position-zeroPoint;
+                       rb->se3.position        = q*l+zeroPoint; 
+            rb->velocity               = rb->angularVelocity.Cross(l);
+               }
                        
                rb->se3.orientation     = q*rb->se3.orientation;
-
                rb->se3.orientation.Normalize();
                rb->se3.orientation.ToAxisAngle(ax,an);
                
-               rb->angularVelocity     = rotationAxis*angularVelocity;
-               rb->velocity            = Vector3r(0,0,0);
        }
 
 

Modified: trunk/pkg/dem/DataClass/InteractionGeometry/SpheresContactGeometry.cpp
===================================================================
--- trunk/pkg/dem/DataClass/InteractionGeometry/SpheresContactGeometry.cpp      
2009-03-10 13:22:50 UTC (rev 1717)
+++ trunk/pkg/dem/DataClass/InteractionGeometry/SpheresContactGeometry.cpp      
2009-03-12 17:27:35 UTC (rev 1718)
@@ -9,7 +9,7 @@
 // At least one virtual method must be in the .cpp file (!!!)
 SpheresContactGeometry::~SpheresContactGeometry(){};
 
-void SpheresContactGeometry::updateShearForce(Vector3r& shearForce, Real ks, 
const Vector3r& prevNormal, const RigidBodyParameters* rbp1, const 
RigidBodyParameters* rbp2, bool isDynamic1, bool isDynamic2, Real dt, bool 
avoidGranularRatcheting){
+void SpheresContactGeometry::updateShearForce(Vector3r& shearForce, Real ks, 
const Vector3r& prevNormal, const RigidBodyParameters* rbp1, const 
RigidBodyParameters* rbp2, Real dt, bool avoidGranularRatcheting){
 
        Vector3r axis;
        Real angle;
@@ -17,13 +17,7 @@
        // approximated rotations
                axis = prevNormal.Cross(normal); 
                shearForce -= shearForce.Cross(axis);
-               //angle = 
dt*0.5*currentContactGeometry->normal.Dot(de1->angularVelocity+de2->angularVelocity);
-               //FIXME: if one body is kinematic then assumed its rotation 
centre does not lies along the normal
-               //(i.e. virtual sphere, which replaces this kinematic body on 
contact, does not rotate)
-               Vector3r summaryAngularVelocity(Vector3r::ZERO);
-               if (isDynamic1) summaryAngularVelocity += rbp1->angularVelocity;
-               if (isDynamic2) summaryAngularVelocity += rbp2->angularVelocity;
-               angle = dt*0.5*normal.Dot(summaryAngularVelocity);
+               angle = dt*0.5*normal.Dot(rbp1->angularVelocity + 
rbp2->angularVelocity);
                axis = angle*normal;
                shearForce -= shearForce.Cross(axis);
                
@@ -48,10 +42,13 @@
                 *  (see F. ALONSO-MARROQUIN, R. GARCIA-ROJO, H.J. HERRMANN, 
                 *  "Micro-mechanical investigation of granular ratcheting, in 
Cyclic Behaviour of Soils and Liquefaction Phenomena",
                 *  ed. T. Triantafyllidis (Balklema, London, 2004), p. 3-10 - 
and a lot more papers from the same authors) */
-               c1x = (isDynamic1) ?  radius1*normal : x - rbp1->zeroPoint;
-               c2x = (isDynamic2) ? -radius2*normal : x - rbp2->zeroPoint;
+
+               // FIXME: For sphere-facet contact this will give an erroneous 
value of relative velocity...
+               c1x =   radius1*normal; 
+               c2x =  -radius2*normal;
        }
        else {
+               // FIXME: It is correct for sphere-sphere and sphere-facet 
contact
                c1x = (x - rbp1->se3.position);
                c2x = (x - rbp2->se3.position);
        }

Modified: trunk/pkg/dem/DataClass/InteractionGeometry/SpheresContactGeometry.hpp
===================================================================
--- trunk/pkg/dem/DataClass/InteractionGeometry/SpheresContactGeometry.hpp      
2009-03-10 13:22:50 UTC (rev 1717)
+++ trunk/pkg/dem/DataClass/InteractionGeometry/SpheresContactGeometry.hpp      
2009-03-12 17:27:35 UTC (rev 1718)
@@ -100,7 +100,7 @@
                
SpheresContactGeometry():contactPoint(Vector3r::ZERO),radius1(0),radius2(0),facetContactFace(0.),hasShear(false),pos1(Vector3r::ZERO),pos2(Vector3r::ZERO),ori1(Quaternionr::IDENTITY),ori2(Quaternionr::IDENTITY),cp1rel(Quaternionr::IDENTITY),cp2rel(Quaternionr::IDENTITY),d1(0),d2(0),d0(0),initRelOri12(Quaternionr::IDENTITY){createIndex();}
                virtual ~SpheresContactGeometry();
 
-               void updateShearForce(Vector3r& shearForce, Real ks, const 
Vector3r& prevNormal, const RigidBodyParameters* rbp1, const 
RigidBodyParameters* rbp2, bool isDynamic1, bool isDynamic2, Real dt, bool 
avoidGranularRatcheting=true);
+               void updateShearForce(Vector3r& shearForce, Real ks, const 
Vector3r& prevNormal, const RigidBodyParameters* rbp1, const 
RigidBodyParameters* rbp2, Real dt, bool avoidGranularRatcheting=true);
 
        REGISTER_ATTRIBUTES(/* no attributes from base class */,
                        (normal)

Deleted: 
trunk/pkg/dem/Engine/EngineUnit/Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp
===================================================================
--- 
trunk/pkg/dem/Engine/EngineUnit/Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp
       2009-03-10 13:22:50 UTC (rev 1717)
+++ 
trunk/pkg/dem/Engine/EngineUnit/Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp
       2009-03-12 17:27:35 UTC (rev 1718)
@@ -1,74 +0,0 @@
-/*************************************************************************
-*  Copyright (C) 2009 by Sergei Dorofeenko                               *
-*  [email protected]                                                 *
-*                                                                        *
-*  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"Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp"
-#include<yade/pkg-dem/SpheresContactGeometry.hpp>
-#include<yade/pkg-dem/ViscoelasticInteraction.hpp>
-#include<yade/pkg-common/RigidBodyParameters.hpp>
-YADE_PLUGIN("Spheres_Viscoelastic_SimpleViscoelasticContactLaw");
-
-void 
Spheres_Viscoelastic_SimpleViscoelasticContactLaw::go(shared_ptr<InteractionGeometry>&
 _geom, shared_ptr<InteractionPhysics>& _phys, Interaction* I, MetaBody* 
rootBody){
-
-       SpheresContactGeometry* 
geom=static_cast<SpheresContactGeometry*>(_geom.get());
-       ViscoelasticInteraction* 
phys=static_cast<ViscoelasticInteraction*>(_phys.get());
-
-       int id1 = I->getId1();
-       int id2 = I->getId2();
-       
-       shared_ptr<BodyContainer>& bodies = rootBody->bodies;
-
-       RigidBodyParameters* de1 = 
YADE_CAST<RigidBodyParameters*>((*bodies)[id1]->physicalParameters.get());
-       RigidBodyParameters* de2 = 
YADE_CAST<RigidBodyParameters*>((*bodies)[id2]->physicalParameters.get());
-
-       bool isDynamic1 = (*bodies)[id1]->isDynamic;
-       bool isDynamic2 = (*bodies)[id2]->isDynamic;
-
-       Vector3r& shearForce                    = phys->shearForce;
-       if (I->isNew) shearForce=Vector3r(0,0,0);
-
-       Real dt = Omega::instance().getTimeStep();
-
-       Vector3r axis = phys->prevNormal.Cross(geom->normal);
-       shearForce -= shearForce.Cross(axis);
-       Vector3r summaryAngularVelocity(0,0,0);
-       if (isDynamic1) summaryAngularVelocity += de1->angularVelocity;
-       if (isDynamic2) summaryAngularVelocity += de2->angularVelocity;
-       Real angle = dt*0.5*geom->normal.Dot(summaryAngularVelocity);
-       axis = angle*geom->normal;
-       shearForce -= shearForce.Cross(axis);
-
-       Vector3r x                              = geom->contactPoint;
-       Vector3r c1x                            = (x - de1->se3.position);
-       Vector3r c2x                            = (x - de2->se3.position);
-        /// The following definition of c1x and c2x is to avoid "granular 
ratcheting" 
-       ///  (see F. ALONSO-MARROQUIN, R. GARCIA-ROJO, H.J. HERRMANN, 
-       ///   "Micro-mechanical investigation of granular ratcheting, in Cyclic 
Behaviour of Soils and Liquefaction Phenomena",
-       ///   ed. T. Triantafyllidis (Balklema, London, 2004), p. 3-10 - and a 
lot more papers from the same authors)
-                       Vector3r _c1x_  = (isDynamic1) ? 
geom->radius1*geom->normal : x - de1->zeroPoint;
-                       Vector3r _c2x_  = (isDynamic2) ? 
-geom->radius2*geom->normal : x - de2->zeroPoint;
-       Vector3r relativeVelocity               = 
(de2->velocity+de2->angularVelocity.Cross(_c2x_)) - 
(de1->velocity+de1->angularVelocity.Cross(_c1x_));
-       Real     normalVelocity                 = 
geom->normal.Dot(relativeVelocity);
-       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->prevNormal = geom->normal;
-
-       Real maxFs = phys->normalForce.SquaredLength() * 
std::pow(phys->tangensOfFrictionAngle,2);
-       if( shearForce.SquaredLength() > maxFs )
-       {
-               maxFs = Mathr::Sqrt(maxFs) / shearForce.Length();
-               shearForce *= maxFs;
-       }
-
-       Vector3r f                              = phys->normalForce + 
shearForce;
-       addForce (id1,-f,rootBody);
-       addForce (id2, f,rootBody);
-       addTorque(id1,-c1x.Cross(f),rootBody);
-       addTorque(id2, c2x.Cross(f),rootBody);
-}

Deleted: 
trunk/pkg/dem/Engine/EngineUnit/Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp
===================================================================
--- 
trunk/pkg/dem/Engine/EngineUnit/Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp
       2009-03-10 13:22:50 UTC (rev 1717)
+++ 
trunk/pkg/dem/Engine/EngineUnit/Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp
       2009-03-12 17:27:35 UTC (rev 1718)
@@ -1,24 +0,0 @@
-/*************************************************************************
-*  Copyright (C) 2009 by Sergei Dorofeenko                               *
-*  [email protected]                                                 *
-*                                                                        *
-*  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. *
-*************************************************************************/
-
-#pragma once
-
-#include<yade/pkg-common/ConstitutiveLaw.hpp>
-
-/// This class provides linear viscoelastic contact model
-class Spheres_Viscoelastic_SimpleViscoelasticContactLaw : public 
ConstitutiveLaw
-{
-       public :
-               virtual void go(shared_ptr<InteractionGeometry>&, 
shared_ptr<InteractionPhysics>&, Interaction*, MetaBody*);
-               NEEDS_BEX("Force","Momentum");
-               FUNCTOR2D(SpheresContactGeometry,ViscoelasticInteraction);
-               
REGISTER_CLASS_AND_BASE(Spheres_Viscoelastic_SimpleViscoelasticContactLaw,ConstitutiveLaw);
-};
-REGISTER_SERIALIZABLE(Spheres_Viscoelastic_SimpleViscoelasticContactLaw);
-
-

Copied: 
trunk/pkg/dem/Engine/EngineUnit/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp
 (from rev 1717, 
trunk/pkg/dem/Engine/EngineUnit/Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp)
===================================================================
--- 
trunk/pkg/dem/Engine/EngineUnit/Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp
       2009-03-10 13:22:50 UTC (rev 1717)
+++ 
trunk/pkg/dem/Engine/EngineUnit/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp
   2009-03-12 17:27:35 UTC (rev 1718)
@@ -0,0 +1,69 @@
+/*************************************************************************
+*  Copyright (C) 2009 by Sergei Dorofeenko                               *
+*  [email protected]                                                 *
+*                                                                        *
+*  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"ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp"
+#include<yade/pkg-dem/SpheresContactGeometry.hpp>
+#include<yade/pkg-dem/ViscoelasticInteraction.hpp>
+#include<yade/pkg-common/RigidBodyParameters.hpp>
+YADE_PLUGIN("ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw");
+
+void 
ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw::go(shared_ptr<InteractionGeometry>&
 _geom, shared_ptr<InteractionPhysics>& _phys, Interaction* I, MetaBody* 
rootBody){
+
+       SpheresContactGeometry* 
geom=static_cast<SpheresContactGeometry*>(_geom.get());
+       ViscoelasticInteraction* 
phys=static_cast<ViscoelasticInteraction*>(_phys.get());
+
+       int id1 = I->getId1();
+       int id2 = I->getId2();
+       
+       shared_ptr<BodyContainer>& bodies = rootBody->bodies;
+
+       RigidBodyParameters* de1 = 
YADE_CAST<RigidBodyParameters*>((*bodies)[id1]->physicalParameters.get());
+       RigidBodyParameters* de2 = 
YADE_CAST<RigidBodyParameters*>((*bodies)[id2]->physicalParameters.get());
+
+       Vector3r& shearForce                    = phys->shearForce;
+       if (I->isNew) shearForce=Vector3r(0,0,0);
+
+       Real dt = Omega::instance().getTimeStep();
+
+       Vector3r axis = phys->prevNormal.Cross(geom->normal);
+       shearForce -= shearForce.Cross(axis);
+       Real angle = dt*0.5*geom->normal.Dot(de1->angularVelocity + 
de2->angularVelocity);
+       axis = angle*geom->normal;
+       shearForce -= shearForce.Cross(axis);
+
+       Vector3r x                              = geom->contactPoint;
+       Vector3r c1x                            = (x - de1->se3.position);
+       Vector3r c2x                            = (x - de2->se3.position);
+        /// The following definition of c1x and c2x is to avoid "granular 
ratcheting" 
+       ///  (see F. ALONSO-MARROQUIN, R. GARCIA-ROJO, H.J. HERRMANN, 
+       ///   "Micro-mechanical investigation of granular ratcheting, in Cyclic 
Behaviour of Soils and Liquefaction Phenomena",
+       ///   ed. T. Triantafyllidis (Balklema, London, 2004), p. 3-10 - and a 
lot more papers from the same authors)
+                       //Vector3r _c1x_        =  geom->radius1*geom->normal;
+                       //Vector3r _c2x_        = -geom->radius2*geom->normal;
+                       //Vector3r relativeVelocity             = 
(de2->velocity+de2->angularVelocity.Cross(_c2x_)) - 
(de1->velocity+de1->angularVelocity.Cross(_c1x_));
+       Vector3r relativeVelocity               = 
(de2->velocity+de2->angularVelocity.Cross(c2x)) - 
(de1->velocity+de1->angularVelocity.Cross(c1x));
+       Real     normalVelocity                 = 
geom->normal.Dot(relativeVelocity);
+       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->prevNormal = geom->normal;
+
+       Real maxFs = phys->normalForce.SquaredLength() * 
std::pow(phys->tangensOfFrictionAngle,2);
+       if( shearForce.SquaredLength() > maxFs )
+       {
+               maxFs = Mathr::Sqrt(maxFs) / shearForce.Length();
+               shearForce *= maxFs;
+       }
+
+       Vector3r f                              = phys->normalForce + 
shearForce;
+       addForce (id1,-f,rootBody);
+       addForce (id2, f,rootBody);
+       addTorque(id1,-c1x.Cross(f),rootBody);
+       addTorque(id2, c2x.Cross(f),rootBody);
+}


Property changes on: 
trunk/pkg/dem/Engine/EngineUnit/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp
___________________________________________________________________
Name: svn:mergeinfo
   + 

Copied: 
trunk/pkg/dem/Engine/EngineUnit/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp
 (from rev 1717, 
trunk/pkg/dem/Engine/EngineUnit/Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp)
===================================================================
--- 
trunk/pkg/dem/Engine/EngineUnit/Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp
       2009-03-10 13:22:50 UTC (rev 1717)
+++ 
trunk/pkg/dem/Engine/EngineUnit/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp
   2009-03-12 17:27:35 UTC (rev 1718)
@@ -0,0 +1,24 @@
+/*************************************************************************
+*  Copyright (C) 2009 by Sergei Dorofeenko                               *
+*  [email protected]                                                 *
+*                                                                        *
+*  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. *
+*************************************************************************/
+
+#pragma once
+
+#include<yade/pkg-common/ConstitutiveLaw.hpp>
+
+/// This class provides linear viscoelastic contact model
+class ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw : public 
ConstitutiveLaw
+{
+       public :
+               virtual void go(shared_ptr<InteractionGeometry>&, 
shared_ptr<InteractionPhysics>&, Interaction*, MetaBody*);
+               NEEDS_BEX("Force","Momentum");
+               FUNCTOR2D(SpheresContactGeometry,ViscoelasticInteraction);
+               
REGISTER_CLASS_AND_BASE(ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw,ConstitutiveLaw);
+};
+REGISTER_SERIALIZABLE(ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw);
+
+


Property changes on: 
trunk/pkg/dem/Engine/EngineUnit/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp
___________________________________________________________________
Name: svn:mergeinfo
   + 

Modified: trunk/pkg/dem/Engine/StandAloneEngine/ElasticContactLaw.cpp
===================================================================
--- trunk/pkg/dem/Engine/StandAloneEngine/ElasticContactLaw.cpp 2009-03-10 
13:22:50 UTC (rev 1717)
+++ trunk/pkg/dem/Engine/StandAloneEngine/ElasticContactLaw.cpp 2009-03-12 
17:27:35 UTC (rev 1718)
@@ -104,9 +104,6 @@
                        BodyMacroParameters* de1                                
= YADE_CAST<BodyMacroParameters*>((*bodies)[id1]->physicalParameters.get());
                        BodyMacroParameters* de2                                
= YADE_CAST<BodyMacroParameters*>((*bodies)[id2]->physicalParameters.get());
 
-                       bool isDynamic1 = (*bodies)[id1]->isDynamic;
-                       bool isDynamic2 = (*bodies)[id2]->isDynamic;
-
                        Vector3r& shearForce                    = 
currentContactPhysics->shearForce;
        
                        if (contact->isNew) shearForce=Vector3r(0,0,0);
@@ -122,18 +119,9 @@
                        Real angle;
 
        /// Here is the code with approximated rotations         ///
-                       
-
-
                        axis = 
currentContactPhysics->prevNormal.Cross(currentContactGeometry->normal);
                        shearForce -= shearForce.Cross(axis);
-                       //angle = 
dt*0.5*currentContactGeometry->normal.Dot(de1->angularVelocity+de2->angularVelocity);
-                               //FIXME: if one body is kinematic then assumed 
its rotation centre does not lies along the normal
-                               //(i.e. virtual sphere, which replaces this 
kinematic body on contact, does not rotate)
-                       Vector3r summaryAngularVelocity(0,0,0);
-                       if (isDynamic1) summaryAngularVelocity += 
de1->angularVelocity;
-                       if (isDynamic2) summaryAngularVelocity += 
de2->angularVelocity;
-                       angle = 
dt*0.5*currentContactGeometry->normal.Dot(summaryAngularVelocity);
+                       angle = 
dt*0.5*currentContactGeometry->normal.Dot(de1->angularVelocity+de2->angularVelocity);
                        axis = angle*currentContactGeometry->normal;
                        shearForce -= shearForce.Cross(axis);
                
@@ -161,9 +149,10 @@
                        ///  (see F. ALONSO-MARROQUIN, R. GARCIA-ROJO, H.J. 
HERRMANN, 
                        ///   "Micro-mechanical investigation of granular 
ratcheting, in Cyclic Behaviour of Soils and Liquefaction Phenomena",
                        ///   ed. T. Triantafyllidis (Balklema, London, 2004), 
p. 3-10 - and a lot more papers from the same authors)
-                       Vector3r _c1x_  = (isDynamic1) ? 
currentContactGeometry->radius1*currentContactGeometry->normal : x - 
de1->zeroPoint;
-                       Vector3r _c2x_  = (isDynamic2) ? 
-currentContactGeometry->radius2*currentContactGeometry->normal : x - 
de2->zeroPoint;
-                       Vector3r relativeVelocity               = 
(de2->velocity+de2->angularVelocity.Cross(_c2x_)) - 
(de1->velocity+de1->angularVelocity.Cross(_c1x_));
+                    //Vector3r _c1x_   =  
currentContactGeometry->radius1*currentContactGeometry->normal;
+                    //Vector3r _c2x_   = 
-currentContactGeometry->radius2*currentContactGeometry->normal;
+                                       //Vector3r relativeVelocity             
= (de2->velocity+de2->angularVelocity.Cross(_c2x_)) - 
(de1->velocity+de1->angularVelocity.Cross(_c1x_));
+                       Vector3r relativeVelocity               = 
(de2->velocity+de2->angularVelocity.Cross(c2x)) - 
(de1->velocity+de1->angularVelocity.Cross(c1x));
                        Vector3r shearVelocity                  = 
relativeVelocity-currentContactGeometry->normal.Dot(relativeVelocity)*currentContactGeometry->normal;
                        Vector3r shearDisplacement              = 
shearVelocity*dt;
                        shearForce                             -= 
currentContactPhysics->ks*shearDisplacement;

Deleted: trunk/pkg/dem/Engine/StandAloneEngine/SimpleViscoelasticContactLaw.cpp
===================================================================
--- trunk/pkg/dem/Engine/StandAloneEngine/SimpleViscoelasticContactLaw.cpp      
2009-03-10 13:22:50 UTC (rev 1717)
+++ trunk/pkg/dem/Engine/StandAloneEngine/SimpleViscoelasticContactLaw.cpp      
2009-03-12 17:27:35 UTC (rev 1718)
@@ -1,153 +0,0 @@
-/*************************************************************************
-*  Copyright (C) 2004 by Olivier Galizzi                                 *
-*  [email protected]                                               *
-*                                                                       *
-*  Copyright (C) 2008 by Sergei Dorofeenko                               *
-*  [email protected]                                                 *
-*                                                                        *
-*  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"SimpleViscoelasticContactLaw.hpp"
-#include<yade/pkg-dem/SimpleViscoelasticBodyParameters.hpp>
-#include<yade/pkg-dem/ViscoelasticInteraction.hpp>
-#include<yade/pkg-dem/SpheresContactGeometry.hpp>
-#include<yade/core/Omega.hpp>
-#include<yade/core/MetaBody.hpp>
-#include<yade/pkg-common/Force.hpp>
-#include<yade/pkg-common/Momentum.hpp>
-#include<yade/core/PhysicalAction.hpp>
-
-
-SimpleViscoelasticContactLaw::SimpleViscoelasticContactLaw() : 
InteractionSolver() , actionForce(new Force) , actionMomentum(new Momentum)
-{
-//     sdecGroupMask=1;
-       momentRotationLaw = true;
-       actionForceIndex = actionForce->getClassIndex();
-       actionMomentumIndex = actionMomentum->getClassIndex();
-}
-
-
-void SimpleViscoelasticContactLaw::registerAttributes()
-{
-       InteractionSolver::registerAttributes();
-//     REGISTER_ATTRIBUTE(sdecGroupMask);
-       REGISTER_ATTRIBUTE(momentRotationLaw);
-}
-
-
-void SimpleViscoelasticContactLaw::action(MetaBody* ncb)
-{
-       shared_ptr<BodyContainer>& bodies = ncb->bodies;
-
-       Real dt = Omega::instance().getTimeStep();
-
-/// Non Permanents Links                                                       
                                        ///
-
-       InteractionContainer::iterator ii    = 
ncb->transientInteractions->begin();
-       InteractionContainer::iterator iiEnd = 
ncb->transientInteractions->end();
-       for(  ; ii!=iiEnd ; ++ii )
-       {
-               if ((*ii)->isReal)
-               {
-                       const shared_ptr<Interaction>& contact = *ii;
-                       int id1 = contact->getId1();
-                       int id2 = contact->getId2();
-                       
-                       //if( !( (*bodies)[id1]->getGroupMask() & 
(*bodies)[id2]->getGroupMask() & sdecGroupMask) ) continue;
-
-                       SpheresContactGeometry*    currentContactGeometry= 
YADE_CAST<SpheresContactGeometry*>(contact->interactionGeometry.get());
-                       ViscoelasticInteraction* currentContactPhysics = 
YADE_CAST<ViscoelasticInteraction*> (contact->interactionPhysics.get());
-                       if((!currentContactGeometry)||(!currentContactPhysics)) 
continue;
-       
-                       SimpleViscoelasticBodyParameters* de1                   
        = 
YADE_CAST<SimpleViscoelasticBodyParameters*>((*bodies)[id1]->physicalParameters.get());
-                       SimpleViscoelasticBodyParameters* de2                   
        = 
YADE_CAST<SimpleViscoelasticBodyParameters*>((*bodies)[id2]->physicalParameters.get());
-
-                       bool isDynamic1 = (*bodies)[id1]->isDynamic;
-                       bool isDynamic2 = (*bodies)[id2]->isDynamic;
-
-                       Vector3r& shearForce                    = 
currentContactPhysics->shearForce;
-       
-                       if (contact->isNew) shearForce=Vector3r(0,0,0);
-                                       
-                       Vector3r axis;
-                       Real angle;
-
-       /// Here is the code with approximated rotations         ///
-                       
-
-
-                       axis = 
currentContactPhysics->prevNormal.Cross(currentContactGeometry->normal);
-                       shearForce -= shearForce.Cross(axis);
-                       //angle = 
dt*0.5*currentContactGeometry->normal.Dot(de1->angularVelocity+de2->angularVelocity);
-                               //FIXME: if one body is kinematic then assumed 
its rotation centre does not lies along the normal
-                               //(i.e. virtual sphere, which replaces this 
kinematic body on contact, does not rotate)
-                       Vector3r summaryAngularVelocity(0,0,0);
-                       if (isDynamic1) summaryAngularVelocity += 
de1->angularVelocity;
-                       if (isDynamic2) summaryAngularVelocity += 
de2->angularVelocity;
-                       angle = 
dt*0.5*currentContactGeometry->normal.Dot(summaryAngularVelocity);
-                       axis = angle*currentContactGeometry->normal;
-                       shearForce -= shearForce.Cross(axis);
-               
-       /// Here is the code with exact rotations                ///
-       
-       //              Quaternionr q;
-       //
-       //              axis                                    = 
currentContactPhysics->prevNormal.cross(currentContactGeometry->normal);
-       //              angle                                   = 
acos(currentContactGeometry->normal.dot(currentContactPhysics->prevNormal));
-       //              q.fromAngleAxis(angle,axis);
-       //
-       //              currentContactPhysics->shearForce       = 
currentContactPhysics->shearForce*q;
-       //
-       //              angle                                   = 
dt*0.5*currentContactGeometry->normal.dot(de1->angularVelocity+de2->angularVelocity);
-       //              axis                                    = 
currentContactGeometry->normal;
-       //              q.fromAngleAxis(angle,axis);
-       //              currentContactPhysics->shearForce       = 
q*currentContactPhysics->shearForce;
-       
-       ///                                                      ///
-       
-                       Vector3r x                              = 
currentContactGeometry->contactPoint;
-                       Vector3r c1x                            = (x - 
de1->se3.position);
-                       Vector3r c2x                            = (x - 
de2->se3.position);
-                        /// The following definition of c1x and c2x is to 
avoid "granular ratcheting" 
-                       ///  (see F. ALONSO-MARROQUIN, R. GARCIA-ROJO, H.J. 
HERRMANN, 
-                       ///   "Micro-mechanical investigation of granular 
ratcheting, in Cyclic Behaviour of Soils and Liquefaction Phenomena",
-                       ///   ed. T. Triantafyllidis (Balklema, London, 2004), 
p. 3-10 - and a lot more papers from the same authors)
-                       Vector3r _c1x_  = (isDynamic1) ? 
currentContactGeometry->radius1*currentContactGeometry->normal : x - 
de1->zeroPoint;
-                       Vector3r _c2x_  = (isDynamic2) ? 
-currentContactGeometry->radius2*currentContactGeometry->normal : x - 
de2->zeroPoint;
-                       Vector3r relativeVelocity               = 
(de2->velocity+de2->angularVelocity.Cross(_c2x_)) - 
(de1->velocity+de1->angularVelocity.Cross(_c1x_));
-                       Real     normalVelocity                 = 
currentContactGeometry->normal.Dot(relativeVelocity);
-                       Vector3r shearVelocity                  = 
relativeVelocity-normalVelocity*currentContactGeometry->normal;
-                       //Vector3r shearDisplacement            = 
shearVelocity*dt;
-                       //shearForce                           -= 
currentContactPhysics->ks*shearDisplacement;
-                       shearForce                             -= 
(currentContactPhysics->ks*dt+currentContactPhysics->cs)*shearVelocity;
-       
-                       Real un=currentContactGeometry->penetrationDepth;
-                       
//currentContactPhysics->normalForce=currentContactPhysics->kn*std::max(un,(Real)
 0)*currentContactGeometry->normal;
-                       currentContactPhysics->normalForce = ( 
currentContactPhysics->kn * std::max(un,(Real) 0) - currentContactPhysics->cn * 
normalVelocity ) * currentContactGeometry->normal;
-       
-       // PFC3d SlipModel, is using friction angle. CoulombCriterion
-                       Real maxFs = 
currentContactPhysics->normalForce.SquaredLength() * 
std::pow(currentContactPhysics->tangensOfFrictionAngle,2);
-                       if( shearForce.SquaredLength() > maxFs )
-                       {
-                               maxFs = Mathr::Sqrt(maxFs) / 
shearForce.Length();
-                               shearForce *= maxFs;
-                       }
-       ////////// PFC3d SlipModel
-       
-                       Vector3r f                              = 
currentContactPhysics->normalForce + shearForce;
-                       
-       // it will be some macro(       body->physicalActions,  ActionType , 
bodyId )
-                       static_cast<Force*>   ( ncb->physicalActions->find( id1 
, actionForceIndex).get() )->force    -= f;
-                       static_cast<Force*>   ( ncb->physicalActions->find( id2 
, actionForceIndex ).get() )->force    += f;
-                       
-                       static_cast<Momentum*>( ncb->physicalActions->find( id1 
, actionMomentumIndex ).get() )->momentum -= c1x.Cross(f);
-                       static_cast<Momentum*>( ncb->physicalActions->find( id2 
, actionMomentumIndex ).get() )->momentum += c2x.Cross(f);
-                       
-                       currentContactPhysics->prevNormal = 
currentContactGeometry->normal;
-               }
-       }
-}
-
-YADE_PLUGIN();

Deleted: trunk/pkg/dem/Engine/StandAloneEngine/SimpleViscoelasticContactLaw.hpp
===================================================================
--- trunk/pkg/dem/Engine/StandAloneEngine/SimpleViscoelasticContactLaw.hpp      
2009-03-10 13:22:50 UTC (rev 1717)
+++ trunk/pkg/dem/Engine/StandAloneEngine/SimpleViscoelasticContactLaw.hpp      
2009-03-12 17:27:35 UTC (rev 1718)
@@ -1,44 +0,0 @@
-/*************************************************************************
-*  Copyright (C) 2004 by Olivier Galizzi                                 *
-*  [email protected]                                               *
-*                                                                       *
-*  Copyright (C) 2008 by Sergei Dorofeenko                               *
-*  [email protected]                                                 *
-*                                                                        *
-*  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. *
-*************************************************************************/
-
-#pragma once
-
-#include<yade/core/InteractionSolver.hpp>
-
-class PhysicalAction;
-
-/// This class provides linear viscoelastic contact model
-class SimpleViscoelasticContactLaw : public InteractionSolver
-{
-/// Attributes
-       private :
-               shared_ptr<PhysicalAction> actionForce;
-               shared_ptr<PhysicalAction> actionMomentum;
-               int actionForceIndex;
-               int actionMomentumIndex;
-               
-       public :
-//             int sdecGroupMask;
-               bool momentRotationLaw;
-       
-               SimpleViscoelasticContactLaw();
-               void action(MetaBody*);
-
-       protected :
-               void registerAttributes();
-       NEEDS_BEX("Force","Momentum");
-       REGISTER_CLASS_NAME(SimpleViscoelasticContactLaw);
-       REGISTER_BASE_CLASS_NAME(InteractionSolver);
-};
-
-REGISTER_SERIALIZABLE(SimpleViscoelasticContactLaw);
-
-

Modified: trunk/pkg/dem/PreProcessor/MembraneTest.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/MembraneTest.cpp 2009-03-10 13:22:50 UTC (rev 
1717)
+++ trunk/pkg/dem/PreProcessor/MembraneTest.cpp 2009-03-12 17:27:35 UTC (rev 
1718)
@@ -12,8 +12,9 @@
 #include "MembraneTest.hpp"
 
 //#include<yade/pkg-dem/ElasticContactLaw.hpp>
-#include<yade/pkg-dem/SimpleViscoelasticContactLaw.hpp>
+#include<yade/pkg-dem/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp>
 
//#include<yade/pkg-dem/ElasticBodyParameters2BcpConnection4ElasticContactInteraction.hpp>
+#include<yade/pkg-common/ConstitutiveLawDispatcher.hpp>
 #include<yade/pkg-common/ParticleParameters.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 
#include<yade/pkg-common/ef2_BshTube_BssSweptSphereLineSegment_makeBssSweptSphereLineSegment.hpp>
@@ -335,13 +336,16 @@
        shared_ptr<PhysicalParametersMetaEngine> orientationIntegrator(new 
PhysicalParametersMetaEngine);
        orientationIntegrator->add("LeapFrogOrientationIntegrator");
 
+       shared_ptr<ConstitutiveLawDispatcher> constitutiveLaw(new 
ConstitutiveLawDispatcher);
+       
constitutiveLaw->add("ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw");
+
        rootBody->engines.clear();
        rootBody->engines.push_back(shared_ptr<Engine>(new 
PhysicalActionContainerReseter));
        rootBody->engines.push_back(boundingVolumeDispatcher);  
        rootBody->engines.push_back(shared_ptr<Engine>(new 
PersistentSAPCollider));
        rootBody->engines.push_back(interactionGeometryDispatcher);
        rootBody->engines.push_back(interactionPhysicsDispatcher);
-        rootBody->engines.push_back(shared_ptr<Engine>(new 
SimpleViscoelasticContactLaw));
+        rootBody->engines.push_back(constitutiveLaw);
        rootBody->engines.push_back(gravityCondition);
        rootBody->engines.push_back(applyActionDispatcher);
        rootBody->engines.push_back(positionIntegrator);

Modified: trunk/pkg/dem/PreProcessor/TestSimpleViscoelastic.cpp
===================================================================
--- trunk/pkg/dem/PreProcessor/TestSimpleViscoelastic.cpp       2009-03-10 
13:22:50 UTC (rev 1717)
+++ trunk/pkg/dem/PreProcessor/TestSimpleViscoelastic.cpp       2009-03-12 
17:27:35 UTC (rev 1718)
@@ -30,10 +30,11 @@
 #include<yade/pkg-common/PhysicalParametersMetaEngine.hpp>
 #include<yade/pkg-common/Sphere.hpp>
 #include<yade/pkg-common/Box.hpp>
+#include<yade/pkg-common/ConstitutiveLawDispatcher.hpp>
 #include<yade/pkg-dem/RigidBodyRecorder.hpp>
 #include<yade/pkg-dem/SimpleViscoelasticSpheresInteractionRecorder.hpp>
 #include<yade/pkg-dem/SimpleViscoelasticBodyParameters.hpp>
-#include<yade/pkg-dem/SimpleViscoelasticContactLaw.hpp>
+#include<yade/pkg-dem/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.hpp>
 #include<yade/pkg-dem/SimpleViscoelasticRelationships.hpp>
 #include<yade/pkg-common/GravityEngines.hpp>
 
@@ -190,13 +191,16 @@
     shared_ptr<PhysicalParametersMetaEngine> orientationIntegrator(new 
PhysicalParametersMetaEngine);
     orientationIntegrator->add("LeapFrogOrientationIntegrator");
     
+       shared_ptr<ConstitutiveLawDispatcher> constitutiveLaw(new 
ConstitutiveLawDispatcher);
+       
constitutiveLaw->add("ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw");
+
     rootBody->engines.clear();
     rootBody->engines.push_back(shared_ptr<Engine>(new 
PhysicalActionContainerReseter));
     rootBody->engines.push_back(boundingVolumeDispatcher);     
     rootBody->engines.push_back(shared_ptr<Engine>(new PersistentSAPCollider));
     rootBody->engines.push_back(interactionGeometryDispatcher);
     rootBody->engines.push_back(interactionPhysicsDispatcher);
-    rootBody->engines.push_back(shared_ptr<Engine>(new 
SimpleViscoelasticContactLaw));
+    rootBody->engines.push_back(constitutiveLaw);
     rootBody->engines.push_back(gravityCondition);
     rootBody->engines.push_back(applyActionDispatcher);
     rootBody->engines.push_back(positionIntegrator);

Modified: trunk/pkg/dem/SConscript
===================================================================
--- trunk/pkg/dem/SConscript    2009-03-10 13:22:50 UTC (rev 1717)
+++ trunk/pkg/dem/SConscript    2009-03-12 17:27:35 UTC (rev 1718)
@@ -664,7 +664,8 @@
                        
#'ElasticBodyParameters2BcpConnection4ElasticContactInteraction',
                         'BssSweptSphereLineSegment',
                        'SimpleViscoelasticRelationships',
-                       'SimpleViscoelasticContactLaw',
+                       'ConstitutiveLawDispatcher',
+                       'ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw',
                        'SimpleViscoelasticBodyParameters',
                        'ViscoelasticInteraction',
                         'InteractingSphere','InteractingNode', 
@@ -1037,15 +1038,6 @@
                    ,'SpheresContactGeometry'
                    ])
 
-       ,env.SharedLibrary('SimpleViscoelasticContactLaw'
-               ,['Engine/StandAloneEngine/SimpleViscoelasticContactLaw.cpp']
-               ,LIBS=env['LIBS']+['ViscoelasticInteraction'
-                   ,'SimpleViscoelasticBodyParameters'
-                   ,'SpheresContactGeometry'
-                   ,'Force'
-                   ,'Momentum'
-                   ])
-       
        ,env.SharedLibrary('ContactLaw1',
                ['Engine/StandAloneEngine/ContactLaw1.cpp'],
                LIBS=env['LIBS']+['SDECLinkPhysics',
@@ -1078,7 +1070,8 @@
                 ,'Shop'
                            ,'InteractingBox'
                            ,'SimpleViscoelasticRelationships'
-                           ,'SimpleViscoelasticContactLaw'
+                           ,'ConstitutiveLawDispatcher'
+                           
,'ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw'
                            ,'SimpleViscoelasticBodyParameters'
                            ,'ViscoelasticInteraction'
                            ,'SimpleViscoelasticSpheresInteractionRecorder'
@@ -1131,8 +1124,8 @@
                
['Engine/EngineUnit/ef2_Spheres_NormalShear_ElasticFrictionalLaw.cpp'],
                
LIBS=env['LIBS']+['ConstitutiveLawDispatcher','NormalShearInteractions','SpheresContactGeometry']),
 
-       env.SharedLibrary('Spheres_Viscoelastic_SimpleViscoelasticContactLaw',
-               
['Engine/EngineUnit/Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp'],
+       
env.SharedLibrary('ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw',
+               
['Engine/EngineUnit/ef2_Spheres_Viscoelastic_SimpleViscoelasticContactLaw.cpp'],
                
LIBS=env['LIBS']+['ConstitutiveLawDispatcher','ViscoelasticInteraction','SpheresContactGeometry','RigidBodyParameters']),
                                
        #env.SharedLibrary('MicroMacroAnalyser',


_______________________________________________
Mailing list: https://launchpad.net/~yade-dev
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~yade-dev
More help   : https://help.launchpad.net/ListHelp

Reply via email to