From 607aca1d338fafe9030930f211343f599f5f4438 Mon Sep 17 00:00:00 2001 From: yz Date: Fri, 23 May 2025 16:19:42 +0800 Subject: [PATCH] 1 --- ... uae wind turbine for refinement of fast_ad.md | 53 +++++++----------- 多体+耦合求解器/V0.5版本结果对比/对比步骤.md | 20 +++++++ 多体+耦合求解器/rust 经验.md | 5 +- 工作OKRs/25.2-5 OKR.canvas | 6 +- 工作总结/周报/周报78-郭翼泽.docx | Bin 0 -> 20916 bytes 5 files changed, 46 insertions(+), 38 deletions(-) create mode 100644 工作总结/周报/周报78-郭翼泽.docx diff --git a/力学书籍/OpenFast/modeling of the uae wind turbine for refinement of fast_ad/auto/modeling of the uae wind turbine for refinement of fast_ad.md b/力学书籍/OpenFast/modeling of the uae wind turbine for refinement of fast_ad/auto/modeling of the uae wind turbine for refinement of fast_ad.md index df1915c..a18665b 100644 --- a/力学书籍/OpenFast/modeling of the uae wind turbine for refinement of fast_ad/auto/modeling of the uae wind turbine for refinement of fast_ad.md +++ b/力学书籍/OpenFast/modeling of the uae wind turbine for refinement of fast_ad/auto/modeling of the uae wind turbine for refinement of fast_ad.md @@ -1091,63 +1091,42 @@ u(z,t)\!=\sum_{b=p}^{N+p-I}\!\varphi_{b}(z)c_{b}(t) $$ where $c_{b}(t)$ is the generalized coordinate associated with the function $\varphi_{b}(z)$ . The $\varphi_{b}(z)$ ’s are known as shape functions and the parameter $p$ is chosen for convenience. +其中,$c_{b}(t)$ 是与函数 $\varphi_{b}(z)$ 相关的广义坐标。$\varphi_{b}(z)$ 被称为形函数,参数 $p$ 为了方便起见而选择。 Since the shape functions are not unique to each normal mode, meaning that each normal mode is related to all shape functions, there is a relationship such that the normal mode shapes form a linear combination of the shape functions: + +由于形函数并非每个正模特有的,意味着每个正模都与所有形函数相关,因此存在一种关系,使得正模形函数构成形函数的线性组合: $$ \phi_{a}(z)\!=\!\sum_{b=p}^{N+p-l}\!C_{a,b}\varphi_{b}(z)\ \ \left(a={1,2,...,N}\right) $$ where $C_{a,b}$ is the constant proportionality coefficient associated with the $b^{\mathrm{th}}$ shape function and the $a^{\mathrm{th}}$ normal mode. This is known as the Rayleigh-Ritz method. +其中,$C_{a,b}$ 是与第 $b$ 个形函数和第 $a$ 个正模相关的比例常数。 这被称为瑞利-里兹法。 In FAST_AD, each normal mode shape is assumed to be expressible as a polynomial; thus, the $b^{\mathrm{th}}$ shape function is defined as: +在 FAST_AD 中,假设每个固有振型都可以用多项式表达;因此,第 $b^{\mathrm{th}}$ 形变函数定义如下: $$ \varphi_{b}(z)\!=\!\left(\frac{z}{Z}\right)^{b} $$ Since the slope of a cantilevered beam must be zero at the fixed end, $p$ must be no smaller than two if the shape functions are to accurately represent the normal mode shapes. Thus, the FAST_AD design code requires that $p$ equal two. FAST_AD allows $N$ to be as high as five. In FAST_AD, the constant proportionality coefficients associated with each shape function and normal mode are parameters requested in the input file. A preprocessor code entitled Modes enables users of FAST_AD to obtain these parameters. The theory employed by Modes is also developed here. -FAST_AD 的结构模型将叶片和塔架视为具有连续质量和刚度分布的灵活悬臂梁。理论上,这些体系拥有无穷多个自由度(DOFs),因为需要无数坐标来指定体系中每一点的位置。实际上,这些体系被建模为主要正常振动模式已知形状的线性和。此技术称为正常模态求和法,将自由度数从无穷减少到 $N_{\ast}$,即考虑为主导的正常模态数量。使用该方法,灵活梁在任何时间 $t$ 和位置 $z$ 的侧向挠度(垂直于未变形梁) $u(z,t)$ 可以表示为各个正常模态形状 $\phi_{a}(z)$ 与其相关的广义坐标 $q_{a}(t)$ 乘积之和: +由于悬臂梁的slope必须在其固定端为零,如果希望形状函数能够准确地表示模态形状,则 $p$ 必须不小于二。因此,FAST_AD 设计代码要求 $p$ 等于二。FAST_AD 允许 $N$ 高达五。在 FAST_AD 中,与每个形状函数和模态相关的比例常数是输入文件中要求的参数。名为 Modes 的预处理器代码允许 FAST_AD 的用户获得这些参数。Modes 所采用的理论也在此进行阐述。 $$ u(z,t)\!=\!\sum_{a=l}^{N}\phi_{a}\!\left(z\right)\!q_{a}\!\left(t\right) $$ -固有模态形状 $\phi_{a}(z)$ 对于模式 $a$,仅是沿梁的距离 $z$ 的函数(其中 $z=0$ 在固定端,$z=Z$ 在自由端),而与固有模态 $a$ 相关的广义坐标 $q_{a}(t)$ 仅是时间 $t$ 的函数。每个正常模态都有一个相关的固有频率 $\omega_{a}$ 和相位 $\psi_{a}$。通常,**与正常模态相关联的广义坐标被允许为悬臂梁自由端的挠度**;**因此,每个正常模态形状是无量纲的,并且在自由端归一化**。 - -当各个固有模态形状已知时,需要 $N$ 个参数来指定任何时间点上灵活体系的挠度。因此,替代地,灵活体系的侧向挠度可以用 $N$ 个其他函数 $\varphi_{b}(z)$ 表示,这些函数不是每个正常模态独特的: - -$$ -u(z,t)\!=\sum_{b=p}^{N+p-I}\!\varphi_{b}(z)c_{b}(t) -$$ - -其中 $c_{b}(t)$ 是与函数 $\varphi_{b}(z)$ 相关联的广义坐标。$\varphi_{b}(z)$ 称为形状函数,参数 $p$ 由便利性决定。 - -由于形状函数不是每个正常模态独特的,即每个正常模态与所有形状函数相关联,因此存在关系使得正常模态形状可以表示为形状函数的线性组合: - -$$ -\phi_{a}(z)\!=\!\sum_{b=p}^{N+p-l}\!C_{a,b}\varphi_{b}(z)\ \ \left(a={1,2,...,N}\right) -$$ - -其中 $C_{a,b}$ 是与第 $b$ 形状函数和第 $a$ 固有模态相关联的比例系数。这称为雷利-里兹方法。 - -在 FAST_AD 中,假设每个正常模态形状可以表示为多项式;因此,第 $b$ 形状函数定义为: - -$$ -\varphi_{b}(z)\!=\!\left(\frac{z}{Z}\right)^{b} -$$ - -由于悬臂梁在固定端的斜率必须为零,如果形状函数要准确表示正常模态形状,则 $p$ 不得小于二。因此,FAST_AD 设计代码要求 $p$ 等于二。FAST_AD 允许 $N$ 为高达五。在 FAST_AD 中,与每个形状函数和正常模态相关联的比例系数是输入文件中请求的参数。一个名为 Modes 的预处理代码使 FAST_AD 用户能够获得这些参数。Modes 所采用的理论也在此开发。 - - Using Lagrange’s equations for a conservative, scleronomic system13, the equations of motion for an $N\!\cdot$ -DOF system are equivalent to: +使用拉格朗日方程,对于一个保守、刚体系统,N-DOF系统运动方程等同于: $$ -\sum_{j=p}^{N+p-I}m_{i j}\ddot{c}_{j}(t)+\sum_{j=p}^{N+p-I}k_{i j}c_{j}\big(t\big)=O\quad\big(i=p,p+I,...,N+p-I\big) +\sum_{j=p}^{N+p-1}m_{i j}\ddot{c}_{j}(t)+\sum_{j=p}^{N+p-1}k_{i j}c_{j}\big(t\big)=O\quad\big(i=p,p+1,...,N+p-1\big) $$ where the generalized mass and stiffness, $m_{i j}$ and $k_{i j}$ respectively, are defined in terms of the kinetic energy, $T,$ and potential energy, $V$ : - +其中,广义质量和刚度,分别表示为 $m_{i j}$ 和 $k_{i j}$,由动能 $T$ 和势能 $V$ 定义: $$ T=\frac{I}{2}\sum_{i=p}^{N+p-l}\sum_{j=p}^{N+p-l}m_{i j}\dot{c}_{i}(t)\dot{c}_{j}(t) $$ @@ -1157,21 +1136,24 @@ V=\frac{I}{2}\sum_{i=p}^{N+p-I}\sum_{j=p}^{N+p-I}k_{i j}c_{i}(t)c_{j}(t) $$ Now, when the flexible beam is vibrating at a specific natural mode, say $a=m$ , the following conditions result: - +现在,当柔性梁以特定的固有振动模式振动,例如 $a=m$ 时,会产生以下条件: $$ -q_{a}(t)\!=\!\left\{\!\!\begin{array}{l l}{\!Q_{a}\,s i n(\omega_{a}t\!+\!\psi_{a})}&{f\!o r\,a=m}\\ {\!0}&{\!o t h e r w i s e}\end{array}\!\!\right. +q_{a}(t)\!=\!\left\{\begin{array}{l l}{Q_{a}\,s i n(\omega_{a}t\!+\!\psi_{a})}&{f\!o r\,a=m}\\ {0}&{\!o t h e r w i s e}\end{array}\!\!\right. $$ $$ -\begin{array}{r l}{c_{b}(t)\!=\!C_{m,b}q_{m}(t)}&{{}\big(b=p,p+l,...,N+p-l\big)}\end{array} +\begin{array}{r l}{c_{b}(t)\!=\!C_{m,b}q_{m}(t)}&{{}\big(b=p,p+1,...,N+p-1\big)}\end{array} $$ where $Q_{a}$ is the amplitude of the deflection of the tip of the flexible beam associated with natural mode $a$ . Substituting Eq. (3.45) into Eq. (3.46), then substituting the resulting equation into Eq. (3.42), results in (the subscript has been dropped from the specific natural mode): +其中,$Q_{a}$ 为与自然模式 $a$ 相关的柔性梁尖端挠曲振幅。 + +将公式 (3.45) 代入公式 (3.46),然后将所得方程代入公式 (3.42),可得(此处已省略特定自然模式的下标): $$ -\sum_{j=p}^{N+p-l}(-\omega^{2}m_{i j}+k_{i j})C_{j}=O\quad\displaystyle\big(i=p,p+l,...,N+p-l\big) +\sum_{j=p}^{N+p-1}(-\omega^{2}m_{i j}+k_{i j})C_{j}=O\quad\displaystyle\big(i=p,p+l,...,N+p-l\big) $$ Equation (3.47) can be written in matrix form: @@ -1182,7 +1164,10 @@ $$ where the generalized mass matrix, $[M]$ , and generalized stiffness matrix, $[K]$ , are both $N\times N$ matrices and the coefficient vector, $\{C\}$ , is an $N\times1$ vector. The determinant of the matrix premultiplying the coefficient vector results in an $N^{\mathrm{th}}$ -degree algebraic equation in $\omega^{2}$ , which is called the characteristic equation. The $N$ roots, ${\omega_{a}}^{2}$ , are the eigenvalues, each being the square of the natural frequency associated with normal mode $a$ . The eigenvector associated with each eigenvalue, $\{C\}_{a}$ , defines the constant proportionality coefficients associated with normal mode $a$ (the $C_{a,b}$ ’s). +其中,广义质量矩阵 $[M]$ 和广义刚度矩阵 $[K]$ 均为 $N\times N$ 阶矩阵,系数向量 $\{C\}$ 是一个 $N\times1$ 阶向量。系数向量前乘的矩阵的行列式会得到一个关于 $\omega^{2}$ 的 $N$ 次代数方程,称为特征方程。该方程的 $N$ 个根,${\omega_{a}}^{2}$ ,是特征值,每个特征值都是与模态 $a$ 相关的固有频率的平方。与每个特征值相关的特征向量,$\{C\}_{a}$ ,定义了与模态 $a$ 相关的常数比例系数(即 $C_{a,b}$)。 + In FAST_AD and Modes, the tower is modeled as an inverted cantilever beam with a point mass affixed to its free end. The point mass, $M_{T o p}.$ , represents the combined mass of the base plate, nacelle, hub, and blades. The tower is assumed to deflect in the longitudinal and lateral directions independently. The stiffness distributions in each direction are assumed to be identical; consequently, the associated natural mode shapes and frequencies are assumed to be identical in each direction. +在 FAST_AD 和 Modes 中,塔架被建模为一个倒置悬臂梁,其自由端附有一个质点。该质点,$M_{T o p}.$,代表了底板、舱壳、轮毂和叶片的联合质量。塔架被假定在纵向和横向独立挠曲。每个方向的刚度分布被假定相同;因此,相关的固有振型和频率也被假定在每个方向上相同。 The kinetic energy of the tower has a component associated with the distributed mass of the beam and a component associated with the point mass: diff --git a/多体+耦合求解器/V0.5版本结果对比/对比步骤.md b/多体+耦合求解器/V0.5版本结果对比/对比步骤.md index 50ab6e3..b8abf32 100644 --- a/多体+耦合求解器/V0.5版本结果对比/对比步骤.md +++ b/多体+耦合求解器/V0.5版本结果对比/对比步骤.md @@ -15,3 +15,23 @@ q 叶片、塔架的振型如何看? 2、V0.5软件与fast 15mw对比 3、气动改用AeroDyn ED对比 + + +V4.0 vs V3.5 新增 +.fst +- seast +ElastoDyn +- 增加ptfmxyIner +- 增加YAW-FRICTION + +AD 15 +- 删去 AFAeroMod +- 删去 FrozenWake +- 增加NacelleDrag +- 增加BEM_Mod + +潜在问题: +1 刚度、模态曲线是否一致 + bladed 模态振型导出 + bladed 模态与fast一致后,计算结果如何 +2 气动结果差异 diff --git a/多体+耦合求解器/rust 经验.md b/多体+耦合求解器/rust 经验.md index b6ecd53..9acb9b7 100644 --- a/多体+耦合求解器/rust 经验.md +++ b/多体+耦合求解器/rust 经验.md @@ -18,4 +18,7 @@ aug_mat矩阵大小600     ]; ``` -![[Pasted image 20250123103848.png]] \ No newline at end of file +![[Pasted image 20250123103848.png]] + + +# 创建lib diff --git a/工作OKRs/25.2-5 OKR.canvas b/工作OKRs/25.2-5 OKR.canvas index 1051c60..9ca9720 100644 --- a/工作OKRs/25.2-5 OKR.canvas +++ b/工作OKRs/25.2-5 OKR.canvas @@ -1,11 +1,11 @@ { "nodes":[ {"id":"b698e88ca5fb9c51","type":"text","text":"状态指标:\n推进OKR的时候也要关注这些事情,它们是完成OKR的保障。\n\n\n效率状态 green","x":-96,"y":80,"width":456,"height":347}, - {"id":"2b068bfe5df15a72","type":"text","text":"# 目标:多体动力学模块完善\n### 每周盘点一下它们\n\n\n关键结果:建模原理、建模方法掌握 (8/10)\n\n关键结果:对标Bladed模块完成 (8.5/10)\n\n关键结果:风机多体动力学文献调研情况完成 (5.5/10)","x":-96,"y":-307,"width":456,"height":347}, + {"id":"2b068bfe5df15a72","type":"text","text":"# 目标:多体动力学模块完善\n### 每周盘点一下它们\n\n\n关键结果:建模原理、建模方法掌握 (8.5/10)\n\n关键结果:对标Bladed模块完成 (9/10)\n\n关键结果:风机多体动力学文献调研情况完成 (5.5/10)","x":-96,"y":-307,"width":456,"height":347}, {"id":"01ee5c157d0deeae","type":"text","text":"# 推进计划\n未来四周计划推进的重要事情\n\n文献调研启动\n\n建模重新推导\n\n\n","x":-620,"y":80,"width":456,"height":347}, - {"id":"cb9319d24c3e70e3","type":"text","text":"# 5月已完成\n\nP1 Steady Operational Loads求解器测试 \n- 变桨算法测试完成\n- 转速算法基本完成\n- 两个结合点测试 完成\n\nP1 simpack多体对CAE的需求梳理 分成塔架、叶片、传动链模型 完成","x":-240,"y":520,"width":440,"height":560}, + {"id":"cb9319d24c3e70e3","type":"text","text":"# 5月已完成\n\nP1 Steady Operational Loads求解器编写测试 \n- 变桨算法测试完成\n- 转速算法基本完成\n- 两个结合点测试 完成\n\nP1 Steady Parked Loads求解器编写及测试\n\nP1 simpack多体对CAE的需求梳理 分成塔架、叶片、传动链模型 完成\n\nP1 建立IEA 15yaml文件 完成\nP1 结果对比\n- 完成 bladed、fast模型建立,工况设置,对比","x":-240,"y":520,"width":440,"height":560}, {"id":"1ebeabaf5c73ddbb","type":"text","text":"# 4月已完成\n\n多体原理学习 YouTube课程 018\n\n气动模块联合调试,跑通\n\n使用python搭建风电机组多体模型 刚性部件主动力、惯性力计算 \n\n编写Steady Operational Loads求解器\n- 稳态工况多体动力学求解方法 --龙格库塔+ed_caloutput 初步方案完成\n- 遍历风速框架 完成\n- 不同风速下转速、变桨角度算法 完成\n- 多体设置参数 完成\n- 每个风速直接是否需要重新初始化 需要 完成\n\n\n\ngenerator torque计算 简单了解,确定方案","x":-720,"y":520,"width":440,"height":560}, - {"id":"58be7961ae7275a7","type":"text","text":"# 计划\n这周要做的3~5件重要的事情,这些事情能有效推进实现OKR。\n\nP1 必须做。P2 应该做\n\n\nP1 柔性部件 叶片、塔架主动力惯性力算法 主线\n- 变形体动力学 简略看看ing\n- 浮动坐标系方法 如何用于梁模型 \n\t- Q 问孟航 不用浮动坐标系\n- 柔性梁弯曲变形振动学习,主线 \n\t- 广义质量 刚度矩阵及含义\n- 如何静力学求解\n\t- 基于本构方程 读孟的论文\n\t\nP1 建立IEA 15yaml文件\nP1 结合yaml解析代码,联合气动更新对yaml文件的支持\nP1 结果对比\n- 优先瞬态,**如何设置计算?**\n\nP1 如何优雅的存储、输出结果。\nP1 国产化适配交给甲子营,对接\nP1 推进气动、控制、多体、水动\nP2 yaw 自由度再bug确认 已知原理了\n\n","x":-614,"y":-307,"width":450,"height":347} + {"id":"58be7961ae7275a7","type":"text","text":"# 计划\n这周要做的3~5件重要的事情,这些事情能有效推进实现OKR。\n\nP1 必须做。P2 应该做\n\n\nP1 柔性部件 叶片、塔架主动力惯性力算法 主线\n- 变形体动力学 简略看看ing\n- 浮动坐标系方法 如何用于梁模型 \n\t- Q 问孟航 不用浮动坐标系\n- 柔性梁弯曲变形振动学习,主线 \n\t- 广义质量 刚度矩阵及含义\n- 如何静力学求解\n\t- 基于本构方程 读孟的论文\n\t\n\nP1 结合yaml解析代码,联合气动更新对yaml文件的支持 \nP1 结果对比\n- Herowind 不带气动与fast3.5对比\n- Herowind 不带气动与fast4.0对比\n- Herowind 带气动与fast对比\n\nP1 如何优雅的存储、输出结果。\nP1 国产化适配交给甲子营,对接\nP1 推进气动、控制、多体、水动 耦合计算\nP2 yaw 自由度再bug确认 已知原理了\n\n","x":-614,"y":-307,"width":450,"height":347} ], "edges":[] } \ No newline at end of file diff --git a/工作总结/周报/周报78-郭翼泽.docx b/工作总结/周报/周报78-郭翼泽.docx new file mode 100644 index 0000000000000000000000000000000000000000..1b7de296c21bd9bdeabd8135c83f509e5678de8e GIT binary patch literal 20916 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 literal 0 HcmV?d00001