<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF130%3ACalculiX</id>
		<title>LXF130:CalculiX - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF130%3ACalculiX"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF130:CalculiX&amp;action=history"/>
		<updated>2026-05-13T19:15:16Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF130:CalculiX&amp;diff=11895&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление, иллюстрация</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF130:CalculiX&amp;diff=11895&amp;oldid=prev"/>
				<updated>2011-04-22T08:42:04Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление, иллюстрация&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Популярно о моделировании==&lt;br /&gt;
&lt;br /&gt;
: Пусть вы и не инженер – свободное ПО позволяет заглянуть в тайны этой профессии всем желающим. В качестве примера '''Леонид Алифанов''' построит модель и выполнит расчет плотины СаяноШушенской ГЭС.&lt;br /&gt;
&lt;br /&gt;
В семействе открытых пакетов программ для моделирования и расчетов методом конечных элементов (МКЭ) немало славных представителей. Есть такие промышленные тяжеловесы, как ''Code_Aster®'' от Электрисите де Франс, есть и небольшие удачные программы, «заточенные» авторами для специфических инженерных и научных задач.&lt;br /&gt;
&lt;br /&gt;
К сожалению, многие проекты такого рода со временем затухали, оставаясь без поддержки или интереса со стороны пользователей. Но практически безотказным условием их успешности является авторство в них практикующих инженеров, создающих расчетные инструменты для собственных нужд. Один из таких пакетов – ''CalculiX'' (http://www.calculix.de) разработан двумя немецкими конструкторами авиадвигателей – Гвидо Дхондтом [Guido Dhondt] и Клаусом Виттигом [Klaus Wittig].&lt;br /&gt;
&lt;br /&gt;
Пакет создавался для прочностных и тепловых расчетов деталей и узлов авиадвигателей, поэтому основной упор в нем сделан на объемные конечные элементы, причем наиболее точные – с промежуточными узлами.&lt;br /&gt;
&lt;br /&gt;
===Немного о ''CalculiX''===&lt;br /&gt;
&lt;br /&gt;
Кроме объемных, в ''CalculiX'' имеются также элементы для плоских задач (плосконапряженное и плоскодеформированное состояние), стержневые и оболочечные. Касаемо двух последних типов стоит заметить, что реализованы они немного нетривиально – на основе все тех же «объемников». Поэтому результаты расчета над стержнями чувствительны к соотношению габаритов отдельных КЭ, и для получения правильного результата нужно использовать не слишком вытянутые элементы. Оболочечные, переделанные из объемных, выдают результаты по теории толстых плит и считают только напряжения (внутренние усилия, по которым подбирается армирование железобетонных конструкций, не выдаются).&lt;br /&gt;
&lt;br /&gt;
С ''CalculiX'' связан единственный в своем роде интернетпроект http://www.onlinefeasolver.com – с его помощью желающие могут не только рассчитать конструкцию или деталь, но и сделать т.н. топологическую оптимизацию изделия. Загрузив бесформенный кусок материала, вы получите конструкцию оптимальной формы: специальный скрипт анализирует силовые линии и, обеспечив сопротивление прилагаемым нагрузкам, удаляет избыток материала.&lt;br /&gt;
===Зачем все это?===&lt;br /&gt;
&lt;br /&gt;
Может ли вообще понадобиться простому смертному рассчитывать лопатки турбин в авиадвигателе? Ну, даже если он и захочет это сделать, будет лучше поучиться лет 5 и набираться опыта лет 10. Но бывают случаи, когда хочется «пощупать» конструкцию самому. В конце концов, если любая профессия – в действительности заговор против непосвященных, то иногда все же хочется представлять себе контуры этого «заговора» в общих чертах.&lt;br /&gt;
&lt;br /&gt;
Кто не обсуждал в последнее время надежность плотины СаяноШушенской ГЭС? Можно ли было предположить, что книга Валентина Брызгалова – скучное, на первый взгляд, производственное издание «Из опыта создания и освоения Красноярской и СаяноШушенской гидроэлектростанций» – станет цитируемой повсеместно?&lt;br /&gt;
&lt;br /&gt;
Это гидротехническое сооружение поражает воображение уже своим общим описанием: «напорный фронт образует уникальная бетонная арочногравитационная плотина высотой 245 м, длиной по гребню 1066 м, шириной по основанию 105,7 м, а по гребню – 25 м …». 245 метров – как две красноярские телебашни с антеннами, поставленные одна на другую!&lt;br /&gt;
&lt;br /&gt;
Каждый решал в школе элементарные задачки по физике, в которых силу делят на площадь, получают давление и сравнивают его с допустимым. Школьный курс дает самое приблизительное представление о прочностных расчетах, увязывая вопрос о прочности конструкции с действующими внутри нее напряжениями (давлением внутренних сил в материале). Задача и состоит в определении их в общем случае.&lt;br /&gt;
&lt;br /&gt;
Что же такое метод конечных элементов, реализованный в ''CalculiX'' и в тысячах подобных программ? Объемная конечно-элементная модель представляет собой некое тело, заполненное тетраэдрами или призмами, образующими сетку. Каждый элемент имеет узлы, установленные как минимум в угловых точках, причем в сплошном массиве для смежных элементов эти узлы общие. Для тела определяются граничные условия – прикладываются известные силы, давления и закрепления.&lt;br /&gt;
&lt;br /&gt;
Для каждого «элементарного кусочка» составляются уравнения, учитывающие его равновесие и зависимости между неизвестными деформациями и напряжениями. В результате объединения систем уравнений и расчета, эти неизвестные напряжения на элементарных площадках внутри тела могут быть определены.&lt;br /&gt;
&lt;br /&gt;
===Приступим к работе===&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF130_41_1.jpg|300px|Рис. 1.]] Рис. 1. Отображение точек и линий, ограничивающих фигуру — сечение плотины.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Итак, восстановив в памяти самые элементарные сведения из школьной физики, в данной статье мы с вами попробуем подойти к плотине не с голыми руками, но вооружившись ''CalculiX''. Если даже вы и не освоите программу, то, по крайней мере, сможете понять общую логику рассуждений и посмотреть на результаты. Пока вы компилируете исходные тексты или скачивае те RPM-пакет с SourceForge.net, я запущу специальную сборку Ubuntu с предустановленными программами для моделирования с http://www.caelinux.com.&lt;br /&gt;
&lt;br /&gt;
''CalculiX'' – пакет, состоящий из двух модулей: препостпроцессора ''CGX'' и решателя ''CCX''. Приступим к построению так называемой твердотельной модели, внутри которой будут заключены конечные элементы. Этот процесс осуществляется в ''CalculiX CGX'' (CalculiX Graphics). Для запуска программы в режиме построения, наберем в консоли&lt;br /&gt;
&lt;br /&gt;
 cgx -b &amp;lt;имя_файла&amp;gt;.fbd&lt;br /&gt;
