70. Пользовательские расширения - API ЛИРА 10.12. Расчет конструкций из полимерных композиционных материалов

23.05.2022 70. Пользовательские расширения - API ЛИРА 10.12. Расчет конструкций из полимерных композиционных материалов
Автор: Юдинцев Евгений

Содержание:

  1. Исходные данные
  2. Построение расчетной модели
  3. Статический расчет
  4. Поверочный расчет ПКМ
  5. API ЛИРА 10.12
  6. Разработка пользовательского расширения
  7. Регистрация пользовательского расширения
  8. Пользовательское расширение для расчета ПКМ
  9. Вывод результатов расчета

В практике строительства инженерных сооружений нашли широкое применение конструкции изготавливаемые из полимерных композиционных материалов (далее ПКМ). Данные материалы используются и при производстве всевозможных технологических емкостей. Высокая прочность ПКМ позволяет размещать емкости ниже поверхности земли, и они способны воспринимать значительные нагрузки.

Последовательность расчета и конструирования емкостей из ПКМ в ЛИРА 10 состоит из нескольких основных этапов:

  1. Определение усилий / напряжений в элементах конструкции. Для вычисления, как правило, используются расчетные схемы, состоящие из пластинчатых КЭ;
  2. Проверка общей и локальной устойчивости элементов емкости;
  3. Расчет емкости на всплытие;
  4. Проверка несущей способности стенок из ПКМ по соответствующей теории прочности.

В заметке мы рассмотрим расчет подземной технологической емкости, устанавливаемой в составе локальных очистных сооружений, и познакомимся с возможностями открытого API (Application Programming Interface) ЛИРА 10 применительно к автоматизации проверки прочности ПКМ.

Функционал API позволяет пользователям ЛИРА 10.12 выполнить экспорт исходных данных или результатов расчета в нестандартный формат или произвести дополнительные расчеты, используя существующие данные.

Исходные данные:

Выполнить поверочный расчет вертикальной технологической емкости для жидкости с рабочим объемом 35м3. Глубина заглубления – 6м, обратная засыпка песком средней крупности. Стенки толщиной 10мм выполнены из полимерного композиционного материала, полученного двумя методами – методом намотки однонаправленного ровинга и методом контактного формования ткани. Для предотвращения всплытия в основании емкости устраивается фундамент балластного типа.

Построение расчетной модели:

Расчетная модель емкости представлена на рис. 1. Диаметр емкости 3.1м, высота 6м. Выполняем триангуляцию модели, назначаем граничные условия (условия сопряжения элементов, грунтовые условия и т.д.). Для учета направления волокна ПКМ предварительно делаем ориентирование локальных осей (рис. 2).

compos_mat_01.jpg

Рисунок 1. Конечно-элементная модель емкости

compos_mat_02.jpg

Рисунок 2. Конечно-элементная модель емкости. Локальные оси, ось X направлена по направлению волокон ПКМ

Далее прикладываем действующие нагрузки на расчетную схему – собственный вес конструкций, эксплуатационные нагрузки (давление жидкости в резервуаре), нагрузки от засыпки грунтом, нагрузки на поверхности грунта.

Нагрузку на стенки резервуара от обратной засыпки определяем согласно приложения В (СП 43.13330.2012 Сооружения промышленных предприятий. Актуализированная редакция СНиП 2.09.03-85, далее [1]). Характеристики грунта обратной засыпки принимаем с учетом п.п. В.1-В.3 [1]. Выполним вычисление нагрузки:

formula 001.jpg

, угол наклона плоскости скольжения к вертикали

formula 002.jpg

, коэффициент горизонтального давления грунта

formula 003.jpg

, горизонтальное давление грунта на глубине y

Вычисленную нагрузку от обратной засыпки грунтом можно задать при помощи функции «Трапециевидная нагрузка на группу».

compos_mat_03.jpg

