средней проводимости подшипника. В случае жидкостного трения, данный параметр характеризует среднее значение толщины смазочной пленки в зонах трения, при граничной смазке - несет информацию о значениях толщины поверхностных пленок и действительный размерах пятен металлических контактов поверхностей, а при полужидкой смазке комплексно характеризует перечисленные параметры. Так же, данный метод достаточно прост в реализации [8. стр 69].
Метод измерения НИВ использует качестве параметра нормированное интегральное время (НИВ) микроконтактирования - относительное время, в течение которого сопротивление подшипника ниже некоторого порогового значения (при измерении R^ выбирают порядка 50-100 Ом)[6, стр. 136] [7, стр. 110]. Данный метод обеспечивает идентификацию режима смазки в подшипнике, обладает хорошей помехозащищенностью, высокой чувствительностью.
Сравнительный анализ методов показал, что наиболее перспективными являются метод измерения активного сопротивления (активной составляющей комплексного сопротивления) и метод НИВ. Эти методы позволят проводить диагностирование практически всех подшипников качения как на отдельно взятых диагностических стендах, так и в узлах и машинах. При этом оценка технического состояния подшипника может проводиться во время работы машины, без его изъятия из узла и на рабочих режимах, а так же на других аналогичных объектах [8. стр 629].
Список использованной литературы:
1. Акустические и электрические методы в триботехнике / Свириденок А.И. [и др.]. Минск: Наука и техника, 1987. 257 с.
2. Майоров М.В., Мишин В.В., Чернышов В.Н. Диагностирование ступичных подшипников автомобиля//Мир транспорта и технологических машин. 2013. № 2 (41). С. 9-16.
3. Моделирование активного сопротивления подшипникового узла./Чернышов В.Н. [и др].//Фундаментальные и прикладные проблемы техники и технологии. 2011. № 2-2. С. 18-23.
4. Бальмонт В.Б., Матвеев В.А. Опоры качения приборов./М.: Машиностроение, 1984. - 240 с.
5. Спришевский, А.И. Подшипники качения: монография. М.: Машиностроение, 1968. - 632 с.
6. Мишин В.В. Подход к комплексному диагностированию подшипникового узла с учетом качества его сборки.//Фундаментальные и прикладные проблемы техники и технологии. 2010. №6. С. 132-139.
7. Экспериментальное исследование электрического сопротивления (проводимости) подшипника качения, как диагностического параметра/Селихов А.В. [и др].//Фундаментальные и прикладные проблемы техники и технологии. 2010. № 6-2. С. 25.
8. Подмастерьев К.В. Электропараметрические методы комплексного диагностирования опор качения: монография. М.: Машиностроение-1, 2001. - 376 с.
9. Zhidkov A.V., Tyutyakin A.V., Mishin V.V. Research of time-frequency characteristics of electrical resistance signal of friction zone of hip joint endoprosthesis with metal-metal friction pair // International Conference on Industrial Engineering, ICIE 2017. С. 624-629.
© Афанасьев Н.А., 2021
УДК 004.4
Донсков Н.В.
г. Ростов-на-Дону, РФ.
ПРОГРАММА ДЛЯ СИМУЛЯЦИИ ЖИДКОСТИ И ГАЗОВ
Аннотация
В статье описывается предложенный автором алгоритм и его программная реализация на
алгоритмическом языке Си по симуляции поведения жидкостей и газа, представлены некоторые результаты моделирования процесса истечения жидкости при разных положениях точечных источников и их количестве.
Программа может использоваться в учебном процессе при изучении данных тем.
Ключевые слова:
Симуляция, язык программирования Си, плотность, источник.
Введение. В настоящее время тема симуляций различных физических и химических процессов начала набирать популярность [1,2]. Люди воссоздают на компьютерах то, что они видят в реальной жизни. Иногда реалистичность результатов таких работ поражают. В данной статье мы детально рассмотрим одну из самых завораживающих и красивых симуляций - симуляции жидкости и газов.
Для того чтобы сделать точную симуляцию столь непростого процесса, надо разобраться в том, как именно работают жидкость и газы в реальной жизни.
Теория. Жидкость в реальной жизни описывается уравнениями Навье-Стокса. Мы не будем останавливаться на них, так как это фундаментальные уравнения, понимание которых требует глубоких знаний в области физики и решения дифференциальных уравнений.
Вывод на экран. Так как используется язык программирования Си, то все результаты выводятся в командную строку. Чтобы отобразить изображение на монитор, в программе используется набор из одиннадцати символов, расположенных по так называемой градации яркости. Они хранятся в одномерном массиве:
char gradient[] = " .:;~-+*!#$@";
Это простой линейный градиент. Чем больше символ занимает места на экране монитора, тем больше у него яркость (например: яркость символа «.» точка меньше, чем у символа «@» собака).
Идея: Жидкость в программе представляется как сетка ячеек (символов). Каждая ячейка в качестве свойств имеет следующие параметры - плотность и скорость по двум осям. Меняя в каждый момент времени эти параметры, будем получать результат симуляции, который основывается на предыдущих значениях. Это и есть основной подход к симуляции: сетка из клеток с индивидуальными свойствами.
Упрощение: Можно легко имплементировать сетку как двумерный массив плотности, и два двумерных массива скоростей по осям х и у. Однако для быстроты вывода символов на экран монитора, двумерные массивы в дальнейшем преобразуются в одномерные. Для этого в программе используется функция int IX(int x, int y).
Создание структуры сетки. Для создания объекта, который будет хранить массивы и другие параметры сетки, в программе создана структура FluidCube: struct FluidCube {
int size; //Размер сетки симуляции
float dt; //Временной шаг
float diff; //Диффузия
float vise; //Вязкость
float *s; //Предыдущая плотность
float *density;
float *Vx;
float *Vy;
float *Vx0; //Предыдущая скорость по x float *Vy0; //Предыдущая скорость по y
i 3 у
Для заполнения объекта этой структуры данными о диффузии, вязкости, временного шага симуляции и выделения оперативной памяти под массивы, создана функция.
struct FluidCube *FluidCubeCreate(int diffusion, int viscosity, float dt){ struct FluidCube *cube = malloc(sizeof(*cube)); cube->size = N; cube->dt = dt; cube->diff = diffusion; cube->visc = viscosity; cube->s = calloc(N * N, sizeof(float)); cube->density = calloc(N * N, sizeof(float)); cube->Vx = calloc(N * N, sizeof(float)); cube->Vy = calloc(N * N, sizeof(float)); cube->Vx0 = calloc(N * N, sizeof(float)); cube->Vy0 = calloc(N * N, sizeof(float)); return cube;
}
Начальное состояние. Чтобы просчитать новые состояния клеток сетки, потребуются данные о их предыдущих скоростях и плотностях. Для добавления данных в эти массивы используются функции:
void FluidCubeAddDensity(struct FluidCube *cube, int x, int y, float amount)
{
cube->density[IX(x, y)] += amount;
}
void FluidCubeAddVelocity(struct FluidCube *cube, int x, int y, float amountX, float amountY)
{
int index = IX(x, y); cube->Vx[index] += amountX; cube->Vy[index] += amountY;
}
Основные функции. Три основных этапа симуляции - диффузия, проекция и адвекция.
• Диффузия - проникание одного вещества в другое. Мы используем диффузию на каждом кадре -как в очевидном случае, когда краситель растекается, так и в неочевидном, когда частицы распространяются по скоростям.
• Проекция - количество жидкости в каждой ячейке должно быть постоянным. То есть число входящей в ячейку жидкости должно быть равно выходящей. Проекция - исправляет нашу симуляцию, приводит её к равновесию.
• Адвекция - так как у нас есть массив скоростей, эти скорости заставляют плотность двигаться. Применяется как к жидкости, так и к самим скоростям.
Для выше названных функций разработаны две подпрограммы:
Set_bnd - функция, задающая границы жидкости. То есть жидкость не должна вытекать за границы окна командной строки. Она отражает свою скорость в противоположную сторону, как бы ударяясь об стенки.
Lin_solve - функция определения коэффициентов диффузии.
Для последовательного выполнения трех этапов симуляции (диффузия, адвекция, проекция) используется функция
void FluidCubeStep(struct FluidCube *cube) {
float vise = cube->visc; float diff = cube->diff; float dt = cube->dt; float *Vx = cube->Vx; float *Vy = cube->Vy; float *Vx0 = cube->Vx0; float *Vy0 = cube->Vy0; float *s = cube->s; float *density = cube->density; diffuse(1, Vx0, Vx, vise, dt); diffuse(2, Vy0, Vy, vise, dt); projeet(Vx0, Vy0, Vx, Vy); advect(1, Vx, Vx0, Vx0, Vy0, dt); advect(2, Vy, Vy0, Vx0, Vy0, dt); project(Vx, Vy, Vx0, Vy0); diffuse(0, s, density, diff, dt); advect(0, density, s, Vx, Vy, dt);
}
Рендеринг. Для визуализации кадра симуляции на экран монитора необходимо вывести массив плотностей density[], но не в виде чисел, а в виде символов. Для решения этого вопроса был создан промежуточный массив screen[], в котором каждое численное значение плотности заменяется одним из одиннадцати символов массива gradient[] (.:;—+*!#$@), которые и формируют картинку на экране монитора.
screen[IX(i,j)] = gradient[index]; for(j = 0; j < N-1; j++) for(i = 0; i < N; i++){ if(fluid->density[IX(i,j)] > 0) //Сделаем затухание для того, чтобы
fluid->density[IX(i,j)] -= decay; //жидкость затухала со временем index = fluid->density[IX(i,j)];
if(index >= 11) //Защита от выхода за границы массива
index = 11;
}
Чтобы без задержек вывести все символы массива screen[] используем функцию printf из библиотеки <stdio .h>. Для вывода одного кадра добавляем в конец массива screen[] символ конца строки «\0», и выводим строку с помощью функции render() : void render(void){ screen[IX(N,N)] = '\0'; printf("%s",screen);
}
При таком подходе текст переносится на следующую строку автоматически.
Система вывода описанная выше, работает только в командной строке операционной системы Windows 10. На ранних версиях ОС командная строка обновляется медленнее и будут видны ее мерцания на мониторе. Размер окна командной строки должен быть N строк и N столбцов. В противном случае вывод будет работать некорректно.
Ниже приведен пример настроек командной строки (рис.1) и расчеты симуляции истечения жидкости при разных положениях точечных источников и их количестве (рис.2).
Рисунок 1 - Настройки командной строки
В данных примерах ширина буфера экрана, а также ширина и высота экрана равны 70, так как заданная в исходных данных константа N равна 70 (см. рис.1).
Выводы. Симуляция жидкости - это интересный, увлекательный, затягивающий, но не всегда простой процесс. Фрагменты программы на языке Си представленные в этой статье, могут быть легко переписаны читателем на любой другой язык программирования. Ведь цель данной статьи - показать, как работает жидкость в реальной жизни. Составленная нами программа может и неточно, но удивительно похоже повторяет поведение жидкости и газов, которые мы видим в реальной жизни. Список использованной литературы:
1. Mike Ash. Fluid Simulation for Dummies. URL: https://www.mikeash.com/pyblog/fluid-simulation-for-dummies.html
2. Jos Stam. Real-Time Fluid Dynamics for Games. URL: https://www.dgp.toronto.edu/public_user/ stam/reality/Research/pdf/GDC03.pdf
© Донсков Н.В., 2021
УДК 331.452
Коноваленко Н.С.
бакалавр 4 курса, СПбГАСУ г. Санкт-Петербург, РФ Научный руководитель: Горбунова О.В.
канд. биол. наук, доцент, СПбГАСУ г. Санкт-Петербург, РФ
ПРИМЕНЕНИЕ СИСТЕМ ОГРАНИЧЕНИЯ НЕСАНКЦИОНИРОВАННОГО ДОСТУПА НА СТРОИТЕЛЬНЫХ ПЛОЩАДКАХ В ЦЕЛЯХ ОБЕСПЕЧЕНИЯ БЕЗОПАСНОСТИ
И СНИЖЕНИЯ ТРАВМАТИЗМА
Аннотация
В статье анализируются параметры систем предотвращающих несанкционированный доступ на территории строительных площадок и возможность их применения с целью предотвращения несчастных случаев. Так же рассматривается возможность использования данных систем для зонирования территории по видам доступа и контроля за перемещением персонала в режиме реального времени. Предлагаемая к применению схема системы контроля доступа, на основе технологии UWB, позволит снизить вероятность производственных инцидентов и несчастных случаев, что является актуальным. В результате анализа проблемы, пришли к выводу, что современные технологии контроля позиционирования обладают широким спектром возможностей и могут эффективно применяться в строительстве.
Ключевые слова
Системы ограничения несанкционированного доступа; системы позиционирования;
предупреждение несчастных случаев.
Konovalenko N.S.
Bachelor fourth-year, SPbGASU Saint-Petersburg, Russian Federation Scientific adviser: Gorbunova O.V.
PhD in Biological sciences, Associate Professor, SPbGASU Saint-Petersburg, Russian Federation