Skip to content

17. 특수 해석

*Step, TYPE=ModelUpdating

hfAnalyzer는 센서에서 계측된 데이터를 이용해 해석모델의 물성치를 결정하는 모델업데이팅(Model Updating)을 지원하다.

*Step, Type=ModelUpdating,Static|Modal|Bayesian, Name=name[, PREV=prevStep]
  maxIter, tol, ...
*Activate, Type=Element
 elset1, eleemntSet2, ...
*Activate, TYPE=Constraint
 ....
*Activate, TYPE=Load
 ....
*SensorPair, MeasuredData=csvFile[,Generate]
 sensor-id, sesnor-fromId:toId, sensor-fromId:toId:spacing...
 ...
*DesignVariable
 {stiff|mass}, firstDesignVarElset1, firstDesignVarElset2,...
 {stiff|mass}, secondDesignVarElset1, secondDesignVarElset2, ...
 ...
Optional First dataline
*Step, Type=ModelUpdating,Static, Name=name[, PREV=prevStep]
 maxIter, ftol, dtol, degree                     
 ...

*Step, Type=ModelUpdating,Modal, Name=name[, PREV=prevStep]
 maxIter, ftol, dtol, degree, modePairing, weightFactor, regulationFactor 
 ...

*Step, Type=ModelUpdating,Bayesian, Name=name[, PREV=prevStep]
 maxIter, ftol, dtol, stdeq, a, b, c  
 ...              
First dataline
  • maxIter: maximum iteration number. default 300. If zero, default is used
  • ftol: convergence tolerance for residual, default 1E-8
  • dtol: convergence tolerance for design variable, default 1E-8
  • degree: Degree of design variable during internal computation. Degree should be 1 or 2. default 1.
  • modePairing: 비교할 모드를 선택하는 방법을 지정. Frequency 또는 Shape. 디폴트는 Frequency.
  • weightingFactor: 가중치 행렬에 사용되는 특성값으로 0이면 가중치행렬을 사용하지 않고, 그 외의 값은 가중치로 사용 (디폴트는 0)
  • regulaizationFactor: 0-0.3 사이의 정규화 계수. 0이면 정규화를 사용하지 않음(디폴트는 0)
  • stdeq: standard deviation for equation error. If zero, it is estimated using default method.
  • a, b: parameters of covariance for design variable error. Default zero, If zero, it is estimated using default method.
  • c: parameters of covariance for residual error. Default 0.01. If zero, default is used.

모델 업데이팅은 선형계를 대상으로 하며 다음과 같은 두가지 형태가 있다.

▪ 정적 모델업데이팅 정적하중이 주어진 상태를 기준으로 변형률계 또는 변위계에서 계측된 데이터를 이용하여 주어진 해석모델로부터 계측된 데이터와 근접하는 강성비를 결정함

▪ 모드식별(Modal Identification) 결과를 이용한 모델업데이팅 변형률계 또는 가속도계에서 계측된 동적 데이터를 모드식별 기법을 통해 가공한 데이터를 이용하여 해석 모델의 강성비 또는 질량비를 결정함.

*Step, Type=ModelUpdating, Static은 정적 모델이업데이팅을 *Step, Type=ModelUpdating,Modal, *Step, TYPE=ModelUpdating,Bayesian은 모드 식별 결과를 이용한 모델업데이팅을 의미한다. 이들 모델업데이팅은 선형계를 대상으로 하기 때문에 재료모델로 IsoElasticiy를 사용하는 요소로 한정된다. 적용가능한 재료와 단면은 다음과 같다.

*Material, TYPE=IsoElasticity
*Section, TYPE=ElasticBeam
*Section, TYPE=Shell
*Section, TYPE=Solid
*Section, TYPE=MCK  
  → Spring, EarthSpring, PointMass 만 가능 (실제 MCK 단면의 계수를 조정, 연결된 material은 그대로 둠)
*Section, TYPE=Tendon

