OpenSees 파이버 단면은 왜 모델이 말해줄 수 있는 것을 바꾸는가: 단축재료·모멘트–곡률·검증된 푸시오버

단축재료를 어디에 넣기 전에 단위 장치에서 검증하는 법, Steel01 이동경화가 반전 구간에서만 드러나는 이유, 탄소성 모멘트–곡률 정해와 대조한 파이버 단면, 파이버 개수가 실제로 해상하는 것, 푸시오버의 변위제어, 힘기반과 변위기반 요소의 차이, 그리고 힘기반 요소가 자기 단면이 지탱하지 않는 단부

OpenSees 파이버 단면은 왜 모델이 말해줄 수 있는 것을 바꾸는가: 단축재료·모멘트–곡률·검증된 푸시오버

파이버 단면에는 자기 내력을 계산하는 공식이 없다. 파이버가 보고하는 것을 적분할 뿐이고, 따라서 답의 품질은 고른 재료 법칙, 파이버 배치, 적분 규칙 세 가지가 결정한다. 선형 모델은 이 중 어느 것도 묻지 않는다. 여기가 OpenSees가 직접 짤 수도 있는 행렬 솔버이길 그만두고 수고를 들일 값어치를 갖기 시작하는 지점이며, 동시에 모델이 자신만만하게 수렴한 물리적으로 불가능한 숫자를 내놓을 수 있는 지점이다.

이 글은 설계기준·구속 모델·소성힌지 길이·허용치를 제시하지 않는다. 비선형 단면을 바닥부터 쌓아 올리면서 각 층을 독립적인 것과 대조해 검증한다. 단축재료는 자기 이선형 공식과, 파이버 단면은 탄소성 모멘트–곡률 정해와, 푸시오버는 단면의 소성모멘트와 대조한다. 그다음 스스로 알려주지 않는 두 가지 실패 모드를 보인다. 탄성 코어를 볼 수 없을 만큼 성긴 파이버 개수, 그리고 힘기반 요소의 내부 평형을 조용히 깨뜨리는 완전소성 재료다. 모든 수치는 OpenSeesPy 3.8.0에서 생성했다. 이 글은 3부이며, 1부(Domain 객체 모델)와 2부(탄성 보–기둥 모델링)를 전제한다.

1. 두 종류의 비선형, 그리고 왜 명령이 다른가

OpenSees는 재료 비선형과 기하 비선형을 서로 다른 객체에 두고, 각각 독립적으로 켤 수 있다. 기하 비선형은 geomTransf에 있고 2부에서 다뤘다. 재료 비선형은 uniaxialMaterial과 section 객체에 있으며, 이 글의 주제다.

재료 비선형기하 비선형

어디에 있나uniaxialMaterial, section, ndMaterialgeomTransf

물리적 근원항복, 균열, 압괴, 열화변형된 형상에서의 평형

끄는 방법탄성 재료 또는 탄성 단면geomTransf('Linear', ...)

빠졌을 때 증상내력이 제한되지 않고 영원히 탄성2차 변위와 안정성 효과가 없음

이 분리는 비선형 해석이 말썽일 때 유용하다. 한 번에 하나씩 꺼볼 수 있기 때문이다. 둘 다 켜면 실패하고 선형 변환으로 바꾸면 수렴하는 모델은 재료 문제가 아니라 안정성 문제이고, 그 진단은 한 줄로 끝난다.

2. 단축재료 계열과 각각이 더하는 것

uniaxialMaterial은 기억을 가진 응력–변형률 관계다. 면적도, 형상도, 자신을 쓰는 요소도 모른다.

재료추가하는 것주 용도할 수 없는 것

ElasticE 외에 없음벤치마크, 탄성 부재어떤 힘도 제한하지 못함

ElasticPP항복변형률, 경화 없음교육, 소성한계 확인실제 강재 경화 재현

Steel01이동경화 이선형강재 파이버, 철근바우싱거 곡률, 좌굴, 파단

Steel02Giuffré–Menegotto–Pinto 매끄러운 전이반복·내진 철근 모델Fatigue 없이 저주기 피로

Concrete01Kent–Scott–Park 골격, 인장 0구속·비구속 콘크리트 파이버인장경화(tension stiffening)

