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 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 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)
wing_param.import_BC_from_file('input_parameters.par') wing_param.build_linear_airfoil(OC, AoA0=0.0, set_as_ref=True) wing_param.build_airfoils_from_ref() wing_param.update() print wing_param x0=wing_param.get_dv_array() print 'dv array shape',x0.shape print 'dv_array=',x0 DLLM = DLLMTargetCl('Simple',wing_param,OC) DLLM.set_target_Cl(0.5) DLLM.run_direct() DLLM.run_post() Ref_F = DLLM.get_F_list() 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/Ref_F 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()