&lt;br /&gt;
Возникнет графическое окно CGX (рис. 1). Нам нужно ввести точки, затем соединить их линиями, сгенерировать внутри контура поверхность и вытянуть ее вдоль дуги в массивную арку. Процесс построения может осуществляться интерактивно (вводом команд при открытом графическом окне и последующей записью в FBD-файл в рабочем каталоге '''CalculiX''') или в текстовом редакторе. Детально описывать действия и команды я не буду, тем более что руководства для начинающих, в том числе и на русском языке, доступны в Сети. А вот на коде, который описывает модель, остановлюсь несколько подробнее.&lt;br /&gt;
&lt;br /&gt;
 pnt p1	-10	 0	 0&lt;br /&gt;
 pnt p2	-10	 245	 0&lt;br /&gt;
 pnt p3	 15	 245	 0&lt;br /&gt;
 pnt p4	 19.1	 163.3	 0&lt;br /&gt;
 pnt p5	 39.3	 81.7	 0&lt;br /&gt;
 pnt p6	 105.7	 0	 0&lt;br /&gt;
 pnt p7	 600	 0	 0&lt;br /&gt;
 pnt p8	 600	 1	 0&lt;br /&gt;
 seqa seq PNT p3 p4 p5 p6&lt;br /&gt;
 LINE L001 p1 p2 48&lt;br /&gt;
 LINE L002 p2 p3 4&lt;br /&gt;
 LINE L003 p3 p6 seq 48&lt;br /&gt;
 LINE L004 p6 p1 12&lt;br /&gt;
 gsur S001 + BLEND - L004 - L003 - L002 - L001&lt;br /&gt;
 seta sec s S001&lt;br /&gt;
 swep sec dam rot p7 p8 102 100&lt;br /&gt;
 elty all he20&lt;br /&gt;
 mesh all&lt;br /&gt;
