Skip to content

절점 명령

절점 명령어는 절점 또는 절점집합(nset)과 관련된 명령이다.

  • *NODE: 절점을 정의
  • *NGEN: 절점을 라인패턴으로 생성
  • *NSET: 절점집합을 지정
  • *NFILL: 절점을 채우기로 생성
  • *NCOPY: 절점을 복사

절점은 나중에 사용하기 위해 1보다 큰 정수를 고유번호로 갖는다(절점번호). 절점집합은 절점들이 집합으로 문자열로 형태로 고유이름을 갖는다.

*Node

절점을 정의한다.

*Node [, NSet=NSet, Offset=nodeIdOffset, Ref=ucs]
  id, x, y, z
  ...
Keyword line
  • NSET=NSET: 생성되는 절점이 포함될 절점집합(optional). 미리 정의한 절점집합이 없는 경우 새로운 절점집합이 생성된다.
  • Offset=nodeIdOffset: 절점번호 offset. (optional, default는 0)
  • Ref=ucs: 절점좌표와 shell nodal director 벡터의 기준좌표계 (optional, default는 전체좌표계)
First data line and subsequent data line
  • id, x, y, z: 절점변호(required)와 좌표(optional, defaut 0,0,0)

옵션 파라미터인 NSet으로 데이터라인에서 만들 절점이 포합될 절점집합을 지정할 수 있다. 키워드라인에서 미리 정의된 절점집합이 없는 경우 새로운 절점집합이 생성된다. 이미 존재하는 절점을 다시 정의하면 오류가 발생한다.

Example
*Node  # 절점 1을 생성. 절점집합에 소속되지 않음.
  1, 1,0.0

*Node, NSet=WEB  # 절점 1001과 1002를 생성하고 WEB 절점집합으로 지정됨
 1001, 10., 0., 0.
 1002, 10., 0., 10.

*Node
 1001, 20., 0., 0.   # 이미 1001번 절점이 있으므로 오류 발생

*CoordinateSystem, TYPE=UCS, Name=ucs
 1,0,0,0,1,0
 10,10,0

*Node, Offset=10000, Ref=ucs
 1, 10,5,0    # 10001 and coordinate values on ucs
 2, 11,4,1    # 10002 and coordinate values on ucs

*NSet

절점 집합을 정의한다.

*NSET, [TYPE=type], Name=name[,UNSORTED]
  ...
Keyword line
  • TYPE=type: 절점을 지정하는 방식을 지정함. 생략될 경우 SELECT 연산이 지정됨.
    • Select: 절점을 지정하여 절점집합 지정
    • Element: 요소번호나 요소집합을 지정하여 연결된 절점을 절점집합으로 지정
    • Surface: Surface을 지정하여 surface를 구성하는 절점을 절점집합으로 지정
    • Box: xmin < X < xmax, ymin < Y < ymax, zmin < Y < zmax 내의 절점을 선택하여 절점집합으로 지정
  • Name=name: 절점집합(required)

*NSET 명령은 미리 정의되어 있는 절점을 name으로 지정한 절점집합으로 지정한다. name으로 지정한 절점집합이 없으면 새로 생성한다. type은 절점을 선택하는 방식이다. .

데이터라인이 없다면 그 이름의 절점집합이 존재한다면 아무 작업을 하지 않고, 그렇지 않다면 빈 절점집합을 정의한다.

*NSet, Type=Select

절점, 절점집합, 절점지정패턴을 지정하여 주어진 절점집합으로 지정하거나 절점집합에서 절점을 삭제

*NSet, [Type=Select,] Name=name
  source, ...
  ...
First data line and subsequent data line
  • source: nset에 포함될 절점번호, 절점집합 또는 절점번호패턴. 절점번호패턴은 start:end:spacing 형태이고, spacing은 1인 경우 생략가능. -로 시작하면 절점집합에서 제거(순차연산).
Example
*NSet, Name=A
 1, 10, up, 20:30:2, 101:105   # 1, 10, “up”, 21, 23, ..., 30, 101, 102, ..., 105 are assigned to "A"
 slave                         # all nodes in "slab" are assigned to "A“

*NSet, TYPE=Select, Name=B
 A, -2, B, -C   # A 절점 집합에서 –2 절점 제거한 후, B 절점 집합 내 절점 추가, 
                # 마지막으로 C 절점 집합의 절점 제거
 -1:5:2, 9:11  # 절점번호패턴에서도 – 연산 지원

*NSet, Type=Generate

