body_names.append(read.structures_ID[ID]) # Creat each body of tyoe structure for i in range(num_bodies_struct): b = body.Body(struct_locations[i], struct_orientations[i], struct_ref_config, read.blob_radius) b.mobility_blobs = multi_bodies.set_mobility_blobs(read.mobility_blobs_implementation) b.ID = read.structures_ID[ID] multi_bodies_functions.set_slip_by_ID(b, slip) # Append bodies to total bodies list bodies.append(b) bodies = np.array(bodies) # Set some more variables num_of_body_types = len(body_types) num_bodies = bodies.size Nblobs = sum([x.Nblobs for x in bodies]) multi_bodies.mobility_vector_prod = multi_bodies.set_mobility_vector_prod(read.mobility_vector_prod_implementation) multi_bodies_functions.calc_blob_blob_forces = multi_bodies_functions.set_blob_blob_forces(read.blob_blob_force_implementation) multi_bodies_functions.calc_body_body_forces_torques = multi_bodies_functions.set_body_body_forces_torques(read.body_body_force_torque_implementation) multi_bodies.mobility_blobs = multi_bodies.set_mobility_blobs(read.mobility_blobs_implementation) # Write bodies information with open(read.output_name + '.bodies_info', 'w') as f: f.write('num_of_body_types ' + str(num_of_body_types) + '\n') f.write('body_names ' + str(body_names) + '\n') f.write('body_types ' + str(body_types) + '\n') f.write('num_bodies ' + str(num_bodies) + '\n') f.write('num_blobs ' + str(Nblobs) + '\n') # Calculate slip on blobs if multi_bodies.calc_slip is not None: slip = multi_bodies.calc_slip(bodies, Nblobs)