Также подобную вычисляемую нагрузку можно приложить инструментом задания нагрузки по функции. Для назначения распределенной нагрузки по функции в диалоговом окне задается значение нагрузки (в виде определенной функции). Синтаксис формульного задания линий и поверхностей должен полностью соответствовать синтаксису и правилам использования языка программирования C Sharp (С#). То есть допускается создание пользовательских переменных любых типов данных, доступных в С#, использование любых видов циклов, написание различных условий и ограничений на параметры функций и т. д. На рис. 3 продемонстрирован пример скрипта для автоматического вычисления давления грунта и приложения нагрузки на схему.

var fi = 33; //угол внутреннего трения
var g = 18000; //плотность грунта, Н/м.куб.
var c = 0; //удельное сцепление, н/м.кв.
var theta = 45-fi/2; //ф.В.3 [1]
var lambdaH = tan(theta*0.017)*tan(theta*0.017); //ф.В.4 [1]
f = g*(-z)*lambdaH-2*c*sqrt(lambdaH); //ф.В.5 [1]. Прикладываемая нагрузка, Н/м.кв.

compos_mat_04.jpg

Рисунок 3. Загружение расчетной схемы. Нагрузка от обратной засыпки емкости

На следующем шаге нам необходимо определить параметры применяемых материалов и назначить их элементам модели. Деформационные и прочностные параметры определены по результатам натурных испытаний и представлены в таблицах 1,2.

Таблица 1. Прочностные характеристики ПКМ

70.Заметка.Таблица 1. Прочностные характеристики ПКМ.jpg

Таблица 2. Упругие характеристики ПКМ

70.Заметка.Таблица 2. Упругие характеристики ПКМ.png

Статический расчет:

После задания всех необходимых характеристик расчетной модели производим статический расчет, определяем расчетные усилия. В результате численного моделирования в каждой точке интегрирования элементов емкости определились все компоненты тензора напряжения. Далее представлены различные варианты визуализации внутренних усилий. В ЛИРА 10 возможен вывод значений усилий и напряжений в пластинах, в том числе главных и эквивалентных напряжений.

compos_mat_07.jpg

Рисунок 4. Продольные напряжения в матрице ПКМ

compos_mat_08.jpg

Рисунок 5. Изополя касательных напряжений в ПКМ.

Проверку резервуара на общую устойчивость выполняем с применением подсистемы «Устойчивость», подробнее в заметке. Для решения задачи общей устойчивости применяется метод итерации подпространств (QR–метод), аналогичный методу вычисления частот и форм собственных колебаний в задачах динамики. Этот метод позволяет определить не только первую, но и высшие формы потери устойчивости и соответствующую им критическую нагрузку. Результат проверки для первой формы потери устойчивости изображен на рис. 6.

compos_mat_09.jpg

Рисунок 6. Поля амплитуд смещений точек емкости для случая первой формы потери устойчивости. Коэффициент запаса по устойчивости – 2.4.

Поверочный расчет ПКМ:

После того, как в элементах КЭ сетки определены действующие напряжения, необходимо выполнить проверку конструкции по прочности или по 1 предельному состоянию. В качестве критерия прочности подобных решаемой нами системе применяют множество различных теорий. В данном случае задача осложняется тем, что ПКМ является анизотропным материалом, то есть материал имеет различные характеристики прочности, жесткости вдоль и поперек волокон. Существует около 15 основных теорий прочности для проверки прочности ПКМ (Хоффмана, Цай-Хилла, Норриса, Пака и др.), и выбор применяемой для анализа теории производит инженер-конструктор, опираясь на особенности конкретной конструкции из ПКМ. В данной заметки мы с вами рассмотрим и применим теорию, которую предложил Цви Хашин [Hashin, Z., “Failure Criteria for Unidirectional Fiber Composites,” Journal of Applied Mechanics, vol. 47, pp. 329–334, 1980.]

Данный критерий позволяет сделать оценку зарождения разрушения армированного ПКМ для разных мод: разрыв волокна, разрушение волокна при сжатии, а также разрушения связующего при растяжении или сжатии.

Для оценки возникновения разрушения ПКМ при растяжении армирования используется величина:

formula 004.jpg

, при наличии растягивающих напряжений σ11 > 0 в направлении армирования.

Разрушение при сжатии армирования оценивается величиной:

formula 005.jpg

, при наличии сжимающих напряжений σ11 < 0 в направлении армирования.

Разрушение матрицы при растяжении определяется величиной:

formula 006.jpg

, при наличии растягивающего напряжения в направлении перпендикулярном армированию σ22 > 0.

Разрушение матрицы при сжатии определяется величиной:

formula 007.jpg

, при наличии сжимающего напряжения в направлении перпендикулярном армированию σ22 < 0.

В приведенных формулах используются следующие обозначения:

XT – прочность ПКМ при растяжении в направлении армирования;
XС – прочность ПКМ при сжатии в направлении армирования;
YT – прочность ПКМ при растяжении в направлении, перпендикулярном направлению армирования;
YС – прочность ПКМ при сжатии в направлении, перпендикулярном направлению армирования;
ST – трансверсальная сдвиговая прочность;
α - коэффициент, определяющий влияние сдвигового напряжения в плоскости 12 на разрушение армирования ПКМ при растяжении.

Таким образом для дальнейшего поверочного расчета необходимо на основе полученных напряжений в ЛИРА 10 выполнить дополнительные вычисления и проверить все критерии прочности, которые приведены выше. В общем случае данную проверку необходимо проделать для всех КЭ расчетной схемы, что при практических расчетах довольно трудозатратно, но безусловно необходимо.

API ЛИРА 10.12:

Для автоматизации проверки элемента по специфической теории прочности пользователь ЛИРА 10 может самостоятельно разработать расширение с использованием открытого API. В версии ЛИРА 10.12 доступна работа API в режиме просмотра результатов. Дальнейшая часть заметки будет посвящена подробностям разработки пользовательских расширений с использованием API ЛИРА 10 и в большей мере предназначена для пользователей программы, которые имеют навыки программирования. Но даже если вы никогда ранее не сталкивались с программированием, вам тоже могут быть интересны возможности, открывающиеся при владении навыками разработки плагинов.

Вначале мы с вами пошагово рассмотрим последовательность действий для создания простого плагина, который будет выводить на экран количество выбранных в модели объектов. А далее перейдем к созданию плагина для проверки конструкции из ПКМ. Пример создания плагина на языке С++ описан в документе "C:\Program Files\Lira Soft\Lira10.12\LiraAPI\LiraAPIHelp.pdf", в данной заметке будет разработан плагин с использованием библиотек .Net, а именно языка С#. В качестве упрощения в заметке будет продемонстрирована разработка в среде SharpDevelop, но рекомендуем в своей дальнейшей работе использовать Microsoft Visual Studio.

Для добавления расширения ЛИРА 10.12 потребуется выполнить два основных действия:

а) разработать расширение *.dll, опираясь на возможности API ЛИРА 10
б) зарегистрировать разработанное расширение в среде ЛИРА 10.12

