"""
We now have our solution, but it's a solution object so we need to 
read it out and store the solution in a way that is readable to us. 
We are going to create ``.hdf5`` and ``.xdmf`` files that contain 
the results.
"""

# Initializing an empty dictionary
solution_writer = dict()

# Save all items from the solution object in the dictionary
for i_prob, local_problem in solution_obj.local_problems.items():
    solution_writer[i_prob] = AmfeSolution()
    q = local_problem.q
    msys = substructured_system.mechanical_systems[i_prob]
    if i_prob in substructured_system.constraint_formulations:
        formulation = substructured_system.constraint_formulations[i_prob]
        u, du, ddu = formulation.recover(q, np.zeros_like(q), np.zeros_like(q),
                                         0)
    else:
        u = q
        du = np.zeros_like(u)
    strains, stresses = structural_composite.components[
        i_prob].strains_and_stresses(u, du, 0)
    solution_writer[i_prob].write_timestep(0, u, None, None, strains, stresses)

# Export the items in files readable in Paraview
for i_comp, comp in structural_composite.components.items():
    path = output_path + '/Component_' + str(i_comp)
    ui.write_results_to_paraview(solution_writer[i_comp], comp, path)
Esempio n. 2
0
                              E=210E9,
                              nu=0.3,
                              rho=1E4,
                              plane_stress=True)

ui.assign_material_by_group(model, material, 'material')

ui.set_dirichlet_by_group(model, 'dirichlet', ('ux'), 'Dirichlet_x')
ui.set_dirichlet_by_nodeids(model, [1], ('uy'), 'Dirichlet_y')

F = constant_force(5E7)
ui.set_neumann_by_group(model, 'neumann', np.array([0.0, -1.0]), 'Load', F)

solution_writer = ui.solve_linear_static(model)

ui.write_results_to_paraview(solution_writer, model,
                             amfe_dir('results/gmsh/ui_example_beam_linear'))

###################################################
###  Nonlinear heterogeneous cantilever beam    ###
###################################################

mesh_file = amfe_dir('meshes/gmsh/compositeBeam_50x10.msh')
mesh = ui.import_mesh_from_file(mesh_file)

model = ui.create_structural_component(mesh)

aluminium = ui.create_material('Kirchhoff',
                               E=70E9,
                               nu=0.3,
                               rho=1E4,
                               plane_stress=True)
Esempio n. 3
0
ui.set_dirichlet_by_group(model, 'dirichlet', ('ux'), 'Dirichlet_x')
ui.set_dirichlet_by_nodeids(model, [1], ('uy'), 'Dirichlet_y')

F = constant_force(5E7)
ui.set_neumann_by_group(model,
                        'neumann',
                        np.array([0.0, -1.0]),
                        neumann_name='Load',
                        f=F)

system, formulation = ui.create_constrained_mechanical_system_from_component(
    model, all_linear=True)
solution_container = ui.solve_linear_static(system, formulation, model)

ui.write_results_to_paraview(solution_container, model,
                             amfe_dir('results/gmsh/ui_example_beam_linear'))

###########################################################
#      Dynamic linear heterogeneous cantilever beam       #
###########################################################

model = ui.create_structural_component(mesh)

ui.assign_material_by_group(model, material, 'material')

ui.set_dirichlet_by_group(model, 'dirichlet', ('ux'), 'Dirichlet_x')
ui.set_dirichlet_by_nodeids(model, [1], ('uy'), 'Dirichlet_y')

F = triangular_force(0, 0.01, 0.02, 1E7)
ui.set_neumann_by_group(model,
                        'neumann',