&lt;br /&gt;
Команды '''pnt''' – это ввод точек в декартовой системе координат (размеры в метрах взяты приблизительные). '''LINE''' – линии (три отрезка и один сплайн по точкам, определенным командой '''seqa'''). В конце каждой команды стоит число, задающее количество конечных элементов вдоль геометрического примитива «линия». Команда '''gsur''' отвечает за построение поверхности, а '''swep''' – это вытяжка поворотом вокруг вектора p7–p8 на угол 102°. Последние две строчки: '''elty''' – задание типа элемента и '''mesh''' – команда на генерацию сетки.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF130_41_2.jpg|300px|Рис. 2.]] Рис. 2. Конечно-элементная модель плотины после вытяжки.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
То, что получилось в результате, вы можете увидеть на рис. 2. Для отображения заданных примитивов в ''CGX'' используются команды '''plot''' и '''plus''', вводимые при активном графическом окне. Например '''plot e all''' означает «отобразить все элементы», а '''plus nа all''' – «добавить к изображению узлы с их номерами». В общем, если вы все это проделаете, то процесс построения в общих чертах будет вам понятен.&lt;br /&gt;
&lt;br /&gt;
Сразу же представляю себе реплику неискушенного читателя: «В XXI веке строить модели командами – да еще в заумном текстовом файле!» Возражения на этот счет вот какие: во-первых, команды выбраны таким образом, чтобы удобно было генерировать их автоматически из скриптов для построения параметрических моделей. Ведь инженер заранее не знает точные параметры своей конструкции или детали, а перестраивать модель, каждый раз тыкая указателем мыши в лубочные формы на экране, утомительно. Во-вторых, особенности построения модели предопределяют конечно-элементную сетку, которую генерирует ''CGX'' – она качественней, в смысле точности, автоматических треугольников и тетраэдров, создаваемых другими аналогичными программами, и этот факт в некоторых задачах может иметь важное значение.&lt;br /&gt;
&lt;br /&gt;
===На экспорт===&lt;br /&gt;
&lt;br /&gt;
Итак, сетка построена, координаты узлов и элементов известны и могут быть записаны в отдельный файл; но работа в ''CGX'' пока не завершена. Модуль ''CalculiX CCX'' (решатель) работает с сетками в специфическом текстовом формате. Узлы задаются координатами по номерам (сквозная нумерация не обязательна); в заголовке указывается имя группы узлов, которой пользователь оперирует в дальнейшем. Именованные группы узлов и элементов необходимы для задания нагрузок и закреплений, и они также формируются в ''CGX'' и записываются в текстовые файлы командой '''send''' с заданными ключами.&lt;br /&gt;
&lt;br /&gt;
Созданию именованных групп служат команды '''qadd''' и '''qrem'''. Перед созданием группы из определенных примитивов следует отобразить их через '''plot/plus'''. Для примера продемонстрирую создание группы '''fix1''' узлов подошвы плотины.&lt;br /&gt;
&lt;br /&gt;
 plot n all&lt;br /&gt;
 qadd fix1&lt;br /&gt;
