Introduction
Ansys optiSLang®은 Ansys사에서 제공하는 최적화 프로그램이다. 최적화란 다양한 설계 변수와 각 변수의 넓은 설계 범위내에서 제품의 성능을 최대로 끌어올릴 수 있는 변수의 값을 찾는 과정이다. 기존의 설계 방식은 설계자의 직관에 의해서 변수를 채택하고 그 값을 변경하며 성능을 끌어 올리는 설계안을 찾을 때까지 수행해왔다. 따라서, 설계자의 능력에 따라 제품 성능 개선의 한계가 정해져 버리는 문제에 부딪혔다. 또한 실제 실무에선 설계자와 해석자가 나누어 업무를 수행하다 보니 많은 설계 변경을 할 수도 없었다.
optiSLang은 다양한 해석 tool, CAD tool들과의 호환성(data in/out)이 편리하여 다양한 해석들의 자동화가 가능하고, 이를 바탕으로 최적화를 수행할 수 있다. 이번호에서는 다양한 Ansys의 다양한 해석 tool들과 optiSLang간의 해석 자동화인 Process Integration 방법들에 대해 설명을 하고자 한다.
먼저 Ansys의 해석 tool은 2가지 형태로 존재한다. 하나는 Workbench환경에서 사용할 수 있는 Embedded in Ansys로 [그림 1]의 왼쪽과 같이 Workbench를 실행하면 Analysis System을 활용하여 해석을 수행할 수 있다. 다른 하나는 [그림 1]의 오른쪽과 같이 단독 구동(Standalone) 형태로 해석을 수행할 수 있다. 이때 라이선스에 따라 활용할 수 있는 범위가 달라진다. 라이선스의 Capability는 다음 [그림 2]과 같다.

[그림 1] Embedded in Ansys analysis systems & Ansys standalone analysis system

[그림 2] Ansys optiSLang license capability chart
■ Embedded in Ansys (Example - Ansys mechanical)
기존 Ansys Workbench에서는 DesignXplorer(DX)라는 형태로 최적화를 수행할 수 있도록 기능을 제공해 왔다. 다만, 2025년도부터 optiSLang의 base라는 부분으로 통합되어 현재 사용되고 있다. 기존 DX와 기능은 같지만 변수는 10개 이하, 목적함수는 2개 이하, 구속조건은 5개 이하 등으로 사용할 수 있는 개수가 제한이 되었다. 최근에 개발되고 있는 최적화 알고리즘들과 DOE, Metamodel을 생성하기 위한 알고리즘들 사용에 제약이 있지만 기존의 DX를 사용하였다면 사용에 큰 차이는 없다. 즉, Workbench 환경에서 기존과 동일하게 사용할 수 있다. 앞서 설명한 내용과 동일하게 optiSLang Pro 라이선스를 사용하면 동일한 환경에서 optiSLang 메뉴를 추가로 활용이 가능하다. 다만, Robustness의 경우 Premium 이상의 라이선스가 요구된다.

[그림 3] DesignXplorer menu & optiSLang menu in Ansys Workbench
Embedded 환경에서 최적화를 위해 Parameter를 설정하면 자동으로 Parameter Set이 설정되고 이후에 최적화를 수행할 수 있다. 최적화의 설계 변수는 보통 CAD tool에서 1차적으로 설정한다. Ansys의 경우 DesignModeler™나 SpaceClaim®, Discovery™에서 CAD의 설계 변수를 설정할 수 있다. 본 글에서는 SpaceClaim으로 변수를 설정하여 예제를 작성하였다.
l CAD 설계 변수
Ø 길이, 두께, 위치 등 다양한 설계 변수를 설정할 수 있다.

[그림 4] Parameter setting in function Move and Pull
Ø Script으로 설정값 등도 설계 변수로 설정할 수 있다.

[그림 5] Parameter setting in recording script
Ø Beam의 Cross section 수치의 경우 Mechanical™에서 변수 설정이 더 수월하다.

[그림 6] Parameter setting in mechanical
Mechanical내의 parameter는 입력하는 값 앞에 표기된 네모 상자를 클릭하여 “P”로 변경하면 입력 변수 또는 출력 결괏값으로 설정할 수 있다. 입력 변수는 mechanical내에서 수정이 가능한 값이며 출력 결괏값은 무게, 응력, 변위 등 입력 변수가 변하면 그 값에 의해 해석 결과로 나오는 값이다.
Embedded 환경의 DX나 optiSLang pro의 경우 parameter설정을 하면 Process Integration이 완료된다. [그림 7]에서와 같이 변수 설정이 완료되면 Workbench Schematic창에 parameter set이 자동으로 설정되어 확인이 가능하다.

[그림 7] Process Integration in Ansys Workbench