*SensorPair 명령을 통해 측정된 결과와 해석에서 비교할 센서 측정점을 지정한다. MeasuredDat=csvFile에서 csv 파일은 다음 형식으로 측정된 모드 결과를 지정한다. 이때 지정한 센서를 순서에 맞도록 지정하도록 한다.

▪ Static 인 경우 : ModePairing은 무시되며 csvFile을 다음의 형태로 제공되어야 한다.

# *Step, TYPE=ModelUpdating, Static
# sensor1, sensor2, ...
  -1.8E-6, -3.26E-6, ...

▪ Modal인 경우 : ModePairing=Frequency|Shape에서 비교할 모드를 선택하는 방법을 지정할 수 있다. 디폴트는 Frequency이다. csvFile을 다음의 형태로 제공되어야 한다.

# *Step, TYPE=ModelUpdating,Modal
# mode_no, naturalFreq, damping, sensor1, sensor2, ...
          1,    2.08, 0.05, 0, -1.8E-6, -3.26E-6, ...
           ,    6.15, 0.05
           ,    9.01, 0.05, 3.35E-16, -1.63E-14, 1.7E-6, ...

제한조건은 다음과 같다.

  • 고유진동수는 반드시 주어져야 하며, 작은 값에서 큰 값으로 정렬되어야 한다.
  • 모드번호가 주어지는 경우 해석에서 구한 모드가 그 모드에 매칭된다.
  • 모드번호가 없는 경우 모드 매칭은 Frequency가 주어지는 경우 근접한 고유진동수로, Shape이 주어지는 경우 MAC 지수가 1에 근접하도록 이루어진다.
  • 모드 매칭이 Shape인 경우 모드 형상이 반드시 입력되어야 한다.
  • 매칭된 모드를 대상으로 최적화 수행시 고유진동수, 형상(주어지는 경우에만)을 이용한다.
  • 감쇠비는 무시된다(reserved)

▪ Bayesian인 경우 : csvFile을 다음의 형태로 제공되어야 한다.

모드번호와 감쇠비를 무시되며, 고유진동수와 형상은 항상 동시에 지정되어야 한다.

# *Step, TYPE=ModelUpdating,Bayesian
# mode_no, naturalFreq, damping, sensor1, sensor2, ...
          1,    2.08, 0.05, 0, -1.8E-6, -3.26E-6, ...
          2,    6.15, 0.05, 0, -2.1E-6, -4.1E-6, ...
          3,    9.01, 0.05, 3.35E-16, -1.63E-14, 1.7E-6, ...

제한조건은 다음과 같다.

  • 고유진동수는 반드시 주어져야 하며, 작은 값에서 큰 값으로 정렬되어야 한다.
  • 고유모드는 반드시 주어져야 한다.
  • 모드번호는 무시된다.
  • 감쇠비는 무시된다(reserved)

*DesignVariable데이터라인의 각 라인은 설계변수에 대응하는 요소집합을 지정한다. 각 라인의 첫 항에서 stiff를 지정할 경우 강성비를, mass를 지정할 경우 질량비를 설계변수로 설정한다. Degree는 내부계산시 설계변수의 차수를 지정하는데 1 또는 2를 적용할 수 있다 디폴트는 1이고, Bayesian에서는 무시된다.

모델 업데이팅을 수행하면 그 결과는 *DesignVariable에 지정한 요소집합에 대응하는 SPF(Stiffness Proportional Factor)와 MPF(Mass Proportional Factor)이다. 이 필드 값은 HDB 파일(.hdb)에 각 요소에 대응하는 값으로 출력된다. 또한 이값을 반영한 새로운 입력값이 생성되게 된다. 예를 들어 아래와 같이 model.inp 파일에서 업데이팅을 수행한다고 가정하기로 한다.

...
*Step, TYPE=ModelUpdating,Modal, Name=update
...
*DesignVarible
 stiff, left
 stiff, center
 mass, right

