Различия

Здесь показаны различия между выбранной ревизией и текущей версией данной страницы.

ru:ivutils [2012/11/13 10:31]
deinega
ru:ivutils [2014/05/11 18:59] (текущий)
deinega
Строка 1: Строка 1:
-======ivutils======+======Библиотека вспомогательных утилит ivutils======
  
 это набор утилит C++ для создания численных приложений. ivutils использовались при написании программ EMTL (electromagnetic modeling) и [[https://sites.physics.utoronto.ca/sajeevjohn/software/transport|Microvolt]] (semiconductor device modeling) это набор утилит C++ для создания численных приложений. ivutils использовались при написании программ EMTL (electromagnetic modeling) и [[https://sites.physics.utoronto.ca/sajeevjohn/software/transport|Microvolt]] (semiconductor device modeling)
  
-Для использования ivutils, нужно их скачать и скомпилировать с вашим кодом: {{:ivutils.zip}} +Для использования ivutils, нужно их скачать и скомпилировать с вашим кодом: {{:ivutils.zip}}
  
 ivutils включает следующие утилиты: ivutils включает следующие утилиты:
Строка 15: Строка 15:
 | | | | | |
 | grid | однородная и неоднородная сетки для хранения и интерполяции данных | | grid | однородная и неоднородная сетки для хранения и интерполяции данных |
-linsysn | интерфейс для решения системы линейных уравнений с помощью LAPACK и PARDISO |+linsolv | интерфейс для решения системы линейных уравнений с помощью LAPACK и PARDISO |
 | | | | | |
 | refobj\\ pencil |умные указатели для контроля над памятью, выделяемой под динамические объекты | | refobj\\ pencil |умные указатели для контроля над памятью, выделяемой под динамические объекты |
Строка 63: Строка 63:
  
     * {{:download/test_alg_parser.cpp}}      * {{:download/test_alg_parser.cpp}} 
 +
 +
 +=====Геометрические тела=====
 +
 +Ниже мы вкратце перечислим классы, отвечающие некоторым используемым геометрическим телам. Со всем списком можно ознакомиться в справке для пользователя.
 +
 +Класс вектор Vector_3. В его конструкторе задаются три координаты x, y и z. Вектора можно складывать, вычитать, умножать на число, умножать скалярно (с помощью оператора *) и векторно (с помощью оператора %). Например,
 +
 +<code cpp>
 +  Vector_3 v1(1,0,0),v2(0,1,0);
 +  Vector_3 v0=a%b-Vector_3(0,0,1); // v0 равен Vector_3(0,0,0)
 +</code>
 +
 +Если в конструкторе вектора задается меньше трех координат, то незаданные координаты полагаются равными последней заданной. Например, Vector_3(1)=Vector_3(1,1,1). Также Vector_3()=Vector_3(0,0,0), так как первая координата по умолчанию равна нулю.
 +
 +Векторам с целочисленными координатами отвечает класс iVector_3.
 +
 +Тела, описывающие геометрические классы, являются наследниками класса Region_3.
 +Класс Region_3 (а также его наследники) имеет следующую фунциональность:
 +  *он может проверять, находится ли произвольная точка внутри или снаружи
 +  *он может находить ближайшую точку на поверхности от выбранного положения
 +  *он может находить пересечение с произвольной прямой
 +  *он может находить сечение с произвольным плоским контуром
 +
 +Ниже мы приводии примеры функций, которые могут использоваться для создания некоторых распространенных объектов.
 +
 +<code cpp>
 +  Region_3 *GetHalfSpace(const Vector_3 &n, const Vector_3 &pos);
 +</code>
 +возвращает полупространство, n - нормаль к граничной плоскости, pos - произвольная точка на этой плоскости. Например,
 +
 +<code cpp>
 +  Region_3 *reg = GetHalfSpace(Vector_3(0,0,1), Vector_3(0,0,0));
 +</code>
 +возвращает полупространству соответсвующее положительной части оси z.
 +
 +<code cpp>
 +  Region_3 *GetPlate(const Vector_3 &n, const Vector_3 &pos, vec_type width);
 +</code>  
 +возвращает бесконечную пластинку (пространство между двумя параллельным плоскостями), n - нормаль к плоскостям, pos - точка на некоторой плоскости, width - расстояние между этой плоскостью и соседней плоскостью.
 +
 +<code cpp>
 +Region_3 *getBox(const &Vector_3 a, const &Vector_3 b);
 +</code>
 +возвращает параллелепипед с ребрами параллельными координатным осям. a и b - противоположные вершины параллелепипеда.
 +
 +<code cpp>
 +Region_3 *GetSphere(vec_type R, const &Vector_3 center);
 +</code>
 +возвращает сферу радиуса R и центром center.
 +
 +<code cpp>
 +Region_3 *GetCylinder(const Vector_3 &origin, Vector_3 n, vec_type R, valtype h);
 +</code>
 +возвращает цилиндр, origin - точка на оси цилиндра, n - направление оси, R - радиус, h - высота (если h=0, цилиндр считается бесконечным).
 +
 +<code cpp>
 +Region *GetCone(const Vector_3 &origin, Vector_3 n, vec_type R, vec_type h);
 +</code>
 +возвращает конус, все параметры имеют такое же значение как и для GetCylinder.
 +
 +Также имеются многогранник, цилиндр и пирамида с основанием в виде произвольного многоугольника. Тела можно растягивать, поворачивать, брать их пересечения и объединения. Гладкие тела, например конус, можно конструировать как многогранники с большим количеством граней. Все это задокументировано в region.h.
 +
 +
 +/**Прямоугольный параллелепипед, ребра которого параллельны координатным осям, задается путем указания левого нижнего и правого верхнего векторов.
 +
 +<code cpp>
 +  Box b(Vector_3(),Vector_3(1)); // единичный куб b
 +</code>
 +
 +Сфера задается путем указания ее радиуса и центра.
 +
 +<code cpp>
 +  Sphere s(1,Vector_3()); // сфера s радиуса 1, центр которой находится в начале координат
 +</code>
 +*/
  
 ======Скрипт для запуска задач на произвольном суперкомпьютере====== ======Скрипт для запуска задач на произвольном суперкомпьютере======
Строка 125: Строка 201:
 Аргументы этой функции такие же, как и у функции qsub. Аргументы этой функции такие же, как и у функции qsub.
 Единственное отличие в том, что директория workdir/worksubdir будет создаваться в вашей рабочей директории, а исполняемый файл prog и вспомогательный файл fname будут искаться в вашей домашней директории. Единственное отличие в том, что директория workdir/worksubdir будет создаваться в вашей рабочей директории, а исполняемый файл prog и вспомогательный файл fname будут искаться в вашей домашней директории.
- 
 
/home/kintechlab/fdtd.kintechlab.com/docs/data/attic/ru/ivutils.1352788271.txt.gz · Последние изменения: 2012/11/13 10:31 — deinega     Наверх