------------------------------------------------------------------------
r1459 | eudoxos | 2008-08-11 11:13:25 +0200 (pon, 11 sie 2008) | 4 lines
Changed paths:
   M /trunk/extra/BrefcomTestGen.cpp
   M /trunk/extra/clump/Shop.cpp
   M /trunk/extra/usct/UniaxialStrainControlledTest.cpp
   M /trunk/pkg/dem/DataClass/InteractionGeometry/SDECLinkGeometry.hpp
   M 
/trunk/pkg/dem/Engine/EngineUnit/InteractingSphere2InteractingSphere4DistantSpheresContactGeometry.cpp
   M 
/trunk/pkg/dem/Engine/EngineUnit/InteractingSphere2InteractingSphere4SpheresContactGeometry.cpp
   M 
/trunk/pkg/dem/Engine/EngineUnit/InteractingSphere2InteractingSphere4SpheresContactGeometryWater.cpp
   M /trunk/pkg/dem/Engine/StandAloneEngine/CapillaryCohesiveLaw.cpp
   M /trunk/pkg/dem/Engine/StandAloneEngine/CohesiveFrictionalContactLaw.cpp
   M /trunk/pkg/dem/Engine/StandAloneEngine/ElasticCohesiveLaw.cpp
   M /trunk/pkg/dem/Engine/StandAloneEngine/ElasticContactLaw.cpp
   M /trunk/pkg/dem/Engine/StandAloneEngine/GlobalStiffnessCounter.cpp
   M /trunk/pkg/dem/Engine/StandAloneEngine/VolumicContactLaw.cpp
   M /trunk/pkg/dem/PreProcessor/CohesiveTriaxialTest.cpp
   M /trunk/pkg/dem/PreProcessor/DirectShearCis.cpp
   M /trunk/pkg/dem/PreProcessor/Funnel.cpp
   M /trunk/pkg/dem/PreProcessor/HydraulicTest.cpp
   M /trunk/pkg/dem/PreProcessor/ModifiedTriaxialTest.cpp
   M /trunk/pkg/dem/PreProcessor/SDECImpactTest.cpp
   M /trunk/pkg/dem/PreProcessor/SDECLinkedSpheres.cpp
   M /trunk/pkg/dem/PreProcessor/SDECMovingWall.cpp
   M /trunk/pkg/dem/PreProcessor/SDECSpheresPlane.cpp
   M /trunk/pkg/dem/PreProcessor/SnowCreepTest.cpp
   M /trunk/pkg/dem/PreProcessor/ThreePointBending.cpp
   M /trunk/pkg/dem/PreProcessor/ThreePointBending.hpp
   M /trunk/pkg/dem/PreProcessor/TriaxialTest.cpp
   M /trunk/pkg/dem/SConscript

1. Fix all crashing preprocessors - for the price of SDECLinkedSpheres and 
ThreePointBending not really working - 
InteractingSphere2InteractingSphere4SpheresContactGoemetry only handles 
SpheresContactGeometry (and not SDECLinkGeometry), OTOH CohesiveContactLaw 
works only on SDECLinkGeometry. scripts/default-test.py passes now all 
preprocessors.
2. SDECLinkGeometry marked as deprecated.


------------------------------------------------------------------------
Index: pkg/dem/DataClass/InteractionGeometry/SDECLinkGeometry.hpp
===================================================================
--- pkg/dem/DataClass/InteractionGeometry/SDECLinkGeometry.hpp  (revision 1458)
+++ pkg/dem/DataClass/InteractionGeometry/SDECLinkGeometry.hpp  (revision 1459)
@@ -15,7 +15,8 @@
 #include<yade/lib-base/yadeWm3.hpp>
 #include <Wm3Quaternion.h>
 