&lt;br /&gt;
После ввода последней команды на кончике указателя мыши возникает маленький квадратик, которым в графическом окне можно захватывать и выделять нужные узлы, точки и т. д. Чтобы увеличить его размеры, нужно дважды последовательно установить курсор в диагонально противоположные точки воображаемого прямоугольника выделения и дважды ввести '''r''' с клавиатуры (рис. 3). Далее, если вы собираетесь выделять сразу много примитивов, попадающих внутрь рамки, введите с клавиатуры '''a''', после чего отметьте необходимое, перемещая прямоугольник по экрану и вводя ключевой символ требуемого вам примитива (для узлов – '''n''', для элементов – '''e'''; для поверхностей элементов – '''f''', и т. д.). Команда завершается вводом '''q'''. Если в группу при выделении попали лишние примитивы, они могут быть удалены аналогично, при помощи команды '''qrem'''.&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF130_42_1.jpg|300px|Рис. 3.]] Рис. 3. Выделение узлов модели с по мощью рамки.&lt;br /&gt;
&lt;br /&gt;
[[Изображение:LXF130_42_2.jpg|300px|Рис. 4.]] Рис. 4. Отображение напряжений в ''CGX''.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Отобразить созданную группу можно, например, так:&lt;br /&gt;
&lt;br /&gt;
 plus n fix1 g&lt;br /&gt;
&lt;br /&gt;
где '''g''' – это green (зеленый). В ''CGX'' использованы следующие цветовые ключи: '''r''' – red (красный), '''g''' – зеленый, '''k''' – black (черный), '''b''' – blue (голубой), '''m''' – magenta (пурпурный).&lt;br /&gt;
&lt;br /&gt;
Отправить созданную группу (зафиксированные номера узлов, которые будут использованы в дальнейшем) в текстовый файл можно командой&lt;br /&gt;
&lt;br /&gt;
 send fix1 abq nam&lt;br /&gt;
&lt;br /&gt;
===В плоском случае===&lt;br /&gt;
&lt;br /&gt;
Возвратимся к нашему примеру: давайте сначала просчитаем плоскую задачу. Мысленно вырежем из плотины метровый сегмент и зададим основную для него гидростатическую нагрузку со стороны верхнего бьефа и закрепления по подошве. Гидростатическое давление, которое увеличивается с глубиной, вычисляется как произведение удельного веса воды на глубину погружения рассматриваемой площадки.&lt;br /&gt;
&lt;br /&gt;
Наберем в текстовом редакторе файл следующего содержания:&lt;br /&gt;
&lt;br /&gt;
 *INCLUDE, INPUT=all.msh&lt;br /&gt;
 *INCLUDE, INPUT=fix1.nam&lt;br /&gt;
 *MATERIAL,NAME=EL&lt;br /&gt;
 *ELASTIC&lt;br /&gt;
 0.25E+05, 0.200000&lt;br /&gt;
 *DENSITY&lt;br /&gt;
 0.024&lt;br /&gt;
 *SOLID SECTION,ELSET=Eall,MATERIAL=EL,&lt;br /&gt;
 *BOUNDARY&lt;br /&gt;
 Nfix1,1,2&lt;br /&gt;
 *STEP&lt;br /&gt;
 *STATIC&lt;br /&gt;
 *DLOAD&lt;br /&gt;
 Eall,GRAV,1.,0.,-1.0,0.&lt;br /&gt;
 *DLOAD&lt;br /&gt;
 1,P4,2.3479&lt;br /&gt;
 …&lt;br /&gt;
 24,P4,0.1021&lt;br /&gt;
 *NODE FILE&lt;br /&gt;
 U&lt;br /&gt;
 *EL FILE&lt;br /&gt;
 S&lt;br /&gt;
 *END STEP&lt;br /&gt;
