示例#1
0
void ParticleSystem::Update(float deltaTime){
    
    UpdateGrid();
    clearAcceleration();
    computeDenisty();
    computePressure();
    checkWallCollisions();
    step(deltaTime);
}
示例#2
0
文件: fluid.c 项目: olcf/SPH_Simple
void updatePressures(fluid_particle *fluid_particles, param *params)
{
    int num_particles = params->number_fluid_particles;

    #pragma omp parallel for firstprivate(num_particles) shared(fluid_particles, params) default(none)
    for(int i=0; i<num_particles; i++) {
        double3 p_pos = fluid_particles[i].pos;
        double3 p_v   = fluid_particles[i].v;
        double density = fluid_particles[i].density;

        for(int j=0; j<num_particles; j++) {
            double3 q_pos = fluid_particles[j].pos;
            double3 q_v   = fluid_particles[j].v;
            density += computeDensity(p_pos,p_v,q_pos,q_v, params);
        }
        fluid_particles[i].density = density;
        fluid_particles[i].pressure = computePressure(density, params);
    }
}
示例#3
0
void updatePressures(fluid_particle *fluid_particles, param *params)
{
    int num_particles = params->number_fluid_particles;

    // Hint: Parallelize this loop
    for(int i=0; i<num_particles; i++) {
        double3 p_pos = fluid_particles[i].pos;
        double3 p_v   = fluid_particles[i].v;
        double density = fluid_particles[i].density;

        for(int j=0; j<num_particles; j++) {
            double3 q_pos = fluid_particles[j].pos;
            double3 q_v   = fluid_particles[j].v;
            density += computeDensity(p_pos,p_v,q_pos,q_v, params);
        }
        fluid_particles[i].density = density;
        fluid_particles[i].pressure = computePressure(density, params);
    }
}
示例#4
0
void updatePressures(fluid_particle *fluid_particles, param *params)
{
    int num_particles = params[0].number_fluid_particles;

   #pragma acc parallel loop default(present)
    for(int i=0; i<num_particles; i++) {
        double3 p_pos = fluid_particles[i].pos;
        double3 p_v   = fluid_particles[i].v;
        double density = fluid_particles[i].density;

        for(int j=0; j<num_particles; j++) {
            double3 q_pos = fluid_particles[j].pos;
            double3 q_v   = fluid_particles[j].v;
            density += computeDensity(p_pos,p_v,q_pos,q_v, params[0].mass_particle,params[0].smoothing_radius,params[0].time_step);
        }
        fluid_particles[i].density = density;
        fluid_particles[i].pressure = computePressure(density, params[0].rest_density,params[0].speed_sound);
    }
}