a1821216780 / OpenHast

OpenHastV6 是 OpenHastV4的升级版本,大幅提高了风力机仿真的运行速度!增加新的功能,支持了框架结构线性和共旋非线性有限元计算方法,大幅太高了海上风力发电机的建模能力,同时增加了垂直轴风力机的气动建模方法

Home Page:http://www.openwecd.fun

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Alt

关于OpenHAST 的相关介绍

OpenHAST.MBD 具有可以拓展,自由组合的优势,是下一代风力机仿真软件的标杆,由赵子祯博士首次提出了部件装配的构建方法,可以自定义的轻松实现多风轮涡轮机以及求解多体动力学行为,例如单个塔筒的涡激震动,按个叶片的震动等,目前任然在开发和实现当中.目标是替代Openfast,成为世界首屈一指的开源国产风力机设计软件的标杆!.

0 开发计划安排

0.0 2024年软件模块安排

0.0.0 模块重构

  • 初步完成任务 最基本的模块重构,将不含调用类关键字的方法重构为static 将其他方法重构为非static 方法,这样,将会为Hast.Foram的多线程和Hast.MoptL提供内存安全机制,防止计算错误.主要是内存隔离盒安全机制.大幅提高计算效率,现在的计算效率是Bladed的6倍以上,达到了Fast 80% 的计算效率,主要受限于C#的托管内存机制,尽管长度有损耗,但内存管理更加安全,不会内存泄漏!

0.0.1 AeroL

  • 未完成任务 FVW 模块
  • 未完成任务 接入更多的动态失速模型

0.0.2 ApiL

  • 未完成任务 进一步开发 api 只是一个大工程,用到什么,开发什么

0.0.3 BeamL

  • 已完成任务 开发动态几何精确梁
  • 已完成任务 植入静态共旋梁方法
  • 已完成任务 开发动态共旋梁模型,耦合工作正在进行
  • 未完成任务 向 MBD 模块当中耦合

0.0.4 PostL

  • 未完成任务 支持将计算结果直接写入到Excle文件当中,处理极限载荷
  • 未完成任务 支持将计算结果直接写入到Excle文件当中,处理疲劳载荷

0.0.4 MBD

  • 未完成任务 逐步支持双机头风机建模
  • 未完成任务 优化塔架和叶片TMDI 模型
  • 未完成任务 增加TMDI接口,为后期的TLD等其他被动减振方法提供开发接口

0.0.5 SubFEML

  • 未完成任务 支持地震波的导入,支持更多的基础模型(这个非常简单)

0.0.6 ControL

  • 已完成任务 支持Bladed DLL 控制器
  • 已完成任务 支持DTU DLL 控制器
  • 已完成认为 支持TUB控制器

1 关于 OpenHAST.MBD 当中理论基础介绍

1.1 多体动力学

Kane方法是一种用于多体动力学建模和分析的方法,适用于具有复杂动力学行为的系统,如机器人、航空器和机械系统。Kane方法由美国工程师和数学家Thomas R. Kane在20世纪60年代提出,其基本**是基于拉格朗日力学的动力学方程和牛顿-欧拉方程,通过部分约束的Lagrange乘子法将这些方程转换为求解广义坐标加速度的形式,从而简化了动力学建模和分析的过程。 Kane方法的基本**是将牛顿-欧拉方程和拉格朗日方程转换为求解广义坐标加速度的方程,这可以通过引入动力学约束方程来实现。这些动力学约束方程描述了系统中不受控制的运动,并将系统的自由度从广义坐标减少到广义坐标减去约束的数量。然后,将这些动力学约束方程分解为广义坐标和广义速度的形式,并应用拉格朗日乘子法,得到与广义坐标和广义速度相关的未知力和动力学约束力。

Kane方法的基本屠刀包括以下步骤:

  1. 确定系统的自由度和广义坐标。

  2. 建立系统的拉格朗日方程和牛顿-欧拉方程。

  3. 引入动力学约束方程,将系统的自由度从广义坐标减少到广义坐标减去约束的数量。

  4. 将动力学约束方程分解为广义坐标和广义速度的形式,并应用拉格朗日乘子法,得到未知力和动力学约束力。

  5. 求解广义坐标和广义速度的加速度方程,得到系统的动力学方程。

  6. 根据求解的动力学方程,分析系统的动力学行为。