결과 파일로 HDB 파일(.hdb)과 새로운 입력 파일(.inp)을 생성한다.

▪ HDB 파일(.hdb) : 대응 ResultStep으로 update이고 SPF, MPF 등을 *Result로 포함한 파일

...
*ResultStep, Name=update
...
*Frame
*Result, Name=SPF
1, ...
...

▪ SPF, MPF를 반영한 재료/단면/요소집합이 포함된 새로운 입력파일 : update.inp

# ###############################################
# Generation from update step from model.inp
# Main Results
#  stiff, left, 1.23
#  stiff, center, 1.5
#  mass, right, 0.8
# ###############################################

*Material, TYPE=IsoElasticity, Name=conc
 2.5e+10, 0.2, 0, 2000  # E, nu, alpha, density

...
  • 참고

  • *Step, TYPE=ModelUpdating, Modal|Bayesian에서는 센서포인트 개수 ns, 설계변수 nd, 데이터개수(데이터파일의 행수) nm이라고 할 때 다음조건을 만족해야 한다.

  • Frequency만 주어지는 경우 : nm >= nd
  • Frequency와 형상(mode shape)이 모두 주어지는 경우 : ns * nm >= nd
  • *SensorPair, MeasuredData=dataFile, Generate와 같이 Generate 옵션을 지정하는 경우 테스트용도의 dataFile이 생성된다. *Step, TYPE=ModelUpdating, Static인 경우 현재의 하중조건이 부과된 해석결과가 데이터파일로 생성된다(1개 행). *Step, TYPE=ModelUpdating, Modal|Bayesian인 경우 1번의 조건을 만족하는 최소한의 행이 데이터파일로 씌여진다.
Example
*Construction, Type=Spline, Name=spline
 0,  0,  0
 10, 0.8,0
 20, 0,  0

*Sensor, Type=Line, Name=lineSensor1, HostElset=girder, Field=E, Spline=spline, startId=1
 0, 1, 2, 5, 
 3@3         # 8, 11, 14를 의미

# NOTE. Generate 1 HDB file(.hdb) + 2 input files

*Step, TYPE=ModelUpdating,Static Name=update1
*Activate, TYPE=Element
 ALL
*SensorPair, MeasuredData=data.txt
 lineSensor-1, lineSensor-2, ...
*DeisgnVariable
 stiff, left, center   

*Step, TYPE=ModelUpdating,Modal Name=update2
*Activate, TYPE=Element
 ALL
*SensorPair, MeasuredData=data.txt
 lineSensor-1, lineSensor-2, ...
*DeisgnVariable
 stiff, left, center   
 mass, right

*Step, TYPE=ShapeEstimation

hfAnalyzer는 센서에서 계측된 데이터를 이용해 해석모델의 변형후 형상(Deformed Shape Estimation)을 추정할 수 있다.

*Step, Type=ShapeEstimation,  Name=name[, PREV=prevStep]
 MAC, mac, nmode | modeNumber, ... 
*Activate, Type=Element
 elset1, elset2, ...
*Activate, TYPE=Constraint
 ....
*Activate, TYPE=Load
 ....
*SensorPair, MeasuredData=csvFile[,Generate]
 sensor-id, sesnor-fromId:toId, sensor-fromId:toId:spacing...
 ...
*Output[, ELSET=elset1, elset2, ..., Constraint=constraint1, constraint2, ..., Frequency=freqeuncy]
 field|sensorName,...
 ...
