| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как создать расчетное программное обеспечение с открытым исходным кодом (конструктивные решения)

Как создать расчетное программное обеспечение с открытым исходным кодом (конструктивные решения)

Ответ
Поиск в этой теме
Непрочитано 24.09.2021, 14:52
Как создать расчетное программное обеспечение с открытым исходным кодом (конструктивные решения)
nickname2019
 
Регистрация: 18.11.2019
Сообщений: 1,521

На мой взгляд, основными проблемами российского рынка расчетного программного обеспечения являются:
- отсутствие нормальной возможности программной автоматизации по решению расчетных задач
(в расчетных программах отсутствует возможность для нормального программирования, т.е. невозможно написать программу для полностью автоматического создания расчетной схемы (нескольких расчетных схем), автоматического выполнения расчета, автоматического получения результатов и их автоматического анализа);
- закрытый исходный код по подбору расчетных параметров несущих элементов
(различные программы дают различные результаты при решении одинаковых задач, сравнение алгоритмов подбора различных между собой невозможно, так как код закрыт, общепринятых и одобренных алгоритмов нет, каждый пользуется своим "черным ящиком", который иногда может выдать ошибочное решение);
- для людей, которые занимаются автоматизацией на Лисп, C# и т.д. отсутствуют инструменты, которые позволяли бы программно "по-простому" вызвать готовую библиотечную функцию (например, по подбору сечения какой-то простой балки непосредственно из графического редактора), что вызывает необходимость вызова отдельной расчетной программы, что серьезно тормозит работу;
- "корявый" интерфейс, ужасно неудобная и медленная работа в существующих российских (и украинских) расчетных программах;
(фактически при наличии нормального графического редактора (autocad, nanocad и т.д.) приходится экспортировать данные в в "корявый" редактор расчетной программы и длительное в нем работать (задавать нагрузки, связи и т.д.), а встроить расчетную программу в нормальный графический редактор через автоматизацию невозможно).

В связи с вышеизложенным, назрел вопрос:
Как технологически наиболее правильно можно организовать разработку расчетного программного обеспечения с открытым исходным кодом?

Для совместной разработки кода создано общее хранилище на GitHub, используя которое каждый может поучаствовать в разработке :
https://github.com/chaosEagleOwl/source

На данным момент работа находится в стадии тестирования возможности совместной разработки.
Требования к программному обеспечению изложены в файле (ссылка README.md на GitHub): https://github.com/chaosEagleOwl/source/README.md

ТЗ на модуль формирования КЭ-сеток сформировано и помещено на GitHub.
На весь комплекс ТЗ формировать долго, видимо, будет чуть позже.

Сформирована доска для управления проектом, туда добавлены наиболее актуальные задачи.
Задачи проекта.

Последний раз редактировалось nickname2019, 06.10.2021 в 09:07.
Просмотров: 84509
 
Непрочитано 27.09.2021, 20:01
#121
zvezdochiot

маркшейдер
 
Регистрация: 25.09.2021
Москва
Сообщений: 149


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
в .Net - массивы постоянные
Аллокатора совсем нету?
__________________
Keep it simple, stupid.
zvezdochiot вне форума  
 
Непрочитано 27.09.2021, 21:07
#122
румата


 
Регистрация: 06.04.2015
Сообщений: 2,676


Цитата:
Сообщение от zvezdochiot Посмотреть сообщение
Аллокатора совсем нету?
в .net есть изменяемые массивы в виде списков, словарей, стеков, очередей и множеств.
румата вне форума  
 
Непрочитано 27.09.2021, 21:16
#123
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,048


Цитата:
Сообщение от zvezdochiot Посмотреть сообщение
Аллокатора совсем нету?
очень даже есть, но .Net управляемый язык и управления ресурсами пытается брать полностью на себя. Т.е. есть, например, базовый класс работы с массивами Array и там есть метод изменения размерности массива Resize. Но на самом деле под "капотом"

