13. Step
해석 관련 명령은 크게 *Step과 *PostStep이 있다. *Step은 실제 해석을 수행할 단계를 지정하며, *PostStep은 해석된 결과를 정리하는 데 사용한다.
*Step 명령에서 Static, Dynamic, Frequency, Buckling 등의 해석 유형을 지정할 수 있으며, *Step의 사전 단계를 지정하는 방식으로 여러 해석 단계로 구성된 시뮬레이션을 수행할 수 있다. *Step의 하위명령어로는 요소, 하중, 구속조건을 지정하거나 변경하는 *Activate, *Inactivate 명령, 해석옵션을 지정하는 *Solver, *SolutionAlgorithm, *Convergence, *RayleighDamping, *Modal 명령, 출력을 지정하는 *Output, *Print, *History, *Check 등이 있다.
*Step 명령이 수행되면 HDB 파일(.hdb)에 ResultStep이라는 출력 스텝이 생성되며 *Output에서 지정한 결과가 저장되게 된다. *PostStep은 이미 존재하는 ResultStep을 대상으로 결과값의 일부를 발췌하거나 최대/최소, 결과의 조합 등을 수행하여 새로운 ResultStep을 만드는 명령이다.
*Step과 *PostStep에 사용되는 이름은 자신만의 중복되지 않는 이름을 지정해야 한다.
*Step
해석 단계(analysis step)을 정의한다.
*Step, Type=type,... Name=name[, PREV=prevStep, ...]
...
Keyword line
- Type=step_type,...: 해석유형 및 부가옵션
- Static: 정적해석
- Dynamic: 동해석
- Frequency: 주파수해석
- Seepage: 침투해석
- Name=name: 해석의 이름
- PREV=prevStep: 이전 해석단계. 지정하지 않는 경우 초기상태에서 해석이 시작됨
다음 해석 유형에 따른 분류이다.
▪표준 해석 단계(Standard analysis step)
▪정적 해석 단계(Static analysis step)
-
표준 정적 해석(Standard load-displacement controlled static analysis step)
-
Arclength 정적 해석(Arclength-controlled static analysis step)
-
시간 의존 정적 해석(Quasi-static analysis step)
▪동적 해석 단계(Dynamic analysis step)
- 시간 영역 동적 해석(Time-domain analysis step)
▪고유치 해석 단계(Eigen analysis step)
- 고유진동수 추출 해석(Frequecny extraction analysis step)
▪침투 해석 단계(Eigen analysis step)
-
정상 침투 해석 단계(Steady state seepage analysis step)
-
과도 침투 해석 단계(Transient seepage analysis step)
해석 단계 유형에 따라 시간을 다루는 방식이 다르다.
▪ 표준 정적 해석(Standard load-displacement controlled static analysis step)
주어진 시간이 하중계수(load factor)인 유사시간(pseudo-time)이다.
▪ Arclength 정적 해석(Arclength-controlled static analysis step)
주어진 시간은 arclength를 선형거동시 하중계수가 1일 때 발생하는 arclength로 정규화된 유사시간(pseudo-time)이다. 따라서 Arclength control을 선형해석에 적용하면 표준 방법과 동일한 시간 증분을 주는 것과 같다.
▪ 시간 의존 정적 해석(Quasi-static analysis step)
질량효과를 고려하지 않지만 시간의존성을 고려하는 정적해석을 의미하며, 주어진 시간은 실제 시간이다. 시간의존성은 시간함수를 부여한 하중과 시간의존 재료모델 등에서 발생하는데 정적 해석시 시간 의존 해석을 수행해야 시간의존성을 반영할 수 있다.
▪ 동적 해석 단계(Dynamic analysis step)
질량효과와 시간의존성을 모두 고려하는 동해석을 의미하며, 주어진 시간은 실제시간이다. 시간 적분을 수행하는 방법으로는 Newmark 법과 Hilbert-Hughes-Taylor 법(이하 HHT 법)을 지원하며, *TimeIntegration에서 지정할 수 있다. 디폴트 수치적분법은 \(\small\gamma=0.5\), \(\small\beta=0.25\)의 계수를 갖는 Newmark 법(또는 평균가속도법)이다. HHT법은 적용할 경우 \(\small\alpha=-0.05\)의 디폴트 값을 가진다.
▪ 정상 침투 해석(Steady state seepage analysis type)
주어진 시간이 하중계수(load factor)인 유사시간(pseudo-time)이다.
▪ 과도 침투 해석 단계(Transient seepage analysis step)
주어진 시간은 실제시간이다.
*Step, Type=Static, Name=Case2
Uniform, 0.1, 10
*Activate, Type=Element
ALL
*Activate, Type=Constraint
BC
*Activate, Type=Load
LC2, SelfWeight
*Output
D,FN,BSF,SSF
*Step, Type=Frequency, Name=Case7
10
*Activate, Type=Element
ALL
*Activate, Type=Constraint
BC
Static, Dynamic, Seepage 해석에서 해석시 시간 증분(Static에서 유사 시간 증분)은 Uniform, Given, Auto이라는 세가지 옵션으로 지정할 수 있다. 한편 결과가 *Output, *Print, *History 등을 통해 출력되는 시간은 OutFreq 또는 OutTime을 통해 지정할 수 있다. 입력형식은 다음과 같다.
*Step, Type=Static|Dynamic|Seepage,..., Name=name, PREV=prevStep, NLGeom=ON|OFF
Uniform, dt, ntime, OutFreq=freq
Given, timeSpec, OutFreq=freq
Auto, t0, tmax, dtmin, dtmax, maxInc, OutFreq=freq|OutTime=timeSpec
Uniform는 등간격으로 해석시간을 지정하고,Given은 시간을 직접기입하고,Auto는 자동증분 제어이다.OutFreq와OutTime은 동시에 지정불가능하고OutTime은Auto에서 만 사용할 수 있다.OutFreq=freq는 “해석 increment 기준”으로 freq increments 마다 출력한다.OutFreq=0과 같이 지정할 경우에는 최종 시간에서만 출력한다.OutTime=timeSpec은 “출력 앵커 시간”이며, 해당 시간에 출력하도록 해석 시간 증분을 추가로 자동 조정한다.OutFreq,OutTime모두 최종 시간(마지막 해석시간 또는 수렴 실패시에도 최종 수렴 성공 시간)에서는 항상 출력한다.Given과OutTime지정시 timeSpec은tStart:tEnd:tSpacing형태의 범위식을 사용할 수 있다. 예를 들어 Given, 0.5,2.5:7.5:2.5, 10 등과 같은 표현이 가능하다. 이때2.5:7.5:2.5는 2.5, 5.0, 7.5로 해석된다.tStart:tEnd:tSpacing범위식에 tEnd가 간격에 정확히 맞지 않는 경우, tEnd를 초과하지 않는 범위내에서 시간 값이 생성된다. 예를 들어1:10:2이면 1,3,...,9로 해석되며, 이는1:9:2를 대입한 것과 같다.
*Step, Type=Static|Dynamic|Seepage,..., Name=name, PREV=prevStep, NLGeom=ON|OFF
Uniform, 0.02, 100, OutFreq=2
*Step, Type=Static|Dynamic|Seepage,..., Name=name, PREV=prevStep, NLGeom=ON|OFF
Uniform, 0.02, 100, OutFreq=0
*Step, Type=Static|Dynamic|Seepage,..., Name=name, PREV=prevStep, NLGeom=ON|OFF
Given, 0.02, 0.05, 1:5:2, OutFreq=2
*Step, Type=Static|Dynamic|Seepage,..., Name=name, PREV=prevStep, NLGeom=ON|OFF
Auto, 0.02, 1, 0.001, 0.02, OutFreq=2
- 해석 시간: 0.02부터 0.02 시간간격으로 1까지 풀지만, 수렴성에 따라 0.001, 0.02까지 시간간격을 조정 (초기시간 0은 항상 포함)
- 출력 시간 : 초기시간(0)부터 빈도 2씩 증분되는 해석 시간 (마지막 해석 시간은 항상 포함)
*Step, Type=Static|Dynamic|Seepage,..., Name=name, PREV=prevStep, NLGeom=ON|OFF
Auto, 0.02, 1.6, 0.01, 0.02, OutTime=0.03, 0.8:1.2:0.2
*Step, Type=Static
정적 해석 단계를 지정
*Step, Type=Static,Standard|Arclength|Quasi, Name=name, PREV=prevStep, NLGeom=ON|OFF
Uniform, dt, ntime, OutFreq=freq
Given, timeSpec, OutFreq=freq
Auto, t0, tmax, dtmin, dtmax, maxInc, OutFreq=freq|OutTime=timeSpec
Keyword line
- Standard: 표준 정적 해석(Standard load-displacement controlled static analysis step). Standard는 생략 가능. 아래 시간 관련 파라미터는 pseudo-time이므로 단위계와 무관하다.
- Arclength: Arclength 정적 해석(Arclength-controlled static analysis step). 아래 시간 관련 파라미터는 pseudo-time이므로 단위계와 무관하다.
- Quasi: 시간 의존 정적 해석(Quasi-static analysis step). 아래 시간 관련 파라미터는 물리 시간이며 단위는 [T]이다.
- NLGeom=On|Off: 기하비선형 지정(optional, default Off). [Reserved. Currently Unused]
First dataline starting with Uniform (optional)
- Uniform,dtime,ntime: 등간격의 해석시간간격(time increment)을 지정한다. dtime, 2*dtime, ..., ntime*dtime의 시간을 지정하는 것과 같다. dtime은 Standard와 Arclength에서는 pseudo-time increment이므로 무차원이고, Quasi에서는 물리 시간 increment이므로 단위는 [T]이다. ntime은 무차원 정수이다.
- OutFreq=freq: 출력할 increment 빈도. 만약 0이면 최종 시간만 출력, (디폴트값은 1)
First dataline starting with Given (optional)
- Given,timeSpec: 주어진 시간으로 해석시간을 지정한다. timeSpec은 t, tStart:tEnd:tSpacing 등을 연속하여 지정할 수 있다. timeSpec의 값들은 Standard와 Arclength에서는 pseudo-time이므로 무차원이고, Quasi에서는 물리 시간이므로 단위는 [T]이다.
- OutFreq=freq: 출력할 increment 빈도. 만약 0이면 최종 시간만 출력, (디폴트값은 1)
First dataline starting with Auto (optional)
- Auto,t0,tmax,dtmin, dtmax,maxInc: 자동증분(automatic increment)으로 시간간격을 정의한다. t0, tmax, dtmin, dtmax는 Standard와 Arclength에서는 pseudo-time 관련 값이므로 무차원이고, Quasi에서는 물리 시간이므로 단위는 [T]이다. maxInc는 최대 increment 수를 의미하는 무차원 정수이다. 디폴트값은 1,1,1,1,1000이다.
- OutFreq=freq: 출력할 increment 빈도. 만약 0이면 최종 증분만 출력, (디폴트값은 1)
- OutTime=timeSpec: 출력할 시간. timeSpec은 t, tStart:tEnd:tSpacing 등을 연속하여 지정할 수 있다. timeSpec의 값들은 Standard와 Arclength에서는 pseudo-time이므로 무차원이고, Quasi에서는 물리 시간이므로 단위는 [T]이다. 주어진 시간들은 정렬되고, 중복이 제거되며, 해석시간을 벗어나는 시간은 제거된다. 단, 마지막 최종 시간은 포함된다. 만약 해석이 수렴하지 않으면 마지막 수렴된 해석시간은 출력에 포함된다.
*Step, Type=Dynamic
동해석을 지정
*Step, Type=Dynamic, Name=name, PREV=prevStep, NLGeom=ON|OFF
Uniform, dt, ntime, OutFreq=freq
Given, timeSpec, OutFreq=freq
Auto, t0, tmax, dtmin, dtmax, maxInc, OutFreq=freq|OutTime=timeSpec
Keyword line
- NLGeom=On|Off: 기하비선형 지정(optional, default Off). [Reserved. Currently Unused]
First dataline starting with Uniform (optional)
- Uniform,dtime,ntime: 등간격의 해석시간간격(time increment)을 지정한다. dtime,2*dtime, ..., ntime*dtime의 시간을 지정하는 것과 같다. dtime의 단위는 [T]이다.
- OutFreq=freq: 출력할 increment 빈도. 만약 0이면 최종 시간만 출력, (디폴트값은 1)
First dataline starting with Given (optional)
- Given,timeSpec: 주어진 시간으로 해석시간을 지정한다. timeSpec은 t, tStart:tEnd:tSpacing 등을 연속하여 지정할 있다. 각값의 단위는 [T]이다.
- OutFreq=freq: 출력할 increment 빈도. 만약 0이면 최종 시간만 출력, (디폴트값은 1)
First dataline starting with Auto (optional)
- Auto,t0,tmax,dtmin, dtmax,maxInc: 자동증분(automatic increment)으로 시간간격을 정의한다. maxInc는 최대 increment(디폴트값은, 1,1,1,1,1000). t0,tmax,dtmin, dtmax의 단위는 [T]이다.
- OutFreq=freq: 출력할 increment 빈도. 만약 0이면 최종 증분만 출력, (디폴트값은 1)
- OutTime=timeSpec: 출력할 시간. timeSpec은 t, tStart:tEnd:tSpacing 등을 연속하여 지정할 있다. timeSpec의 값들의 단위는 [T]이다. 주어진 시간들은 정렬되고, 중복이 제거되며, 해석시간을 벗어나는 시간은 제거된다. 단, 마지막 최종 시간은 포함된다. 만약 해석이 수렴하지 않으면 마지막 수렴된 해석시간은 출력에 포함된다.
*Step, Type=Frequency
주파수 해석을 지정
*Step, Type=Frequency, Name=name[, PREV=prevStep]
nev
First dataline
- nev: requested number of eigenpairs (default 20).
nev는 *Solver 명령에 따라 다르게 해석된다.
*Solver명령이 없거나Range=cutFreq인 경우 nev는 요구 고유치수(requested number of eigenpairs). 이 경우 계산된 고유치 개수는nev를 넘지 않는다.*Solver명령에서Range=lowFreq, highFreq[,maxnev]인 경우, 유한 주파수 대역 탐색을 시작할 때의 초기 요구 고유치수(initial requested number of eigenpairs). 이경우 추출한 고유치 개수가nev를 초과할 수 있으나 총 추출 개수maxnev를 넘지 않는다.
*Step, Type=Seepage
침투 해석 단계를 지정
*Step, Type=Seepage,Steady|Transient, Name=name, PREV=prevStep
Uniform, dt, ntime, OutFreq=freq
Given, timeSpec, OutFreq=freq
Auto, t0, tmax, dtmin, dtmax, maxInc, OutFreq=freq|OutTime=timeSpec
Keyword line
- Steady: 정상상태 해석. Steady는 생략 가능. 아래 시간 관련 파라미터는 pseudo-time이므로 단위계와 무관하다.
- Transient: 과도상태 해석. 아래 시간 관련 파라미터는 물리 시간이며 단위는 [T]이다.
First dataline starting with Uniform (optional)
- Uniform,dtime,ntime: 등간격의 해석시간간격(time increment)을 지정한다. dtime,2*dtime, ..., ntime*dtime의 시간을 지정하는 것과 같다.
- OutFreq=freq: 출력할 increment 빈도. 만약 0이면 최종 시간만 출력, (디폴트값은 1)
First dataline starting with Given (optional)
- Given,timeSpec: 주어진 시간으로 해석시간을 지정한다. timeSpec은 t, tStart:tEnd:tSpacing 등을 연속하여 지정할 있다.
- OutFreq=freq: 출력할 increment 빈도. 만약 0이면 최종 시간만 출력, (디폴트값은 1)
First dataline starting with Auto (optional)
- Auto,t0,tmax,dtmin, dtmax,maxInc: 자동증분(automatic increment)으로 시간간격을 정의한다. maxInc는 최대 increment(디폴트값은, 1,1,1,1,1000)
- OutFreq=freq: 출력할 increment 빈도. 만약 0이면 최종 증분만 출력, (디폴트값은 1)
- OutTime=timeSpec: 출력할 시간. timeSpec은 t, tStart:tEnd:tSpacing 등을 연속하여 지정할 있다. 주어진 시간들은 정렬되고, 중복이 제거되며, 해석시간을 벗어나는 시간은 제거된다. 단, 마지막 최종 시간은 포함된다. 만약 해석이 수렴하지 않으면 마지막 수렴된 해석시간은 출력에 포함된다.
*Activate
Step의 대상이 되는 요소, 하중, 구속조건을 활성화한다.
*Activate, Typ={Element|Load|Constraint}
target, ...
...
Keyword line for *Activate
- Type=type
- Element: 활성화 대상이 요소
- Load: 활성화 대상이 하중
- Constraint: 활성화 대상이 구속조건
First dataline and subsequent datalines
- target: type에 따라 결정되는 대상. Elset, Load, Constraint
Example
*STEP, TYPE=Static, Name=stage2 Prev=stage1
*Inativate, TYPE=ELEMENT
slab
*Activate, TYPE=Element
10, new_slab
*Inativate, TYPE=Load
pointLoad
*Activate, TYPE=Load
lineload
*Inactivate
Step의 대상이 되는 요소, 하중, 구속조건을 비활성화한다.
*Inactivate, Type={Element|Load[,Ramp]|Constraint}
target, ...
...
Keyword line
- Type=type
- Element: 비활성화 대상 요소
- Load[, Ramp]: 비활성화 대상이 되는 요소. __Ramp__가 지정하면 Step 초기에 즉시 없어짐.
- Constraint: 비활성화 대상이 구속조건
First dataline and subsequent datalines
- target: type에 따라 결정되는 대상. Elset, Load, Constraint
*Solver
해석 단계에 적용할 솔버를 지정
*Solver, TYPE=Linear, Pardiso
IterativeOff|IterativeOn, TryPositiveDefinite|PositiveDefinite|Indefinite
*Solver, TYPE=Linear, BiCG|BiCGStab|CGS
None|Jacobi|SSOR|ILU0|ILUT|PardisoS|PardisoD|PardisoDC, TryPositiveDefinite|PositiveDefinite|Indefinite
*Solver, TYPE=Eigen, General
Range=lowFreq|lowFreq,highFreq,maxnev, Threshold=EMMR|MPR,value,\
ZeroEigTol=tol, Strategy=Expansion|Sweep
*Solver, TYPE=Eigen, LDR
Dof, Dof@centerFreq, Load, Load@centerFreq, ...
Keyword line
- Type=Linear, Pardiso|BiCG|BiCGStab|CGS: 선형 솔버를 지정. 디폴트 솔버는 Pardiso
- Type=Eigen, General|LDR: 고유치솔버를 지정. 디폴트 솔버는 General
First dataline for TYPE=Linear, Pardiso
- IterativeOff|IterativeOn: Iterative solver combination을 on/off (default IterativeOff)
- TryPositiveDefinite|PositiveDefinite|Indefinite: Positive definite, indefinite 행렬 처리 방식을 지정(default TryPositiveDefinite)
First dataline for TYPE=Linear, BiCG|BiCGStab|CGS
- None|Jacobi|SSOR|ILU0|ILUT|PardisoS|PardisoD|PardisoDC: Preconditioner를 지정(default None)
- TryPositiveDefinite|PositiveDefinite|Indefinite: Positive definite, indefinite 행렬 처리 방식을 지정(default TryPositiveDefinite)
First dataline for TYPE=Eigen, General
- Range=lowFreq: lowFreq 이상의 고유치를 선별. 단위는 [1/T]이다. (optional)
- Range=lowFreq,highFreq,maxnev:
[lowFreq,highFreq]범위의 고유치를 선텰. maxnev는 선별한 최대 고유치(디폴트는 200). (optional) - Threshold=EMMR|PMR, value: EMMR(Effective Modal Mass Ratio), 또는 PMR이 주어진 value 일상리때문 그 모드를 채택(optional)
- ZeroEigTol=tol: 고유치가 tol 이하이면 zero 고유치로 간주. 디폴트는 1E-8. (optional)
- Strategy=Expansion|Sweep: 고유치 필터링 방식을 선택.
Expansion은 후보 확장(candidate-expansion) 방식을 사용하고,Sweep은 filtered-sweep 알고리즘을 사용한다. 디폴트는 Sweep.
First dataline for TYPE=Eigen, LDR
- Dof: 자유도 X, Y, Z 방향 변위 벡터 시드
- Dof@centerFreq: 자유도 방향 변위 벡터 시드와 대응하는 중심주파수. centerFreq의 단위는 [1/T]이다.
- Load: 하중 시드
- Load@centerFreq: 하중 시드와 대응하는 중심주파수. centerFreq의 단위는 [1/T]이다.
Linear solver는 \(\small Kx = f\) 형태의 선형계에 대한 해를 구하는 데 사용되며, 이때 \(K\)는 희소행렬이다. 직접 희소 솔버(direct sparse solver)인 Pardiso 솔버가 디폴트이고, BiCG, BiCGStab, CGS 등과 같은 반복 희소 솔버(iterative sparse solver)를 사용할 수 있다.
Eigen solver는 \(\small Kx = \lambda Mx\) 형태의 일반 고유치 문제를 풀기 위해 사용된다. 기본 설정은 General이며, 필요하면 LDR(Load-Dependent Ritz)과 같은 특수 솔버를 적용할 수 있다. General 고유치 솔버는 행렬 크기에 따라 LAPACK 또는 ARPACK을 사용한다.
Solver, TYPE=Eigen, General에서는 Range, Threshold, ZeroEigTol, Strategy 옵션을 사용할 수 있다. Range=lowFreq로 지정하면 lowFreq 이상의 고유치를 선별하며 단위는 [1/T]이다. Range=lowFreq,highFreq,maxnev로 지정하면 [lowFreq, highFreq] 범위의 고유치를 선별하고, maxnev는 선별 가능한 최대 고유치 수를 뜻하며 기본값은 200이다. Threshold=EMMR,value 또는 Threshold=MPR,value로 지정하면 EMMR(Effective Modal Mass Ratio) 또는 MPR(Modal Participation Ratio)이 주어진 값 이상인 모드만 채택한다. ZeroEigTol=tol로 지정하면 tol 이하의 고유치는 zero 고유치로 간주하며 기본값은 1E-8이다. Strategy=Expansion 또는 Strategy=Sweep으로 고유치 필터링 방식을 선택할 수 있고, Expansion은 candidate-expansion 방식을 사용하며 Sweep은 filtered-sweep 알고리즘을 사용한다. 기본값은 Sweep이다.
Range 또는 Threshold 조건이 주어지면 solver는 후보 고유치 수인 nev를 단계적으로 늘려 가며 조건을 만족하는 모드를 탐색한다. 이 과정에서 내부적으로 nevLimit가 자동 설정되어 후보 고유치 수의 상한을 제한하며, 이 값은 활성 질량 자유도, 사용 가능한 메모리, 그리고 solver 특성을 함께 고려해 결정된다. 따라서 필터 조건을 사용하더라도 계산 시간과 메모리 사용이 과도하게 증가하지 않도록 제어된다.
Threshold=EMMR은 누적 유효질량비를 기준으로 모드를 선별하는 방식에 대응하며, 주어진 하중패턴에 대해 충분한 모드 기여를 확보하는 데 유리하다. 반면 Threshold=MPR은 먼저 관심 주파수 대역의 후보 모드를 확보한 뒤, 그 대역 내부에서의 상대적인 modal participation을 기준으로 모드를 선별하는 방식에 대응한다. 따라서 MPR 기준은 주파수 대역 기반 선별과 함께 사용할 때 특히 유효하며, 비대칭계처럼 generalized EMMR의 누적값이 단조롭게 증가하지 않을 수 있는 경우에 더 적합하다. 실무적으로는 EMMR 또는 MPR 필터와 내부 nevLimit 제어를 함께 사용하여 탐색 범위를 관리하며, nevLimit에 도달한 경우에도 이는 오류가 아니라 정상적인 종료 사유(stop reason)로 처리된다.
비대칭계에서는 고유치가 일반적으로 복소수가 될 수 있으므로, 특정 실수 구간을 기준으로 고유치를 제한하는 방식이 제대로 작동하지 않을 수 있다. 한편 대칭계에서는 고유치가 항상 실수이지만 음수로 계산될 수도 있으므로, 이 경우에도 단순한 주파수 범위 제한이 항상 유효한 것은 아니다. 따라서 대칭계와 비대칭계 모두에서 Range 기반 추출은 고유치가 0 이상인 실수로 계산되는 특별한 경우에만 안정적으로 유효하다.
Example
*Step, Type=Static, Name=1
...
*Solver, TYPE=Linear, Pardiso
IterativeOn
...
# Basic Frequency Extraction (maximum 20 eigenvalues)
# Extract up to 20 eigenvalues without applying any additional filtering or sampling conditions.
*Step, Type=Frequency, Name=name
20
# Frequency Extraction with General Eigen-solver (Range = 10 Hz)
# From oneSideSampling × 20 trial eigenvalues, extract up to 20 eigenvalues
# whose natural frequencies are higher than 10 Hz.
*Step, Type=Frequency, Name=name
20
*Solver, TYPE=Eigen,General
Range=10
# Frequency Extraction with Increasing Trial Eigenvalues (Range = 10–20 Hz)
# Increase the number of trial eigenvalues (e.g., 40, 60, 80, 100, …) and
# extract up to 20 eigenvalues whose natural frequencies fall within the range 10 Hz – 20 Hz.
*Step, Type=Frequency, Name=name
20
*Solver, TYPE=Eigen,General
Range=10, 20
# Frequency Extraction with EMMR Filtering (Range ≥ 10 Hz)
# From oneSideSampling × 20 trial eigenvalues, extract up to 20 eigenvalues
# that satisfy both conditions of Range and EMMRThreshold
*Step, Type=Frequency, Name=name
20
*Solver, TYPE=Eigen,General
Range=10, Threshold=EMMR,1E-4
# Frequency Extraction with Range = 10–20 Hz and MPR Filtering
# Increase the number of trial eigenvalues (e.g., 40, 60, 80, 100, …) and
# extract up to 20 eigenvalues that satisfy both conditions of Range and MPR
*Step, Type=Frequency, Name=name
20
*Solver, TYPE=Eigen,General
Range=10, 20, EMMRThreshold=MPR,1E-4
*NonlinearAlgorithm
비선형 해석 관련 옵션을 지정
*NonlinearAlgorithm
Newton|MNewton|BFGS|Secant, maxIter, kernelUpdate, \
TanReg=r|Auto, r0, grow, shrink
StepCtrl=None | \
SchedRelax, etamin, beta, frequency | \
RelaxBack, N, etamin, etas, beta | \
ArmijoBack, N, etamin, c1 | \
Bracketed, N, etamin, rho, etamax,alpha
Algorithm section
- Newton|BFGS|Secant|MNewton: Nonlinear analysis algorithm applied during each iteration
- maxIter: maximum iteration number(optional, default 16 for Newton, 25 for MNewton, BFGS, Secant, but 50 for Newton/MNewton in Seepage)
- kernelUpdate: MNewton, Secant, BFGS에서 kernel matrix가 rebuild되는 iteration number(optional, default 8). Neglected in Newton
TanReg section [TagReg = r]
(Fixed tangent regularization) - r : Tangent regularization factor 0<=r<=1, where K=r*Kconsistent + (1-r)*Kref. r=1 full consistetn tange, r=0 reference/approxiate tangent only. (Default 1. for Newton/MNewton in Static/Dynamic, 0 for Seepage step)
TanReg section [TagReg = r0, grow, shrink]
(Fixed tangent regularization)
- r0: initial r (default 0.)
- grow: amount to increase r when convergence is stable (default 0.2). At each iteration, the solver compares the new residual norm to the previous one. If the residual drops sufficiently, r is increased by this amount, making the tangent closer to the consistent tangent (then r is kept within the range 0 to 1).
- shrink: amount to decrease r when convergence is unstable (default 0.3). If the residual decreases only slightly or increases, r is decreased by this amount, making the tangent more conservative/robust (then r is kept within the range 0 to 1).
StepCtrl section [StepCtrl=None]
(No line search is used)
StepCtrl section [StepCtrl=SchedRelax]
(Scheduled relaxation line search is used)
- etamin: Minimum step length (Default 0.1)
- beta: Reduction factor per scheduled step, where 0 < beta < 1. (Default 0.65)
- frequency: Iteractions per scheduled step for reduction (Default 10)
StepCtrl section [StepCtrl=RelaxBack]
(Relaxation backtracking line search is used)
- N: Maximum number of line search iteration(Default 20)
- etamin: Minimum step length (Default 1E-4)
- etas: Initial step length, where 0 < etamin < etas ≤ 1. (Default 1.0)
- beta: Reduction factor, where 0 < beta < 1. (Default 0.5)
StepCtrl section [StepCtrl=ArmijoBack]
(Armijo backtracking line search is used)
- N: No. of maximum allowable line search iteration(Default 20)
- etamin: Minimum step length (Default 1E-5)
- c1: Armijo sufficient decrease constant (Default 1E-4)
StepCtrl section [StepCtrl=Bracketed]
(Bracketed line search is used)
- N: No. of maximum allowable line search iteration(Default 6)
- etamin: Minimum step length (Default 0.01)
- rho: Directional residual tolerance (Default 0.8)
- etamax: Maximum allowable scaling factor(Default 25.)
- alpha: Amplification factor preventing dangerous extrapolation(Default 5.)
*NonlinearAlgorithm은 어떤 해석을 적용하는가에 따라 선택할 수 있는 옵션이 다르다. 다음은 적용가능한 알고리즘과 스텝제어 옵션, 그리고 디폴트값을 정리한 것이다.
Static Step
- SolutionAlgorithm, maxIter, kernelUpdate:
Newton, maxIter=16 (default), kernelUpdate: not used
MNewton, maxIter=25 (default), kernelUpdate=8 (default)
BFGS, maxIter=25 (default), kernelUpdate=8 (default)
Secant, maxIter=25 (default), kernelUpdate=8 (default)
- TanReg (Newton/MNewton only):
Fixed, 1.0 (default) | Auto, ...
- StepCtrl:
If Newton: None (default) | RelaxBacktracking | ArmijoBack | Bracketed
If MNewton/BFGS/Secant: None | RelaxBacktracking | ArmijoBack (default) | Bracketed
Dynamic Step
- SolutionAlgorithm, maxIter, kernelUpdate:
Newton, maxIter=16 (default), kernelUpdate: not used
MNewton, maxIter=25 (default), kernelUpdate=8 (default)
- TanReg (Newton/MNewton only):
Fixed, 1.0 (default) | Auto, ...
- StepCtrl:
If Newton: None (default) | RelaxBack | ArmijoBack | Bracketed
If MNewton: None | RelaxBack | ArmijoBack (default) | Bracketed
Seepage Step
- SolutionAlgorithm, maxIter, kernelUpdate:
Newton, maxIter=50 (default), kernelUpdate: not used
MNewton, maxIter=50 (default), kernelUpdate=8 (default)
- TanReg (Newton/MNewton only):
Fixed, 0.0 (default) | Auto, ...
- StepCtrl:
None | SchedRelax (default) | RelaxBack | ArmijoBack | Bracketed
StepCtrl=None은 명시적으로 선탐색을 사용하지 않는 것을 의미한다.
Example
*Step, Type=Static, Name=step2
...
*NonlinearAlgorithm
StepCtrl=BFGS
*Step, Type=Static, Name=step2
...
*NonlinearAlgorithm
Secant, StepCtrl=Bracketed
*Step, Type=Seepage, Name=step2
...
*NonlinearAlgorithm
StepCtrl=RelaxBack, 20, 1E-10
*Convergence
표준 해석 단계(standard analysis step)에 대한 수렴 조건 부과
*Convergence, Monitor={ON|OFF}
Force, ftol1, ftol2, fmin
Displacement, XYZ=dtol,dmin, RXYZ=dtol,dmin, P=dtol,dmin, T=dtol,dmin, General=dtol,dmin
Keyword line
- monitor: monitoring option. ON or OFF. Default OFF.
First dataline for FORCE criteria
- ftol1, ftol2: Primary and secondary tolerances for force criteria. Both values are dimensionless. (default 1E-5, 0.01)
- fmin: Minimum allowable unbalanced force [F]. If *Environment, TYPE=UnitSystem is defined and fmin is omitted, the default value is interpreted as 1E-4 N in physical meaning and converted to the current global UnitSystem. If *Environment, TYPE=UnitSystem is not defined, the raw numeric default value 1E-4 is used.
First dataline for Displacement criteria
- XYZ=dtol, dmin: Tolerance and minimum value for X-, Y-, and Z-displacement. dtol is dimensionless, and dmin is [L]. If *Environment, TYPE=UnitSystem is defined and dmin is omitted, the default value is interpreted as 1E-6 m in physical meaning and converted to the current global UnitSystem. If *Environment, TYPE=UnitSystem is not defined, the raw numeric default value 1E-6 is used. (default 0.01, 1E-6)
- RXYZ=dtol, dmin: Tolerance and minimum value for rotation. Both dtol and dmin are dimensionless. (default 0.005, 2E-6)
- P=dtol, dmin: Tolerance and minimum value for pressure. dtol is dimensionless, and dmin is [F/L^2]. If *Environment, TYPE=UnitSystem is defined and dmin is omitted, the default value is interpreted as 1E-5 Pa in physical meaning and converted to the current global UnitSystem. If *Environment, TYPE=UnitSystem is not defined, the raw numeric default value 1E-5 is used. (default 0.001, 1E-5)
- T=dtol, dmin: Tolerance and minimum value for temperature. dtol is dimensionless, and dmin is [K]. If *Environment, TYPE=UnitSystem is defined and dmin is omitted, the default value is interpreted as 1E-5 K. If *Environment, TYPE=UnitSystem is not defined, the raw numeric default value 1E-5 is used. (default 0.001, 1E-5)
- General=dtol, dmin: Tolerance and minimum value for unclassified DOFs. dtol is dimensionless. dmin is always treated as a raw numeric value because no single common physical unit is defined for unclassified DOFs. (default 0.01, 1E-6)
비선형 해석에서의 수렴 조건(convergence criteria)을 지정한다. 선형해석이나 고유치해석에서는 무시된다. 다음과 같은 하중 및 변위 조건을 병진운동, 회전, 압력, 온도 등 물리량 별로 적용한다.
** 하중/모멘트 조건
** 변위/회전 조건
하중 조건은 잔차의 L2 노름을 사용하고, 변위 조건은 iterative change와 incremental 변위의 infinite 노름을 사용한다.
하중 조건에서는 모든 물리량에 대해 동일한 \(\small \epsilon_F\)와 \(\small R_{min}\)을 사용하지만, \(\small \epsilon_F\)를 1차 허용치(primary tolerance)와 2차 허용치(secondary tolerance)로 구분한다. 1차허용치는 반복단계가 작을 때 적용하는 허용치이고 2차 허용치는 비선형성이 커서 반복단계가 클 때 적용하는 허용치이다. 1차, 2차 허용치를 구분하는 반복단계회수(\(\small I_p\))는 9이다. 다시 말하면 반복단계 8까지는 1차허용치를 적용하고, 그 이상은 2차허용치를 적용한다. 다만 회전자유도는 병진자유도와의 연계를 고려하여 \(\small R_{min}\)대신 \(\small R_{min} L_{global}\)을 적용하는데, \(\small L_{global}\)은 모델의 전역특성길이로 요소의 변 길이의 중앙값으로 결정된다.
한편 변위 조건에서는 물리량별로 서로 다른 \(\small \epsilon_D\)와 \(\small D_{min}\)을 적용한다.
Example
*Step, Type=Static Name=1
...
*Convergence, Monitor=ON
*Step, Type=Static, Name=2
...
*Convergence, Monitor=On
Force,1E-5
*NonlinearAlgorithm
BFGS, StepCtrl=Bracketed
*TimeIntegration
동해석시 시간적분 방법을 정의
*TimeIntegration, Type=Newmark,gamma,beta
*TimeIntegration, Type=HHT,alpha
Keyword line for Type=Newmark
- Type=Newmark, gamma, beta: Newmark 시간 적분을 적용. gamma와 beta는 optional이며 디폴트는 0.5, 0.25.
Keyword line for Type=HHT
- Type=HHT, alpha: HHT 시간 적분을 적용. alpha는 optional이며 디폴트는 –0.05
*TimeIntegration을 별도로 지정하지 않을 경우 디폴트는 Newmark, 0.5, 0.25로 지정되어 있다.
Newmark 법에서 \(\small\beta\), \(\small\gamma\)는 수치안정성과 정확성에 따라 결정되는 계수이다. \(\small\gamma=1/2\)이면 수치감쇠를 도입하지 않으며, \(\small\gamma>1/2\)이면 수치감쇠를 도입한다. 보통 \(\small\gamma=1/2\), \(\small 1/6 \le \beta \le 1/4\) 를 선택하는데, \(\small\gamma=1/2\), \(\small\beta=1/4\)인 경우는 시간간격내 가속도가 일정하다고 가정하는 것으로 평균가속도법 (average acceleration method)이라 하고,\(\small\gamma=1/2\), \(\small\beta=1/6\)인 경우는 시간간격내 가속도가 선형적으로 변화한다고 가정하는 것으로 선형가속도법 (linear acceleration method)이라 한다. 다음 조건을 만족해야 수치적으로 안정이다.
즉, 평균가속도법을 사용하면 무조건적으로 안정(unconditionally stable)이고, 선형가속도법을 사용하면 \(\frac{\Delta t}{T_n}\)을 만족해야 안정하다. 다자유도로 구성되는 유한요소문제에서 고차의 낮은 고유주기(높은 고유진동수)까지 이러한 안정조건을 만족하도록 를 선택하는 것은 쉽지 않기 때문에 정밀도가 떨어지더라도 평균가속도법을 사용하는 것이 일반적이다. Hibert-Hughes-Taylor 법(HHT 법, \(\small\alpha\)-method)은 Newmark 법을 확장한 방법으로 해의 정확도를 유지하면서 제어가능한(controllable) 수치감쇠(numerical damping)을 도입한다. \(\small -1/3 \le \alpha \le 0\)이고, 무조건적으로 안정(unconditionally stable)한 방법이다. \(\alpha=0\)이면 평균가속도법을 적용한 Newmark 법과 동일하다. 일반적으로 \(\small\alpha=-0.05\)를 사용하며, \(\small\alpha=0\)는 수치감쇠가 없는 것을, \(\small\alpha=-1/3\)은 수치감쇠가 가장 큰 것을 의미한다. 수치감쇠는 low-frequency 모델에서는 그 영향이 작고, high-frequency 모델에서는 영향이 크다.
Example
*Step, Type=Dynamic, Name==analysis1
, 0.02, 24
*TimeIntegration, Type=HHT, -0.05
...
*RayleighDamping
동해석(DynamicStep) 시 Rayleigh damping 값을 지정
*RayleighDamping
Direct, alpha,beta, targetElset
Equivalent, fm, fn, xim, xin, targetElset
...
First dataline and subsequent datalines
- Direct, alpha, beta: Specifies the Rayleigh damping coefficients alpha and beta. alpha and beta represent the mass-proportional and stiffness-proportional damping coefficients, respectively. The unit of alpha is [1/T], and the unit of beta is [T]. alpha and beta are optional, and their default values are 0 and 0, respectively.
- Equivalent, fm, fn, xim, xin: 등가감쇠비 xim, xin와 이에 대응하는 구조물의 고유진동수 fm, fn(Hz), 보통 1차 및 2차 고유진동수를 지정. 보통 xim과 xin을 동일하게 설정(모두 required)
- targetElset: 지정대상이 되는 요소집합으로 현 해석단계에서 활성화된 요소집합(optional). 생략하면 현 해석 단계의 활성화된 모든 요소집합에 지정됨.
등가감쇠비를 지정할 경우 Rayleigh damping coeficient alpha, beta를 다음과 같은 관계식을 통해 계산해서 설정한다.
위에서, \(\small \omega_m = 2\pi f_m\), \(\small\omega_n = 2\pi f_n\)이고, 결정된 \(\small\alpha\), \(\small\beta\)는 다음과 같이 구성되는 Rayleigh damping matrix(\(\small C^R = \alpha M + \beta K\))에 대한 상수들이다.
Example
*Step, Type=Dynamic, Name=1
*Activate, Type=Element
ELSET1, ELSET2
*RayleighDamping
Direct, 0.5, 0.1 # ELSET1, ELSET2 등 Step 1에 포함된 모든 요소집합에 지정
*Step, Type=Dynamic, Name=2
*Activate, Type=Element
ELSET1, ELSET2
*RayleighDamping
Direct, 0.5, 0.1, ELSET2 # ELSET2에 0.5,0.1을 감쇠비로 설정
Equivalent,2.3, 5.7, 0.05, 0.05, ELSET2 # ELSET2를 대상으로 등가감쇠비 0.5 지정
*Modal
동해석(DynamicStep) 시 모달 해석 방법을 지정하고 그 감쇠비를 지정
*MODAL, [ELSet=targetElset]
imode,dampingRatio
fromMode, toMode, dampingRatio
...
Keyword line
- ELSET=targetElset: 모달해석에 참여하는 요소집합을 지정합니다(optional). 디폴트는 해석단계에 참여하는 모든 요소
First dataline and subsequent datalines
- imode, dampingRatio: 모드와 감쇠비
- fromMode, toMode, dampingRatio: 모드 범위와 감쇠비
모달 해석은 선형계를 대상으로 동해석을 수행하는 특수 기법이다.
*Modal로 지정할 경우*RayleighDamping은 무시된다.*Modal로 지정할 경우 적분방법으로 Newmark 법만 적용가능하다. 적분방법을 HHT, Frequency로 지정한 경우 오류를 발생시킨다.- 지정하는 모드만 모드해석에 참여한다. 만약 지정한 모드를 고유치해석으로 계산할 수 없을 때는 에러가 발생한다.
- 모달해석에서는
*Load, Type=Displacement을 적용할 수 없다. - 모달해석에서 반력은 모달감쇠로 인한 영향을 고려하지 않는다.
- 모달해석은 대상 요소집합이 선형일때만 적용할 수 있습니다.
- targetElset이 없는 경우, 전체 모델을 대상으로 모달 해석이 수행된다. 전체 모델이 선형계이어야 한다.
- targetElset을 지정하는 경우, targetElset에 대해서만 주어진 모드로 분해하는 부분 모달 해석(partial modal analysis)가 수행된다. 모드 분해가 이루어지는 targetElset만 선형 조건을 만족하면 된다. 이 기능은 요소가 접촉점의 변경으로 인해 비선형성이 발생하는 차량-교량 상호작용해석에서 유용하게 사용될 수 있다.
Example
*Step, Type=DYNAMIC, Name=1
=0.1, 2.5
*Activate, Type=Element
Bridge
*Activate, Type=Constraint
Boundary
*Activate, Type=Load
ConcentricLoad
*MODAL
1,0.001 # 1번 모드 0.001
2,5,0.0005 # 2,3,4,5모드는 0.0005
6,0.007 # 6번 모드는 0.007
10,15,0.001 # 10,11,12,13,14,15 모드는 0.001 ( 7,8,9 모드는 사용되지 않음)
*Step, Type=DYNAMIC, Name=2
=0.1, 2.5
*Activate, Type=Element
Bridge, Truck
*Activate, Type=Constraint
Boundary
*MODAL, ELSet=Bridge # Bridge에 대해서만 모달해석을 적용
1,10,0.01
*InteractionControl
해석도중 동적으로 변경되는 경계조건 및 접촉조건을 부과한다. 현재는 PSF만 지원한다.
*InteractonControl, TYPE=PSF, maxIter=maxIter
targetNode|targetNGroup, ...
Keyword line
- maxIter=maxIter: Maximum number of iterations used to identify changing boundary conditions and contact conditions. Optional; the default value is 20.
First dataline
- targetNode: PSF(Potential Seepage Face)로 지정할 target node (required)
- targetNGroup: SF(Potential Seepage Face)로 지정할 node group(required). targetNGroup은 nset, surface, 절점번호패턴(
start:end:spacing형태, spacing은 1일 때 생략 가능) 형식으로 지정하며, surface로 지정하는 경우 surface 내의 절점들을 의미.
PSF(Potential Seepage Face)는 *Step, TYPE=Seepage 해석에서만 유효하다. PSF는 해석 도중 Seepage Face로 지정될 수 있는 후보로 지정한다는 의미이다.
PSF로 지정된 절점은 해석 도중 그 절점의 간극수압이 음으로 계산되면 0(대기압) 경계조건으로 부과되며 flux는 항상 유출된다. 만약 간극수압이 양이면, 그 절점에서 유입과 유출은 없다.
따라서 PSF로 지정된 절점에 *Constraint, TYPE=Support나 *Load, TYPE=Displacement를 통해 간극수압이 총수두를 지정하면 안된다.
Example
*STEP, TYPE=Seepage, Name=name
...
*InteractionControl, TYPE=PSF
downStream
*State
요소의 상태를 지정
*State, Type=Pretension
target, value
...
*State, TYPE=Posttension
target, value
target, ByStartForce|ByStartIncrementalDelta|ByEndForce|ByEndIncrementalDelta, value
...
*State, Type=CableLength
target, value
...
*State, Type=MovingSpringSpeed
target, value
...
Keyword line
-
Type=type: 지정할 필드의 유형(required)
- Pretension: 텐던 긴장력 사전 도입
- Posttension: 텐던 긴장력 도입(Force hold 조건)
- CableLength: 케이블 길이
- MovingSpringSpeed: 이동스프링의 속도
First dataline and subsequent datalines
- target: 요소 또는 요소집합(required). Pretension, Posttension는 Tendon 요소, CableLEngth는 Cable 요소, MovingSpringSpeed는 MovingSpring 요소에 적용하다.
- ByStartForce: - Posttension으로 긴장력 부과시 시작단 긴장력 부과(긴장력 분포는 계산)
- ByStartIncrementalDelta: - Posttension으로 긴장력 부과시 시작단에 변위 부과(긴장력 분포는 내부 계산)
- ByEndForce: - Posttension으로 긴장력 부과시 끝단단 긴장력 부과(긴장력 분포는 계산)
- ByEndIncrementalDelta: - Posttension으로 긴장력 부과시 끝단에 변위 부과(긴장력 분포는 내부 계산)
- value: 지정할 값(required). 단위는 Pretention의 경우 [F], Posttension에서 ByStartForce, ByEndForce이면 [F], ByStartIncrementalDelta, ByEndIncrementalDelta이면 [L], CableLength는 [L], MovingSpringSpeed는 [L/T]이다.
Pretension는 해당 해석 단계(*Step)에서 초기 긴장력 분포를 부여한다. 해석이 종료될 때 긴장력 분포는 평형상태를 만족되도록 변화된다. Posttension는 초기 긴장력 분포가 해석 단계내 일정하게 유지하는 것을 의미한다. Pretension와 Posttension 모두 일정한 긴장력을 부여할 수 있다. Posttension의 경우 추가로 Jacking 옵션(ByStartForce, ByStartIncrementalDelta, ByEndForce, ByEndIncrementalDelta 옵션)으로 시작단 및 양단을 jacking하여 초기긴장력을 부여할 수 있다. 이때 텐던의 곡률마찰계수(curvature fricition coefficient)와 파상마찰계수(wobble friction coefficient)를 이용하여 초기 분포를 계산하게 된다. 다음에 주의한다.
- Pretention을 가력한 요소에는 또 다른 Pretension이나 Posttension을 가력할 수 없다.
- Postension을 Value로 가력한 요소에는 또 다른 Pretension이나 Posttension을 가력할 수 없다.
- Postension을 Jacking 옵션(
ByStartForce,ByStartIncrementalDelta,ByEndForce,ByEndIncrementalDelta옵션)으로 가력하기 위해서는 그 요소의 물성치인 곡률마찰계수와 파상마찰계수가 둘다 0이어서는 안된다. - Postension을 Jacking 옵션(
ByStartForce,ByStartIncrementalDelta,ByEndForce,ByEndIncrementalDelta옵션)으로 같은 요소에 가력하면 순차적으로 프리스트트레스가 가력된다.
이외에도 CableLength와 MovingSpringSpeed는 각각 Cable 요소의 초기 길이, MovingSpring 요소의 이동속도를 지정한다.
Example
*STEP, TYPE=Static, NAME=step1
*Activate,TYPE=Element
tendon, conc
*Activate,TYPE=Constraint
BC
*State, TYPE=Pretensiion
1001, 2000.
*OUTPUT
D, FN, FK, FE, BSF
*History, Name=pretension1
step1
BSE.Ex@1-1, BSF.Nx@1-1, BSE.Ex@1-2, BSF.Nx@1-2
E.11@1001-1, S.11@1001-1
*Output
HDB 파일('hdb)로 출력되는 결과값을 지정한다.
*Output[, ELSET=elset1, elset2, ..., Constraint=constraint1, constraint2, ...]
field|sensorName,...
...
Keyword line
- ELSET=elset1, elset2, ...: HDB 파일(
'hdb)의 결과값을 출력할 대상 요소집합. 없으면*Activate, TYPE=Element에서 지정한 요소집합이 사용됨 - Constraint=constraint1, constraint2, ...: HDB 파일(
'hdb)의 결과값을 출력할 대상 구속조건, 없으면*Activate, TYPE=Constraint에서 지정한 구속조건이 사용됩.
First dataline and subsequent datalines (optional for FrequencyStep)
- field, ...: Name of field
- sensorName: 출력한 센서 명칭
*Output은 HDB 파일('hdb)에 출력할 절점이나 요소의 필드값, 또는 센서값을 지정하는 명령이다. Element나 Constraint로 출력할 요소집합이나 구속조건을 지정할 수 있다. 만약이 대상 요소집합이나 구속조건을 지정하지 않으면 *Activate, TYPE=Element/Constraint에서 지정한 요소집합이나 구속조건이 사용된다. 대상 요소집합과 구속조건으로 대상 절점들이 결정되게 된다. 다시 말하면 대상 요소집합은 지정한 요소집합으로 결정하고, 대상 절점집합은 지정한 요소집합과 구속조건으로 결정된다. 데이터라인에 출력할 센서을 지정하는 것은 Element나 Constraint로 지정하는 출력대상에 무관하다.
HDB 파일('hdb)에서는 *Step에 대응하는 *ResultStep를 생성하며 *TargetElements, *TargetConstraints, *TargetLoads 등을 출력한다. 이때 *TargetElements, *TargetConstraints가 *Output에서 지정한 대상 요소집합과 구속조건이다. 만약 *Output에 대상 요소집합과 구속조건을 지정하지 않으면 이들은 *Activate, TYPE=Element/Constraint에서 지정한 요소집합이나 구속조건과 같다. *TargetLoads는 *Activate, TYPE=Load와 항상 같다.
필드값은 절점 단위의 요소 단위로 필드값으로 구분할 수 있다.
▪ 절점 단위 필드
FN,FE: Equivalent nodal loads for applied loads and element loads at nodesFK,FC,FM: Internal forces including elastic, damping, and inertial forcesD: Degree of freedom field (displacements, temperature, etc., at nodes; represents modes in frequency analysis)V: First time derivative of the degree of freedom field (e.g., velocity for displacement, temperature rate, etc.)A: Second time derivative of the degree of freedom field (e.g., acceleration for displacement, temperature acceleration, etc.)
절점의 하중은 FN+FE=FK+FC+FM의 관계를 만족하게 된다
▪ 요소 단위 필드
BSF,BSE,BST: Cross-sectional force, strain, and temperature for beam elements (including truss/cable elements)SSF,SSE,SST: Cross-sectional force, strain, and temperature for shell elementsSF,SE,DF,DE: Cross-sectional force and strain for spring elements, and force and strain for damper sectionsS,E,PE: Stress, strain, and plastic strainSB: Back stressIEC,IET: Compressive and tensile inelastic strainECUN,ETUN: Last committed compressive/tensile unloading strainPEEQ,PEEQT,PEEQC: Equivalent plastic strain, and tensile/compressive equivalent plastic strainT: TemperatureITR,IRD: interfacial traction and relative displacementTIME: Material timeECR, ESH: Creep strain and shrinkage strainEP: Element pressureEW: Volumetric strain
요소 단위 필드는 요소점(element point)[요소 중심점, 요소 절점, 적분점 등 요소의 특성에 따라 정의되는 결과값이 정의되는 점]에 따라 순차적으로 출력된다. 예를 들어 8개의 적분점이 있는 C3D8에 대해 S를 출력하는 경우 다음과 같이 출력된다.
(요소번호), (첫번째 적분점의 S), (두번째 적분점의 S), ... (8번째 적분점의 S)
보요소, 스프링/댐퍼 요소, 경계면 요소 등에는 셀(cell)이라는 개념이 존재한다. 예를 들어 보요소의 단면을 2개의 서로 다른 재료를 갖는 셀(cell)로 구성하고, 각 셀은 재료점이 10개, 2개 라고 가정하기로 한다. 이때 S의 출력을 요청하면 다음과 같은 순서로 출력된다.
(요소번호), [첫번째 셀 - 첫 번째 적분점 S[재료점 10개] -... - 4번째 적분점 S[재료점 10개] ] , [두번째 셀 - 첫 번째 적분점 S[재료점 2개] -... - 4번째 적분점 S[재료점 2개] ]
이와 같은 출력 순서는 텍스트 HDB로 출력하거나 *Print 문으로 출력하면 확인가능하다. 바이너리나 hdf5 형태의 HDB 역시 내부적으로 이 순서에 따라 저장하게 된다.
▪ 주의
1. 주파수 해석 단계(*Step, Type=Frequency)에서는 HDB 파일('hdb)에서 모드 별로 프레임이 출력된다. 이때 각 프레임은 하나의 모드에 대응하며, 모드 형상이 D에 출력된다. 나머지 필드값은 이때의 D에 의해 유발되는 값이다.
2. 필드는 하위 성분을 가질 수 있다. 예를 들어 D는 D.X, D.Y, D.Z, .... 등의 하위 성분으로 구성된다. 자세한 하위 성분은 *History를 참조한다.
Example
*Step, Type=Static, Name=Case1
*Activate, TYPE=Element
dam, water, farField
*Output
D, SF, S, mySensor
*Print File=Case1.prn
D@Left, SF@Bearing
*Step, Type=Frequency, Name=FRQ
10
*Output
D, SSF
*Print, File=FRQMode.prn
별도 파일로 출력되는 결과값을 지정한다.
*Print, File=file
field@target|sensorName...
...
Keyword line
- File=file:
*Print명령에서 출력 대상 파일 이름((optional). 지정하지 않는 경우 filename-stepname-P#.csv 형태로 자동 지정됨(filename은 확장자를 제외한 파일 이름, #은 연번). 파일이름에, 이 포함되는 경우 현재의 DB 이름(입력파일에서 확장자를 뺀 이름)과 현재의 스텝 명칭으로 치환됨.
First dataline and subsequent datalines
- field@target: 출력할 필드와 대상. 절점에서 정의되는 필드의 경우 target에는 절점번호, 절점번호패턴, 절점집합이 가능하며, 요소에서 정의되는 필드의 경우 target에는 요소번호, 요소번호패턴, 요소집합이 가능하다
- sensorName: 출력한 센서 명칭
*Print 명령은 *Output과 유사하나 지정한 절점 집합이나 요소 집합을 대상으로 그 결과값을 텍스트 값으로 출력한다.