penalties_oopo = 0 if constraints.oopo and calculate_penalty: penalties_oopo = (abs(lampam[10]) + abs(lampam[11])) / 2 return cummul_sec_mom_areas * penalties_oopo if __name__ == "__main__": ss = np.array([0, 45, 45, -45, -45, 90, 45, 90]) ss = np.hstack((ss, np.flip(ss, axis=0))) lampam = calc_lampam(ss) E11 = 130e9 E22 = 9e9 nu12 = 0.3 G12 = 4e9 threshold = 0.01 mat = Material(E11=E11, E22=E22, G12=G12, nu12=nu12) sym = False print( """*** Test for the functions calc_penalty_ipo_param and ipo_param***\n""" ) param = ipo_param_1_6(lampam, mat, sym) print(f'In-plane orthotropy parameters = \n {param[0:6]}\n') print(f'calc_penalty_ipo : {calc_penalty_ipo_param(param, threshold)}\n') param = ipo_param_7_12(lampam, mat, sym) print(f'In-plane orthotropy parameters = \n {param[0:6]}\n') print(f'calc_penalty_ipo : {calc_penalty_ipo_param(param, threshold)}\n') param = ipo_param_1_12(lampam, mat, sym) print( f'In-plane orthotropy parameters = \n {param[0:6]} \n{param[6:12]}\n') print(f'calc_penalty_ipo : {calc_penalty_ipo_param(param, threshold)}\n')
n_contig=n_contig, delta_angle=delta_angle, set_of_angles=set_of_angles) #============================================================================== # Material properties #============================================================================== # Elastic modulus in the fibre direction (Pa) E11 = 130e9 # Elastic modulus in the transverse direction (Pa) E22 = 9e9 # Poisson's ratio relating transverse deformation and axial loading (-) nu12 = 0.3 # In-plane shear modulus (Pa) G12 = 4e9 mat_prop = Material(E11=E11, E22=E22, G12=G12, nu12=nu12) #============================================================================== # Optimiser Parameters #============================================================================== # number of outer loops n_outer_step = 1 # branching limit for global pruning during ply orientation optimisation global_node_limit = 8 # branching limit for local pruning during ply orientation optimisation local_node_limit = 8 # branching limit for global pruning at the penultimate level during ply # orientation optimisation global_node_limit_p = 8 # branching limit for local pruning at the last level during ply
# Elastic modulus in the fibre direction in Pa E11 = 20.5 / 1.45038e-10 # 141 GPa # Elastic modulus in the transverse direction in Pa E22 = 1.31 / 1.45038e-10 # 9.03 GPa # Poisson's ratio relating transverse deformation and axial loading (-) nu12 = 0.32 # In-plane shear modulus in Pa G12 = 0.62 / 1.45038e-10 # 4.27 GPa # Density in g/m2 density_area = 300.5 # Ply thickness in m ply_t = (25.40 / 1000) * 0.0075 # 0.191 mmm mat = Material(E11=E11, E22=E22, G12=G12, nu12=nu12, density_area=density_area, ply_t=ply_t) #============================================================================== # Stacking sequences #============================================================================== n_values = 100 theta = np.linspace(-90, 90, n_values, endpoint=True) lampam = np.zeros((n_values, 12), float) D11 = np.zeros((n_values, ), float) D22 = np.zeros((n_values, ), float) D12 = np.zeros((n_values, ), float) D66 = np.zeros((n_values, ), float) buck = np.zeros((n_values, ), float)