А) Разработка пользовательского расширения

Создаем новый проект в SharpDevelop – библиотека классов C#, .NET Framework 4.5. В свойствах проекта указываем работу с 64-разрядными системами.

compos_mat_10.jpg

Рисунок 7. Окно создания проекта SharpDevelop

Для корректной работы плагина в проект необходимо добавить минимальный набор ссылок: System, System.Data, System.Windows.Forms и библиотеки Лира "..\Lira Soft\Lira10.12\bin64\FEModel.dll", "..\Lira Soft\Lira10.12\bin64\LiraAPI.dll".

compos_mat_11.jpg

Рисунок 8. SharpDevelop. Дерево проекта

Реализуем в проекте класс TestClass наследованный от интерфейса ILiraAPI, который описан в LiraAPI.dll. Внутри данного класса мы выстраиваем основную логику программы. Далее будет приведен код программы с необходимыми комментариями.

compos_mat_12.jpg

Рисунок 9. SharpDevelop. Рабочее окно проекта

public class ClassStress : ILiraAPI //класс наследованный от ILiraAPI

{

LiraAPI.ReturnCodes LiraAPI.ILiraAPI.ExecuteProgram_Result(IResultLiraAPI result, int nodesCount, int elemCount, List<List<FEModel.Results_Key>> allLoadCases, FEModel.Results_Key loadCase)

{

// nodesCount и elemCount – количество узлов и элементов в расчетной схеме

// loadCase - информация о текущем загружении

// allLoadCases - информация обо всех доступных в задаче загружениях

// result - объект, позволяющий получить таблицы результатов расчета

List<int> elementArray = new List<int>(); //массив индексов узлов или элементов (начиная от 0)

for (int i = 0; i < elemCount; i++) {elementArray.Add(i);} 

List<FEModel.Results_Key> pKeyArr = new List<Results_Key>(); //объект, описывающий загружение

pKeyArr.Add(loadCase); 

FEModel.e_Results_ColumnType[] pColumnArr = null//имена столбцов таблицы результатов

string[] pNameColumns = null//названия столбцов таблицы результатов

//получение таблицы результатов allElements, в данном случае RTT_ELEMENTS, которая содержит информацию об элементах, номер, тип, сечение и т.д. Подробную информацию о доступных типах таблиц вы можете найти в файле LiraAPIHelp.pdf, который копируется на жесткий диск в папку [INSTALLDIR] + "\\LiraAPI" в момент установки ПК ЛИРА 10.12

System.Data.DataTable allElements = result.get_TableResult(e_Results_TableType.RTT_ELEMENTS, elementArray, pKeyArr, ref pColumnArr, ref pNameColumns);

int count=0; //счетчик отмеченных элементов

//перебираем элементы в полученной таблице результатов allElements

foreach (System.Data.DataRow currentElement in allElements.Rows)

{

//проверка – является ли текущий элемент отмеченным. Информацию по названию столбцов в текущей таблице результатов вы можете просмотреть в режиме отладки, например, для таблицы элементов на иллюстрации:

70.Рисунок10.Работа в режиме отладки.png

Рисунок 10. Работа в режиме отладки, просмотр значений переменных

if ((bool)currentElement[16] == true)

{

count++; //если текущий элемент является выбранным, то увеличиваем значение счетчика

}

}

MessageBox.Show("Отмечено элементов: "+count.ToString()); //выводим сообщение

return ReturnCodes.RC_OK;

}

}

