говорю "Б"
наваял програмку про расчетам комбинаций, пока без графического интерфейса,
меланхолично тружусь над графическим интрефейсом (в свободное время)
заточена восновном под femap 9.0.1. (уж очень я люблю фемап)
но входные тестовые файлы можно создавать как угодно
В основу работы программы положена теория графов (рекурсивная функция поиска в глубину).
Состав загружений.
1.Постоянная н-ка.
2.Временная длительная н-ка.
3.Снеговая н-ка.
4.Крановая н-ка 1й пролет Дмах слева, Дмин справа.
5.Крановая н-ка 1й пролет Дмин слева, Дмах справа.
6.Крановая н-ка 1й пролет Т слева (знакопеременная).
7.Крановая н-ка 1й пролет Т справа (знакопеременная).
8.Крановая н-ка 2й пролет Дмах слева, Дмин справа.
9.Крановая н-ка 2й пролет Дмин слева, Дмах справа.
10.Крановая н-ка 2й пролет Т слева (знакопеременная).
11.Крановая н-ка 2й пролет Т справа (знакопеременная).
12.Ветровая н-ка W (знакопеременная).
Загружения 4-5, 6-7, 8-9, 10-11 между собой взаимоисключающие.
Сверху красным номера вершин графа.
Снизу черным номера загружений.
На входе 2 файла.
В качестве примера опорные реации.
{
Output Set 1 - NX NASTRAN Case 1
Forces of single-point constraint (XY plane)
Опорные реакции (плоскость XY)
ID. | T1(X) | T2(Y) | R3(Z) |
1 G| 0. | 5. | 0. |
7 G| 0. | 10. | 0. |
13 G| 0. | 5. | 0. |
Output Set 2 - NX NASTRAN Case 2
Forces of single-point constraint (XY plane)
Опорные реакции (плоскость XY)
ID. | T1(X) | T2(Y) | R3(Z) |
1 G| 0. | 0.5 | 0. |
7 G| 0. | 1. | 0. |
13 G| 0. | 0.5 | 0. |
Output Set 3 - NX NASTRAN Case 3
Forces of single-point constraint (XY plane)
Опорные реакции (плоскость XY)
ID. | T1(X) | T2(Y) | R3(Z) |
1 G| 0. | 10. | 0. |
7 G| 0. | 15. | 0. |
13 G| 0. | 10. | 0. |
Output Set 4 - NX NASTRAN Case 4
Forces of single-point constraint (XY plane)
Опорные реакции (плоскость XY)
ID. | T1(X) | T2(Y) | R3(Z) |
1 G| 1.879 | 10. | 0.604 |
7 G| -1.254 | 2.5 | 3.77 |
13 G| -0.625 | 0. | 3.126 |
Output Set 5 - NX NASTRAN Case 5
Forces of single-point constraint (XY plane)
Опорные реакции (плоскость XY)
ID. | T1(X) | T2(Y) | R3(Z) |
1 G| 1.254 | 2.5 | -3.768 |
7 G| -1.881 | 10. | -0.595 |
13 G| 0.627 | 0. | -3.137 |
Output Set 6 - NX NASTRAN Case 6
Forces of single-point constraint (XY plane)
Опорные реакции (плоскость XY)
ID. | T1(X) | T2(Y) | R3(Z) |
1 G| -0.531 | 0. | 1.656 |
7 G| -0.235 | 0. | 1.173 |
13 G| -0.234 | 0. | 1.171 |
Output Set 7 - NX NASTRAN Case 7
Forces of single-point constraint (XY plane)
Опорные реакции (плоскость XY)
ID. | T1(X) | T2(Y) | R3(Z) |
1 G| -0.235 | 0. | 1.173 |
7 G| -0.531 | 0. | 1.654 |
13 G| -0.235 | 0. | 1.173 |
Output Set 8 - NX NASTRAN Case 8
Forces of single-point constraint (XY plane)
Опорные реакции (плоскость XY)
ID. | T1(X) | T2(Y) | R3(Z) |
1 G| -0.627 | 0. | 3.137 |
7 G| 1.881 | 10. | 0.595 |
13 G| -1.254 | 2.5 | 3.768 |
Output Set 9 - NX NASTRAN Case 9
Forces of single-point constraint (XY plane)
Опорные реакции (плоскость XY)
ID. | T1(X) | T2(Y) | R3(Z) |
1 G| 0.625 | 0. | -3.126 |
7 G| 1.254 | 2.5 | -3.77 |
13 G| -1.879 | 10. | -0.604 |
Output Set 10 - NX NASTRAN Case 10
Forces of single-point constraint (XY plane)
Опорные реакции (плоскость XY)
ID. | T1(X) | T2(Y) | R3(Z) |
1 G| -0.235 | 0. | 1.173 |
7 G| -0.531 | 0. | 1.654 |
13 G| -0.235 | 0. | 1.173 |
Output Set 11 - NX NASTRAN Case 11
Forces of single-point constraint (XY plane)
Опорные реакции (плоскость XY)
ID. | T1(X) | T2(Y) | R3(Z) |
1 G| -0.234 | 0. | 1.171 |
7 G| -0.235 | 0. | 1.173 |
13 G| -0.531 | 0. | 1.656 |
Output Set 12 - NX NASTRAN Case 12
Forces of single-point constraint (XY plane)
Опорные реакции (плоскость XY)
ID. | T1(X) | T2(Y) | R3(Z) |
1 G| -0.667 | 0. | 3.335 |
7 G| -0.666 | 0. | 3.331 |
13 G| -0.667 | 0. | 3.335 |
}
Файл анализируется по ключевым словам и символам.
При обнаружении ключевого слова Format создается новый набор выходных данных, в данном случае Femap Constraint Forces. Далее ищется ключевая фраза Output Set число следующее за этой фразой принимается за номер текущего загружения. При обнаружении первой строки содержащей символ | создается ”шапка” таблицы содержащая текстовую информацию из этой строки, следующие строки содержащие символ | интерпретируются как данные для последующего анализа и разбиваются на составляющие, первый столбец всегда текстовая информация, последующие столбцы всегда вещественные значения.
Файл описывающий ориентированный граф выглядит след. образом
{
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<graph xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<vertex>
<id>1</id>
<edges>2</edges>
<outputset>1</outputset>
<factor1>1</factor1>
<factor2>0.8</factor2>
</vertex>
<vertex>
<id>2</id>
<edges>3</edges>
<outputset>2</outputset>
<factor1>1</factor1>
<factor2>0</factor2>
</vertex>
<vertex>
<id>3</id>
<edges>4</edges>
<outputset>3</outputset>
<factor1>1</factor1>
<factor2>0</factor2>
</vertex>
<vertex>
<id>4</id>
<edges>5,8</edges>
<outputset>12</outputset>
<factor1>1</factor1>
<factor2>-1</factor2>
</vertex>
<vertex>
<id>5</id>
<edges>6,7</edges>
<outputset>4</outputset>
<factor1>1</factor1>
<factor2>0</factor2>
</vertex>
<vertex>
<id>6</id>
<edges>11,14</edges>
<outputset>6</outputset>
<factor1>1</factor1>
<factor2>-1</factor2>
</vertex>
<vertex>
<id>7</id>
<edges>11,14</edges>
<outputset>7</outputset>
<factor1>1</factor1>
<factor2>-1</factor2>
</vertex>
<vertex>
<id>8</id>
<edges>9,10</edges>
<outputset>5</outputset>
<factor1>1</factor1>
<factor2>0</factor2>
</vertex>
<vertex>
<id>9</id>
<edges>11,14</edges>
<outputset>6</outputset>
<factor1>1</factor1>
<factor2>-1</factor2>
</vertex>
<vertex>
<id>10</id>
<edges>11,14</edges>
<outputset>7</outputset>
<factor1>1</factor1>
<factor2>-1</factor2>
</vertex>
<vertex>
<id>11</id>
<edges>12,13</edges>
<outputset>8</outputset>
<factor1>1</factor1>
<factor2>0</factor2>
</vertex>
<vertex>
<id>12</id>
<outputset>10</outputset>
<factor1>1</factor1>
<factor2>-1</factor2>
</vertex>
<vertex>
<id>13</id>
<outputset>11</outputset>
<factor1>1</factor1>
<factor2>-1</factor2>
</vertex>
<vertex>
<id>14</id>
<edges>15,16</edges>
<outputset>9</outputset>
<factor1>1</factor1>
<factor2>0</factor2>
</vertex>
<vertex>
<id>15</id>
<outputset>10</outputset>
<factor1>1</factor1>
<factor2>-1</factor2>
</vertex>
<vertex>
<id>16</id>
<outputset>11</outputset>
<factor1>1</factor1>
<factor2>-1</factor2>
</vertex>
</graph>
}
так граф выглядит в экселе
id edges outputset factor1 factor2
1 | 2 | 1 | 1 | 0.8 |
2 | 3 | 2 | 1 | 0 |
3 | 4 | 3 | 1 | 0 |
4 | 5,8 | 12 | 1 | -1 |
5 | 6,7 | 4 | 1 | 0 |
6 |11,14 | 6 | 1 | -1 |
7 |11,14 | 7 | 1 | -1 |
8 |9,10 | 5 | 1 | 0 |
9 |11,14 | 6 | 1 | -1 |
10 |11,14 | 7 | 1 | -1 |
11 |12,13 | 8 | 1 | 0 |
12 | | 10 | 1 | -1 |
13 | | 11 | 1 | -1 |
14 |15,16 | 9 | 1 | 0 |
15 | | 10 | 1 | -1 |
16 | | 11 | 1 | -1 |
где
vertex - номер вершины графа
edges - ребро указывающее на следующуу вершину
outputset - "загружение" ассоциированное с данной веришиной
factor1, factor2 - кты на которые умножается данное загружение(1;-1) знакопеременное
(1;0) может быть может не быть .. и тд
ID. | T1(X) | T2(Y) | R3(Z) | Combine
1 G | 3.94 | 14.00 | -8.69 | 1(0.8)12(-1)4(1)6(-1)9(1)10(-1)
1 G | -2.06 | 4.00 | 9.30 | 1(0.8)12(1)6(1)8(1)10(1)
1 G | 0.45 | 25.50 | 6.77 | 1(1)2(1)3(1)12(1)4(1)6(1)10(1)
1 G | -1.43 | 4.00 | 6.16 | 1(0.8)12(1)6(1)10(1)
1 G | -0.18 | 14.00 | 9.91 | 1(0.8)12(1)4(1)6(1)8(1)10(1)
1 G | 3.31 | 6.50 | -13.06 | 1(0.8)12(-1)5(1)6(-1)9(1)10(-1)
7 G | 3.61 | 18.00 | -6.04 | 1(0.8)12(-1)7(-1)8(1)10(-1)
7 G | -3.61 | 18.00 | 6.04 | 1(0.8)12(1)5(1)7(1)10(1)
7 G | -1.43 | 46.00 | 6.16 | 1(1)2(1)3(1)12(1)5(1)6(1)8(1)10(1)
7 G | -1.43 | 8.00 | 6.16 | 1(0.8)12(1)6(1)10(1)
7 G | -1.10 | 20.50 | 11.00 | 1(0.8)12(1)4(1)7(1)8(1)10(1)
7 G | 1.10 | 20.50 | -11.00 | 1(0.8)12(-1)5(1)7(-1)9(1)10(-1)
13 G | 2.06 | 4.00 | -9.30 | 1(0.8)12(-1)5(1)7(-1)11(-1)
13 G | -3.94 | 14.00 | 8.69 | 1(0.8)12(1)4(1)7(1)9(1)11(1)
13 G | -3.64 | 25.50 | 8.20 | 1(1)2(1)3(1)12(1)4(1)6(1)9(1)10(1)
13 G | -1.76 | 4.00 | 8.81 | 1(0.8)12(1)4(1)6(1)10(1)
13 G | -3.31 | 6.50 | 13.06 | 1(0.8)12(1)4(1)7(1)8(1)11(1)
13 G | 0.18 | 14.00 | -9.91 | 1(0.8)12(-1)5(1)7(-1)9(1)11(-1)
так выглядят результаты
1G - номер узла
T1(X)T2(Y)R3(Z) - опорные реакции по трем осям
1(0.8)12(-1)5(1)7(-1)9(1)11(-1) - загружения с соответствующими к-тами входящие в данную комбинациию
Данный граф имеет 16 различных путей.
Где путь – последовательность вершин, в которой каждая следующая вершина (после первой), является смежной с предыдущей вершиной на этом пути.
Пути графа в виде списка смежности вершин.
1.1 2 3 4 5 6 11 12
2.1 2 3 4 5 6 11 13
3.1 2 3 4 5 6 14 15
4.1 2 3 4 5 6 14 16
5.1 2 3 4 5 7 11 12
6.1 2 3 4 5 7 11 13
7.1 2 3 4 5 7 14 15
8.1 2 3 4 5 7 14 16
9.1 2 3 4 8 9 11 12
10.1 2 3 4 8 9 11 13
11.1 2 3 4 8 9 14 15
12.1 2 3 4 8 9 14 16
13.1 2 3 4 8 10 11 12
14.1 2 3 4 8 10 11 13
15.1 2 3 4 8 10 14 15
16.1 2 3 4 8 10 14 16
В данном графе каждый путь состоит из 8ми вершин, следовательно возможное количество комбинаций будет равно:
(2^8)*16=4096;
(два в восьмой степени умножить на 16)
в качестве примера взял опорные реакции, но считать можно все.. комбинац усилий, перемещ, напряжений.. и тд.
наверное не очень понятно получилось обьяснить...
возможно составление ЛЮБЫХ вариантов комбинаций
это что касается ЛИНЕЙНЫХ расчетов..
считал задачи гораздо большим количеством комбинаций, комп начинает задумываться основательно...
Консольное приложение Microsoft Visual C# 2005 beta1.
Требования:
микрософт офис 2003
Microsoft .NET Framework version 2.0.40607
_http://seva.russia.webmatrixhosting.net/combine/example1.rar.dll
файл example1.rar.dll необходимо перейменовать в example1.rar