Пример #1
0
 def test_DLLM_valid_dpF_list_dpchi(self):
     OC,wing_param = self.__init_wing_param()
     DLLM = DLLMSolver('test',wing_param,OC)
     print ''
     DLLM.run_direct()
     iAoA=DLLM.get_iAoA()
     x0=wing_param.get_dv_array()
     def f2(x):
         wing_param.update_from_x_list(x)
         DLLM.set_wing_param(wing_param)
         DLLM.comp_R(iAoA)
         DLLM.set_direct_computed()
         DLLM.run_post()
         func=DLLM.get_F_list()
         return func
     
     def df2(x):
         wing_param.update_from_x_list(x)
         DLLM.set_wing_param(wing_param)
         DLLM.comp_R(iAoA)
         DLLM.set_direct_computed()
         DLLM.run_post()
         func_grad=DLLM.get_dpF_list_dpchi()
         return func_grad
     
     val_grad2=FDValidGrad(2,f2,df2,fd_step=1.e-8)
     ok2,df_fd2,df2=val_grad2.compare(x0,treshold=1.e-6,split_out=True,return_all=True)
     assert(ok2)
 def test_DLLM_valid_dpLoads_dpAoA(self):
     OC,wing_param = self.__init_wing_param()
     DLLM = DLLMSolver('test',wing_param,OC)
     print ''
     DLLM.run_direct()
     iAoA0=DLLM.get_iAoA()
     AoA0=OC.get_AoA_rad()
     
     def f2(x):
         OC.set_AoA_rad(x[0])
         R=DLLM.comp_R(iAoA0)
         Post=DLLM.get_DLLMPost()
         func=Post.comp_Lift_distrib()
         return func
     
     def df2(x):
         OC.set_AoA_rad(x[0])
         R=DLLM.comp_R(iAoA0)
         Post=DLLM.get_DLLMPost()
         func_grad=Post.comp_dpLift_distrib_dpAoA()
         N=len(func_grad)
         np_func_grad=zeros((N,1))
         np_func_grad[:,0]=func_grad[:]
         return np_func_grad
     
     val_grad2=FDValidGrad(2,f2,df2,fd_step=1.e-8)
     ok2,df_fd2,df2=val_grad2.compare([AoA0],treshold=1.e-5,return_all=True)
     assert(ok2)
Пример #3
0
    def test_DLLM_valid_dpF_list_dpchi(self):
        OC, wing_param = self.__init_wing_param()
        DLLM = DLLMSolver('test', wing_param, OC)
        print ''
        DLLM.run_direct()
        iAoA = DLLM.get_iAoA()
        x0 = wing_param.get_dv_array()

        def f2(x):
            wing_param.update_from_x_list(x)
            DLLM.set_wing_param(wing_param)
            DLLM.comp_R(iAoA)
            DLLM.set_direct_computed()
            DLLM.run_post()
            func = DLLM.get_F_list()
            return func

        def df2(x):
            wing_param.update_from_x_list(x)
            DLLM.set_wing_param(wing_param)
            DLLM.comp_R(iAoA)
            DLLM.set_direct_computed()
            DLLM.run_post()
            func_grad = DLLM.get_dpF_list_dpchi()
            return func_grad

        val_grad2 = FDValidGrad(2, f2, df2, fd_step=1.e-8)
        ok2, df_fd2, df2 = val_grad2.compare(x0,
                                             treshold=1.e-6,
                                             split_out=True,
                                             return_all=True)
        assert (ok2)
Пример #4
0
    def test_DLLM_valid_dpF_list_dpAoA(self):
        OC, wing_param = self.__init_wing_param()
        DLLM = DLLMSolver('test', wing_param, OC)
        print ''
        DLLM.run_direct()
        iAoA = DLLM.get_iAoA()
        AoA0 = OC.get_AoA_rad()

        def f3(x):
            OC.set_AoA_rad(x[0])
            DLLM.comp_R(iAoA)
            DLLM.set_direct_computed()
            DLLM.run_post()
            func = DLLM.get_F_list()
            return func

        def df3(x):
            OC.set_AoA_rad(x[0])
            DLLM.comp_R(iAoA)
            DLLM.set_direct_computed()
            DLLM.run_post()
            func_grad = DLLM.get_dpF_list_dpAoA()
            N = len(func_grad)
            np_func_grad = zeros((N, 1))
            np_func_grad[:, 0] = func_grad[:]
            return np_func_grad

        val_grad3 = FDValidGrad(2, f3, df3, fd_step=1.e-8)
        ok3, df_fd3, df3 = val_grad3.compare([AoA0],
                                             treshold=1.e-6,
                                             split_out=True,
                                             return_all=True)
        assert (ok3)
