Цифровые данные DATCOM

Цифровой обзор данных DATCOM

Продукт Aerospace Toolbox позволяет принести Военно-воздушным силам США (USAF) Цифровые файлы DATCOM в среду MATLAB® при помощи функции datcomimport. Для получения дополнительной информации смотрите страницу ссылки на функцию datcomimport. Этот раздел объясняет, как импортировать данные от ВВС США Цифровой файл DATCOM.

Пример, используемый в следующих темах, доступен как пример Aerospace Toolbox. Можно запустить пример путем ввода astimportddatcom в Окно Команды MATLAB.

ВВС США цифровой файл DATCOM

Следующее является демонстрационным входным файлом для ВВС США Цифровой DATCOM для горизонтальной телом крылом вертикальной хвостом настройки хвоста, работающей на основе пяти альф, двух Чисел Маха и двух высот и вычисляющей статические и динамические производные. Можно также просмотреть этот файл путем ввода type astdatcom.in в Окно Команды MATLAB.

 $FLTCON NMACH=2.0,MACH(1)=0.1,0.2$
 $FLTCON NALT=2.0,ALT(1)=5000.0,8000.0$   
 $FLTCON NALPHA=5.,ALSCHD(1)=-2.0,0.0,2.0,    
  ALSCHD(4)=4.0,8.0,LOOP=2.0$
 $OPTINS SREF=225.8,CBARR=5.75,BLREF=41.15$  
 $SYNTHS XCG=7.08,ZCG=0.0,XW=6.1,ZW=-1.4,ALIW=1.1,XH=20.2,
   ZH=0.4,ALIH=0.0,XV=21.3,ZV=0.0,VERTUP=.TRUE.$ 
 $BODY NX=10.0,                          
   X(1)=-4.9,0.0,3.0,6.1,9.1,13.3,20.2,23.5,25.9,   
   R(1)=0.0,1.0,1.75,2.6,2.6,2.6,2.0,1.0,0.0$     
 $WGPLNF CHRDTP=4.0,SSPNE=18.7,SSPN=20.6,CHRDR=7.2,SAVSI=0.0,CHSTAT=0.25,   
   TWISTA=-1.1,SSPNDD=0.0,DHDADI=3.0,DHDADO=3.0,TYPE=1.0$   
NACA-W-6-64A412
 $HTPLNF CHRDTP=2.3,SSPNE=5.7,SSPN=6.625,CHRDR=0.25,SAVSI=11.0,  
   CHSTAT=1.0,TWISTA=0.0,TYPE=1.0$   
NACA-H-4-0012
 $VTPLNF CHRDTP=2.7,SSPNE=5.0,SSPN=5.2,CHRDR=5.3,SAVSI=31.3,  
   CHSTAT=0.25,TWISTA=0.0,TYPE=1.0$  
NACA-V-4-0012
CASEID SKYHOGG BODY-WING-HORIZONTAL TAIL-VERTICAL TAIL CONFIG 
DAMP
NEXT CASE

Выходной файл, сгенерированный ВВС США Цифровой DATCOM для той же горизонтальной телом крылом вертикальной хвостом настройки хвоста, работающей на основе пяти альф, двух Чисел Маха и двух высот, может быть просмотрен путем ввода type astdatcom.out в Окне Команды MATLAB.

Данные из файлов DATCOM

Используйте функцию datcomimport, чтобы принести Цифровые данные DATCOM в среду MATLAB.

alldata = datcomimport('astdatcom.out', true, 0);

Импортированные данные DATCOM

Функция datcomimport создает массив ячеек структур, содержащих данные из Цифрового выходного файла DATCOM.

data = alldata{1}
data = 
 struct with fields:

        case: 'SKYHOGG BODY-WING-HORIZONTAL TAIL-VERTICAL TAIL CONFIG'
        mach: [0.1000 0.2000]
         alt: [5000 8000]
       alpha: [-2 0 2 4 8]
       nmach: 2
        nalt: 2
      nalpha: 5
       rnnub: []
      hypers: 0
        loop: 2
        sref: 225.8000
        cbar: 5.7500
       blref: 41.1500
         dim: 'ft'
       deriv: 'deg'
      stmach: 0.6000
      tsmach: 1.4000
        save: 0
       stype: []
        trim: 0
        damp: 1
       build: 1
        part: 0
     highsym: 0
     highasy: 0
     highcon: 0
        tjet: 0
      hypeff: 0
          lb: 0
         pwr: 0
        grnd: 0
       wsspn: 18.7000
       hsspn: 5.7000
      ndelta: 0
       delta: []
      deltal: []
      deltar: []
         ngh: 0
      grndht: []
      config: [1x1 struct]
          cd: [5x2x2 double]
          cl: [5x2x2 double]
          cm: [5x2x2 double]
          cn: [5x2x2 double]
          ca: [5x2x2 double]
         xcp: [5x2x2 double]
         cla: [5x2x2 double]
         cma: [5x2x2 double]
         cyb: [5x2x2 double]
         cnb: [5x2x2 double]
         clb: [5x2x2 double]
       qqinf: [5x2x2 double]
         eps: [5x2x2 double]
    depsdalp: [5x2x2 double]
         clq: [5x2x2 double]
         cmq: [5x2x2 double]
        clad: [5x2x2 double]
        cmad: [5x2x2 double]
         clp: [5x2x2 double]
         cyp: [5x2x2 double]
         cnp: [5x2x2 double]
         cnr: [5x2x2 double]
         clr: [5x2x2 double]

Пропавшие без вести данные DATCOM

По умолчанию недостающие точки данных установлены в 99 999, и точки данных установлены в NaN, где никакие методы DATCOM не существуют или где метод не применим.

Это видно в Цифровом выходном файле DATCOM и исследовании импортированных данных это CYβ, Cnβ, CLq, и Cmq имейте данные только в первом альфа-значении. Вот импортированные значения данных.

data.cyb
ans(:,:,1) =

  1.0e+004 *

   -0.0000   -0.0000
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999


ans(:,:,2) =

  1.0e+004 *

   -0.0000   -0.0000
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999

data.cnb
ans(:,:,1) =

  1.0e+004 *

    0.0000    0.0000
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999


ans(:,:,2) =

  1.0e+004 *

    0.0000    0.0000
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999

data.clq
ans(:,:,1) =

  1.0e+004 *

    0.0000    0.0000
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999


ans(:,:,2) =

  1.0e+004 *

    0.0000    0.0000
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999

data.cmq
ans(:,:,1) =

  1.0e+004 *

   -0.0000   -0.0000
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999


ans(:,:,2) =

  1.0e+004 *

   -0.0000   -0.0000
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999
    9.9999    9.9999

Недостающие точки данных будут заполнены значениями для первой альфы, поскольку эти точки данных предназначаются, чтобы использоваться для всех альфа-значений.

aerotab = {'cyb' 'cnb' 'clq' 'cmq'};

for k = 1:length(aerotab)
    for m = 1:data.nmach
        for h = 1:data.nalt
            data.(aerotab{k})(:,m,h) = data.(aerotab{k})(1,m,h);
        end
    end
end

Вот обновленные импортированные значения данных.

data.cyb
ans(:,:,1) =

   -0.0035   -0.0035
   -0.0035   -0.0035
   -0.0035   -0.0035
   -0.0035   -0.0035
   -0.0035   -0.0035


ans(:,:,2) =

   -0.0035   -0.0035
   -0.0035   -0.0035
   -0.0035   -0.0035
   -0.0035   -0.0035
   -0.0035   -0.0035

data.cnb
ans(:,:,1) =

  1.0e-003 *

    0.9142    0.8781
    0.9142    0.8781
    0.9142    0.8781
    0.9142    0.8781
    0.9142    0.8781


ans(:,:,2) =

  1.0e-003 *

    0.9190    0.8829
    0.9190    0.8829
    0.9190    0.8829
    0.9190    0.8829
    0.9190    0.8829

data.clq
ans(:,:,1) =

    0.0974    0.0984
    0.0974    0.0984
    0.0974    0.0984
    0.0974    0.0984
    0.0974    0.0984


ans(:,:,2) =

    0.0974    0.0984
    0.0974    0.0984
    0.0974    0.0984
    0.0974    0.0984
    0.0974    0.0984

data.cmq
ans(:,:,1) =

   -0.0892   -0.0899
   -0.0892   -0.0899
   -0.0892   -0.0899
   -0.0892   -0.0899
   -0.0892   -0.0899


ans(:,:,2) =

   -0.0892   -0.0899
   -0.0892   -0.0899
   -0.0892   -0.0899
   -0.0892   -0.0899
   -0.0892   -0.0899

Аэродинамические коэффициенты

Можно теперь построить аэродинамические коэффициенты:

Графический вывод моментов кривой лифта

h1 = figure;
figtitle = {'Lift Curve' ''};
for k=1:2
    subplot(2,1,k)
    plot(data.alpha,permute(data.cl(:,k,:),[1 3 2]))
    grid
    ylabel(['Lift Coefficient (Mach =' num2str(data.mach(k)) ')'])
    title(figtitle{k});
end
xlabel('Angle of Attack (deg)')

Графический вывод перетаскивает полярные моменты

h2 = figure;
figtitle = {'Drag Polar' ''};
for k=1:2
    subplot(2,1,k)
    plot(permute(data.cd(:,k,:),[1 3 2]),permute(data.cl(:,k,:),[1 3 2]))
    grid
    ylabel(['Lift Coefficient (Mach =' num2str(data.mach(k)) ')'])
    title(figtitle{k})
end
xlabel('Drag Coefficient')

Графический вывод моментов подачи

h3 = figure;
figtitle = {'Pitching Moment' ''};
for k=1:2
    subplot(2,1,k)
    plot(permute(data.cm(:,k,:),[1 3 2]),permute(data.cl(:,k,:),[1 3 2]))
    grid
    ylabel(['Lift Coefficient (Mach =' num2str(data.mach(k)) ')'])
    title(figtitle{k})
end
xlabel('Pitching Moment Coefficient')