그래스호퍼, Karamba 3D로 구조분석하기!

INTRO

건축 설계 과정에서는 형태와 기능, 미적 감각뿐 아니라 구조적 안정성 또한 중요한 고려 요소입니다. 아름다운 형태라도 구조적으로 실현 가능하지 않다면 실제로 구현될 수 없기 때문입니다. 그러나 설계 초기 단계에서는 구조 전문가와 협업하기 어려운 경우가 많아 디자이너 스스로 구조의 안정성을 간단하게 검토할 수 있는 도구가 필요합니다.

 

Karamba3D는 이러한 필요에 적합한 도구로, 그래스호퍼 환경에서 작동하는 건축 구조 해석 플러그인입니다. 이번 글에서는 Karamba 3D를 활용하여 기본적인 구조 분석을 수행하는 방법을 소개하고자 합니다.

 

 

Karamba3D란?

Karamba3D는 복잡한 구조 해석 프로그램을 사용하지 않고도 그래스호퍼 환경 안에서 직접 구조를 시각화하고 해석할 수 있도록 도와주는 도구입니다. 이 플러그인을 활용하면 건축가는 간편하게 하중에 따른 변형량을 시각화할 수 있으며 구조 부재별 응력, 모먼트, 축력을 확인할 수 있습니다.

 

설치방법

Karamba3D의 설치방법은 이전에 ‘Ladybug’에서 설명한 내용과 마찬가지로 Food4Rhino에 접속하여 다운로드할 수 있습니다.

 

설치 후에 Rhino를 실행하고 GrassHopper를 열면 상단 탭에 Karamba 항목이 나타나는지 확인합니다. 설치가 되지 않았을 경우 .gha 파일을 components 폴더에 직접 복사한 뒤 라이노를 재실행합니다.

 

 

주요요소

Karamba3D에서 구조를 분석하기 위한 필수 컴포넌트들이 몇 있습니다 이에 대해 설명하겠습니다.

 

create linear element (1.model)

line to beam이라고도 불리며 처음 시작할 때의 기초단계입니다. 커브를 지정하여 빔 엘리먼트로 설정하는 컴포넌트입니다.

 

cross-section (3.cross-section)

빔의 단면 정보에 대한 값을 입력하는 컴포넌트입니다. 보 폭과 보 춤의 크기를 입력할 수 있습니다.

 

material selection (5.material)

재료의 성질에 따른 값을 기입할 수 있습니다. 상위 재료 정보를 먼저 기입하고 그럼 거기서 실제 쓰이는 재료들의 이름들이 나타나며 자유롭게 선택하여 설정할 수 있습니다.

 

support (1.model)

빔에서 끝점에 지지대 역할을 하는 정보값을 기입합니다. 따라서 처음 커브 값을 입력할 때end point로 끝점 포이트를 생성한 다음에 연결하여 지지대 정보를 기입합니다.

 

loads (2.load)

위에서 내려오는 하중값을 입력합니다. 기본적으로 gravity 중력이 주는 값을 입력하며 여기에 여러 하중을 받는 값을 레이어합니다.

 

assemble model (1.model)

위에 말한 빔에 걸리는 정보값을 하나로 모아 모델 정보를 생성합니다.

 

analyse (6.algorithms)

assemble model 값을 분석합니다.

 

model view (7.results)

분석한 sssemble model의 힘의 값들을 시각화합니다.

 

beam view (7.results)

빔이 받는 처짐등의 값들을 시각화합니다.

 

사용방법

처음으론 선을 하나 그어보겠습니다. 그래스호퍼에서 ‘Line SDL’ 컴포넌트를 생성해줍니다. Input 값이 3개로 나타나는데, 시작점을 먼저 {0,0}으로 설정한 뒤 X좌표 방향으로 길이 10이 증분된 선분을 긋겠습니다.

 

 

위에 말한 구성요소들을 차례대로 이어보겠습니다. 처음으론 생성된 커브를 create linear element 컴포넌트를 생성하여 input값인 line 에다가 연결하여 선분 커브를 빔으로 지정해줍니다.

 

그 다음으론 cross-sectrion 컴포넌트를 생성한 뒤, 하단 단면 정보에서 trapezoid를 선택하여 사다리꼴 형태의 단면 정보로 설정해줍니다. 그 뒤에 input값에 Height엔 보의 춤으로 600mm를 기입해주고 Lowerwidth엔 200mm, Upperwidth엔 400mm를 기입하겠습니다. material selection 컴포넌트를 생성하여 재료는 Reinfsteel에다가 B550M(A)로 설정한 뒤 cross-section 컴포넌트 인풋 중 material에 연결합니다.

 

