示例#1
0
  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()
示例#5
0
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)):
示例#6
0
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()
示例#8
0
# 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'