Example #1
0
void GearsFixture::generate_mesh() {

  // Parallel collective call:
  bulk_data.modification_begin();

  const unsigned p_size = bulk_data.parallel_size();
  const unsigned p_rank = bulk_data.parallel_rank();

  //create the gears on a line
  for( size_t i = 0; i < m_gears.size(); ++i) {
    if (( (i*p_size)/m_gears.size()) == p_rank) {
      Gear & gear = get_gear(i);
      gear.generate_gear();
    } else {
      // Parallel synchronization:
      std::vector<size_t> empty_requests(meta_data.entity_rank_count(), 0);
      EntityVector empty_entities;
      bulk_data.generate_new_entities(empty_requests, empty_entities);
    }
  }

  // Parallel collective call:
  bulk_data.modification_end();

  // Parallel collective call:
  communicate_model_fields();

  for ( size_t i = 0 ; i < m_gears.size() ; ++i ) {
    // Parallel collective call:
    distribute_gear_across_processors(get_gear(i),cylindrical_coord_field);
  }

}
Example #2
0
CarControl
Stuck::drive(CarState &cs) {
    ++elapsed_ticks;

    track_initial_pos = getInitialPos(cs);

    if(notStuckAnymore(cs) || hasBeenStuckLongEnough()) {
        elapsed_ticks = 0;
        slow_speed_ticks = 0;
        track_initial_pos = 0;
    }

    int gear = get_gear(cs);
    float accel  = get_accel(cs);
    float brake = get_brake(cs);
    float clutch = get_clutch(cs);
    const int focus = 0, meta = 0;
    float steer = auxSteer(track_initial_pos, cs);

    return CarControl(accel, brake, gear, steer, clutch, focus, meta);
}