对于风力机的建模,可以使用Kane方法来建立多体动力学模型,包括风轮、塔和机舱等组件。建议按照以下步骤进行建模:

  1. 确定系统的自由度和广义坐标。可以选择风轮的叶片角度、塔的倾斜角度和机舱的转角作为广义坐标。

  2. 建立系统的拉格朗日方程和牛顿-欧拉方程,包括叶片、塔、机舱和风的动力学效应。可以使用基本的力学原理和流体力学理论来建立这些方程。

  3. 引入动力学约束方程,将系统的自由度从广义坐标减少到广义坐标减去约束的数量。对于风力机,动力学约束方程可以描述风轮和塔的运动以及机舱的姿态。

  4. 将动力学约束方程分解为广义坐标和广义速度的形式,并应用拉格朗日乘子法,得到未知力和动力学约束力。这些力可以描述风轮、塔和机舱之间的相互作用。

  5. 求解广义坐标和广义速度的加速度方程,得到系统的动力学方程。可以使用数值方法求解这些方程,得到风力机的动力学行为。

  6. 根据求解的动力学方程,分析风力机的动力学行为,包括叶片角度、塔倾斜角度和机舱转角的变化以及风力机的输出功率和振动状况等。

    需要注意的是,使用Kane方法建立风力机的动力学模型需要对力学和流体力学等领域有较深的理解和掌握,同时需要使用适当的数学工具和计算方法对复杂的动力学方程进行求解。建议在建模前进行充分的文献调研和模型验证,以确保模型的准确性和可靠性。此外,还可以使用现有的计算机辅助工具和仿真软件来加速动力学建模和分析的过程。 由于Kane方法的推导比较复杂,这里只给出其基本的推导过程和公式。

假设系统由n个质点组成,每个质点有3个坐标描述其位置,因此系统的自由度为3n。考虑系统的广义坐标q和广义速度$\dot{q}$,它们可以表示为:

$$q = [q_1, q_2, ..., q_{3n}]^T$$

$$\dot{q} = [\dot{q}_1, \dot{q}2, ..., \dot{q}{3n}]^T$$

系统的拉格朗日方程可以表示为:

$$L = T - V$$

其中,T为系统的动能,V为系统的势能。系统的动能可以表示为:

$$T = \frac{1}{2} \sum_{i=1}^n m_i \dot{\vec{r_i}} \cdot \dot{\vec{r_i}}$$

其中,$m_i$表示第i个质点的质量,$\vec{r_i}$表示第i个质点的位置矢量。系统的势能可以表示为:

$$V = \sum_{i=1}^n m_i g z_i + \frac{1}{2} \sum_{i=1}^n \sum_{j=i+1}^n U_{ij}$$

其中,$g$表示重力加速度,$z_i$表示第i个质点的高度,$U_{ij}$表示第i个质点和第j个质点之间的相互作用势能。

系统的牛顿-欧拉方程可以表示为:

$$F = ma$$

其中,$F$表示系统中所有质点的合力,$m$表示系统中所有质点的总质量,$a$表示系统的加速度。为了将拉格朗日方程和牛顿-欧拉方程转换为求解广义坐标加速度的方程,可以引入动力学约束方程,将系统的自由度从3n减少到3n-k,其中k为动力学约束的数量。假设系统的动力学约束方程可以表示为:

$$\phi(q, t) = 0$$

其中,$\phi(q, t)$是系统的动力学约束函数,可以描述系统中不受控制的运动。

然后,将动力学约束方程分解为广义坐标和广义速度的形式,得到:

$$\Phi(q) = [\phi_1(q), \phi_2(q), ..., \phi_k(q)]^T$$

$$\Gamma(q, \dot{q}) = [\gamma_1(q, \dot{q}), \gamma_2(q, \dot{q}), ..., \gamma_k(q, \dot{q})]^T$$

其中,$\Phi(q)$表示广义坐标的动力学约束方程,$\Gamma(q, \dot{q})$表示广义速度的动力学约束方程。这些方程可以通过拉格朗日乘子法得到未知力和动力学约束力,具体的推导过程比较复杂,这里不再赘述。

最终,将动力学约束方程代入拉格朗日方程和牛顿-欧拉方程,得到关于广义坐标和广义速度加速度的方程,即:

$$M(q) \ddot{q} + C(q, \dot{q}) \dot{q} + G(q) = F$$

其中,$M(q)$是系统的质量矩阵,$C(q, \dot{q})$是系统的科里奥利力矩阵,$G(q)$是系统的重力矩阵。这些矩阵可以通过对拉格朗日方程和牛顿-欧拉方程求导得到。

对于风力机的建模,可以将叶片、塔、机舱和风的动力学效应考虑在内,建立多体动力学模型,并按照上述步骤进行建模和分析。具体地,可以将叶片角度、塔倾斜角度和机舱转角作为广义坐标,建立相应的拉格朗日方程和牛顿-欧拉方程。然后,引入动力学约束方程,将系统的自由度从3n减少到3n-k。在建立动力学约束方程时,需要考虑叶片和塔的运动以及机舱的姿态。接着,将动力学约束方程分解为广义坐标和广义速度的形式,并应用拉格朗日乘子法,得到未知力和动力学约束力。最终,求解广义坐标和广义速度的加速度方程,得到系统的动力学方程。对于风力机的动力学分析,可以通过数值方法求解该方程,得到叶片角度、塔倾斜角度和机舱转角的变化以及风力机的输出功率和振动状况等信息。

需要注意的是,在使用Kane方法进行动力学建模和分析时,需要充分考虑系统的非线性、耦合和不确定性等因素,并结合实际情况进行修正和验证。此外,还需要对力学和流体力学等领域有较深的理解和掌握,以确保模型的准确性和可靠性。