Пример #5
0
    def test_DLLM_valid_dpF_list_dpW(self):
        OC, wing_param = self.__init_wing_param()
        DLLM = DLLMSolver('test', wing_param, OC)
        print ''
        DLLM.run_direct()
        iAoA0 = DLLM.get_iAoA()

        def f1(x):
            DLLM.comp_R(x)
            DLLM.set_direct_computed()
            DLLM.run_post()
            func = DLLM.get_F_list()
            return func

        def df1(x):
            DLLM.comp_R(x)
            DLLM.set_direct_computed()
            DLLM.run_post()
            func_grad = DLLM.get_dpF_list_dpW()
            return func_grad

        val_grad1 = FDValidGrad(2, f1, df1, fd_step=1.e-8)
        ok1, df_fd1, df1 = val_grad1.compare(iAoA0,
                                             treshold=1.e-6,
                                             return_all=True)
        assert (ok1)
Пример #6
0
    def test_DLLM_valid_dpLoads_dpAoA(self):
        OC, wing_param = self.__init_wing_param()
        DLLM = DLLMSolver('test', wing_param, OC)
        print ''
        DLLM.run_direct()
        iAoA0 = DLLM.get_iAoA()
        AoA0 = OC.get_AoA_rad()

        def f2(x):
            OC.set_AoA_rad(x[0])
            R = DLLM.comp_R(iAoA0)
            Post = DLLM.get_DLLMPost()
            func = Post.comp_Lift_distrib()
            return func

        def df2(x):
            OC.set_AoA_rad(x[0])
            R = DLLM.comp_R(iAoA0)
            Post = DLLM.get_DLLMPost()
            func_grad = Post.comp_dpLift_distrib_dpAoA()
            N = len(func_grad)
            np_func_grad = zeros((N, 1))
            np_func_grad[:, 0] = func_grad[:]
            return np_func_grad

        val_grad2 = FDValidGrad(2, f2, df2, fd_step=1.e-8)
        ok2, df_fd2, df2 = val_grad2.compare([AoA0],
                                             treshold=1.e-5,
                                             return_all=True)
        assert (ok2)
Пример #7
0
 def test_DLLM_valid_dpF_list_dpAoA(self):
     OC,wing_param = self.__init_wing_param()
     DLLM = DLLMSolver('test',wing_param,OC)
     print ''
     DLLM.run_direct()
     iAoA=DLLM.get_iAoA()
     AoA0=OC.get_AoA_rad()
     
     def f3(x):
         OC.set_AoA_rad(x[0])
         DLLM.comp_R(iAoA)
         DLLM.set_direct_computed()
         DLLM.run_post()
         func=DLLM.get_F_list()
         return func
     
     def df3(x):
         OC.set_AoA_rad(x[0])
         DLLM.comp_R(iAoA)
         DLLM.set_direct_computed()
         DLLM.run_post()
         func_grad=DLLM.get_dpF_list_dpAoA()
         N=len(func_grad)
         np_func_grad=zeros((N,1))
         np_func_grad[:,0]=func_grad[:]
         return np_func_grad
     
     val_grad3=FDValidGrad(2,f3,df3,fd_step=1.e-8)
     ok3,df_fd3,df3=val_grad3.compare([AoA0],treshold=1.e-6,split_out=True,return_all=True)
     assert(ok3)
Пример #8
0
 def test_DLLM_run_direct(self):
     OC,wing_param = self.__init_wing_param()
     DLLM = DLLMSolver('test',wing_param,OC)
     try:
         print ''
         DLLM.run_direct()
         ok=True
     except:
         ok=False
     assert(ok)
Пример #9
0
 def test_DLLM_run_direct(self):
     OC, wing_param = self.__init_wing_param()
     DLLM = DLLMSolver('test', wing_param, OC)
     try:
         print ''
         DLLM.run_direct()
         ok = True
     except:
         ok = False
     assert (ok)
Пример #10
0
    def test_DLLM_valid_dpLoads_distrib_dpAoA(self):
        OC,wing_param = self.__init_wing_param()
        DLLM = DLLMSolver('test',wing_param,OC)
        print ''
        DLLM.run_direct()
        iAoA0=DLLM.get_iAoA()
        AoA0=OC.get_AoA_rad()
        Post=DLLM.get_DLLMPost()

        def f1(x):
            OC.set_AoA_rad(x[0])
            R=DLLM.comp_R(iAoA0)
            DLLM.run_post()
            func=Post.Lift_distrib
            return func
        
        def df1(x):
            OC.set_AoA_rad(x[0])
            R=DLLM.comp_R(iAoA0)
            DLLM.run_post()
            func_grad=Post.dpLift_distrib_dpAoA
            N=len(func_grad)
            np_func_grad=np.zeros((N,1))
            np_func_grad[:,0]=func_grad[:]
            return np_func_grad

     	def f2(x):
            OC.set_AoA_rad(x[0])
            R=DLLM.comp_R(iAoA0)
            DLLM.run_post()
            func=Post.Drag_distrib
            return func
        
        def df2(x):
            OC.set_AoA_rad(x[0])
            R=DLLM.comp_R(iAoA0)
            DLLM.run_post()
            func_grad=Post.dpDrag_distrib_dpAoA
            N=len(func_grad)
            np_func_grad=np.zeros((N,1))
            np_func_grad[:,0]=func_grad[:]
            return np_func_grad
        
        val_grad1=FDValidGrad(2,f1,df1,fd_step=1.e-8)
        ok1,df_fd1,df1=val_grad1.compare([AoA0],treshold=1.e-6,return_all=True)
        val_grad2=FDValidGrad(2,f2,df2,fd_step=1.e-8)
        ok2,df_fd2,df2=val_grad2.compare([AoA0],treshold=1.e-6,return_all=True)
        norm1, norm2 = self.print_valid_FD([AoA0],'dpLift_distrib_dpAoA',df1,df_fd1,'dpDrag_distrib_dpAoA',df2,df_fd2)
        self.plot_valid_FD([AoA0],'dpLift_distrib_dpAoA',df1,df_fd1,'dpDrag_distrib_dpAoA',df2,df_fd2, norm1, norm2, 'Loads_distrib_dpAoA')
        if (ok1==True) and (ok2==True): 
            ok = True
        else : 	
            ok = False
        assert(ok)
