Перейти к основному содержанию
EDU-MMCS
Вы используете гостевой доступ (Вход)

Конечноэлементные технологии и новые материалы (факультатив)

  1. В начало
  2. Курсы
  3. Весенний семестр
  4. Математика, механика
  5. КТиНМ
  6. Тема 1
  7. Лабораторная работа №2. Решение статической задачи...

Лабораторная работа №2. Решение статической задачи теории упругости средствами FreeFem++

Требуемые условия завершения
Открыто с: пятница, 28 февраля 2025, 00:00
Срок сдачи: пятница, 7 марта 2025, 00:00

Рассмотрим задачу для тела, изображённого на рисунке Плоская задача ТУ

Область состоит из двух материалов. Правый нижний отрезок [2, 4] жестко закреплён, на левом [-2, 0] - задана нагрузка. Область состоит из двух материалов. Внешнее кольцо состоит из стали, внутреннее - из меди. Задачу решает код в файле static.edp. Программа FreeFem написана на языке C++ и синтаксис входного файла во многом на него похож.

Начинается он с определения вещественных констант. Определим модули Юнга и коэффициенты Пуассона для стали и для меди. 

real Esteel = 210e3;
real nuSteel = 0.3;

real Ecopper = 110e3;
real nuCopper = 0.35;
Как видно, переменная определяется так же, как и в языке C++ (указываем тип переменной, указываем её имя, задаём значение). Далее определяем коэффициенты Ляме для двух материалов.
real lambdaSteel = Esteel*nuSteel / ((1+nuSteel)*(1-2*nuSteel));
real muSteel = Esteel / (2*(1+nuSteel));

real lambdaCopper = Ecopper*nuCopper / ((1+nuCopper)*(1-2*nuCopper));
real muCopper = Ecopper / (2*(1+nuCopper));
Далее идёт построение контуров области, определение внешних границ и границы раздела между двумя материалами.
border C1(t=0, pi){x=3*cos(t); y=3*sin(t); label=1;} // внешняя полуокружность
border C21(t=-3, -2){x=t; y=0; label=21;} 
border C22(t=-2, -1){x=t; y=0; label=22;}
border C3(t=0, pi){x=-cos(t); y=sin(t); label=3;} // внутренняя полуокружность
border C41(t=1, 2){x=t; y=0; label=41;} 
border C42(t=2, 3){x=t; y=0; label=42;} 
border interface(t= 0,pi ){x=-2*cos(t); y=2*sin(t); label=5;}  // граница раздела
В записи border C1(t=0, pi){x=3*cos(t); y=3*sin(t); label=1;}:

  • Ключевое слово border используется для определения границы или части границы геометрической области;
  • C1 - имя, которое присваивается данной границе. Вы можете выбрать любое имя;
  • t - параметр, который пробегает значения от 0 до pi;
  • x=3*cos(t); y=3*sin(t); - это параметрическое уравнение кривой, которое описывает форму границы;
  • метка (label) присваивает уникальный номер этой границе;

Далее создаётся конечноэлементная сетка для области

mesh Th = buildmesh(C1(50) + C21(5) + C22(5) + C3(50)+ C41(5) + C42(5)+ interface(50));
Th -то имя переменной, которое будет хранить созданную сетку. Тип переменной — mesh, что означает, что это двумерная сетка. C1(50) - означает, что граница разбивается на 50 сегментов, которые в дальнейшем будут использованы при разбиении области.
Чтобы убедиться в правильности построения области, используем
plot(Th, wait=true, ps="mesh_with_materials.eps");
Далее переходим к слабой постановке задачи
fespace Vh(Th, P2); // определяет пространство квадратичных конечных элементов на сетке Th.
Vh u, v; // неизвестные функции
Vh uu, vv; // пробные функции
Определяем деформации
// Macro
real sqrt2=sqrt(2.);
macro epsilon(u1,u2) [dx(u1),dy(u2),(dy(u1)+dx(u2))/sqrt2] //
 // The sqrt2 is because we want: epsilon(u1,u2)'* epsilon(v1,v2) = epsilon(u): epsilon(v)
macro div(u,v) ( dx(u)+dy(v) ) //
Определяем неоднородные механические парамеры
Vh lambda= x*x+y*y < 4 ? lambdaCopper : lambdaSteel;
Vh mu= x*x+y*y < 4 ? muCopper : muSteel;
Записываем слабую постановку
solve lame([u, v], [uu, vv])
 = int2d(Th)(
 lambda * div(u, v) * div(uu, vv)
 + 2.*mu * ( epsilon(u,v)' * epsilon(uu,vv) )
) - int1d(Th, 21)(
 1*vv
 )
 - int1d(Th, 22)(
 1*vv
 )
 + on(41, u=0, v=0)
 + on(42, u=0, v=0)
 ;
int1d - для задания поверхностной нагрузки, on - для задания закрепления.

Строим графики:
 // Plot
 real coef=100;
 plot([u, v], wait=1, ps="lamevect.eps", coef=coef); // векторное поле
 // Move mesh
 mesh th1 = movemesh(Th, [x+u*coef, y+v*coef]); 
 plot(th1,wait=1,ps="lamedeform.eps"); // деформированная сетка
Графики напряжений
// деформации
Vh exx = dx(u), eyy = dy(v), exy = (dy(u) + dx(v)) / 2;

// напряжения
Vh sxx = lambda * (exx + eyy) + 2*mu*exx;
Vh syy = lambda * (exx + eyy) + 2*mu*eyy;
Vh sxy = 2*mu*exy;

// графики
plot(sxx, wait=true, value=true, fill=true, cmm="Sigma_xx");
plot(syy, wait=true, value=true, fill=true, cmm="Sigma_yy");
plot(sxy, wait=true, value=true, fill=true, cmm="Sigma_xy");
Варианты:
Савицкий - 1
Терентьев - 2
Узлов - 3
Филатов - 4
  • static.edp static.edp
    1 марта 2025, 07:54
  • variants.pdf variants.pdf
    1 марта 2025, 08:54
◄ Лабораторная работа №1. Равновесие фермы
Лабораторная работа №3. Решение задачи о равновесии балки средствами Ansys ►
Пропустить Навигация
Навигация
  • В начало

    • Страницы сайта

      • Мои курсы

      • Теги

    • Мои курсы

    • Курсы

      • Весенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

          • КТиНМ

            • Тема 1

              • ЗаданиеЛабораторная работа №1. Равновесие фермы

              • ЗаданиеЛабораторная работа №2. Решение статической задачи...

              • ЗаданиеЛабораторная работа №3. Решение задачи о равновеси...

              • ЗаданиеЛабораторная работа №4. Расчёт рамы в программе ANSYS

              • ЗаданиеЛабораторная работа №5. Кривой стержень

              • ЗаданиеЛабораторная работа №6. Модальный анализ, гармонич...

              • ЗаданиеЛабораторная работа №7. Осесимметричные задачи

              • ЗаданиеЛабораторная работа №8

              • ЗаданиеЛабораторная работа №9. Условия симметрии

          • Уч_практ_2к (мех)

          • Стох. мод.

          • БД-25

          • Уч_практ_2к (мат)

          • Производственная практика

          • Проект (второй курс)

          • Теормех 1

          • МСС

          • ФМП и ВМ

          • Компьютерные науки

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

        • ОИИ

      • Осенний семестр

        • Прикладная математика и информатика

        • Фундаментальная информатика и ИТ

        • Математика, механика

        • Педагогическое образование

        • Магистратура

          • Разработка мобильных приложений и компьютерных игр

        • Аспирантура

        • Вечернее отделение

        • Другое

      • Воскресная компьютерная школа

        • Пользователь компьютера плюс

        • Пользователь прикладных программ

        • Программирование I ступень

        • Программирование II ступень

        • Программирование III ступень

        • Архив

      • Воскресная математическая школа

        • Открытое тестирование РНОМЦ и мехмата ЮФУ - 2025

        • Олимпиадная математическая школа

        • Повышение квалификации

        • Доступная математика

        • Лаборатория математического онлайн-образования мех...

        • Осенняя универсиада

        • Научно-практическая конференция

        • ВМШ

          • ВМШ - 24

        • Летняя олимпиадная математическая школа РНОМЦ и ме...

      • Государственная итоговая аттестация

      • Дополнительное образование

      • Олимпиады

      • Видеолекции

      • Разное

      • Архив курсов

      • Заочная школа мехмата ЮФУ

Служба поддержки сайта
Вы используете гостевой доступ (Вход)
КТиНМ
Сводка хранения данных
Скачать мобильное приложение Яндекс.Метрика