Программа EasyStrain запускается из командной строки с тремя параметрами, представляющими собой имена файлов:
easystrain2d.exe struct.txt input.dat output.dat
или
easystrain3d.exe struct.txt input.dat output.dat
(естественно, имена файлов могут быть любыми, на ваш выбор).
Первый аргумент (struct.txt в нашем примере) - это имя файла, из которого программа читает информацию о рассчитываемой структуре - форма, размеры и местоположение включения, рассогласование решёток, коэффициент Пуассона среды.
Второй аргумент (input.dat) - это имя файла, в котором указаны координаты точек, в которых следует вычислить тензор деформации.
Третий аргумент (output.dat) - это имя файла, в который программа записывает результаты расчёта.
Структура файлов несколько различается в "двумерном" и "трёхмерном" случаях, поэтому рассмотрим их по отдельности.
Файл struct.txt может выглядеть примерно так:
_[ Пример: два треугольных включения, стоящих рядом друг с другом _] _[ по горизонтали (см. рисунок). _] _vertices 6 _[ Здесь указывается полное число вершин. _] @ 1 0 _[ После символа @ указываются x- и y-координаты очередной вершины. _] @ 3 0 _[ Вершины для каждого включения перечисляются в порядке следования _] @ 2 0.5 _[ (можно по часовой стрелке, можно против - это не важно). _] @@ _[ Символ @@ разделяет вершины, относящиеся к разным включениям. _] @ -3 0 _[ Если имеется только одно включение, то символ @@ не нужен. _] @ -1 0 @ -2 0.5 _eps0 0.04 _[ Рассогласование решёток _] _Poisson 0.25 _[ Коэффициент Пуассона _] _end После слова "_end" можно писать что угодно. Файл состоит из отдельных слов, разделённых пробелами, знаками табуляции, переносами строки. Количество пробелов и т. п. между словами не играет роли, также не важно и разбиение файла на строки. Комментарии можно вставлять в любом месте файла, они начинаются со слова "_[" и заканчиваются словом "_]". Координаты можно указывать в любых единицах измерения, выбор единицы длины не влияет на результат. Рассогласование решёток определяется как (A_inclusion - A_matrix) / A_matrix, где A_inclusion и A_matrix - постоянные решёток включения и матрицы, соответственно. |
Файл input.dat содержит две колонки цифр. Первая колонка - это x-координаты, вторая - это y-координаты; каждая строка соответствует одной точке плоскости (x,y). Например:
0.85 -0.15 0.85 -0.05 0.85 0.05 0.85 0.15 0.95 -0.15 0.95 -0.05 0.95 0.05 0.95 0.15 1.05 -0.15 1.05 -0.05 1.05 0.05 1.05 0.15 1.15 -0.15 1.15 -0.05 1.15 0.05 1.15 0.15 |
Если вы хотите сосчитать деформацию в узлах некоторой прямоугольной сетки, то файл input.dat можно сгенерировать следующей простенькой программой: make_grid2d.exe (текст программы: make_grid2d.c). Например, приведённый выше файл input.dat может быть создан следующей командой:
make_grid2d.exe 0.85 0.1 1.15 -0.15 0.1 0.15 input.dat
У этой программы 7 аргументов. 1-й, 2-й и 3-й аргументы - это минимальное значение x-координаты, шаг по x, и максимальное значение x-координаты. 4-й, 5-й и 6-й аргументы - это то же самое для y-координаты. 7-й аргумент - это имя создаваемого файла.
В целях безопасности программа make_grid2d не выдаёт в файл более миллиона строк.
Файл output.dat - это результат работы программы. Он содержит все данные из input.dat, но в конце каждой строки добавлены 4 числа. Первое число равно 1, если данная точка попала внутрь включения, и 0 иначе. Второе, третье и четвёртое числа - это xx-, yy- и xy-компоненты тензора деформации, соответственно.
Например, команда "easystrain2d.exe struct.txt input.dat output.dat" создаёт из приведённых выше файлов struct.txt и input.dat такой файл output.dat:
0.85 -0.15 0.00 -0.004832 0.004832 -0.004027 0.85 -0.05 0.00 -0.006686 0.006686 -0.003110 0.85 0.05 0.00 -0.007693 0.007693 -0.000853 0.85 0.15 0.00 -0.007096 0.007096 0.001221 0.95 -0.15 0.00 -0.004687 0.004687 -0.006210 0.95 -0.05 0.00 -0.008658 0.008658 -0.006391 0.95 0.05 0.00 -0.011582 0.011582 -0.000222 0.95 0.15 0.00 -0.008771 0.008771 0.002903 1.05 -0.15 0.00 -0.002903 0.002903 -0.008477 1.05 -0.05 0.00 -0.004845 0.004845 -0.012608 1.05 0.05 0.00 -0.014375 0.014375 0.006869 1.05 0.15 0.00 -0.009540 0.009540 0.006021 1.15 -0.15 0.00 -0.000246 0.000246 -0.009291 1.15 -0.05 0.00 0.000053 -0.000053 -0.012350 1.15 0.05 1.00 -0.038037 0.024703 -0.015631 1.15 0.15 0.00 -0.008630 0.008630 0.009060 |
Здесь мне придётся во многом повторяться, т. к. трёхмерный случай имеет много общего с двумерным.
Файл struct.txt может выглядеть примерно так:
_[ Пример: включение в форме пирамиды (см. рисунок). _] _vertices 5 _[ Здесь указывается полное число вершин. _] @1 -1 -1 0 _[ После символа @ указываются номер вершины (без пробела), _] @2 1 -1 0 _[ затем x-, y- и z-координаты вершины. _] @3 1 1 0 _[ Вершины нумеруются в произвольном порядке, _] @4 -1 1 0 _[ и в файле они могут появляться в произвольном порядке. _] @5 0 0 1 _faces 5 _[ Здесь указывается полное число граней. _] @1 1 2 5 _[ После символа @ указываются номер грани (без пробела), _] @2 2 3 5 _[ затем номера вершин, составляющих грани (по порядку - _] @3 3 4 5 _[ по часовой стрелке или против часовой стрелки). _] @4 4 1 5 _[ Сами грани нумеруются в произвольном порядке, _] @5 1 2 3 4 _[ и в файле их не обязательно располагать по порядку. _] _eps0 0.067 _[ Рассогласование решёток _] _Poisson 0.28 _[ Коэффициент Пуассона _] _end После слова "_end" можно писать что угодно. Файл состоит из отдельных слов, разделённых пробелами, знаками табуляции, переносами строки. Количество пробелов и т. п. между словами не играет роли, также не важно и разбиение файла на строки. Комментарии можно вставлять в любом месте файла, они начинаются со слова "_[" и заканчиваются словом "_]". Координаты можно указывать в любых единицах измерения, выбор единицы длины не влияет на результат. Рассогласование решёток определяется как (A_inclusion - A_matrix) / A_matrix, где A_inclusion и A_matrix - постоянные решёток включения и матрицы, соответственно. |
Файл input.dat содержит три колонки цифр. Первая колонка - это x-координаты, вторая - y-координаты, третья - z-координаты. Каждая строка соответствует одной точке (x,y,z) пространства. Например:
0 0 0.5 0 0 1.5 0 1 0.5 0 1 1.5 1 0 0.5 1 0 1.5 1 1 0.5 1 1 1.5 |
Если вы хотите сосчитать деформацию в узлах некоторой прямоугольной сетки, то файл input.dat можно сгенерировать следующей простенькой программой: make_grid3d.exe (текст программы: make_grid3d.c). Например, приведённый выше файл input.dat может быть создан следующей командой:
make_grid3d.exe 0 1 1 0 1 1 0.5 1 1.5 input.dat
У этой программы 10 аргументов. 1-й, 2-й и 3-й аргументы - это минимальное значение x-координаты, шаг по x, и максимальное значение x-координаты. 4-й, 5-й и 6-й аргументы - это то же самое для y-координаты. 7-й, 8-й и 9-й аргументы - то же самое для z-координаты. 10-й аргумент - это имя создаваемого файла.
В целях безопасности программа make_grid3d не выдаёт в файл более миллиона строк.
Файл output.dat - это результат работы программы. Он содержит все данные из input.dat, но в конце каждой строки добавлены 7 чисел. Первое число равно 1, если данная точка попала внутрь включения, и 0 иначе. 2-е - 7-е числа - это xx-, yy-, zz-, xy-, xz- и yz-компоненты тензора деформации, соответственно.
Например, команда "easystrain3d.exe struct.txt input.dat output.dat" создаёт из приведённых выше файлов struct.txt и input.dat такой файл output.dat:
0 0 0.5 1.00 -0.032439 -0.032439 -0.017011 0.000000 0.000000 0.000000 0 0 1.5 0.00 0.004990 0.004990 -0.009980 0.000000 0.000000 0.000000 0 1 0.5 0.00 0.007997 -0.013977 0.005981 0.000000 0.000000 -0.012409 0 1 1.5 0.00 0.002587 0.000035 -0.002622 0.000000 0.000000 -0.003708 1 0 0.5 0.00 -0.013977 0.007997 0.005981 0.000000 -0.012409 0.000000 1 0 1.5 0.00 0.000035 0.002587 -0.002622 0.000000 -0.003708 0.000000 1 1 0.5 0.00 -0.001595 -0.001595 0.003189 -0.007372 -0.003990 -0.003990 1 1 1.5 0.00 0.000468 0.000468 -0.000937 -0.001290 -0.001850 -0.001850 |
Рассмотрим ещё в качестве примера, как были построены картинки распределения деформации на главной странице:
1. Был создан файл struct.txt - тот самый файл, содержимое которого приведено выше.
2. С помощью программы make_grid3d создан файл input.dat:
make_grid3d.exe -2 0.02 2 0 1 0 -1 0.02 2 input.dat
Обратите внимание: минимальное и максимальное значения y совпадают. Это значит, что имеется единственное значение y, т. е. мы создали не трёхмерную, а двумерную сетку в сечении y=0.
3. Запускаем программу easystrain3d:
easystrain3d.exe struct.txt input.dat output.dat
В результате появился файл output.dat, состоящий из 10 колонок цифр. 1-я и 3-я колонка соответствуют x- и z-координатам; 2-я колонка (y-координата) равна нулю. В 5-й, 6-й, 7-й и 9-й колонках располагаются вычисленные значения xx-, yy-, zz- и xz-компонент тензора деформации. Оставшиеся xy- и yz-компоненты (8-я и 10-я колонки) равны нулю в сечении y=0.
4. Данные из файла output.dat импортированы в программу Surfer, и с помощью этой программы построены изолинии четырёх компонент тензора деформации.