절점번호를 등간격으로 선택하는 연산을 통해 절점 집합 지정

*NSet, Type=Generate, Name=name
  n1, n2, increment
  ...
First data line and subsequent data line
  • n1,n2,increment: n1부터 n2까지 increment 간격의 절점들을 nset에 추가(required). 미리 정의되지 않은 절점은 무시된다
Example
*NSET, TYPE=GENERATE, Name=B
 1, 10, 1   # 1,2, ..., 10 nodes are assingend to "B"

*NSet, Type=Element

요소번호, 요소집합, 요소번호패턴을 지정하여 연결된 절점을 절점집합으로 지정

*NSET, TYPE=ELEMENT, Name=name
  target, ...
  ...
First dataline and subsequent datalines
  • target: 요소번호, 요소집합 또는 요소번호패턴. 요소번호패턴은 start:end:spacing 형태이고, spacing은 1인 경우 생략가능.

데이터라인에서 지정한 요소번호나 요소집합에 있는 요소에 연결되어 있는 절점을 절점집합으로 지정합니다. 이미 절점집합이 존재하는 경우에는 그 절점 집합에 절점이 추가된다.

Example
*NSet, Type=Element, Name=Connected
 1, slab, 1:100:2

*NSet, Type=Surface

Surface를 지정하여 surface를 구성하는 절점을 절점집합으로 지정

*NSet, Type=Surface, Name=name
  target, ...
  ...
First dataline and subsequent datalines
  • target: Surface 이름

데이터라인에서 지정한 Surface를 구성하는 절점을 절점집합으로 지정합니다. 이미 절점집합이 존재하는 경우에는 그 절점 집합에 절점이 추가된다.

Example
*NSet, Type=Surface, Name=Connected
 upstream, bottom

*NSet, Type=Box

xmin < X < xmax, ymin < Y < ymax, zmin < Y < zmax 내의 절점을 선택하여 절점집합으로 지정

*NSet, Type=Box, Name=name
  [X=xmin,xmax] [Y=ymin,ymax] [Z=zmin,zmax] [NSET|ELSET|SURFACE=target]
  ...
First dataline and subsequent datalines
  • X=xmin,xmax: BOX의 X 방향 경계
  • Y=ymin,ymax: BOX의 Y 방향 경계
  • Z=zmin,zmax: BOX의 Z 방향 경계
  • NSET|ELSET|SURFACE=target: 찾기의 대상이 되는 절점집합을 지정. 없는 경우 모델내 전체 절럼. NSET이면 절점집합. ELSET이면 요소집합을 구성하는 절점들, SURFACE는 면을 구성하는 절점들이 대상
Example
*NSet, Type=Box, Name=BoxSet
 X=0.1,100, Y=10., 20.  

*NSet, TYPE=Box, Name=BoxSet2
 Y=10., 20., NSet=Slab
 X=0.1,100,  ELSet=El
 Z=-0.1, 0.1, Surface=Top

*NGEN

양단 절점을 잇는 선상에 중간 절점을 생성

*NGen, NSet=nset
  n1 n2 increment, ratio
  ...

Keyword line
  • nset: 양단절점과 새로 생성되는 절점이 포함될 절점집합[Optional]. 미리 정의된 절점집합이 없는 경우 새로운 절점집합이 생성된다.
First dataline and subsequent datalines
  • n1,n2,increment: n1부터 n2까지 increment 간격으로 절점들을 생성. n1, n2는 미리 정의되어 있어야 함.(required)
  • ratio: 시작 세그먼트에 대한 마지막 세그먼트의 길이 비율. ratio가 1이면 등간격으로 절점 생성(optional, default 1)

새로 생성되는 절점이 이미 생성된 절점이면 오류를 발생한다. 한 가지 예외는 새로 생성하려는 절점이 기존에 생성한 절점과 좌표값이 동일한 경우이다. 새로 생성되는 절점은 좌표만 생성되며, UCS와 shell nodal director 등을 복사되지 않는다. 따라서 필요한 경우 *Distribution, TYPE=UCS*Distribution, TYPE=ShellNodalDirector 등의 명령으로 지정해야 한다. ratio가 지정되지 않는 경우에는 등간격으로 절점이 생성된다. ratio 지정시 다음의 수식과 같은 세그먼트 길이를 갖도록 중간 절점을 생성한다.

\[ L_k = [ \frac{ r-1}{n-1} k + 1 ] L_0, ~~~~ {\rm where,~~~ } L_0 = \frac{2}{n(r+1)}L, ~~ k=0,1,...,n-1 \]

