FI_max_all = max(FI_max_all, FI_max[i][dn]) if len(domains_from_config) > 1: msg += " " + str(FI_max_all).rjust(17, " ") for cn in range(len(displacement_graph)): msg += " " + str(disp_i[cn]).rjust(17, " ") if optimization_base == "buckling": for bf in buckling_factors: msg += " " + str(bf).rjust(17, " ") buckling_factors_all.append(buckling_factors) msg += "\n" beso_lib.write_to_log(file_name, msg) # export element values if save_iteration_results and np.mod(float(i), save_iteration_results) == 0: if "csv" in save_resulting_format: beso_lib.export_csv(domains_from_config, domains, criteria, FI_step, FI_step_max, file_nameW, cg, elm_states, sensitivity_number) if "vtk" in save_resulting_format: beso_lib.export_vtk(file_nameW, nodes, Elements, elm_states, sensitivity_number, criteria, FI_step, FI_step_max) # relative difference in a mean stress for the last 5 iterations must be < tolerance if len(FI_mean) > 5: difference_last = [] for last in range(1, 6): difference_last.append(abs(FI_mean[i] - FI_mean[i-last]) / FI_mean[i]) difference = max(difference_last) if check_tolerance is True: print("maximum relative difference in FI_mean for the last 5 iterations = {}" .format(difference)) if difference < tolerance: continue_iterations = False elif FI_mean[i] == FI_mean[i-1] == FI_mean[i-2]:
msg += " " + str(FI_mean[i]).rjust(17, " ") + " " + str(FI_mean_without_state0[i]).rjust(18, " ") FI_max_all = 0 for dn in domains_from_config: msg += " " + str(FI_max[i][dn]).rjust(17, " ") FI_max_all = max(FI_max_all, FI_max[i][dn]) if len(domains_from_config) > 1: msg += " " + str(FI_max_all).rjust(17, " ") for cn in range(len(displacement_graph)): msg += " " + str(disp_i[cn]).rjust(17, " ") msg += "\n" beso_lib.write_to_log(file_name, msg) # export element values if save_iteration_results and np.mod(float(i), save_iteration_results) == 0: if "csv" in save_resulting_format: beso_lib.export_csv(domains_from_config, domains, criteria, FI_step, FI_step_max, file_nameW, cg, elm_states, sensitivity_number) if "vtk" in save_resulting_format: beso_lib.export_vtk(file_nameW, nodes, Elements, elm_states, sensitivity_number, criteria, FI_step, FI_step_max) # relative difference in a mean stress for the last 5 iterations must be < tolerance if len(FI_mean) > 5: difference_last = [] for last in range(1, 6): difference_last.append(abs(FI_mean[i] - FI_mean[i-last]) / FI_mean[i]) difference = max(difference_last) if check_tolerance is True: print("maximum relative difference in FI_mean for the last 5 iterations = {}" .format(difference)) if difference < tolerance: continue_iterations = False elif FI_mean[i] == FI_mean[i-1] == FI_mean[i-2]: