15. 모델링 편의
*Include
*INCLUDE
는 외부 텍스트 파일을 삽입하는 명령이다. 입력파일이 복잡해 질 경우 적절히 사용된다.
*Include, File=file, [P=parameters]
Keyword line
- File=file: file name
- parameters: parameter expression. 이중따옴표(")로 둘러쌓여야 함. 생략 가능함.
Example
*INCLUDE, File=concrete.inp
*INCLUDE, File=model.inp, P="<S>=100. <T>=15.3, <Solver>={A,10}"
*DefaultParameter
파라미터 표현 사용시, 파라미터가 지정되지 않는 경우 사용되는 디폴트 파라미터 표현식을 지정
*DefaultParameter, parameters
Keyword line
- parameters: parameter expression. 이중따옴표(")로 둘러쌓여야 함.
파라미터 표현식은 hfAnalyzer를 커맨트라인에 실행하거나 *Include
문에서 지정하여 사용가능하다. 지정하지 않는 파라미터 표현식에 대한 디폴트 표현식을 지정한다. 예를 들어 아래와 같은 입력파일이 있다고 가정한다.
model.inp
*DefaultParameter, "<E>=2E9, <nu>=0.18"
*Material, TYPE=IsoElasticity, Name=myMat
<E>, <nu>
...
만약 명령행에서 다음과 같이 실행했다고 가정할 때는 다음과 같이 인식된다.
> hfAnalzyer model.inp
→ <E>와 <nu>가 DefaultParamter에서 지정한 2E9, 0.18로 각각 치환된다.
> hfAnalzyer model.inp –p "<E>=5E9"
→ <E>를 상위에서 지정하고 있으므로 그 값(5E9)를 사용하고 DefaultParamter 구문에서 지정한 값 <E> 값은 무시된다. 하지만 <nu>는 0.18을 적용한다.
만약 *Include, File=model.inp, P="<E>=5E9""
등과 같이 사용하더로 위와 같은 개념으로 적용할 수 있다.
▪ 주의
*DefaultParameter
구문은 파일내에서 여러번 사용할 수 있으나 그 파일 전체에 대해 적용된다. 즉, 파일의 뒤쪽에서 지정하더라도 그 파일의 처음에 정의한 것과 같다.
*Distribution
절점 또는 요소에 지정하는 특성치를 부과
*Distribution, Type=type
target, ...
...
Keyword line
-
Type=type: type of distribution (required)
- Section: 요소에 단면을 지정 또는 해제
- BeamCS: 보요소에 ECS를 지정 또는 해제
- BeamEndRelease: 보요소에 moment end release를 지정 또는 해제
- TendonHostElset: 텐던 요소의 부모요소집합 지정 또는 해제
- ShellThicknessByProjection: 투영을 통해 쉘 요소의 절점당 두께를 지정하거나 해제
- MCKElementScaleFactor:: Spring/EarthSpring/PointMass 요소에 ScaleFactor를 지정하거나 해제
- MCKElementCS: Spring/EarthSpring/PointMass 요소에 요소좌표계를 지정하거나 해제
- MovingSpringInitialPosition: 이동스프링의 초기위치를 지정 또는 해제
*Distribution, Type=Section
요소의 단면 물성치를 지정하거나 해제
*Distribution, TYPE=Section
target1,target2,..., section
...
First dataline and subsequent datalines
- target1,target2,...: 단면 물성치를 지정할 요소번호, 요소집합, 또는 요소번호패턴(required). 요소번호패턴은
start:end:spacing
형태이고,spacing
은 1인 경우 생략가능. - section: Section name(required)
요소에 단면물성은 *Element
에서 지정가능하지만, 생략할 경우 *Distribution, TYPE=Section
으로 지정가능하다. 이 명령으로 이미 지정된 단면을 삭제하는 것도 가능하다.
프로그램에서는 라인내에서 2개 이상의 토큰이 있는 경우 먼저 제일 뒤에 제시된 토큰이 section인지를 검토하고 그렇지 않은 경우에는 주어진 section이 없는 것으로 인식한다. section이 없는 경우 대상 요소에 이미 지정되어 있는 section이 해제된다. 단면을 삭제하고자 하는 요소집합과 단면 명칭이 동일한 경우 한 라인에 요소집합만을 기입하도록 한다.
요소번호패턴으로 대상을 지정하는 경우 존재하지 않는 요소는 오류를 유발하지 않고 단순히 무시한다.
Example
*Distribution, TYPE=Section
left, section1 # 요소집합 "left"에 단면 "section1"를 지정
right, middle, section2 # 요소집합 "right", “middle”에 단면 "section2"를 지정
1,2,3,4, section3 # 요소 1,2,3,4 단면 “section3” 지정
2:10 # 2~10 요소에 대해 이미 지정된 단면 지정을 삭제
*Distribution, Type=BeamCS
3차원 보 요소의 ECS를 지정하거나 해제
*Distribution, Type=BeamCS
target1,target2, ..., beamcs
...
First dataline and subsequent datalines
- target1,target2, ...: 요소좌표계를 적용할 요소번호, 요소집합, 또는 요소번호패턴(required). 요소번호패턴은
start:end:spacing
형태이고,spacing
은 1인 경우 생략가능. 3차원 보 요소일때만 유효함. - beamcs: 보의 ECS (optional)
대상 요소가 3차원 보요소일 때만 유효하다. 프로그램에서는 라인내에서 2개 이상의 토큰이 있는 경우 먼저 제일 뒤에 제시된 토큰이 BeamCS인지를 검토하고 그렇지 않은 경우에는 주어진 beamcs이 없는 것으로 인식한다. beamcs가 없는 경우 대상 요소에 이미 지정되어 있는 beamcs이 해제된다. BeamCS를 삭제하고자 하는 요소집합과 BeamCS 명칭이 동일한 경우 한 라인에 요소집합만을 기입하도록 한다.
요소번호패턴으로 대상을 지정하는 경우 존재하지 않는 요소는 오류를 유발하지 않고 단순히 무시한다.
Example
*CoordinateSystem, Type=BeamCS, Name=beamcs
90
*Distribution, Type=BeamCS
1, 2, 3, beamcs
beamSet, beamcs
beamSet2, beamSet3, beamcs
beamset1, 1:10 # 해제
*Distribution, Type=BeamEndRelease
보요소의 end-release를 보 요소에 지정하거나 해제
*Distribution, Type=BeamEndRelease
target1,target2, ..., releaseCode
...
First dataline and subsequent datalines
- target1,target2, ...: 양단에 end-release 조건을 적용할 요소번호, 요소집합, 또는 요소번호패턴(required). 요소번호패턴은
start:end:spacing
형태이고,spacing
은 1인 경우 생략가능. 보요소일때만 유효함. - releaseCode: 보의 요소의 end release code(optional). Rx1, Ry1, Rz1, Rx2, Ry2, Rz2의 조합. 예를 들어 Rz1|Rz2.
대상 요소가 2차원 보요소일 경우 Rz1, Rz2만 유효하다. releaseCode를 쓰지 않는 경우 미리지정되어 있는 end release code가 해제된다.
요소번호패턴으로 대상을 지정하는 경우 존재하지 않는 요소는 오류를 유발하지 않고 단순히 무시한다.
Example
*Distribution, Type=BeamEndRelease
1, 2, 3, Rz1|Rz2
beamSet, Rx1|Ry1|Rz1
1:10 # 1-10 요소의 모든 릴리즈코드가 해제
*Distribution, Type=TendonHostElset
Tendon 요소의 부모요소집합을 지정하거나 해제
*Distribution, Type=TendonHostElset
target1,target2, ..., host
...
First dataline and subsequent datalines
- target: 부모요소를 적용할 요소번호, 요소집합, 또는 요소번호패턴(required). 요소번호패턴은
start:end:spacing
형태이고,spacing
은 1인 경우 생략가능. Tendon 요소만 유효함. - host: Host elset(option).
호스트요소집합(host)이 주어지지 않는 경우, 지정된 요소에서 호스트를 해제한다. 프로그램에서는 라인내에서 2개 이상의 토큰이 있는 경우 먼저 제일 뒤에 제시된 토큰이 host인지를 검토하고(즉, embeded line 요소 여부에 따라) 그렇지 않은 경우에는 주어진 host가 없는 것으로 인식한다. Host가 없는 경우 대상 요소에 이미 지정되어 있는 section이 해제된다.
요소번호패턴으로 대상을 지정하는 경우 존재하지 않는 요소는 오류를 유발하지 않고 단순히 무시한다.
Example
*Distribution, Type=TendonHostElset
1,2,3, girder
tendonSet, crossbeam
tendonSet1,tendonSet2, mainGirder
tendonSet # 해제
*Distribution, Type=ShellThicknessByProjection
투영을 통해 쉘 절점 두께를 지정
*Distribution, Type=ShellThicknessByProjection, Shape=Rectangle
target, n1,n2,n3, h1,h2,h3
target, n1,n2,n3,n4, h1,h2,h3,h4
...
First dataline and subsequent datalines
- target: 쉘 절점 두께를 투영 방법으로 적용할 절점, 절점집합, 또는 절점번호패턴(required). 절점번호패턴은 start
spacing 형태이고, spacing은 1인 경우 생략가능.
- n1,n2,n3: 3점으로 구성된 Projection plane을 구성하는 절점(required)
- h1,h2,h3: 3점으로 구성된 Projection plane의 nodal thickness(required).
- n1,n2,n3,n4: 4점으로 구성된 Projection plane을 구성하는 절점(required)
- h1,h2,h3,h4: 4점으로 구성된 Projection plane의 nodal thickness(required).
생성된 쉘 절점 두께는 *NProp, TYPE=ShellThickness
로 변환되어 기록된다. Projection plane을 구성하는 4개의 절점은 동일 평면상에 존재해야 한다. 만약 동일 평면상에 존재하지 않는 warped geometry를 갖는 경우 4개 절점의 중심에서 정의되는 평면으로 projection 된다. 따라서 warped geometry를 갖는 경우 약간의 오차가 발생할 수 있다.
Example
*Distribution, Type=ShellThicknessByProjection
slab1, 1,100,105, 0.1,0.2,0.3
slab2, 1,100,105,107, 0.1,0.2,0.3,0.4
1:200:5, 1,100,105,107, 0.1,0.2,0.3,0.4
*Distribution, Type=MCKElementScaleFactor
Spring/EarthSpring/PointMass 요소에 ScaleFactor를 지정하거나 해제
*Distribution, Type=MCKElementScaleFactor
target1,target2, ..., sf
...
First dataline and subsequent datalines
- target1,target2, ...: ScaleFactor를 적용할 요소번호, 요소집합, 또는 요소번호패턴(required). 요소번호패턴은
start:end:spacing
형태이고,spacing
은 1인 경우 생략가능. Spring, EarthSpring, PointMass 요소일때만 유효함. - sf: scale factor
Spring, EarthSpring, PointMass에서 추가적인 scale factor를 지정한다. 대상 요소가 존재하지 않거나 Spring, EarthSpring, PointMass 요소가 아닌 경우 오류를 유발하지 않고 단순히 무시한다.
Example
*Distribution, Type=MCKElementScaleFactor
1, 2, 3, 2.5 # 1,2,3 요소에 scale factor 2.5
wall, 2.5 # wall 요소집합(모두 spring 요소로 구성되어야)에 대해 scale factor 2.5 지정
*Distribution, Type=MCKElementCS
Spring/EarthSpring/PointMass 요소에 요소좌표계를 지정하거나 해제
*Distribution, Type=MCKElementCS
target1,target2, ..., ucs
...
First dataline and subsequent datalines
- target1,target2, ...: ECS를 적용할 요소번호, 요소집합, 또는 요소번호패턴(required). 요소번호패턴은
start:end:spacing
형태이고,spacing
은 1인 경우 생략가능. Spring, EarthSpring, PointMass 요소일때만 유효함. - ucs: 스프링 요소에 사용될 UCS(optional)
대상 요소가 Spring, EarthSparing, PointMass인 경우만 유효하다. 프로그램에서는 라인내에서 2개 이상의 토큰이 있는 경우 먼저 제일 뒤에 제시된 토큰이 CS인지를 검토하고 그렇지 않은 경우에는 주어진 cs이 없는 것으로 인식한다. cs가 없는 경우 대상 요소에 이미 지정되어 있는 cs이 해제된다. CS를 삭제하고자 하는 요소집합과 CS 명칭이 동일한 경우 한 라인에 요소집합만을 기입하도록 한다. 대상 요소가 존재하지 않거나 Spring, EarthSpring, PointMass 요소가 아닌 경우 오류를 유발하지 않고 단순히 무시한다.
Example
*CoordinateSystem, Type=UCS, Name=springCS
1, 1, 0, 0, 1, 0
*Distribution, Type=MCKElementCS
1, 2, 3, springCS
springSet, springCS
springSet2, springSet3, springCS
springSet # 해제
*Distribution, Type=MovingSpringInitialPosition
이동스프링의 초기위치를 지정하가나 해제
*Distribution, Type=MovingSpringIntialPosition
target, x, y
...
First dataline and subsequent datalines
- target: 이동스프링의 초기위치를 지정할 요소번호, 요소집합, 또는 요소번호패턴(required). 요소번호패턴은
start:end:spacing
형태이고,spacing
은 1인 경우 생략가능. MovingSpring 요소일때만 유효함. - P=x,y: 초기 위치(optional, default 0,0), 보요소를 대상으로하는 이동스프링은 x값만 참조
이동스프링요소(*Element, Type=MovingSpring
)는 초기위치를 지정한다(지정하지 않으면 0,0). 대상 요소가 존재하지 않거나 MovingSpring 요소가 아닌 경우 오류를 유발하지 않고 단순히 무시한다.
Example
*Distribution, Type=MovingSpringIntialPosition
100, -5, 0. # 100번 요소에 (-5,0) 적용
*Model
미리 정의된 템플릿 모델을 생성
*Model, Type=type
...
Keyword line
-
Type=type: type of model (required)
- Block2D: 2차원 솔리드 요소로 직사각형 메쉬를 생성
- Block3D: 3차원 솔리드 요소로 직육면체 메쉬를 생성
- Cylinder: 3차원 솔리드 요소로 원통 메쉬를 생성
- Wall: 쉘 요소로 직사각 메쉬를 생성
- RectangularTank: 쉘 요소로 직사각 탱크 메쉬를 생성
- CylindericalTank: 쉘 요소로 원통 탱크 메쉬를 생성
- FarField2D: SSI 해석을 위한 2차원 메쉬 생성과 자유장해석 수행후 그 결과를 유효하중으로 생성
- FarField3D: SSI 해석을 위한 3차원 메쉬 생성과 자유장해석 수행후 그 결과를 유효하중으로 생성
*Model, Type=Block2D
2차원 솔리드 요소로 직사각형 메쉬를 생성
*Model, Type=Block2D
name, startNodeId, startElementId, elementType, section
x1, x2, ..., x{n+1}, nx1, nx2, ..., nx{n}
y1, y2, ..., y{n+1}, ny1, ny2, ..., ny{n}
ix1, iy1, ...
First dataline
- name: 대표 이름. 이 명령을 통해 생성하는 절점집합, 요소집합, 면, 하중 등의 이름의 기초로 사용
- startNodeId, startElementId: 시작 절점 및 요소 번호. Auto이면 자동 계산
- elementType: 적용 요소 타입, CPS4, AC2D4 등과 같은 2차원 사각형 솔리드요소의 타입
- section: 적용 단면(optional, 없으면 요소에 단면을 적용하지 않음)
Second and third datalines
- x1, x2, ..., x{n+1}, nx1, nx2, ..., nx{n}: x 범위와 요소 개수
- y1, y2, ..., y{n+1}, ny1, ny2, ..., ny{n}: y 범위와 요소 개수
fourth dataline(optional)
- ix, iy, ...: 삭제할 블록 번호 (ix, iy)
절점, 요소 외에 절점집합, 요소집합, 면 등의 엔터티를 생성한다.
- 절점집합 : name (모든 절점)
- 요소집합 : name (모든 요소)
- 면 : name (모든 외곽 면), name-NX (X=xmin인 표면), name-PX (X=xmax인 표면), name-NY (Y=ymin인 표면), name-PX (Y=ymax인 면). - 삭제하는 블록이 있는 경우 name-i-j-PX, name-i-j-NX, name-i-j-PY, name-i-j-NY 등과 같이 삭제영역과 인접한 면을 생성한다. 이때 i,j 는 삭제하는 영역의 번호이다.
Fig. 15.5-1. Block2D mesh generation
Example
*Material, Type=IsoElasticity, Name=steel
2E6, 0.2
*Section, Type=Solid, Name=solid
steel, 0.1
*Model, TYPE=Block2D
Cant, 1, 1, CPS4, solid # 모든 요소에 solid 단면 적용
0, 20, 10
0, 4, 4
*Model, TYPE=Block2D
CantX, Auto, Auto, CPS4 # 단면 없이 요소 생성
0, 20, 10
0, 4, 4
*Model, Type=Block3D
3차원 솔리드 요소로 직육면체 메쉬를 생성
*Model, Type=Block3D
name, startNodeId, startElementId, elementType, section
x1, x2, ..., x{n+1}, nx1, nx2, ..., nx{n}
y1, y2, ..., y{n+1}, ny1, ny2, ..., ny{n}
z1, z2, ..., z{n+1}, nz1, nz2, ..., nz{n}
ix, iy, iz, ...
First dataline
- name: 대표 이름. 이 명령을 통해 생성하는 절점집합, 요소집합, 면, 하중 등의 이름의 기초로 사용
- startNodeId, startElementId: 시작 절점 및 요소 번호. Auto이면 자동 계산
- elementType: 적용 요소 타입, C3D8, AC3D8 등과 같은 3차원 육면체 솔리드요소의 타입
- section: 적용 단면(optional, 없으면 요소에 단면을 적용하지 않음)
Second, third and fourth datalines
- x1, x2, ..., x{n+1}, nx1, nx2, ..., nx{n}: x 범위와 요소 개수
- y1, y2, ..., y{n+1}, ny1, ny2, ..., ny{n}: y 범위와 요소 개수
- z1, z2, ..., z{n+1}, nz1, nz2, ..., nz{n}: z 범위와 요소 개수
First dataline
- ix, iy, iz, ...: 삭제할 블록 번호 (ix, iy, iz)
절점, 요소 외에 절점집합, 요소집합, 면 등의 엔터티를 생성한다.
- 절점집합 : name (모든 절점)
- 요소집합 : name (모든 요소)
- 면 : name (모든 외곽 면), name-NX (X=-xmin인 표면), name-PX (X=xmax인 표면), name-NY (Y=ymin인 표면), name-PX (Y=ymax인 면), name-NZ (Z=zmin인 표면), name-PZ (Z=zmax인 표면). 삭제하는 블록이 있는 경우 name-i-j-k-PX, name-i-j—k-NX, name-i-j-k-PY, name-i-j-k-NY, name-i-j-k-NZ, name-i-j-k-PZ 등과 같이 삭제영역과 인접한 면을 생성한다. 이때 i,j 는 삭제하는 영역의 번호이다.
Fig. 15.5-2. Block3D mesh generation
Example
*Material, Type=IsoElasticity, Name=steel
2E6, 0.2
*Section, Type=Solid, Name=solid
steel, 1
*Model, TYPE=Block3D
Cant, 1, 1, C3D8, solid # 모든 요소에 solid 단면 적용
0, 20, 10
0, 4, 4
0, 2, 2
*Model, TYPE=Block3D
Cant, Auto, Auto, C3D8 # 단면 없이 요소 생성
0, 20, 10
0, 4, 4
0, 2, 2
*Model, Type=Cylinder
실린더 메쉬를 생성
*Model, Type=Cylinder
name, startNodeId, startElementId, elementType, section
x0, y0, z0, R, nseg
h1, h2, ..., h{n}, nh1, nh2, ... nh{n}
First dataline
- name: 대표 이름. 이 명령을 통해 생성하는 절점집합, 요소집합, 면, 하중 등의 이름의 기초로 사용
- startNodeId, startElementId : 시작 절점 및 요소 번호. Auto이면 자동 계산
- elementType: 적용 요소 타입, C3D8, AC3D8 등과 같은 3차원 육면체 솔리드요소의 타입
- section: 적용 단면(optional, 없으면 요소에 단면을 적용하지 않음)
Second dataline
- x0, x0, z0: 원점
- R__: xy 평면상의 반경
- nseg__: No. of segments in the perimeter of quarter outer circle. If nseg is less than 4, 4 is used. (optioanl, default 0)
Third dataline
- h1, h2, ... h{n}, nh1, nh2, ..., nh: 높이방향(z방향) 높이 및 요소 개수
절점, 요소 외에 절점집합, 요소집합, 면 등의 엔터티를 생성한다.
- 절점집합 : name (모든 절점)
- 요소집합 : name (모든 요소)
- 면 : name (모든 외곽 면), name-Top(상부 표면), name-Bottom(하부 표면), name-Side(측면)
Example
*Material, Type=Acoustic, Name=Water
2190.4E+6, 1000 # bulkModulus, density ... compressible
*Section, Type=Solid, Name=Water
Water, 1 # thickness
*Model, TYPE=Cylinder
Water, auto, auto, AC3D8, Water
0,0,0,18.3,4 # x0, y0, z0, R, nseg
12.2,5 # h1,...,nh1,...
*Model, Type=Wall
쉘 요소로 직사각형 메쉬를 생성
*Model, Type=Wall
name, startNodeId, startElementId, elementType, section
ox, oy, oz, x1, x2, x3, y1, y2, y3
lxmin, lxmax, nlx
lymin, lymax, nly
First dataline
- name: 대표 이름. 이 명령을 통해 생성하는 절점집합, 요소집합, 면, 하중 등의 이름의 기초로 사용
- startNodeId, startElementId: 시작 절점 및 요소 번호. Auto이면 자동 계산
- elementType: 적용 요소 타입, 4절점 쉘 요소(S4, S4F 등) 또는 8절점 솔리드쉘(CS8)
- section: 적용 단면(optional, 없으면 요소에 단면을 적용하지 않음)
Second dataline
- ox, oy, oz: 국부 좌표계의 기준점
- x1, x2, x3: 국부좌표계의 x축을 정의
- y1, y2, y3: 국부좌표계의 평면을 정의하는 또 다른 벡터. z = xy, y = zx로 y축 생성
Third and fourth datalines
- lx1min, lxmax, nlx: 국부좌표계상의 1번축(국부 x) 범위와 요소 개수
- lymin, lymax, nly: 국부좌표계상의 2번축(국부 y) 범위와 요소 개수
절점, 요소 외에 절점집합, 요소집합 등의 엔터티를 생성한다.
- 절점집합 : name (모든 절점)
- 요소집합 : name (모든 요소)
CS8 요소를 적용하면 쉘 두께를 기준으로 1개 층의 솔리드쉘을 만든다. 만약 쉘 단면이 주어지지 않으면 두께는 1을 적용한다.
Example
*Material, Type=IsoElasticity, Name=steel
2E6, 0.2
*Section, Type=Shell, Name=beam
steel, 0.1
*Model, Type=Wall
beam, Auto, Auto, S4, beam
0, 0, 0, 1, 0, 0, 0, 1, 0
0, 20, 20
0, 4, 4
*Model, Type=RectangularTank
쉘 요소로 상면이 비어 있는 직사각 탱크 메쉬를 생성
*Model, Type=RectangularTank
name, startNodeId, startElementId, elementType, wallSection, bottomSection
x1, x2, ..., x{n+1}, nx1, nx2, ..., nx{n}
y1, y2, ..., y{n+1}, ny1, ny2, ..., ny{n}
z1, z2, ..., z{n+1}, nz1, nz2, ..., nz{n}
First dataline
- name: 대표 이름. 이 명령을 통해 생성하는 절점집합, 요소집합, 면, 하중 등의 이름의 기초로 사용
- startNodeId, startElementId: 시작 절점 및 요소 번호. Auto이면 자동 계산
- elementType: 적용 요소 타입, S4F와 같은 사각형 쉘요소 타입
- wallSection, bottomSection: 벽체와 바닥면의 단면(optional, 없으면 요소에 단면을 적용하지 않음)
Second, third and fourth datalines
- x1, x2, ..., x{n+1}, nx1, nx2, ..., nx{n}: x 범위와 요소 개수
- y1, y2, ..., y{n+1}, ny1, ny2, ..., ny{n}: y 범위와 요소 개수
- z1, z2, ..., z{n+1}, nz1, nz2, ..., nz{n}: z 범위와 요소 개수
절점, 요소 외에 절점집합, 요소집합, 면 등의 엔터티를 생성한다.
- 절점집합 : name (모든 절점)
- 요소집합 : name (모든 요소)
- 면 : name (모든 외곽 면), name-NX (X=-xmin인 표면), name-PX (X=xmax인 표면), name-NY (Y=ymin인 표면), name-PX (Y=ymax인 면), name-Bottom (Z=zmin인 표면)
Fig. 15.5-3. RectangularTank mesh generation
Example
*Material,Type=IsoElasticity,Name=mat
30E9, 0.18, 0, 2000. # E, nu, alpha, density
*Section, Type=Shell, Name=shell
mat, 0.01 # h
*Model, TYPE=RectangularTank
Cant, 1, 1, S4F, shell, shell
0, 20, 10
0, 4, 4
0, 2, 2
*Model, TYPE=RectangularTank
CantX, Auto, Auto, S4F # 단면 없이 요소 생성
0, 20, 10
0, 4, 4
0, 2, 2
*Model, Type=CylindericalTank
쉘 요소로 상면이 비어 있는 실린더 탱크 메쉬를 생성
*Model, Type=CylindericalTank
name, startNodeId, startElementId, elementType, wallSection, bottomSection
x0, y0, z0, R, nseg
h1, h2, ..., h{n}, nh1, nh2, ... nh{n}
First dataline
- name: 대표 이름. 이 명령을 통해 생성하는 절점집합, 요소집합, 면, 하중 등의 이름의 기초로 사용
- startNodeId, startElementId : 시작 절점 및 요소 번호. Auto이면 자동 계산
- elementType: 적용 요소 타입, S4F와 같은 사각형 쉘요소 타입
- wallSection, bottomSection: 벽체와 바닥면의 단면(optional, 없으면 요소에 단면을 적용하지 않음)
Second dataline
- x0, x0, z0: 원점
- R__: xy 평면상의 반경
- nseg__: No. of segments in the perimeter of quarter outer circle. If nseg is less than 4, 4 is used. (optioanl, default 0)
Third dataline
- h1, h2, ... h{n}, nh1, nh2, ..., nh: 높이방향(z방향) 높이 및 요소 개수
절점, 요소 외에 절점집합, 요소집합, 면 등의 엔터티를 생성한다.
- 절점집합 : name (모든 절점)
- 요소집합 : name (모든 요소)
- 면 : name (모든 외곽 면), name-Bottom(하부 표면), name-Side(측면)
Example
*Material, Type=IsoElasticity, Name=Tank
2.0776E+10, 0.17, 0, 2300 # E(MPa), nu, alpha, density
*Section, Type=Shell, Name=Tank
Tank, 1.2
*Model, TYPE=CylindericalTank
Tank, auto, auto, S4F, Tank, Tank
0,0,0,18.3,4 # x0, y0, z0, R, nseg
12.2,1.8,5,2 # h1,...,nh1,...
*Model, TYPE=FarField2D
SSI 해석을 위한 2차원 메쉬 생성, 자유장해석, 유효하중 계산 등을 수행
*Model, TYPE=FarField2D
name, startNodeId, startElementId, outputFormat
acceleration, iz, Direct|Outcrop, rcx, x0
nearMinX, nearMaxX, nearMeshCountX, farMeshSizeX, farMeshCountX
ytop
E1, nu1, density1, xi1, h1, ny1
E2, nu2, density2, xi2, h2, ny2
...
En, nun, densityn, xin, hn, nyn
{bottomNSet} | {EHalf, nuHalf, densityHalf, xiHalf, farMeshSizeY, farMeshCountY}
First dataline
- name: 대표 이름. 이 명령을 통해 생성하는 절점집합, 요소집합, 면, 하중 등의 이름의 기초로 사용
- startNodeId, startElementId: 시작 절점 및 요소 번호. Auto이면 자동 계산
- outputFormat: 유효하중과 바닥면 운동에 대한 출력 시간이력 파일 포맷. auto, csv, npy 중 하나. csv는 csv로만, npy는 npy로만 출력. auto 이면 생성되는 함수 파일에서 열의 개수가 16,364 이하이면 csv 파일로 그 이상이면 npy 파일로 출력. 디폴트는 auto.
Second dataline
- acceleration: 가속도 시각 이력 함수. TimeSeries 함수이어야 하고, 2개의 성분을 가져야 함. 세 성분은 순차적으로 X, Y 방향의 가속도 성분.
- iz, Direct|Outcrop: 시간이력이 가력되는 지층경계면 번호(1-based)와 입력방식(Direct 이면 iz 위치에 가속도입력이 주어진 것으로 취급하고, Outcrop이면 outcrop motion으로 취급). iz는 ‘(지층개수)+1’까지 지정할 수 있음. 다만 기반면 조건이 강체인 경우(Rigid)이고, Outcrop으로 지정하는 경우에는 (지층개수)까지 지정가능(Outcrop으로 지정하기 위해서는 그 하부에 지층 정보가 있어야 함)
- rcx: 입사 지진파의 수평 방향 겉보기 속도의 역수. rcx = 1/cx이고, cx=cp/lx=cs/mx 등으로 계산됨. 여기에서 cp, cs는 P파와 S파의 속도, (lx, ly, lz)는 P파, (mx, my, mz)는 S파의 단위 방향 벡터. cx 대신 rcx를 사용한 이유는 수직 입사파인 경우 direct cosine lx, mx가 0이기 때문
- x0: 입사 지진파의 기준점.
Third dataline
- nearMinX, nearMaxX, nearMeshCountX, farMeshSizeX, farMeshCountX: X방향 근역의 범위와 메쉬 개수, 원역 메쉬 크기 및 개수
Fourth dataline
- ytop: 지상면의 위치
- f0: 기준 주파수(Hz). 유효하중 계산시 stiffness-proportional damping으로 근사할 때 적용(단층 지반일 경우 첫 번째 고유진동수는 vs/4H, 다층 지반이면 등가속력 vse=sum(Hi)/sum(Hi/Vsi)를 계산한후 vse/4H에 적용, 감쇠비는 재료감쇠비 5% 적용)
Fifth dataline and subsequent datalines
- E1, nu1, density1, xi1, h1, nz1: 지상으로부터 첫 번째 층상 지반의 물성치와 높이
- E2, nu2, density2, xi2, h2, nz2: 지상으로부터 두 번째 층상 지반의 물성치와 높이 (optional)
- ...
- En, nun, densityn, xin, hn, nzn: 지상으로부터 n 번째 층상 지반의 물성치와 높이 (optional)
Last dataline
- bottomNset: Rigid 조건인 경우 기초면의 절점집합명
- EHalf, nuHalf, densityHalf, xiHalf, farMeshSizeY, farMeshCountY: Flexible인 경우 기반암의 물성치 및 y방향 원역의 메쉬 크기 및 개수.
기반면의 강성 고려 유무에 따라 Rigid 및 Flexible 조건을 부과할 수 있다. 무한영역을 처리하기 위해 SimplePMDL 정식화를 사용하는 CPE4PMDL 요소와 원역 바깥 경계에 점성경계가 설정된다. 절점, 요소 외에 기준이름으로 주어진 name과 bottomNset의 이름을 기준으로 다음을 생성한다.
- 재료: name-1, name-2, ... (레이어에 대응하는 재료), name-half (half space에 대응하는 재료)
- 단면: name-1, name-2, ... (레이어에 대응하는 단면), name-half (half space에 대응하는 단면)
- 요소집합: name (모든 요소), name-1, name-2, ...(레이어에 대응하는 요소), name-half (half space에 대응하는 요소)
- 표면 : name-Boundary (원역 외곽), name-NNX (X=nearXMin인 근역-원역 경계), name-NPX (X=nearXMax인 근역-원역 경계), name-NBottom (Flexible인 경우 하단부 근역-원역 경계)
- 구속조건 : name-Boundary (점성경계)
- 하중 : name-Effective (유효하중), bottomNset-Motion(Rigid한 경우 근역하면 움직임 하중)
- 함수 : name-Effective (유효하중에 사용되는 시간함수), bottomNset-Motion (Rigid한 경우 근역하면 절점의 움직임에 사용될 시간함수)
다음은 생성되는 시간이력 파일이다.
-name-Freefield.csv|npy : 자유장 해석 결과로 층 경계 응답을 상부로부터 변위, 속도, 가속도 시간이력을 출력. 참고용이며 해석에는 사용하지 않음. -name-Effective.csv|npy : 근역-원역 경계에 작용하는 유효하중에 대한 시간이력 파일 -bottomNset-Motion.csv|npy : Rigid 조건에서 prescribed motion을 저장하는 시간이력 파일
위에서
Fig. 15.5-4. Rigid case
Fig. 15.5-4. Rigid case
Fig. 15.5-5. Flexible case
Fig. 15.5-5. Flexible case
Fig. 15.5-6. Acceleration history input
Example
*Function, TYPE=TimeSignal, Name=acc
0.02, 4096
ELCchopra.dat, 1, 0.31*9.81
ELCchopra.dat, 1, 0.31*9.81
*Node, NSet=Bottom
1, -10, -30
2, 10, -30
3, 10, -30
4, -10, -30
*Model, TYPE=FarField2D
RigidBase2D, Auto, Auto
acc, 3, Direct, 1/200, 0 # acc, iz, Direct|Outcrop, rcx, x0
-10, 10, 1, 16, 10 # nearMinX, nearMaxX, nearMeshCountX, farMeshSizeX, farMeshCountX
0, 1. # ztop, f0
20E9,0.2, 2000, 0.02, 10, 5 # E, nu, density, xi, h, nz
25E9,0.2, 2000, 0.02, 20, 10 # E, nu, density, xi, h, nz
Bottom
*Model, TYPE=FarField2D
FlexibleBase2D, Auto, Auto
acc, 3, Outcrop, 1/200, 0 # acc, iz, Direct|Outcrop, rcx, x0
-10, 10, 1, 16, 10 # nearMinX, nearMaxX, nearMeshCountX, farMeshSizeX, farMeshCountX
0, 1. # ztop, f0
20E9,0.2, 2000, 0.02, 10, 5 # E, nu, density, xi, h, nz
25E9,0.2, 2000, 0.02, 20, 10 # E, nu, density, xi, h, nz
30E9, 0.2, 2000, 0.02, 16, 10 # E, nu, density, xi, farMeshSizeZ, farMeshCountZ
*Model, TYPE=FarField3D
SSI 해석을 위한 3차원 메쉬 생성, 자유장해석, 유효하중 계산 등을 수행
*Model, TYPE=FarField3D
name, startNodeId, startElementId, outputFormat
acceleration, iz, Direct|Outcrop, rcx, rcy, x0, y0
nearMinX, nearMaxX, nearMeshCountX, farMeshSizeX, farMeshCountX
nearMinY, nearMaxY, nearMeshCountY, farMeshSizeY, farMeshCountY
ztop
E1, nu1, density1, xi1, h1, nz1
E2, nu2, density2, xi2, h2, nz2
...
En, nun, densityn, xin, hn, nzn
{bottomNSet} | {EHalf, nuHalf, densityHalf, xiHalf, farMeshSizeZ, farMeshCountZ}
First dataline
- name: 대표 이름. 이 명령을 통해 생성하는 절점집합, 요소집합, 면, 하중 등의 이름의 기초로 사용
- startNodeId, startElementId: 시작 절점 및 요소 번호. Auto이면 자동 계산
- outputFormat: 유효하중과 바닥면 운동에 대한 출력 시간이력 파일 포맷. auto, csv, npy 중 하나. csv는 csv로만, npy는 npy로만 출력. auto 이면 생성되는 함수 파일에서 열의 개수가 16,364 이하이면 csv 파일로 그 이상이면 npy 파일로 출력. 디폴트는 auto.
Second dataline
- acceleration: 가속도 시각 이력 함수. TimeSeries 함수이어야 하고, 3개의 성분을 가져야 함. 세 성분은 순차적으로 X, Y, Z 방향의 가속도 성분.
- iz, Direct|Outcrop: 시간이력이 가력되는 지층경계면 번호(1-based)와 입력방식(Direct 이면 iz 위치에 가속도입력이 주어진 것으로 취급하고, Outcrop이면 outcrop motion으로 취급). iz는 ‘(지층개수)+1’까지 지정할 수 있음. 다만 기반면 조건이 강체인 경우(Rigid)이고, Outcrop으로 지정하는 경우에는 (지층개수)까지 지정가능(Outcrop으로 지정하기 위해서는 그 하부에 지층 정보가 있어야 함)
- rcx, rcy: 입사 지진파의 수평 방향 겉보기 속도의 역수. rcx=1/cx, rcy=1/cy이고, cx=cp/lx=cs/mx, cy=cp/ly=cs/my 등으로 계산됨. 여기에서 cp, cs는 P파와 S파의 속도, (lx, ly, lz)는 P파, (mx, my, mz)는 S파의 단위 방향 벡터. cx, cy 대신 rcx, rcy를 사용한 이유는 direct cosine lx, mx, ly, my가 0이 될 수 있기 때문임. 만약 rcx = rcy = 0으로 지정하면 수직입사 가정 적용
- x0, y0: 입사 지진파의 기준점.
Third dataline
- nearMinX, nearMaxX, nearMeshCountX, farMeshSizeX, farMeshCountX: X방향 근역의 범위와 메쉬 개수, 원역 메쉬 크기 및 개수
- nearMinY, nearMaxY, nearMeshCountY, farMeshSizeY, farMeshCountY: Y방향 근역의 범위와 메쉬 개수, 원역 메쉬 크기 및 개수
Fourth dataline
- ztop: 지상면의 위치
- f0: 기준 주파수(Hz). 유효하중 계산시 stiffness-proportional damping으로 근사할 때 적용(단층 지반일 경우 첫 번째 고유진동수는 vs/4H, 다층 지반이면 등가속력 vse=sum(Hi)/sum(Hi/Vsi)를 계산한후 vse/4H에 적용, 감쇠비는 재료감쇠비 5% 적용)
Fifth dataline and subsequent datalines
- E1, nu1, density1, xi1, h1, nz1: 지상으로부터 첫 번째 층상 지반의 물성치와 높이
- E2, nu2, density2, xi2, h2, nz2: 지상으로부터 두 번째 층상 지반의 물성치와 높이 (optional)
- ...
- En, nun, densityn, xin, hn, nzn: 지상으로부터 n 번째 층상 지반의 물성치와 높이 (optional)
Last dataline
- bottomNset: Rigid 조건인 경우 기초면의 절점집합명
- EHalf, nuHalf, densityHalf, xiHalf, farMeshSizeZ, farMeshCountZ: Flexible인 경우 기반암의 물성치 및 z방향 원역의 메쉬 크기 및 개수.
기반면의 강성 고려 유무에 따라 Rigid 및 Flexible 조건을 부과할 수 있다. 무한영역을 처리하기 위해 SimplePMDL 정식화를 사용하는 C3D8PMDL 요소와 원역 바깥 경계에 점성경계가 설정된다. 절점, 요소 외에 기준이름으로 주어진 name과 bottomNset의 이름을 기준으로 다음을 생성한다.
- 재료: name-1, name-2, ... (레이어에 대응하는 재료), name-half (half space에 대응하는 재료)
- 단면: name-1, name-2, ... (레이어에 대응하는 단면), name-half (half space에 대응하는 단면)
- 요소집합: name (모든 요소), name-1, name-2, ...(레이어에 대응하는 요소), name-half (half space에 대응하는 요소)
- 표면 : name-Boundary (원역 외곽), name-NNX (X=nearXMin인 근역-원역 경계), name-NPX (X=nearXMax인 근역-원역 경계), name-NNY (Y=nearYMin인 근역-원역 경계), name-NPY (Y=nearYMax인 근역-원역 경계), name-NBottom (Flexible인 경우 하단부 근역-원역 경계)
- 구속조건 : name-Boundary (점성경계)
- 하중 : name-Effective (유효하중), bottomNset-Motion(Rigid한 경우 근역하면 움직임 하중)
- 함수 : name-Effective (유효하중에 사용되는 시간함수), bottomNset-Motion (Rigid한 경우 근역하면 절점의 움직임에 사용될 시간함수)
다음은 생성되는 시간이력 파일이다.
-name-Freefield.csv|npy : 자유장 해석 결과로 층 경계 응답을 상부로부터 변위, 속도, 가속도 시간이력을 출력. 참고용이며 해석에는 사용하지 않음. -name-Effective.csv|npy : 근역-원역 경계에 작용하는 유효하중에 대한 시간이력 파일 -bottomNset-Motion.csv|npy : Rigid 조건에서 prescribed motion을 저장하는 시간이력 파일
위에서
Example
*Function, TYPE=TimeSignal, Name=acc
0.02, 1024
ELCchopra.dat, 1, 0.31*9.81
ELCchopra.dat, 1, 0.31*9.81
ELCchopra.dat, 1, 0.31*9.81
*Node, NSet=Bottom
1, -10, -20, -30
2, 10, -20, -30
3, 10, 20, -30
4, -10, 20, -30
*Model, TYPE=FarField3D
RigidBase3D, Auto, Auto
acc, 2, Direct, 1/200, 1/100, 0, 0 # acceleration, iz, Direct|Outcrop, rcx, rcy, x0, y0
-10, 10, 1, 16, 10 # nearMinX, nearMaxX, nearMeshCountX, farMeshSizeX, farMeshCountX
-20, 20, 1, 16, 10 # nearMinY, nearMaxY, nearMeshCountY, farMeshSizeY, farMeshCountY
0, 1. # ztop, f0
20E9,0.2, 2000, 0.02, 10, 5 # E, nu, density, xi, h, nz
25E9,0.2, 2000, 0.02, 20, 10 # E, nu, density, xi, h, nz
Bottom
*Model, TYPE=FarField3D
FlexibleBase3D, Auto, Auto
acc, 2, Outcrop, 1/200, 1/100, 0, 0 # acceleration, iz, Direct|Outcrop, rcx, rcy, x0, y0
-10, 10, 1, 16, 10 # nearMinX, nearMaxX, nearMeshCountX, farMeshSizeX, farMeshCountX
-20, 20, 1, 16, 10 # nearMinY, nearMaxY, nearMeshCountY, farMeshSizeY, farMeshCountY
0, 1. # ztop, f0
20E9,0.2, 2000, 0.02, 10, 5 # E, nu, density, xi, h, nz
25E9,0.2, 2000, 0.02, 20, 10 # E, nu, density, xi, h, nz
30E9, 0.2, 2000, 0.02, 16, 10 # E, nu, density, xi, farMeshSizeZ, farMeshCountZ