*Print[, Frequency=frequency, File=file 
 field@target|sensorName...
 ...
First dataline
  • MAC, mac, nmode: 센서단위의 근접모드를 주어진 mac 값으로 제거하고, nmode의 저차모드를 사용한다.
  • modeNumbmer, ...: 사용되는 고유진동 모드 번호 또는 모드 번호 패턴. 모드번호패턴은 start:end:spacing 형태이고, spacing은 1인 경우 생략가능. 첫라인이 없는 경우 1:4가 자동 지정됨.

변형 형상 추정은 센서 데이터로부터 변형 형상을 추정하여 그 결과를 HDB 파일(.hdb)에 변형 형상으로 기입한다. 선형계를 가정하며, 고유진동수 해석을 통해 계산된 센서 모드 형상의 중첩을 통해 변형 형상을 추정한다. 이때 사용되는 모드는 두가지 방법을 통해 선택한다.

(1) MAC 지수를 이용해 근접한 센서 모드를 배제하는 경우

첫 번재 데이터라인에서 MAC, 0.95, 3 등과 같이 입력하는 경우이다. 총 3개의 센서 모드를 변형 형상 추정에 사용하는데, 계산된 모드중 서로간의 MAC 지수가 0.95 이상인 경우 센서 모드 수준에서 동일한 모드로 판단하여 저차모드만을 선택된다. 내부적인 계산은 6개(요구하는 모드의 2배)의 모드를 계산한 후 상호간의 MAC 지수가 0.95이상인 모드끼리 묶은후 같은 그룹에서는 저차모드를 선택하게 되는데, 1번, 3번 모드간의 MAC지수가 0.95이상이라면, 1번, 2번, 4번이 선택된다.

(2) 사용자가 센서 모드를 강제로 지정하는 경우

첫 번째 데이터라인에서 1,2,3 또는 1,3,5:7 등과 같이 숫자로 사용할 센서모드를 지정하는 경우이다. 경우에 따라서 센서 모드끼리 선형 독립성(linear independence)를 가지지 못할 수 있기 때문에 알고리즘이 실패할 가능성 있다.

입력 파일은 *Step, Type=ModelUpdating, Static에서 사용한 형식과 동일하다.

# *Step, TYPE=DeformedShapeEstimation
# sensor1, sensor2, ...
  -1.8E-6, -3.26E-6, ...
  ...
Example
*Construction, Type=Spline, Name=spline
 0,  0,  0
 10, 0.8,0
 20, 0,  0

*Sensor, Type=Line, Name=lineSensor1, HostElset=girder, Field=E, Spline=spline, startId=1
 0, 1, 2, 5, 
 3@3         # 8, 11, 14를 의미

*Step, TYPE=ShapeEstimation, Name=update1
  1, 3, 5:7
*Activate, TYPE=Element
 ALL
*SensorPair, MeasuredData=data.txt
 lineSensor-1, lineSensor-2, ...

*Step, TYPE=ShapeEstimation, Name=update1
 MAC, 0.95,10
*Activate, TYPE=Element
 ALL
*SensorPair, MeasuredData=data.txt
 lineSensor-1, lineSensor-2, ...

*Step, TYPE=PerformanceEvaluation

성능평가(Performance Evaluation) 기능을 제공한다.

*Step, TYPE=PerformanceEvaluation, Name=name
  USD, phi, gd, gl | ASD
*TargetElements
 elset, ...
*Capacity  
 elset, negCapacity, posCapacity
 ...
*ImpactFactor
 elset, i_code, i_mea
 ...
*Demand 
 elset, dd_frame, ll_min_frame, ll_max_frame, C=SSF.Mx|SSF.My|BSF.Mx|BSF.My          [USD인 경우]
 elset, dd_frame, ll_min_frame, ll_max_frame, C=y1,z1,y2,z2,...                      [ASD인 경우]
 ...
*Deflection   
 elset, org_frame[, upd_frame]
 ...
First dataline
  • USD, phi, gd, gl: Assign ultimate strength design, with strength reduction factor, load factor for dead load an live load.
  • ASD: Assign allowable stress design

규칙은 다음과 같다.

  • ASD인 경우에는 보요소만 적용가능하고(B2D2H, B2D2MH, B3D2H, B3D2MH),
  • USD는 보요소 및 쉘요소에 적용가능하다(S4F,S3F,S4,S3)
  • ASD를 사용하기 위해서는 대상 보요소는 BSE를 출력해야 하고, 온도의 영향을 고려하지 않는다.
  • USD를 사용하기 위해서는 대상 보요소에서는 BSF, 쉘요소에서는 SSF를 출력해야 한다.
  • 출력되는 필드는 다음과 같다.

    • PE_IMC, PE_IMM : *ImpactFactor에서 주어지는 요소단위 필드
    • PE_MNNEG, PE_MNPOS : USD인 경우 *Capacity에 주어진 요소단위 공칭모멘트
    • PE_EANEG, PE_EAPOS : ASD인 경우 *Capacity에 주어지는 요소단위 허용변형률
    • PE_MDD, PE_MLLMIN, PE_MLLMAX : USD인 경우 *Demand에서 계산된 적분점 단위 내력 모멘트, 스칼라값
    • PE_EDD, PE_ELLMIN, PE_ELLMAX : ASD인 경우 *Demand에서 계산된 적분점 단위 내력 모멘트. 적분점 내에 주어진 점에서 정의됨
      PE_EDD= [PE_DD.1, PE_DD.2, ...]  
      PE_ELLMIN = [PE_ELLMIN.1, PE_ELLMIN.2, ...]  
      PE_ELLMAX = [PE_ELLMAX.1, PE_ELLMAX.2, ...]  
      
    • PE_SF : 요소단위 SF (적분점에서 계산되는 SF의 평균)
    • PE_RF : 요소단위 RF (적분점에서 계산되는 RF의 평균)
    • PE_SRF: 요소단위 SRF(적분점에서 계산되는 SFR의 평균). *Deflection에서 upd가 주어지지 않는 경우에는 출력되지 않는다.

구현된 성능평가는 내부 역량과 외부 요구를 비구하는 방식으로 이루어진다.

  • USD : 공칭모멘트와 설계모멘트, 보 요소와 쉘 요소
  • ASD : 허용변형률과 설계변형률, 보 요소

*TargetElements에서 주어진 요소를 대상으로 *Capacity, *ImpactFactor, *Demand, *Deflection에서 주어지는 정보를 읽어서, 대상 요소의 각 적분점에서 SF, RF, CRF를 계산한다.

아래 예는 elem-deck, elem-beam이라는 두 요소집합을 대상으로 성능평가를 수행한 것이다.

*Step, TYPE=PerformanceEvaluation, Name=myEval
 USD, 0.85, 1.3, 2.15  # phi, gd, gl
*TargetElements
 elem-deck, elem-beam 
*Capacity
 elem-pos, -1,676.56, 1676.56   # elset, Mn_neg, Mn_pos
 elem-neg, -2,647.43, 2647.43
*ImpactFactor
 elem-pos1, 0.275229358, 0.275229358   # elset, i_code, i_mea
 elem-pos2, 0.267857143, 0.267857143
 elem-neg1, 0.275229358, 0.275229358
 elem-neg2, 0.271493213, 0.271493213
*Demand 
 elem-deck1, step-DD.LAST@org1.h5.hdb, step-LL-min.LAST@org1.h5.hdb, step-LL-max.LAST@org1.h5.hdb, C=SSF.Mx
 elem-deck2, step-DD.LAST@org2.h5.hdb, step-LL-min.LAST@org2.h5.hdb, step-LL-max.LAST@org2.h5.hdb, C=SSF.Mx
 elem-beam1, step-DD.LAST@org1.h5.hdb, step-LL-min.LAST@org1.h5.hdb, step-LL-max.LAST@org1.h5.hdb, C=BSF.Mx
 elem-beam2, step-DD.LAST@org2.h5.hdb, step-LL-min.LAST@org2.h5.hdb, step-LL-max.LAST@org2.h5.hdb, C=BSF.Mx
*Deflection 
 elem-deck3, step-resp.LAST@org3.hdb, step-resp.LAST@upd.h5.hdb
 elem-deck4, step-resp.LAST@org4.hdb, step-resp.LAST@upd.h5.hdb
 elem-beam3, step-resp.LAST@org3.hdb, step-resp.LAST@upd.h5.hdb
 elem-beam4, step-resp.LAST@org4.hdb, step-resp.LAST@upd.h5.hdb

*TargetElements는 대상이 되는 요소집합을 지정하고, *Capacity, *ImpactFactor, *Demand는 공칭내력모멘트, 충격계수, 설계모멘트를 지정한다. *Deflection은 CRF를 위한 보정값 K를 계산하는 데 필요한 값이다. *Deflection 입력시 upd_frame을 잊ㅂ력하지 않는 경우에는 SF, RF 필드만을 계산하게 된다.

*TargetElements, *NomialMoment, *ImpactFactor, *Demand, *Deflection에서 사용하는 요소집합은 *Step, TYPE=PerformanceEvaluation을 지정하는 입력파일의 모델부에 미리 정의되어 있어야 한다. 이들 요소집합은 다음과 같은 제한사항이 있다.

  • *Demand에서 지정하는 요소들의 집합과 *TargetElements에서 지정하는 요소들이 집합은 서로 같아야 한다. ( target elements = elements for design moment )
  • *TargetElements를 대상으로 계산을 수행할 때 *NomialMoment, *ImpactFactor를 대상으로 참조하므로 *TargetElements에 있는 요소들에 대해서 그 값이 지정되어 있어야 한다. ( target elements < elements for nomial moments, impact factor)

한편 *Demand, *Deflection 등에서 step.frame@hdbFile 형태로 외부 HDB 파일(.hdb)을 사용할 수 있다. frame은 1부터 그 step의 최대 frame 번호까지 숫자가 올수 있으며, 마지막 프레임번호 대신 last를 사용할 수 있다. hdbFile이 존재하는 경우 동일한 유한요소모델 사용이 필요하다. 따라서 다음을 검토한다.

  • *TargetElements에 지정된 요소들로부터 사용되는 TargetNodes를 구성한다.
  • 사용되는 모든 hdb 파일을 대상으로 TargetNodes의 절점의 좌표 정보 및 요소 연결에 따른 자유도 정보가 같은지 확인한다.
  • 사용되는 모든 hdb 파일을 대상으로 *TargetElements의 요소들이 서로 요소번호, 요소타입, 절점연결정보 등이 동일한지 확인한다. 단 사용 단면 정보(연결된 section)을 다를 수 있다.
Example
*Step, TYPE=PerformanceEvaluation, Name=myEval
 USD, 0.85, 1.3, 2.15 
*TargetElements
 deck
*Capacity
 deck-pos, -1676.56, 1676.56  
 deck-neg, -2647.43, 2647.43
*ImpactFactor
 deck-pos1, 0.275229358, 0.275229358  
 deck-pos2, 0.267857143, 0.267857143
 deck-neg1, 0.275229358, 0.275229358
 deck-neg2, 0.271493213, 0.271493213
*Demand 
 deck, step-DD.LAST@org1.h5.hdb, step-LL-min.LAST@org1.h5.hdb, step-LL-max.LAST@org1.h5.hdb, C=SSF.Mx
*Deflection 
 deck, step-resp.LAST@org3.h5.hdb, step-resp.LAST@upd.h5.hdb


*Step, TYPE=PerformanceEvaluation, Name=step-performance
  ASD
*TargetElements
  elem-girder
*Capacity
  # elset, C_min, C_max
  elem-girder, -140e6/200e9, 140e6/200e9  # -140e6, 140e6  # for t < 40 mm, SM400
*ImpactFactor
  # elset, i_code, i_mea
  elem-girder, 0.1875, 0.1875
*Demand
  # elset, DD, LL-min, LL-max
  elem-girder, step-DD.LAST, step-LL.1, step-LL.2, C=1.5,1.65, 1.5,-0.65, -1.5,1.65, -1.5,-0.65
*Deflection
  # elset, resp_data
  elem-girder, step-resp.LAST