obsidian_backup/工作总结/2025提交文档/多体动力学模块开发者手册.md

90 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[TOC]
<div style="page-break-after: always;"></div>
# 1. 多体动力学模块简介
多体动力学模块求解陆上和海上风电机组在气动载荷、波浪载荷等动态载荷作用下叶片和塔筒的变形轮毂和机舱的受力机组整体的六自由度运动等。本模块采用Kane方法建立建立风电机组整机动力学模型对于叶片、塔筒等柔性体将其离散化为有限个可以看成刚体的离散单元将Kane方法结合模态叠加法建立风电机组整机刚柔耦合结构动力学模型。
# 2. 多体动力学模块程序介绍
## 2.1. 多体动力学模块架构
```
multibody_library/
├── multibody_data_structures.rs # 多体动力学模块数据结构体
├── modmesh_types.rs # 多体动力学网格数据结构体
├── multibody_init.rs # 多体动力学模块初始化
├── multibody_solution.rs # 多体动力学模块求解
└── basic_tools.rs # 基本工具
```
## 2.2. 主要子模块的功能介绍
### 2.2.1. multibody_data_structures.rs
该模块定义了多体动力学模块的数据结构体及对应的初始化函数:
- `MultibodyInputFileType`存储多体动力学模块从输入文件中读取的所有参数包含dt、自由度定义、塔架信息等。
- `BladeInputData`:存储从叶片输入文件中读取的所有参数,包含叶片节点,扭角,模态信息等。
- `EDBladeMeshInputData`:存储叶片每个节点的弦长、扭角等信息。
- `MultibodyData`:存储多体动力学模块的所有信息。包括连续状态、参数、输入、输出等。
- `EdRtHndSide`:存储多体动力学求解过程中特征点位置向量,角速度、角加速度、线速度、线加速度等。
- `EdCoordSys`:存储多体动力学求解中所有坐标系的方向向量。
- `EDMiscVarType`存储杂项结构体包括EdCoordSys、EdRtHndSide、求解矩阵等。
- `EDOutputType`:输出类型,存储多体动力学求解后叶片、轮毂、塔架、浮式平台等部件的位移、速度、加速度等信息。
- `EDInputType`:输入类型,存储多体动力学求解前叶片、轮毂、塔架、浮式平台等部件的力和力矩等信息。
- `EDParameterType`参数类型存储多体动力学求解过程中需要用到的参数由MultibodyInputFileType处理得到。
- `EDActiveDOFs`:存储多体动力学求解过程中所有活动自由度。
- `EDOtherStateType`:存储多体动力学模块时间推进所用数据。
- `EDContinuousStateType`:连续状态,存储每个自由度对应的速度和加速度。
### 2.2.2. modmesh_types.rs
- `MeshType`:网格结构体,包含网格节点数量,网格点的位置向量,力、力矩,平动距离、速度、加速度,转动速度,加速度等信息。
### 2.2.3. multibody_init.rs
主要包含多体动力学初始化所用函数。
- `ed_init`:初始化主函数。
- `ed_read_input`:从输入文件中读取多体动力学模块参数。
- `ed_set_parameters`:将从输入文件读取的参数转换成多体系统求解所用参数类型。
- `init_dofparameters`:初始化多体系统自由度参数。
- `coeff`:计算叶片和塔架广义弯曲刚度、广义侧向刚度,线性质量密度,固有频率等系数
- `init_continuous_states`:根据设置的多体系统自由度,初始化对应自由度的初始运动。
- `init_misc_other_states`:初始化多体系统坐标系、求解矩阵等。
- `init_u`:根据初始运动,设置多体系统坐标系,计算特征点位置向量,创建叶片、轮毂、塔架、浮式平台等部件的输入量网格。
- `ed_al_loc_output`:创建叶片、轮毂、塔架、浮式平台等部件的输出量网格
### 2.2.4. multibody_solution.rs
主要包含多体动力学求解所用函数。
- `ed_calc_output`:多体系统计算输出主函数,得到当前时刻每个自由度的速度,加速度结果,更新叶片,塔架等部件运动,计算输出变量等。
- `ed_calc_const_state_deriv`:计算多体系统每个自由度对应速度,加速度。
- `set_coord_sy`:计算多体系统当前时刻坐标系方向。
- `calculate_position`:计算多体系统当前坐标系下特征点的位置向量。
- `calculate_angular_pos_vel_p_acc`:计算多体系统每个部件网格节点上的运动角度,偏角速度,偏角加速度。
- `calculate_linear_vel_p_acc`:计算多体系统每个部件网格节点上的偏线速度,偏线加速度。
- `calculate_force_moments`:计算多体系统每个部件网格节点上的力和力矩。
- `fill_aug_mat`:计算多体系统求解增广矩阵。
### 2.2.5. basic_tools.rs
包含多体动力学模块求解过程中用到的基本工具函数和网格生成函数。
- `cross_product`:求向量的叉积函数。
- `dot_product`:求向量的点积函数。
- `mesh_create`:网格创建函数
- `mesh_construct_element_1pt`:单节点网格构造函数。
- `mesh_construct_element_2pt`:双节点网格构造函数。
## 2.3. 主要子模块的调用流程图
### 2.3.1. 初始化模块
<div style="text-align: center;">
<img src="/InitFlowChart.png" alt="图片描述" width="300" height="auto"/>
<figcaption style="text-align: center;">图 1: 多体系统初始化流程图</figcaption>
</div>
在多体动力学模块初始化过程中首先ed_read_input函数读入输入文件进行MultibodyInputFileType类型的数据填充在ed_set_parameters函数由MultibodyInputFileType类向EDParameterTyp类赋值设置自由度并计算叶片和塔架的广义刚度固有频率等参数init_continuous_states函数根据自由度初始化对应的连续状态init_u函数这是初始化整机的坐标系创建各部件网格等。ed_al_loc_output函数创建各部件的输出量网格。
### 2.3.2. 求解模块
<div style="text-align: center;">
<img src="/SolveFlowChart.png" alt="图片描述" width="400" height="auto" />
<figcaption style="text-align: center;">图 2: 多体系统求解过程流程图</figcaption>
</div>
在多体动力学模块求解调用ed_calc_output函数在函数中调用ed_calc_const_state_deriv函数依次调用set_coord_sy、calculate_position、calculate_angular_pos_vel_p_acc、calculate_linear_vel_p_acc、calculate_force_moments、fill_aug_mat函数求解整机坐标系计算特征点位置向量计算各部件网格节点上的运动角度偏角速度偏角加速度偏线速度偏线加速度力和力矩计算增广矩阵得到当前时刻每个自由度的速度加速度结果。随后ed_calc_output函数中在更新叶片塔架等部件运动计算输出变量等。