&lt;br /&gt;
Команда '''*INCLUDE''' здесь подключает к расчету файл сетки '''all.msh''' и файл '''fix1.nam''' с группой узлов '''Nfix1''' для задания закреплений по подошве. '''*ELASTIC''' – задает упругий материал с модулем Юнга Е=2,5·104 МПа и коэффициентом Пуассона μ=0,2; '''*DENSITY''' – объемный вес бетона (в МН/м3); '''*SOLID SECTION''' – это присвоение заданных параметров группе элементов '''Eall''' (в кото рую входят все элементы); '''*STEP ... *END STEP''' – начало и конец описания рассматриваемого шага нагрузки (варианта нагружения, в данном случае – единственного). '''*BOUNDARY''' – здесь задаются закрепления либо вынужденные перемещения групп узлов; '''*DLOAD''' – активируется учет объемных сил от собственного веса элементов, и этой же командой прикладывается гидростатическое давление (на пример, 1,P4,2.3479 – давление в МПа на поверхность P4 элемента номер 1 и так далее). '''*NODE FILE, *EL FILE''' – команда на выдачу определенных результатов (узловых перемещений и напряжений в элементах).&lt;br /&gt;
&lt;br /&gt;
Дадим в консоли команду&lt;br /&gt;
&lt;br /&gt;
 ccx plane&lt;br /&gt;
&lt;br /&gt;
и затем, когда расчет будет окончен, запустим модуль ''CGX'' в режиме постпроцессора:&lt;br /&gt;
&lt;br /&gt;
 cgx -v plane.frd&lt;br /&gt;
&lt;br /&gt;
Отображаем с помощью контекстного меню напряжения '''SYY''', в МПа, действующие по площадкам, параллельным основанию, и получаем картинку, представленную на рис. 4. Положительные напряжения соответствуют растяжению, отрицательные – сжатию. Растягивающие напряжения получаются слева, по напорной грани. Бетон на растяжение работает плохо, и в этой зоне после наполнения водохранилища возникли трещины, из-за того, что при проектировании расчеты выполнялись приближенными методами и растягивающие напряжения были недооценены проектировщиками. Это та самая проектная ошибка, о которой много писали и говорили – те трещины, которые впоследствии заделывали специальными смолами приглашенные французские специалисты.&lt;br /&gt;
&lt;br /&gt;
Решенная нами плоская задача рассматривает вариант, при котором плотина работает только как гравитационная. Если бы покакой-то причине плотина не смогла передавать горизонтальные усилия на берега, то трещины прорезали бы массив бетона на всю толщину, что привело бы по меньшей мере к ее сдвигу под нагрузкой, так как при наличии трещин проектные предположения о величине коэффициента трения и о сцеплении с основанием не работают. В то же время вода, просачиваясь в трещины, создавала бы дополнительное давление, направленное вверх, против веса дамбы. В связи с этим, излишне говорить, что вес намерзшего этой зимой льда, которым нас пугали в последнее время, на самом деле не только не приносит вреда, но даже полезен, поскольку увеличивает пригруз и суммарный момент сил, удерживающих плотину от опрокидывания. Вы можете это проверить, построив модель и приложив вертикальную нагрузку самостоятельно. Само собой, даже напрашивается необычное рацпредложение – наморозить льда как можно больше и сохранять его летом, теплоизолировав снаружи и пропустив внутри по трубкам фреон (ну или что-то в этом роде).&lt;br /&gt;
&lt;br /&gt;
А вот высказывание о том, что плотина работает «как распорка» (точнее, как арка, то есть держится за счет передачи распора на берега) действительности полностью соответствует, в связи с чем во многих учебниках «гравитационная» в названии сооружения уже и не упоминают.&lt;br /&gt;
&lt;br /&gt;
Также становится понятным заявление специалистов ГЭС о том, что другая известная проблема – с водобойным колодцем, не выдерживающем паводка – не столь актуальна, как это себе представляют (колодец – отдельное сооружение, а небольшой подмыв основания не особенно угрожает арочной работе).&lt;br /&gt;
&lt;br /&gt;
===Влияние берегов===&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF130_43_1.jpg|300px|Рис. 5.]] Рис. 5. Отображение результатов в ''CalculiX CGX''.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Теперь посчитаем пространственную модель, то есть попробуем учесть работу плотины как арки. За неимением точных данных, я просто удалил «на глазок» элементы по берегам, жестко заделав плотину по бокам и в основании. Расчетный INP-файл следует переделать. Поверхностная гидростатическая нагрузка была задана мной на заранее отмеченные и сохраненные по верхности объемных конечных элементов типа '''C3D20''':&lt;br /&gt;
&lt;br /&gt;
 *DLOAD&lt;br /&gt;
 *INCLUDE,INPUT=f0.dlo&lt;br /&gt;
 ...&lt;br /&gt;
 *INCLUDE,INPUT=f12.dlo&lt;br /&gt;