1.1.1 模态法怎么获得梁的速度和加速度

模态分析是一种用于研究结构动力学特性的方法,可以通过该方法计算出结构的振型、振频、振态等信息,从而得到结构的速度和加速度。 具体来说,模态分析分为两个步骤:模态识别和响应计算。 在模态识别阶段,需要通过有限元分析或者实验测试等方法,获得结构的固有振型和对应的固有频率。这些信息可以通过求解结构的特征值问题获得。

在响应计算阶段,可以通过将结构的动力响应表示为固有振型的线性组合来计算结构的速度和加速度。具体来说,假设结构的振型为$\phi_{i}$,振频为$\omega_{i}$,则结构的速度和加速度可以表示为:

$$v(t)=\sum_{i=1}^{n}a_{i}\phi_{i}\cos(\omega_{i}t)+\frac{b_{i}}{\omega_{i}}\sin(\omega_{i}t)$$

$$a(t)=\sum_{i=1}^{n}-a_{i}\omega_{i}\phi_{i}\sin(\omega_{i}t)+b_{i}\omega_{i}\cos(\omega_{i}t)$$

其中,$a_{i}$和$b_{i}$是待定系数,可以通过结构的初始位移和速度确定。在实际应用中,可以使用数值积分方法对以上公式进行求解,得到结构的速度和加速度随时间的变化规律。

1.1.2 模态法怎么获得梁的变形速度和加速度

对于梁的模态分析,可以得到梁的振型和固有频率。在得到梁的振型后,可以通过对振型求导的方法来获得梁的变形速度和加速度。

具体来说,设梁的振型为$\phi(x)$,其中$x$为梁上的位置参数,那么梁的速度和加速度可以分别表示为:

$$v(x,t)=\frac{\partial}{\partial t}(\phi(x)\cos(\omega t))=-\omega\phi(x)\sin(\omega t)$$

$$a(x,t)=\frac{\partial^2}{\partial t^2}(\phi(x)\cos(\omega t))=-\omega^2\phi(x)\cos(\omega t)$$

其中,$\omega$为梁的固有频率。上述公式表示了梁在振动时的速度和加速度随时间的变化规律,可以通过数值方法进行求解,得到梁在不同时间和位置上的速度和加速度值。

1.1.3 模态法怎么获得梁的位移,速度和加速度

对于梁的模态分析,可以通过求解梁的振型和固有频率来获得梁的位移、速度和加速度。

首先,需要计算梁的振型和对应的固有频率,这可以通过有限元分析或实验测试等方法获得。假设梁的振型为$\phi_i(x)$,固有频率为$\omega_i$,其中$i$表示第$i$个模态。

然后,梁的位移、速度和加速度可以表示为所有模态的振型的线性组合,即:

$$u(x,t)=\sum_{i=1}^{n}a_i\phi_i(x)\cos(\omega_i t)+b_i\phi_i(x)\sin(\omega_i t)$$

$$v(x,t)=-\sum_{i=1}^{n}a_i\omega_i\phi_i(x)\sin(\omega_i t)+b_i\omega_i\phi_i(x)\cos(\omega_i t)$$

$$a(x,t)=-\sum_{i=1}^{n}a_i\omega_i^2\phi_i(x)\cos(\omega_i t)-b_i\omega_i^2\phi_i(x)\sin(\omega_i t)$$

其中,$a_i$和$b_i$是待定系数,可以通过梁的初位移和初速度确定。通过求解上述线性组合,可以获得梁在不同时间和位置上的位移、速度和加速度。在实际应用中,可以使用数值积分方法对以上公式进行求解。

1.1.4 模态法和Kane方法可以耦合吗

将模态法和Kane方法进行耦合,可以用于分析非对称刚体的动力学行为,特别是在旋转运动和非完整条件下的情况。

具体来说,可以按照以下步骤进行:

  1. 利用模态法求解出机械系统的振型和对应的固有频率,得到系统的模态参量。

  2. 使用Kane方法建立机械系统的动力学方程,包括广义坐标、广义速度、约束条件、外部力等因素。对于非完整约束等特殊情况,可以使用Kane方法的扩展形式进行建模。

  3. 将系统的广义坐标和广义速度表示为模态参量的线性组合,即:

$$\mathbf{q}=\sum_{i=1}^{n}\mathbf{a}_i\phi_i$$

$$\mathbf{\dot{q}}=\sum_{i=1}^{n}\mathbf{a}_i\dot{\phi}_i$$

其中,$\mathbf{q}$是广义坐标向量,$\mathbf{\dot{q}}$是广义速度向量,$\mathbf{a}_i$是待定系数,$\phi_i$ 和$\dot{\phi}_i$是机械系统的第$i$个模态参量的振型和对应的速度。

  1. 将广义坐标和广义速度的表达式代入Kane方法的动力学方程中,得到模态参量的二阶微分方程组。然后,将该方程组分解成每个模态参量的二阶微分方程,可以得到一系列独立的模态方程。

  2. 对每个模态方程进行求解,可以得到每个模态参量随时间的变化规律。然后,将每个模态参量的解代入广义坐标和广义速度的表达式中,即可得到机械系统的位移、速度和加速度等信息。

