오늘의 설계 과제
#01 · 첫 클리닉
과제
문 교수: "8주 뒤 막대 다리 대회." 태민이 막대 한 개를 들고 묻는다. "이거 100 N으로 당기면 얼마나 늘어나요?" 류 조교는 대답 대신 물리 실험실 용수철 두 개를 책상에 올린다.
오늘 구할 것
용수철 두 개를 이은 사슬에서 두 노드가 움직인 거리 u₁, u₂를 노드마다 세운 힘의 평형으로 구하고, 그 식을 행렬 하나 K u = F로 묶는다. 막대 하나의 강성 k = EA/L과 100 N에 늘어나는 양을 구한다.
새솔대 공대 3호관 2층 구조해석 연구실 · 목요일 해석 클리닉
3월 11일 목요일, 새솔대학교 공과대학 1학년 '창의설계' 첫 시간입니다. 문 교수가 칠판에 다섯 줄을 적습니다.
아이스크림 막대 다리 대회 · 4월 29일 목요일 · 공대 1층 로비
"질문 있나? 없으면 시작." 교수의 설명은 그게 전부입니다.
기계공학과 태민(정태민)이 같은 팀이 된 건축학과 지아(한지아)에게 막대 한 개를 흔들어 보입니다. "그냥 막대 두 겹으로 붙이면 되는 거 아니에요?" 지아는 다른 걸 묻습니다. "다리에 막대가 몇십 개 들어갈 텐데, 이 막대는 왜 여기 있어야 하는지 다 설명할 수 있어?"
실습이 끝나고 둘은 해석 클리닉의 문을 두드립니다. 토목공학과 박사과정 3년 차 류 조교(류세영)가 둘의 질문을 듣더니 연습장과 연필, 그리고 물리 실험실에서 빌려 온 용수철 두 개를 내밉니다. "손으로 먼저 풀어 보고, 그다음 컴퓨터에 맡기자. 막대 얘기는 이 용수철부터 끝내고 하자."
구조해석 프로그램이 속에서 하는 일은 한 줄로 쓸 수 있습니다.
나누고 → 조각마다 쉬운 식을 세우고 → 다시 붙여 큰 연립방정식 하나를 푼다.
이것이 유한요소해석(Finite Element Method, FEM)입니다. 조각을 요소(element), 조각과 조각이 만나는 점을 노드(node)라고 부릅니다. 팀의 막대 다리라면 막대 하나하나가 요소이고, 글루로 붙인 이음점이 노드입니다.
조각마다의 쉬운 식은 오늘 배우는 용수철 식 입니다. 다시 붙이는 규칙도 하나뿐입니다. 노드마다 힘이 평형을 이룬다. 이 두 가지로 노드 수만큼 식이 생기고, 그 식을 모은 것이 연립방정식 입니다. 8교시까지 문제는 바뀌어도 이 순서는 바뀌지 않습니다.
용수철 한쪽 끝을 벽에 걸고 다른 끝을 당기면 늘어납니다. 늘어난 길이 는 당기는 힘 에 비례하고, 그 비례 상수가 강성(stiffness) 입니다.
단위는 N/mm입니다. 류 조교의 첫 용수철은 N/mm, 1 mm 늘이는 데 2 N이 듭니다.
FEM에서는 늘어난 길이 대신 노드가 움직인 거리를 미지수로 씁니다. 이것을 변위(displacement) 라 하고, 오른쪽을 +로 잡습니다. 양 끝 노드 , 가 각각 , 만큼 움직였다면 용수철이 늘어난 길이는 둘의 차이입니다.
변위만 알면 늘어난 길이도, 힘도 따라 나옵니다. 그래서 미지수는 변위입니다.
직접 풀어 보기
예제 1-1
벽에 건 용수철을 12 N으로 당겼더니 6 mm 늘어났습니다. 강성 는 얼마인가요? 같은 용수철을 20 N으로 당기면 몇 mm 늘어날까요?
1단계. N/mm.
2단계. mm.
답: N/mm, 20 N이면 10 mm. 류 조교의 첫 용수철 입니다.
이제 두 개를 잇습니다. 벽 — — 노드 1 — — 노드 2, 그리고 노드 2를 N으로 당깁니다. 슬라이더를 움직여 보세요.
| 5 | -3 |
| -3 | 3 |
| 6 |
| 10 |
| 0 |
| 12 |
u₁ = 6 mm, u₂ = 10 mm
용수철이 당기는 힘: 12 N, 12 N
두 용수철이 모두 12 N으로 당겨집니다. 사슬에서는 힘이 그대로 전달되고, 늘어난 길이만 강성에 따라 다릅니다.
실습대에서 두 용수철은 모두 12 N으로 당겨졌습니다. 사슬에서는 힘이 그대로 전달되고, 늘어난 길이만 강성에 따라 6 mm, 4 mm로 갈립니다.
이것을 노드마다의 식으로 씁니다. 노드에 걸린 힘을 모두 더하면 0이어야 합니다(노드는 멈춰 있으니까요).
, 끼리 모아 정리하면 행렬 하나가 됩니다.
이것이 입니다. 는 강성행렬, 는 변위, 는 노드에 걸린 바깥 힘입니다. 둘째 줄에서 , 곧 . 첫째 줄 에 넣으면 이므로 mm, mm입니다.
의 모양을 봐 두세요. 대각선 칸은 그 노드에 붙은 용수철 강성의 합(노드 1에는 과 가 붙어 5), 대각선 밖 칸은 두 노드를 잇는 용수철의 입니다. 다음 주에는 이 규칙으로 행렬을 '조립'합니다.
류 조교의 한마디
식을 세울 때는 노드 하나를 손가락으로 가리고, 그 노드에 붙은 용수철만 봐. 붙은 용수철 수만큼 항이 생기고, 바깥 힘은 오른쪽(F 쪽)으로 보내.
직접 풀어 보기
예제 1-2
용수철 순서를 바꿔 벽 — — 노드 1 — — 노드 2로 잇고 노드 2를 12 N으로 당깁니다. 를 쓰고 , 를 구하세요. 순서를 바꾸기 전과 무엇이 같고 무엇이 다른가요?
1단계: . 노드 1에 붙은 강성 합 , 두 노드를 잇는 용수철 , 노드 2에는 .
2단계: 풀기. 둘째 줄 에서 . 첫째 줄 에서 , .
답: mm, mm. 끝 노드의 변위 10 mm는 같고, 가운데 노드만 6 mm에서 4 mm로 바뀌었습니다. 두 용수철 모두 12 N을 받으니, 각자 늘어나는 길이(12/3 = 4, 12/2 = 6)의 합은 순서와 관계없습니다.
직접 풀어 보기
예제 1-3
지아가 묻습니다. "F를 18 N으로 올리면 처음부터 다시 풀어야 해요?" 기본 사슬(, )에서 N일 때의 , 와 두 용수철의 힘을 구하세요.
1단계: 비례. 는 그대로이고 오른쪽 만 1.5배가 됐습니다. 는 선형이라 도 1.5배입니다.
2단계: 확인. , . 맞습니다.
3단계: 힘. 용수철 1은 N, 용수철 2는 N.
답: mm, 두 용수철 모두 18 N. 다리 계산에서도 하중을 두 배로 하면 변위와 부재력이 모두 두 배가 됩니다. 3교시의 부재력 표가 "하중에 비례한다"고 말하는 이유입니다.
태민의 질문으로 돌아갑니다. 아이스크림 막대를 당기면 막대도 용수철처럼 조금 늘어납니다. 막대는 길이 114 mm, 폭 10 mm, 두께 2 mm, 자작나무입니다.
A = 20 mm²
k = EA/L = 10,000 × 20 / 114 = 1,754 N/mm
100 N에 늘어나는 양 δ = 0.057 mm
물리실 용수철(k = 2 N/mm)은 같은 100 N에 50 mm 늘어납니다. 이 막대는 그보다 877배 단단합니다.
막대의 강성은 세 가지로 정해집니다. 굵을수록(단면적 ), 재료가 단단할수록(탄성계수 ) 커지고, 길수록() 작아집니다.
이 식은 재료 실험의 법칙 하나에서 나옵니다. 단면에 걸린 힘의 세기(응력 )는 늘어난 비율(변형률 )에 비례하고, 그 비례 상수가 입니다. 을 정리하면 입니다.
이 강의에서는 막대의 결 방향 탄성계수를 MPa로 가정합니다. MPa는 N/mm²라서 (N/mm²) × (mm²) ÷ (mm)은 그대로 N/mm가 됩니다.
물리실 용수철( N/mm)보다 877배 단단합니다. 100 N은 모래 든 양동이 약 10 kg의 무게인데, 막대는 머리카락 굵기만큼도 늘지 않습니다. 그래서 다리 계산의 변위는 늘 1 mm보다 작고, 실습대는 그림을 과장해서 보여 줍니다.
FEM의 눈으로 보면 막대도 양 끝에 노드가 있는 용수철 요소입니다. 강성만 로 바꾸면 1-3절의 식이 그대로 쓰입니다.
직접 풀어 보기
예제 1-4
태민이 막대 두 장을 면끼리 붙여 두 겹(10 × 4 mm)으로 만들고, 길이를 반(57 mm)으로 잘랐습니다. 이 막대의 와 100 N에 늘어나는 양을 구하세요. 한 겹 114 mm 막대의 몇 배 단단한가요?
1단계: 단면적. mm².
2단계: 강성.
3단계: 늘어나는 양. mm.
답: N/mm, 0.0142 mm, 한 겹 114 mm 막대의 4배. 두 겹으로 가 2배, 반으로 잘라 이 1/2배라서 배입니다.
NumPy로는
myfem.py의 첫 두 함수입니다. spring_k는 용수철(또는 막대) 하나의 2×2 강성행렬, stick_k는 막대의 입니다. 2×2 행렬의 뜻은 다음 주에 봅니다. 오늘은 를 np.linalg.solve로 풀어 실습대의 6, 10을 확인합니다.
def spring_k(k):
"""스프링(또는 막대) 하나의 2×2 강성행렬."""
return k * np.array([[1.0, -1.0], [-1.0, 1.0]])
def stick_k(E, A, L):
"""곧은 막대의 축 강성 k = EA/L."""
return E * A / L>>> import numpy as np
>>> from myfem import spring_k, stick_k
>>> spring_k(3)
array([[ 3., -3.],
[-3., 3.]])
>>> K = np.array([[2 + 3, -3], [-3, 3]])
>>> np.linalg.solve(K, [0, 12])
array([ 6., 10.])
>>> k = stick_k(10_000, 20, 114)
>>> round(k, 1), round(100 / k, 4)
(1754.4, 0.057)단위는 N, mm, MPa(= N/mm²)로 맞춥니다. 길이를 m로 넣으면 가 1,000배 틀어집니다.
태민의 해석 노트
FEM = 나누고, 조각(요소)마다 쉬운 식을 세우고, 다시 붙여 큰 연립방정식 K u = F를 푼다.
미지수는 노드 변위 u. 용수철이 늘어난 길이는 u_j − u_i, 힘은 k(u_j − u_i).
노드마다 힘의 합 = 0. 용수철 2개 사슬은 [[5, −3], [−3, 3]] u = [0, 12], 답 u₁ = 6 mm, u₂ = 10 mm.
막대도 용수철이다. k = EA/L = 10,000 × 20 / 114 = 1,754 N/mm, 100 N에 0.057 mm.
두 겹이면 k 2배, 길이 반이면 k 2배. 단위는 N, mm, MPa로 맞춘다.
지아에게 한 줄로: 막대 하나하나를 아주 단단한 용수철로 보고, 이음점마다 힘을 맞추면 다리 전체가 연립방정식 하나가 돼.
클리닉을 나서는 둘에게 류 조교가 용수철 하나를 더 건넵니다. "다음 주엔 세 개야. 그때는 행렬을 손으로 쓰지 말고, 도장 찍듯 '조립'해 보자. 다리는 막대가 수십 개라 그 방법밖에 없거든."
새 교시·새 강의 소식 받기
이 강의에 새 교시가 더해지거나 이어지는 강의가 열리면 이메일로 알려 드려요.
R
ReflexKR
눌러 보며 배우는 파이썬과 Reflex. 모든 예제는 Reflex 0.10.0에서 직접 실행해 확인했습니다.
ReflexKR은 배너 광고 없이 무료로 운영돼요. 도움이 되셨다면 커피 한 잔으로 응원해 주세요.
© 2026 ReflexKR · Since 2026 · CC BY-NC 4.0
질문과 답변
이 교시에서 궁금한 점을 남겨 주세요. 모든 언어 페이지의 질문이 함께 모입니다.