-class SDECLinkGeometry : public InteractionGeometry
+
+class __attribute__((__deprecated__)) SDECLinkGeometry : public 
InteractionGeometry
 {
        public :
                SDECLinkGeometry();
Index: 
pkg/dem/Engine/EngineUnit/InteractingSphere2InteractingSphere4DistantSpheresContactGeometry.cpp
===================================================================
--- 
pkg/dem/Engine/EngineUnit/InteractingSphere2InteractingSphere4DistantSpheresContactGeometry.cpp
     (revision 1458)
+++ 
pkg/dem/Engine/EngineUnit/InteractingSphere2InteractingSphere4DistantSpheresContactGeometry.cpp
     (revision 1459)
@@ -10,7 +10,6 @@
 
 #include"InteractingSphere2InteractingSphere4DistantSpheresContactGeometry.hpp"
 #include<yade/pkg-dem/SpheresContactGeometry.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-common/InteractingSphere.hpp>
 
 #include<yade/lib-base/yadeWm3Extra.hpp>
Index: 
pkg/dem/Engine/EngineUnit/InteractingSphere2InteractingSphere4SpheresContactGeometry.cpp
===================================================================
--- 
pkg/dem/Engine/EngineUnit/InteractingSphere2InteractingSphere4SpheresContactGeometry.cpp
    (revision 1458)
+++ 
pkg/dem/Engine/EngineUnit/InteractingSphere2InteractingSphere4SpheresContactGeometry.cpp
    (revision 1459)
@@ -10,7 +10,6 @@
 
 #include"InteractingSphere2InteractingSphere4SpheresContactGeometry.hpp"
 #include<yade/pkg-dem/SpheresContactGeometry.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-common/InteractingSphere.hpp>
 
 #include<yade/lib-base/yadeWm3Extra.hpp>
@@ -46,24 +45,6 @@
                        //         the problem is that scm can be either 
SDECLinkGeometry or SpheresContactGeometry and the only way CURRENTLY
                        //         to check this is by dynamic cast. This has 
to be fixed.
                        scm = 
YADE_PTR_CAST<SpheresContactGeometry>(c->interactionGeometry);
-                       #if 0
-                               // BEGIN .......  FIXME FIXME   - wrong hack, 
to make cohesion work.
-                                       if(! scm) // this is not 
SpheresContactGeometry, so it is SDECLinkGeometry, dispatcher should do this 
job.
-                                       {
-                                               shared_ptr<SDECLinkGeometry> 
linkGeometry = dynamic_pointer_cast<SDECLinkGeometry>(c->interactionGeometry);
-                                                       cerr << "it is 
SpringGeometry ???: " << c->interactionGeometry->getClassName() << endl;
-                                                       assert(linkGeometry);
-                                               if(linkGeometry)
-                                               {
-                                                       linkGeometry->normal    
                = se32.position-se31.position;
-                                                       
linkGeometry->normal.Normalize();
-                                                       return true;
-                                               }
-                                               else
-                                                       return false; // 
SpringGeometry !!!???????
-                                       }
-                                       // END
-                       #endif
                } else scm = shared_ptr<SpheresContactGeometry>(new 
SpheresContactGeometry());
                penetrationDepth = s1->radius+s2->radius-normal.Normalize();
                scm->contactPoint = 
se31.position+(s1->radius-0.5*penetrationDepth)*normal;//0.5*(pt1+pt2);
Index: 
pkg/dem/Engine/EngineUnit/InteractingSphere2InteractingSphere4SpheresContactGeometryWater.cpp
===================================================================
--- 
pkg/dem/Engine/EngineUnit/InteractingSphere2InteractingSphere4SpheresContactGeometryWater.cpp
       (revision 1458)
+++ 
pkg/dem/Engine/EngineUnit/InteractingSphere2InteractingSphere4SpheresContactGeometryWater.cpp
       (revision 1459)
@@ -29,7 +29,6 @@
        Real penetrationDepth = s1->radius+s2->radius-normal.Normalize();
        
        shared_ptr<SpheresContactGeometry> scm;