需要注意的是,由于模态法和Kane方法都是建立在刚体动力学的基础上的,因此在应用时需要考虑系统是否满足刚体假设,以及非完整约束等特殊情况是否符合模态法和Kane方法的假设条件。在实际应用中,需要针对具体的机械系统进行合理的建模和求解。

1.1.5 共旋梁和Kane方法可以耦合吗

是的,可以将共旋梁和Kane方法进行耦合来研究具有复杂动力学行为的机械系统。

共旋梁是一种描述非对称刚性体在旋转运动中的动力学行为的方法,其中考虑了惯性和受力对刚体的影响。而Kane方法是一种用于建立动力学方程的方法,其中考虑了系统的广义坐标、广义速度、约束条件和外部力等因素。

在建立机械系统的动力学模型时,可以将共旋梁的动力学方程和Kane方法的动力学方程耦合起来,以考虑机械系统的旋转运动和非完整约束等特殊情况。具体来说,可以通过将共旋梁的动力学方程和Kane方法的动力学方程进行组合,建立复合动力学方程,然后使用数值方法求解该方程,从而获得机械系统的动态响应。

需要注意的是,由于共旋梁和Kane方法都是建立在刚体动力学的基础上的,因此在应用时需要考虑系统是否满足刚体假设,以及非完整约束等特殊情况是否符合共旋梁和Kane方法的假设条件。将共旋梁和Kane方法进行耦合的一种常见方法是,将共旋梁的动力学方程和Kane方法的动力学方程组合成一个复合动力学方程,然后使用数值方法进行求解。

具体来说,可以按照以下步骤进行:

建立机械系统的动力学模型,包括系统的几何形状、材料特性、受力情况、约束条件等。对于共旋梁部分,可以使用共旋梁的动力学方程描述其旋转运动;对于其他部分,则可以使用Kane方法建立动力学方程。

将共旋梁和Kane方法进行耦合的一种常见方法是,将共旋梁的动力学方程和Kane方法的动力学方程组合成一个复合动力学方程,然后使用数值方法进行求解。

具体来说,可以按照以下步骤进行:

  1. 建立机械系统的动力学模型,包括系统的几何形状、材料特性、受力情况、约束条件等。对于共旋梁部分,可以使用共旋梁的动力学方程描述其旋转运动;对于其他部分,则可以使用Kane方法建立动力学方程。

  2. 将共旋梁的动力学方程和Kane方法的动力学方程组合起来,得到复合动力学方程。具体来说,可以将共旋梁的动力学方程表示为广义坐标和广义速度的函数形式,然后将其代入Kane方法的动力学方程中,得到含有广义坐标、广义速度、广义力等项的复合动力学方程。

  3. 对复合动力学方程进行求解,可以使用数值方法,如欧拉法、龙格-库塔法等,得到机械系统的动态响应。在求解时需要注意,由于复合动力学方程中包含了非线性项和高阶导数项,因此需要进行适当的数值处理,以保证求解的精度和稳定性。

需要注意的是,共旋梁和Kane方法都是建立在刚体动力学的基础上的,因此在应用时需要考虑系统是否满足刚体假设,以及非完整约束等特殊情况是否符合共旋梁和Kane方法的假设条件。

将共旋梁的动力学方程表示为广义坐标和广义速度的函数形式,需要先将共旋梁的动力学方程化为矩阵形式,然后使用矩阵的特征值和特征向量来表示广义坐标和广义速度。

具体来说,对于一个共旋梁,其动力学方程可以表示为以下形式:

$$\mathbf{M}\mathbf{\ddot{\theta}}+\mathbf{C}\mathbf{\dot{\theta}}+\mathbf{K}\mathbf{\theta}=\mathbf{F}$$

其中,$\mathbf{M}$是质量矩阵,$\mathbf{C}$是阻尼矩阵,$\mathbf{K}$是刚度矩阵,$\mathbf{\theta}$是位移向量,$\mathbf{\dot{\theta}}$是速度向量,$\mathbf{\ddot{\theta}}$是加速度向量,$\mathbf{F}$是外力向量。

将上述方程表示为广义坐标和广义速度的函数形式,需要将位移和速度向量表示为广义坐标和广义速度的线性组合,即:

$$\mathbf{\theta}=\sum_{i=1}^{n}q_i\mathbf{\phi}_i$$

$$\mathbf{\dot{\theta}}=\sum_{i=1}^{n}\dot{q}_i\mathbf{\phi}i+\sum{i=1}^{n}q_i\dot{\mathbf{\phi}}_i$$

其中,$q_i$是广义坐标,$\mathbf{\phi}_i$是对应的广义坐标向量,$\dot{q}_i$是广义速度,$\dot{\mathbf{\phi}}_i$是对应的广义速度向量。将上述式子代入共旋梁的动力学方程中,可以得到以下形式:

