The fkm_load_distribution module#
Scale a load sequence for FKM nonlinear load distribution safety.
The accessors in this module multiply a stress or load sequence by the FKM
nonlinear load factor \(\gamma_L\). The factor accounts for the assumed
load distribution, the assessment failure probability \(P_A\), and the
load probability \(P_L\) of either 2.5 percent or 50 percent.
The FKM nonlinear guideline defines three possible methods to consider the statistical distribution of the load:
Normal distribution with standard deviation \(s_L\).
Lognormal distribution with logarithmic standard deviation \(LSD_s\).
Unknown distribution, using \(\gamma_L = 1.1\) for \(P_L = 2.5\%\).
The corresponding accessors are fkm_safety_normal_from_stddev,
fkm_safety_lognormal_from_stddev, and fkm_safety_blanket.
The resulting scaling factor can be retrieved with
.gamma_L(input_parameters), the scaled load series can be obtained with
.scaled_load_sequence(input_parameters).
Notes
The statistical load factors implement FKM nonlinear guideline clause 2.3.2.
Examples
>>> input_parameters = pd.Series({"P_A": 1e-5, "P_L": 50, "s_L": 10, "LSD_s": 1e-2,})
>>> load_sequence = pd.Series([100.0, 150.0, 200.0], name="load")
>>> # uses input_parameters.s_L, input_parameters.P_L, input_parameters.P_A
>>> load_sequence.fkm_safety_normal_from_stddev.scaled_load_sequence(input_parameters)
0 114.9450
1 172.4175
2 229.8900
Name: load, dtype: float64
>>> # uses input_parameters.s_L, input_parameters.P_L, input_parameters.P_A
>>> load_sequence.fkm_safety_lognormal_from_stddev.scaled_load_sequence(input_parameters)
0 107.124794
1 160.687191
2 214.249588
Name: load, dtype: float64
>>> # uses input_parameters.P_L
>>> load_sequence.fkm_safety_blanket.scaled_load_sequence(input_parameters)
0 100.0
1 150.0
2 200.0
Name: load, dtype: float64
- class pylife.strength.fkm_load_distribution.FKMLoadDistributionBlanket(pandas_obj)[source]#
Scale a load sequence with the FKM blanket load factor.
Use this accessor when the statistical load distribution is unknown. For \(P_L = 2.5\%\) it applies the constant blanket factor \(\gamma_L = 1.1\); for \(P_L = 50\%\) it leaves the load unchanged.
Signal contract:
The accessor accepts the same non-empty
pandas.Seriesorpandas.DataFrameobjects asFKMLoadSequence.In a multi-column
pandas.DataFrame, the first column contains the load or stress values to scale; further columns are copied unchanged.
- Parameters:
pandas_obj (pandas.Series or pandas.DataFrame) – Load sequence or stress sequence. Stress values are typically given in MPa.
See also
FKMLoadDistributionNormalScale loads with a normal distribution.
FKMLoadDistributionLognormalScale loads with a lognormal distribution.
Notes
Implement FKM nonlinear guideline clause 2.3.2.3. Prefer this accessor when no reliable statistical distribution parameters are available.
- gamma_L(input_parameters)[source]#
Compute the scaling factor \(\gamma_L\).
- Parameters:
input_parameters (pandas Series) –
The parameters to specify the upscaling method.
input_parameters.P_L: probability in [%] of the load for which to do the assessment, has to be on of {2.5, 50}. (de: Ausfallwahrscheinlichkeit)
- Returns:
Load scaling factor \(\gamma_L\), dimensionless.
- Return type:
- Raises:
ValueError – If
P_Lis missing or is neither2.5nor50percent.
- scaled_load_sequence(input_parameters)[source]#
Scale the load sequence with the blanket load factor.
The only required input parameter is
P_L.- Parameters:
input_parameters (pandas Series) –
The parameters to specify the upscaling method.
input_parameters.P_L: probability in [%] of the load for which to do the assessment, one of {2.5, 50}
- Returns:
Scaled copy of the input object. The load column is multiplied by \(\gamma_L\) according to FKM nonlinear guideline clause 2.3.2.3.
- Return type:
- Raises:
ValueError – If
P_Lis missing or is neither2.5nor50percent.
- class pylife.strength.fkm_load_distribution.FKMLoadDistributionLognormal(pandas_obj)[source]#
Scale a load sequence assuming lognormally distributed loads.
Use this accessor when the logarithm of the load values is normally distributed and the logarithmic standard deviation \(LSD_s\) is known. It is suited to multiplicative scatter, where the safety factor is independent of the absolute load level.
Signal contract:
The accessor accepts the same non-empty
pandas.Seriesorpandas.DataFrameobjects asFKMLoadSequence.In a multi-column
pandas.DataFrame, the first column contains the load or stress values to scale; further columns are copied unchanged.
- Parameters:
pandas_obj (pandas.Series or pandas.DataFrame) – Load sequence or stress sequence. Stress values are typically given in MPa.
See also
FKMLoadDistributionNormalScale loads with a normal distribution.
FKMLoadDistributionBlanketScale loads when the distribution is unknown.
Notes
Implement FKM nonlinear guideline clause 2.3.2.2. Prefer this accessor over
FKMLoadDistributionNormalwhen scatter acts as a relative factor on the load level.- gamma_L(input_parameters)[source]#
Compute the scaling factor \(\gamma_L\).
- Parameters:
input_parameters (pandas Series) –
The parameters to specify the upscaling method.
input_parameters.LSD_s: standard deviation of the lognormal distributioninput_parameters.P_L: probability in [%] of the load for which to do the assessment, one of {2.5, 50}input_parameters.P_A: probability in [%], one of {1e-7, 1e-6, 1e-5, 7.2e-5, 1e-3, 2.3e-1, 0.5} (de: Ausfallwahrscheinlichkeit)
- Returns:
Load scaling factor \(\gamma_L\), dimensionless.
- Return type:
- Raises:
ValueError – If a required parameter is missing or
P_Ais not supported.
- scaled_load_sequence(input_parameters)[source]#
Scale the load sequence with the lognormal-distribution factor.
The following parameters are used: LSD_s, P_L, P_A.
- Parameters:
input_parameters (pandas Series) –
The parameters to specify the upscaling method.
input_parameters.LSD_s: standard deviation of the lognormal distributioninput_parameters.P_L: probability in [%] of the load for which to do the assessment, one of {2.5, 50}input_parameters.P_A: probability in [%], one of {1e-7, 1e-6, 1e-5, 7.2e-5, 1e-3, 2.3e-1, 0.5} (de: Ausfallwahrscheinlichkeit)
- Returns:
Scaled copy of the input object. The load column is multiplied by \(\gamma_L\) according to FKM nonlinear guideline clause 2.3.2.2.
- Return type:
- Raises:
ValueError – If a required parameter is missing or
P_Ais not supported.
- class pylife.strength.fkm_load_distribution.FKMLoadDistributionNormal(pandas_obj)[source]#
Scale a load sequence assuming normally distributed loads.
Use this accessor when the load values are normally distributed and the standard deviation \(s_L\) is known in the same unit as the load sequence. It converts a load sequence from the reference load probability to the requested FKM load probability and assessment failure probability.
Signal contract:
The accessor accepts the same non-empty
pandas.Seriesorpandas.DataFrameobjects asFKMLoadSequence.In a multi-column
pandas.DataFrame, the first column contains the load or stress values to scale; further columns are copied unchanged.
- Parameters:
pandas_obj (pandas.Series or pandas.DataFrame) – Load sequence or stress sequence. Stress values are typically given in MPa.
See also
FKMLoadDistributionLognormalScale loads with a lognormal distribution.
FKMLoadDistributionBlanketScale loads when the distribution is unknown.
Notes
Implement FKM nonlinear guideline clause 2.3.2.1. Prefer this accessor over
FKMLoadDistributionLognormalwhen additive scatter in load or stress is the appropriate model.- gamma_L(input_parameters)[source]#
Compute the scaling factor \(\gamma_L = (L_\text{max} + \alpha_L) / L_\text{max}\).
Note that for load sequences on multiple nodes (i.e. on a full mesh), \(L_\text{max}\) is the maximum load over all nodes and load steps, not different for different nodes.
- Parameters:
input_parameters (pandas Series) –
The parameters to specify the upscaling method.
input_parameters.s_L: standard deviation of the normal distributioninput_parameters.P_L: probability in [%] of the load for which to do the assessment, one of {2.5, 50}input_parameters.P_A: probability in [%], one of {1e-7, 1e-6, 1e-5, 7.2e-5, 1e-3, 2.3e-1, 0.5} (de: Ausfallwahrscheinlichkeit)input_parameters.max_load_independently_for_nodes: optional, whether the scaling should be performed independently at every node (True), or uniformly over all nodes (False). The default value is False.
- Returns:
Load scaling factor \(\gamma_L\), dimensionless.
- Return type:
- Raises:
ValueError – If a required parameter is missing or
P_Ais not supported.
- scaled_load_sequence(input_parameters)[source]#
Scale the load sequence with the normal-distribution factor.
The following parameters are used: s_L, P_L, P_A.
- Parameters:
input_parameters (pandas Series) –
The parameters to specify the upscaling method.
input_parameters.s_L: standard deviation of the normal distributioninput_parameters.P_L: probability in [%] of the load for which to do the assessment, one of {2.5, 50}input_parameters.P_A: probability in [%], one of {1e-7, 1e-6, 1e-5, 7.2e-5, 1e-3, 2.3e-1, 0.5} (de: Ausfallwahrscheinlichkeit)
- Returns:
Scaled copy of the input object. The load column is multiplied by \(\gamma_L\) according to FKM nonlinear guideline clause 2.3.2.1.
- Return type:
- Raises:
ValueError – If a required parameter is missing or
P_Ais not supported.
- class pylife.strength.fkm_load_distribution.FKMLoadSequence(pandas_obj)[source]#
Scale load data by a constant FKM load factor.
This accessor is available as
.fkm_load_sequenceonpandas.Seriesandpandas.DataFrameobjects. It is the shared base for the FKM statistical load distribution accessors and can also be used directly when a factor \(\gamma_L\) is already known.Signal contract:
A
pandas.Seriesrepresents one scalar load value per load step.A
pandas.DataFramewith one column represents one scalar load value per index row.A
pandas.DataFramewith multiple columns stores the load in the first column; additional columns, such as a stress gradient, are copied unchanged byscaled_by_constant().The object must not be empty.
- Parameters:
pandas_obj (pandas.Series or pandas.DataFrame) – Load sequence, stress sequence, or mesh-indexed load table to scale. Load or stress values are interpreted in the units used by the subsequent assessment, typically MPa for stresses.
Notes
Mesh-like data are commonly indexed by
load_stepandnode_id. The scaling methods preserve the original index and all non-load columns.- maximum_absolute_load(max_load_independently_for_nodes=False)[source]#
Get the maximum absolute load over all nodes and load steps.
This is implemented for pd.Series (where the index is just the index of the load step), pd.DataFrame with one column (where the index is a MultiIndex of load_step and node_id), and pd.DataFrame with multiple columns with the load is given in the first column.
- Parameters:
max_load_independently_for_nodes (bool, optional) – Flag indicating whether to compute the maximum absolute load separately for every node. If set to
False, a single maximum value is computed over all nodes. Default isFalse.- Returns:
Maximum absolute load. The unit is the same as the load sequence, typically MPa for stress values.
- Return type:
- scaled_by_constant(gamma_L)[source]#
Scale the load sequence by the given constant
gamma_L.This method basically computes
gamma_L * self._obj. The data inself._objis either apandas.Series, apandas.DataFramewith a single column or a pandas.DataFrame with multiple columns (usually two for stress and stress gradient). In the case of a Series or only one column, it simply scales all values by the factorgamma_L. In the case of a DataFrame with multiple columns, it only scales the first column by the factor gamma_L and keeps the other columns unchanged.Returns a scaled copy of the data.
- Parameters:
gamma_L (float) – Scaling factor for the load sequence, dimensionless.
- Returns:
Scaled copy of the load sequence. For a multi-column
pandas.DataFrame, only the first column is multiplied bygamma_L.- Return type: