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); } }
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); }