Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Прямоточный теплообменник типа труба в трубе↑ Стр 1 из 17Следующая ⇒ Содержание книги
Поиск на нашем сайте
Соломатин А.С. С60 Компьютерное моделирование гидравлических и теплообменных процессов для инженерно-технических специальностей. Решение типовых задач с применением пакета MATLAB: учеб. пособие / А. С. Соломатин, Т. Н. Гартман, Е. В. Царева, А. В. Панкрушина; под ред. проф. Т.Н. Гартмана. - М.: РХТУ им. Д. И. Менделеева, 2020. - 264с.:ил. ISBN
Представлены примеры решения некоторых типовых задач моделирования процессов в гидравлических и теплообменных системах с применением математического пакета MATLAB. Результаты расчетов представлены в табличном и графическом виде. Материал изложен в доступной форме и содержит наглядные иллюстрации и тексты программ. Предназначено для студентов химико-технологических специальностей вузов. УДК 66.011.001:662.95 ББК © Российский Химико-Технологический Университет им. Д. И. Менделеева, 2020 ОГЛАВЛЕНИЕ Предисловие…………………………………………………………….…..4 Глава 1. Графический интерфейс …………………………………….....5 Глава 2. Моделирование простых гидравлических систем ………....18 2.1. Стационарный режим движения жидкости…...............................18 2.2. Нестационарный режим движения жидкости ………………..…60 Глава 3. Моделирование стационарных режимов процессов теплопередачи в теплообменниках различных типов …………….... 104 3.1. Теплообменник типа смешение–смешение…………………......…105 3.2. Теплообменник типа смешение–вытеснение…………………..…134 Прямоточный теплообменник типа труба в трубе (решение задачи Коши)………………………………………… …………. 175 Противоточный теплообменник типа труба в трубе (решение краевой задачи)……………………………………………….…207 3.5. Обработка результатов эксперимента...…………………….……246 4. Приложение. Решение дифференциальных уравнений и систем………………………………………………………………………...257 Предисловие Методы математического моделирования широко применяются в настоящее время при проектировании и управлении химико-технологическими процессами. Важнейшим аспектом стратегии математического моделирования является компьютерная реализация разработанных моделей протекающих в аппаратах процессов, которая тесно связана с применением различных математических пакетов программ, таких, например, как MATLAB. Основная задача настоящего учебного пособия на простых примерах научить студентов применять пакет MATLAB для построения расчетных модулей химико-технологических процессов. С этой целью решаются задачи моделирования гидравлических процессов и процессов теплопередачи в простейших типовых аппаратах химической технологии. При этом подробно представлены последовательные этапы компьютерного моделирования: постановка задачи, анализ систем уравнений математического описания, разработка и выбор алгоритмов решения, составление программ расчета и программная реализация вычислительных алгоритмов, табличная и графическая интерпретация промежуточных и конечных результатов вычислений, анализ параметрической чувствительности моделей, а также их статических и динамических характеристик. Для контингента студентов, имеющих недостаточный опыт работы с пакетом MATLAB, приведенные в пособии коды программных модулей включают многочисленные комментарии и могут использоваться при решении практических задач моделирования и оптимизации химико-технологических процессов. Авторы настоящего учебного пособия с благодарностью отнесутся к замечаниям и предложениям по улучшению его смыслового содержания. Рис.1.1. В окне Command Window следует набрать guide и тогда откроется окно для создания визуального интерфейса Указатель на объект. Элементы, из которых состоят графические приложения, являются объектами. Указатель это переменная, в которой хранится адрес (в памяти компьютера) объекта. Пользователь пользуется указателями, как переменными. То есть для совершения действия над элементом графики, пользователь в соответствующей команде указывает имя переменной, означающей данный элемент графики (указатель на данный графический элемент). Для получения указателей есть функции: gcf возвращает указатель в графическое окно, gca возвращает указатель на оси координат, gco возвращает указатель на графический объект. Свойства графических объектов. Для установки свойств объектов есть функция set(указатель_на_объект, ‘изменяемое_свойство’, ‘его_новое_значение’, ‘изменяемое_свойство_2’, ‘его_новое_значение_2’). Для получения свойств объекта есть функция get(указатель_на_объект, ‘свойство’). Для примера создадим вариант интерфейса (Рис.1.2). Он предназначен для ввода нескольких исходных величин (аргументов) и вычисления нескольких интересующих пользователя ответов (результатов или, иначе говоря, функций от введенных аргументов). Рис.1.2. Вариант интерфейса Также предусмотрено построение графика какой-либо функции от какой-либо переменной по усмотрению пользователя, указывающего также минимальное и максимальное значения аргумента и шаг его изменения. Для редактирования свойств элементов интерфейса, определенный элемент дважды щелкнуть мышкой (левой кнопкой). Откроется редактор свойств (Property Inspector). В нем (Рис.1.3) например имя элемента (под которым он фигурирует в компьютере) называется Tag. Найдя слово Tag в левой колонке, в правой увидим само имя (например text1). Надпись на элементе, которая видна в окне интерфейса, называется String. Найдя в левой колонке слово String, в правой ему соответствует сама надпись (например argument x). Файл интерфейса имеет расширение.fig. Рис.1.3. Редактор свойств Подготовка М-файла, соответствующего созданному интерфейсу. Для того, чтобы интерфейс (рис.1.4) был связан с выполнением требуемых действий (например, при нажатии на кнопку Calculate происходило бы вычисление функций и вывод их значений в соответствующих окошках) необходимо предварительно описать в М-файле все, что требуется сделать. М-файл появится на экране после нажатия на соответствующую (четвертую справа) кнопку в ряду кнопок вверху экрана редактора интерфейса. В М-файле, имеющем то же самое название, как и файл интерфейса, уже автоматически сгенерирован текст в соответствии с выбранными пользователем элементами интерфейса. Каждому элементу интерфейса соответствует абзац текста, начинающийся с упоминания названия (Tag) элемента интерфейса. Поскольку целесообразно начать с описания действий, выполняемых после нажатия на кнопку Calculate, то рассмотрим абзац текста в М-файле, описывающий их. % --- Executes on button press in pushbutton1. CALCULATE function pushbutton1_Callback(hObject, eventdata, handles) [VectorArg]=VvodArg(hObject, eventdata, handles); [VectorRes]=ReshitZadachu(VectorArg); VivodRes(VectorRes,hObject, eventdata, handles); Для этого в файле интерфейса щелкнем кнопку Calculate, открыв Property Inspector, и найдем Tag этой кнопки. Пусть, например, он оказался pushbutton1. Тогда в М-файле найдем абзац, озаглавленный function pushbutton1_Callback(hObject, eventdata, handles) В этом абзаце (то есть ниже строки его заголовка) укажем что должно произойти после ее нажатия. function[VectorArg]=VvodArg(hObject, eventdata, handles) x=str2double(get(handles.edit1,'String')); y=str2double(get(handles.edit2,'String')); z=str2double(get(handles.edit3,'String')); VectorArg=[x, y, z]; Должна быть вызвана функция ввода аргументов, считывающая из соответствующих текстовых окошек исходные аргументы и возвращающая вектор (массив) аргументов. Затем должна быть вызвана функция, решающая задачу вычисления значений-результатов. Она получает вектор значений аргументов и возвращает вектор значений результатов. function[VectorRes]=ReshitZadachu(VectorArg) x=VectorArg(1); y=VectorArg(2); z=VectorArg(3); f1=x^2+y+z; f2=x+y^2+z; f3=x+y+z^2; VectorRes=[f1, f2, f3]; После этого должна быть вызвана функция для вывода в соответствующие окошки интерфейса значений из вектора результатов. function[]=VivodRes(VectorRes,hObject, eventdata, handles) f1=VectorRes(1); f2=VectorRes(2); f3=VectorRes(3); S=sprintf('%g',f1); set(handles.edit4,'String',S); S=sprintf('%g',f2); set(handles.edit5,'String',S); S=sprintf('%g',f3); set(handles.edit6,'String',S); Упомянутые функции должны быть описаны. Рекомендуется описывать функции выше того места программы, где они вызываются. Команда x=str2double(get(handles.edit1,'String')); означает что в переменную x будет записано число, возвращаемое функцией str 2 double которая преобразует строку цифр в число. Аргумент этой функции это возвращаемое значение функции get(handles.edit1,'String')); которая обращается к элементу интерфейса handles. edit 1 где handles означает обращение к визуальному интерфейсу, edit 1 это обозначение конкретного элемента интерфейса. Команда S=sprintf('%g',f1); означает что в переменную S будет записана строка символов оператором sprintf('%g',f1); который обращается к аргументу f 1 и '% g ' указывает что аргумент является вещественным числом. Команда set(handles.edit4,'String',S); означает что в элемент интерфейса edit 4 (окошко вывода текста) будет выведена строка символов содержащаяся в переменной S. Построение графика. Для построения графика предназначена кнопка интерфейса Plot. Логика построения графика такова % --- Executes on button press in pushbutton2. PLOT function pushbutton2_Callback(hObject, eventdata, handles) [VectorArg]=VvodArg(hObject, eventdata, handles); PostrGraf(VectorArg,hObject, eventdata, handles); Пользователь вводит в окошки ввода значения переменных NumFun (номер функции 1, 2 или 3), NumArg (номер аргумента), MinArg (минимальное значение аргумента, с него начинаются подписи к горизонтальной оси), MaxArg (максимальное значение аргумента, до него идут подписи к горизонтальной оси), StepArg (шаг изменения аргумента). Затем пользователь нажимает кнопку Plot и происходит построение графика в соответствии с введенными данными. В М-файле опишем соответствующий этой кнопке абзац текста. После нажатия на кнопку вызывается функция VvodArg, считывающая исходные аргументы и возвращающая вектор их значений. Потом вызывается функция PostrGraf. Ей передается вектор аргументов. Она строит график. Для построения графика функция PostrGraf считывает из окошек текстового ввода интерфейса соответствующие переменные. Затем подсчитывает число шагов, вычитая минимальное значение из максимального и деля на величину шага. function[]=PostrGraf(VectorArg,hObject, eventdata, handles) NumFun=str2double(get(handles.edit7,'String')); NumArg=str2double(get(handles.edit11,'String')); MinArg=str2double(get(handles.edit12,'String')); StepArg=str2double(get(handles.edit13,'String')); MaxArg=str2double(get(handles.edit14,'String')); NumberSteps=round((MaxArg-MinArg)/StepArg); horis(1)=MinArg; VectorArg(NumArg)=horis(1); [VectorRes]=ReshitZadachu(VectorArg); vert(1)=VectorRes(NumFun); for i=2:NumberSteps+1 horis(i)=horis(i-1)+StepArg; VectorArg(NumArg)=horis(i); [VectorRes]=ReshitZadachu(VectorArg); vert(i)=VectorRes(NumFun); end plot(horis,vert,'o-'); set(gca,'XGrid','on'); set(gca,'Ygrid','on'); При этом команда round округляет до целого значения результат деления. NumberSteps=round((MaxArg-MinArg)/StepArg); после этого для каждого элемента массива горизонтальных координат horis точек графика и для каждого элемента массива вертикальных координат vert точек графика определяются значения. Когда все готово (рис.1.4), то команда plot строит график и затем на график накладывается координатная сетка. Рис.1.4.Пример использования программы с графическим интерфейсом, строящей график и выводящей вычисленные значения. Вычислить и сохранить результаты. Для того, чтобы вычислить результаты и сразу же сохранить их в файл, предназначена кнопка Calculate & Save. В соответствующем этой кнопке тексте программы, происходит открытие файла [f,p]=uiputfile('Путь к файлу\Имя файла.расширение', 'Окно выбора'); где среди возвращаемых значений p путь, f имя файла. После получения этих возвращаемых значений функции uiputfile, следует объединить эти данные с помощью команды KudaZapisat=strcat(p,f); дальнейшие действия так же, как в ранее рассмотренных упражнениях о работе с файлами. % --- Executes on button press in pushbutton3. CALCULATE & SAVE function pushbutton3_Callback(hObject, eventdata, handles) %CALCULATE [VectorArg]=VvodArg(hObject, eventdata, handles); [VectorRes]=ReshitZadachu(VectorArg); %OPEN FILE WT [f,p]=uiputfile('C:\MATLAB701\work\exGuide_1Res.txt','Окно выбора'); KudaZapisat=strcat(p,f); f=fopen(KudaZapisat,'wt'); %SAVE VALUES OF ARGUMENTS AND RESULTS for i=1:3 fprintf(f,'%g\t',VectorRes(i)); end for i=1:3 fprintf(f,'%g\t',VectorArg(i)); end %sohranit v fail resultati vichislenij fprintf(f,'\nexGuide_1Res\n'); fprintf(f,'RESULTATI VICHISLENIY\n'); TextString=strcat('Funct_#1\t','Funct_#2\t','Funct_#3\n'); fprintf(f,TextString); fprintf(f,'%g\t\t\t',VectorRes(1)); fprintf(f,'%g\t\t\t',VectorRes(2)); fprintf(f,'%g\n',VectorRes(3)); %sohranit v fail ishodnije argumenti fprintf(f,'ARGUMENTI VICHISLENIY\n'); TextString=strcat('argument#1_x\t','argument#2_y\t','argument#3_z\n'); fprintf(f,TextString); for i=1:3 fprintf(f,'%g\t\t\t\t',VectorArg(i)); end fclose(f); На рис.1.5 приведен пример окна интерфейса, которое при этом откроется. Рис.1.5.Окно выбора пути и имени файла перед сохранением. Построить и сохранить график. Для того, чтобы построить график и сразу же сохранить его, предназначена кнопка Plot & Save. В соответствующем этой кнопке тексте программы сначала происходит построение графика. Можно было бы просто поставить вызов функции, уже описанной выше, которая строит график. Но все же более понятно для изучения, если все переменные вычисляются здесь же. Для контроля строится и сам график. Затем, когда все переменные, описывающие график, определены, то открываем файл. Функция uiputfile возвращает путь к файлу и имя файла. Затем их объединяем в одну переменную. Записываем в файл количество элементов массивов горизонтальных и вертикальных координат (очевидно они одинакового размера). Затем записываем сами массивы координат точек графика. Потом записываем аргументы, а также номер функции и номер аргумента, для которых построен график. Затем файл закрываем. % --- Executes on button press in pushbutton4. PLOT & SAVE function pushbutton4_Callback(hObject, eventdata, handles) %PLOT [VectorArg]=VvodArg(hObject, eventdata, handles); NumFun=str2double(get(handles.edit7,'String')); NumArg=str2double(get(handles.edit11,'String')); MinArg=str2double(get(handles.edit12,'String')); StepArg=str2double(get(handles.edit13,'String')); MaxArg=str2double(get(handles.edit14,'String')); NumberSteps=round((MaxArg-MinArg)/StepArg); horis(1)=MinArg; VectorArg(NumArg)=horis(1); [VectorRes]=ReshitZadachu(VectorArg); vert(1)=VectorRes(NumFun); for i=2:NumberSteps+1 horis(i)=horis(i-1)+StepArg; VectorArg(NumArg)=horis(i); [VectorRes]=ReshitZadachu(VectorArg); vert(i)=VectorRes(NumFun); end plot(horis,vert,'o-'); set(gca,'XGrid','on'); set(gca,'Ygrid','on'); %OPEN FILE WT [f,p]=uiputfile('C:\MATLAB701\work\exGuide_1Graf.txt','Окно выбора'); KudaZapisat=strcat(p,f); f=fopen(KudaZapisat,'wt'); %gotovim dannije dlja avtomaticheskogo chitivanija fprintf(f,'%d\t',NumberSteps); for i=1:(NumberSteps+1) fprintf(f,'%g\t',horis(i)); end fprintf(f,'\n'); for i=1:(NumberSteps+1) fprintf(f,'%g\t',vert(i)); end %zapisivajem argumenti for i=1:3 fprintf(f,'%g\t',VectorArg(i)); end fprintf(f,'%g\t',NumFun); fprintf(f,'%g\t',NumArg); fclose(f); Открыть результаты вычислений из файла. Для открытия файла с результатами вычислений предназначена кнопка Open Data. В соответствующем ей месте программы опишем необходимые действия. Откроется окно, показанное на рис.1.6. Рис.1.6.Окно выбора папки и файла перед открытием. function[]=VivodArgumentovNaEkran(VectorArg,hObject, eventdata, handles); x=VectorArg(1); y=VectorArg(2); z=VectorArg(3); S=sprintf('%g',x); set(handles.edit1,'String',S); S=sprintf('%g',y); set(handles.edit2,'String',S); S=sprintf('%g',z); set(handles.edit3,'String',S); Функция uigetfile подготавливает данные об открываемом файле для чтения. При этом открывается окно выбора, где определяется имя файла и путь к нему. Эти данные являются возвращаемыми значениями для функции uigetfile. Получив их, объединяем их в одну переменную OtkudaChitat. Затем открываем файл. После открытия файла, считываем интересующие нас данные из файла в переменные с соответствующими названиями. % --- Executes on button press in pushbutton5. OPEN DATA function pushbutton5_Callback(hObject, eventdata, handles) %OPEN FILE RT [f,p]=uigetfile('C:\MATLAB701\work\exGuide_1Res*.txt','Окно выбора'); OtkudaChitat=strcat(p,f); f=fopen(OtkudaChitat,'rt'); %chitat is faila for i=1:3 VectorRes(i)=fscanf(f,'%g',1); end for i=1:3 VectorArg(i)=fscanf(f,'%g',1); end fclose(f); %vivod na ekran VivodRes(VectorRes,hObject, eventdata, handles); VivodArgumentovNaEkran(VectorArg,hObject, eventdata, handles); Необходимо теперь вывести значения этих переменных в соответствующие окошки текстового вывода в интерфейсе. Для этого используем функцию VivodRes и ранее не использовавшуюся функцию VivodArgumentovNaEkran, которую необходимо описать выше описания кнопки. Открыть график и данные из файла. Открытие данных, необходимых для построения графика, из файла осуществляется кнопкой Open Data & Plot. % --- Executes on button press in pushbutton6. OPEN DATA & PLOT function pushbutton6_Callback(hObject, eventdata, handles) %otkrit grafic is faila [f,p]=uigetfile('C:\MATLAB701\work\exGuide_1Graf*.txt','Окно выбора'); OtkudaChitat=strcat(p,f); f=fopen(OtkudaChitat,'rt'); %chitat is faila NumberSteps=fscanf(f,'%d',1); for i=1:NumberSteps+1 horis(i)=fscanf(f,'%g',1); end for i=1:NumberSteps+1 vert(i)=fscanf(f,'%g',1); end for i=1:3 VectorArg(i)=fscanf(f,'%g',1); end NumFun=fscanf(f,'%g',1); NumArg=fscanf(f,'%g',1); fclose(f); %stroim grafic plot(horis,vert,'o-'); set(gca,'XGrid','on'); set(gca,'YGrid','on'); %vivod na ekran VivodArgumentovNaEkran(VectorArg,hObject, eventdata, handles); S=sprintf('%g',NumFun); set(handles.edit7,'String',S); S=sprintf('%g',NumArg); set(handles.edit11,'String',S); В соответствующем ей тексте программы логика действий примерно такая же как и при открытии результатов вычислений из файла. После получения всех необходимых данных из файла, осуществляется построение графика. Кроме того, выводятся данные об исходных аргументах и, кроме того, о номере функции и номере аргумента, для которых построен график. При желании можно также доработать это упражнение и выполнить подписи к осям графика в соответствии с названиями аргументов и функций.
Программа расчета процесса Рис. 2.1.3. Ввод исходных данных и получение расчетных результатов Построенный график покажет, как будет изменяться зависимая величина при изменении аргумента (при этом значения всех остальных исходных величин, которые были введены в окна ввода исходных величин будут оставаться неизменными) – рис. 2.1.4. Для построения трехмерного графика также надо выбрать необходимые данные. По умолчанию стоит ноль (0) в окошке ввода номера аргумента. Пока там ноль, программа будет строить двумерный график. Рис. 2.1.4. Построение графиков: зависимости уровня жидкости в емкости №1 от плотности жидкости (и от давления на входе 1). В данном случае график открыт из файла (видно нажатую кнопку ОТКРЫТЬ ГРАФИК ИЗ ФАЙЛА) Приступая к работе по выполнению задачи на компьютере, нужно выполнить следующую последовательность обращений к кнопкам панели инструментов File→New→M-file, что позволяет открыть окно Editor (то есть редактор М-файлов). В этом окне следует напечатать весь текст необходимой программы (создавать не только лишь отдельные М-файлы для отдельных функций), которая будет выполняться при указании соответствующего этой полной программе имени М-файла в командной строке в Command Window. Иначе программу можно запустить командой Debug→Run в меню редактора М-файлов. При сохранении М-файла (File→Save) в открывающемся окне нужно указать место и имя этого документа. Имя сохраняемого файла должно совпадать с именем описанной в нем функции (то есть описанная в нем программа считается функцией, и ее описание начинается с указания какого-нибудь имени этой функции, под которым она дальше и будет вызваться для исполнения). Если какие-то М-файлы уже созданы ранее, то их можно посмотреть или отредактировать с помощью команды File→Open. Рис.2.1.5. Графики. Функция GLAV_Otkrit_Grafic запускается и обеспечивает открытие графика из файла. function GLAV_Otkrit_Grafic_pushbutton15_Callback clear global; global k1 k2 k3 k4 k5 Rho Hg1 Hg2 Pn P1 P2 P3 P4 Hp1; %otkrit grafic is faila [f,p]=uigetfile('C:\MATLAB701\work\S279Graf*.txt','Окно выбора'); OtkudaChitat=strcat(p,f); f=fopen(OtkudaChitat,'rt'); %chitat is faila NumberSteps=fscanf(f,'%d',1); if NumberSteps==0 LeftNameVar=fscanf(f,'%g',1); StepGr=fscanf(f,'%g',1); RightNameVar=fscanf(f,'%g',1); LeftNameArg_3D=fscanf(f,'%g',1); StepGr_3D=fscanf(f,'%g',1); RightNameArg_3D=fscanf(f,'%g',1); [x,y]=meshgrid(LeftNameVar:StepGr:RightNameVar,LeftNameArg_3D:StepGr_3D:RightNameArg_3D); %число столбцов=NumberSteps+1 число строк=NumberSteps_3D+1 NumberSteps_3D=round((RightNameArg_3D-LeftNameArg_3D)/StepGr_3D); NumberSteps=round((RightNameVar-LeftNameVar)/StepGr); for i=1:(NumberSteps_3D+1) for j=1:(NumberSteps+1) Array_3D(i,j)=fscanf(f,'%g',1); end %for j end % for i %podpisi k osyam grafica xLlabel=fscanf(f,'%s',1); yLlabel=fscanf(f,'%s',1); zLlabel=fscanf(f,'%s',1); %stroim grafic mesh(x,y,Array_3D); xlabel(xLlabel); ylabel(yLlabel); zlabel(zLlabel); else for i=1:NumberSteps+1 k1Array(i)=fscanf(f,'%g',1); end for i=1:NumberSteps+1 v1Array(i)=fscanf(f,'%g',1); end %podpisi k osyam grafica xLlabel=fscanf(f,'%s',1); yLlabel=fscanf(f,'%s',1); %stroim grafic plot(k1Array,v1Array,'o-'); set(gca,'XGrid','on'); set(gca,'YGrid','on'); xlabel(xLlabel); ylabel(yLlabel); end %if for i=1:14 VectorArg(i)=fscanf(f,'%g',1); end fclose(f); k1=VectorArg(1); k2=VectorArg(2); k3=VectorArg(3); k4=VectorArg(4); k5=VectorArg(5); Rho=VectorArg(6); Hg1=VectorArg(7); Hg2=VectorArg(8); Pn=VectorArg(9); P1=VectorArg(10); P2=VectorArg(11); P3=VectorArg(12); P4=VectorArg(13); Hp1=VectorArg(14); %vivod na ekran VivodArgumentovNaEkran; end Функция GLAV_Otkrit_Fail запускается и обеспечивает открытие аргументов и результатов из файла. function GLAV_Otkrit_Fail_pushbutton14_Callback clear global; global v1 v2 v3 v4 v5 P5 P6 P7 P8 H1 H2; global k1 k2 k3 k4 k5 Rho Hg1 Hg2 Pn P1 P2 P3 P4 Hp1; %Otkrit is faila [f,p]=uigetfile('C:\MATLAB701\work\S279Res*.txt','Окно выбора'); OtkudaChitat=strcat(p,f); f=fopen(OtkudaChitat,'rt'); %chitat is faila for i=1:11 VectorRes(i)=fscanf(f,'%g',1); end for i=1:14 VectorArg(i)=fscanf(f,'%g',1); end fclose(f); v1=VectorRes(1); v2=VectorRes(2); v3=VectorRes(3); v4=VectorRes(4); v5=VectorRes(5); P5=VectorRes(6); P6=VectorRes(7); P7=VectorRes(8); P8=VectorRes(9); H1=VectorRes(10); H2=VectorRes(11); k1=VectorArg(1); k2=VectorArg(2); k3=VectorArg(3); k4=VectorArg(4); k5=VectorArg(5); Rho=VectorArg(6); Hg1=VectorArg(7); Hg2=VectorArg(8); Pn=VectorArg(9); P1=VectorArg(10); P2=VectorArg(11); P3=VectorArg(12); P4=VectorArg(13); Hp1=VectorArg(14); %vivod na ekran VivodArgumentovNaEkran; VivodResultNaEkran; end Функция DATA_Graf предназначена для хранения в ее глобальных переменных тех данных, которые необходимы для построения графиков (рис.2.1.5). Функция DATA_Graf предназначена для передачи функциям, строящим график, тех же самых данных, которые раньше (в предыдущей версии, имевшей графический интерфейс) считывались для той же цели – построения графика из окон графического интерфейса. Функция DATA_Graf содержит также вспомогательную таблицу с номерами переменных. Номера следует указывать при задании значений следующих переменных: NameArg (номер аргумента-переменной, отображаемой по горизонтальной оси), NameVar (номер вычисляемой переменной, отображаемой по вертикальной оси), NameArg_3D (номер аргумента-переменной, отображаемой по горизонтальной оси). По умолчанию значение NameArg_3D устанавливается равным нулю, и в таком случае строится плоский график. таблица аргументов-переменных для горизонтальной оси Двух горизонтальных осей) переменные ____________________________________ номер %Коэф пропускания клапана №1 (k1) относит. ед. __ 1 %Коэф пропускания клапана №2 (k2) относит. ед. __ 2 %Коэф пропускания клапана №3 (k3) относит. ед. __ 3 %Коэф пропускания клапана №4 (k4) относит. ед. __ 4 %Коэф пропускания клапана №5 (k5) относит. ед. __ 5 %Плотность (Rho) кг/м3 __________________________ 6 %Высота емкости №1(Hg1) м _______________________ 7 %Высота емкости №2(Hg2) м _______________________ 8 %Давл газа в пуст емк (Pn) КПа __________________ 9 %Давл на входе №1 (P1) КПа ______________________ 10 %Давл на входе №2 (P2) КПа ______________________ 11 %Давл на выходе №1 (P3) КПа _____________________ 12 %Давл на выходе №2 (P4) КПа _____________________ 13 %Предполагаемая высота жидк в емк №1(Hp1) м _____ 14 таблица вычисляемых переменных для вертикальной оси переменные ____________________________________ номер %Расход клапана №1 (v1) литр/сек ______________ 1 %Расход клапана №2 (v2) литр/сек ______________ 2 %Расход клапана №3 (v3) литр/сек ______________ 3 %Расход клапана №4 (v4) литр/сек ______________ 4 %Расход клапана №5 (v5) литр/сек ______________ 5 %Давл жидкости в емк №1 (P5) КПа ______________ 6 %Давл жидкости в емк №2 (P6) КПа ______________ 7 %Давл газа в емк №1 (P7) КПа __________________ 8 %Давл газа в емк №2 (P8) КПа __________________ 9 %Высота жидк в емк №1(H1) м ___________________ 10 %Высота жидк в емк №2(H2) м ___________________ 11 function DATA_Graf global NameVar LeftNameVar RightNameVar NameArg StepGr LeftNameArg_3D StepGr_3D RightNameArg_3D NameArg_3D; NameArg=6;%номер аргумента-переменной, отображаемой по горизонтальной оси NameVar=10;%номер вычисляемой переменной, отображаемой по вертикальной оси LeftNameVar=900;%левый край шкалы по горизонтальной оси RightNameVar=2100;%правый край шкалы по горизонтальной оси StepGr=100;%шаг по горизонтальной оси %для построения плоского графика надо поставить NameArg_3D=0 %для построения трехмерного графика надо задать данные ниже NameArg_3D=0; %10; %номер аргумента-переменной, отображаемой по горизонтальной оси LeftNameArg_3D=450;%левый край шкалы по горизонтальной оси RightNameArg_3D=600;%правый край шкалы по горизонтальной оси StepGr_3D=50;%шаг по горизонтальной оси %таблица аргументов-переменных для горизонтальной оси %(двух горизонтальных осей) %переменные ____________________________________ номер %Коэф пропускания клапана №1 (k1) относит. ед. __1 %Коэф пропускания клапана №2 (k2) относит. ед. __2 %Коэф пропускания клапана №3 (k3) относит. ед. __3 %Коэф пропускания клапана №4 (k4) относит. ед. __4 %Коэф пропускания клапана №5 (k5) относит. ед. __5 %Плотность (Rho) кг/м3 __________________________6 %Высота емкости №1(Hg1) м _______________________7 %Высота емкости №2(Hg2) м _______________________8 %Давл газа в пуст емк (Pn) КПа __________________9 %Давл на входе №1 (P1) КПа ______________________10 %Давл на входе №2 (P2) КПа ______________________11 %Давл на выходе №1 (P3) КПа _____________________12 %Давл на выходе №2 (P4) КПа _____________________13 %Предполагаемая высота жидк в емк №1(Hp1) м _____14 %таблица вычисляемых переменных для вертикальной оси %переменные __________________________________ номер %Расход клапана №1 (v1) литр/сек ______________1 %Расход клапана №2 (v2) литр/сек ______________2 %Расход клапана №3 (v3) литр/сек ______________3 %Расход клапана №4 (v4) литр/сек ______________4 %Расход клапана №5 (v5) литр/сек ______________5 %Давл жидкости в емк №1 (P5) КПа ______________6 %Давл жидкости в емк №2 (P6) КПа ______________7 %Давл газа в емк №1 (P7) КПа __________________8 %Давл газа в емк №2 (P8) КПа __________________9 %Высота жидк в емк №1(H1) м ___________________10 %Высота жидк в емк №2(H2) м ___________________11 end
Рис. 2.2.2. Ввод исходных данных и получение расчетных результатов, в том числе изменение уровней жидкости в емкостях от времени Рис. 2.2.3. Построение графика (в данном случае открыт из файла). Рис.2.2.4. Построение графиков. Рис. 3.1. Кожухотрубный теплообменник Рис. 3.2. Трубчатый теплообменник Рис. 3.3. Змеевиковый теплообменник Рис. 3.1.1. Схематическое изображение теплообменника типа смешение–смешение Для упрощения построения математического описания рассматриваемого процесса принимаются следующие допущения: · стационарный режим теплопередачи; · модель идеального смешения для обоих потоков теплоносителей; · происходит только процесс теплопередачи. Программа расчета процесса Рис. 3.1.2. Ввод исходных данных и получение расчетных результатов Построенный график покажет, как будет изменяться зависимая величина при изменении аргумента (при этом значения всех остальных исходных величин, которые были введены в окна ввода исходных величин будут оставаться неизменными) – рис. 3.1.2 и 3.1.3. Для построения трехмерного графика также надо выбрать необходимые данные. По умолчанию стоит ноль (0) в окошке ввода номера аргумента. Пока там ноль, программа будет строить двумерный график. Рис. 3.1.3. Построение графика (в данном случае открыт из файла). Рис. 3.2.1. Схематическое изображение теплообменника смешение–вытеснение Представленная схема змеевикового теплообменника включает в себя два потока теплоносителей – поток в резервуаре c начальной температурой (на входе в аппарат) , конечной температурой (на выходе) , расходом , теплоёмкостью и поток в змеевике c начальной температурой (на входе в аппарат) , конечной температурой (на выходе) , расходом , теплоёмкостью . Длина змеевика обозначена L. Для построения математического описания данной модели примем следующие допущения: · поток, проходящий через резервуар, описывается гидродинамической моделью идеального смешения; · поток в змеевике описывается гидродинамической моделью идеального вытеснения; · рассматривается стационарный режим работы теплообменника; · коэффициент теплопередачи считается постоянным; · кроме теплопередачи никаких процессов не происходит; · теплоёмкости теплоносителей одинаковы и не меняются с изменением температуры. Рис. 3.2.3. Зависимость температуры теплоносителя в змеевике от длины змеевика Уравнение 2 системы (41) для решения на компьютере представляется в конечно-разностной форме согласно нумерации системы (41 – это будет уравнение : , (43) где – правая часть дифференциального уравнения (37) и конечно-разностного уравнения (43), расчет которой необходим для определения дискретных значений функции . Уравнение 1 (корректирующее уравнение) – это внешний цикл решения задачи; уравнение 2 – цикл решения дифференциального уравнения, внутренний цикл решения задачи. Корректирующее уравнение 1 представляется в следующем виде: , (44) где – функция этого уравнения, решаемого относительно . Во внешнем цикле решения может быть применен, например, метод половинного деления для решения одного уравнения (44). Во внутреннем цикле решается дифференциальное уравнение (37) или соответственно (43) (например, методом Эйлера) при каждом очередном приближении Т 1. Рис. 3.2.4. Блок-схема алгоритма поверочно-оценочного расчёта стационарного режима процесса в теплообменнике типа смешение–вытеснение Программа расчета процесса Рис. 3.3.1. Схематическое изображение прямоточного теплообменника типа труба в трубе Представленная схема теплообменника включает в себя два потока теплоносителей – например, охлаждаемый поток c начальной температурой (на входе в аппарат) , конечной температурой (на выходе) , расходом , теплоёмкостью и нагреваемый поток c начальной температурой (на входе в аппарат) , конечной температурой (на выходе) , расходом , теплоёмкостью . Поверхность теплообмена имеет площадь . Коэффициент теплопередачи обозначен . Для построения системы уравнений математического описания процесса в прямоточном теплообменнике типа труба в трубе принимаются следующие допущения: · рассматривается стационарный режим процесса теплопередачи; · не происходит никаких других процессов, только процесс теплопередачи; · коэффициент теплопередачи постоянен и известен; · теплоёмкость потоков теплоносителей постоянна; · поверхность теплообмена равномерно распределена вдоль участка длины теплообменника; · движение первого и второго потоков теплоносителей описывается гидродинамической моделью идеального вытеснения. Рис. 3.3.2. Изменение температур теплоносителей по длине теплообменника типа труба в трубе (прямоток) Рис. 3.3.3. Блок-схема алгоритма поверочно-оценочного расчёта стационарного режима процесса в прямоточном теплообменнике типа труба в трубе Рис. 3.3.4. Ввод исходных данных и получение расчетных результатов, в том числе график зависимости температур в трубках теплообменника от продольной координаты Рис. 3.3.5. Построение графика. Для построения трехмерного графика также надо выбрать необходимые данные. По умолчанию стоит ноль (0) в окошке ввода номера аргумента. Пока там ноль, программа будет строить двумерный график. Рис. 3.4.1. Схематическое изображение противоточного теплообменника типа труба в трубе Представленная схема противоточного теплообменника включает в себя два потока теплоносителей – например, охлаждаемый поток c начальной температурой (на входе в аппарат) , конечной температурой (на выходе) , расходом , теплоёмкостью и нагреваемый поток c начальной температурой (на выходе из аппарата) , конечной температурой (на входе) , расходом , теплоёмкостью . Поверхность теплообмена имеет площадь . Коэффициент теплопередачи обозначен . Основные допущения для построения этой модели нужно принять такими же, как в случае прямоточного теплообменника «труба в трубе». Рис. 3.4.3. Блок-схема алгоритма поверочно-оценочного расчёта стационарного режима в противоточном теплообменнике типа труба в трубе Для построения графика необходимо выбрать исходную величину-аргумент (будет отображаться по горизонтальной оси), диапазон и шаг ее изменения, а также величину-функцию, зависящую от аргумента (вертикальная ось). Построенный график покажет, как будет из
|
|||||||||||||||||||
Последнее изменение этой страницы: 2020-10-24; просмотров: 224; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.149.239.70 (0.012 с.) |