$$\mathbf{M}\sum_{i=1}^{n}\ddot{q}_i\mathbf{\phi}i+\mathbf{C}\sum{i=1}^{n}\dot{q}_i\mathbf{\phi}i+\mathbf{K}\sum{i=1}^{n}q_i\mathbf{\phi}_i=\mathbf{F}$$

将上式中的广义坐标和广义速度提取出来,可以得到以下形式:

$$(\mathbf{M}\mathbf{\Phi})\mathbf{\ddot{q}}+(\mathbf{C}\mathbf{\Phi}+\mathbf{M}\dot{\mathbf{\Phi}})\mathbf{\dot{q}}+\mathbf{K}\mathbf{\Phi}\mathbf{q}=\mathbf{F}$$

其中,$\mathbf{\Phi}$是广义坐标和广义速度向量组成的矩阵,即:

$$\mathbf{\Phi}=[\mathbf{\phi}_1,\mathbf{\phi}_2,\cdots,\mathbf{\phi}_n,\dot{\mathbf{\phi}}_1,\dot{\mathbf{\phi}}_2,\cdots,\dot{\mathbf{\phi}}_n]$$

该式可以看作是一个广义坐标和广义速度的二阶微分方程组,可以使用矩阵的特征值和特征向量来求解。通过求解该方程组,可以得到机械系统的响应,包括广义坐标和广义速度随时间的变化规律,进而求得系统的位移、速度和加速度等信息。

1.1.6 共旋梁和几何精确梁理论的优缺点和主要公式

共旋梁理论和几何精确梁理论是两种常用的梁理论模型,它们各有优劣,具体如下:

  1. 共旋梁理论

共旋梁理论,也称为Cosserat梁理论,是一种基于旋量(angular momentum)和双向量(bivector)的梁理论模型,与传统的几何精确梁理论不同,它能够描述梁的扭转刚度和剪切变形等传统梁理论所不能描述的效应。共旋梁理论的主要公式如下:

  1. 广义虚位移(generalized virtual displacement):

$$\delta \vec{x} = \delta \vec{u} + \boldsymbol{\epsilon} \times \vec{x}$$

其中,$\delta \vec{x}$是梁的广义虚位移,$\delta \vec{u}$是梁的弯曲虚位移,$\boldsymbol{\epsilon}$是梁的扭转虚位移,$\vec{x}$是梁的初始位置。

  1. 共旋应变张量(cosserat strain tensor):

$$\boldsymbol{\varepsilon} = \frac{1}{2} (\boldsymbol{\nabla} \vec{u} - \boldsymbol{\kappa} \times \vec{x})$$

其中,$\boldsymbol{\varepsilon}$是梁的共旋应变张量,$\boldsymbol{\nabla}$是梁的导数算子,$\boldsymbol{\kappa}$是梁的曲率向量。

  1. 共旋应力张量(cosserat stress tensor):

$$\boldsymbol{\sigma} = \boldsymbol{\mathbf{D}} \boldsymbol{\varepsilon} + \boldsymbol{\mathbf{H}} \cdot \boldsymbol{\omega}$$

其中,$\boldsymbol{\sigma}$是梁的共旋应力张量,$\boldsymbol{\mathbf{D}}$是梁的弹性张量,$\boldsymbol{\mathbf{H}}$是梁的耦合张量,$\boldsymbol{\omega}$是梁的角速度。

优点:

  1. 能够描述梁的扭转刚度和剪切变形等传统梁理论无法描述的效应。
  2. 能够通过添加合适的耦合项,描述梁的非线性行为,如材料非线性、接触、接缝、损伤等。
  3. 在某些情况下,共旋梁理论可以简化模型,节约计算资源,提高计算效率。

缺点:

  1. 对于长细梁,共旋梁理论的精度可能不如传统梁理论。

  2. 共旋梁理论在处理复杂的边界条件和连接问题时,可能需要更复杂的计算方法和数值技巧。

  3. 几何精确梁理论

几何精确梁理论,也称为Euler-Bernoulli梁理论,是一种基于梁的几何形状和位移变形的梁理论模型,能够准确描述梁的弯曲和挠曲等效应。几何精确梁理论的主要公式如下:

  1. 广义虚位移(generalized virtual displacement):

$$\delta \vec{x} = \delta \vec{u} + \boldsymbol{\theta} \times \vec{x}$$

其中,$\delta \vec{x}$是梁的广义虚位移,$\delta \vec{u}$是梁的弯曲虚位移,$\boldsymbol{\theta}$是梁的旋转角度。

  1. 几何应变张量(geometric strain tensor):

$$\boldsymbol{\varepsilon} = \frac{1}{2} (\boldsymbol{\nabla} \vec{u})^T \cdot \boldsymbol{\varepsilon}_0 \cdot (\boldsymbol{\nabla} \vec{u})$$

其中,$\boldsymbol{\varepsilon}$是梁的几何应变张量,$\boldsymbol{\nabla}$是梁的导数算子,$\vec{u}$是梁的位移向量,$\boldsymbol{\varepsilon}_0$是梁的初始几何应变张量。

  1. 应力-应变关系:

