Блог о программном обеспечении

Зачем оно нужно?
Публиковать для себя разные вещи, чтобы потом не искать их у себя по разным папкам.
И, конечно, - делиться открытой информацией с другими.
Коротко по темам Caelinux - самый инженерный дистрибутив линукс;
CalculiX - мощная программа для расчетов по МКЭ;
OpenOffice Basic - то что легче выучить и затем эффективно использовать
Maxima - символьная математика от Вильяма Шеллтера, профессора Остинского университета. Все прочее - понемногу.

Кстати про BIM

Все такие модные концепции глубоко порочны. Автоматизация работы кого? Архитектора, чертежника или расчетчика? Так их работа в сумме всегда стоила доли процента. Тем не менее то, что в конечном итоге строится - важно со всех точек зрения, например с художественной.
То есть, несомненно специалист должен владеть компьютерными программами в том числе, чтобы быстрей прорабатывать различные варианты. Но замыслы и варианты возникают в голове прежде всего, оценочные расчеты если архитектор владеет экономикой стоительства (а он должен владеть) тоже не проблема. Поэтому толпы архитеторов, маструбирующих на какие то программки - это смешно. Это не дух старой школы, не уважаю абсолютно. Пишите отзывы.

Online CAD

Пример онлайн-када
https://www.onshape.com/

Вполне работоспособный уже и масса пользователей.
Solidworks провел свое первое бета-тестирование (для США во всяком случае).

Расчетные сервисы
https://www.simscale.com/

Для расчетов требуется мощный компьютер, который стоит дорого. Если сложные расчеты единичны, то данная идея имеет наибольший смысл.

Другая идея, которая идет в паре с онлайн работой - магазин приложений.
Конечно всякий, кто пытался что то разрабатывать для инженеров, сталкивался с фактом, что 99% это не вперлось совершенно. Ни о какой коммерческой популярности речи обычно не идет, это не игрушка в которой можно кидаться птичками и какашками, понятная всему множеству пользователей магазина.
Если вы что то решили разрабатывать для инженеров - делайте это opensorce (желательно под лицензией GPL 2.0 и выкладывайте на sf.net)

Будущий CAD на мой взгляд будет сочетать не только разработку моделей, чертежи и расчеты, но и организацию производства, поступления заказов и сбыт с логистикой. Это сделает возможным эффективное распределенное производство, в котором полноправным участником выступает не завод (эффективный только при выпуске тысяч единиц), а простой умелец со станком в гараже или обычный сварщик с приспособлениями. Вопрос, конечно, как оценить того или иного участника применительно к конкретному заказу. Вероятней всего рулить таким CAD-ом будет штат наблюдателей за сетью.

Что это даст? Например - полную загруженность (ценовую эффективность) участников, отсутствие необходимости в больших инвестициях в производство, взаимозаменяемость исполнителей (что плюс для надежности и сроков).
Такого рода CAD вероятней всего будет бесплатным по настоящему, не с целью завлечения клиентов и не по причине отсутствия менеджмента продаж (как в случае opensource), а деньги разработчикам будут поступать как процент от заказов и плата за вступление в сеть. Скорее всего это будут приличные деньги, потому что практические заказы всегда дороже софта. Объединить таким образом можно производственную сеть в пределах разумной транспортной доступности, то есть США, Евросоюз и небольшие страны тут выигрывают моментально.
В РФ такое возможно только наверно для укрупненных регионов и местностей типа Москва-подмосковье.

Так или иначе, такая постановка вопроса (CAD как средство организации производства и источник поступления заказов) мне пока не встречалась. Хотя скорее всего эта идея не нова по сути.

Всякого рода online CAD имеют небольшой смысл, потому что работать на локальном компьютере намного удобней. Смысл есть только в коммуникациях и управлении этими коммуникациями, так что рано ли поздно все придет именно к тому, о чем я пишу выше.








Зависимость натяжения вант от температуры

Данная задача - сугубо практическая, потому что ванты с одной стороны весьма чувствительны к температуре, а с другой стороны в проекте КМ согласно норм требуется указывать натяжение в температурном диапазоне.
Вот тут с пользователем Ильнур развернули большую тему по канатам.
Итак, поехали.
Относительное изменение хорды оттяжки ε=ΔL/L связано с напряжением уравнением нити:

