FAQ
FAMOS
シーケンス / 関数top
└疲労寿命推定
ID.
Q. ダメージ計算:クラスカウント法向け
A.
クラスカウント法の場合、カウント結果は0から始まるインデックスでクラスに分類されています。例としては下図のような状態です。
S-N線図では応力Sとして物理単位が使われるため、シーケンスではクラスのインデックスから物理単位に換算して計算を行う必要があります。
ここでは、それぞれ以下の名前を変数として使います。
SN | S-N線図、応力Sの単位系はクラスカウント法の対象としたデータと同じ |
---|---|
Result | クラスカウント法のカウント結果 |
_MaxValue | カウントしたレンジの上限 (ClsPeak〇関数に使ったパラメータ) |
_MinValue | カウントしたレンジの下限 (ClsPeak〇関数に使ったパラメータ) |
_NumberOfBins | 分類されたクラス数 (ClsPeak〇関数に使ったパラメータ) |
Damage | S-N線図とカウント結果から求められたダメージ |
TrialTime | 対象データが示す時間、距離など |
LifeTime | 推定された疲労寿命 |
シーケンスの記述は以下のようになります。
; S-Nを両対数スケール上で検索するために換算
_xlog = Log(SN.X)
_ylog = Log(SN.Y)
; 1クラスのレンジを計算
_range = (_MaxValue - _MinValue) / _NumberOfBins
; すべてのクラスでループ計算
Damage = 0
_i = 1
While _i <= _NumberOfBins
; そのクラスの振幅、応力Sに相当する
_class = Abs(_MinValue + _range * _i)
; 対応する回数NをS-N線図から検索する
_slog = PosiEx(_ylog, Log(_class))
_nlog = Value2(_xlog, _slog, 0)
_N = 10^_nlog
; ダメージに換算する
Damage = Damage + Result[_i] * (1 / _N)
_i = _i + 1
End
; 疲労寿命の推定
TrialTime = 10 ; 対象データ相当の時間/距離などを指定する
LifeTime = TrialTime / Damage
S-N線図が両対数スケールのため、応力Sから回数Nを検索する手順が少々特殊ですが、要点としては「クラスに対応する応力Sを求める」「応力Sに対応する回数Nを求める」「回数Nをダメージに換算して累計を取る」の3点のみです。