УДК 62-758.34:004.432 В.В. Широкое1
ОСОБЕННОСТИ ПРИМЕНЕНИЯ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ ВЫСОКОГО УРОВНЯ ДЛЯ РАСЧЕТА РАДИОТЕХНИЧЕСКИХ ПАРАМЕТРОВ МАТЕРИАЛОВ СПЕЦИАЛЬНОГО НАЗНАЧЕНИЯ
Рассматриваются особенности применения языков программирования высокого уровня для расчета радиотехнических параметров. Описаны программы для расчета радиотехнических параметров материалов, разработанных в ВИАМ. Приведена структура программы для расчета коэффициента отражения (КО) электромагнитной волны при нормальном падении на неметаллический однослойный изотропный материал (расположенный на металле).
Ключевые слова: радиопоглощающий материал, электромагнитная волна, оптимизация параметров, язык программирования высокого уровня.
In this article features of application high-level programming languages for calculation radio engineering parameters are considered. Described programs for calculation radio engineering parameters of materials developed in VIAM. It is provided structure of the program for calculation factor of reflection the electromagnetic wave at normal falling on a nonmetallic single-layered isotropic material (located on metal).
Keywords: radio-absorbing material, electromagnetic wave, optimization of the parameters, high-level programming languages.
Федеральное государственное унитарное предприятие «Всероссийский научно-исследовательский институт авиационных материалов» Государственный научный центр Российской Федерации [Federal state unitary enterprise «All-Russian scientific research institute of aviation materials» State research center of the Russian Federation] E-mail: [email protected]
Введение
В настоящее время трудно представить работу организации без компьютеров, которые используются для создания офисных документов, проектирования, моделирования различных процессов, создания рабочих сетей, в которых узлами являются компьютеры и т. д. Но изначально основная задача компьютера предполагала различные математические расчеты, которые в виде программ закладывались в него. Так, одни из первых машин использовали низкоуровневый язык Ассемблер. В данном языке двоичные команды процессора заменены мнемониками (двоичный код каждой команды заменен более понятной аббревиатурой). Позже появились языки высокого уровня. При использовании языков высокого уровня программисту не надо досконально знать внутреннее устройство процессора и других компонентов машины для создания программ. Поэтому программист при создании кода может сосредоточить свое внимание на алгоритмах программы, не вдаваясь в подробности устройства машины. Одним из первых языков программирования высокого уровня был Фортран, который и в настоящее время используется для научных расчетов. В 1972 году появился язык C, который существенно повлиял на будущее языков программирования. Этот язык стал основой для создания языка C++, в котором реализованы механизмы объектно-ориентированного программирования. В свою очередь язык C++ повлиял на такие объектно-ориентированные языки, как Java и C#.
В современных исследованиях компьютер как обработчик результатов играет все большую роль. Так, в программе оптимизации характеристик многослойных радио-
поглощающих структур компьютер избавляет от многочисленных (многократных, циклических) вычислений вручную.
Выбор языка программирования
Среди процедурных языков программирования для расчета электродинамических параметров наиболее интересны Фортран (77 и выше) и C стандарта 99 (C99), так как они поддерживают работу с комплексными числами. Для языка Фортран тип «комплексное число» является встроенным типом, на языке C в начале программы надо включать файл заголовка <complex.h>.
В языке C++ включается заголовок <complex> и используется пространство имен, обозначенное оператором языка std::complex.
Разработка современных радиопоглощающих материалов (как и ряда других композиционных материалов) [1, 2] требует детального расчета и компьютерного моделирования. Для разработки многослойного радиопоглощающего материала требуется предварительный расчет на компьютере параметров слоев и оптимизация этих параметров. При этом используется программа численной оптимизации многослойных радиопоглощающих структур.
Так, для изготовления материала для безэховых камер производится оптимизация (описана в работе [3] для резонансных радиопоглощающих материалов) его структуры на компьютере. Материал представляет собой многослойную структуру из плит на основе вспененного асбеста, наполненного радиотехническим наполнителем. В программу оптимизации закладываются начальные параметры структуры: диэлектрическая проницаемость матрицы (не наполненной элементами радиотехнического назначения), объемное содержание наполнителя, толщина слоев, конфигурация наполнителя (для волокна - отношение длины к диаметру). В программу также закладывается сетка частот и необходимый коэффициент отражения (КО) на каждой частоте. Программа на каждой итерации вычисляет целевую функцию, которая должна быть сведена к минимуму. Целевая функция имеет вид:
FM = £ [R(fJ)-EJ]2, (1)
j=I
где R(f)=F(f; p1; p2,... pn) - многопараметрическая функция зависимости КО от частоты и от параметров pb p2,... pn; f1. fn - заданная сетка частот; E1_En - заданные необходимые уровни КО.
На выходе программы получаем оптимизированные параметры структуры.
Методы разработки
Простую программу для ввода, обработки данных и вывода результата можно реализовать на процедурном языке, например создав три функции Input, Funcl, Output. Программируя на языке C, необходимо быть осторожным при работе с массивами и указателями, так как возможны выход за пределы массива или неправильно инициализированный указатель. В сложных программах, возможно, потребуется создать большее число функций. Далее показан пример обозначения (объявления) комплексных переменных и массивов на языках Фортран [4] и C [5]. Показано также обозначение (объявление) комплексных переменных на языке C++ [6].
Пример на языке Фортран: COMPLEX A, X, С(100) - обозначение (объявление) двух комплексных переменных A, X и массива С из 100 комплексных элементов.
Пример на языке C99: include <complex.h>
double complex A, X, C[100];
Пример на языке C++: #include <complex>
std::complex<double> А, X, С[100];
Необходимо помнить о различии между обращением к элементам массива в языках С/С++ и Фортран. В языках С и С++ отсчет элементов массива начинается с 0, в Фортране - с 1.
Обращение к первому и последнему элементу на языке Фортран:
A=C(1) X=C(100)
Обращение к первому и последнему элементу на языках C и C++:
A=C[0]; X=C[99];
После обозначения (объявления) переменных их можно использовать в программе. Программируя на современном языке Фортран, следует в начале программы ввести оператор implicit none для предотвращения автоматического определения типа переменной.
На процедурном языке перед созданием больших программ расчета с множеством функций и переменных (массивов) создается блок-схема программы, которая отражает алгоритмы, используемые в ней.
Пример программы для расчета коэффициента отражения
Далее приведен фрагмент программы на языке Фортран для расчета коэффициента отражения (КО) материала при известных величинах s и ц (по программе рассчитывают КО с учетом того, что образец расположен на металле) с использованием следующих формул:
^ ( 2nd
"Г -1
ZBX =-i^ f -tgi ^v^l; (2)
+1
(3)
Ядб =20-^1о(К„дЯ ), (4)
где Zвx - нормированный входной импеданс (комплексный); ц, е - соответственно относительные комплексные магнитная и диэлектрическая проницаемости; X - длина волны; d - толщина образца; Км0Д£ - модуль коэффициента отражения по напряженности электрического поля; Ядб -коэффициент отражения, дБ.
Данная программа состоит из трех основных частей:
- считывания исходных данных из файла в массивы, которые размещены в памяти. Из входного файла для каждого образца считываются: толщина образца, комплексные диэлектрическая и магнитная проницаемости;
- для каждого образца рассчитываются величины Zвx и Я;
- вывод результатов в файл - в выходной файл выводится коэффициент отражения.
Блок-схема программы для расчета коэффициента отражения
Описание блок-схемы программы (см. рисунок) и алгоритм программы вычисления КО образца, расположенного на металле, приведены далее:
1. Оператор входа в программу (название программы - PROGNAME).
2. Ввод с клавиатуры: ms - количество образцов; lyam - длина волны.
3. Считывание входных данных из файла: s - шифр образца; s - комплексная диэлектрическая проницаемость; ц - комплексная магнитная проницаемость; d -толщина образца.
4. Цикл по количеству образцов - от 1 до ms; i - текущий образец. Если параметр i меньше или равен количеству образцов, тогда цикл выполняется. Если параметр i больше количества образцов, тогда выход из цикла.
5. Расчет промежуточных переменных и массивов - расчет ZBX (входной импеданс образца) и R (коэффициент отражения).
6. Переход к следующей итерации.
7. Вывод рассчитанных данных (R) в выходной файл - выводится шифр образца и соответствующий коэффициент отражения.
8. Конец программы (PROGNAME).
Вычисление КО, реализованное на языке Фортран, выглядит следующим образом (! - символ, обозначающий комментарий): program PROGNAME implicit none
! В начале программы обязательно обозначаются (объявляются) все переменные и ! массивы, используемые в программе. ! Здесь объявление всех массивов и переменных.
! Здесь считывание исходных данных из файла в переменные и массивы, находящиеся ! в памяти компьютера.
! Здесь основной цикл расчета: ! мнимая единица jmnim=(0,1.)
! цикл расчета с 1 по последний образец. т5=количество образцов. do ¡=1,тэ
! вспомогательные массивы и переменные
mu_eps(/)=csqrt(mu(/)/eps(/))
mu_eps1(/)=csqrt(mu(/)*eps(/))
xcompx(/)=((mu_eps1(/)*(2.*3.14*tolsh(/)))/lyam)
sm1(/)=csm(xcompx(/))
cos1(/)=ccos(xcompx(/))
tanl(/)=sin1(/)/cos1(/)
! Вычисление результата и сохранение его в массивах
z(/)=-jmmm*mu_eps(/)*tan1(/)
modz(/)=cabs((z(/)-1.0)/(z(/)+1.0))
r(/)=20.0*log10(modz(/))
end do
! Здесь вывод результатов в выходной файл.
end program PROGNAME
Заключение
В ВИАМ разработано множество программ для расчета радиотехнических параметров на языках высокого уровня, некоторые приведены далее:
- программа для численной оптимизации многослойных радиопоглощающих структур;
- программы для расчета диэлектрической (s) и магнитной проницаемости (ц) материала, при помощи которых рассчитывают комплексные s и д, по данным полученным при измерении материала в волноводной линии [7]. В работе [8], после измерений в волноводе, диэлектрическая проницаемость образцов рассчитывалась по программе;
- разработана также программа для определения коэффициента отражения образца после измерения параметра S11 на анализаторе цепей. К порту 1 анализатора цепей подключена рупорная антенна, которая направлена на образец и остается неподвижной в течение всего процесса измерений. Данные снимаются с анализатора цепей при передвижении вниз образца, расположенного на подъемнике. На анализаторе цепей определяются минимальное значение КО и максимальное значение КО, сумма уровня отражения образца и антенны. Во входной файл программы вводятся измеренные значения, далее программа рассчитывает КО образца. Данная программа используется в работах
[9, 10];
- программа вычисления комплексной диэлектрической проницаемости образцов после определения коэффициента прохождения на анализаторе цепей, к портам которого подключены две рупорные антенны. Образец располагается между рупорными антеннами. Метод расчета описан в работе [11].
На базе существующих программ планируется создание нового программного обеспечения для расчета радиотехнических параметров. Например, планируется создание новой программы оптимизации радиопоглощающих структур, наполненных нано-размерными частицами. Другие программы также будут модернизироваться. Некоторым программам будет добавлен графический интерфейс и возможность ввода/вывода данных в виде таблиц Excel.
Исследование выполнено при финансовой поддержке РФФИ в рамках научного проекта №15-38-20717 мол_а_вед.
ЛИТЕРАТУРА
1. Каблов E.H. Инновационные разработки ФГУП «ВИАМ» ГНЦ РФ по реализации «Стратегических направлений развития материалов и технологий их переработки на период до 2030 года» //Авиационные материалы и технологии. 2015. №1 (34). С. 3-33.
2. Каблов E.H. Авиакосмическое материаловедение //Все материалы. Энциклопедический справочник. 2008. №3. С. 2-14.
3. Романов A.M., Беляев A.A., Широков В.В. Особенности оптимизации резонансных радиопоглощающих материалов немагнитного типа //Труды ВИАМ. 2014. №11. Ст. 05 (viam-works.ru).
4. ISO/IEC 1539:1991.
5. ISO/IEC 9899:1999.
6. ISO/IEC 14882:2003.
7. Широков В.В., Романов A.M. Исследование диэлектрических характеристик стеклосотопла-ста волноводным методом //Авиационные материалы и технологии. 2013. №4. С. 62-70.
8. Каблов E.H., Кондратов C.B., Юрков Г.Ю. Перспективы использования углеродсодержащих наночастиц в связующих для полимерных композиционных материалов //Российские нано-технологии. 2013. Т. 8. №3-4. С. 24-42.
9. Беляев A.A., Кондратов C.B., Лепешкин В.В., Романов A.M. Радиопоглощающие материалы //Авиационные материалы и технологии. 2012. №S. С. 348-352.
10. Краев И.Д., Образцова Е.П., Юрков Г.Ю. Влияние морфологии магнитного наполнителя на радиопоглощающие характеристики композиционных материалов //Авиационные материалы и технологии. 2014. №S2. С. 10-14.
11. Шульдешов Е.М., Лепешкин В.В., Романов A.M. Метод неразрушающего контроля комплексной диэлектрической проницаемости входных слабо наполненных слоев градиентных радиопоглощающих полимерных композиционных материалов //Труды ВИАМ. 2014. №11. Ст. 11 (viam-works.ru).