def test_DLLM_MP_AoA_valid_grad(self): config_dict = self.__get_base_config_dict() config_dict['Case.AoA_id_list']=['AoA1','AoA2','AoA3'] config_dict['Case.param.BCfilename']='input_parameters_AoA.par' MP=DLLMMP('Case') MP.configure(config_dict) MP.set_out_format('numpy') MP.set_grad_format('numpy') x0=MP.get_x0() Ref_list=MP.analysis() def f(x): func=MP.run(x) return func/Ref_list def df(x): func_grad=MP.run_grad(x) 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_grad=FDValidGrad(2,f,df,fd_step=1.e-8) ok,df_fd,df=val_grad.compare(x0,treshold=1.e-5,split_out=True,return_all=True) assert(ok)
# DLLM configuration config_dict['Case.DLLM.type']='Solver' config_dict['Case.DLLM.method']='inhouse' config_dict['Case.DLLM.relax_factor']=0.99 config_dict['Case.DLLM.stop_residual']=1e-9 config_dict['Case.DLLM.max_iterations']=100 config_dict['Case.cond1.DLLM.gamma_file_name']='cond1_gamma.dat' config_dict['Case.cond2.DLLM.gamma_file_name']='cond2_gamma.dat' config_dict['Case.cond3.DLLM.gamma_file_name']='cond3_gamma.dat' list_log=glob('*.log') for log in list_log: os.remove(log) MP=DLLMMP('Case') MP.configure(config_dict) MP.set_out_format('numpy') MP.set_grad_format('numpy') x0=MP.get_x0() val_grad=FDValidGrad(2,MP.run,MP.run_grad,fd_step=1.e-8) ok,df_fd,df=val_grad.compare(x0,treshold=1.e-6,split_out=True,return_all=True) print '\n****************************************************' if ok: print 'DLLMMP gradients are valid.' else: print 'DLLMMP gradients are not valid!' print '****************************************************'
# AoA design variable must not be used with TargetCl or TargetLift config_dict['Case.param.desc.AoA1.type']='DesignVariable' config_dict['Case.param.desc.AoA1.value']=0. config_dict['Case.param.desc.AoA1.bounds']=(-20.,+20.) config_dict['Case.param.desc.AoA2.type']='DesignVariable' config_dict['Case.param.desc.AoA2.value']=0. config_dict['Case.param.desc.AoA2.bounds']=(-20.,+20.) config_dict['Case.param.desc.AoA3.type']='DesignVariable' config_dict['Case.param.desc.AoA3.value']=0. config_dict['Case.param.desc.AoA3.bounds']=(-20.,+20.) list_log=glob('*.log') for log in list_log: os.remove(log) MP=DLLMMP('Case') MP.configure(config_dict) F_list,F_list_grad=MP.analysis_and_grad() for i,grad in enumerate(F_list_grad): print 'cond'+str(i+1)+' Lift grad = ',grad # # Parameterisation configuration # # # DLLM configuration # config_dict['cond1.DLLM.type']='Solver' # config_dict['cond1.DLLM.method']='inhouse' # config_dict['cond1.DLLM.relax_factor']=0.99 # config_dict['cond1.DLLM.stop_residual']=1e-9 # config_dict['cond1.DLLM.max_iterations']=100
config_dict['Case.cond2.OC.Mach']=0.6 config_dict['Case.cond2.OC.AoA']=4.5 config_dict['Case.cond2.OC.altitude']=5000. # cond3 Operating condition information config_dict['Case.cond3.OC.Mach']=0.4 config_dict['Case.cond3.OC.AoA']=6. config_dict['Case.cond3.OC.altitude']=1000. # Parameterisation configuration config_dict['Case.param.geom_type']='Broken' config_dict['Case.param.n_sect']=20 config_dict['Case.param.BCfilename']='input_parameters.par' config_dict['Case.param.airfoil.type']='simple' config_dict['Case.param.airfoil.AoA0']=-2. config_dict['Case.param.airfoil.Cm0']=-0.1 # DLLM configuration config_dict['Case.DLLM.type']='Solver' config_dict['Case.DLLM.method']='inhouse' config_dict['Case.DLLM.relax_factor']=0.99 config_dict['Case.DLLM.stop_residual']=1e-9 config_dict['Case.DLLM.max_iterations']=100 list_log=glob('*.log') for log in list_log: os.remove(log) MP=DLLMMP('Case') MP.configure(config_dict) MP.analysis_and_grad()
config_dict['Case.param.desc.break_height.bounds'] = (0.8, 1.2) config_dict['Case.param.desc.tip_height.type'] = 'DesignVariable' config_dict['Case.param.desc.tip_height.value'] = 0.33 config_dict['Case.param.desc.tip_height.bounds'] = (0.2, 0.5) config_dict['Case.DLLM.type'] = 'Solver' config_dict['Case.DLLM.method'] = 'inhouse' config_dict['Case.DLLM.relax_factor'] = 0.99 config_dict['Case.DLLM.stop_residual'] = 1e-9 config_dict['Case.DLLM.max_iterations'] = 100 list_log = glob('*.log') for log in list_log: os.remove(log) MP = DLLMMP('Case') MP.configure(config_dict) MP.set_out_format('numpy') MP.set_grad_format('numpy') x0 = MP.get_x0() val_grad = FDValidGrad(2, MP.run, MP.run_grad, fd_step=1.e-8) ok, df_fd, df = val_grad.compare(x0, treshold=1.e-6, split_out=True, return_all=True) # for j in xrange(len(df[:,0])): # fid=open('gradient_file'+str(j)+'.dat','w') # for i in xrange(len(x0)):
config_dict['Case.param.desc.break_height.bounds'] = (0.8, 1.2) config_dict['Case.param.desc.tip_height.type'] = 'DesignVariable' config_dict['Case.param.desc.tip_height.value'] = 0.33 config_dict['Case.param.desc.tip_height.bounds'] = (0.2, 0.5) config_dict['Case.DLLM.type'] = 'Solver' config_dict['Case.DLLM.method'] = 'inhouse' config_dict['Case.DLLM.relax_factor'] = 0.99 config_dict['Case.DLLM.stop_residual'] = 1e-9 config_dict['Case.DLLM.max_iterations'] = 100 list_log = glob('*.log') for log in list_log: os.remove(log) MP = DLLMMP('Case') MP.configure(config_dict) MP.analysis_grad() # # Parameterisation configuration # # # DLLM configuration # config_dict['cond1.DLLM.type']='Solver' # config_dict['cond1.DLLM.method']='inhouse' # config_dict['cond1.DLLM.relax_factor']=0.99 # config_dict['cond1.DLLM.stop_residual']=1e-9 # config_dict['cond1.DLLM.max_iterations']=100 # config_dict['cond1.DLLM.gamma_file_name']='gamma.dat' # #config_dict['cond1.DLLM.F_list_names']=['Lift','Drag','Drag_Pressure','Drag_Friction','Cl', 'Cd', 'Cdp', 'Cdf', 'LoD'] # config_dict['cond1.DLLM.F_list_names']=['Lift','Drag','Drag_Pressure','Drag_Friction','LoD']
# cond3 Operating condition information config_dict['Case.cond3.OC.Mach']=0.4 config_dict['Case.cond3.OC.AoA']=6. config_dict['Case.cond3.OC.altitude']=1000. # Parameterisation configuration config_dict['Case.param.geom_type']='Broken' config_dict['Case.param.n_sect']=20 config_dict['Case.param.BCfilename']='input_parameters.par' config_dict['Case.param.airfoil.type']='simple' config_dict['Case.param.airfoil.AoA0']=-2. config_dict['Case.param.airfoil.Cm0']=-0.1 # DLLM configuration config_dict['Case.DLLM.type']='Solver' config_dict['Case.DLLM.method']='inhouse' config_dict['Case.DLLM.relax_factor']=0.99 config_dict['Case.DLLM.stop_residual']=1e-9 config_dict['Case.DLLM.max_iterations']=100 config_dict['Case.cond1.DLLM.gamma_file_name']='cond1_gamma.dat' config_dict['Case.cond2.DLLM.gamma_file_name']='cond2_gamma.dat' config_dict['Case.cond3.DLLM.gamma_file_name']='cond3_gamma.dat' list_log=glob('*.log') for log in list_log: os.remove(log) MP=DLLMMP('Case') MP.configure(config_dict) MP.analysis()
# AoA design variable must not be used with TargetCl or TargetLift config_dict['Case.param.desc.AoA1.type'] = 'DesignVariable' config_dict['Case.param.desc.AoA1.value'] = 0. config_dict['Case.param.desc.AoA1.bounds'] = (-20., +20.) config_dict['Case.param.desc.AoA2.type'] = 'DesignVariable' config_dict['Case.param.desc.AoA2.value'] = 0. config_dict['Case.param.desc.AoA2.bounds'] = (-20., +20.) config_dict['Case.param.desc.AoA3.type'] = 'DesignVariable' config_dict['Case.param.desc.AoA3.value'] = 0. config_dict['Case.param.desc.AoA3.bounds'] = (-20., +20.) list_log = glob('*.log') for log in list_log: os.remove(log) MP = DLLMMP('Case') MP.configure(config_dict) F_list, F_list_grad = MP.analysis_and_grad() for i, grad in enumerate(F_list_grad): print 'cond' + str(i + 1) + ' Lift grad = ', grad # # Parameterisation configuration # # # DLLM configuration # config_dict['cond1.DLLM.type']='Solver' # config_dict['cond1.DLLM.method']='inhouse' # config_dict['cond1.DLLM.relax_factor']=0.99 # config_dict['cond1.DLLM.stop_residual']=1e-9 # config_dict['cond1.DLLM.max_iterations']=100 # config_dict['cond1.DLLM.gamma_file_name']='gamma.dat'