Пример #11
0
def df(x):
    wing_param.update_from_x_list(x)
    DLLM = DLLMSolver('Simple',wing_param,OC)
    DLLM.run_direct()
    DLLM.run_post() 
    DLLM.run_adjoint()
    func_grad=numpy.array(DLLM.get_dF_list_dchi())
    return func_grad
Пример #12
0
    def test_DLLM_valid_dpLoads_distrib_dpchi(self):
        OC,wing_param = self.__init_wing_param()
        DLLM = DLLMSolver('test',wing_param,OC)
        print ''
        DLLM.run_direct()
        iAoA=DLLM.get_iAoA()
        x0=wing_param.get_dv_array()
    	Post=DLLM.get_DLLMPost()

        def f1(x):
            wing_param.update_from_x_list(x)
            DLLM.set_geom(wing_param)
            DLLM.comp_R(iAoA)
            Post.run()
            func=Post.Lift_distrib
            return func
        
        def df1(x):
            wing_param.update_from_x_list(x)
            DLLM.set_geom(wing_param)
            DLLM.comp_R(iAoA)
            Post.run()
            func_grad=Post.dpLift_distrib_dpchi
            return func_grad
        
        def f2(x):
            wing_param.update_from_x_list(x)
            DLLM.set_geom(wing_param)
            DLLM.comp_R(iAoA)
            Post.run()
            func=Post.Drag_distrib
            return func
        
        def df2(x):
            wing_param.update_from_x_list(x)
            DLLM.set_geom(wing_param)
            DLLM.comp_R(iAoA)
            Post.run()
            func_grad=Post.dpDrag_distrib_dpchi
            return func_grad

        val_grad1=FDValidGrad(2,f1,df1,fd_step=1.e-8)
        ok1,df_fd1,df1=val_grad1.compare(x0,treshold=1.e-6,return_all=True)
        val_grad2=FDValidGrad(2,f2,df2,fd_step=1.e-8)
        ok2,df_fd2,df2=val_grad2.compare(x0,treshold=1.e-6,return_all=True)
    	norm1, norm2 = self.print_valid_FD(x0,'dpLift_distrib_dpchi',df1,df_fd1,'dpDrag_distrib_dpchi',df2,df_fd2)
    	self.plot_valid_FD(x0,'dpLift_distrib_dpchi',df1,df_fd1,'dpDrag_distrib_dpchi',df2,df_fd2, norm1, norm2, 'Loads_distrib_dpchi')
    	if (ok1==True) and (ok2==True):
            ok = True
    	else : 
            ok = False
    	assert(ok)
Пример #13
0
def df(x):
    wing_param.update_from_x_list(x)
    DLLM = DLLMSolver('Simple',wing_param,OC)
    DLLM.run_direct()
    DLLM.run_post() 
    DLLM.run_adjoint()
    func_grad=numpy.array(DLLM.get_dF_list_dchi())
    return func_grad
Пример #14
0
 def test_DLLM_instantiation(self):
     """
     test class instantiation
     """
     OC, wing_param = self.__init_wing_param()
     DLLM = DLLMSolver('test', wing_param, OC)
     assert (DLLM is not None)
Пример #15
0
def runDLLM(wing_param, OC):

    DLLM = DLLMSolver('SimpleM6', wing_param, OC)
    DLLM.run_direct()
    DLLM.run_post()

    output = DLLM.get_F_list()
    F_list_names = DLLM.get_F_list_names()
    return output, F_list_names
Пример #16
0
    def __init__(self, tag, wing_param, OC):
        DLLMSolver.__init__(self, tag, wing_param, OC)
        
        self.__N            = self.get_wing_param().get_n_sect()
        self.__ndv          = self.get_wing_param().get_ndv()
        
        self.__R_TL         = numpy.zeros(self.__N+1)
        self.__dpR_TL_dpW   = numpy.zeros((self.__N+1,self.__N+1))
        self.__dpR_TL_dpchi = numpy.zeros((self.__N+1,self.__ndv))
        
        self.__dpF_list_dpW = None 
        
        self.__target_Lift    = 10000.

        # initialize the Newton-Raphson problem
        self.__NRPb = None 
        self.__init_Newton_Raphson()