где P=p/A, Н/м^3 – поперечная нагрузка, Н/м, отнесенная к площади А, м^2; индекс "0" относится к величинам исходного состояния.
Примем за исходное состояние – состояние при температуре t и обозначим Δt=t-t0. При изменении температуры ствол деформируется на величину α·Δt, что повлечет за собой изменение длины оттяжки на ΔL = α·Δt·(sinβ)^2, где β – угол наклона оттяжки к горизонту. С изменением температуры поперечная нагрузка (собственный вес) не меняется, поэтому можно принять:
P = P0 = γ = g·cosβ /A,
где g – погонный вес, Н/м; А – площадь ванты.
Подставляя указанные величины в уравнение нити и производя преобразования, получаем разрешающее уравнение, позволяющее скорректировать напряжение с учетом изменения температуры:
или
где
Действительный корень уравнения определяется формулой:
Определив из уравнения величину напряжения при заданном перепаде температур определяем как обычно - умножением напряжения на площадь.
Указанная методика рекомендована в книге
Petersen, Chr. (1970): Guyed masts and chimneys, Verlag Ernst & Sohn, Berlin-München-Düsseldorf, Germany.
Ниже приведен код пользовательской функции для OOo Calc

Function otemp(T, T0, N0, A, g, E, L, beta, h)
' Возвращает тяжение стальной оттяжки мачты, тс, при заданной темературе T
'Описание величин
't = Заданная температура
'T0 - Начальная температура (среднегодовая температура воздуха)
'N0 - Начальное тяжение ванты, тс, при температуре T0
'A = Площадь оттяжки, мм2
'g = Погонный вес отттяжки, кгс/м
'E = Модуль Юнга оттяжки, кгс/см2
'L = Длина оттяжки, м
'beta = Угол наклона оттяжки к горизонту в градусах
'h = Высота ствола под оттяжкой
'Переобозначение переменных и перевод всех величин в систему кгс, см, рад.

N0=N0*1000
A=A/100
g=g/100
L=L*100
beta = beta*3.1416/180
h=h*100

alpha = 0.000012
Gamma = g * Cos(beta) / A
Delta = t - T0
s0 = N0 / A
C = Gamma ^ 2 * L ^ 2 * E / (24 * s0 ^ 3)
B = (1 - C - alpha * Delta * E * (1 - (h / L) * Sin(beta)) / s0)
z = 1 / 6 * (108 * C + 8 * B ^ 3 + 12 * Sqr(81 * C ^ 2 + 12 * C * B ^ 3)) ^ (1 / 3) + 2 / 3 * B ^ 2 / ((108 * C + 8 * B ^ 3 + 12 * Sqr(81 * C ^ 2 + 12 * C * B ^ 3)) ^ (1 / 3)) + 1 / 3 * B
'Искомое усилия тяжения в тс
N = z * s0 * A / 1000
otemp = N
End Function

Пример использования функции:

По ссылке с форума

https://www.tychina.pro/

Хороший сайт, очень аккуратный, но классический советский курс сопромата - омерзительный. Причем удивительно, потому что на русском языке предостаточно хороших статей и монографий, равно как и специалистов тоже. По математике есть отличные книги (например Натансон - краткий курс)
И также удивительно то, что за десятилетия сменился конституционный строй и все такое, а как читали на уровне достижений 30х годов про "допускаемые напряжения", так и продолжают.
К слову в 30е были хорошие учебники и курсы. Всегда всем рекомендую этот: https://dwg.ru/dnl/5326
Экспериментальный и передовой на момент написания, очень четкое и актуальное изложение.
Для стержневых систем, да будет жить в веках: https://dwg.ru/dnl/5225
Относительно хороший новый учебник (с уклоном в мостостроительство)
https://dwg.ru/dnl/5219

К слову сказать, действительно не понятно. Что дает курс сопротивления материалов с точки знаний о материалах и о их сопротивлении и как он способствует например пониманию современных нормативных документов (не 30х годов). Некоторые вещи типа предельных состояний или той же малоцикловой усталости не даются вообще.
Все что в среднем помнит человек из сопромата (ключевого технического предмета) - то, что понять это нельзя в принципе, а можно только зубрить по главам. И какое то правило то ли левой руки, то ли правой ноги - для построения эпюр в РГР.

