//sets initial particle positions
    void setupInitialConditions()
    {
        //centrifugal acc. a=v^2/R;
        Mdouble R = 4.0;
        BaseParticle p;
        p.setSpecies(speciesHandler.getObject(0));
        p.setRadius(0.5);
        p.setPosition({R,0.5,0});
        particleHandler.copyAndAddObject(p);

        p.setRadius(0.5);
        p.setPosition({R,-0.5,0});
        //p.setVelocity({-sqrt(R)*s,sqrt(R)*c,0});
        p.setAngularVelocity({0,0,1});
        particleHandler.copyAndAddObject(p);
    }
Ejemplo n.º 2
0
    void setupInitialConditions()
	{
        relVelocity_ = 1e-1;
        setSystemDimensions(3);
        setParticleDimensions(3);
        setGravity(Vec3D(0,0,0));
        setTimeStep(5e-6 / 2.0);
        Mdouble R = 1e-3;
        setXMax( 2*R);
        setYMax(   R);
        setZMax(   R);
        setXMin(-2*R);
        setYMin(-R);
        setZMin(-R);

        species->setDensity(2000.0);
        species->setLoadingStiffness(1e2);
        species->setUnloadingStiffnessMax(1.5* species->getLoadingStiffness());
        species->setCohesionStiffness(species->getLoadingStiffness());
        species->setPenetrationDepthMax(0.05);
        species->setAdhesionStiffness(1e2);
        species->setAdhesionForceMax(1e-5*species->getAdhesionStiffness());
        species->setSlidingStiffness(1.2e1);
        species->setSlidingFrictionCoefficient(0.01);

        particleHandler.clear();
		BaseParticle P;
		P.setRadius(R);
        
		P.setPosition(Vec3D(-R-species->getInteractionDistance()/3,0,0));
		P.setVelocity(Vec3D(relVelocity_/2,0,0));
		particleHandler.copyAndAddObject(P);
		P.setPosition(Vec3D(R+species->getInteractionDistance()/3,0,0));
		P.setVelocity(Vec3D(-relVelocity_/2,0,0));
		particleHandler.copyAndAddObject(P);
        setName("AdhesiveForceUnitTest_ParticleParticleInteractionWithPlasticForces");
        setTimeMax(getTimeStep()*250*5);
        setFileType(FileType::ONE_FILE);
        setSaveCount(1);

    }
void AttackParticlePolicy::emitt()
{
    BaseParticle Particle = *this->emitter;
    Vec3 origPos = Particle.getPosition();

    float posX = origPos.x;
    float posY = origPos.y;
    float posZ = origPos.z;

    float dirX;
    float dirY;
    float dirZ;

    for(int i = 0; i < intensity; i++)
    {
        dirX = (float)rand() / (float)RAND_MAX -0.5f;
        dirY = (float)rand() / (float)RAND_MAX -0.5f;
        dirZ = (float)rand() / (float)RAND_MAX -0.5f;

        if(direction.x > 0)
        {
            direction.x += ((float)rand() / (float)RAND_MAX -0.1f);
        }
        else
        {
            direction.x -= ((float)rand() / (float)RAND_MAX -0.1f);
        }

        if(direction.z > 0)
        {
            direction.z += ((float)rand() / (float)RAND_MAX -0.1f);
        }
        else
        {
            direction.z -= ((float)rand() / (float)RAND_MAX -0.1f);
        }

        D3DXVec3Normalize(&direction, &direction);

        Particle.setDirection(direction);
        Particle.setPosition(Vec3(posX, posY, posZ));

        particles.insertLast(Particle);
    }
    recreateVertices = true;
}