Пример #17
0
 def test_DLLM_valid_dpR_dpiAoA(self):
     OC,wing_param = self.__init_wing_param()
     DLLM = DLLMSolver('test',wing_param,OC)
     print ''
     DLLM.run_direct()
     iAoA0=DLLM.get_iAoA()
     def f1(x):
         func=DLLM.comp_R(x)
         return func
     
     def df1(x):
         func_grad=DLLM.comp_dpR_dpiAoA(x)
         return func_grad
     
     val_grad1=FDValidGrad(2,f1,df1,fd_step=1.e-8)
     ok1,df_fd1,df1=val_grad1.compare(iAoA0,treshold=1.e-6,return_all=True)
     assert(ok1)
Пример #18
0
def f(x):
    wing_param.update_from_x_list(x)
    DLLM = DLLMSolver('Simple',wing_param,OC)
    DLLM.run_direct()
    DLLM.run_post()  
    func=DLLM.get_F_list()
    return func
Пример #19
0
    def __init__(self, tag, geom, OC,verbose = 0, grad_active=True):
        self.__verbose = verbose
        DLLMSolver.__init__(self, tag, geom, OC, verbose = self.__verbose, grad_active=grad_active)
        
        self.__N            = self.get_geom().get_n_sect()
        self.__ndv          = self.get_geom().get_ndv()
        
        self.__R_TL         = numpy.zeros(self.__N+1)
        self.__dpR_TL_dpW   = numpy.zeros((self.__N+1,self.__N+1))
        self.__dpR_TL_dpchi = numpy.zeros((self.__N+1,self.__ndv))
        
        self.__dpF_list_dpW = None 
        
        self.__target_Lift    = 0.

        # initialize the Newton-Raphson problem
        self.__NRPb = None 
        self.__init_Newton_Raphson()
Пример #20
0
    def __init__(self, tag,  wing_param, OC, verbose = 0):
        self.__verbose = verbose
        DLLMSolver.__init__(self, tag, wing_param, OC, verbose = self.__verbose)
        
        self.__N            = self.get_wing_param().get_n_sect()
        self.__ndv          = self.get_wing_param().get_ndv()
        
        self.__R_TCl         = numpy.zeros(self.__N+1)
        self.__dpR_TCl_dpW   = numpy.zeros((self.__N+1,self.__N+1))
        self.__dpR_TCl_dpchi = numpy.zeros((self.__N+1,self.__ndv))
        
        self.__dpF_list_dpW = None 
        
        self.__target_Cl    = 0.5

        # initialize the Newton-Raphson problem
        self.__NRPb = None 
        self.__init_Newton_Raphson()
Пример #21
0
def f(x):
    wing_param.update_from_x_list(x)
    DLLM = DLLMSolver('Meta', wing_param, OC)
    DLLM.run_direct()
    #DLLM.run_post(func_list=['Cl'])
    DLLM.run_post()
    func = DLLM.get_F_list()
    return func
Пример #22
0
def runDLLM(wing_param, OC):
    
        DLLM = DLLMSolver('Wing',wing_param,OC)
        DLLM.run_direct()
        DLLM.run_post()
        
        output = DLLM.get_F_list()
        F_list_names = DLLM.get_F_list_names()
        return output, F_list_names      
Пример #23
0
 def test_DLLM_valid_dpR_dpthetaY(self):
     OC,wing_param = self.__init_wing_param()
     DLLM = DLLMSolver('test',wing_param,OC)
     print ''
     DLLM.run_direct()
     iAoA=DLLM.get_iAoA()
     thetaY0=wing_param.get_thetaY()
     def f3(x):
         wing_param.set_thetaY(x)
         func=DLLM.comp_R(iAoA)
         return func
     
     def df3(x):
         wing_param.set_thetaY(x)
         func_grad=DLLM.comp_dpR_dpthetaY()
         return func_grad
     
     val_grad3=FDValidGrad(2,f3,df3,fd_step=1.e-8)
     ok3,df_fd3,df3=val_grad3.compare(thetaY0,treshold=1.e-6,return_all=True)
     assert(ok3)
Пример #24
0
 def test_DLLM_valid_dpR_dpthetaY(self):
     OC,wing_param = self.__init_wing_param()
     DLLM = DLLMSolver('test',wing_param,OC)
     print ''
     DLLM.run_direct()
     iAoA=DLLM.get_iAoA()
     thetaY0=wing_param.get_thetaY()
     def f3(x):
         wing_param.set_thetaY(x)
         func=DLLM.comp_R(iAoA)
         return func
     
     def df3(x):
         wing_param.set_thetaY(x)
         func_grad=DLLM.comp_dpR_dpthetaY()
         return func_grad
     
     val_grad3=FDValidGrad(2,f3,df3,fd_step=1.e-8)
     ok3,df_fd3,df3=val_grad3.compare(thetaY0,treshold=1.e-6,return_all=True)
     assert(ok3)