Дистрибуция приложений в linux

По какой то причине, часто встречается заблуждение, что под линукс невозможно делать и распространять программы, потому что "линуксов много" и это почти невозможно учесть все версии данной операционной системы.
На самом деле - много дистрибутивов, которые отличаются внешней оболочкой, но все они работают на одном и том же ядре, и программы в основном не требуется тестировать на каждом дистрибутиве в отдельности.

Итак, рассмотрим некоторое приложение, например консольное - без графического интерфейса. Например, такое как calculix CCX
 Внешне для пользователя на экране данное приложение выглядит как файл (без расширения exe как в Windows). Этот файл запускается через консоль, вместе с файлом модели и в результате расчета производит много других файлов с результатами расчета.
Данная расчетная программа не работает сама по себе на "одном ядре"
у нее есть внешние библиотеки. В линукс они складированы в недрах системы, закрытых для пользователя системных папках. Это файлы с расширением .so (аналог dll в Windows). Работают они аналогично dll, кстати в Windows та же программа выглядит как один exe файл и несколько dll, которые складируются в одной папке с exe
Так вот, в Linux, в принципе можно вытащить so файлы и складировать их в одной папке с экзешником - эффект будет тот же. Папку с файлами можно будет переносить с одного дистрибутива на другой, где они будут успешно работать.
Можно пойти дальше и при компиляции экзешника посредством GCC добавить ключ -static
в этом случае получится экзешник с уже вшитыми в него библиотеками (весить он будет больше на размер всех библиотек)
Статически линкованный файл будет работать на "голом ядре" в любом линуксе, даже, возможно, очень старом.
В linux есть команда file, позволяющая получить информацию об экзешике, является ли он statially linked или dynamically linked (то есть с библиотеками отдельно в системных разделах)

Чуть сложнее обстоит дело с программами, имеющими графический интерфейс. Ну, в общем, все различие в том, что экзешник линкован с библиотеками графического интерфейса. Но некоторые такие библиотеки настолько общие, что они наверняка окажутся любом дистрибутиве (так, что и не потребуется до устанавливать).
Например программы скомпилированные в среде Lazarus имеют в linux зависимость от GTK2, это очень общая и распространенная по умолчанию библиотека. Каких то усилий по портабелизации в данном случае можно не предпринимать.

Известно, что при наличии внешних библиотек могут случаться конфликты между версиями ("ад зависимостей") и в этом случае сложно бывает заставить приложение работать. Linux изначально - серверная операционная система, предназначенная для более-менее профессиональных пользователей, поэтому "ад" для начинающего - суть стандартная решаемая ситуация для продвинутого.
Но при использовании linux в качестве десктопной системы, зависимости могут причинять массу неудобств (особенно когда много программ или их версий)

Поэтому распространение софта в портабельном виде, вместе с библиотеками - наиболее распространенный способ.
В linux есть масса примеров распространения софта (в том числе очень сложного, коммерческого, типа  Siemenc NX или GiD pre- postprocessor) или открытого, как Salome-Platform, в портабельном виде, то есть когда все библиотеки идут вместе с приложением и складируются отдельно от системы.
Обычно файлы пакуют в так называемые run файлы - что то вроде setup exe в Windows. Иногда - просто папки в архиве, как qcad или Z88Aurora хотя в этом случае иногда нужно либо запустить скрипт, либо с помощью нескольких команд разрешить файлам и библиотекам выполняться.

В общем, портабельный софт в линукс - обыденная задача. С некоторых пор она даже проще решается чем в windows, где надо до устанавливать Net или среду выполнения программ на C++

Более серьезные сложности могут возникнуть при распространении приложений для разных архитектур (32 и 64 битных), в этом случае компиляторы разные и работа программы может немного отличаться (требуется отдельное тестирование)
Но это - отдельная тема, которая сути вопроса не касается





3д печать зданий

В продаже (в РФ) уже появились серийные принтеры для 3д печати цементными смесями.

http://specavia.pro/articls/2238/

