59 lines
2.4 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.

# yaw
pfrc_oncrt: Partial force at the yaw bearing (point O) due to the nacelle, generator, and rotor [-]
pmom_bnc_rt: 在基板 (point O) 处由机舱、发电机和转子产生的偏力矩 [-]
```rust
//  Partial force at the yaw bearing (point O) due to the nacelle, generator, and rotor [-]
    rt_hs.pfrc_oncrt = rt_hs.pfrc_vgn_rt.clone() + rt_hs.pfrc_wtail.clone(); //Initialize these partial forces and moments using
    // Partial moment at the base plate (body B) / yaw bearing (point O) due the nacelle, generator, and rotor [-]
    rt_hs.pmom_bnc_rt = rt_hs.pmom_ngn_rt.clone() + rt_hs.pmom_ntail.clone(); // the rotor, rotor-furl, generator, and tail effects
    for i in 0..p.dofs.n_actv_dof as usize{
        tmp_vec = cross_product(&rt_hs.r_ov, &rt_hs.pfrc_vgn_rt.slice(s![.., p.dofs.srt_ps[i] - 1]).to_owned()); // The portion of PMomBNcRt associated with the PFrcVGnRt
        let value = rt_hs.pmom_bnc_rt.slice(s![.., p.dofs.srt_ps[i]-1]).to_owned() + tmp_vec;
        rt_hs.pmom_bnc_rt.slice_mut(s![.., p.dofs.srt_ps[i]-1]).assign(&value);
    }
    for i in 0.. p.dofs.npie as usize{
        tmp_vec = cross_product(&rt_hs.r_ow, &rt_hs.pfrc_wtail.slice(s![.., p.dofs.pie[i] - 1]).to_owned()); // The portion of PMomBNcRt associated with the PFrcWTail
        let value = rt_hs.pmom_bnc_rt.slice(s![.., p.dofs.pie[i]-1]).to_owned() + tmp_vec;
        rt_hs.pmom_bnc_rt.slice_mut(s![.., p.dofs.pie[i]-1]).assign(&value);
    }
    for i in 0.. p.dofs.npue as usize{
        tmp_vec1 = -p.nac_mass * rt_hs.plin_vel_eu.slice(s![p.dofs.pue[i] -1, 0, ..]).to_owned(); //The portion of PFrcONcRt associated with the NacMass
        tmp_vec2 = cross_product(&rt_hs.r_ou, &tmp_vec1); // The portion of PMomBNcRt associated with the NacMass
        let value = rt_hs.pfrc_oncrt.slice(s![.., p.dofs.pue[i] -1]).to_owned() + tmp_vec1;
        rt_hs.pfrc_oncrt.slice_mut(s![.., p.dofs.pue[i] -1]).assign(&value);
        let value = rt_hs.pmom_bnc_rt.slice(s![.., p.dofs.pue[i] -1]).to_owned() + tmp_vec2 -
                                                                p.nacd2_iner * coord_sys.d2.clone() * dot_product(&coord_sys.d2.clone(), &rt_hs.p_ang_vel_en.slice(s![p.dofs.pue[i] -1, 0, ..]).to_owned());
        rt_hs.pmom_bnc_rt.slice_mut(s![.., p.dofs.pue[i] -1]).assign(&value);
    }
```