Код:
[Выделить все]
 // Если текущая емкость массива не равна новому значению
if (larray.Length != newSize) 
{
    // Запрашиваем выделение массива новой размерности
    T[] newArray = new T[newSize];
    // Копируем содержимое старого массива в новый
    Array.Copy(larray, 0, newArray, 0,  larray.Length > newSize? newSize : larray.Length);
    // Подменяем ссылку исходного массива на новый 
    array = newArray;
}
т.е. любое изменение размерности массива, даже если есть свободное место в памяти после исходного массива - да пофиг, делаем новый массив с копированием данных, а старый кидаем на "съедение" сборщику. А работа с указателями в классическом сишном представлении в .Net возможна - но это считается критическими участками кода и рекомендуется делать их как можно короче.

----- добавлено через ~12 мин. -----
Цитата:
Сообщение от румата Посмотреть сообщение
изменяемые массивы в виде списков, словарей, стеков, очередей и множеств.
угу, только если посмотреть их реализацию - например базовый типизированный список List<T> - метод установки значения Capacity
Код:
[Выделить все]
  
if (value != _items.Length) 
{
     if (value > 0) 
    {
         T[] newItems = new T[value];
         if (_size > 0) 
         {
              Array.Copy(_items, 0, newItems, 0, _size);
         }
         _items = newItems;
     }
     else 
    {
         _items = _emptyArray;
    }
}
абсолютно то же - массивы фиксированной размерности.
Сергей812 вне форума  
 
Непрочитано 27.09.2021, 21:53
#124
zvezdochiot

маркшейдер
 
Регистрация: 25.09.2021
Москва
Сообщений: 149


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
T[] newArray = new T[newSize];
От того, что аллокатор маскируется, и заворачивается в объект класса, он не перестаёт быть аллокатором. Только паразитные затраты увеличиваете.
__________________
Keep it simple, stupid.
zvezdochiot вне форума  
 
Непрочитано 27.09.2021, 22:12
#125
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,048


Цитата:
Сообщение от zvezdochiot Посмотреть сообщение
От того, что аллокатор маскируется, и заворачивается в объект класса, он не перестаёт быть аллокатором. Только паразитные затраты увеличиваете.
вообще то смысл приведенного фрагмента кода - что в любом случае создается новый массив фиксированного размера с копировкой содержимого... хотя в случае хотя бы уменьшения можно было просто сообщить менеджеру памяти - что освободилась область памяти.

В любом случае, если нужна именно скорость вычислений - имхо, .Net съест часть ресурсов из-за идеологии управляемого кода.
Сергей812 вне форума  
 
Непрочитано 28.09.2021, 08:28
#126
румата


 
Регистрация: 06.04.2015
Сообщений: 2,676


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
.Net съест часть ресурсов из-за идеологии управляемого кода.
Ну и пусть себе ест. Зато удобно, безопасно, а главное высокопроизводительно с точки зрения написания кода. Да и для современных ПК это съедание ресурсов уже не кртитично. Обращение матриц все равно будет происходить +-одинаково, а накладные расходы по формированию и управлению массивами данных это плата за удобство программирования.
С++, ассемблер - инструменты всеж для профессиональных программистов, коих в этой теме, думается, нет совсем.
румата вне форума  
 
Автор темы   Непрочитано 28.09.2021, 08:42
#127
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,521


Остается решить как вносить изменения в "проверенный" код на сайте.
Варианты:
1. Каждый вносит имзенения код на GitHub, потом изменения объединяются через функционал GitHub (это не сложно для обычного юзера, который нашел ошибку в расчетном и хочет немного поправить код?).
2. Каждый размечает специальными метками места, где он вносил изменения, специальной программой код будем периодически объединять в "главный" файл.
nickname2019 вне форума  
 