$$\boldsymbol{\sigma} = \boldsymbol{\mathbf{D}} \cdot \boldsymbol{\varepsilon}$$

其中,$\boldsymbol{\sigma}$是梁的应力张量,$\boldsymbol{\mathbf{D}}$是梁的弹性张量,$\boldsymbol{\varepsilon}$是梁的几何应变张量。

优点:

  1. 对于长细梁,几何精确梁理论的精度相对较高,能够准确描述梁的弯曲和挠曲等效应。
  2. 几何精确梁理论的计算方法相对简单,易于实现和应用。

缺点:

  1. 无法准确描述梁的扭转刚度和剪切变形等效应,不能适用于非对称和复杂几何形状的梁的分析。
  2. 不能描述梁的非线性行为,如材料非线性、接触、接缝、损伤等。

总的来说,共旋梁理论和几何精确梁理论各有其适用范围和优劣,需要根据实际问题的需要选择合适的梁理论模型进行分析。在处理复杂的工程问题时,常常需要结合两种理论进行综合分析,以获得更准确和可靠的结果。

2 关于 OpenHAST.MBD 当中的文件夹布局的介绍

文件夹 kanes保存的事第一个验证版本的多体动力学实现方法,采用了面向过程的变成模式,具有代码条理清晰的特点,但是不易于修改和拓展,SyStem则采用了面向对象的方式,虽然在理解代码上存在困难,但是具有可以拓展,自由组合的优势,是下一代风力机时间软件的标杆,由赵子祯博士首次提出了部件装配的构建方法,可以自定义的轻松实现多风轮涡轮机以及求解但不见多体动力学行为,例如耽搁塔筒的涡激震动,耽搁叶片的震动等方法,目前任然在开发和实现当中.目标是替代Openfast,成为世界首屈一指的开源国产风力机设计软件的标杆!.

2 关于 OpenHAST.BeamL 当中的理论基础和案例介绍

3 关于基本的函数和功能介绍

2.1 时间积分方法

2.1.1 ABM4

ABM4是一种四步显式Adams-Bashforth方法,用于数值解常微分方程(ODEs)的时间积分。它的基本**是利用已知的历史数据来预测未来的解,并使用这些预测值来更新时间步长。ABM4是一个四阶方法,因此误差随着时间步长的平方减小。

具体来说,ABM4将前四个时间步长的解视为已知量,然后使用这些解来计算第五个时间步长的预测值。然后,将此预测值与四阶Adams-Moulton方法的解相结合,以获得一个新的四阶解。这个新的解然后可以用作下一个时间步长的初始值。

ABM4的公式如下:

$$ y_{n+4} = y_{n+3} + \frac{h}{24}(55f_{n+3} - 59f_{n+2} + 37f_{n+1} - 9f_n) $$

其中,$y_n$是第$n$个时间步长的解,$f_n$是$f(t_n, y_n)$,$h$是时间步长。使用ABM4方法需要至少四个初始值 $y_0,y_1,y_2,y_3$ 和对应的函数值$f_0,f_1,f_2,f_3$。

需要注意的是,ABM4是一个显式方法,因此计算速度较快,但是需要小心选择合适的时间步长以确保数值稳定。

2.1.2 RK4

RK4是一种四阶显式Runge-Kutta方法,用于数值解常微分方程(ODEs)的时间积分。它的基本**是将时间步长分解为若干子步长,并使用这些子步长来逐步逼近下一个时间步长的解。RK4是一个四阶方法,因此误差随着时间步长的四次方减小。

具体来说,RK4将一个时间步长$h$分解为四个子步长$h_1=h_2=h_3=h_4=\frac{1}{4}h$,然后使用以下公式计算下一个时间步长的解:

$$ y_{n+1} = y_n + \frac{1}{6}(k_1 + 2k_2 + 2k_3 + k_4) $$

其中,$y_n$是第$n$个时间步长的解,$k_1,k_2,k_3,k_4$是根据下面的公式计算得到的:

$$ \begin{aligned} k_1 &= hf(t_n,y_n) \\ k_2 &= hf(t_n+\frac{1}{2}h,y_n+\frac{1}{2}k_1)\\ k_3 &= hf(t_n+\frac{1}{2}h,y_n+\frac{1}{2}k_2)\\ k_4 &= hf(t_n+h,y_n+k_3) \end{aligned} $$

使用RK4方法需要至少一个初始值 $y_0$ 和对应的函数值$f_0$。

需要注意的是,RK4是一个显式方法,因此计算速度较快,但是需要小心选择合适的时间步长以确保数值稳定。

2.1.3 FoxGoodwin_RK5

Fox-Goodwin RK5是一种五阶显式Runge-Kutta方法,用于数值解常微分方程(ODEs)的时间积分。它是由Fox和Goodwin在1971年提出的,相比于传统的RK5方法,其计算效率更高,一般比RK5方法更快。

