""" 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)
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)
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',