2025-01-15 13:58:18 +08:00
|
|
|
|
|
|
|
|
|
# 问题1 结构体定义是否需要加大量option
|
|
|
|
|
|
|
|
|
|
水动 576行
|
|
|
|
|
![[Pasted image 20250110135219.png]]
|
|
|
|
|
|
|
|
|
|
多体 1600行
|
|
|
|
|
![[Pasted image 20250110135444.png]]
|
2025-01-15 13:59:43 +08:00
|
|
|
|
<<<<<<< HEAD
|
2025-01-15 13:58:18 +08:00
|
|
|
|
``` rust
|
2025-01-15 13:59:43 +08:00
|
|
|
|
=======
|
2025-01-10 14:13:23 +08:00
|
|
|
|
```
|
2025-01-15 13:59:43 +08:00
|
|
|
|
>>>>>>> 43e7b08163ff98d031f47a55e6d8abfb871edb14
|
2025-01-15 13:58:18 +08:00
|
|
|
|
pub struct MorisonMOutput {
|
|
|
|
|
|
|
|
|
|
pub memberid: i32, // Member ID for requested output [-]
|
|
|
|
|
|
|
|
|
|
pub noutloc: i32, // The number of requested output locations [-]
|
|
|
|
|
|
|
|
|
|
pub nodelocs: Option<Vec<f64>>, // Normalized locations along user-specified member for the outputs [-]
|
|
|
|
|
|
|
|
|
|
pub memberidindx: i32, // Index for member in the master list [-]
|
|
|
|
|
|
|
|
|
|
pub meshindx1: Option<Vec<i32>>, // Index of node in Mesh for the start of the member element [-]
|
|
|
|
|
|
|
|
|
|
pub meshindx2: Option<Vec<i32>>, // Index of node in Mesh for the end of the member element [-]
|
|
|
|
|
|
|
|
|
|
pub memberindx1: Option<Vec<i32>>, // Index of Member nodes for the start of the member element [-]
|
|
|
|
|
|
|
|
|
|
pub memberindx2: Option<Vec<i32>>, // Index of Member nodes for the end of the member element [-]
|
|
|
|
|
|
|
|
|
|
pub s: Option<Vec<f64>>, // Linear interpolation factor between node1 and node2 for the output location [-]
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
# 问题2 array数组定义
|
|
|
|
|
|
|
|
|
|
|
2025-01-15 13:59:43 +08:00
|
|
|
|
<<<<<<< HEAD
|
2025-01-15 13:58:18 +08:00
|
|
|
|
```rust
|
2025-01-15 13:59:43 +08:00
|
|
|
|
=======
|
2025-01-10 14:13:23 +08:00
|
|
|
|
```
|
2025-01-15 13:59:43 +08:00
|
|
|
|
>>>>>>> 43e7b08163ff98d031f47a55e6d8abfb871edb14
|
2025-01-15 13:58:18 +08:00
|
|
|
|
pub struct AD_Init{
|
|
|
|
|
pub Ct_final: ArrayBase<OwnedRepr<f64>, Dim<[usize; 3]>>,
|
|
|
|
|
|
|
|
|
|
pub Cq_final: ArrayBase<OwnedRepr<f64>, Dim<[usize; 3]>>,
|
|
|
|
|
|
|
|
|
|
pub CP_final: ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>,
|
|
|
|
|
|
|
|
|
|
pub position_g: Vec<[ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>; 3]>,
|
|
|
|
|
|
|
|
|
|
pub trans_disp: Vec<[ArrayBase<OwnedRepr<f64>, Dim<[usize; 1]>>; 3]>,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
impl AD_Init {
|
|
|
|
|
|
|
|
|
|
pub fn new() -> Self {
|
|
|
|
|
Ct_final: ArrayBase::zeros((0, 0, 0)),
|
|
|
|
|
|
|
|
|
|
Cq_final: ArrayBase::zeros((0, 0, 0)),
|
|
|
|
|
|
|
|
|
|
CP_final: ArrayBase::zeros(0),
|
|
|
|
|
|
|
|
|
|
position_g: Vec::new(),
|
|
|
|
|
|
|
|
|
|
trans_disp: Vec::new(),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
2025-01-15 13:59:43 +08:00
|
|
|
|
<<<<<<< HEAD
|
2025-01-15 13:58:18 +08:00
|
|
|
|
```rust
|
2025-01-15 13:59:43 +08:00
|
|
|
|
=======
|
2025-01-10 14:13:23 +08:00
|
|
|
|
```
|
2025-01-15 13:59:43 +08:00
|
|
|
|
>>>>>>> 43e7b08163ff98d031f47a55e6d8abfb871edb14
|
2025-01-15 13:58:18 +08:00
|
|
|
|
pub struct EDParameterType{
|
|
|
|
|
pub r_nodes: Array1<f64>, // 分析节点到轮毂的半径
|
|
|
|
|
pub pitch_axis: Array2<f64>, // 分析节点的变桨轴
|
|
|
|
|
pub twr_fasf: Array3<f64>, // 塔前后形状函数
|
|
|
|
|
pub twr_sssf: Array3<f64>, // 塔侧向形状函数
|
|
|
|
|
(ArrayBase<OwnedRepr<f64>, Dim<[usize; 3]>>)
|
|
|
|
|
}
|
|
|
|
|
impl EDParameterType {
|
|
|
|
|
|
|
|
|
|
pub fn new() -> EDParameterType {
|
|
|
|
|
|
|
|
|
|
EDParameterType {
|
|
|
|
|
// 初始化一个任意维度
|
|
|
|
|
r_nodes: Array1::zeros(1),
|
|
|
|
|
pitch_axis: Array2::zeros((1, 1)),
|
|
|
|
|
twr_fasf: Array3::zeros((3, 3, 3)),
|
|
|
|
|
twr_sssf: Array3::zeros((3, 3, 3)),
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
2025-01-15 13:59:43 +08:00
|
|
|
|
<<<<<<< HEAD
|
2025-01-15 13:58:18 +08:00
|
|
|
|
```rust
|
2025-01-15 13:59:43 +08:00
|
|
|
|
=======
|
2025-01-10 14:13:23 +08:00
|
|
|
|
```
|
2025-01-15 13:59:43 +08:00
|
|
|
|
>>>>>>> 43e7b08163ff98d031f47a55e6d8abfb871edb14
|
2025-01-15 13:58:18 +08:00
|
|
|
|
// 在代码中根据需要创建维度
|
|
|
|
|
p.r_nodes = Array1::zeros(p.bld_nodes as usize);
|
|
|
|
|
p.pitch_axis = Array2::zeros((p.num_bl as usize, p.bld_nodes as usize));
|
|
|
|
|
p.twr_fasf = Array3::zeros((2, p.t_top_node as usize+ 1, 3));
|
|
|
|
|
```
|