Fox-Goodwin RK5的基本**是将时间步长分解为若干子步长,并使用这些子步长来逐步逼近下一个时间步长的解。其利用四阶和五阶的插值公式,同时计算下一个时间步长的解和误差控制,以保证数值稳定性和精度。

具体来说,Fox-Goodwin RK5将一个时间步长$h$分解为五个子步长$h_1 = h_2 = h_4 = \frac{1}{2}h, h_3 = h_5 = h$,然后使用以下公式计算下一个时间步长的解:

$$ y_{n+1} = y_n + \frac{16}{135}k_1 + \frac{6656}{12825}k_3 + \frac{28561}{56430}k_4 - \frac{9}{50}k_5 + \frac{2}{55}k_6 $$

其中,$y_n$是第$n$个时间步长的解,$k_1, k_2, k_3, k_4, k_5, k_6$是根据下面的公式计算得到的:

$$ \begin{aligned} k_1 &= hf(t_n,y_n) \\ k_2 &= hf(t_n + \frac{1}{4}h, y_n + \frac{1}{4}k_1) \\ k_3 &= hf(t_n + \frac{3}{8}h, y_n + \frac{3}{32}k_1 + \frac{9}{32}k_2) \\ k_4 &= hf(t_n + \frac{12}{13}h, y_n + \frac{1932}{2197}k_1 - \frac{7200}{2197}k_2 + \frac{7296}{2197}k_3) \\ k_5 &= hf(t_n + h, y_n + \frac{439}{216}k_1 - 8k_2 + \frac{3680}{513}k_3 - \frac{845}{4104}k_4) \\ k_6 &= hf(t_n + \frac{1}{2}h, y_n - \frac{8}{27}k_1 + 2k_2 - \frac{3544}{2565}k_3 + \frac{1859}{4104}k_4 - \frac{11}{40}k_5) \end{aligned} $$

需要注意的是,Fox-Goodwin RK5是一个显式方法,因此计算速度较快,但是需要小心选择合适的时间步长以确保数值稳定。

2.1.4 HighOrderFoxGoodwin

HighOrderFoxGoodwin是一种基于Fox-Goodwin RK5的高阶显式Runge-Kutta方法,用于数值解常微分方程(ODEs)的时间积分。它是在Fox-Goodwin RK5的基础上发展而来,可以达到比Fox-Goodwin RK5更高的精度和更高的计算效率。

HighOrderFoxGoodwin的基本**与Fox-Goodwin RK5类似,将时间步长分解为若干子步长,并使用这些子步长来逐步逼近下一个时间步长的解。不同之处在于,HighOrderFoxGoodwin使用了更多的子步长和更复杂的插值公式,以获得更高的精度和更高的计算效率。

具体来说,HighOrderFoxGoodwin将一个时间步长$h$分解为若干个子步长$h_i$,然后使用以下公式计算下一个时间步长的解:

$$ y_{n+1} = y_n + \sum_{i=1}^s b_i k_i $$

其中,$y_n$是第$n$个时间步长的解,$k_i$是根据下面的公式计算得到的:

$$ k_i = hf(t_n+c_i h, y_n + \sum_{j=1}^{i-1} a_{ij} k_j) $$

$s$是子步长的个数,$b_i$,$c_i$和$a_{ij}$是插值系数,根据不同的HighOrderFoxGoodwin方法而有所不同。例如,HighOrderFoxGoodwin5方法将时间步长分解为5个子步长,使用以下插值系数:

$$ \begin{array}{c|ccccc} c_i & 0 & \frac{1}{4} & \frac{3}{8} & \frac{12}{13} & 1 \\ a_{i,j} & & \frac{1}{4} & \frac{3}{32} & \frac{1932}{2197} & \frac{439}{216} & -\frac{8}{27} \\ \hline b_i & \frac{16}{135} & \frac{6656}{12825} & \frac{28561}{56430} & -\frac{9}{50} & \frac{2}{55} \end{array} $$

需要注意的是,HighOrderFoxGoodwin是一个显式方法,因此计算速度较快,但是需要小心选择合适的时间步长以确保数值稳定。

2.1.5 GALF

GAlf(Generalized-Alpha method)是一种常微分方程时间积分方法,它是一种隐式方法,基于线性加权残差方法(LW-RK)。由于是隐式方法,GAlf相比于显式方法具有更好的稳定性和更大的稳定时间步长,但计算成本可能会更高。

GAlf方法被广泛应用于结构动力学、地震工程等领域的数值模拟中,具有较高的精度和稳定性。

GAlf方法的基本**是将时间积分过程分为预测步和校正步两个阶段,其中预测步是一个显式方法,校正步是一个隐式方法。预测步通过前一时刻的解和速度来预测当前时刻的解和速度,校正步通过残差方程来计算更准确的解和速度。

具体来说,GAlf方法使用以下公式进行时间积分:

预测步:

$$ \begin{aligned} v^{p}{n+1} &= (1-\gamma) v_n + \gamma v^{*}{n+1} \ u^{p}{n+1} &= u_n + h v^{p}{n+1} \end{aligned} $$

