コード例 #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 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
コード例 #3
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)
コード例 #4
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)
コード例 #5
0
 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
コード例 #6
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)
コード例 #7
0
ファイル: Rect_sweep0.py プロジェクト: FrancoisGallard/DLLM
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()



コード例 #8
0
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()