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