Непрочитано 28.09.2021, 08:47
#128
румата


 
Регистрация: 06.04.2015
Сообщений: 2,676


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Остается решить как вносить изменения в "проверенный" код на сайте.
Обычно вносить. Вы инициализируете проект и мастер-ветку. Остальные делают вилку этого проекта и пишут свою часть реализации. Потом, после окончания и проверки этот форк сливаете с основной веткой.
румата вне форума  
 
Непрочитано 28.09.2021, 08:50
#129
румата


 
Регистрация: 06.04.2015
Сообщений: 2,676


Вот что что пишет создатель AlgLib по поводу использования сторонней библиотеки для решения задач линейной алгебры https://www.alglib.net/articles/a001_alglibandmkl.php
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок экрана 2021-09-28 084241.png
Просмотров: 358
Размер:	85.8 Кб
ID:	241141  
румата вне форума  
 
Непрочитано 28.09.2021, 10:48
#130
dambra


 
Регистрация: 22.09.2012
Сообщений: 419


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Остается решить как вносить изменения в "проверенный" код на сайте.
Варианты:
1. Каждый вносит имзенения код на GitHub, потом изменения объединяются через функционал GitHub (это не сложно для обычного юзера, который нашел ошибку в расчетном и хочет немного поправить код?).
2. Каждый размечает специальными метками места, где он вносил изменения, специальной программой код будем периодически объединять в "главный" файл.
Привет.
Предлагаю тебе как автору задачу разбить на подзадачи и изложить что ребуется, т.е. чтобы участнику оставалось реализовать код зная конкретную задачу.
2. Можно спросить о среде разработки - IDE? Я так понял что пишешь на чистом С++?
3. Хорошо бы было определится с библиотеками которые ещё ужны, как советовали другие и на основании их уже реализовывать задачи. Можешь проанализировать или кого-то подключить кто знает. Или все на cmath писать вручную? Может получиться зоопарк.
4. Я бы мог помочь написать часть кода зная задачу. Если есть возможность делегировать часть кода - пиши в личку. С уважением,
dambra вне форума  
 
Автор темы   Непрочитано 28.09.2021, 13:49
#131
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,521


Цитата:
Сообщение от dambra Посмотреть сообщение
Привет.
Предлагаю тебе как автору задачу разбить на подзадачи и изложить что ребуется, т.е. чтобы участнику оставалось реализовать код зная конкретную задачу.
2. Можно спросить о среде разработки - IDE? Я так понял что пишешь на чистом С++?
3. Хорошо бы было определится с библиотеками которые ещё ужны, как советовали другие и на основании их уже реализовывать задачи. Можешь проанализировать или кого-то подключить кто знает. Или все на cmath писать вручную? Может получиться зоопарк.
4. Я бы мог помочь написать часть кода зная задачу. Если есть возможность делегировать часть кода - пиши в личку. С уважением,
Сейчас идет анализ материалов. Всем отписавшимся большое спасибо.

По результатам анализа ситуации напрашиваются следующие выводы (предварительно):
1. Вся математика написана до нас (кроме проверки конструкций по нашим СП). Есть несколько законченных проектов, которые имеют открытый исходный код. Улучшать можно, но это отнесем "на потом".
2. Работа сводится к выбору существующего проекта с открытым исходным кодом для его локализации.
3. Мне пока нравиться gmsh (импорт из gmsh поддерживает SCAD, вероятнее всего это оптимальный "донор" для кода).

Я пока пытаюсь разобраться как его скомпилировать и зпустить на исполнение в одной из версий Microsoft Visual Studio.

(прошу понять меня правильно, мое время ограниченно, и я не могу на 100 процентов себя посвятить этой задаче)

Если кто-то разберется как это сделать (какие настройки поставить и т.д.) и поделиться этим с сообществом, было бы прекрасно.

Сайт:
https://gmsh.info/

P.s. вообще, видимо, нужно с функционалом gmsh ознакомиться. Я раньше с ним не встречался.

Последний раз редактировалось nickname2019, 28.09.2021 в 14:08.
nickname2019 вне форума  
 