Пока данная технология формообразования очень ограничена в применении, но большая часть имеющихся проблем вполне решаема в обозримом будущем.

Какие потенциальные выгоды это дает?

1) Архитектурное разнообразие - практически Гауди в массовое строительство. Конечно, Гауди - прежде всего вкус и то, что не дается одними технологиями, но мода на разнообразные детали может снова вернуться.

2) Транспортные расходы. Это довольно существенная в сумме всех этапов часть затрат. Вполне возможно, что промышленные принтеры начнут оснащать оборудованием для производства наполнителя смеси из более-менее произвольного "подножного" грунта. Если предположить, что экскаватор выкапывает подвал или бассейн, а затем робот формирует из полученного материала основной массив здания, то это может дать очень существенную экономию, даже если речь идет только о стенах. Конечно вяжущее и добавки все равно придется подвозить на площадку.
Как и в первом случае, этот факт может вернуть назад старую и очень хорошую архитектурную особенность - а именно большую тепловую инерцию ограждающих конструкций и подвалы, выполняющие роль теплообменника с массивом грунта среднегодовой температуры (то есть прохлада летом и тепло зимой). Использование местных материалов - не новая вещь, например землебитный Гатчинский дворец, хотя не для всякой площадки это подходит.

Существующие проблемы 3д печати в основном следующие:

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

- программная часть 3д печати пока слишком примитивна.

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




-





Начало работы в linux - несколько советов от меня

Тут читая разного рода источники по этому поводу, я решил сформулировать свои собственные советы, как подходить к этому вопросу.
Не буду касаться, что лучше а что нет и не буду ничего утверждать категорически, но вот советы будут такие.

1. Какой дистрибутив выбрать? Это тема для холливаров, а их разводить я не хочу. Я бы сказал для начинающего - выбирайте ubuntu основной стабильной ветки (на данный момент 14). Не kubuntu, не xubuntu и не edubuntu - а именно основной, поскольку он поддерживается Canonical лучше всего и наилучшим образом работает ... с точки зрения начинающего. Не выбирайте никаких минтов - не все то, что рекламируется на каждом углу, является руководством для вас. Это мое персональное мнение. 
PS caelinux в данном случае исключение - выбирать его стоит, если вы хотите попробовать открытые инженерные и математические программы. Правда, в настоящее время нет проблем установить и использовать их где угодно, например Salome-MECA распространяется в портабельном виде для любого дистрибутива.  

2. Ubuntu основной ветки имеет так называемый Unity интерфейс без меню Пуск. Вернее меню пуск есть, но оно реализовано в виде поисковой строки.  Если впечатаете "sys" то будет вам и System Monitor и System Settings. Ярлыки программ показаны сбоку и количество открытых окон соответствует количеству точек на ярлыке. переход между окнами - по клику на ярлык. В общем освоить не так сложно на самом деле. И когда привыкнете - поймете что это удобно на самом деле. Только в filter results можно из категорий убрать все кроме программ, а так - ничего реально раздражающего.
PS Unity интерфейс удачно оптимизирован с точки зрения сокращения движений мышью.  Все действия с операционной системой концентрируются в левом верхнем углу. Удобство ощущается в том случае, если вы захотите поработать на ноутбуке полулежа например.

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

4. Программы устанавливать удобней всего из Ubuntu Software Center и из терминала с использованием ppa (если гуглите как установить из ppa, то набирайте гугл запрос типа "sudo ubuntu ..."
Вообще способов установки масса, но перечисленные - самые простые.
Вот например как обновить adobe flash (гуглится одна строчка из сервиса askubuntu)

sudo apt-get update && sudo apt-get install -y flashplugin-installer


5. Windows приложения могут "идти под вайн", а могут и не идти. Я бы посоветовал установить не вайн, а настоящий коробочный виндоус (например XP) под virtaulbox. Это отдельная тема - как, не сложно, но есть детали - не буду касаться. При этом автоматически обновлять в виндоус ничего не надо (и вообще сеть можно отрубить после установки основных программ, благо что интернет работает из линукса, а вирусам в основном кроме интернета прийти неоткуда, если вы флешки в виртуалбоксе втыкать не будете. Вот так ваш добрый старый виндоус будет работать в отдельном окошке со всем софтом.