Запускаем проект на выполнение, в результате чего в папке проекта будет скомпилирована библиотека test.dll – пользовательское расширение. Размещаем библиотеку по следующему пути "C:\Users\Имя пользователя\AppData\Roaming\Lira Soft\Lira10.12\Addins\test.dll".

Б) Регистрация пользовательского расширения

На следующем этапе нам необходимо зарегистрировать созданное нами расширение в ЛИРА 10, чтобы его можно было запустить на выполнение.

При первом запуске ЛИРА 10.12 создает файл с глобальными настройками:

[ApplicationData]+"\\Lira Soft\\Lira10.12\\VariableEnvironment_x86.xml"
[ApplicationData]+"\\Lira Soft\\Lira10.12\\VariableEnvironment_x64.xml"

Среди прочих настроек в этом файле есть параметр AddinsPath, содержащий путь к папке, в которой должны находиться xml-файлы регистрации расширений. По умолчанию это [ApplicationData]+"\\Lira Soft\\Lira10.12\\Addins".

На примере нашего расширения файл регистрации расширения ([ApplicationData]+"\\Lira Soft\\Lira10.12\\Addins\\test.xml") должен иметь следующую структуру:

structare 23-05-2022 121240.jpg

AddIn содержит атрибут Type, который может принимать одно из трех значений: PRIME, PROLONGATION или ALL. Этот атрибут указывает, в каком режиме будет доступна команда этого расширения: в режиме редактирования исходных данных, в режиме анализа результатов расчета или в обоих режимах. В текущей версии доступно только значение PROLONGATION.

AssemblyPath — абсолютный путь к файлу расширения *.dll.

ImagePath — абсолютный путь к файлу, содержащему изображение для иконки в меню (стандартный размер Width=24, Height=20).

CommandName — имя команды в меню ЛИРА 10.12.

Vendor и VendorDescription — информация о разработчике расширения.

При запуске ЛИРА 10.12 добавляет пункт меню для каждого найденного и удачно прочитанного xml-файла регистрации расширений (рис. 11).

compos_mat_14.jpg

Рисунок 11. Запуск пользовательского расширения