Пример #25
0
 def __config_DLLM(self):
     WARNING_MSG=self.WARNING_MSG+'__config_DLLM: '
     input_keys=self.__config_dict.keys()
     type_key = self.__tag+'.DLLM.type'
     type = self.__config_dict[type_key]
     
     if type not in self.POS_SOLVER:
         print WARNING_MSG+'solver_type = '+str(solve_type)+' not in '+str(self.POS_SOLVER)+'. Set to default solver_type = Solver'
         type='Solver'
         
     if   type == 'Solver':
         self.__DLLM_solver = DLLMSolver(self.__tag,self.__wing_param,self.__OC)          
     elif type == 'TargetCl':
         self.__DLLM_solver = DLLMTargetCl(self.__tag,self.__wing_param,self.__OC)
         target_Cl_key = self.__tag+'.DLLM.target_Cl'
         target_Cl = self.__config_dict[target_Cl_key]
         self.__DLLM_solver.set_target_Cl(target_Cl)
     elif type == 'TargetLift':
         self.__DLLM_solver = DLLMTargetLift(self.__tag,self.__wing_param,self.__OC)
         target_Lift_key = self.__tag+'.DLLM.target_Lift'
         target_Lift = self.__config_dict[target_Lift_key]
         self.__DLLM_solver.set_target_Lift(target_Lift)
     
     method_key = self.__tag+'.DLLM.method'
     if method_key in input_keys:
         method = self.__config_dict[method_key]
         self.__DLLM_solver.set_method(method)  
         
     relax_factor_key = self.__tag+'.DLLM.relax_factor'
     if relax_factor_key in input_keys:
         relax_factor = self.__config_dict[relax_factor_key]
         self.__DLLM_solver.set_relax_factor(relax_factor)
     
     stop_residual_key = self.__tag+'.DLLM.stop_residual'
     if stop_residual_key in input_keys:
         stop_residual = self.__config_dict[stop_residual_key]
         self.__DLLM_solver.set_stop_residual(stop_residual)
     
     max_iterations_key = self.__tag+'.DLLM.max_iterations'
     if max_iterations_key in input_keys:
         max_iterations = self.__config_dict[max_iterations_key]
         self.__DLLM_solver.set_max_iterations(max_iterations)
     
     gamma_file_name_key = self.__tag+'.DLLM.gamma_file_name'
     if gamma_file_name_key in input_keys:
         gamma_file_name = self.__config_dict[gamma_file_name_key]
         self.__DLLM_solver.set_gamma_file_name(gamma_file_name)
         
     F_list_names_key = self.__tag+'.DLLM.F_list_names'
     if F_list_names_key in input_keys:
         F_list_names = self.__config_dict[F_list_names_key]
         self.__DLLM_solver.set_F_list_names(F_list_names)
             
Пример #26
0
def f(x):
    wing_param.update_from_x_list(x)
    DLLM = DLLMSolver('Simple',wing_param,OC)
    DLLM.run_direct()
    DLLM.run_post()  
    func=DLLM.get_F_list()
    return func
Пример #27
0
def f(x):
    wing_param.update_from_x_list(x)
    DLLM = DLLMSolver('Meta',wing_param,OC)
    DLLM.run_direct()
    #DLLM.run_post(func_list=['Cl'])
    DLLM.run_post()
    func=DLLM.get_F_list()
    return func
Пример #28
0
 def test_DLLM_valid_dpR_dpAoA(self):
     OC,wing_param = self.__init_wing_param()
     DLLM = DLLMSolver('test',wing_param,OC)
     print ''
     DLLM.run_direct()
     iAoA = DLLM.get_iAoA()
     AoA0=OC.get_AoA_rad()
     def f4(x):
         OC.set_AoA_rad(x[0])
         func=DLLM.comp_R(iAoA)
         return func
     
     def df4(x):
         OC.set_AoA_rad(x[0])
         func_grad=DLLM.comp_dpR_dpAoA()
         N=len(func_grad)
         np_func_grad=zeros((N,1))
         np_func_grad[:,0]=func_grad[:]
         return np_func_grad
     
     val_grad4=FDValidGrad(2,f4,df4,fd_step=1.e-8)
     ok4,df_fd4,df4=val_grad4.compare([AoA0],treshold=1.e-6,return_all=True)
     assert(ok4)
Пример #29
0
 def test_DLLM_valid_dpR_dpAoA(self):
     OC,wing_param = self.__init_wing_param()
     DLLM = DLLMSolver('test',wing_param,OC)
     print ''
     DLLM.run_direct()
     iAoA = DLLM.get_iAoA()
     AoA0=OC.get_AoA_rad()
     def f4(x):
         OC.set_AoA_rad(x[0])
         func=DLLM.comp_R(iAoA)
         return func
     
     def df4(x):
         OC.set_AoA_rad(x[0])
         func_grad=DLLM.comp_dpR_dpAoA()
         N=len(func_grad)
         np_func_grad=zeros((N,1))
         np_func_grad[:,0]=func_grad[:]
         return np_func_grad
     
     val_grad4=FDValidGrad(2,f4,df4,fd_step=1.e-8)
     ok4,df_fd4,df4=val_grad4.compare([AoA0],treshold=1.e-6,return_all=True)
     assert(ok4)