[그림 8] Parameter Set
Parameter Set을 “더블클릭” 또는 “우 클릭>Edit”로 설정에 들어가면 [그림 8]의 창으로 전환된다. 본 창에서는 parameter들로 설정한 값들을 확인하고 변경하여 실제로 해석에 잘 반영되어 결괏값들이 변경이 되는지 확인한 이후에 최적화를 수행하면 된다.
■ Mechanical (optiSLang Standalone)
Mechanical을 parameter(변수, 결과)들을 설정한 Project를 생성했다면 optiSLang Standalone에서 Solver wizard를 통해 Process Integration을 생성할 수 있다. Standalone의 경우 wizards를 통해 optiSLang에서 사전에 구성한 work process를 편하게 구성할 수 있다.
PI의 work process는 기본적으로 Input값 설정 -> 해석 파일 수정 -> solving -> output값 취합 순서이다. 각각의 optiSLang schematic에서 Node와 Connection으로 설정할 수 있으나 이를 쉽게 설정하도록 wizard로 만들어 놓았다.
앞서 설명한바와 같이 Standalone의 optiSLang을 사용하기 위해서는 Premium의 라이선스가 필요하다.

[그림 9] optiSLang Standalone wizard for Ansys Workbench
optiSLang Standalone의 새로운 파일을 생성하면 [그림 9]의 배경과 같이 창이 뜬다. 우측 상단의 Wizards를 통해 Ansys Workbench를 선택하고 앞서 Workbench Mechanical환경에서 parameter 설정한 **.wbpj 파일을 열어서 진행할 수 있다.
기존에 설정된 Parameter들을 토대로 input값들은 Parameters에 결괏값은 Responses에 정렬되며 사용할 변수와 결괏값을 선택하여 PI를 생성할 수 있다. [그림 10]과 같이 Drag&Drop으로 쉽게 설정이 가능하다. optiSLang Schematic창에 [그림 11]과 같이 표현되고 Sensitivity wizard나 Optimization wizard를 통해 민감도 분석, Metamodel 생성, 최적화 수행 등을 할 수 있다.

[그림 10] Input parameters & output responses setting in Workbench wizard

[그림 11] Process Integration of mechanical in optiSLang Standalone
■ LS-DYNA
LS-DYNA의 경우 k파일을 통해 해석의 전처리 작업이 완료되며 이를 Solver wizard로 설정하여 Process Integration을 수행할 수 있다. 다만, LS-DYNA의 k파일의 경우 자릿수에 해석 파일이 굉장히 민감하고 동일한 위치에 변수가 없을 수 있기 때문에 [그림 12]와 같이 사전에 변수를 다음과 같이 설정해두면 optiSLang solver wizard에서도 자동으로 변수로 설정한 값들을 인식함으로 편하게 작업할 수 있다.
[그림 13]과 같이 optiSLang wizard를 Schematic창에 올려놓고 Ansys LS-DYNA를 선택하여 PI 설정을 할 수 있다. 다만, 앞서 언급했던 바와 같이 k파일에서는 자리수가 중요하기 때문에 optiSLang에서 Parameter의 유효 자릿수 설정이 중요하다. [그림 14]에서처럼 초기 기본 셋팅은 18.16lf로 되어 있는데 사용하고자 하는 자릿수로 변경하여야 한다. 수정할 때 소수점 자리의 경우 변수의 범위에 따라 값의 변경이 없을 수 있다. 예를 들어 하기 예제의 변수 “Rfs” 경우 값은 0.5이나 변수의 범위를 0.45~0.55로 설정하고 Format을 %0.1lf로 설정하면 값의 변화가 없이 0.5값만 반영되니 변수의 범위까지 고려하여 수정이 필요하다.

[그림 12] LS-DYNA k파일 변수 설정

[그림 13] optiSLang Standalone wizard for Ansys LS-DYNA

[그림 14] Input parameters setting in LS-DYNA wizard
LS-DYNA의 결과 파일인 binout파일을 선택하고 Edit을 통해 [그림 15]에서와 같이 responses로 사용될 값들을 사전에 정의하고 나면 **.xml파일이 생성 및 자동 적용되고 open을 통해 설정한 response들을 solver output값으로 불러올 수 있다.

[그림 15] Output responses setting in LS-DYNA wizard
Mechanical 보다 복잡한 형태로 Schematic창에 생성된 것을 확인할 수 있다. Ansys embedded가 아니라면 input parameter와 output response 그리고 해석을 돌리는 solver가 단독으로 존재하기에 다음 [그림 16]과 같이 설정된다. 각 Node들과 Connection을 잘 파악하고 있다면 wizard가 아닌 복잡한 형태의 원하는 Process Integration을 하는 데도 도움이 된다.