Для тестирования разработанного расширения мы выбираем один элемент в расчетной схеме и запускаем наш плагин на вкладке «Расширения». Запуск необходимо выполнять в режиме просмотра результатов. В результате работы получим на экране сообщение о том, что в схеме отмечен 1 элемент.

В данной части заметки мы разработали небольшое приложение, которое может обращаться к базе данных ЛИРА 10 и получать запрашиваемые данные. Таким образом вы можете разрабатывать достаточно сложные приложения, которые автоматизируют вашу проектную деятельность, например при работе с BIM платформами. Перечень доступных таблиц для запроса вы можете изучить в справке программы по данному пути: "C:\Program Files\Lira Soft\Lira10.12\LiraAPI\LiraAPIHelp.pdf". Через данные запросы вы можете получить доступ к конечным элементам, архитектурным элементам, усилиям, напряжениям в элементах, результатам армирования, проверки стальных элементов и многое другое.

Пользовательское расширение для расчета ПКМ:

С учетом полученных выше знаний разработаем расширение, которое будет выполнять проверку прочности конструкции из ПКМ по критериям Хашина. Создаем новый проект библиотеки C# в Visual Studio и добавляем следующий код:


Показать код

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using LiraAPI;

using FEModel;

using System.Windows.Forms;

namespace hashin

{

public class ClassStress : ILiraAPI

{

LiraAPI.ReturnCodes LiraAPI.ILiraAPI.ExecuteProgram_Result(IResultLiraAPI result, int nodesCount, int elemCount, List> allLoadCases, FEModel.Results_Key loadCase)

{

//если результат фукции вернулся с ошибкой

if (result.Equals(false))

{

MessageBox.Show("IResultLiraAPI return False\n" + ReturnCodes.RC_FAILED.ToString());

return ReturnCodes.RC_FAILED;

}

List elementArray = new List(); //пустой массив с номерами узлов

for (int i = 0; i < elemCount; i++) {elementArray.Add(i);}

List pKeyArr = new List(); //список активных РСН

pKeyArr.Add(loadCase); //выбор текущего загружения/сочетания

FEModel.e_Results_ColumnType[] pColumnArr = null; //массив с именами столбцов

string[] pNameColumns = null; //массив с названием столбцов

System.Data.DataTable allElements = result.get_TableResult(e_Results_TableType.RTT_ELEMENTS,

elementArray, pKeyArr, ref pColumnArr, ref pNameColumns); //получение всех элементов

string appDatafile =

System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData) + "//Lira Soft//Lira10.12//Addins//hashin.csv"; //файл для записи результатов

//очищаем файл с результатами

using (System.IO.StreamWriter file = new System.IO.StreamWriter(appDatafile, false)) {file.Write("");}

foreach (System.Data.DataRow сurrentElement in allElements.Rows) //сортировка элементов

{

float safetyFactor = 0; //начальное значение коэф. использования элемента

if ((bool)сurrentElement[17] == true) //если текущий элемент является фрагментом в рабочем окне

{

Calculate calculate = new Calculate();

float thikness = calculate.Thikness((string)сurrentElement[4]); //вычисляем толщину пластины

int number = (int)сurrentElement[0]; //определяем номер элемента

List numberElement = new List();

numberElement.Add(number-1);

//получаем усилия в элементе

result.get_TableResult(e_Results_TableType.RTT_ELEMENTS_PLATE_RSN_C, numberElement, pKeyArr, ref pColumnArr, ref pNameColumns); //получение усилий для текущего РСН

float Txy; float Nx; float Ny; float Mxy; float Mx; float My;

try {Txy = (float)stressElements.Rows[0][4];} catch {Txy = 0;}

try {Nx = (float)stressElements.Rows[0][1];} catch {Nx = 0;}

try {Ny = (float)stressElements.Rows[0][2];} catch {Ny = 0;}

try {Mxy = (float)stressElements.Rows[0][8];} catch {Mxy = 0;}

try {Mx = (float)stressElements.Rows[0][6];} catch {Mx = 0;}

try {My = (float)stressElements.Rows[0][7];} catch {My = 0;}

float[] stress = calculate.GetStress(thikness, Txy, Nx, Ny, Mxy, Mx, My); //вычисление напряжений по усилиям, Па

float[] ultimateStrength = calculate.GetUltimateStress(); //допускаемые напряжения по результатам испытаний, Па

safetyFactor = calculate.HashinSafetyFactor(stress, ultimateStrength); //вычисление коэф. использования

}

//запись строки с результатом в файл результатов

string str = ((int)сurrentElement[0]).ToString() + ";" + safetyFactor.ToString();

using (System.IO.StreamWriter file = new System.IO.StreamWriter(appDatafile, true))

{

file.WriteLine(str);

}

}

MessageBox.Show("Коэф. использования вычислен!"); //вывод информационного сообщения

return ReturnCodes.RC_OK;

}

}

