This commit is contained in:
yize 2026-02-09 16:23:41 +08:00
parent f344174ddb
commit a392054e47
5 changed files with 253 additions and 4 deletions

View File

@ -4,4 +4,6 @@ git clone xxx.git
git remote -v 显示仓库地址 git remote -v 显示仓库地址
git remote set-url origin 新的仓库地址 git remote set-url origin 新的仓库地址

View File

@ -0,0 +1,246 @@
# 配置文件
- 配置文件新增MD和MD输入文件路径加在气动后 done
- 新增p_fast.comp_mooring done
# init HD MD初始化
对照FAST_subs.f90 774行附近
```fortran
IF ( p_FAST%CompHydro == Module_HD ) THEN
```
对照FAST_subs.f90 919行附近
```fortran
! initialize CompMooring modules
```
**补充代码** coupled_solver_sub.rs
```rust
pub fn fast_init_with_yaml(){}
    if p_fast.comp_hydro == 1 {
    to be done
    }
   
    if p_fast.comp_mooring == 1{
    to be done
    }
   
}
```
模型文件路径data\HEROWIND_models\NREL_5MW_OC4Semi\
配置文件Herowind_NREL5MW_ppl_hdmd_calc_config.yaml中气动控制HD MD绝对路径需按需修改
路径使用示例代码:
配置文件参数
```rust
calc_config.hydrofile.hydro_input_file
calc_config.mooringfile.mooring_input_file
```
代码
```rust
// 1 获取运行程序exe所在的路径
    let exe_path: PathBuf = env::current_exe()
        .expect("Unable to get current executable path");
    let exe_dir = exe_path
        .parent()
        .expect("Executable must have a parent directory");
       
    // 2 路径拼接
let dll_path = &calc_config.controller_input.dll_path;
let dll_full_path = exe_dir.join(dll_path);
let dll_full_path_str: &str = dll_full_path.to_str().expect("proxy_path is not valid UTF8"); 
     
```
## InitModuleMappings
mapping code
```fortran
if (p_FAST%CompElast == Module_ED) then
NumBl = SIZE(ED%y%BladeRootMotion,1)
PlatformMotion => ED%y%PlatformPtMesh
PlatformLoads => ED%Input(1)%PlatformPtMesh
SubstructureMotion2HD => ED%y%PlatformPtMesh
SubstructureMotion => ED%y%PlatformPtMesh
SubstructureLoads => ED%Input(1)%PlatformPtMesh
IF ( SrvD%Input(1)%PtfmMotionMesh%Committed ) THEN
CALL MeshMapCreate( PlatformMotion, SrvD%Input(1)%PtfmMotionMesh, MeshMapData%ED_P_2_SrvD_P_P, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':ED_P_2_SrvD_P_P' )
ENDIF
IF ( p_FAST%CompHydro == Module_HD ) THEN ! HydroDyn-{ElastoDyn or SubDyn}
! Regardless of the offshore configuration, ED platform motions will be mapped to the PRPMesh of HD
! we're just going to assume PlatformLoads and PlatformMotion are committed
CALL MeshMapCreate( PlatformMotion, HD%Input(1)%PRPMesh, MeshMapData%ED_P_2_HD_PRP_P, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':ED_P_2_HD_PRP_P' )
IF ( HD%y%WAMITMesh%Committed ) THEN ! meshes for floating
! HydroDyn WAMIT point mesh to/from ElastoDyn or SD point mesh
CALL MeshMapCreate( HD%y%WAMITMesh, SubstructureLoads, MeshMapData%HD_W_P_2_SubStructure, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':HD_W_P_2_SubStructure' )
CALL MeshMapCreate( SubstructureMotion2HD, HD%Input(1)%WAMITMesh, MeshMapData%SubStructure_2_HD_W_P, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':SubStructure_2_HD_W_P' )
END IF
IF ( HD%Input(1)%Morison%Mesh%Committed ) THEN
CALL MeshMapCreate( HD%y%Morison%Mesh, SubstructureLoads, MeshMapData%HD_M_P_2_SubStructure, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':HD_M_P_2_SubStructure' )
CALL MeshMapCreate( SubstructureMotion2HD, HD%Input(1)%Morison%Mesh, MeshMapData%SubStructure_2_HD_M_P, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':SubStructure_2_HD_M_P' )
END IF
IF ( p_FAST%CompMooring == Module_MD ) THEN
!-------------------------
! SubDyn/ElastoDyn <-> MoorDyn
!-------------------------
! MoorDyn point mesh to/from SubDyn or ElastoDyn point mesh
CALL MeshMapCreate( MD%y%CoupledLoads(1), SubstructureLoads, MeshMapData%Mooring_2_Structure, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':Mooring_2_Structure' )
CALL MeshMapCreate( SubstructureMotion, MD%Input(1)%CoupledKinematics(1), MeshMapData%Structure_2_Mooring, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':Structure_2_Mooring' )
END IF
IF ( p_FAST%SolveOption == Solve_SimplifiedOpt1 ) THEN
CALL AllocAry( MeshMapData%Jacobian_Opt1, SizeJac_ED_HD, SizeJac_ED_HD, 'Jacobian for Ptfm-HD coupling', ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName )
IF ( ALLOCATED( MeshMapData%Jacobian_Opt1 ) ) THEN
CALL AllocAry( MeshMapData%Jacobian_pivot, SIZE(MeshMapData%Jacobian_Opt1), 'Pivot array for Jacobian LU decomposition', ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName )
END IF
CALL ResetRemapFlags(p_FAST, ED, SED, BD, AD, ExtLd, HD, SD, ExtPtfm, SrvD, MAPp, FEAM, MD, Orca, IceF, IceD )
CALL MeshCopy ( ED%Input(1)%HubPtLoad, MeshMapData%u_ED_HubPtLoad, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':u_ED_HubPtLoad' )
CALL MeshCopy ( SubStructureLoads, MeshMapData%SubstructureLoads_Tmp, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':SubstructureLoads_Tmp' )
CALL MeshCopy ( SubStructureLoads, MeshMapData%SubstructureLoads_Tmp2, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':SubstructureLoads_Tmp2' )
CALL MeshCopy ( PlatformLoads, MeshMapData%PlatformLoads_Tmp, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':PlatformLoads_Tmp' )
CALL MeshCopy ( PlatformLoads, MeshMapData%PlatformLoads_Tmp2, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':PlatformLoads_Tmp2' )
IF ( p_FAST%CompHydro == Module_HD ) THEN
!TODO: GJH Is this needed, I created it as a place holder, 5/11/2020
!CALL MeshCopy ( HD%Input(1)%PRPMesh, MeshMapData%u_HD_PRP_Mesh, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
! CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':u_HD_PRP_Mesh' )
CALL MeshCopy ( HD%Input(1)%WAMITMesh, MeshMapData%u_HD_W_Mesh, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':u_HD_W_Mesh' )
CALL MeshCopy ( HD%Input(1)%Morison%Mesh, MeshMapData%u_HD_M_Mesh, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName//':u_HD_M_Mesh' )
END IF
END SUBROUTINE InitModuleMappings
```
### SUBROUTINE ResetRemapFlags
```fortran
IF ( p_FAST%CompHydro == Module_HD ) THEN
HD%Input(1)%PRPMesh%RemapFlag = .FALSE.
IF (HD%Input(1)%WAMITMesh%Committed) THEN
HD%Input(1)%WAMITMesh%RemapFlag = .FALSE.
HD%y%WAMITMesh%RemapFlag = .FALSE.
END IF
IF (HD%Input(1)%Morison%Mesh%Committed) THEN
HD%Input(1)%Morison%Mesh%RemapFlag = .FALSE.
HD%y%Morison%Mesh%RemapFlag = .FALSE.
END IF
END IF
IF ( p_FAST%CompMooring == Module_MD ) THEN
MD%Input(1)%CoupledKinematics(1)%RemapFlag = .FALSE.
MD%y%CoupledLoads(1)%RemapFlag = .FALSE.
```
# solution t0
```fortran
if ( P_FAST%CompSeaSt == Module_SeaSt .and. y_FAST%WriteThisStep) then
! note: SeaState has no inputs and only calculates WriteOutputs, so we don't need to call CalcOutput unless we are writing to the file
call SeaSt_CalcOutput( t_initial, SeaSt%u, SeaSt%p, SeaSt%x(1), SeaSt%xd(1), SeaSt%z(1), SeaSt%OtherSt(1), SeaSt%y, SeaSt%m, ErrStat2, ErrMsg2 )
call SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName )
end if
```
## CALL CalcOutputs_And_SolveForInputs()
### solver_option_2基本没变化
新增 transfer_ServD_to_SD_MD
传递u_MD%DeltaL    =  y_SrvD%CableDeltaL  和  u_MD%DeltaLdot =  y_SrvD%CableDeltaLdot
新增CALL Transfer_Structure_to_Opt1Inputs
### Transfer_Structure_to_Opt1Inputs
```fortran
PlatformMotion => y_ED%PlatformPtMesh
IF (p_FAST%CompSub == Module_SD) THEN
SubstructureMotion => SD%y%y3Mesh
SubstructureMotion2HD => SD%y%y2Mesh
ELSE
SubstructureMotion => PlatformMotion
SubstructureMotion2HD => PlatformMotion
ENDIF
IF ( p_FAST%CompHydro == Module_HD ) THEN
CALL Transfer_Point_to_Point( PlatformMotion, u_HD%PRPMesh, MeshMapData%ED_P_2_HD_PRP_P, ErrStat2, ErrMsg2 )
CALL SetErrStat(ErrStat2,ErrMsg2,ErrStat, ErrMsg, RoutineName//' (u_HD%PRPMesh)' )
! if we don't have a call to SD_CalcOutput, we need to check that p_FAST%CompSub /= Module_SD before this:
! IF (p_FAST%CompSub /= Module_SD) THEN
CALL Transfer_SubStructureMotion_to_HD( SubstructureMotion2HD, u_HD%WAMITMesh, u_HD%Morison%Mesh, MeshMapData, ErrStat2, ErrMsg2 )
CALL SetErrStat(ErrStat2,ErrMsg2, ErrStat, ErrMsg, RoutineName)
!END IF ! don't transfer for SubDyn unless we have called SD_CalcOutput
END IF
ELSEIF ( p_FAST%CompMooring == Module_MD ) THEN
! motions:
CALL Transfer_Point_to_Point( SubstructureMotion, u_MD%CoupledKinematics(1), MeshMapData%Structure_2_Mooring, ErrStat2, ErrMsg2 )
CALL SetErrStat(ErrStat2,ErrMsg2,ErrStat, ErrMsg,RoutineName//'u_MD%CoupledKinematics' )
```
### solveoption1
CALL MD_CalcOutput

