コード例 #1
0
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 = '^',
コード例 #2
0
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])
コード例 #3
0
ファイル: beam_DOE.py プロジェクト: swartmilan/AeroPy
    [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],
コード例 #4
0
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)
コード例 #5
0
ファイル: bar_DOE.py プロジェクト: swartmilan/AeroPy
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))
コード例 #6
0
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'],
コード例 #7
0
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])