89 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

结构体层面
```
use std::io::{BufWriter, Write};
use std::sync::{Arc, Mutex};
use std::fs::File;
struct sometype{
pub writer: Arc<Mutex<BufWriter<File>>>, // 文件句柄包装
}
impl sometype{
pub fn new() -> Self {
let file = File::create("MultibodyOutput.txt").expect("Unable to create file");
        let writer = Arc::new(Mutex::new(BufWriter::new(file)));
Self {
writer,
}
}
}
pub fn write_header(&self) {
        // 按照这样的方式写头文件Time (s), Wind speed (m/s), Power (W), Blade root Mx (N*m),
        // Blade root My (N*m), Blade root Mz (N*m), Blade root Fx (N), Blade root Fy (N), Blade root Fz (N),
        // let header = "Time (s), Blade 1 flapwise tip deflection (m), Blade 1 edgewise tip deflection (m), Blade 1 flapwise tip acceleration (m/s^2), Blade 1 edgewise tip acceleration (m/s^2)";
        // "time", "TipDxc1", "TipDyc1", "TipDzc1", "TipDxb1", "TipDyb1", "TipALxb1", "TipALyb1", "TipALzb1", "TwrTpTDxi", "TwrTpTDyi", "TwrTpTDzi", "YawBrTVxp", "YawBrTVyp", "YawBrTVzp", "YawBrTAxp", "YawBrTAyp", "YawBrTAzp"写文件头
        let header_vec = vec![
        "time", "TipDxc1", "TipDyc1", "TipDzc1", "TipDxb1", "TipDyb1",
        "TipALxb1", "TipALyb1", "TipALzb1", "TwrTpTDxi", "TwrTpTDyi",
        "TwrTpTDzi", "YawBrTVxp", "YawBrTVyp", "YawBrTVzp", "YawBrTAxp",
        "YawBrTAyp", "YawBrTAzp"
        ];
        // 将字符串数组连接成一个单独的字符串,每个元素之间用逗号分隔
        let header = header_vec.join(", ");
        let mut writer = self.writer.lock().expect("Failed to acquire lock");
        writeln!(writer, "{}", header).expect("Unable to write header");
    }
    /// 写入 Vec<f64> 数据,每个值之间用空格分隔
    pub fn write_data(&self, data: &Vec<f64>) {
        let mut writer = self.writer.lock().expect("Failed to acquire lock");
        // 将 Vec<f64> 数据转换为以空格分隔的字符串
        let data_str = data.iter()
            .map(|v| v.to_string())
            .collect::<Vec<String>>()
            .join(" ");
        // 写入数据行
        writeln!(writer, "{}", data_str).expect("Unable to write data");
    }
```
调用层面
```
m = sometype.new()
somevec = Vec<f64>
m.write_data(&somevec);
```