Esempio n. 1
0
void selection_sort(int arr[],int size) {
     int n=size;
     int i,l;
     for(i=0;i<n;i++) {

     l= min_term(arr,i,n);
      swap(&arr[l],&arr[i]);
     }
}
Esempio n. 2
0
double calc_max_time_step(const HydroSnapshot& hs,
                          const EquationOfState& eos)
{
    /*
    class MaxTimeStepCalculator: public Index2Member<pair<bool,double> >
    {
    public:

      MaxTimeStepCalculator(const HydroSnapshot& hs_i,
    		  const EquationOfState& eos_i):
        hs_(hs_i), eos_(eos_i) {}

      size_t getLength(void) const
      {
        return hs_.cells.size();
      }

      pair<bool,double> operator()(size_t i) const
      {
        const double width = hs_.grid[i+1] - hs_.grid[i];
        const Primitive& cell = hs_.cells[i];
        const double max_speed = fabs(cell.velocity)+
    eos_.dp2c(cell.density, cell.pressure);
        return width/max_speed;
      }

    private:
      const HydroSnapshot& hs_;
      const EquationOfState& eos_;
    } max_time_step_calculator(hs,eos);
    return min_term(serial_generate(max_time_step_calculator));*/

    vector<double> valid_time_steps;
    for(size_t i=0; i<hs.cells.size(); ++i) {
        const Primitive cell = hs.cells[i];
        const double max_speed = fabs(cell.velocity)+
                                 eos.dp2c(cell.density, cell.pressure);
        if(std::numeric_limits<double>::epsilon()<max_speed) {
            const double width = hs.grid[i+1] - hs.grid[i];
            assert(width>std::numeric_limits<double>::epsilon());
            valid_time_steps.push_back(width/max_speed);
        }
    }

    return min_term(valid_time_steps);
}