def f(x): wing_param.update_from_x_list(x) DLLM = DLLMTargetCl('Simple',wing_param,OC) DLLM.set_target_Cl(0.5) DLLM.run_direct() DLLM.run_post() func=DLLM.get_F_list() return func
def df(x): wing_param.update_from_x_list(x) DLLM = DLLMTargetCl('Simple',wing_param,OC) DLLM.set_target_Cl(0.5) DLLM.run_direct() DLLM.run_post() DLLM.run_adjoint() func_grad=numpy.array(DLLM.get_dF_list_dchi()) return func_grad
def test_DLLM_valid_TCl(self): OC, wing_param = self.__init_wing_param() DLLM = DLLMTargetCl('Simple', wing_param, OC) DLLM.set_target_Cl(0.5) DLLM.run_direct() DLLM.run_post() F_list = DLLM.get_F_list() F_list_names = DLLM.get_F_list_names() cl_index = F_list_names.index('Cl') Cl = F_list[cl_index] assert (abs(Cl - 0.5) < 1.e-10)
def test_DLLM_valid_TCl(self): OC,wing_param = self.__init_wing_param() DLLM = DLLMTargetCl('Simple',wing_param,OC) # F_list=DLLM.get_F_list() F_list_names=DLLM.get_F_list_names() DLLM.set_target_Cl(0.5) DLLM.run_direct() DLLM.run_post() F_list=DLLM.get_F_list() F_list_names=DLLM.get_F_list_names() cl_index = F_list_names.index('Cl') Cl=F_list[cl_index] assert(abs(Cl-0.5)<1.e-10)
def df1(x): wing_param.update_from_x_list(x) DLLM = DLLMTargetCl('Simple',wing_param,OC) DLLM.set_target_Cl(0.5) DLLM.run_direct() DLLM.run_post() DLLM.run_adjoint() func_grad=np.array(DLLM.get_dF_list_dchi()) N = func_grad.shape[0] ndv = func_grad.shape[1] out_grad = np.zeros((N,ndv)) for i in xrange(N): out_grad[i,:] = func_grad[i,:]/Ref_list[i] return out_grad
def test_DLLM_valid_grad_TCl(self): OC,wing_param = self.__init_wing_param() x0=wing_param.get_dv_array() DLLM = DLLMTargetCl('Simple',wing_param,OC) DLLM.set_target_Cl(0.5) DLLM.run_direct() DLLM.run_post() Ref_list=DLLM.get_F_list() def f1(x): wing_param.update_from_x_list(x) DLLM = DLLMTargetCl('Simple',wing_param,OC) DLLM.set_target_Cl(0.5) DLLM.run_direct() DLLM.run_post() func=DLLM.get_F_list() return func/Ref_list def df1(x): wing_param.update_from_x_list(x) DLLM = DLLMTargetCl('Simple',wing_param,OC) DLLM.set_target_Cl(0.5) DLLM.run_direct() DLLM.run_post() DLLM.run_adjoint() func_grad=np.array(DLLM.get_dF_list_dchi()) N = func_grad.shape[0] ndv = func_grad.shape[1] out_grad = np.zeros((N,ndv)) for i in xrange(N): out_grad[i,:] = func_grad[i,:]/Ref_list[i] return out_grad val_grad1=FDValidGrad(2,f1,df1,fd_step=1.e-8) ok1,df_fd1,df1=val_grad1.compare(x0,treshold=1.e-5,split_out=True,return_all=True) assert(ok1)
OC.set_P0(101325.) OC.set_humidity(0.) OC.compute_atmosphere() wing_param=Wing_param('test_param',geom_type='Broken',n_sect=20) wing_param.build_wing() wing_param.set_value('span',40.) wing_param.set_value('sweep',0.) wing_param.set_value('break_percent',33.) wing_param.set_value('root_chord',1.0) wing_param.set_value('break_chord',1.0) wing_param.set_value('tip_chord',1.0) wing_param.set_value('root_height',0.15) wing_param.set_value('break_height',0.15) wing_param.set_value('tip_height',0.15) wing_param.build_linear_airfoil(OC, AoA0=0., Cm0=0.0, set_as_ref=True) wing_param.build_airfoils_from_ref() wing_param.update() print wing_param print 'AR=',wing_param.get_AR() DLLM = DLLMTargetCl('Rectsweep0',wing_param,OC) DLLM.set_target_Cl(0.5) DLLM.run_direct() DLLM.run_post()
OC.set_P0(101325.) OC.set_humidity(0.) OC.compute_atmosphere() wing_param=Wing_param('test_param',geom_type='Broken',n_sect=20) wing_param.build_wing() wing_param.set_value('span',3.) wing_param.set_value('sweep',30.) wing_param.set_value('break_percent',33.) wing_param.set_value('root_chord',1.0) wing_param.set_value('break_chord',1.0) wing_param.set_value('tip_chord',1.0) wing_param.set_value('root_height',0.15) wing_param.set_value('break_height',0.15) wing_param.set_value('tip_height',0.15) wing_param.build_linear_airfoil(OC, AoA0=0., Cm0=0.0, set_as_ref=True) wing_param.build_airfoils_from_ref() wing_param.update() print wing_param print 'AR=',wing_param.get_AR() DLLM = DLLMTargetCl('RectLowARsweep30',wing_param,OC) DLLM.set_target_Cl(0.5) DLLM.run_direct() DLLM.run_post()