domain_volumes, domain_shells, plane_strain, plane_stress, axisymmetry, save_iteration_results, i, reference_points, shells_as_composite, optimization_base, displacement_graph, domain_FI_filled) # running CalculiX analysis subprocess.call([os.path.normpath(path_calculix), file_nameW], cwd=path) # reading results and computing failure indeces if (reference_points == "integration points") or (optimization_base == "stiffness") or \ (optimization_base == "buckling") or (optimization_base == "heat"): # from .dat file [FI_step, energy_density_step, disp_i, buckling_factors, energy_density_eigen, heat_flux] = \ beso_lib.import_FI_int_pt(reference_value, file_nameW, domains, criteria, domain_FI, file_name, elm_states, domains_from_config, steps_superposition, displacement_graph) if reference_points == "nodes": # from .frd file FI_step = beso_lib.import_FI_node(reference_value, file_nameW, domains, criteria, domain_FI, file_name, elm_states, steps_superposition) disp_i = beso_lib.import_displacement(file_nameW, displacement_graph, steps_superposition) disp_max.append(disp_i) if (not FI_step and domain_FI_filled) and (not energy_density_step) and (not buckling_factors): msg = "CalculiX results not found, check CalculiX for errors." beso_lib.write_to_log(file_name, "\nERROR: " + msg + "\n") assert False, msg if domain_FI_filled: FI_max.append({}) for dn in domains_from_config: FI_max[i][dn] = 0 for en in domains[dn]: for sn in range(len(FI_step)): try: FI_step_en = list(filter(lambda a: a is not None, FI_step[sn][en])) # drop None FI FI_max[i][dn] = max(FI_max[i][dn], max(FI_step_en))
domain_optimized, domain_thickness, domain_offset, domain_orientation, domain_material, domain_volumes, domain_shells, plane_strain, plane_stress, axisymmetry, save_iteration_results, i, reference_points, shells_as_composite, optimization_base, displacement_graph) # running CalculiX analysis subprocess.call(os.path.normpath(path_calculix) + " " + file_nameW, shell=True, cwd=path) # reading results and computing failure indeces if reference_points == "integration points": # from .dat file [FI_step, energy_density_step, disp_i] = beso_lib.import_FI_int_pt(reference_value, file_nameW, domains, criteria, domain_FI, file_name, elm_states, domains_from_config, steps_superposition, displacement_graph) elif reference_points == "nodes": # from .frd file FI_step = beso_lib.import_FI_node(reference_value, file_nameW, domains, criteria, domain_FI, file_name, elm_states, steps_superposition) disp_i = beso_lib.import_displacement(file_nameW, displacement_graph, steps_superposition) disp_max.append(disp_i) if not FI_step: msg = "CalculiX results not found, check CalculiX for errors." beso_lib.write_to_log(file_name, "\nERROR: " + msg + "\n") assert False, msg FI_max.append({}) for dn in domains_from_config: FI_max[i][dn] = 0 for en in domains[dn]: for sn in range(len(FI_step)): try: FI_step_en = list(filter(lambda a: a is not None, FI_step[sn][en])) # drop None FI FI_max[i][dn] = max(FI_max[i][dn], max(FI_step_en)) except ValueError: