- •010800.62 Механика и математическое моделирование
- •Реферат
- •Глава 1. Задача контактного кручения для стержня
- •1.1 Постановка задачи
- •1.2 Разностная схема
- •1.3 Построение разностной сетки
- •Глава 2. Плоская задача «чистого» контактного кручения
- •2.1 Постановка плоской задачи.
- •2.2 Аналитическое решение
- •2.3 Визуализация полученных результатов
- •Заключение
- •Список использованной литературы Литература
Заключение
Дипломная работа посвящена изучению контактной задачи теории упругости - упругой деформации стержня при кручении. В первой главе работы рассматриваются необходимые сведения о пространственной деформации. Во второй главе исследуется плоская деформация.
На основании материала изложенного в двух главах
Получили вычислительную технологию решения подобных задач, использующую простой итерационный метод.
В случае однородного кручения удалось получить достаточно простое аналитическое решение .
Решили конкретную задачу деформации стольного стержня при кручении.
Анализ показал, что численное решение точно описывает процесс. На основании полученных значений были построены графики зависимости окружного смещения, касательных и нормальных напряжений от координат.
Исследования в данной области очень актуальны, поскольку решение подобных задач представляет большой интерес в машиностроении, авиастроении и других отраслях промышленности.
Приложение1.
program k1
! задача о кручении стержня
real Rd,del,eps,dro,dth,ae,aw,an,as,ap,sum,dx,phi0,nu,mu,lambda,E,sp,sps,uw,b,ru,sigma0,dphi
integer i,j,k,N,M,L,M0
real r(51),ro(51),phi(201),th(201)
real v(201,51),u(201,51),r1(201,51),phi1(201,51),theta(201,51),v0(201,51),u0(201,51),srf(201,51),sff(201,51)
Rd = 5.0*10.0**(-2)
pi = 3.1415926
M1 = 51
N = 51
M = 201
L = 40000
del = 10.0**(-3)
eps = 10.0**(-2)
dx = 5.0*10.0**(-4)
phi0 = acos(1.0-dx/Rd)
E = 2.1*10.0**11
b = 1.0/(1.0-2.0*nu)
ru = 1.0*10**(0)
uw = 1.0*10.0**(-4)
nu = 0.3
mu = E/(2.0*(1.0 + nu))
lambda = nu*E/((1.0+nu)*(1.0-2.0*nu))
sigma0 = 4.0*10.0**(8)
ro(1) = alog(Rd + del)
ro(N) = alog(del)
dro = (ro(N) - ro(1))/(N-1)
th(1) = alog(eps)
th(M1) = alog(pi/2.0 + eps)
dth = (th(M1) - th(1))/(M1-1)
do j = 1,N
ro(j) = ro(1) + (j-1)*dro
r(j) = Rd+del - exp(ro(j))
end do
do i = 1,M
do j = 1,N
r1(i,j) = r(j)
end do
end do
do i = 1,M1
th(i) = th(1) + (i-1)*dth
phi(i) = exp(th(i)) - eps
end do
dphi = phi(2) - phi(1)
do i = 1,M1
phi(2*M1-i) = pi - phi(i)
end do
do i = 1,2*M1-2
phi(i+2*M1-1) = pi + phi(i+1)
end do
do i = 1,M
do j = 1,N
phi1(i,j) = phi(i)
end do
end do
do i = 1,M1
if (phi(i) >= phi0) then
M0 = i-2
exit
end if
end do
! начальное приближение
do i = 1,M
do j = 1,N
v(i,j) = 0.0
u(i,j) = 0.0
theta(i,j) = 0.0
u0(i,j) = 0.0
end do
end do
do k = 1,L
! Граничные условия на дуге окружности
do i = 1,M0
u(i,N) = (u(i,N-1) + (r(N)-r(N-1))*sigma0/mu)*r(N)/r(N-1)
end do
do i = M0+1,2*M1-1-M0-1
u(i,N) = (u(i,N-1) - (r(N) - r(N-1))*((v(i+1,N) - v(i-1,N))/(phi(i+1)-phi(i-1))*r(N)))*r(N)/r(N-1)
end do
do i = 2*M1-1-M0,2*M1-1+M0
u(i,N) = (u(i,N-1) + (r(N)-r(N-1))*sigma0/mu)*r(N)/r(N-1)
end do
do i = 2*M1-1+M0+1,M-M0-1
u(i,N) = (u(i,N-1) - (r(N) - r(N-1))*((v(i+1,N) - v(i-1,N))/(phi(i+1)-phi(i-1))*r(N)))*r(N)/r(N-1)
end do
do i = M-M0,M
u(i,N) = (u(i,N-1) + (r(N)-r(N-1))*sigma0/mu)*r(N)/r(N-1)
end do
do i = 1,M
u(i,N) = (u(i,N-1) + (r(N)-r(N-1))*sigma0/mu)*r(N)/r(N-1)
end do
! Граничные условия в начале полярной системы координат
sum = 0.0
do i = 1,M
sum = sum + u(i,2)/M
end do
do i = 1,M
u(i,1) = sum
end do
do i = 2,M-1
do j = 2,N-1
ae = (2.0/(r(j)-r(j-1))+1.0/r(j))/(r(j+1)-r(j-1))
aw = (2.0/(r(j+1)-r(j))-1.0/r(j))/(r(j+1)-r(j-1))
as = (1.0+b)*2.0/((phi(i)-phi(i-1))*(phi(i+1)-phi(i-1)))
an = (1.0+b)*2.0/((phi(i+1)-phi(i))*(phi(i+1)-phi(i-1)))
ap = ae + aw + as + an + 1.0/r(j)**2
sps = 0.0
u(i,j) = u0(i,j) + ru*((ae*u(i,j-1) + aw*u(i,j+1)+as*u(i-1,j)+an*u(i+1,j)+sps)/ap - u0(i,j))
end do
end do
do j = 2,N-1
ae = (2.0/(r(j)-r(j-1))+1.0/r(j))/(r(j+1)-r(j-1))
aw = (2.0/(r(j+1)-r(j))-1.0/r(j))/(r(j+1)-r(j-1))
as = (1.0+b)*1.0/phi(2)**2
an = (1.0+b)*1.0/((phi(2)-phi(1))*phi(2))
ap = ae + aw + as + an + 1.0/r(j)**2
sps = 0.0
u(1,j) = u0(1,j) + ru*((ae*u(1,j-1) + aw*u(1,j+1)+as*u(M-1,j)+an*u(2,j)+sps)/ap - u0(1,j))
end do
! условие периодичности
do j = 2,N-1
u(M,j) = u(1,j)
end do
do i = 1,M
do j = 1,N
u0(i,j) = u(i,j)
end do
end do
end do
do i = 1,M
do j = 2,N-1
srf(i,j) = mu*((u(i,j+1)-u(i,j-1))/(r(j+1)-r(j-1)) - u(i,j)/r(j))
end do
end do
do i = 1,M
srf(i,1) = mu*((u(i,2)-u(i,1))/(r(2)-r(1)) - u(i,2)/r(2))
end do
do i = 1,M
srf(i,N) = mu*((u(i,N)-u(i,N-1))/(r(N)-r(N-1)) - u(i,N)/r(N))
end do
do i = 2,M-1
do j = 2,N
sff(i,j) = (lambda+2.0*mu)/r(j)*((u(i+1,j)-u(i-1,j))/(phi(i+1)-phi(i-1)))
end do
end do
do j = 2,N
sff(1,j) = (lambda+2.0*mu)/r(j)*((u(2,j)-u(M-1,j))/(2.0*dphi))
end do
do j = 2,N
sff(M,j) = (lambda+2.0*mu)/r(j)*((u(2,j)-u(M-1,j))/(2.0*dphi))
end do
sum = 0.0
do i = 1,M
sum = sum + sff(i,2)/M
end do
do i = 1,M
sff(i,1) = sum
end do
open(1, file = 'r.txt')
write(1,*) N
do i = 1,N
write(1,*) r(i)
end do
open(1, file = 'phi.txt')
write(1,*) M
do i = 1,M
write(1,*) phi(i)
end do
open(1, file = 'u.txt')
write(1,*) N
do j = 1,N
write(1,*) u(10,j)
end do
open(1, file = 'a.txt')
write(1,*) M
write(1,*) N
do i = 1,M
do j = 1,N
write(1,*) r1(i,j)
write(1,*) phi1(i,j)
write(1,*) u(i,j)
end do
end do
open(1, file = 'srf.txt')
!write(1,*) N
do i = 1,M
do j = 1,N
write(1,*) srf(i,j)
end do
end do
open(1, file = 'sff.txt')
!write(1,*) N
do i = 1,M
do j = 1,N
write(1,*) sff(i,j)
end do
end do
open(1, file = 'constants.txt')
write(1,*) sigma0
write(1,*) mu
write(1,*) Rd
end