Concrete02인장강도와 연화 추가균열이 강성에 중요한 경우어떤 형태의 전단 거동도

중요한 것은 마지막 열이다. 목록의 모든 재료는 어떤 현상에 맞춘 곡선이고, 그 안에 없는 현상은 메시를 아무리 잘게 해도 결과에 나타나지 않는다. 철근콘크리트 기둥의 파이버 모델은 전단으로 파괴되지 않고, 철근 정착을 잃지 않으며, 의도적으로 그 메커니즘을 넣지 않는 한 피복이 박리되지 않는다.

3. 무엇에 넣기 전에 재료만 따로 검증한다

가장 값싼 시험 장치는 단위 면적·단위 길이의 트러스 요소 하나다. 그러면 변위가 곧 변형률이고 축력이 곧 응력이다. 스무 줄이면 되고, 틀릴 형상이 없으며, 시험하려는 객체 하나만 분리한다.

# 단위: kN, m — 단축재료 시험 장치 import openseespy.opensees as ops E, FY, b = 200.0e6, 355.0e3, 0.02 # 200 GPa, 355 MPa, 경화비 2% ops.wipe() ops.model('basic', '-ndm', 1, '-ndf', 1) ops.node(1, 0.0) ops.node(2, 1.0) # 단위 길이 ops.fix(1, 1) ops.uniaxialMaterial('Steel01', 1, FY, E, b) ops.element('Truss', 1, 1, 2, 1.0, 1) # 단위 면적 ops.timeSeries('Linear', 1) ops.pattern('Plain', 1, 1) ops.load(2, 1.0) ops.constraints('Plain'); ops.numberer('Plain'); ops.system('BandGeneral') ops.test('NormDispIncr', 1e-12, 100); ops.algorithm('Newton') ops.analysis('Static') eps_y, current = FY / E, 0.0 for target in [0.5 * eps_y, eps_y, 2 * eps_y, 3 * eps_y, 5 * eps_y]: n = 400 ops.integrator('DisplacementControl', 2, 1, (target - current) / n) for _ in range(n): assert ops.analyze(1) == 0 current = target print(f"eps/eps_y = {target/eps_y:.1f} sigma = {ops.basicForce(1)[0]:.1f} kPa")

이선형 골격은 정확한 공식을 가진다. 항복 전 σ = Eε, 항복 후 σ = fy + bE(ε − εy). 따라서 모든 점을 확인할 수 있다.

ε / εyOpenSees, b = 0.01손계산OpenSees, b = 0.02손계산

0.5177 500.0177 500.0177 500.0177 500.0

1.0355 000.0355 000.0355 000.0355 000.0

2.0358 550.0358 550.0362 100.0362 100.0

3.0362 100.0362 100.0369 200.0369 200.0

5.0369 200.0369 200.0383 400.0383 400.0

모든 항목이 기계 정밀도로 일치한다(상대오차 2 × 10⁻¹⁵ 미만). 30초를 쓸 값어치가 있다. 두 질문을 한 번에 정리해 주기 때문이다. 단위가 일관된가, 그리고 경화비가 내가 생각하는 뜻인가. 둘 다 눈에 띄는 증상 없이 모델 전체가 10% 틀리게 만드는 흔한 원인이다.

4. 반대로 실어봐야 모델의 차이가 보인다

단조 재하만으로는 이동경화와 등방경화를 구분할 수 없다. 올라가는 길에서는 둘이 같기 때문이다. 같은 장치를 0 → 2εy → −2εy → 3εy로 몰면 차이가 곧바로 드러난다.

+2εy에서 제하하면 응력 범위 2fy만큼 탄성이고, 이는 변형률로 2εy다. 따라서 항복은 ε = −εy가 아니라 ε ≈ 0에서 재개된다. 탄성구간이 0에 고정되어 있지 않고 재료와 함께 이동한 것이다. 내진 모델이 의존하는 거동이 이것이고, Steel01이 단조 푸시오버에는 충분하지만 반복하중에서는 종종 충분하지 않은 이유이기도 하다. 반복하중에서는 Steel02의 매끄러운 바우싱거 전이가 중요해진다.

새로운 변형률 극값에서의 응력 크기는 여전히 단조 골격 위에 놓인다는 점도 보아둘 만하다. b = 0.02에서 ±2εy에 362.1 MPa, 3εy에 369.2 MPa다. 이동경화는 재료가 되돌아가는 골격이 아니라 항복이 어디서 다시 시작하는지를 바꾼다.