public class Calculate //для вспомогательных функций и вычислений

{

public Calculate()

{

}

public float Thikness(string line) //определение толщины пластины, чтение информации о профиле

{

string[] strs = line.Split(new[] {'(',')'}, StringSplitOptions.RemoveEmptyEntries);

float thik = ((float)Convert.ToDouble(strs[1]));

return thik;

}

public float[] GetStress(float t, float Txy, float Nx, float Ny, float Mxy, float Mx, float My) //вычисление напряжений

{

float tauXY1 = Txy + 6 * Mxy / (t*t); //нижний

float tauXY2 = Txy; //средний

float tauXY3 = Txy - 6 * Mxy / (t * t); //верхний

float sigmaY1 = Ny + 6 * My / (t * t); //нижний

float sigmaY2 = Ny; //средний

float sigmaY3 = Ny - 6 * My / (t * t); //верхний

float sigmaX1 = Nx + 6 * Mx / (t * t); //нижний

float sigmaX2 = Nx; //средний

float sigmaX3 = Nx - 6 * Mx / (t * t); //верхний

float[] stress = new float[]{tauXY1,tauXY2,tauXY3,sigmaY1,sigmaY2,sigmaY3,sigmaX1,sigmaX2,sigmaX3};

return stress;

}

public float[] GetUltimateStress() //получение характеристик материала

{

string fileUltimateStress = System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData) + "//Lira Soft//Lira10.12//Addins//hashinUltimateStress.csv"; //файл c прочностными параметрами ПКМ (рис. 12)

compos_mat_15.jpg

Рисунок 12. Файл с прочностными характеристиками ПКМ, Па

string[] arrLine = System.IO.File.ReadAllLines(fileUltimateStress, System.Text.Encoding.GetEncoding("windows-1251")); //чтение файла с параметрами прочности, Па

List<float> listStrength = new List<float>(); //лист для хранения информации о прочности

for (int i = 0; i < arrLine.Length; i++)

{

string[] strs; //массив для хранения строки

strs = arrLine[i].Split(new char[] { ';' }); //запись строки в массив

float strength = (float)Convert.ToDouble(strs[1]); //допускаемое напряжение

listStrength.Add(strength);

}

float[] stress = listStrength.ToArray(); //0 strength1+; 1 strength1-; 2 strength2+; 3 strength2-; 4 strength12, Па

return stress;

}

public float HashinSafetyFactor(float[] stress, float[] strength) //коэф. использования по теории Хашина

{

float safetyFactor=0;

//проверка волокна

for (int i = 0; i < 2; i++)

{

if (stress[i+3]>=0)

{

float sf = FiberTensile(stress[i + 3], strength[0], stress[i], strength[4]);

if (sf > safetyFactor) { safetyFactor = sf; }

}

else

{

float sf = FiberCompression(stress[i + 3], strength[1]);

if (sf > safetyFactor) { safetyFactor = sf; }

}

}

//проверка матрицы

for (int i = 0; i < 2; i++)

{

if (stress[i + 6] >= 0)

{

float sf = MatrixTensile(stress[i + 6], strength[2], stress[i], strength[4]);

if (sf > safetyFactor) { safetyFactor = sf; }

}

else

{

float sf = MatrixCompression(stress[i + 6], strength[3], stress[i], strength[4]);

if (sf > safetyFactor) { safetyFactor = sf; }

}

}

return safetyFactor;

}

public float FiberTensile(float sigma11, float strength1t, float tau12, float strength12) //проверка прочности волокна при растяжении

