"\n\nError! Number of ranks {} does not match given partitioning {} x {} x {} = {}.\n\n" .format( n_ranks, variables.n_subdomains_x, variables.n_subdomains_y, variables.n_subdomains_z, variables.n_subdomains_x * variables.n_subdomains_y * variables.n_subdomains_z)) sys.exit(-1) # stride for sampling the 3D elements from the fiber data # here any number is possible sampling_stride_x = 1 sampling_stride_y = 1 sampling_stride_z = 2 # create the partitioning using the script in create_partitioned_meshes_for_settings.py result = create_partitioned_meshes_for_settings( variables.n_subdomains_x, variables.n_subdomains_y, variables.n_subdomains_z, fiber_file, load_fiber_data, sampling_stride_x, sampling_stride_y, sampling_stride_z, True, True) [ variables.meshes, variables.own_subdomain_coordinate_x, variables.own_subdomain_coordinate_y, variables.own_subdomain_coordinate_z, variables.n_fibers_x, variables.n_fibers_y, variables.n_points_whole_fiber ] = result n_points_3D_mesh_linear_global_x = sum([ n_sampled_points_in_subdomain_x(subdomain_coordinate_x) for subdomain_coordinate_x in range(variables.n_subdomains_x) ]) n_points_3D_mesh_linear_global_y = sum([ n_sampled_points_in_subdomain_y(subdomain_coordinate_y) for subdomain_coordinate_y in range(variables.n_subdomains_y)
n_subdomains_y = 1 n_subdomains_z = 1 # stride for sampling the 3D elements from the fiber data # here any number is possible sampling_stride_x = 7 sampling_stride_y = 7 sampling_stride_z = 500 sampling_stride_x = 1 sampling_stride_y = 1 sampling_stride_z = 100 # create the partitioning using the script in create_partitioned_meshes_for_settings.py result = create_partitioned_meshes_for_settings( n_subdomains_x, n_subdomains_y, n_subdomains_z, fiber_file, load_fiber_data, sampling_stride_x, sampling_stride_y, sampling_stride_z, generate_linear_3d_mesh=True, generate_quadratic_3d_mesh=True) #parse result [variables.meshes, variables.own_subdomain_coordinate_x, variables.own_subdomain_coordinate_y, variables.own_subdomain_coordinate_z, variables.n_fibers_x, variables.n_fibers_y, variables.n_points_whole_fiber] = result node_positions = variables.meshes["3Dmesh_quadratic"]["nodePositions"] #node_positions = variables.meshes["3Dmesh"]["nodePositions"] # material parameters # -------------------- # quantities in mechanics unit system rho = 10 # [1e-4 kg/cm^3] density of the muscle (density of water) # Mooney-Rivlin parameters [c1,c2,b,d] of c1*(Ibar1 - 3) + c2*(Ibar2 - 3) + b/d (λ - 1) - b*ln(λ) # Heidlauf13: [6.352e-10 kPa, 3.627 kPa, 2.756e-5 kPa, 43.373] = [6.352e-11 N/cm^2, 3.627e-1 N/cm^2, 2.756e-6 N/cm^2, 43.373], pmax = 73 kPa = 7.3 N/cm^2
for z in range(variables.n_points_whole_fiber): point = [ x * (float)(size_x) / (variables.n_fibers_x), y * (float)(size_y) / (variables.n_fibers_y), z * (float)(size_z) / (variables.n_points_whole_fiber) ] outfile.write( struct.pack('3d', point[0], point[1], point[2])) # data point variables.load_fiber_data = True # load all local node positions from fiber_file, in order to infer partitioning for fat_layer mesh # create the partitioning using the script in create_partitioned_meshes_for_settings.py result = create_partitioned_meshes_for_settings( variables.n_subdomains_x, variables.n_subdomains_y, variables.n_subdomains_z, variables.fiber_file, variables.load_fiber_data, variables.sampling_stride_x, variables.sampling_stride_y, variables.sampling_stride_z, variables.generate_linear_3d_mesh, variables.generate_quadratic_3d_mesh) [ variables.meshes, variables.own_subdomain_coordinate_x, variables.own_subdomain_coordinate_y, variables.own_subdomain_coordinate_z, variables.n_fibers_x, variables.n_fibers_y, variables.n_points_whole_fiber ] = result variables.n_subdomains_xy = variables.n_subdomains_x * variables.n_subdomains_y variables.n_fibers_total = variables.n_fibers_x * variables.n_fibers_y # create mappings between meshes variables.mappings_between_meshes = { "MeshFiber_{}".format(i): "3Dmesh" for i in range(variables.n_fibers_total)
variables.n_subdomains_z, ) include_global_node_positions = False if not os.path.exists(variables.relative_factors_file) and rank_no == 0: include_global_node_positions = True ############################# # create the partitioning using the script in create_partitioned_meshes_for_settings.py result = create_partitioned_meshes_for_settings( variables.n_subdomains_x, variables.n_subdomains_y, variables.n_subdomains_z, variables.fiber_file, variables.load_fiber_data, variables.sampling_stride_x, variables.sampling_stride_y, variables.sampling_stride_z, variables.generate_linear_3d_mesh, variables.generate_quadratic_3d_mesh, fiber_set_rank_nos=False, have_fibers=False, include_global_node_positions=include_global_node_positions) [ variables.meshes, variables.own_subdomain_coordinate_x, variables.own_subdomain_coordinate_y, variables.own_subdomain_coordinate_z, variables.n_fibers_x, variables.n_fibers_y, variables.n_points_whole_fiber ] = result variables.n_subdomains_xy = variables.n_subdomains_x * variables.n_subdomains_y variables.n_fibers_total = variables.n_fibers_x * variables.n_fibers_y