-//     shared_ptr<SDECLinkGeometry> linkGeometry;
        
        if (c->interactionGeometry)     
        {
@@ -42,7 +41,6 @@
                
        scm = shared_ptr<SpheresContactGeometry>(new SpheresContactGeometry());
                
-       //linkGeometry = shared_ptr<SDECLinkGeometry>(new SDECLinkGeometry());
                
 //     if (penetrationDepth>0)
        {
Index: pkg/dem/Engine/StandAloneEngine/VolumicContactLaw.cpp
===================================================================
--- pkg/dem/Engine/StandAloneEngine/VolumicContactLaw.cpp       (revision 1458)
+++ pkg/dem/Engine/StandAloneEngine/VolumicContactLaw.cpp       (revision 1459)
@@ -9,7 +9,6 @@
 
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
 #include<yade/pkg-dem/SpheresContactGeometry.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/ElasticContactInteraction.hpp>
 #include<yade/pkg-dem/SDECLinkPhysics.hpp>
 #include<yade/core/Omega.hpp>
Index: pkg/dem/Engine/StandAloneEngine/ElasticContactLaw.cpp
===================================================================
--- pkg/dem/Engine/StandAloneEngine/ElasticContactLaw.cpp       (revision 1458)
+++ pkg/dem/Engine/StandAloneEngine/ElasticContactLaw.cpp       (revision 1459)
@@ -9,7 +9,6 @@
 #include"ElasticContactLaw.hpp"
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
 #include<yade/pkg-dem/SpheresContactGeometry.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/ElasticContactInteraction.hpp>
 #include<yade/pkg-dem/SDECLinkPhysics.hpp>
 #include<yade/core/Omega.hpp>
Index: pkg/dem/Engine/StandAloneEngine/ElasticCohesiveLaw.cpp
===================================================================
--- pkg/dem/Engine/StandAloneEngine/ElasticCohesiveLaw.cpp      (revision 1458)
+++ pkg/dem/Engine/StandAloneEngine/ElasticCohesiveLaw.cpp      (revision 1459)
@@ -9,8 +9,8 @@
 #include "ElasticCohesiveLaw.hpp"
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
 #include<yade/pkg-dem/SpheresContactGeometry.hpp>
+#include<yade/pkg-dem/ElasticContactInteraction.hpp>
 #include<yade/pkg-dem/SDECLinkGeometry.hpp>
-#include<yade/pkg-dem/ElasticContactInteraction.hpp>
 #include<yade/pkg-dem/SDECLinkPhysics.hpp>
 
 
Index: pkg/dem/Engine/StandAloneEngine/CohesiveFrictionalContactLaw.cpp
===================================================================
--- pkg/dem/Engine/StandAloneEngine/CohesiveFrictionalContactLaw.cpp    
(revision 1458)
+++ pkg/dem/Engine/StandAloneEngine/CohesiveFrictionalContactLaw.cpp    
(revision 1459)
@@ -9,7 +9,6 @@
 #include "CohesiveFrictionalContactLaw.hpp"
 #include<yade/pkg-dem/CohesiveFrictionalBodyParameters.hpp>
 #include<yade/pkg-dem/SpheresContactGeometry.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/CohesiveFrictionalContactInteraction.hpp>
 #include<yade/pkg-dem/SDECLinkPhysics.hpp>
 #include<yade/core/Omega.hpp>
Index: pkg/dem/Engine/StandAloneEngine/CapillaryCohesiveLaw.cpp
===================================================================
--- pkg/dem/Engine/StandAloneEngine/CapillaryCohesiveLaw.cpp    (revision 1458)
+++ pkg/dem/Engine/StandAloneEngine/CapillaryCohesiveLaw.cpp    (revision 1459)
@@ -134,7 +134,6 @@
                         SpheresContactGeometry* currentContactGeometry         
=
                                 
static_cast<SpheresContactGeometry*>(interaction->interactionGeometry.get());
 
-                        //SDECLinkGeometry* currentContactGeometry     = 
static_cast<SDECLinkGeometry*>(interaction->interactionGeometry.get());
 
                         CapillaryParameters* currentContactPhysics     =
                                 
static_cast<CapillaryParameters*>(interaction->interactionPhysics.get());
Index: pkg/dem/Engine/StandAloneEngine/GlobalStiffnessCounter.cpp
===================================================================
--- pkg/dem/Engine/StandAloneEngine/GlobalStiffnessCounter.cpp  (revision 1458)
+++ pkg/dem/Engine/StandAloneEngine/GlobalStiffnessCounter.cpp  (revision 1459)
@@ -10,7 +10,6 @@
 
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
 #include<yade/pkg-dem/SpheresContactGeometry.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/ElasticContactInteraction.hpp>
 #include<yade/pkg-dem/SDECLinkPhysics.hpp>
 #include<yade/core/Omega.hpp>
@@ -76,17 +75,6 @@
        }
 
 
-//     shared_ptr<SDECLinkGeometry> 
geom3=dynamic_pointer_cast<SDECLinkGeometry>(contact->interactionGeometry);
-//     shared_ptr<SDECLinkPhysics> 
phys3=dynamic_pointer_cast<SDECLinkPhysics>(contact->interactionPhysics);
-//     if(geom3 && phys3){
-//             Real fn=phys3->normalForce.Length();
-//             if(fn==0) return false;
-//             normal=geom3->normal;
-//             radius1=geom3->radius1; radius2=geom3->radius2;
-//             kn=phys3->kn; ks=phys3->ks;
-//             return true;
-//     }
-// 
 //     shared_ptr<SpheresContactGeometry> 
geom2=dynamic_pointer_cast<SpheresContactGeometry>(contact->interactionGeometry);
 //     shared_ptr<BrefcomContact> 
phys2=dynamic_pointer_cast<BrefcomContact>(contact->interactionPhysics);
 //     if(geom2 && phys2){
Index: pkg/dem/PreProcessor/SnowCreepTest.cpp
===================================================================
--- pkg/dem/PreProcessor/SnowCreepTest.cpp      (revision 1458)
+++ pkg/dem/PreProcessor/SnowCreepTest.cpp      (revision 1459)
@@ -15,7 +15,6 @@
 #include<yade/pkg-dem/CohesiveFrictionalContactLaw.hpp>
 #include<yade/pkg-dem/CohesiveFrictionalRelationships.hpp>
 #include<yade/pkg-dem/CohesiveFrictionalBodyParameters.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/SDECLinkPhysics.hpp>
 #include<yade/pkg-dem/GlobalStiffnessCounter.hpp>
 #include<yade/pkg-dem/GlobalStiffnessTimeStepper.hpp>
Index: pkg/dem/PreProcessor/ThreePointBending.cpp
===================================================================
--- pkg/dem/PreProcessor/ThreePointBending.cpp  (revision 1458)
+++ pkg/dem/PreProcessor/ThreePointBending.cpp  (revision 1459)
@@ -17,7 +17,7 @@
 #include<yade/pkg-dem/ElasticCohesiveLaw.hpp>
 #include<yade/pkg-dem/MacroMicroElasticRelationships.hpp>
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
+#include<yade/pkg-dem/SpheresContactGeometry.hpp>
 #include<yade/pkg-dem/SDECLinkPhysics.hpp>
 #include<yade/pkg-dem/ElasticCriterionTimeStepper.hpp>
 
@@ -39,7 +39,6 @@
 #include<yade/pkg-common/PhysicalActionApplier.hpp>
 #include<yade/pkg-common/CundallNonViscousDamping.hpp>
 #include<yade/pkg-common/CundallNonViscousDamping.hpp>
-#include<yade/pkg-common/GravityEngines.hpp>
 
 #include<yade/pkg-common/InteractionGeometryMetaEngine.hpp>
 #include<yade/pkg-common/InteractionPhysicsMetaEngine.hpp>
@@ -60,15 +59,14 @@
 #include <boost/filesystem/operations.hpp>
 #include <boost/filesystem/convenience.hpp>
 
+#include<yade/extra/Shop.hpp>
 
+
 ThreePointBending::ThreePointBending () : FileGenerator()
 {
-       yadeFileWithSpheres     ="./someFileFromTriaxial.yade";
-       gravity                 = Vector3r(0,-9.81,0);
+       yadeFileWithSpheres     ="";
 
-       supportDepth            = 10;
-       pistonWidth             = 5;
-       pistonVelocity          = 0.1;
+       pistonVelocity          = 1.;
        dampingForce            = 0.2;
        dampingMomentum         = 0.2;
        
@@ -103,10 +101,7 @@
        FileGenerator::registerAttributes();
        
        REGISTER_ATTRIBUTE(yadeFileWithSpheres);
-       REGISTER_ATTRIBUTE(gravity);
 
-       REGISTER_ATTRIBUTE(pistonWidth);
-       REGISTER_ATTRIBUTE(supportDepth);
        REGISTER_ATTRIBUTE(pistonVelocity);
        REGISTER_ATTRIBUTE(dampingForce);
        REGISTER_ATTRIBUTE(dampingMomentum);
@@ -137,89 +132,43 @@
        rootBody->physicalActions               = 
shared_ptr<PhysicalActionContainer>(new PhysicalActionVectorVector);
        rootBody->bodies                        = shared_ptr<BodyContainer>(new 
BodyRedirectionVector);
 
-/////////////////////////////////////
-/////////////////////////////////////
-       // load file
-       
-       shared_ptr<MetaBody> metaBodyWithSpheres;
+       Vector3r min(10000,10000,10000),max(-10000,-10000,-10000);
 
-       if (       yadeFileWithSpheres.size()!=0 
-               && filesystem::exists(yadeFileWithSpheres) 
-               && (filesystem::extension(yadeFileWithSpheres)==".xml" || 
filesystem::extension(yadeFileWithSpheres)==".yade"))
-       {
-               try
-               {
-                       if(filesystem::extension(yadeFileWithSpheres)==".xml")
-                               
IOFormatManager::loadFromFile("XMLFormatManager",yadeFileWithSpheres,"rootBody",metaBodyWithSpheres);
+       // load simulation file, extract spheres and use those
+       if (yadeFileWithSpheres.size()!=0){
+               shared_ptr<MetaBody> metaBodyWithSpheres;
+               
IOFormatManager::loadFromFile("XMLFormatManager",yadeFileWithSpheres,"rootBody",metaBodyWithSpheres);
+               assert(metaBodyWithSpheres->getClassName()=="MetaBody");
 
-                       else 
if(filesystem::extension(yadeFileWithSpheres)==".yade" )
-                               
IOFormatManager::loadFromFile("BINFormatManager",yadeFileWithSpheres,"rootBody",metaBodyWithSpheres);
+               FOREACH(shared_ptr<Body> b, *metaBodyWithSpheres->bodies){
+                       if(b->geometricalModel->getClassName()!="Sphere") 
continue;
+                       min = 
componentMinVector(min,b->physicalParameters->se3.position - 
static_cast<Sphere*>(b->geometricalModel.get())->radius * Vector3r(1,1,1));
+                       max = 
componentMaxVector(max,b->physicalParameters->se3.position + 
static_cast<Sphere*>(b->geometricalModel.get())->radius * Vector3r(1,1,1));
+                       BodyMacroParameters* bm = 
dynamic_cast<BodyMacroParameters*>(b->physicalParameters.get());
+                       if(!bm) {message="Error: spheres don't use 
BodyMacroParameters for physical parameters"; return false;}
+                       bm->young               = sphereYoungModulus;
+                       bm->poisson             = spherePoissonRatio;
+                       bm->frictionAngle       = sphereFrictionDeg * 
Mathr::PI/180.0;
+                       bm->mass                /= 1000.0; // ???!
 
-                       if( metaBodyWithSpheres->getClassName() != "MetaBody"){ 
message="Error: cannot load the file that should contain spheres"; return 
false; }
-               } 
-               catch(SerializableError& e)
-               {
-                       message="Error: cannot load the file that should 
contain spheres"; return false;
+                       rootBody->bodies->insert(b);
                }
-               catch(yadeError& e)
-               {
-                       message="Error: cannot load the file that should 
contain spheres"; return false;
-               }
        }
-       else { message="Error: cannot load the file that should contain 
spheres"; return false; }
-/////////////////////////////////////
-       Vector3r min(10000,10000,10000),max(-10000,-10000,-10000);
-       {// calc min/max
-               BodyContainer::iterator bi    = 
metaBodyWithSpheres->bodies->begin();
-               BodyContainer::iterator biEnd = 
metaBodyWithSpheres->bodies->end();
-               for( ; bi!=biEnd ; ++bi )
-               {
-                       if((*bi)->geometricalModel->getClassName() == "Sphere" )
-                       {
-                               shared_ptr<Body> b = *bi;
-                               min = 
componentMinVector(min,b->physicalParameters->se3.position - 
static_cast<Sphere*>(b->geometricalModel.get())->radius * Vector3r(1,1,1));
-                               max = 
componentMaxVector(max,b->physicalParameters->se3.position + 
static_cast<Sphere*>(b->geometricalModel.get())->radius * Vector3r(1,1,1));
-
-                               BodyMacroParameters* bm = 
dynamic_cast<BodyMacroParameters*>(b->physicalParameters.get());
-                               if(!bm) {message="Error: spheres don't use 
BodyMacroParameters for physical parameters"; return false;}
-
-                               bm->young               = sphereYoungModulus;
-                               bm->poisson             = spherePoissonRatio;
-                               bm->frictionAngle       = sphereFrictionDeg * 
Mathr::PI/180.0;
-                               bm->mass                /= 1000.0; // FIXME !!!
+       // generate specimen
+       else{
+               Real radius=1; int xxSup=2, yySup=10, zzSup=2;
+               min=Vector3r(-radius,-radius,-radius); 
max=Vector3r(radius*(2*xxSup-1),radius*(2*yySup-1),radius*(2*zzSup-1));
+               for(int xx=0; xx<xxSup; xx++){
+                       for(int yy=0; yy<yySup; yy++){
+                               for(int zz=0; zz<zzSup; zz++){
+                                       shared_ptr<Body> 
b=Shop::sphere(Vector3r(xx*2*radius,yy*2*radius,zz*2*radius),radius);
+                                       rootBody->bodies->insert(b);
+                               }
                        }
                }
        }
-////////////////////////////////////
-
-       shared_ptr<Body> piston;
-       shared_ptr<Body> supportBox1;
-       shared_ptr<Body> supportBox2;
        
-       createBox(piston,      Vector3r( (max[0]+min[0])*0.5 , max[1] + 
(max[0]-min[0])*0.5 ,          (max[2]+min[2])*0.5                ), Vector3r( 
(max[0]-min[0])*0.5, (max[0]-min[0])*0.5 , pistonWidth          ));
-       createBox(supportBox1, Vector3r( (max[0]+min[0])*0.5 , min[1] - 
(max[0]-min[0])*0.5 , min[2] - (max[0]-min[0])*0.5 + supportDepth ), Vector3r( 
(max[0]-min[0])*0.5, (max[0]-min[0])*0.5 , (max[0]-min[0])*0.5  ));
-       createBox(supportBox2, Vector3r( (max[0]+min[0])*0.5 , min[1] - 
(max[0]-min[0])*0.5 , max[2] + (max[0]-min[0])*0.5 - supportDepth ), Vector3r( 
(max[0]-min[0])*0.5, (max[0]-min[0])*0.5 , (max[0]-min[0])*0.5  ));
-                       
-       rootBody->bodies->insert(piston);
-       rootBody->bodies->insert(supportBox1);
-       rootBody->bodies->insert(supportBox2);
-
 /////////////////////////////////////
-        
-       {// insert Spheres
-               BodyContainer::iterator bi    = 
metaBodyWithSpheres->bodies->begin();
-               BodyContainer::iterator biEnd = 
metaBodyWithSpheres->bodies->end();
-               for( ; bi!=biEnd ; ++bi )
-               {
-                       if((*bi)->geometricalModel->getClassName() == "Sphere" )
-                       {
-                               shared_ptr<Body> b = *bi;
-                               rootBody->bodies->insert(b);
-                       }
-               }
-       }
-       
-/////////////////////////////////////
 
        rootBody->persistentInteractions->clear();
        
@@ -229,11 +178,7 @@
        BodyContainer::iterator biEnd = rootBody->bodies->end();
        BodyContainer::iterator bi2;
 
-       ++bi; // skips piston
-       ++bi; // skips supportBox1
-       ++bi; // skips supportBox2
-               
-               
+       Real interactionFactor=1.1;
        for( ; bi!=biEnd ; ++bi )
        {
                bodyA =*bi;
@@ -248,10 +193,10 @@
                        shared_ptr<InteractingSphere>   as = 
YADE_PTR_CAST<InteractingSphere>(bodyA->interactingGeometry);
                        shared_ptr<InteractingSphere>   bs = 
YADE_PTR_CAST<InteractingSphere>(bodyB->interactingGeometry);
 
-                       if ((a->se3.position - b->se3.position).Length() < 
(as->radius + bs->radius))  
+                       if ((a->se3.position-b->se3.position).Length() < 
interactionFactor*(as->radius+bs->radius))  
                        {
                                shared_ptr<Interaction>                 
link(new Interaction( bodyA->getId() , bodyB->getId() ));
-                               shared_ptr<SDECLinkGeometry>            
geometry(new SDECLinkGeometry);
+                               shared_ptr<SpheresContactGeometry>              
geometry(new SpheresContactGeometry);
                                shared_ptr<SDECLinkPhysics>     physics(new 
SDECLinkPhysics);
                                
                                geometry->radius1                       = 
as->radius - fabs(as->radius - bs->radius)*0.5;
@@ -273,10 +218,40 @@
                        }
                }
        }
+
+       // specimen supports
+       shared_ptr<Body> piston;
+       shared_ptr<Body> supportBox1;
+       shared_ptr<Body> supportBox2;
+
+       Real dimX=max[0]-min[0], dimY=max[1]-min[1], dimZ=max[2]-min[2];
+       Vector3r center=.5*(max+min);
+
+       createBox(piston,
+               Vector3r(center[0],center[1],max[2]+.5*dimZ),
+               Vector3r(.75*dimX,.05*dimY,.5*dimZ));
+       createBox(supportBox1,
+               Vector3r(center[0],min[1],min[2]-.5*dimZ),
+               Vector3r(.5*dimX,.1*dimY,.5*dimZ));
+       createBox(supportBox2,
+               Vector3r(center[0],max[1],min[2]-.5*dimZ),
+               Vector3r(.5*dimX,.1*dimY,.5*dimZ));
+                       
+       rootBody->bodies->insert(piston);
+       rootBody->bodies->insert(supportBox1);
+       rootBody->bodies->insert(supportBox2);
+
+       FOREACH(const shared_ptr<Engine>& e, rootBody->engines){
+               if(e->getClassName()!="TranslationEngine") continue;
+               shared_ptr<TranslationEngine> 
te=YADE_PTR_CAST<TranslationEngine>(e);
+               te->subscribedBodies.clear(); 
te->subscribedBodies.push_back(piston->getId());
+       }
+
        
        message="total number of permament links created: " 
                + 
lexical_cast<string>(rootBody->persistentInteractions->size()) 
-               + "\nWARNING: link bonds are nearly working, but the formulas 
are waiting for total rewrite!";
+               + "\nWARNING: link bonds are nearly working, but the formulas 
are waiting for total rewrite!"+
+               +"\nWARNING: The results are meaningless, since 
ElasticCohesiveLaw works only with (unused) SDECLinkGeometry.";
        return true;
 }
 
@@ -289,9 +264,6 @@
        shared_ptr<Box> gBox(new Box);
        shared_ptr<InteractingBox> iBox(new InteractingBox);
        
-       Quaternionr q;
-       q.FromAxisAngle( Vector3r(0,0,1),0);
-
        body->isDynamic                 = false;
        
        physics->angularVelocity        = Vector3r(0,0,0);
@@ -302,9 +274,7 @@
                                                        , 
physics->mass*(extents[0]*extents[0]+extents[2]*extents[2])/3
                                                        , 
physics->mass*(extents[1]*extents[1]+extents[0]*extents[0])/3
                                                );
-//     physics->mass                   = 0;
-//     physics->inertia                = Vector3r(0,0,0);
-       physics->se3                    = Se3r(position,q);
+       physics->se3                    = Se3r(position,Quaternionr::IDENTITY);
        physics->young                  = sphereYoungModulus;
        physics->poisson                = spherePoissonRatio;
        physics->frictionAngle          = sphereFrictionDeg * Mathr::PI/180.0;
@@ -345,9 +315,6 @@
        boundingVolumeDispatcher->add("InteractingBox2AABB");
        boundingVolumeDispatcher->add("MetaInteractingGeometry2AABB");
                
-       shared_ptr<GravityEngine> gravityCondition(new GravityEngine);
-       gravityCondition->gravity = gravity;
-       
        shared_ptr<CundallNonViscousForceDamping> actionForceDamping(new 
CundallNonViscousForceDamping);
        actionForceDamping->damping = dampingForce;
        shared_ptr<CundallNonViscousMomentumDamping> actionMomentumDamping(new 
CundallNonViscousMomentumDamping);
@@ -372,8 +339,8 @@
 // moving wall
        shared_ptr<TranslationEngine> kinematic = 
shared_ptr<TranslationEngine>(new TranslationEngine);
        kinematic->velocity  = pistonVelocity;
-       kinematic->translationAxis  = Vector3r(0,-1,0);
-       kinematic->subscribedBodies.push_back(0);
+       kinematic->translationAxis  = Vector3r(0,0,-1);
+       // subscribed bodies will be initialized later
 
        shared_ptr<ElasticContactLaw> constitutiveLaw(new ElasticContactLaw);
        constitutiveLaw->sdecGroupMask = 55;
@@ -392,7 +359,6 @@
        rootBody->engines.push_back(interactionPhysicsDispatcher);
        rootBody->engines.push_back(constitutiveLaw);
        rootBody->engines.push_back(constitutiveLaw2);
-       rootBody->engines.push_back(gravityCondition);
        rootBody->engines.push_back(actionDampingDispatcher);
        rootBody->engines.push_back(applyActionDispatcher);
        rootBody->engines.push_back(positionIntegrator);
Index: pkg/dem/PreProcessor/ThreePointBending.hpp
===================================================================
--- pkg/dem/PreProcessor/ThreePointBending.hpp  (revision 1458)
+++ pkg/dem/PreProcessor/ThreePointBending.hpp  (revision 1459)
@@ -18,11 +18,8 @@
 {
        private :
                std::string      yadeFileWithSpheres;
-               Vector3r         gravity;
 
-               Real             supportDepth
-                               ,pistonWidth
-                               ,pistonVelocity
+               Real pistonVelocity
                                ,dampingForce
                                ,dampingMomentum
 
Index: pkg/dem/PreProcessor/ModifiedTriaxialTest.cpp
===================================================================
--- pkg/dem/PreProcessor/ModifiedTriaxialTest.cpp       (revision 1458)
+++ pkg/dem/PreProcessor/ModifiedTriaxialTest.cpp       (revision 1459)
@@ -15,7 +15,6 @@
 #include<yade/pkg-dem/ElasticContactLaw.hpp>
 #include<yade/pkg-dem/SimpleElasticRelationships.hpp>
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/SDECLinkPhysics.hpp>
 #include<yade/pkg-dem/GlobalStiffnessCounter.hpp>
 #include<yade/pkg-dem/GlobalStiffnessTimeStepper.hpp>
Index: pkg/dem/PreProcessor/SDECMovingWall.cpp
===================================================================
--- pkg/dem/PreProcessor/SDECMovingWall.cpp     (revision 1458)
+++ pkg/dem/PreProcessor/SDECMovingWall.cpp     (revision 1459)
@@ -12,7 +12,6 @@
 
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
 #include<yade/pkg-dem/ElasticContactLaw.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/MacroMicroElasticRelationships.hpp>
 #include<yade/pkg-dem/ElasticCriterionTimeStepper.hpp>
 #include<yade/pkg-dem/PositionOrientationRecorder.hpp>
Index: pkg/dem/PreProcessor/SDECSpheresPlane.cpp
===================================================================
--- pkg/dem/PreProcessor/SDECSpheresPlane.cpp   (revision 1458)
+++ pkg/dem/PreProcessor/SDECSpheresPlane.cpp   (revision 1459)
@@ -13,7 +13,6 @@
 
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
 #include<yade/pkg-dem/ElasticContactLaw.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/MacroMicroElasticRelationships.hpp>
 #include<yade/pkg-dem/ElasticCriterionTimeStepper.hpp>
 #include<yade/pkg-dem/PositionOrientationRecorder.hpp>
Index: pkg/dem/PreProcessor/DirectShearCis.cpp
===================================================================
--- pkg/dem/PreProcessor/DirectShearCis.cpp     (revision 1458)
+++ pkg/dem/PreProcessor/DirectShearCis.cpp     (revision 1459)
@@ -17,7 +17,6 @@
 
 #include <yade/pkg-dem/BodyMacroParameters.hpp>
 #include <yade/pkg-dem/ElasticContactLaw.hpp>
-#include <yade/pkg-dem/SDECLinkGeometry.hpp>
 #include <yade/pkg-dem/MacroMicroElasticRelationships.hpp>
 #include <yade/pkg-dem/SimpleElasticRelationships.hpp>
 #include <yade/pkg-dem/ElasticCriterionTimeStepper.hpp>
Index: pkg/dem/PreProcessor/SDECLinkedSpheres.cpp
===================================================================
--- pkg/dem/PreProcessor/SDECLinkedSpheres.cpp  (revision 1458)
+++ pkg/dem/PreProcessor/SDECLinkedSpheres.cpp  (revision 1459)
@@ -19,8 +19,8 @@
 #include<yade/pkg-dem/ElasticCohesiveLaw.hpp>
 #include<yade/pkg-dem/MacroMicroElasticRelationships.hpp>
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/SDECLinkPhysics.hpp>
+#include<yade/pkg-dem/SpheresContactGeometry.hpp>
 #include<yade/pkg-dem/ElasticCriterionTimeStepper.hpp>
 
 
@@ -188,7 +188,7 @@
                        if ((a->se3.position - b->se3.position).Length() < 
(as->radius + bs->radius))  
                        {
                                shared_ptr<Interaction>                 
link(new Interaction( bodyA->getId() , bodyB->getId() ));
-                               shared_ptr<SDECLinkGeometry>            
geometry(new SDECLinkGeometry);
+                               shared_ptr<SpheresContactGeometry>              
geometry(new SpheresContactGeometry);
                                shared_ptr<SDECLinkPhysics>     physics(new 
SDECLinkPhysics);
                                
                                geometry->radius1                       = 
as->radius - fabs(as->radius - bs->radius)*0.5;
@@ -213,7 +213,8 @@
        
        message="total number of permament links created: " 
                + 
lexical_cast<string>(rootBody->persistentInteractions->size()) 
-               + "\nWARNING: link bonds are nearly working, but the formulas 
are waiting for total rewrite!";
+               + "\nWARNING: link bonds are nearly working, but the formulas 
are waiting for total rewrite!"
+               +"\nWARNING: interactions will not generate any force since we 
use SpheresContactGeometry instead of SDECLinkGeometry now.";
        return true;
 }
 
Index: pkg/dem/PreProcessor/CohesiveTriaxialTest.cpp
===================================================================
--- pkg/dem/PreProcessor/CohesiveTriaxialTest.cpp       (revision 1458)
+++ pkg/dem/PreProcessor/CohesiveTriaxialTest.cpp       (revision 1459)
@@ -15,7 +15,6 @@
 #include<yade/pkg-dem/CohesiveFrictionalContactLaw.hpp>
 #include<yade/pkg-dem/CohesiveFrictionalRelationships.hpp>
 #include<yade/pkg-dem/CohesiveFrictionalBodyParameters.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/SDECLinkPhysics.hpp>
 #include<yade/pkg-dem/GlobalStiffnessCounter.hpp>
 #include<yade/pkg-dem/GlobalStiffnessTimeStepper.hpp>
Index: pkg/dem/PreProcessor/SDECImpactTest.cpp
===================================================================
--- pkg/dem/PreProcessor/SDECImpactTest.cpp     (revision 1458)
+++ pkg/dem/PreProcessor/SDECImpactTest.cpp     (revision 1459)
@@ -13,7 +13,6 @@
 #include<yade/pkg-dem/ElasticContactLaw.hpp>
 #include<yade/pkg-dem/MacroMicroElasticRelationships.hpp>
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/SDECLinkPhysics.hpp>
 #include<yade/pkg-dem/ElasticCriterionTimeStepper.hpp>
 
Index: pkg/dem/PreProcessor/TriaxialTest.cpp
===================================================================
--- pkg/dem/PreProcessor/TriaxialTest.cpp       (revision 1458)
+++ pkg/dem/PreProcessor/TriaxialTest.cpp       (revision 1459)
@@ -19,7 +19,6 @@
 #include<yade/pkg-dem/ElasticCohesiveLaw.hpp>
 #include<yade/pkg-dem/SimpleElasticRelationships.hpp>
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/SDECLinkPhysics.hpp>
 #include<yade/pkg-dem/GlobalStiffnessCounter.hpp>
 #include<yade/pkg-dem/GlobalStiffnessTimeStepper.hpp>
Index: pkg/dem/PreProcessor/HydraulicTest.cpp
===================================================================
--- pkg/dem/PreProcessor/HydraulicTest.cpp      (revision 1458)
+++ pkg/dem/PreProcessor/HydraulicTest.cpp      (revision 1459)
@@ -15,7 +15,6 @@
 #include<yade/pkg-dem/CohesiveFrictionalContactLaw.hpp>
 #include<yade/pkg-dem/CohesiveFrictionalRelationships.hpp>
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/SDECLinkPhysics.hpp>
 #include<yade/pkg-dem/ElasticCriterionTimeStepper.hpp>
 #include<yade/pkg-dem/PositionOrientationRecorder.hpp>
Index: pkg/dem/PreProcessor/Funnel.cpp
===================================================================
--- pkg/dem/PreProcessor/Funnel.cpp     (revision 1458)
+++ pkg/dem/PreProcessor/Funnel.cpp     (revision 1459)
@@ -10,7 +10,6 @@
 
 #include<yade/pkg-dem/BodyMacroParameters.hpp>
 #include<yade/pkg-dem/ElasticContactLaw.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
 #include<yade/pkg-dem/MacroMicroElasticRelationships.hpp>
 #include<yade/pkg-dem/ElasticCriterionTimeStepper.hpp>
 
Index: pkg/dem/SConscript
===================================================================
--- pkg/dem/SConscript  (revision 1458)
+++ pkg/dem/SConscript  (revision 1459)
@@ -510,6 +510,7 @@
                        'MetaInteractingGeometry',
                        'GravityEngines',
                        'yade-serialization',
+                       'SpheresContactGeometry',
                        'yade-base',
                        
                        'PhysicalActionContainerInitializer',
@@ -791,6 +792,7 @@
                        'GravityEngines',
                        'yade-serialization',
                        'yade-base',
+                       'Shop',
                        
                        'PhysicalActionContainerInitializer',
                        'PhysicalActionContainerReseter',
Index: extra/clump/Shop.cpp
===================================================================
--- extra/clump/Shop.cpp        (revision 1458)
+++ extra/clump/Shop.cpp        (revision 1459)
@@ -65,8 +65,6 @@
 
 #include<yade/pkg-dem/SpheresContactGeometry.hpp>
 #include<yade/pkg-dem/ElasticContactInteraction.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
-#include<yade/pkg-dem/SDECLinkPhysics.hpp>
 
 #include<yade/lib-opengl/OpenGLWrapper.hpp>
 #include<yade/lib-QGLViewer/qglviewer.h>
Index: extra/BrefcomTestGen.cpp
===================================================================
--- extra/BrefcomTestGen.cpp    (revision 1458)
+++ extra/BrefcomTestGen.cpp    (revision 1459)
@@ -62,8 +62,6 @@
 
 #include<yade/pkg-dem/SpheresContactGeometry.hpp>
 #include<yade/pkg-dem/ElasticContactInteraction.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
-#include<yade/pkg-dem/SDECLinkPhysics.hpp>
 
 */
 
@@ -98,7 +96,7 @@
 
        shared_ptr<InteractionPhysicsMetaEngine> iphysDispatcher(new 
InteractionPhysicsMetaEngine);
                shared_ptr<BrefcomMakeContact> bmc(new BrefcomMakeContact);
-               bmc->cohesiveThresholdIter=-1; bmc->G_over_E=1; 
bmc->expBending=1; bmc->xiShear=.8; bmc->sigmaT=3e9; bmc->neverDamage=true; 
bmc->epsCrackOnset=1e-4; bmc->relDuctility=5;
+               bmc->cohesiveThresholdIter=-1; bmc->G_over_E=1; 
bmc->expBending=1; bmc->xiShear=.8; bmc->sigmaT=3e9; bmc->neverDamage=true; 
bmc->epsCrackOnset=1e-4; bmc->relDuctility=5; bmc->transStrainCoeff=.5;
                //bmc->calibratedEpsFracture=.5; /* arbitrary, but large enough 
*/
                iphysDispatcher->add(bmc);
        rootBody->engines.push_back(iphysDispatcher);
Index: extra/usct/UniaxialStrainControlledTest.cpp
===================================================================
--- extra/usct/UniaxialStrainControlledTest.cpp (revision 1458)
+++ extra/usct/UniaxialStrainControlledTest.cpp (revision 1459)
@@ -5,8 +5,6 @@
 #include<yade/pkg-common/Box.hpp>
 #include<yade/pkg-common/InteractingBox.hpp>
 #include<yade/pkg-common/AABB.hpp>
-#include<yade/pkg-dem/SDECLinkGeometry.hpp>
-#include<yade/pkg-dem/SDECLinkPhysics.hpp>
 #include<yade/extra/Brefcom.hpp>
 #include<boost/foreach.hpp>
 

_______________________________________________
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