Пример #30
0
    def test_DLLM_valid_dpLoads_dpiAoA(self):
        OC, wing_param = self.__init_wing_param()
        DLLM = DLLMSolver('test', wing_param, OC)
        print ''
        DLLM.run_direct()
        iAoA0 = DLLM.get_iAoA()

        def f1(x):
            R = DLLM.comp_R(x)
            Post = DLLM.get_DLLMPost()
            func = Post.comp_Lift_distrib()
            return func

        def df1(x):
            R = DLLM.comp_R(x)
            Post = DLLM.get_DLLMPost()
            func_grad = Post.comp_dpLift_distrib_dpiAoA()
            return func_grad

        val_grad1 = FDValidGrad(2, f1, df1, fd_step=1.e-8)
        ok1, df_fd1, df1 = val_grad1.compare(iAoA0,
                                             treshold=1.e-2,
                                             return_all=True)
        assert (ok1)
Пример #31
0
chords_eta     = np.zeros(N+1)
rel_thicks_eta = np.zeros(N+1)
eta            = np.zeros((3,N+1))
#-- set data
twist[:]          = 0. # 0. twist for all sections
chords_eta[:]     = 5. # 5m chord for all sections
rel_thicks_eta[:] = 0.15 # same rel_thick for all sections
sweep_eta[:]      = sweep_rad
for i, r in enumerate(r_list):
    abs_r = abs(r)
    eta[0, i] = abs_r * span * np.sin(sweep_rad) + 0.25 * chords_eta[i]
    eta[1, i] = r * span

wing_geom.set_twist(twist)
wing_geom.set_sweep_eta(sweep_eta)
wing_geom.set_chords_eta(chords_eta)
wing_geom.set_rel_thicks_eta(rel_thicks_eta)
wing_geom.set_eta(eta)
wing_geom.build_linear_airfoil(OC, AoA0=0.0, set_as_ref=True)
wing_geom.build_airfoils_from_ref()
wing_geom.update()  
wing_geom.plot()
print wing_geom

DLLM = DLLMSolver('tuto3', wing_geom, OC, verbose=1, grad_active=False)
DLLM.run_direct()
DLLM.run_post()
DLLM.plot()
DLLM.export_F_list()

Пример #32
0
wing_param.convert_to_design_variable('root_chord', (5., 7.))
wing_param.convert_to_design_variable('break_chord', (3., 5.))
wing_param.convert_to_design_variable('tip_chord', (1., 2.))
wing_param.convert_to_design_variable('root_height', (1., 1.5))
wing_param.convert_to_design_variable('break_height', (0.8, 1.2))
wing_param.convert_to_design_variable('tip_height', (0.2, 0.5))
wing_param.build_linear_airfoil(OC, AoA0=-2., Cm0=-0.1, set_as_ref=True)
wing_param.build_airfoils_from_ref()
wing_param.update()

print wing_param

N = wing_param.get_n_sect()
iAoA0 = numpy.zeros(N)

DLLM = DLLMSolver('test', wing_param, OC)

NRPb = NewtonRaphsonProblem(iAoA0, DLLM.comp_R, DLLM.comp_dpR_dpiAoA)
NRPb.set_relax_factor(0.99)
NRPb.set_stop_residual(1.e-9)
NRPb.set_max_iterations(100)

iAoA = NRPb.solve()

DLLM.set_direct_computed()
print iAoA

DLLM.comp_dpR_dpchi()
dpRdpthetaY = DLLM.comp_dpR_dpthetaY()
print 'dpRdpthetaY=', dpRdpthetaY
Пример #33
0
OC.set_humidity(0.)
OC.compute_atmosphere()

wing_param=Wing_Broken('broken_wing',n_sect=20)
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

thetaY0=wing_param.get_thetaY()
print 'thetaY0 shape',thetaY0.shape
print 'thetaY0=',thetaY0

DLLM = DLLMSolver('Simple',wing_param,OC)
DLLM.run_direct()
iAoA=DLLM.get_iAoA()

def f(x):
    wing_param.set_thetaY(x)
    DLLM.comp_R(iAoA)
    DLLM.set_direct_computed()
    DLLM.run_post()
    func=DLLM.get_F_list()
    return func

def df(x):
    wing_param.set_thetaY(x)
    DLLM.set_direct_computed()
    DLLM.run_post()
Пример #34
0
OC.set_P0(101325.)
OC.set_humidity(0.)
OC.compute_atmosphere()

wing_param=Wing_Broken('broken_wing',n_sect=20)
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()
wing_param.plot()


N = wing_param.get_n_sect()
iAoA0=numpy.zeros(N)

DLLM = DLLMSolver('test',wing_param,OC)