5. 파이버 단면은 부재가 아니라 적분 규칙이다

section('Fiber', tag)은 빈 그릇을 만든다. patch는 면적을 파이버로 채우고, layer는 파이버를 한 줄로 놓는다. 철근을 정의하는 방식이 후자다. 각 파이버는 면적, 위치, 단축재료 하나를 가진다.

# 단위: kN, m — 300 x 500 mm 직사각형, 춤 방향 파이버 80개 B, H = 0.30, 0.50 ops.uniaxialMaterial('Steel01', 1, 355.0e3, 200.0e6, 0.0) ops.section('Fiber', 1) ops.patch('rect', 1, 80, 1, -H/2, -B/2, H/2, B/2) # 재료태그, y방향 파이버수, z방향 파이버수, yI, zI, yJ, zJ # 철근은 layer 로 추가한다: # ops.layer('straight', 2, 4, 0.000804, y1, z1, y2, z2)

변형률 분포가 주어지면 단면은 N = Σ σᵢAᵢ와 M = −Σ σᵢAᵢyᵢ를 돌려준다. 메커니즘은 이것이 전부다. 따라서 파이버 단면은 파이버가 대표성을 가지는 만큼만 옳을 수 있고, 다음 두 절이 그 질문에 숫자로 답한다.

6. 모멘트–곡률을 정해와 대조한다

탄성-완전소성 직사각형은 모멘트–곡률 관계의 닫힌해를 가지므로 파이버 단면의 이상적인 벤치마크다.

κy = 2 fy / (E h) 항복곡률 My = EI κy = fy · bh²/6 초기항복모멘트 Mp = fy · bh²/4 소성모멘트 형상계수 Mp/My = 1.5 모든 직사각형에서 κ ≥ κy 일 때: M(κ) = Mp [ 1 − (1/3)(κy/κ)² ]

b = 300 mm, h = 500 mm, fy = 355 MPa, E = 200 GPa에서 κy = 0.0071 /m, My = 4437.5 kN·m, Mp = 6656.25 kN·m다. 회전을 DisplacementControl로 구동하는 zeroLengthSection 요소는 곡률을 직접 부과한다.

ops.model('basic', '-ndm', 2, '-ndf', 3) ops.node(1, 0.0, 0.0) ops.node(2, 0.0, 0.0) # 같은 위치의 절점 두 개 ops.fix(1, 1, 1, 1) ops.fix(2, 0, 1, 0) # 축방향과 회전은 자유로 둔다 ops.element('zeroLengthSection', 1, 1, 2, 1) ops.timeSeries('Linear', 1); ops.pattern('Plain', 1, 1) ops.load(2, 0.0, 0.0, 1.0) # 단위 모멘트 ops.constraints('Transformation'); ops.numberer('Plain') ops.system('BandGeneral'); ops.test('NormUnbalance', 1e-10, 200) ops.algorithm('Newton') ops.integrator('DisplacementControl', 2, 3, kappa_max / n_steps) ops.analysis('Static') for _ in range(n_steps): assert ops.analyze(1) == 0 print(ops.nodeDisp(2, 3), ops.eleForce(1)[5]) # 곡률, 모멘트

곡률 0.01 κy부터 5.6 κy까지 파이버 단면과 닫힌해의 최대 상대차는 1.6 × 10⁻⁴다. 곡선은 κ = 3κy에서 Mp의 96%, κ = 5.8κy에서 99%에 이른다. 소성모멘트는 유한한 곡률에서 도달하는 값이 아니라 점근선이다. 정확히 Mp를 보고하는 모델은 단면이 아니라 자기 이산화에 대해 말하고 있는 것이다.

7. 파이버 개수가 실제로 지배하는 것

흔한 조언은 "파이버를 충분히 쓰라"다. 무엇에 충분한가? 같은 벤치마크를 중간 정도 곡률 κ = 2κy(정해 6101.56 kN·m)에서 돌리고 파이버 개수만 바꾼다.

춤 방향 파이버 수κ = 2κy 에서 M (kN·m)정해오차

26656.256101.56+9.09%

45824.226101.56−4.55%

