beam.g_c.plot(label='Minimum Potential', color = '.5', linestyle= '-') plt.plot(abaqus_data['coord'][:,0], abaqus_data['coord'][:,1], 'r', label='FEA', lw=3) plt.legend() plt.show() BRAKE def DOE_function(inputs): beam.g_c.D[2] = inputs['D2'] beam.g_c.D[3] = inputs['D3'] beam.update_child() return({'U': beam.U, 'W':beam.W, 'R':beam.R}) # Define points print(eulerBernoulle) problem = DOE(levels=20, driver='Full Factorial') problem.add_variable('D2', lower=0, upper=2*eulerBernoulle.g.D[2], type=float) problem.add_variable('D3', lower=2*eulerBernoulle.g.D[3], upper=0, type=float) problem.define_points() # Run for a function with dictionary as inputs problem.run(DOE_function, tracking=True) # Plot factor effects # problem.plot(xlabel=['D2', 'D3'], # ylabel=['Strain Energy']) # Plot domain eulerBernoulle.analytical_solutions() print(eulerBernoulle.g.D) problem.plot_contour('D2', 'D3', 'W', labels=['$D_2$', '$D_3$', 'Work']) plt.scatter(eulerBernoulle.g.D[2], eulerBernoulle.g.D[3], marker = '^',
from optimization_tools.DOE import DOE def convert_to_MPa(x): return x/1e6 problem = DOE(levels=5, driver='Full Factorial') problem.load('FullFactorial.txt', variables_names=['Al0', 'Al1'], outputs_names=['Weight', 'Lift', 'Drag', 'MaxMises', 'DispTip', 'EigenValue']) problem.find_influences(not_zero=True) problem.find_nadir_utopic(not_zero=True) print('Nadir: ', problem.nadir) print('Utopic: ', problem.utopic) problem.plot(xlabel=['$A_{l_0}$', '$A_{l_1}$'], ylabel=['Weight (N)', 'Lift (N)', 'Drag (N)', 'Max\nVonMises \n Stress (MPa)', 'Trailing edge\nDisplace-\nment (m)', 'Buckling\nEigenvalue'], process={"MaxMises": convert_to_MPa}, number_y=5) # Plot domain problem.plot_domain('Weight', 'Drag', pareto=[False, False])
[0, -1], ])) EB_solution = bc.concentrated_load[0][1]/(6*bp.young*bp.inertia) * \ np.array([0, 0, 3, -1]) mesh = mesh_1D(mesh_n=11, alpha=[1, 1], alpha_nodes=[0, 1]) curve_parent = poly(a=[0, 0, 0, 0]) curve_child = poly(a=EB_solution) beam = structure(curve_parent, curve_child, mesh, bp, bc) beam.calculate_position() eulerBernoulle = beam.r_c # DOE setup n = 10 problem = DOE(levels=n, driver='Full Factorial') problem.add_variable('a2', lower=-0.010, upper=-0.007, type=float) problem.add_variable('a3', lower=0.002, upper=.005, type=float) problem.define_points() print(problem.domain) coefficient_matrix = np.array( list(zip(problem.domain['a2'], problem.domain['a3']))) # Doe itself energy, residual = beam.sweep_geometries(coefficient_matrix, input_function=input_function, reorder=(n, n)) # Find my optimal bounds = np.array(((-0.010, 0.005), (-0.005, 0.005))) print('Calculating minimum') sol, fun = beam.find_stable(EB_solution[2:4],
import pickle def dummy_function(inputs): a = inputs['a'] b = inputs['b'] c = inputs['c'] x = inputs['x'] return ({ 'y': a * x**2 + b * x + c, 'z': (a * b**2) * x**2 + a**2 * b * x + c**2 }) # Define points problem = DOE(levels=5, driver='Full Factorial') problem.add_variable('a', lower=0.04, upper=0.2, type=float) problem.add_variable('b', lower=-0.4, upper=0.1, type=float) problem.add_variable('c', lower=-0.4, upper=0.1, type=float) problem.define_points() # Run for a function with dictionary as inputs problem.run(dummy_function, cte_input={'x': -2}) problem.find_influences(not_zero=True) problem.find_nadir_utopic(not_zero=True) print('Nadir: ', problem.nadir) print('Utopic: ', problem.utopic) # Plot factor effects problem.plot(xlabel=['a', 'b', 'c'], ylabel=['y (m)', 'z (m)'], number_y=5)
mesh = mesh_1D(alpha=[ 1 + analytical_solution, 1 + analytical_solution, 1 + analytical_solution ], alpha_nodes=[0, .5, 1], mesh_n=10) curve_parent = poly(coefficients) curve_child = poly(coefficients) beam = structure(curve_parent, curve_child, mesh, beam_properties, bc) strain = beam.strain() stress = beam.stress() n = 10 problem = DOE(levels=n, driver='Full Factorial') problem.add_variable('a1', lower=0, upper=.001, type=float) problem.add_variable('a2', lower=0, upper=.001, type=float) problem.define_points() print(problem.domain) strain_matrix = np.array( list(zip(problem.domain['a1'], problem.domain['a2'], problem.domain['a2']))) strain_x = np.array( list(zip(0 * np.ones(n * n), 0.5 * np.ones(n * n), 1 * np.ones(n * n)))) energy, residual = beam.sweep_strains(strain_matrix, strain_x, (n, n)) fig = plt.figure() print('strain', strain_matrix) x = np.resize(strain_matrix[:, 0], (n, n)) y = np.resize(strain_matrix[:, 1], (n, n))
from optimization_tools.DOE import DOE import time import pickle def dummy_function(inputs): a = inputs['a'] b = inputs['b'] c = inputs['c'] x = inputs['x'] return({'y': a*x**2 + b*x + c, 'z': (a*b**2)*x**2 + a**2*b*x + c**2}) # Define points problem = DOE(levels=5, driver='Full Factorial') problem.add_variable('a', lower=0.04, upper=0.2, type=float) problem.add_variable('b', lower=-0.4, upper=0.1, type=float) problem.add_variable('c', lower=-0.4, upper=0.1, type=float) problem.define_points() # Run for a function with dictionary as inputs problem.run(dummy_function, cte_input={'x': -2}) problem.find_influences(not_zero=True) problem.find_nadir_utopic(not_zero=True) print('Nadir: ', problem.nadir) print('Utopic: ', problem.utopic) # Plot factor effects problem.plot(xlabel=['a', 'b', 'c'],
from optimization_tools.DOE import DOE def convert_to_MPa(x): return x / 1e6 problem = DOE(levels=5, driver='Full Factorial') problem.load('FullFactorial.txt', variables_names=['Al0', 'Al1'], outputs_names=[ 'Weight', 'Lift', 'Drag', 'MaxMises', 'DispTip', 'EigenValue' ]) problem.find_influences(not_zero=True) problem.find_nadir_utopic(not_zero=True) print('Nadir: ', problem.nadir) print('Utopic: ', problem.utopic) problem.plot(xlabel=['$A_{l_0}$', '$A_{l_1}$'], ylabel=[ 'Weight (N)', 'Lift (N)', 'Drag (N)', 'Max\nVonMises \n Stress (MPa)', 'Trailing edge\nDisplace-\nment (m)', 'Buckling\nEigenvalue' ], process={"MaxMises": convert_to_MPa}, number_y=5) # Plot domain problem.plot_domain('Weight', 'Drag', pareto=[False, False])