안녕하세요~~ 공일남입니다. 몇 일 사이에 좀 바쁜 일이 있다보니 업로드가 많이 늦어졌군요 ㅎㅎ
요새 코로나가 다시 발병을 하고 있어서 독일의 상황도 안좋아져만 갑니다..
오늘 6천명 새로 생겼대요.. ㅎ
그런걸 보면 우리나라는 참 대처를 잘한거 같네요^^^^
우리나라 홧팅!!
그러면 다시 이어서
.
...
코드를 살펴보도록 할건데
1번부터 설명을 드리자면
먼저 GUI를 만들게 되면
function varargout = 파일명(varargin) 그다음 주석이 있고
이 부분은 건들이시면 안되고 이 부분을 건너 뛴뒤
여기 밑에 보시면 숫자 적혀있는 부분 있죠?? 저게 바로 Edit 랍니다. 여기서 주의하셔야할 부분은요 네이밍을 해줘야하는데, 이는
다음에 보시는 것 처럼~ 마우스 오른쪽 버튼 클릭!! 그리고 GUIDE에서 열기를 하시면
요로코롬~ 생긴 창이 하나 뜰겁니다. GUI 만들어 보신 분들은 다 아실테지만 ㅎㅎ
그 중에서도 요기 보이시나요 중요한 부분은 Text부분이 아니라 기능이 있어야하는 Edit 부분이기 때문에 마우스 오른쪽 클릭!!
속성 인스펙터에 들어가 보시면은
요러한 창이 하나 뜹니다 ㅎㅎㅎㅎ
저기 밑에 "Tag"라고 보이시나요? 저게 바로 저 Edit 창에 대한
네이밍이라고 보시면 됩니다. 그래서 GUI 프로그래밍을 하실때
저 이름만이 인식이 되는 겁니다 프로그래밍 상에서.
저는?
.
.
"HSP1"이라고 정해놨네요 ㅎㅎㅎㅎㅎ
(한 1년 전에 했던거라 가물가물~~)
자!!!
그럼
본격적으로 코드를 보실까용
코드를 보실때는 마찬가지로 GUIDE에서 열기로 들어간다음
그 부분에 대해서
>>>>>>>>>>>>>>>>>>>>>>
여기서 보시는 바와 같이 콜백보기 클릭!
Callback 클릭!
그러면 다음과 같은 것들을 보실 수 있습니다
아무고토 없죠???? ㅎㅎㅎㅎ
프로그래밍을 안한게 아니라 이 부분에 저는 계산된 값을 쓰는 용도로 사용할거라 아무것도 안적어도 괜찮아요.^^
그래서 다음 과 같이
만들어 주시고
그림에서 보시는 것 처럼 Edit 칸을 차례대로 만들어 줍니다
이렇게 하면 어느정도 얼추 레이아웃이 만들어 진 거 같은데요 ㅎㅎ
그럼 뭘 해야하냐!?
가장 중요한 부분은 저 "Berechnen" , 즉 Calculate 파트 입니다. 즉 계산을 하는 파트인거죠
이 부분을 보겠습니다 ㅎㅎ
자 똑같이 콜백보기> CallBack 들어가보면
자 여기가 바로 메인파트 계산 부분입니다. ㅎㅎ
다소 복잡해보일 수 도 있지만요
전혀... 복잡하지 않습니다!!
간단한 수식들을 옮겨놓은거에 불과하거든요 ㅎㅎ
차근 차근 보시죠
먼저 a1=str2double(get(handles.a_edit,'String'));이라고 되있는 부분은
a1을 정의하는 건데 어디서 가져올거냐면
get함수를 통해 a_edit에 적혀있는 정보 중에 'String' (문자형)을 가져오는 겁니다.
a1는 저기위에 2. 부분의 a를 가리키는 것입니다^^
그럼 보시는것 처럼
a1, b2,c1 을 정의할 수 있겠군요
이 부분은 초기 응력상태입니다 ㅎㅎ
중요한 부분은 다음 계산 파트이겠죠???
독일어로 적혀있어서 죄송하지만
Spannungsgleichungen 은 응력변환 방정식을 말하는 거구요
특정각도로 회전했을때 응력이 어떻게 변하는지? 를 알려주는 방정식이죠
이 부분의 유도는 각자...? 알아서///?
시간이 된다면 제가 포스팅해보도록 할게요.
근데 다들 잘 아실거라고 생각합니다. 하하
sigma_1'1은 "a2"라고 저는 명시를 했구요
sigma_11은 "a1" sigma_22는 "b1"
sigma_12는 "c1"
W는 돌아간 각도
그래서 이렇게 저는 옮겨 적었구요.
a2=round((a1+b1)/2+(a1-b1)/2*cosd(2*W)+c1*sind(2*W)) 그리고
b2=(a1+b1)/2-(a1-b1)/2*cosd(2*W)-c1*sind(2*W) 그리고
c2=round(c1*cosd(2*W)-(a1-b1)/2*sind(2*W)) 가 되겠네요^^
이어서 위 식들을 그대로 옮겨주면^^
(전혀 어렵지 않다고 말씀 드렸죠???)
HSP1 = (a1 + b1) / 2 + sqrt (((a1-b1) / 2) ^ 2 + c1 ^ 2)
HSP2 = (a1 + b1) / 2-sqrt (((a1-b1) / 2) ^ 2 + c1 ^ 2)
phi1 = round (1/2 * atand ((2 * c1) / (a1-b1)))
phi2 = phi1 + 90
HSS = round (sqrt (((a1-b1) / 2) ^ 2 + c1 ^ 2))
phi_1HS = round (1/2 * atand (-(a1-b1) / (2 * c1)))
phi_2HS = phi_1HS + 90
모어원을 그리기 위해서 Invariance 도 정해줍니다.
Inv1 = HSP1 + HSP2
Inv2 = a1 * b1-c1 ^ 2
그리고 여기 원 중심도
MS = (a1 + b1) / 2
이렇게 하고 마지막으로
계산된 부분을 좀 보여줘야하지 않겠습니까??
아까 만든 1. 파트에서 Edit에 값을 입력해봅시다
이는 set함수를 쓸거구요 Edit칸 이름에 handles. 함수로 연결을 해주고 'String'형으로 전달을 한다, 그리고 값은 어디에서 받아오느냐?
a2, b2,c2,등등 진하게 표시한 부분에서 가져오는 거겠죠 ?
다음과 같이..
자 그럼 요리도 끝냈고 접시에 담는 일만 남았네요
바로 모어원 그리기!!
이미 포스트가 많이 길어져서 다음시간에 해야할거 같아요 ㅎㅎㅎ 그럼
여러분 다음시간에 뵙죠^^
'공일남의 MATLAB 일기 🤔' 카테고리의 다른 글
MATLAB으로 유한요소 해석하기 (보 응력 해석)(2)- 코딩하기 (1) | 2020.10.27 |
---|---|
MATLAB으로 유한요소 해석하기 (보 응력 해석)(1) (0) | 2020.10.25 |
MATLAB으로 유한요소 해석하기 (모어원 GUI 프로그래밍)(3)- 코딩 마무리하기 (0) | 2020.10.19 |
MATLAB으로 유한요소 해석하기 (모어원 GUI 프로그래밍)(1) 도입부 (0) | 2020.10.15 |