&lt;br /&gt;
Здесь '''f0.dlo''' и так далее – файлы со значениями нагрузок, записанные из ''CGX'' и сохраненные в рабочем каталоге.&lt;br /&gt;
&lt;br /&gt;
Производим расчет и отображаем напряжения SYY. Как мы видим (рис. 5), растягивающие напряжения по напорной грани остаются.&lt;br /&gt;
&lt;br /&gt;
Порядок величин перемещений и «арочных» сжимающих напряжений (в ''CalculiX'' они просматриваются как главные напряжения SP3, наименьшие с учетом знака или наибольшие сжимающие со знаком «минус») в моем расчете приблизительно совпал с опытными значениями, полученными в результате измерений. Однако, поскольку сведений, приведенных в открытых источниках, недостаточно для построения точной модели, я не буду останавливаться на анализе этих величин.&lt;br /&gt;
&lt;br /&gt;
Во время проектирования плотины, численные методы, такие как МКЭ, уже внедрялись во многих странах, однако инженеры-гидротехники их проигнорировали. Статический расчет производился так называемым «неполным методом пробных нагрузок (арок-консолей)». За счет арочного эффекта планировалось снять всего 25 % от расчетного гидростатического давления.&lt;br /&gt;
&lt;br /&gt;
Вообще, стоит отметить, что приведенный расчет, выполненный в линейной постановке без учета трещин, совместной работы с основанием и т. д., дает очень приблизительные, оценочные результаты. Они не помогут ответить на вопрос, насколько надежно или нет бетонное сооружение. О существовании приближенной к действительности математической модели плотины СШГЭС можно прочесть в уже упомянутой книге Валентина Брызгалова.&lt;br /&gt;
&lt;br /&gt;
Назначение данной статьи состоит лишь в популяризации открытого программного обеспечения, но особенно важно то, что использование таких пакетов, как ''CalculiX'', позволяет оценивать техническую информацию как положено – с точки зрения элементарных научных знаний, и не забивать голову фантастическими измышлениями, гуляющими в прессе.&lt;br /&gt;
&lt;br /&gt;
===Сделаем уточнение===&lt;br /&gt;
&lt;br /&gt;
На самом деле, выдаваемые ''CalculiX'' максимальные значения растягивающих напряжений не верны. И дело не в программе. В точке, где они достигаются (рис. 4), исследуемые напряжения бесконечно велики, как значение функции &amp;lt;math&amp;gt;y=x^{-1/2}&amp;lt;/math&amp;gt; при ''x'' → 0. Это так называемая «особая точка». Такие же точки имеются в вершинах трещин, поэтому для исследования их стабильности используются другие величины, которыми оперирует сравнительно молодая наука – механика разрушения. Факт тот, что в данном случае серьезные растягиваю щие напряжения имеются на значительном объеме массива плотины, и кроме трещины на контакте с основанием есть и другие – выше него, схематически показанные на рис. 4.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>