Непрочитано 28.09.2021, 15:05
#132
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 1,874


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Мне пока нравиться gmsh
Навскидку пара проблем с ним:
  • Тормозит даже на не очень больших задачах. Хорошо, если это тормозит графика. А если сам движок - то у нас проблема. Это первое, что надо проверить.
  • Для контуров, которые касаются друг друга сторонами, не создает совместную сетку. Там есть в разделе MESH режим Define/Embedded, но он работает только если точка или линия попадает на поверхность; для точки, попавшей на контур, генерится битая сетка, или сетка не создается вообще, или GMSH вылетает. Есть режим слияния геометрии, но он удаляет только совпавшие точки, или полностью совпавшие отрезки; порезать линию узлами то ли он не умеет, то ли я не умею.
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
импорт из gmsh поддерживает SCAD
Еще импорт вроде как есть у Лиры, но в версии 2016Free я не смог его заставить работать. Формат MSH несколько раз менялся, видимо, импорт был рабочим только в одной из старых версий. Для Лиры и Старка я себе сваял простые программки на C#, перегоняют *.MSH в *.SLI и в *.FEA. MSH сохранять командой "File/Export/Gmsh MSH" и выбирать формат "Version 1". Программки консольные. Кто работает в Total Commander / Double Commander - можно вытащить значок на панель, и перетаскивать файлы MSH на значок. Кто работает в проводнике - можно создать ярлык к программе, и перетаскивать файлы MSH на ярлык. Рядом с исходной сеткой запишется SLI или FEA с тем же именем.
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Работа сводится к выбору существующего проекта
Еще из открытого знаю Elmer FEM - аналог Ансисов/Комсолов и т.п. - мультифизика. Есть механика, теплотехника, электростатика и т.п. Есть забавные фишки, типа адаптивных сеток, которые в процессе решения под градиенты уточняются. Есть и линейные решатели, и нелинейные, и API под пользовательские типы КЭ. Были и глюки - в многопоточной версии нарушалась синхронизация записи результатов, и получались битые файлы, с секциями, записанными не по порядку; при слишком большом числе шагов по времени переполнялся счетчик номеров файлов данных и расчет прерывался. Исходники не смотрел, там может оказаться фортран.
Вложения
Тип файла: zip MshConvert.ZIP (15.9 Кб, 9 просмотров)
Нубий-IV вне форума  
 
Непрочитано 28.09.2021, 15:06
#133
румата


 
Регистрация: 06.04.2015
Сообщений: 2,676


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
3. Мне пока нравиться gmsh (импорт из gmsh поддерживает SCAD, вероятнее всего это оптимальный "донор" для кода).
GMSH это, в основном, мешер, т.е. генератор КЭ сеток. Да, у него есть свой решатель, но насколько мне известно это очень ускоспециализированный решатель на правленный на решение задач толи электромагнетизма, толи акустики.
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Я пока пытаюсь разобраться как его скомпилировать и зпустить на исполнение в одной из версий Microsoft Visual Studio.
Зачем? Он уже есть скомпилированный в виде .exe и не требующий установки. Поддерживает работу из командной строки, т.е. его можно вызывать на исполнение практически из любого программого кода.
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
вообще, видимо, нужно с функционалом gmsh ознакомиться.
Функционал у него незатейливый построенный на основе скриптов на собственном языке. Множество примеров скриптов находится в архиве с исполнительным файлом. Есть библиотечки для работы с ним из питона и пр. ЯПов.

----- добавлено через ~2 мин. -----
Цитата:
Сообщение от Нубий-IV Посмотреть сообщение
Для контуров, которые касаются друг друга сторонами, не создает совместную сетку.
Да, это нужно научится обходить.
Цитата:
Сообщение от Нубий-IV Посмотреть сообщение
Тормозит даже на не очень больших задачах.
Не заметил у себя такого. При правильно созданном скрипте очень быстро работает даже на внушительного объема геометрии.

