탄성, 소성 상태에서의 모멘트-곡률 그래프 표기

2020. 6. 29. 12:08공학,과학/매트랩,파이썬,오픈시스(tcl) 코딩

반응형

예전에 내가 다음 직장에서는 더 이상 프로그램 지원을 못받을 것을 고려해 파이썬을 익혀둘려고 한다고 얘기를 하였다.

대학에서부터 익혀온 것은 C언어와 매트랩 기본기 정도인데 C언어로 모든 코딩을 짜려면 전공자 수준의 실력이 필요하고, 매트랩은 사실 공학 전용 툴박스가 사용하기 쉽지만 연간 사용료가 비싸기 때문에 파이썬을 익혀둘 필요를 느꼈다. 

 파이썬의 경우 무료 언어이면서 사람들이 다양한 라이브러리를 만들어 제공하고 있고 그 중에는 매트랩이나 R 같은 다른 언어에서 사용하는 툴을 모방해서 만든것들이 많기 때문에 일정수준은 거의 유사하게 사용가능하기 때문이다.

 그런데 막상 익혀보니 기본 문법들만 익혀두면 크게 다를것 없고 적당한 라이브러리 검색만 가능하면 됐는데, 그걸 알고나니 굳이 지금 정리해두면서 익혀둘 필요가 없다고 다시 느끼었다.

 

그래서 아무래도 글을 잘 안쓰게 되는듯하고... 무엇보다 간단한 수준의 예시 파일을 만들어 정리하는게 전공자는 아니면서 적당히 알고있는 수준에선 비체계적이기에 오히려 더 어렵고 귀찮은건 어쩔 수 없는 노릇이다. 아마 여기 카테고리는 좀 더 방치 될 느낌이다.

 

import numpy as np
import matplotlib.pyplot as plt
 
E= float(210*(10**3)) #%탄성계수 210GPa = 210*10^3 N/mm^2
b= float(50)   #직사각형 단면의 폭
h=float(150)  #직사각형 단면의 높이
y=float(h/2)  #직사각형의 단면 중심에서 외곽까지의 거리
f=float(350)   #항복강도 350MPa=350N/mm^2
ey= float(f/E) #항복 변형률
I=float(b*(h**3)/12#단면2차모멘트
cy= float(ey/y) #탄-소성 경계에서의 곡률
My=float(E*I*cy) #항복모멘트, 곡률=My/EI 이용
Mp=float(f*b*(h**2)/4#전소성모멘트 응력*Z=M 이용  f*b*(h^2)/4
 
 
def m1(curvature1):
    return E*I*np.array(curvature1)
 
def m2(curvature2):
    return E*ey*b*(y**2)-(1/3)*E*b*(ey**3)/np.array(curvature2)**2
 
curvature1=np.arange(0,cy,0.000001)
curvature2=np.arange(cy,0.0002,0.000001)
plt.plot(curvature1,m1(curvature1),curvature2,m2(curvature2))
plt.show()
 
cs

파이썬 코딩 예시

파이썬 코드 실행 결과

 

clear; clc; close all
 
E= 210*10^3; %탄성계수 210GPa = 210*10^3 N/mm^2
b=50;   %직사각형 단면의 폭
h=150;  %직사각형 단면의 높이
y=h/2;  %직사각형의 단면 중심에서 외곽까지의 거리
f=350;   %항복강도 350MPa=350N/mm^2
ey= f/E; %항복 변형률
I=b*h^3/12; %단면2차모멘트
cy= ey/y; %탄-소성 경계에서의 곡률
My=E*I*cy; %항복모멘트, 곡률=My/EI 이용
Mp=f*b*(h^2)/4; %전소성모멘트 응력*Z=M 이용  f*b*(h^2)/4
 
curvature= 0:0.000001:cy; %탄성 곡률 범위 설정
moment1=my(E,I,curvature);
plot (curvature,moment1,'b'); 
hold on
curvature= cy:0.000001:0.0002; %소성 곡률 범위 설정
moment2=mp(E,ey,b,y,curvature);  %함수 적용
plot (curvature,moment2,'r');             %그래프 출력
hold on
plot([0,cy],[My,My],'k:');
hold on
plot([0,cy],[Mp,Mp],'k:');
hold on
plot([cy,cy],[0,My],'k:'); 
hold on
printmp="Mp="+Mp;
printmycy="\leftarrow My="+My+"curvature at initial yielding"+cy;
text(0,Mp,printmp);
text(cy,My,printmycy);
 
title('곡률-모멘트');
xlabel('곡률 1/mm');
ylabel('모멘트 N*mm');
legend('탄성범위','소성범위','location','southeast');
function moment = my(E,I,curvature)  %함수 설정.
    moment = E*I*curvature;
end
function moment = mp(E,ey,b,y,curvature)  %함수 설정.
    moment = E*ey*b*(y^2- (1/3)*E*b*(ey^3)./(curvature.^2);
end
cs

매트랩 코딩 예시

매트랩 코드 실행 결과

 

 중간에 나오는 탄성경계에서의 곡률에 관련한 식은 아래처럼 유도가 된다. 점심시간에 간단히 적은 내용이고 악필이지만 공대생이라면 이해 할 수 있을것이라 생각된다.

탄성 상태에서의 곡률 유도(부재 중립축을 기준으로 하면 y에 -부호가 추가되어야 하지만 코딩 방식이나 계를 보는 관점에 따라 +로 둘 수도 있으니 부호는 고려하지 않았다.)

반응형