[그림 16] Process Integration of LS-DYNA in optiSLang Standalone
■ Rocky
Rocky의 경우 Input 변수를 설정하고 저장된 파일을 선택하여 PI 설정을 할 수 있다. Rocky는 기본 교육 예제 파일 중 “workshop_02_pre-processing”를 선택하여 예제로 사용하였다. 입자의 구름마찰에 따라 안식각이 달라지는 예제이다. 이 예제의 경우 해석이 완료되고 Python 코드에 의해 생성된 angle.json 결과 파일을 추가 output response로 적용하는 과정을 설명하기 위해 선택하였다. 생성될 output 값을 설정하기 위해선 1회 해석을 수행하고 저장하여 설정 준비를 완료한다.
앞선 예제들과 마찬가지로 Solver wizard를 선택, Ansys Rocky를 선택하여 Process Integration을 준비한다. [그림 18]에서와 같이 **.rocky파일을 선택하면 [그림 19]와 같이 export_rocky_outputs.py의 Python파일이 생성된다.

[그림 17] optiSLang Standalone wizard for Ansys Rocky

[그림 18] optiSLang Standalone wizard for Ansys Rocky_open files

[그림 19] optiSLang Standalone wizard for Ansys Rocky_output python

[그림 20] Process Integration of Rocky in optiSLang Standalon
1차적으로 Rocky의 PI를 설정하면 [그림 20]과같이 설정된다. 입력 변수 변환을 위한 파일인 **_osl.in이 생성되고 UpdateParameters를 통해 변경될 변수가 인식되도록 한다. 내부적으로 변경된 변수를 인식하여 solver가 실행되도록 batch script들을 생성하여 자동을 적용한 node들을 확인할 수 있다. Output도 마찬가지로 해석 후 결과를 불러오는 파일인 **_osl.out이 생성되고 자동으로 적용되어 전체 process로 표현된다.
당연히 Rocky에서 계산된 결과 값을 response로 설정할 수 있으며 다음 예제와 같이 해석 후 따로 저장되도록 추출한 output값도 node를 추가할 수 있다. 본 예제는 안식각에 대한 값을 **.json 파일로 저장하도록 설정되어 있어 필요로 하는 output node를 선택 및 Drag&Drop 형태로 추가할 수 있다.

[그림 21] Additional output node setting
추가한 **.json 파일을 Load하여 output으로 받고자 하는 값을 Responses로 옮겨 설정을 완료할 수 있다.

[그림 22] output responses setting
■ 3rd Party Tool (Moldflow & mechanical FSI Process Integration)
앞선 wizard들의 workflow가 익숙하다면 다음과 같이 batch run을 통해 다양한 외부 해석 tool들과도 PI를 생성할 수 있다. [그림 23]은 연계 해석의 전반적인 workflow를 나타낸다. 특정 사출 조건에 대한 사출 해석을 수행할 수 있는 해석 파일인 **.sdy을 생성하였다. 사출 조건에 따른 해석 결과로 mechanical에서는 섬유 배향 방향 파일인 **.nod파일, 격자파일인 **.cdb파일, 내부잔류응력 파일인 **.ist파일을 저장하도록 하였다. 이어지는 구조해석에서는 앞서 저장된 결과 파일들을 불러오고 특정 구조 하중에 따른 구조해석이 수행되도록 설정하였다. 추가적인 구조해석에서의 변수도 설정할 수 있지만 예제에서는 따로 설정은 하지 않았다.
[그림 24]는 Moldflow의 PI workflow이다. 우선 Moldflow의 input값을 변경하여 **.sdy 파일을 수정하도록 한다. 이후 수정된 파일을 batch run을 통해 해석을 수행하고 해석 완료 후 원하는 결과를 추출하도록 한다. [그림 25]는 Mechanical의 PI workflow이다. 앞선 해석이 완료되고 결과가 저장되면 구조해석의 결과를 불러와 경계 조건과 하중 조건 등을 설정한 뒤 구조해석을 수행할 수 있다.

[그림 23] Overall workflow of Moldflow & mechanical FSI Process Integration
[그림 24] Workflow of Moldflow Process Integration
[그림 25] Workflow of mechanical Process Integration
맺음말
이번 호에서는 Ansys optiSLang를 이용하여 다양한 해석 tool들 간의 Process Integration 방법에 대해서 알아보았다. 만약 단순하게 설계의 안전성을 확인하기 위해 해석을 수행한다면 많은 해석이 필요하지 않을 수 있다. 하지만 설계 단계에서 다양한 해석을 통한 설계 방향성을 찾고 이후 최적화된 설계를 원한다면 많은 수의 해석이 필요하게 된다. 이러한 점에서 다양한 해석 tool들의 해석 자동화인 Process Integration은 매우 중요하다. 매번 CAD를 수정하고 해석 파일을 생성한 뒤 결과를 확인하는 작업은 Process Integration을 통해 자동화할 수 있다. 이를 통해 다양한 변수 변경, 해석 및 결과를 쉽게 도출할 수 있다. 많은 양의 back data를 요구하는 AI시대에 optiSLang을 활용한 최적의 해석 자동화 프로세서가 업무 향상에 큰 도움이 되길 기대한다.