86032.236101.56−1.14%

166084.236101.56−0.28%

326097.236101.56−0.071%

646100.486101.56−0.018%

"충분히 쓰라"가 말해주지 않는 것 셋이 여기 보인다.

수렴 차수는 1/n²다. 두 배로 늘릴 때마다 오차가 4분의 1이 되며, 중점법에서 기대되는 차수다. 여기서 필요한 개수를 예측할 수 있다. 16개가 0.28%면 64개는 약 0.018%이고, 실제로 그렇다.

파이버 2개는 모멘트를 9% 과대평가한다. 파이버가 둘뿐이면 도심이 ±h/4에 있고 κ = 2κy에서 둘 다 항복을 한참 넘어서므로 단면은 완전소성모멘트를 보고한다. 중립축 근처에 실제로 존재하는 탄성 코어가 이산화에 보이지 않는다. 성긴 파이버 단면은 정확도만 잃는 것이 아니라 탄성 코어를 잃고, 내력을 위험측으로 틀린다.

파이버가 해상하는 것은 최외단이 아니라 중립축 근처다. 최외단 파이버는 거의 즉시 완전히 항복하고 개수와 무관하게 같은 응력을 낸다. 세분이 사는 것은 탄소성 경계의 해상도다. 그래서 파이버 개수는 중간 곡률에서 가장 중요하고, 거의 전 단면이 항복한 매우 큰 곡률에서는 거의 무의미해진다.

8. 푸시오버: 돌리기 전에 이미 알고 있어야 할 숫자들

그 단면을 4 m 캔틸레버에 얹고 선단을 민다. 실행 전에 정역학만으로 세 값을 예측할 수 있다. 초기항복은 기초 모멘트가 My에 이를 때이므로 V_y = My/L = 1109.4 kN, 그때의 선단 변위는 탄성이론으로 V_y L³/3EI = 37.9 mm, 그리고 내력은 V_p = Mp/L = 1664.1 kN로 제한된다.

# 단위: kN, m — 변위제어 푸시오버 ops.geomTransf('Linear', 1) ops.beamIntegration('Lobatto', 1, 1, 5) # 태그, 단면태그, 적분점 5 ops.element('forceBeamColumn', 1, 1, 2, 1, 1) # 변환태그, 적분태그 ops.timeSeries('Linear', 1); ops.pattern('Plain', 1, 1) ops.load(2, 1.0, 0.0, 0.0) # 단위 기준하중 ops.constraints('Plain'); ops.numberer('RCM'); ops.system('BandGeneral') ops.test('NormDispIncr', 1e-8, 200); ops.algorithm('Newton') ops.integrator('DisplacementControl', 2, 1, 0.001) # 단계당 1 mm ops.analysis('Static') for _ in range(200): assert ops.analyze(1) == 0 ops.reactions() print(ops.nodeDisp(2, 1), -ops.nodeReaction(1)[0])

여기서 LoadControl이 아니라 DisplacementControl을 쓰는 것은 선택이 아니다. 하중제어는 수평 평탄부를 지날 수 없다. 소성한계에서는 유한한 변위를 만드는 하중 증분이 존재하지 않으므로 해석은 정확히 관심 지점에서 실패한다. 패턴의 기준하중은 하중의 모양이 되고, 크기는 적분기가 규정된 변위에 도달하는 데 필요한 힘을 물어 정한다.

완전소성에서는 곡선이 Mp/L의 0.999까지 올라가 평탄해진다. 모멘트–곡률에서 본 것과 같은 점근적 접근이다. 2% 경화에서는 층변위 5%에서 Mp/L을 약 20% 넘어선다. 단면이 소성모멘트에 "도달했어야 하는데" 푸시오버 곡선이 계속 올라가는 이유를 궁금해한 적이 있다면 답이 이것이다. 지정한 경화가 정확히 시킨 일을 하고 있고, b가 0이 아닌 순간부터 Mp는 상한이기를 그만두었다.

9. 힘기반이냐 변위기반이냐: 같은 답, 다른 대가

