### ===================================================================================================================
### Human induced vibrations tool - Walking load
### ===================================================================================================================
# This calculation tool is based on the Dutch SBR guideline **Trillingen van vloeren door lopen**
# Copyright ©2025 Haskoning Nederland B.V.
### ===================================================================================================================
### 1. Import modules
### ===================================================================================================================
# General imports
import warnings
# References for functions and classes in the haskoning_atr_tools package
from haskoning_atr_tools.human_induced_vibrations.step_load import StepLoad
from haskoning_atr_tools.human_induced_vibrations.step_walking_load import StepWalkingLoad
### ===================================================================================================================
### 2. Walking Load
### ===================================================================================================================
[docs]
def calculate_walking_load(
step_frequency: float, body_mass: float, nr_steps: int = 15, load_reduction: bool = False) -> StepWalkingLoad:
"""
Calculate the walking load by superimposing the step load multiple times at intervals of 1/step_frequency. This
calculation tool is based on the Dutch SBR richtlijn **Trillingen van vloeren door lopen**, Richtlijn voor het
voorspellen, meten en beoordelen, d.d. September 2005. The procedure aligns to international research on the topic.
Input:
- step_frequency (float): The frequency of the steps, in [Hz]. The frequency should be between 1.64 and 3Hz.
- body_mass (float): The mass of the body, in [kg]. The body mass should be between 40 and 125kg.
- nr_steps (int): The number of steps to apply in the walking load. The total amount of steps should be at least
15. Default value is 15.
- load_reduction (bool): Toggle to apply a load reduction is applied to the first four and last four steps.
Default value False, no load reduction is applied.
Output:
- Returns the instance of StepWalkingLoad that defines the calculated step walking load.
"""
warnings.warn(
"WARNING:The Human Induced Vibrations Tool is currently under active development. Functionality may change in "
"future updates, and formal validation is still pending. Please verify your results carefully before using "
"them in your applications.")
# Create the instance of StepLoad that defines the properties of a single step
step_load = StepLoad(step_frequency=step_frequency, body_mass=body_mass)
# Create the StepWalkingLoad instance that defines the requested load for walking
return StepWalkingLoad(step_load=step_load, nr_steps=nr_steps, load_reduction=load_reduction)
### ===================================================================================================================
### 3. End of script
### ===================================================================================================================