其中,$u_n$和$v_n$分别是第$n$个时间步长的位移和速度,$u^{p}{n+1}$和$v^{p}{n+1}$分别是预测得到的第$n+1$个时间步长的位移和速度,$v^{*}_{n+1}$是第$n+1$个时间步长的速度的中间量,$\gamma$是预测步的时间加权系数。

校正步:

$$ \begin{aligned} v^{}_{n+1} &= \frac{1}{\beta h^2} (u^{}{n+1} - u^{p}{n+1}) - \frac{1}{\beta h} v^{p}{n+1} - (1 - \frac{1}{2\beta}) v_n \ u^{*}{n+1} &= u^{p}{n+1} + h(\frac{1}{2} - \alpha) v^{p}{n+1} + h^2 (\frac{1}{6}-\alpha) a_n + h^2 \alpha a^{*}_{n+1} \end{aligned} $$

其中,$u^{}_{n+1}$和$v^{}{n+1}$是第$n+1$个时间步长的位移和速度,$a_n$和$a^{*}{n+1}$分别是第$n$个时间步长和第$n+1$个时间步长的加速度,$\alpha$和$\beta$是校正步的时间加权系数。

需要注意的是,GAlf方法的时间加权系数需要满足一些条件,以保证数值稳定和精度。常见的选择是$\gamma = \frac{1}{2} - \alpha, \beta = \frac{1}{4}(1-2\alpha+\gamma)^2$。

4 关于文件IO系统

File IO.文件读取系统

Sure, I can provide a MATLAB program for modal analysis of a rotating cantilever beam under external force using the finite element method.

First, we need to define the geometry and boundary conditions of the problem. Let's assume that the cantilever beam is 2 meters long, 0.5 meters wide, and 0.2 meters thick, and it is made of a material with a Young's modulus of 200 GPa and a density of 7850 kg/m^3. The beam is fixed at one end (x=0) and free at the other end (x=2). We will apply a force of 1000 N to the free end of the beam.

Next, we need to discretize the beam into smaller elements. Let's divide the beam into 20 equal elements of length 0.1 meters each. We can use the Timoshenko-Rayleigh theory to model the behavior of the beam, which includes the effects of shear and rotational inertia.

Now, we can write the equations of motion for the beam using the finite element method. The equation of motion for the ith element can be written as:

$$\frac{\partial^2 u_i}{\partial t^2} + \frac{1}{\rho A} \frac{\partial}{\partial x} \left( A_i \frac{\partial u_i}{\partial x} \right) + Q_i = 0$$

where $u_i$ is the displacement of the ith element, $\rho$ is the density of the material, $A$ is the cross-sectional area of the beam, $A_i$ is the cross-sectional area of the ith element, and $Q_i$ is the load applied to the ith element.

We can solve the above equation using the modal superposition method, which assumes that the response of the beam can be represented as a sum of modal shapes. The modal shapes are solutions of the equation of motion that correspond to different natural frequencies of the beam.

The first step in the modal superposition method is to find the natural frequencies and modes of the beam. We can do this by solving the eigenvalue problem:

$$\frac{\partial^2 u_i}{\partial t^2} + \frac{1}{\rho A} \frac{\partial}{\partial x} \left( A_i \frac{\partial u_i}{\partial x} \right) + \la OpenHAST.MBD a u_i = 0$$

where $\la OpenHAST.MBD a$ is the eigenvalue.

The solution of the above equation can be expressed in terms of the modal shapes:

$$u_i(x,t) = \sum_{j=1}^{N} a_j \phi_j(x) \cos(\omega_j t)$$

where $N$ is the number of modes, $a_j$ are the modal coefficients, $\phi_j(x)$ are the modal shapes, and $\omega_j$ are the natural frequencies.

The modal shapes and natural frequencies can be obtained by solving the eigenvalue problem. The modal shapes can be expressed in terms of the boundary conditions and the geometry of the beam. The natural frequencies can be obtained by solving the eigenvalue problem:

$$\det\left( \frac{\partial^2}{\partial t^2} + \frac{1}{\rho A} \frac{\partial}{\partial x} \left( A \frac{\partial }{\partial x} \right) + \la OpenHAST.MBD a \right) = 0$$

Once we have the modal shapes and natural frequencies, we can use them to solve the equation of motion for the beam. The solution can be expressed as:

$$u(x,t) = \sum_{j=1}^{N} a_j \phi_j(x) \cos(\omega_j t)$$

where $a_j$ are the modal coefficients, $\phi_j(x)$ are the modal shapes, and $\omega_j$ are the natural frequencies.

The above solution represents the response of the beam to the external force. We can plot the displacement of the beam at different times to visualize the response.

About

OpenHastV6 是 OpenHastV4的升级版本,大幅提高了风力机仿真的运行速度!增加新的功能,支持了框架结构线性和共旋非线性有限元计算方法,大幅太高了海上风力发电机的建模能力,同时增加了垂直轴风力机的气动建模方法

http://www.openwecd.fun