따라서 좌표계의 값으로 표현하면 다음과 같다.

\[ x_k = x_0 + l_k s_x , ~~y_k = y_0 + l_k s_y ~~, z_k = z_0 + l_k s_z \]

where

\[ l_k = \frac{r-1} {n-1} \frac{k(k-1)} {2} + k \]
\[ s_x = \frac{2}{n(r+1)} (x_n - x_0 ) ~~ s_y = \frac{2}{n(r+1)} (y_n - y_0 ) ~~ s_z = \frac{2}{n(r+1)} (z_n - z_0 ) \]
Example
*NGen, NSet=left
  1,  10, 1
101, 110, 1
 20,  25, 1, 0.5   # 24-25사이 거리는 20-21사이의 거리의 0.5배, 그사이는 선형보간

*NFILL

양단의 절점집합에서 절점을 생성

*NFill, NSet=nset
  nset1, nset2, increment, ratio
  ...
Keyword line
  • NSET=nset: 양단의 절점집합내의 절점과 새로 생성된 절점이 포함될 절점집합 [Optional]. 미리 정의된 절점집합이 없는 경우 새로운 절점집합이 생성된다.
First dataline and subsequent datalines
  • nset1, nset2, increment: 양단의 절점집합 nset1과 nset2사이로 increment 간격으로 절점을 생성. nset1과 nset2의 절점 수는 동일해야 함.(required)
  • ratio: 시작 세그먼트에 대한 마지막 세그먼트의 길이 비율. ratio가 1이면 등간격으로 절점 생성(optional, default 1)

양양단의 절점집합내의 절점수는 서로 동일해야 한다. 양단의 절점집합에서 서로 대응하는 절점들에 대해 *NGen을 여러번 수행한 것과 같다. 새로 생성되는 절점이 이미 생성된 절점이면 오류를 발생한다. 한가지 예외는 새로 생성하려는 절점이 기존에 생성한 절점과 좌표값이 동일한 경우이다. 새로 생성되는 절점은 좌표만 생성되며, UCS와 shell nodal director 등을 복사되지 않는다. 따라서 필요한 경우 *Distribution, TYPE=UCS*Distribution, TYPE=ShellNodalDirector등의 명령으로 지정해야 한다. ratio가 지정되지 않는 경우에는 등간격으로 절점이 생성된다. ratio 지정시 다음의 수식과 같은 세그먼트 길이를 갖도록 중간 절점을 생성한다(*NGen 참조)

Example
*NSet, Name=Name=left
 1, 10, 1

*NSet, Name=right
1001, 1010 1

*NFill, NSet=LoadingSurface1
 left, right, 10

*NCOPY

절점을 복사해서 생성

*NCopy, NSet=nset[, Multiple=multiple]
  source_nset, increment, dx, dy, dz
  ...
Keyword line
  • NSET=nset: 복사되어 새로 생성되는 절점이 포함될 절점집합[Optional]. source_nset을 제외된다. 미리 정의된 절점집합이 없는 경우 새로운 절점집합이 생성된다.
  • MULTIPLE=multiple: *NCOPY의 수행 회수[Optional]. 디폴트로 1이며, 1이면 1번 복사됨을 의미
First dataline and subsequent datalines
  • source_nset, increment, dx, dy, dz: 소스 절점집합 source_nset에 있는 절점을 dx, dy, dz만큼 좌표값을 증가시키고, increment 만큼 절점번호를 변경하여 절점을 생성. dx, dy, dz의 디폴트값은 0.

*NCOPY는 미리 정의된 절점집합의 절점들을 주어진 오프셋만큼 좌표를 이동시켜 새로운 절점을 생성(복사)한다. 새로 생성되는 절점이 이미 생성된 절점이면 오류를 발생한다. 한가지 예외는 새로 생성하려는 절점이 기존에 생성한 절점과 좌표값이 동일한 경우이다.

새로 생성되는 절점은 좌표만 생성되며, UCS와 shell nodal director 등을 복사되지 않는다. 따라서 필요한 경우 *Distribution, TYPE=NodeCS*Distribution, TYPE=ShellNodalDirector 등의 명령으로 지정해야 한다.

Example
*NODE
 1, 0., 0., 0.
 4, 1., 0., 0.

*NGEN, NSET=left
 1, 4, 1           # left = 1,2,3,4

*NCOPY, NSET=all, MULTIPLE=2
 left, 100, 0., 1., 0.   # all = 101 102 103 104, 201,202,203,204 절점 생성 및 셋지정