{

float fiberTensile = (sigma11 / strength1t) * (sigma11 / strength1t) + (tau12 / strength12) * (tau12 / strength12);

return fiberTensile;

}

public float FiberCompression(float sigma11, float strength1c) //проверка прочности волокна при сжатии

{

float fiberCompression = Math.Abs(sigma11 / strength1c);

return fiberCompression;

}

public float MatrixTensile(float sigma22, float strength2t, float tau12, float strength12) //проверка прочности матрицы при растяжении

{

float matrixTensile = (sigma22 / strength2t) * (sigma22 / strength2t) + (tau12 / strength12) * (tau12 / strength12);

return matrixTensile;

}

public float MatrixCompression(float si22, float st2с, float tau12, float st12) //проверка прочности матрицы при сжатии

{

float matrixCompression = Math.Abs(si22/(2*st12)* si22/(2*st12)+(st2с/(2*st12)*st2с/(2*st12)-1)*si22/st2с+tau12/st12*tau12/st12);
return matrixCompression;

}

}

}

Далее компилируем библиотеку dll и регистрируем ее по аналогии с тестовым примером, если все действия выполнены корректно, то в ЛИРА 10 на вкладке расширения появится дополнительная функция. Перейдем в результаты расчета по РСН №1 и запустим расширение (рис.13).

compos_mat_16.jpg

Рисунок 13. Запуск пользовательского расширения

В результате работы программы будет создан файл результатов "C:\Users\User1\AppData\Roaming\Lira Soft\Lira10.12\Addins\hashin.csv", который в каждой строке содержит номер элемента и долю использования по максимальному из критериев Хашина (рис. 14). Данный файл можно открыть для просмотра и анализа в программе Excel.

compos_mat_17.jpg

Рисунок 14. Файл в формате csv, результаты проверки элементов из ПКМ

Вывод результатов расчета:

Если необходимо визуализировать результаты расчета на схеме в ЛИРА 10, которые получены с применением пользовательского расширения и API, то можно воспользоваться возможностями функции «Пользовательские результаты», подробнее о данной функции Вы можете прочитать в разделе 3.9.1 «Руководства пользователя ЛИРА 10» и в заметке по ссылке Расчет каменных конструкций. Использование скриптов пользовательских результатов

Перейдем в специальные результаты и добавим скрипт для вывода результатов из файла csv (рис.15).

compos_mat_18.jpg

Рисунок 15. Окно создания скрипта пользовательских результатов. Скрипт для чтения результатов из файла

Запускаем скрипт командой «Отобразить». В результате работы в окне модели будут выведены все результаты проверки в виде мозаики (рис. 16). Также на мозаике можно отобразить числовые значения полученного коэффициента использования элементов из ПКМ по теории Хашина. Как видим из результатов, что несущая способность элементов резервуара обеспечена.

compos_mat_19.jpg

Рисунок 16. Пользовательские результаты. Мозаика коэф. использования элементов

В данной заметке мы с вами рассмотрели основы создания пользовательских расширений с использованием открытого API ЛИРА 10, в том числе разработали прикладную программу для проверки конструкции из ПКМ.

Данный пример иллюстрирует, как использование API ПК ЛИРА 10.12 может повысить эффективность выполняемых вами задач, решить специфические задачи проверки прочности элементов, решить задачи связки ЛИРА 10 с BIM платформами, электронными таблицами, задачи, связанные с поиском оптимального решения конструкции, определения объемов материалов.


Как вам материал? Задать вопрос или обсудить заметку можно на нашем форуме

Перейти на форум


Самостоятельно выполнить небольшие тестовые задачи и сравнить результаты
вы можете в бесплатной демоверсии.