----- добавлено через ~9 мин. -----
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
2. Работа сводится к выбору существующего проекта с открытым исходным кодом для его локализации.
Написание своей библиотеки КЭ может оказаться более простым, чем адаптация чужого кода под свои нужды

----- добавлено через ~10 мин. -----
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
(прошу понять меня правильно, мое время ограниченно, и я не могу на 100 процентов себя посвятить этой задаче
Так и никто не может. просто без головного разработчика, который будет координировать разработку между исполнителями ничего не получится
румата вне форума  
 
Непрочитано 28.09.2021, 15:25
#134
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 1,874


Цитата:
Сообщение от румата Посмотреть сообщение
но насколько мне известно это очень ускоспециализированный решатель
Просто для него примеры под электрику на сайте лежали, сейчас еще добавили пример с теплотехникой. А вообще там записывается произвольное уравнение МКЭ формулой, и решатель с ним разбирается. Кому нужна механика - можно добавить механику. Входной язык, правда, там наркомановский, и документации негусто.
Цитата:
Сообщение от румата Посмотреть сообщение
GMSH это, в основном, мешер, т.е. генератор КЭ сеток.
Формально у него есть родной решатель - GetDP, и возможность подключить свой. Плюс есть постобработка - просмотр результатов и какие-никакие фильтры для обработки результатов. Теоретически можно и его вместо автокада как редактор и визуализатор по первости использовать.
Цитата:
Сообщение от румата Посмотреть сообщение
При правильно созданном скрипте очень быстро работает
Однако, так и есть. Проверил на простейшем тесте - все быстрое. Видимо, это я от каких-то очень старых версий тормоза запомнил.
Миниатюры
Нажмите на изображение для увеличения
Название: Test.PNG
Просмотров: 279
Размер:	100.4 Кб
ID:	241185  
Вложения
Тип файла: zip Test.geo.zip (33.1 Кб, 9 просмотров)

Последний раз редактировалось Нубий-IV, 28.09.2021 в 15:49.
Нубий-IV вне форума  
 
Автор темы   Непрочитано 28.09.2021, 16:29
#135
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,521


Цитата:
Сообщение от румата Посмотреть сообщение
Написание своей библиотеки КЭ может оказаться более простым, чем адаптация чужого кода под свои нужды
КЭ мешер, я думаю, мы уже нашли. Осталось найти в нем процедуру генерации сеток и скопипастить. У них SDK вроде есть, нужно только разобраться. С нуля писать плоский мешер - это может быть надолго (не менее мясяца-двух чистого времени). Необходимости создания 3д-мешера я пока вообще не вижу (для строительства это слишком узкая задача, кроме расчетов тел плотин мне в голову ничего не приходит).

Наверняка также есть уже написанные процедуры генерации локальных матриц жесткостей отдельных КЭ (открытый код).
nickname2019 вне форума  
 
Непрочитано 28.09.2021, 16:52
#136
румата


 
Регистрация: 06.04.2015
Сообщений: 2,676


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Осталось найти в нем процедуру генерации сеток и скопипастить.
Ничего не нужно копипастить. Просто написать дополнение для автокада или нанокада или брикскада или чего еще для генерации файлов .geo на основе контурной геометрии созданной в графических редакторах.
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
С нуля писать плоский мешер - это может быть надолго (не менее мясяца-двух чистого времени).
У меня есть собственноручно написанный плоский мэшер. При необходимости поделюсь.
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Наверняка также есть уже написанные процедуры генерации локальных матриц жесткостей отдельных КЭ (открытый код).
Есть, но они все, преимущественно на фортране (как в книжках по МКЭ), реже на питоне.
румата вне форума  
 
Автор темы   Непрочитано 28.09.2021, 16:56
#137
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,521


Цитата:
Сообщение от румата Посмотреть сообщение
Ничего не нужно копипастить. Просто написать дополнение для автокада или нанокада или брикскада или чего еще для генерации файлов .geo на основе контурной геометрии созданной в графических редакторах.
Потом запускать gmsh через командную строку для расчета? А результаты обратно в граф. редактор импортировать?

----- добавлено через 41 сек. -----
Цитата:
Сообщение от румата Посмотреть сообщение
У меня есть собственноручно написанный плоский мэшер. При необходимости поделюсь.
Это круто. Но пока проанализируем все возможные варианты.

P.s.
Вот ссылка с примером работы с библиотекой Eigen

https://habr.com/ru/post/271723/
nickname2019 вне форума  
 
Непрочитано 28.09.2021, 17:14
#138
румата


 
Регистрация: 06.04.2015
Сообщений: 2,676


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Потом запускать gmsh через командную строку для расчета?
Да хоть как запускать. Можно открыть руками через графический интерфейс GMSH.
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
А результаты обратно в граф. редактор импортировать?
Да, ничего сложного в этом нет.
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Это круто.
Крутого мало. Пока только один метод генерации сетки реализован.
Цитата:
Сообщение от nickname2019 Посмотреть сообщение
Вот ссылка с примером работы с библиотекой Eigen
Да, спасибо, я это давно видел.
румата вне форума  
 
Автор темы   Непрочитано 28.09.2021, 19:29
#139
nickname2019


 
Регистрация: 18.11.2019
Сообщений: 1,521


После некоторого размышления над комментариями, проект, видимо, будем делать на Visual Studio 2019.
Желающим присоединиться к проекту старые версии студий найти может быть трудно.
Т.е. результирующий проект будет совместим с Autocad 2021.
Результирующий вариант потом перекомпилируем под другие версии.
nickname2019 вне форума  
 
Непрочитано 30.09.2021, 06:41
2 | #140
Нубий-IV

Инженер-философ
 
Регистрация: 24.04.2019
Хабаровск
Сообщений: 1,874


Цитата:
Сообщение от nickname2019 Посмотреть сообщение
какие настройки поставить
Похоже, никакие вообще не надо. В свежескачаной VS2019Community (16.11.3):
  • Если нужно просто собрать exe:
    - "Файл / Открыть / Папка", выбрать папку "gmsh-4.8.4-source".
    - После того, как VS подумает несколько минут с импортом, "Сборка / Собрать решение"
    - В папке "gmsh-4.8.4-source\out\build\x64-Debug" собрался gmsh.exe (консольная версия). Тестовая команда "gmsh.exe Test.geo -2 -o Test.msh" работает и сохраняет сгенерированную сетку.
  • Если нужно настроенное решение:
    - Зайти в папку "gmsh-4.8.4-source" и запустить CMake (ставится с VS) с ключом -G для генерации проекта VS:
    Код:
    [Выделить все]
    "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -G "Visual Studio 16 2019" .
    - В VS открыть решение "gmsh-4.8.4-source\gmsh.sln" и собрать через "Сборка / Собрать решение"
    - В папке "gmsh-4.8.4-source\Debug\" - собранный gmsh.exe.
Нубий-IV вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как создать расчетное программное обеспечение с открытым исходным кодом (конструктивные решения)

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
СП 335.1325800.2017 «Крупнопанельные конструктивные системы. Правила проектирования» (Обсуждение) Armin Прочее. Архитектура и строительство 37 07.11.2018 06:55
Фирменные решения по пропуску коммуникаций через стены подвала Regby Конструкции зданий и сооружений 2 07.04.2010 20:43
устройство и возможные конструктивные решения вентфасада из кирпича Ivansobaka Каменные и армокаменные конструкции 1 16.12.2009 06:38
Конструктивные решения по перемычкам в многослойных кирпичных стенах! Westroy Архитектура 16 30.11.2009 13:57
Конструктивные решения монтажных соединений многоэтажных зданий на высокопрочных болтах VoRoNoFF Конструкции зданий и сооружений 1 04.04.2009 00:41