Beispiel #1
0
            "\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
Beispiel #3
0
                    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)
Beispiel #4
0
    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