Скачать демоверсию ПК ЛИРА 10Подробнее о базовом курсе
Инновации и сотрудничество: ЛИРА софт на международном семинаре в Satbayev University (г. Алматы, Казахстан)
ЛИРА софт приняла участие в знаковом событии - международном форуме, посвященный устойчивости зданий к сейсмическим угрозам в Satbayev University.
05 марта 2024
BIM-Факультет АСКОН ЛИРА 10: Конструкторские расчёты модели из Renga
Приглашаем принять участие в обучающем онлайн-проекте - BIM-факультет АСКОН. ЛИРА софт выступила одним из спикеров и партнеров проекта.
05 марта 2024
ЛИРА софт на Russian BIM Days: Навигатор по устойчивым конструкциям
Присоединяйтесь к ЛИРА софт на серии вебинаров Russian BIM Days, организованных ИЕСОФТ совместно с Академией Осознанного Проектирования.
22 февраля 2024
ЛИРА софт на BuildingSkinRussia 2024: Практики моделирования фасадных систем
Алексей Колесников, технический директор ЛИРА софт, выступит 29 февраля в 13:30 на площадке Amber Plaza в рамках конференции «IT в архитектуре и строительстве. Вызовы 2024».
20 февраля 2024
Все новости
Информационное моделирование и проектирование многоэтажного жилого здания с использованием российского программного обеспечения
Выполнено формирование информационной модели многоэтажного
жилого здания в BIM-системе Renga. Проведен экспорт модели и расчет конструктивной
системы здания в ПК Лира 10.12. Представлены результаты моделирования и
проектирования.
12 февраля 2024
Реализация модели контактного слоя при расчете адгезионного соединения с использованием метода конечных элементов
В большинстве опытов по испытанию адгезионных соединений измеряется средняя адгезионная прочность. Данная величина вычисляется как отношение разрушающей нагрузки к площади склейки. Подобный подход подразумевает равномерное распределение касательных напряжений. Исследователи давно обнаружили, что средняя адгезионная прочность соединения является сильной функцией геометрических [1] и физико-механических параметров модели и, следовательно, делает малоинформативными и несопоставимыми экспериментальные данные, выполненные на отличающихся образцах. Малочисленные результаты по измерению касательных напряжений по площади склейки с использованием преимущественно поляризационно-оптических методов [2] показывают, что распределение напряжений является нелинейной функцией. При этом наблюдается концентрация напряжений у торцов модели. В связи с этими фактами возникает необходимость детального изучения напряженно-деформированного состояния адгезионных соединений.
06 июня 2019
Оценка точности нелинейного статического метода анализа сейсмостойкости сооружений
В статье рассмотрено практическое применение методики нелинейного статического анализа сейсмостойкости зданий и сооружений. Произведен расчет одноэтажной стальной рамы нелинейным статическим и нелинейным динамическим методами. В результате анализа полученных результатов расчета показана значимость высших форм колебаний и необходимость анализа их влияния на реакцию системы.
06 февраля 2018
Напряженно-деформированное состояние коррозионно - поврежденных железобетонных элементов при динамическом нагружении
С помощью современного программно-вычислительного комплекса  ЛИРА 10.6 выполнена сравнительная оценка напряженно–деформированного состояния  не поврежденного и коррозионно-поврежденного железобетонного элемента при динамическом и статическом нагружении. Проанализировано   влияния ослабленного коррозией бетонного участка сжатой зоны на перераспределение напряжений в сечении.
25 января 2018
Все публикации
BIM-Практикум 2023. ЧАСТЬ 12 «BIM-МОДЕЛИ КМ И КМД: РАСЧЕТ И АНАЛИЗ СТРОИТЕЛЬНЫХ КОНСТРУКЦИЙ»
Покажем взаимодействие между ПК ЛИРА 10.12 при передаче данных в ПК Renga.
20 сентября 2023
Особенности работы в ПК ЛИРА 10.12 и ModelStudio CS при проектировании зданий промышленно-гражданского строительства
Участники вебинара узнают, как обмениваться данными и экономить время на создании расчетных моделей в ПК ЛИРА 10.12, используя уже существующие модели из ModelStudio CS.
04 сентября 2023
Разбор применения различных типов нагрузок в статических задачах
На вебинаре вы научитесь где и как правильно использовать тот или иной способ задания нагрузки. Будут рассмотрены полезные типы нагрузок, которые, возможно, вами никогда не использовались.
12 июля 2023
Разбор примеров из практики по расчету на сейсмические воздействия
Рассмотрим реальные примеры уже построенных или проектируемых объектов
22 марта 2023
Все записи вебинаров