NRPb = NewtonRaphsonProblem(iAoA0, DLLM.comp_R, DLLM.comp_dpR_dpiAoA)
NRPb.set_relax_factor(0.99)
NRPb.set_stop_residual(1.e-9)
NRPb.set_max_iterations(100)

iAoA=NRPb.solve()

DLLM.set_direct_computed()
print iAoA

DLLM.comp_dpR_dpchi()
dpRdpthetaY=DLLM.comp_dpR_dpthetaY()
print 'dpRdpthetaY=',dpRdpthetaY
Пример #35
0
wing_param = Wing_param('test_param', geom_type='Broken', n_sect=20)
wing_param.build_wing()
wing_param.set_value('span', 34.1)
wing_param.set_value('sweep', 34.)
wing_param.set_value('break_percent', 33.)
wing_param.set_value('root_chord', 6.1)
wing_param.set_value('break_chord', 4.6)
wing_param.set_value('tip_chord', 1.5)
wing_param.set_value('root_height', 1.28)
wing_param.set_value('break_height', 0.97)
wing_param.set_value('tip_height', 0.33)
wing_param.convert_to_design_variable('span', (10., 50.))
wing_param.convert_to_design_variable('sweep', (0., 40.))
wing_param.convert_to_design_variable('break_percent', (20., 40.))
wing_param.convert_to_design_variable('root_chord', (5., 7.))
wing_param.convert_to_design_variable('break_chord', (3., 5.))
wing_param.convert_to_design_variable('tip_chord', (1., 2.))
wing_param.convert_to_design_variable('root_height', (1., 1.5))
wing_param.convert_to_design_variable('break_height', (0.8, 1.2))
wing_param.convert_to_design_variable('tip_height', (0.2, 0.5))
wing_param.build_linear_airfoil(OC, AoA0=-2., Cm0=-0.1, set_as_ref=True)
wing_param.build_airfoils_from_ref()
wing_param.update()

print wing_param

DLLM = DLLMSolver('Simple', wing_param, OC)
DLLM.run_direct()
DLLM.run_post()
Пример #36
0
wing_param.convert_to_design_variable('break_chord',(3.,5.))
wing_param.convert_to_design_variable('tip_chord',(1.,2.))
wing_param.convert_to_design_variable('root_height',(1.,1.5))
wing_param.convert_to_design_variable('break_height',(0.8,1.2))
wing_param.convert_to_design_variable('tip_height',(0.2,0.5))
wing_param.build_meta_airfoil(OC, '../MetaModelFixed.xml', relative_thickness=.12, camber=0., Sref=1., Lref=1., sweep=.0, set_as_ref=True)
wing_param.build_airfoils_from_ref()
wing_param.update()

print wing_param

thetaY0=wing_param.get_thetaY()
print 'thetaY0 shape',thetaY0.shape
print 'thetaY0=',thetaY0

DLLM = DLLMSolver('Meta',wing_param,OC)
DLLM.run_direct()
iAoA=DLLM.get_iAoA()

def f(x):
    wing_param.set_thetaY(x)
    func=DLLM.comp_R(iAoA)
    return func

def df(x):
    wing_param.set_thetaY(x)
    func_grad=DLLM.comp_dpR_dpthetaY()
    return func_grad

val_grad=FDValidGrad(2,f,df,fd_step=1.e-9)
ok,df_fd,df=val_grad.compare(thetaY0,treshold=1.e-6,return_all=True)
Пример #37
0
wing_param.convert_to_design_variable('break_percent',(20.,40.))
wing_param.convert_to_design_variable('root_chord',(5.,7.))
wing_param.convert_to_design_variable('break_chord',(3.,5.))
wing_param.convert_to_design_variable('tip_chord',(1.,2.))
wing_param.convert_to_design_variable('root_height',(1.,1.5))
wing_param.convert_to_design_variable('break_height',(0.8,1.2))
wing_param.convert_to_design_variable('tip_height',(0.2,0.5))
wing_param.build_linear_airfoil(OC, AoA0=-2., Cm0=-0.1, set_as_ref=True)
wing_param.build_airfoils_from_ref()
wing_param.update()

print wing_param

x0=wing_param.get_dv_array()

DLLM = DLLMSolver('Simple',wing_param,OC)
DLLM.run_direct()
DLLM.run_post()
iAoA0=DLLM.get_iAoA()

AoA0=OC.get_AoA_rad()

def f(x):
    OC.set_AoA_rad(x[0])
    R=DLLM.comp_R(iAoA0)
#     print 'x=',x
#     print 'R=',R
#     print 'iAoA updated?:',DLLM.get_iAoA()
    Post=DLLM.get_DLLMPost()
    func=Post.comp_Lift_distrib()
#     print 'func=',func
Пример #38
0
import numpy

OC=OperatingCondition('cond1')
OC.set_Mach(0.8)
OC.set_AoA(3.5)
OC.set_altitude(10000.)
OC.set_T0_deg(15.)
OC.set_P0(101325.)
OC.set_humidity(0.)
OC.compute_atmosphere()

