コード例 #1
0
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
コード例 #2
0
 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)
コード例 #3
0
    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)
コード例 #4
0
 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)
コード例 #5
0
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()