DMAP
DMAP(Direct Matrix Abstraction Program)는 MSC Nastran의 solution sequence를 구성·수정하는 데 쓰이는 매크로 언어다 [MSC_Nastran_2022.4_Getting_Started_Guide.pdf p.61].
정의·용도
DMAP는 solution sequence를 만들고 수정하기 위한 macro language로, 강력한 행렬 명령과 유연한 scalar variable(parameter) 연산을 함께 제공한다 [MSC_Nastran_2022.4_Getting_Started_Guide.pdf p.61]. 데이터베이스의 attach·초기화·조작에는 File Management Section(FMS)이 사용된다 [MSC_Nastran_2022.4_Getting_Started_Guide.pdf p.61].
DMAP 프로그램은 module이라 불리는 일련의 기능 블록으로 구성되며, 각 module은 고유한 이름과 특정 기능을 가진다 [MSC_Nastran_2022.4_Getting_Started_Guide.pdf p.61]. module들은 순차적으로 실행되고, 분기(branching)와 반복(looping)은 DMAP control statement로 수행된다 [MSC_Nastran_2022.4_Getting_Started_Guide.pdf p.61]. module들은 MSC Nastran Executive System(NES)을 통해 data block과 parameter라는 논리적 데이터 집합으로 서로 통신한다 [MSC_Nastran_2022.4_Getting_Started_Guide.pdf p.61].
DMAP의 도입·문법·개념, data block 설명, NDDL statement 설명, 그리고 자주 참조되는 DMAP Module 설명은 MSC Nastran DMAP Programmer’s Guide 에 정리되어 있다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.16].
형식 / 필드 / 구문
제어 흐름 (Conditional Branching)
조건 분기는 IF ( ) THEN statement로 표현하며, expression이 TRUE/FALSE인지에 따라 실행할 DMAP 블록을 결정한다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.47]. 기본형은 다음과 같다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.47]:
IF(expression) THEN $
. DMAP executed if expression is TRUE
ELSE $
. DMAP executed if expression is FALSE
ENDIF $
ELSE IF(expression)THEN 를 사용하면 다중 조건 분기를 만들 수 있다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.47]. expression은 TRUE 또는 FALSE의 논리값을 내는 관계·논리 연산이다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.47].
Executive Control에서의 DMAP 수정
Executive Control 명령으로 solution sequence의 DMAP를 조작한다.
| 명령 | 기능 |
|---|---|
ALTER | subDMAP 내 DMAP statement를 삽입/삭제한다 [MSC_Nastran_2022.4_Quick_Reference_Guide.pdf p.146] |
COMPILE | DMAP statement를 컴파일한다 [MSC_Nastran_2022.4_Quick_Reference_Guide.pdf p.151] |
ALTER 는 'string1','string2', occurrence, offset 등의 describer로 대상 DMAP statement 범위와 위치를 지정한다 [MSC_Nastran_2022.4_Quick_Reference_Guide.pdf p.147]. occurrence는 subDMAP 시작 기준으로 몇 번째 문자열 출현을 쓸지(Integer > 0, Default = 1), offset은 참조 statement로부터의 위·아래 오프셋(Integer, Default = 0)을 나타낸다 [MSC_Nastran_2022.4_Quick_Reference_Guide.pdf p.147].
Module과 Statement
DMAP Module과 Statement는 List, Description Summary, Detailed Description의 형태로 매뉴얼에 정리되어 있다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.1507]. Module은 기능에 따라 Matrix Modules [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.1509], Utility Modules [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.1515] 등으로 분류된다. 대표적인 module로는 결과 출력을 다루는 OUTPUT2, OUTPUT4, OFP가 있다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.2776]. PRTPARM 은 non-NDDL parameter 값과 DMAP message를 출력하는 module이며, NDDL parameter는 MESSAGE statement를 사용한다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.2341].
사용 예
SOL 100 은 Preface module(IFP1, XSORT, IFPi)을 직접 지정하지 않고도 자신의 DMAP sequence를 실행하려는 DMAP writer를 위해 제공된다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.52]. Executive Control에 다음을 넣는다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.52]:
SOL 100
COMPILE USERDMAP
ALTER 2
DMI 또는 DTI Bulk Data로 행렬·테이블을 입력하려면 DMIIN / DTIIN module을 지정해야 한다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.52]. 예를 들어 다음 statement는 행렬 AE와 테이블 TATE를 생성하여 이후 DMAP에서 참조할 수 있게 한다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.52]:
DMIIN DMI,DMINDX/A,B,C,D,E,,,,,/ $
DTIIN DIT,DTINDX/TA,TB,TC,TD,TE,,,,,/ $
구조화된 solution sequence(SOLutions 101~200)의 NDDL에 정의된 data block이나 parameter를 참조하는 TYPE statement도 삽입할 수 있다 [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.52].
관련 항목
- Executive Control
- File Management Section
- NDDL
- ALTER
- COMPILE
- DMI
- DTI
- SOL 100
- OUTPUT2
- OUTPUT4
- MSC Nastran DMAP Programmer’s Guide
- MSC Nastran Getting Started Guide
- MSC Nastran Quick Reference Guide
출처
- [MSC_Nastran_2022.4_Getting_Started_Guide.pdf p.61]
- [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.16]
- [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.47]
- [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.52]
- [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.1507]
- [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.1509]
- [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.1515]
- [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.2341]
- [MSC_Nastran_2022.4_DMAP_Programmer_Guide.pdf p.2776]
- [MSC_Nastran_2022.4_Quick_Reference_Guide.pdf p.146]
- [MSC_Nastran_2022.4_Quick_Reference_Guide.pdf p.147]
- [MSC_Nastran_2022.4_Quick_Reference_Guide.pdf p.151]