wing_param=Wing_Broken('broken_wing',n_sect=20)
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()
wing_param.plot()

print wing_param

x0=wing_param.get_dv_array()

DLLM = DLLMSolver('Simple',wing_param,OC)
DLLM.run_direct()
DLLM.run_post()

Post=DLLM.get_DLLMPost()

print Post.dpLift_distrib_dpiAoA

Пример #39
0
wing_param.build_wing()
wing_param.set_value('span',34.1)  #34.1
wing_param.set_value('sweep',34.)
wing_param.set_value('break_percent',23.) #33.
wing_param.set_value('root_chord',5.4)  #6.1
wing_param.set_value('break_chord',4.6)
wing_param.set_value('tip_chord',1.2) #1.5
wing_param.set_value('root_height',.98)
wing_param.set_value('break_height',0.70)
wing_param.set_value('tip_height',0.18)
wing_param.convert_to_design_variable('span',(10.,50.))
wing_param.convert_to_design_variable('sweep',(0.,40.))
wing_param.convert_to_design_variable('break_percent',(20.,40.))
wing_param.convert_to_design_variable('root_chord',(5.,7.))
wing_param.convert_to_design_variable('break_chord',(3.,5.))
wing_param.convert_to_design_variable('tip_chord',(1.,2.))
wing_param.convert_to_design_variable('root_height',(0.7,1.))
wing_param.convert_to_design_variable('break_height',(0.45,0.8))
wing_param.convert_to_design_variable('tip_height',(0.10,0.26))
#wing_param.build_linear_airfoil(OC, AoA0=-2., Cm0=-0.1, set_as_ref=True)
wing_param.build_meta_airfoil(OC, '../MetaModelCleaning.xml', relative_thickness=.12, camber=0., Sref=1., Lref=1., sweep=.0, set_as_ref=True)
wing_param.build_airfoils_from_ref()
wing_param.update()

print wing_param

DLLM = DLLMSolver('Meta',wing_param,OC)
DLLM.run_direct()
DLLM.run_post()

Пример #40
0
wing_param.convert_to_design_variable('span', (0., 50.))
wing_param.convert_to_design_variable('sweep', (0., 40.))
wing_param.convert_to_design_variable('break_percent', (20., 40.))
wing_param.convert_to_design_variable('root_chord', (5., 7.))
wing_param.convert_to_design_variable('break_chord', (3., 5.))
wing_param.convert_to_design_variable('tip_chord', (1., 2.))
wing_param.convert_to_design_variable('root_height', (1., 1.5))
wing_param.convert_to_design_variable('break_height', (0.8, 1.2))
wing_param.convert_to_design_variable('tip_height', (0.2, 0.5))
wing_param.build_linear_airfoil(OC, AoA0=-2., Cm0=-0.1, set_as_ref=True)
wing_param.build_airfoils_from_ref()
wing_param.update()

print wing_param

DLLM = DLLMSolver('Simple', wing_param, OC)
DLLM.run_direct()
iAoA0 = DLLM.get_iAoA()
AoA0 = OC.get_AoA_rad()


def f(x):
    OC.set_AoA_rad(x[0])
    func = DLLM.comp_R(iAoA0)
    return func


def df(x):
    OC.set_AoA_rad(x[0])
    func_grad = DLLM.comp_dpR_dpAoA()
    N = len(func_grad)
Пример #41
0
wing_param.set_value("sweep", 34.0)
wing_param.set_value("break_percent", 23.0)  # 33.
wing_param.set_value("root_chord", 5.4)  # 6.1
wing_param.set_value("break_chord", 4.6)
wing_param.set_value("tip_chord", 1.2)  # 1.5
wing_param.set_value("root_height", 0.98)
wing_param.set_value("break_height", 0.70)
wing_param.set_value("tip_height", 0.18)
wing_param.convert_to_design_variable("span", (10.0, 50.0))
wing_param.convert_to_design_variable("sweep", (0.0, 40.0))
wing_param.convert_to_design_variable("break_percent", (20.0, 40.0))
wing_param.convert_to_design_variable("root_chord", (5.0, 7.0))
wing_param.convert_to_design_variable("break_chord", (3.0, 5.0))
wing_param.convert_to_design_variable("tip_chord", (1.0, 2.0))
wing_param.convert_to_design_variable("root_height", (0.7, 1.0))
wing_param.convert_to_design_variable("break_height", (0.45, 0.8))
wing_param.convert_to_design_variable("tip_height", (0.10, 0.26))
# wing_param.build_linear_airfoil(OC, AoA0=-2., Cm0=-0.1, set_as_ref=True)
wing_param.build_meta_airfoil(
    OC, "../MetaModelCleaning.xml", relative_thickness=0.12, camber=0.0, Sref=1.0, Lref=1.0, sweep=0.0, set_as_ref=True
)
wing_param.build_airfoils_from_ref()
wing_param.update()

print wing_param

DLLM = DLLMSolver("Meta", wing_param, OC)
DLLM.run_direct()
DLLM.run_post()
DLLM.run_adjoint()