파이버 단면을 실을 수 있는 보–기둥 정식화는 둘이다. 변위기반 요소(dispBeamColumn)는 변위를 보간하고 곡률을 유도하는데, 통상적인 3차 보간에서는 곡률이 요소 길이 방향으로 직선 변화한다는 뜻이다. 힘기반 요소(forceBeamColumn)는 힘장을 보간하므로 어떤 곡률 분포에서도 평형을 엄밀히 만족하고, 적합조건을 맞추기 위해 내부에서 반복한다.

부재를 나눈 요소 수forceBeamColumndispBeamColumn

11.202 Mp/L1.386 Mp/L

21.1831.228

41.1851.183

81.1851.185

161.1851.185

변위기반 요소 하나는 수렴값 대비 내력을 17% 과대평가한다. 직선 곡률 분포로는 소성힌지의 곡률 집중을 표현할 수 없어서, 요소가 부과된 형상을 맞추려면 힘을 올려야 하기 때문이다. 공개된 OpenSees 모델들이 기둥을 변위기반 요소 4개 이상으로 나누는 고전적인 이유가 이것이다. 힘기반 요소는 하나나 둘로 같은 답에 이르지만, 내부 반복 루프라는 대가를 치른다. 그 루프가 실패할 수 있다는 것이 다음 절의 주제다.

10. 함정: 완전소성과 힘기반 요소의 내부 루프

같은 1요소 캔틸레버를 완전소성 재료로 돌리면서 Lobatto 적분점 수만 바꾼다. 밑면 전단력은 Mp/L을 넘을 수 없어야 한다. 힘기반 요소는 평형을 엄밀히 강제하므로 기초 단면 모멘트가 곧 요소 단부 모멘트이기 때문이다. 실제로는 이렇게 된다.

Lobatto 적분점V / (Mp/L), b = 0요소 단부 모멘트기초 단면 모멘트차이

30.99576627.46627.40

50.99916650.46650.40

60.99986655.26655.20

71.06727103.36656.2447.0 kN·m

81.06017056.06656.2399.7

101.04016923.56656.2267.2

적분점 3~6개에서는 모든 것이 일관되고 밑면 전단력이 Mp/L에 아래에서 접근한다. 그래야 맞다. 7개 이상에서는 기초 단면이 정확히 Mp = 6656.25 kN·m에 앉아 — 더 낼 수 없다 — 있는데 요소는 단부 모멘트 7103.3 kN·m를 보고한다. 두 숫자는 같은 단면을 가리킨다. 요소의 내부 상태결정이 수렴하지 않았고, OpenSees는 오류를 내지 않고 그 결과를 받아들인다. 200단계 전부에서 analyze()는 0을 반환했다.

고치지 못하는 것이 둘이다. 전역 수렴판정을 조여도 소용없다. 전역 잔차는 실제로 작고, 불일치는 요소 내부에 있기 때문이다. '-iter', 100, 1e-12로 요소 자체의 반복을 조여도 이 모델에서는 아무것도 달라지지 않았다. 차이는 마지막 자리까지 447.0 kN·m 그대로였다. 원인은 완전소성 단면이 완전히 항복한 뒤 접선강성이 0이 되어, 유연도 기반 반복이 수렴할 대상을 잃는다는 데 있다.

고치는 것은 재료에게 갈 곳을 주는 것이다. b = 0.02에서는 적분점 3개부터 10개까지 전부 차이가 0이다(4 × 10⁻¹² kN·m 미만). 실무 규칙은 이것이다. 힘기반 요소 안에서 항복 후 기울기를 완전히 0으로 두지 않는다. 보통 0.5%에서 2% 사이의 작은 양의 경화비는 완전소성보다 물리적으로도 현실적이고 수치적으로도 필요하다.

그리고 어떤 비선형 모델에도 넣어둘 값어치가 있는 진단이 여기 있다. 한 줄이면 되고 이 부류의 실패를 직접 잡아낸다.

# 요소 평형 점검: 단부 모멘트는 단부 단면 모멘트와 같아야 한다 basic_M = ops.basicForce(eleTag)[1] section_M = abs(ops.eleResponse(eleTag, 'section', 1, 'force')[1]) assert abs(basic_M - section_M) < 1e-6 * abs(section_M), ( f"element {eleTag} internal equilibrium violated: " f"{basic_M:.1f} vs {section_M:.1f}")

11. 적분점을 늘리는 것은 메시 세분이 아니다

