Дистанционные расчеты через web-интерфейс являются наиболее удобной формой дистанционных расчетов. Эти расчеты можно выполнять удаленно, не связываясь с вычислительным центром.
Системы дистанционных расчетов хорошо зарекомендовали себя и приобретают все большую популярность.
В данной статье рассмотрена разработка программы с дистанционным управлением для расчетов модифицированных проницаемостей при различных вероятностных законах распределения.
Разработанный комплекс предназначен для удаленной обработки. Он предоставляет возможность автоматически “прогонять” данные через существующие сценарии на сервере.
Взаимодействие с сервером может быть организовано как в локальной сети, так и через Интернет. Обмен и управление происходят по протоколу TCP/IP.
В удаленном режиме можно передать параметры, выбрать функции для вывода.
В качестве языка интерфейса выбран HTML.
В качестве серверного языка выбран php, как наиболее популярный язык для разработки серверных приложений. В открытом доступе можно найти множество пособий по этому языку. Большая часть web-приложений использует именно его.
Для PHP написано множество классов, библиотек, в том числе графических. Рассмотрев несколько библиотек для рисования графиков, выберем наиболее подходящую.
В качестве HTTP-сервера -Apache, как наиболее распространенный сервер с открытым кодом.
Рассмотрим выбранную для нашего проекта библиотеку–jpGraph .
Эта библиотека была выбрана как наиболее часто используемая для аналогичных проектов. Во многих проектах, на определенном этапе возникает вопрос выбора графической библиотеки.
Библиотека JpGraph – OO графическая библиотека, которая облегчает отрисовку “быстрых ” графиков с минимумом кода и весьма сложных графиков, которые требует очень точного контроля.
Основные отличительные особенности библиотеки
* Ориентация на нужды пользователя Интернета: графика оптимизирована, обычно изображение размером 300 на 200 пикселов весит всего лишь 5-7 килобайт.
* Поддерживается кеширование созданных изображений с целью снижения нагрузки на HTTP-сервер.
* Поддерживается версии библиотеки GD-library 1 и 2, установленная версия определяется автоматически, таким образом, разработчик не испытывает необходимости изменять код в зависимости от версии GD-library.
Для создания графика необходимо задать следующие команды:
// … Включение необходимых заголовков
$graph = new Graph($width, $height, …);
// здесь будет код для конструирования графика
$graph->Stroke();
Первые 2 параметра означают ширину и высоту , третий имя файла в кеше.
Для построения графиков можно непосредственно задать массивы значений для координат x y:
// Original data points
$xdata = array(1,3,5,7,9,12,15,17.1);
$ydata = array(5,1,9,6,4,3,19,12);
В работах В.Я. Булыгина предложена схема струйного течения в слоистых нефтяных пластах при двухфазной изотермической фильтрации. В работе [1] обобщён этот метод для случаев изотермической двухфазной фильтрации, а также для трёхфазной фильтрации. При этом предложены новые модифицированные фазовые проницаемости для случая нелинейных исходных лабораторных относительных проницаемостей. Формулы распределения показаны на рис1.
В расчетах модифицированных проницаемостей при различных вероятностных законах распределения используются функции: сложение, вычитание, умножение, деление, квадратный корень(sqrt($x)), натуральный логарифм(ln($x)). Вид функции задается строкой $f = new FuncGenerator(‘ ‘), где в скобках записывается вид необходимой функции. Интервал выводимых значений задается строкой list($x2data,$y2data) = $f->E(-0.0001,1).
Пользовательский интерфейс представляет собой web приложение, доступ к которому можно получить с любого компьютера, подключенного к локальной сети или сети Интернет.
Пользователю необходимо предоставить возможность ввода коэффициентов функции. Для этого используется элемент формы input:
<input name=”Text1″ type=”text” />
Далее, для сравнения мы можем выводить графики 1, 2, …, 6 функций. Для возможности выбора выводимых функций используем элемент формы checkbox(флажок). Флажки (и кнопки с зависимой фиксацией) – это переключатели вкл./выкл., которые могут переключаться пользователем. Переключатель “включен”, если для управляющего элемента установлен атрибут selected.
При отправке формы успешными могут стать только включенные переключатели. Несколько флажков в форме могут иметь одно и то же имя управляющего элемента. Таким образом, например, флажки позволяют пользователям выбрать несколько значений для одного и того же свойства. Для создания флажков используется элемент INPUT.
Рисунок1. Пользовательский интерфейс приложения
Можно на одном рисунке вывести несколько графиков. Соответствующие функции в библиотеке скорректируют диапазон значений x и y осей. Добавим к нашему графику ещё один ( для функции )
<?php
include (“../jpgraph.php”);
include (“../jpgraph_line.php”);
include (“../jpgraph_utils.inc.php”);
// Setup the basic graph
$graph = new Graph(500,500,”auto”);
$graph->SetScale(“linlin”);
//$graph->SetShadow();
$graph->img->SetMargin(5,30,60,40);
$graph->SetBox(true,’green’,2);
$graph->SetMarginColor(‘lightyellow’);
$graph->SetColor(‘black’);
// … and titles
$graph->title->Set(‘GRAPH 0.5x(1-0.5x) AND 1-(1-x)*sqrt(1-x)’);
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->title->SetColor(‘darkgreen’);
$graph->subtitle->Set(” “);
$graph->subtitle->SetFont(FF_FONT1,FS_NORMAL);
$graph->subtitle->SetColor(‘darkgreen’);
$graph->xgrid->Show();
$graph->xgrid->SetColor(‘darkgreen’);
$graph->ygrid->SetColor(‘darkgreen’);
$graph->yaxis->SetPos(0);
$graph->yaxis->SetWeight(2);
$graph->yaxis->HideZeroLabel();
$graph->yaxis->SetFont(FF_FONT1,FS_BOLD);
$graph->yaxis->SetColor(‘green’,'green’);
$graph->yaxis->HideTicks(true,true);
$graph->yaxis->HideFirstLastLabel();
$graph->xaxis->SetWeight(2);
$graph->xaxis->HideZeroLabel();
$graph->xaxis->HideFirstLastLabel();
$graph->xaxis->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->SetColor(‘green’,'green’);
$f = new FuncGenerator(’0.5*$x*(1-0.5*$x)’);
list($xdata,$ydata) = $f->E(-0.0001,1);
$lp1 = new LinePlot($ydata,$xdata);
$lp1->SetColor(‘yellow’);
$lp1->SetWeight(1);
$f = new FuncGenerator(’1-(1-$x)*sqrt(1-$x)’);
list($x2data,$y2data) = $f->E(-0.0001,1);
$lp2 = new LinePlot($y2data,$x2data);
list($xm,$ym)=$lp2->Max();
$lp2->SetColor(‘blue’);
$lp2->SetWeight(2);
$graph->Add($lp1);
$graph->Add($lp2);
$lp1->SetLegend (“0.5x(1-0.5x)”);
$lp2 ->SetLegend(“1-(1-x)*sqrt(1-x)”); $graph ->legend->Pos( 0.05,0.5,”right” ,”center”);
$graph->Stroke();
?>
Строки ниже дорисовывают пометку-маркер для обозначения графиков
$graph->Add($lp1);
$graph->Add($lp2);
$lp1->SetLegend (“0.5x(1-0.5x)”);
$lp2 ->SetLegend(“1-(1-x)*sqrt(1-x)”); $graph ->legend->Pos( 0.05,0.5,”right” ,”center”);
Рисунок2. Результат работы программы
Библиографический список
- Плохотников С.П. Математическое моделирование фильтрации в слоистых пластах / С.П. Плохотников, Р.Х. Фатыхов: Монография, Казань, КГУ,2006г.-173 С.
- Булыгин В.Я. Гидромеханика нефтяного пласта / В.Я. Булыгин -М.:Недра, 1974.-232 с.
- Гмурман В.Е. Теория вероятностей и математическая статистика 1977 стр.480
- Матросов А.В., Сергеев А.О., Чаунин М.П. HTML 4.0. – СПб.: Питер, 1999. – 224 с.: ил.
- Айзекс С. Dynamic HTML. – СПб.: Питер, 2001. – 367 с.: ил.
- Шапошников И. Профессиональное PHP программирование Издательство: Питер 2007 стр. 192
- Фролов А., Фролов Г. Практика применения PHP, Apache и MySQL для активных web–сайтов. – М.: Издательско–торговый дом “Русская Редакция”, 2002. – 576 с.: ил.