17. Special step
*Step, TYPE=ModelUpdating
hfAnalyzer supports model updating using sensor-measured data to determine the material properties of the analysis model.
*Step, Type=ModelUpdating,Static|Modal|Bayesian, Name=name[, PREV=prevStep]
maxIter, tol, ...
*Activate, Type=Element
elset1, elset2, ...
*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,BModal, Name=name[, PREV=prevStep]
maxIter, ftol, dtol, stdeq, a, b, c
...
First dataline
- maxIter: Maximum iteration number. Default is 300. If set to zero, the default value is used.
- ftol: Convergence tolerance for residuals, default is 1E-8.
- dtol: Convergence tolerance for design variables, default is 1E-8.
- degree: Degree of the design variable during internal computation. The degree should be 1 or 2, with the default being 1.
- modePairing: Specifies the method for selecting modes to compare. Options are Frequency or Shape, with the default being Frequency.
- weightingFactor: Characteristic value used in the weighting matrix. If set to 0, the weighting matrix is not used; otherwise, it is used as a weight (default is 0).
- regularizationFactor: Regularization coefficient between 0 and 0.3. If set to 0, regularization is not used (default is 0).
- stdeq: Standard deviation for equation error. If set to zero, it is estimated using the default method.
- a, b: Parameters of covariance for design variable error. Default is zero. If set to zero, they are estimated using the default method.
- c: Parameters of covariance for residual error. Default is 0.01. If set to zero, the default is used.
Model updating is targeted at linear systems and consists of the following two forms:
▪ Static Model Updating Determines the stiffness ratio that closely matches the measured data from the given analysis model using data obtained from strain gauges or displacement gauges under static load conditions.
▪ Model Updating Using Modal Identification Results Determines the stiffness or mass ratio of the analysis model using dynamic data obtained from strain gauges or accelerometers processed through modal identification techniques.
*Step, Type=ModelUpdating, Static
refers to static model updating, while *Step, Type=ModelUpdating, Modal
and *Step, TYPE=ModelUpdating, Bayesian
refer to model updating using modal identification results. Since these model updates target linear systems, they are limited to elements using the Isoelasticity material model. The applicable materials and sections are as follows.
*Material, TYPE=IsoElasticity
*Section, TYPE=ElasticBeam
*Section, TYPE=Shell
*Section, TYPE=Solid
*Section, TYPE=MCK
→ Only Spring, EarthSpring, and PointMass are allowed (adjusting the coefficients of the actual MCK section while keeping the connected material unchanged).
*Section, TYPE=Tendon
The *SensorPair
command is used to specify sensor measurement points for comparison with results from the analysis. The MeasuredDat=csvFile
specifies the CSV file containing the measured mode results in the following format. The sensors specified must be ordered correctly.
▪ For Static Cases: The ModePairing is ignored, and the csvFile should be provided in the following format.
# *Step, TYPE=ModelUpdating, Static
# sensor1, sensor2, ...
-1.8E-6, -3.26E-6, ...
▪ For Modal Cases: You can specify the method for selecting modes to compare using ModePairing=Frequency|Shape
. The default is Frequency
. The csvFile should be provided in the following format.
# *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, ...
- The natural frequencies must be provided and sorted in ascending order.
- When mode numbers are given, the modes obtained from the analysis are matched to those numbers.
- If mode numbers are not provided, mode matching is done by using the closest natural frequency when
Frequency
is given, and to achieve a MAC index close to 1 whenShape
is given. - When mode matching is based on
Shape
, the mode shapes must be provided. - When performing optimization on matched modes, both the natural frequencies and shapes (when provided) are used.
- The damping ratio is ignored (reserved).
▪ For Bayesian Cases: The csvFile should be provided in the following format.
Mode numbers and damping ratios are ignored, and the natural frequencies and shapes must always be specified simultaneously.
# *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, ...
- The natural frequencies must be provided and sorted in ascending order.
- The natural modes must be provided.
- Mode numbers are ignored.
- The damping ratio is ignored (reserved).
Each line of the *DesignVariable
data specifies the elset corresponding to the design variable. If "stiff" is specified at the beginning of each line, it sets the stiffness ratio as the design variable; if "mass" is specified, it sets the mass ratio. The degree specifies the order of the design variable during internal calculations, and can be either 1 or 2, with the default being 1. In Bayesian cases, this is ignored.
When model updating is performed, the results correspond to the SPF (Stiffness Proportional Factor) and MPF (Mass Proportional Factor) for the elsets specified in *DesignVariable
. These field values are output to the hdb
file corresponding to each element. Additionally, a new input value reflecting these values will be generated. For example, consider the following case where updating is performed in the model.inp file.
...
*Step, TYPE=ModelUpdating,Modal, Name=update
...
*DesignVarible
stiff, left
stiff, center
mass, right
The results files generated will include the HDB file(.hdb
) and a new input file(.inp
).
▪ HDB file(.hdb
): This file will contain the corresponding ODBStep for the update, including SPF, MPF, and other relevant data under *Result
.
...
*ODBStep, Name=update
...
*Frame
*Result, Name=SPF
1, ...
...
▪ New Input File Reflecting SPF and MPF: This file will include materials, sections, and elsets adjusted according to the SPF and MPF values. The file will be named 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
...
-
Note
-
In
*Step, TYPE=ModelUpdating, Modal|esian
, let ns be the number of sensor points, nd be the number of design variables, and nm be the number of data entries (number of rows in the data file). The following conditions must be satisfied: - If only Frequency is provided: nm >= nd
-
If both Frequency and mode shape are provided: ns * nm >= nd
-
When specifying the Generate option in
*SensorPair, MeasuredData=dataFile, Generate
, a test dataFile will be created. In the case of*Step, TYPE=ModelUpdating, Static
, the current analysis results with the applied load condition will be generated as a data file (1 row). In the case of*Step, TYPE=ModelUpdating, Modal|Bayesian
, a minimum number of rows satisfying the first condition will be written to the data file.
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 + 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 can estimate the deformed shape of the analysis model using data measured from sensors (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: Remove the close modes at the given mac value from the sensor units and use the lower-order modes specified by nmode.
- modeNumber, ...: Eigenmode numbers or mode number patterns used. The mode number pattern is in the form of
start:end:spacing
, and spacing can be omitted if it is 1. If the first line is absent, 1:4 is automatically assigned.
Deformed shape estimation involves estimating the deformed shape from sensor data and recording the results in the HDB file(.hdb
) as the deformed shape. It assumes a linear system and estimates the deformed shape through the superposition of sensor mode shapes calculated from eigenvalue analysis. The modes used for this estimation are selected through two methods:
(1) Excluding close sensor modes using the MAC index
This is when inputting something like MAC, 0.95, 3 in the first data line. A total of 3 sensor modes are used for deformed shape estimation. Among the calculated modes, if the MAC index between them is 0.95 or higher, they are considered the same mode at the sensor mode level, and only the lower-order modes are selected. Internally, six (twice the number of required modes) modes are calculated, and those with a MAC index of 0.95 or higher are grouped together. Within the same group, the lower-order modes are selected; for instance, if the MAC index between modes 1 and 3 is 0.95 or higher, then modes 1, 2, and 4 will be selected.
(2) Forcing the user to specify sensor modes
This is when the user specifies the sensor modes using numbers in the first data line, such as 1, 2, 3 or 1, 3, 5:7. There may be cases where the sensor modes do not possess linear independence, which can lead to the algorithm failing.
The input file follows the same format as that used in *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
The system provides a Performance Evaluation feature.
*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 [for USD]
elset, dd_frame, ll_min_frame, ll_max_frame, C=y1,z1,y2,z2,... [for 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
The rules are as follows:
- For ASD, only beam elements can be applied (B2D2H, B2D2MH, B3D2H, B3D2MH).
- For USD, both beam and shell elements can be applied (S4F, S3F, S4, S3).
- To use ASD, the target beam elements must output BSE and do not consider the effects of temperature.
- To use USD, the target beam elements must output BSF, and shell elements must output SSF.
-
The output fields are as follows:
- PE_IMC, PE_IMM: Element-level fields given in
*ImpactFactor
. - PE_MNNEG, PE_MNPOS: Nominal moments provided in
*Capacity
for USD. - PE_EANEG, PE_EAPOS: Allowable strains provided in
*Capacity
for ASD. - PE_MDD, PE_MLLMIN, PE_MLLMAX: Calculated at the integration point for USD in
*Demand
, these represent the moment, scalar values. - PE_EDD, PE_ELLMIN, PE_ELLMAX: Calculated at the integration point for ASD in
*Demand
, defined at the given points within the integration points.
- PE_IMC, PE_IMM: Element-level fields given in
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: Element-level SF (average of SF calculated at the integration points).
- PE_RF: Element-level RF (average of RF calculated at the integration points).
- PE_SRF: Element-level SRF (average of SRF calculated at the integration points). This will not be output if `*Deflection` is given without upd.
The implemented performance evaluation is conducted by balancing internal capabilities with external requirements.
- USD: Nominal moments and design moments for beam and shell elements.
- ASD: Allowable strains and design strains for beam elements.
For the elements given in *TargetElements
, the information provided in *Capacity
, *ImpactFactor
, *Demand
, and *Deflection
is read to calculate SF, RF, and CRF at each integration point of the target elements.
The example below performs a performance evaluation for two elsets: elem-deck
and 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.h5.hdb, step-resp.LAST@upd.h5.hdb
elem-deck4, step-resp.LAST@org4.h5.hdb, step-resp.LAST@upd.h5.hdb
elem-beam3, step-resp.LAST@org3.h5.hdb, step-resp.LAST@upd.h5.hdb
elem-beam4, step-resp.LAST@org4.h5.hdb, step-resp.LAST@upd.h5.hdb
*TargetElements
specifies the set of target elements, and *Capacity
, *ImpactFactor
, *Demand
designate the nominal moment capacity, impact factor, and design moment, respectively. *Deflection
is used to calculate the correction factor K for the CRF. When using *Deflection
, if the upd_frame is not specified, only the SF and RF fields will be calculated.
The elsets used in *TargetElements
, *NominalMoment
, *ImpactFactor
, *Demand
, and *Deflection
must be predefined in the model section of the input file where *Step, TYPE=PerformanceEvaluation
is specified. These elsets have the following constraints:
- The sets specified in
*Demand
must be the same as those specified in*TargetElements
(target elements = elements for design moment). - When performing calculations on the
*TargetElements
, the values must be specified for*NominalMoment
and*ImpactFactor
since they are referenced against the*TargetElements
(target elements < elements for nominal moments, impact factor).
Additionally, external HDB files(.hdb
) can be used in *Demand
, *Deflection
, etc., in the format step.frame@hdbFile. The frame can be a number from 1 to the maximum frame number of that step, and 'last' can be used in place of the last frame number. If the hdb
file exists, the same finite element model must be used. Therefore, the following should be verified:
- Construct the TargetNodes from the elements specified in
*TargetElements
. - Check that the coordinate information of the TargetNodes and the degree of freedom information based on the element connections are the same across all used HDB files(
.hdb
). - Ensure that the elements of
*TargetElements
are identical in terms of element number, element type, and node connectivity information across all used HDB files(.hdb
). However, the connected section information may differ.
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