같은 연구의 경화 행을 다시 보자. b = 0.02이고 평형 차이가 어디에도 없는데도 밑면 전단력 비는 적분점 수에 따라 여전히 변한다. 3개에서 1.095, 5개에서 1.202, 6개에서 1.186, 7개에서 1.182, 10개에서 1.185다. 단조적으로 수렴하지 않는데, 애초에 수렴 수열이 아니기 때문이다.

힘기반 요소에서는 소성힌지가 형성되면 모든 비탄성 변형이 단부 적분점에 집중되고, 그 변형이 퍼지는 길이는 그 적분점의 가중치와 같다. 적분점 수를 바꾸면 가중치가 바뀌고, 따라서 유효 소성힌지 길이가 바뀐다. 물리적 힌지 길이는 그대로이고 수치적 힌지 길이가 바뀐 것이다. 연화 재료에서는 같은 메커니즘 때문에 전체 응답이 적분 규칙에 통째로 의존하게 된다. Coleman과 Spacone이 기술한 국부화 문제다.

올바른 대응은 적분점을 늘리는 것이 아니라 다음 두 정규화 중 하나다.

재료를 정규화한다. 적분 가중치가 바뀌어도 단위 길이당 소산 에너지가 보존되도록 항복 후 기울기를 조정한다.

적분을 정규화한다. 'HingeRadau' 같은 소성힌지 규칙을 써서 단부 적분 가중치를 적분점 수의 우연이 아니라 선택한 물리적 힌지 길이로 명시한다.

둘 다 OpenSees beamIntegration 명령에 문서화되어 있고, 대개 두 번째가 더 직접적이다. 소성힌지가 250 mm라고 믿는다면 적분 규칙이 동의해 주기를 바라지 말고 모델에 그렇게 적는다.

12. 비선형 실패와 각각의 의미

증상유력한 원인대응

최대하중 부근에서 analyze()가 음수 반환LoadControl은 평탄부를 지날 수 없음DisplacementControl로 전환

초기항복 직후 Newton 이 멈춤접선강성이 급격히 변함KrylovNewton, 더 작은 단계, 또는 NewtonLineSearch

힘기반 요소에서 밑면 전단력이 Mp/L 초과완전소성 재료, 미수렴 요소 상태경화 추가, 10절의 평형 점검 실행

적분점 수를 바꾸면 내력이 변함국부화 — 힌지 길이가 수치적소성힌지 적분 규칙 사용

메시를 바꾸면 내력이 변함변위기반 요소가 너무 성김부재당 4개 이상, 또는 정식화 전환

다른 증상 없이 내력이 5~10% 높음파이버 부족, 탄성 코어 미해상7절처럼 수렴 확인

모델이 전혀 항복하지 않음단면이 Elastic 재료이거나 단위가 10³ 어긋남3절 재료 시험 장치 실행

조언의 형태는 처음부터 끝까지 같다. 비선형 해석이 말썽이면 먼저 허용오차를 느슨하게 하거나 솔버를 바꾸지 말 것. 어떤 객체가 실패하는지 — 재료인지 단면인지 요소인지 적분기인지 — 를 묻고, 3절·6절·10절이 하는 그대로 그 객체를 분리해 시험한다.

13. 같은 논리를 다섯 단계 깊이로

입문자는 파이버 단면을 항복시키고 푸시오버 평탄부가 Mp/L 근처인지 확인한다. 초급 실무자는 단위 장치에서 재료를 시험하고, My·Mp·형상계수를 손으로 계산하며, 파이버 개수가 수렴하는지 본다. 실무 해석자는 변위제어를 쓰고, 요소 평형을 검증하며, 결과가 어떤 정식화와 몇 개의 요소에 의존하는지 보고한다. 선임 엔지니어는 모델의 소성힌지 길이가 의도적으로 정해지지 않았다면 수치적 값이라는 것을 알고 정규화한다. 전문가는 고른 재료가 표현할 수 없는 물리 메커니즘 — 전단파괴, 부착슬립, 철근 좌굴, 저주기 피로 — 을 알고, 이를 조용한 누락으로 남기지 않고 결론의 한계로 명시한다.

14. 파이버 단면 모델 최소 점검표

각 단축재료를 단위 장치에서 따로 시험하고 자기 공식과 대조했는가?

힘기반 요소를 쓴다면 경화비가 0이 아닌가?