이러면 선분을 빔으로 설정한 뒤, 거기에 따르는 단면 크기에 대한 정보 및 재료에 따른 정보를 설정한 것을 알 수 있습니다.

 

 

Support 컴포넌트를 생성하겠습니다. 이 컴포넌트에서는 하단에 6개의 선택박스가 생성됩니다. 여기서 T(x,y,z)는 이동에 대한 지지를 축 별로 가지는 것이며, R(x,y,z)는 회전에 대한 지지를 축 별로 가지는 것을 뜻합니다. 우선은 이동하중에 해단 지지만 선택하고 진행해보겠습니다.

 

Line SDL 컴포넌트에다가 End Point 컴포넌트를 생성하여 연결하여 끝 점을 생성합니다. 이 끝점을 모두 Support 컴포넌트와 연결한 뒤 Flatten으로 눌러줍니다. 이러면 양끝 점에서 모든 축의 이동 및 회전 하중을 지지하는 힘을 생성한 것을 알 수 있습니다.

 

 

다음으론 외력 하중을 입력해주겠습니다. 외력 하중으로는 leads 컴포넌트와 beam loads 컴포넌트를 사용하겠습니다. 우선 그냥 loads 컴포넌트를 가져옵니다. 그러면 기본적으로 Gravity로 설정되어 있습니다. 이는 중력하중에 대한 값을 나타내며 기본적으로 –z 벡터를 지니고 있습니다. 그리고 LCase 라는 Input 값이 있는데 이건 여러 하중들이 가해질 때 같이 적용되는 값들을 하나로 묶어내는 레이어 역할이라고 생각하면 됩니다. 따라서 이번 예제에서는 LC0로 설정하고 진행하겠습니다.

 

그리고 beam loads를 생성한 뒤 type of load 로선 Block을 선택하겠습니다. 이는 빔에 등분포하중이 가해지는 것을 의미하며 힘의 방향으론 –z를 설정하겠습니다. 그리고 값에 크기에 따라 값을 부가하겠습니다.

이것 말고도 하중을 가하는 방식엔 여러 가지가 있기에 여러 load 컴포넌트를 생성하고 실험해보며 하중을 주는 방식을 익히면 좋습니다.

 

이러한 beam loads도 위에 중력하중과 같이 계산되어야 하기에 LC0 LCase와 합병해줍니다. 기본적으로 LCase의 값은 LC0에 위치해있기 떄문에 따로 변경해줄 필요는 없습니다.

 

 

이렇게 미리 설정해 놓은 값들을 Assemble Model 컴포넌트에 모두 입력합니다. 인풋에서 Elem 에는 Create linear element , Support엔 Support, 그리고 Load 값에는 이전에 설정한 로드 값을 모두 넣습니다. 그리고 load 값은 flatten으로 한 번 눌러줍니다.

 

 

그리고 이 값을 analyse에 입력하여 분석합니다. 분석한 값을 시각화하기 위해 Model view 와 또 연결합니다. 이 model view에는 여러 Display 설정들이 존재하여 스케일 조정 및 선보일 자료들을 선정할 수 있습니다.

 

이 Model View는 하중 값을 보이는 지표라면 빔에 대해 더 시각적으로 잘 인지하기 위해 Beam View 컴포넌트와 연결합니다. 그러면 Beam이 받는 하중을 시각화하여 분석 자료를 쉽게 판단할 수 있습니다.

 

 

Outro

Karamba3D는 복잡한 구조 해석 툴을 대신하여, 건축 설계자가 직접 구조적 검토를 수행할 수 있도록 도와주는 유용한 도구입니다. 그래스호퍼의 파라메트릭 설계환경과 결합하여 구조를 동시에 실험할 수 있으며, 이는 설계 과정의 완성도를 높이는데 매우 효과적입니다.

 

초기에는 설정이 다소 복잡하게 느껴질 수 있지만, 반복적인 실습을 통해 금방 익숙해질 수 있다고 생각합니다. Karamba3D를 설계의 일부로 적극적으로 활용한다면, 구조적으로도 설득력있는 건축 설계를 완성할 수 있을 것입니다.