View File

@ -3,12 +3,13 @@
{"id":"8359617e1edc48ba","type":"text","text":"状态指标:\n推进OKR的时候也要关注这些事情它们是完成OKR的保障。\n\n\n效率状态 green","x":-76,"y":-306,"width":456,"height":347}, {"id":"8359617e1edc48ba","type":"text","text":"状态指标:\n推进OKR的时候也要关注这些事情它们是完成OKR的保障。\n\n\n效率状态 green","x":-76,"y":-306,"width":456,"height":347},
{"id":"a4eaccbbfadaaf17","type":"text","text":"# 目标:\n多体模块完善 线性化模块开发\n### 每周盘点一下它们\n\n\n关键结果机组整机线性化模块开发 6/10\n\n关键结果叶片、塔架station结果输出功能开发 0/10\n关键结果整机瞬态仿真初始化功能改进 0/10\n关键结果dlc2.x剩余故障工况建模及开发0/10\n关键结果针对软件认证所需输出变量完善输出功能0/10\n","x":-76,"y":-803,"width":456,"height":457}, {"id":"a4eaccbbfadaaf17","type":"text","text":"# 目标:\n多体模块完善 线性化模块开发\n### 每周盘点一下它们\n\n\n关键结果机组整机线性化模块开发 6/10\n\n关键结果叶片、塔架station结果输出功能开发 0/10\n关键结果整机瞬态仿真初始化功能改进 0/10\n关键结果dlc2.x剩余故障工况建模及开发0/10\n关键结果针对软件认证所需输出变量完善输出功能0/10\n","x":-76,"y":-803,"width":456,"height":457},
{"id":"d2c5e076ba6cf7d7","type":"text","text":"# 推进计划\n未来四周计划推进的重要事情\n\n文献调研启动\n\n建模重新推导\n\n\n","x":-600,"y":-306,"width":456,"height":347}, {"id":"d2c5e076ba6cf7d7","type":"text","text":"# 推进计划\n未来四周计划推进的重要事情\n\n文献调研启动\n\n建模重新推导\n\n\n","x":-600,"y":-306,"width":456,"height":347},
{"id":"82708a439812fdc7","type":"text","text":"# 1月已完成\n\n\n\nP1 检查有没有塔筒上所有部件合并计算质量、质心、惯性参数 -- done仅有合并质量\n\nP1 明阳机型验证 \n- 叶片发散 叶片往前位移 原因查找 done -- 刘\n\nP1 明阳机型验证 \n\n- 商业机型模型验证 气动建模有问题\n- 中性轴问题 ED当前不支持预弯叶片计算\n\nP1 机型测试\n- 模型对齐讨论 done\n- 1.4aaa 工况设置问题\n- 明阳、NREL 5MW跑一轮计算\n\nP1 给方方姐回电话 done\n- 商业机型测试有结果后再见面\n- 建议双向了解情况\n\n- 过程+结果,年前 建立信任 现在是副总师了,站位上跟实验室对齐,计划增加王老师从技术角度汇报的渠道\n\nP1 服务器 ing\n- 机架 - 浪潮确定\n- 电源 - 电工给方案,让电工给接线 done\n- 超聚变 - 装系统done\n\nP1 检查误差较大的载荷首先确保与Bladed同坐标系输出\n- 载荷传递方式,叶根、轮毂部件力和力矩计算方法研究\n\n\n","x":-220,"y":134,"width":440,"height":560}, {"id":"82708a439812fdc7","type":"text","text":"# 1月已完成\n\n\n\nP1 检查有没有塔筒上所有部件合并计算质量、质心、惯性参数 -- done仅有合并质量\n\nP1 明阳机型验证 \n- 叶片发散 叶片往前位移 原因查找 done -- 刘\n\nP1 明阳机型验证 \n\n- 商业机型模型验证 气动建模有问题\n- 中性轴问题 ED当前不支持预弯叶片计算\n\nP1 机型测试\n- 模型对齐讨论 done\n- 1.4aaa 工况设置问题\n- 明阳、NREL 5MW跑一轮计算\n\nP1 给方方姐回电话 done\n- 商业机型测试有结果后再见面\n- 建议双向了解情况\n\n- 过程+结果,年前 建立信任 现在是副总师了,站位上跟实验室对齐,计划增加王老师从技术角度汇报的渠道\n\nP1 服务器 ing\n- 机架 - 浪潮确定\n- 电源 - 电工给方案,让电工给接线 done\n- 超聚变 - 装系统done\n- 超聚变入网 done\n- 四台服务器组局域网 done\n\nP1 检查误差较大的载荷首先确保与Bladed同坐标系输出\n- 载荷传递方式,叶根、轮毂部件力和力矩计算方法研究\n\nP1 水动联调\n- 组建5mw 多体-水动-系泊耦合openfast算例 done\n- 编写多体-水动-系泊网格点匹配函数 done\n\n","x":-220,"y":134,"width":440,"height":560},
{"id":"505acb3e6b119076","type":"text","text":"# 12月已完成\n\nP1 明阳机型验证\n\n- 商业机型建模 done\n- 正常发电工况对故障工况支持 故障建模 done\n\t- 超速n4 普通超速 多体设fault结构体 \n\t- 卡桨、 控制设fault结构体\n\n- 故障工况检查 done\n- 批量计算更新配置文件,风文件,程序版本,再计算 done\n\nP1 稳态工况init_with_yaml检查 done\n\nP1 前端\n- 所有simulation功能测试及对接 done\n\nP1 演示ppt补充内容 再补充\n- 补充steady operational loads / steady parked loads 缺结果 done\n- 6个算例的跑通 找一个与bladed对比 缺结果 done \n- 内部控制器 pass\n- batch 并行计算 单个工况是否快 多工况并行 暂时不做\n\nP1 前端\n- steady输出的名字改掉 done\n- 批量计算 改成并行计算 功能界面\n- 瞬态计算更新控制器 测试 done\n- 简单内控\n- 比较Bladed与正常发电工况速度总时间短一点 multicase done\n- 是否需要增加相对路径问题 done\n\nP1 dlc 71 done\n\nP1 输出量更新到Bladed相同命名 done\n\nP1 专利 done\n- 做出solidworks模型写专利\n\n","x":-700,"y":134,"width":440,"height":560}, {"id":"505acb3e6b119076","type":"text","text":"# 12月已完成\n\nP1 明阳机型验证\n\n- 商业机型建模 done\n- 正常发电工况对故障工况支持 故障建模 done\n\t- 超速n4 普通超速 多体设fault结构体 \n\t- 卡桨、 控制设fault结构体\n\n- 故障工况检查 done\n- 批量计算更新配置文件,风文件,程序版本,再计算 done\n\nP1 稳态工况init_with_yaml检查 done\n\nP1 前端\n- 所有simulation功能测试及对接 done\n\nP1 演示ppt补充内容 再补充\n- 补充steady operational loads / steady parked loads 缺结果 done\n- 6个算例的跑通 找一个与bladed对比 缺结果 done \n- 内部控制器 pass\n- batch 并行计算 单个工况是否快 多工况并行 暂时不做\n\nP1 前端\n- steady输出的名字改掉 done\n- 批量计算 改成并行计算 功能界面\n- 瞬态计算更新控制器 测试 done\n- 简单内控\n- 比较Bladed与正常发电工况速度总时间短一点 multicase done\n- 是否需要增加相对路径问题 done\n\nP1 dlc 71 done\n\nP1 输出量更新到Bladed相同命名 done\n\nP1 专利 done\n- 做出solidworks模型写专利\n\n","x":-700,"y":134,"width":440,"height":560},
{"id":"30cb7486dc4e224c","type":"text","text":"# 2月已完成\n\n\n","x":260,"y":134,"width":440,"height":560}, {"id":"30cb7486dc4e224c","type":"text","text":"# 2月已完成\n\n\n","x":260,"y":134,"width":440,"height":560},
{"id":"c18d25521d773705","type":"text","text":"# 计划\n这周要做的3~5件重要的事情这些事情能有效推进实现OKR。\n\nP1 必须做。P2 应该做\n\n\nP2 柔性部件 叶片、塔架变形算法 主线\n- 变形体动力学 简略看看ing\n- 柔性梁弯曲变形振动学习,主线 \n\t- 广义质量 刚度矩阵及含义\n\t\n- 梳理bladed动力学框架\n\t- 子结构文献阅读\n\t- 叶片模型建模 done\n- 共旋方法学习\n- DTU 变形量计算方法学习\n\n\nP1 线性化方法编写 ing\n\n- 开始编写扰动代码\n- 形成系统矩阵-输出矩阵\n\n\n\n\nP1 检查误差较大的载荷首先确保与Bladed同坐标系输出\n- foundation fz - PFrcT0Trb\n- Foundation Fy\n- Foundation Mz\n- Nacelle fore-aft displacement\n- Blade root 1 Mz\n- Blade root 1 Fy\n\n- 机舱、塔顶、塔底力和力矩\n- 叶根、轮毂、机舱、塔底Herowind、Bladed坐标系对比\n\n\n\nP1 叶素、塔架station输出结果\n\nP1 服务器 ing\n- 超聚变入网\n\n\nP2 初始化方法,找到稳态结果开始\n\nP1 报告更新到0.6版本 ing\n\nP2 bladed对比--稳态运行载荷,产出报告\n- 气动参与模块对比\n- 模态对比 两种描述方法不同bladed方向更多x y z deflection, x y z rotation不好对比\n- 气动对比 aerodynamic info 轴向切向诱导因子,根部,尖部差距较大\n\nP2 yaw 自由度再bug确认 已知原理了\n","x":-597,"y":-803,"width":453,"height":457}, {"id":"c18d25521d773705","type":"text","text":"# 计划\n这周要做的3~5件重要的事情这些事情能有效推进实现OKR。\n\nP1 必须做。P2 应该做\n\n\nP2 柔性部件 叶片、塔架变形算法 主线\n- 变形体动力学 简略看看ing\n- 柔性梁弯曲变形振动学习,主线 \n\t- 广义质量 刚度矩阵及含义\n\t\n- 梳理bladed动力学框架\n\t- 子结构文献阅读\n\t- 叶片模型建模 done\n- 共旋方法学习\n- DTU 变形量计算方法学习\n\n\nP1 线性化方法编写 ing\n\n- 开始编写扰动代码\n- 形成系统矩阵-输出矩阵\n\n\n\n\nP1 检查误差较大的载荷首先确保与Bladed同坐标系输出\n- foundation fz - PFrcT0Trb\n- Foundation Fy\n- Foundation Mz\n- Nacelle fore-aft displacement\n- Blade root 1 Mz\n- Blade root 1 Fy\n\n- 机舱、塔顶、塔底力和力矩\n- 叶根、轮毂、机舱、塔底Herowind、Bladed坐标系对比\n\n\n\nP1 叶素、塔架station输出结果\n\n\n\nP1 水动联调\n\n- 控制 网格节点先忽略\n- 梳理多体-水动-系泊耦合方法框架 ing\n- 编写多体-水动-系泊耦合计算函数\n- 稳态求解函数签名更改\n\nP1 叶片高阶模态如何加\n\nP2 初始化方法,找到稳态结果开始\n\nP1 报告更新到0.6版本 ing\n\n\n\nP2 yaw 自由度再bug确认 已知原理了\n","x":-597,"y":-803,"width":453,"height":457},
{"id":"859e6853b7f1b92b","type":"text","text":"年底考核:\n专利\n线性化模块","x":1200,"y":-803,"width":320,"height":110}, {"id":"859e6853b7f1b92b","type":"text","text":"年底考核:\n专利\n线性化模块","x":1200,"y":-803,"width":320,"height":110},
{"id":"a850b2f46fa52de7","type":"text","text":"# 25年开发工作\n\n- 对标bladed中steady calculation开发steady operational loadssteady parked loads任务流程序\n- 设计并开发 YAML 配置文件模块,实现了对 YAML 格式模型文件与配置文件的读取、解析\n- 开发控制模块并与其他模块耦合实现对32位、64位dll文件支持完成变桨与变流器执行器的传递函数模型算法开发\n- 对标bladed中simulations集成控制模块开发正常发电工况、启机、正常停机、紧急停机、空转、停机功能\n- 开发批量计算模块\n\n","x":800,"y":134,"width":440,"height":560} {"id":"a850b2f46fa52de7","type":"text","text":"# 25年开发工作\n\n- 对标bladed中steady calculation开发steady operational loadssteady parked loads任务流程序\n- 设计并开发 YAML 配置文件模块,实现了对 YAML 格式模型文件与配置文件的读取、解析\n- 开发控制模块并与其他模块耦合实现对32位、64位dll文件支持完成变桨与变流器执行器的传递函数模型算法开发\n- 对标bladed中simulations集成控制模块开发正常发电工况、启机、正常停机、紧急停机、空转、停机功能\n- 开发批量计算模块\n\n","x":800,"y":134,"width":440,"height":560},
{"id":"0f0b9a318a694bb3","x":-1129,"y":-803,"width":449,"height":457,"type":"text","text":"# 封存\n\nP2 bladed对比--稳态运行载荷,产出报告\n- 气动参与模块对比\n- 模态对比 两种描述方法不同bladed方向更多x y z deflection, x y z rotation不好对比\n- 气动对比 aerodynamic info 轴向切向诱导因子,根部,尖部差距较大"}
], ],
"edges":[] "edges":[]
} }