최소 한 단면에 대해 My·Mp·형상계수를 손으로 계산했는가?

그 단면의 모멘트–곡률이 손계산과 일치하고, 관심 곡률에서 파이버 개수가 수렴했는가?

응답이 정점이나 평탄부를 지난다면 변위제어를 쓰고 있는가?

모든 단계에서 analyze()의 반환값을 검사했는가?

요소 단부 모멘트가 단부 단면 모멘트와 반올림 오차 범위에서 같은가?

요소 수를 바꾸면 답이 변하는가? 변한다면 받아들이지 않고 해결했는가?

적분점 수를 바꾸면 답이 변하는가? 변한다면 힌지 길이를 의도적으로 정했는가?

고른 재료에 없는 물리적 파괴 메커니즘은 무엇이며, 결과와 함께 명시했는가?

다음 글은 정적인 밀기에서 동적인 밀기로 넘어간다. 질량, 감쇠, 고유치해석, 시간적분기, 지진기록 입력이 주제이고, 여기서 내린 모든 모델링 결정이 시간 단계 수만큼 곱해져 다시 나타난다.

OpenSees 시리즈 전체

각 편은 닫힌해·독립적인 풀이·OpenSees 소스 중 하나와 대조해 검증했다. 순서대로 읽도록 썼지만 각 편이 자기 전제를 스스로 밝힌다.

1부 — 도메인 모델과 해석 조립

2부 — 단면·기하변환·분포하중

3부 — 파이버 단면·모멘트–곡률·푸시오버 — 지금 보는 글

4부 — 질량·감쇠·시간적분

5부 — 라이브러리 읽기와 재현 가능한 워크플로

6부 — 철근콘크리트 파이버 단면과 구속

7부 — 실제 지진기록·층간변위·증분동적해석

8부 — 3차원: 강막·비틀림·leaning column

9부 — 수렴하지 않을 때: 실패·알고리즘·한계점

10부 — Tcl 읽기와 공개 스크립트 이식

11부 — 쉘·솔리드·지반: 락킹·메시·부지응답

12부 — 후처리: recorder·질의, 그리고 그림이 증명하는 것

13부 — 좌굴과 한계점: 분기점·스냅백·호장법

14부 — Windows: 설치·파일 형식·조용한 실패

15부 — 검증된 정답이 딸린 연습문제와 한영 용어집

16부 — 어떻게 동작하는가: 시행상태·확정상태·해석 루프

17부 — 커뮤니티가 말하는 것, 측정해보면

18부 — 절점 변위에서 파이버 응력까지

19부 — 면진과 감쇠: 속도 의존 요소와 베어링

참고 자료

OpenSeesPy, Steel01, Steel02 — 이선형 및 Giuffré–Menegotto–Pinto 강재 모델.

OpenSeesPy, Concrete01 — Kent–Scott–Park 콘크리트 골격.

OpenSeesPy, Fiber section, patch, layer — 파이버 생성 방법.

OpenSeesPy, zeroLengthSection, 모멘트–곡률 예제 — 단면 시험 장치.

OpenSeesPy, forceBeamColumn, dispBeamColumn, beamIntegration, Lobatto 규칙.

OpenSeesPy, DisplacementControl, RC 라멘 푸시오버 예제.

Coleman, J., Spacone, E., Localization Issues in Force-Based Frame Elements, Journal of Structural Engineering 127(11), 2001, doi:10.1061/(ASCE)0733-9445(2001)127:11(1257).

Scott, M. H., Fenves, G. L., Plastic Hinge Integration Methods for Force-Based Beam–Column Elements, Journal of Structural Engineering 132(2), 2006, doi:10.1061/(ASCE)0733-9445(2006)132:2(244).

Scott, M. H., OpenSees Digital — OpenSees 개발자가 요소 정식화·적분·흔한 모델링 오류를 다루는 블로그.

Pacific Earthquake Engineering Research Center, OpenSees Wiki.

자료 확인 2026-08-30. 이 글의 모든 수치는 OpenSeesPy 3.8.0에서 생성되었으며 위의 완전한 스크립트로 재현할 수 있다. 요소와 단면의 동작을 보여주는 것이지 프로젝트별 해석이나 기준 적합성 검토를 대신하지 않는다.