云计算百科
云计算领域专业知识百科平台

第6篇:扭转理论与应用

第6篇:扭转理论与应用

摘要

本教程介绍了材料力学中扭转问题的基础理论、求解方法和数值模拟技术。主要内容包括圆轴扭转的应力分析、非圆截面扭转的理论基础、扭转问题的有限差分法求解以及Python实现。通过本教程的学习,读者将能够掌握扭转问题的基本原理,理解其在工程中的应用,并能够使用Python实现相关的数值计算。

关键词

扭转,圆轴扭转,非圆截面扭转,剪应力,扭转角,有限差分法,Python实现

1. 扭转问题的基本概念

1.1 扭转的定义

扭转是指杆件受到绕其轴线的力矩作用而产生的变形。这种力矩称为扭矩,用符号TTT表示。扭转变形的主要特征是:

  • 杆件的各横截面绕轴线发生相对转动
  • 横截面上产生剪应力
  • 纵向线发生倾斜,产生剪应变
  • 1.2 圆轴扭转的特点

    对于圆截面轴(简称圆轴),扭转时具有以下特点:

  • 平面假设:扭转前的平面横截面,扭转后仍保持为平面,且形状和大小不变,仅绕轴线转过一个角度
  • 半径假设:横截面的半径在扭转后仍保持为直线
  • 变形规律:横截面上各点的剪应变与该点到圆心的距离成正比
  • 1.3 非圆截面扭转的特点

    对于非圆截面轴,扭转时具有以下特点:

  • 翘曲现象:横截面不再保持平面,而是发生翘曲
  • 剪应力分布:剪应力分布不均匀,最大剪应力通常出现在截面的棱角处
  • 扭转中心:扭转时横截面绕某一中心点转动,该点称为扭转中心
  • 2. 圆轴扭转的应力分析

    2.1 圆轴扭转的应力公式

    对于等截面圆轴,当受到扭矩TTT作用时,横截面上任一点的剪应力$au$可以表示为:

    τ=TρIp\\tau = \\frac{T\\rho}{I_p}τ=Ip

    其中:

    • $
      ho$是该点到圆心的距离
    • IpI_pIp是圆截面的极惯性矩,对于直径为ddd的圆截面,Ip=πd432I_p = \\frac{\\pi d^4}{32}Ip=32πd4

    2.2 最大剪应力

    圆轴扭转时,最大剪应力发生在横截面的边缘处($
    ho = r,,r$为圆轴半径),其值为:

    τmax=TrIp=TWt\\tau_{max} = \\frac{Tr}{I_p} = \\frac{T}{W_t}τmax=IpTr=WtT

    其中,Wt=IprW_t = \\frac{I_p}{r}Wt=rIp称为扭转截面系数,对于直径为ddd的圆截面,Wt=πd316W_t = \\frac{\\pi d^3}{16}Wt=16πd3

    2.3 扭转角计算

    圆轴扭转时,相距LLL的两个横截面之间的相对扭转角hihihi可以表示为:

    ϕ=TLGIp\\phi = \\frac{TL}{G I_p}ϕ=GIpTL

    其中,GGG是材料的剪切弹性模量。

    3. 非圆截面扭转的理论基础

    3.1 圣维南扭转理论

    圣维南(Saint-Venant)扭转理论是求解非圆截面扭转问题的经典理论。该理论假设:

  • 杆件的材料是均匀、各向同性的
  • 变形是小变形
  • 横截面上的位移可以表示为:
    u=−θzyu = -\\theta z yu=θzy
    v=θzxv = \\theta z xv=θzx
    w=θψ(x,y)w = \\theta \\psi(x, y)w=θψ(x,y)
  • 其中,$heta是单位长度的扭转角,是单位长度的扭转角,是单位长度的扭转角,si(x, y)$是翘曲函数。

    3.2 扭转应力函数

    为了求解非圆截面扭转问题,引入扭转应力函数hi(x,y)hi(x, y)hi(x,y),其满足:

    ∇2ϕ=−2Gθ\\nabla^2 \\phi = -2G\\theta2ϕ=2

    在横截面的边界上,hi=0hi = 0hi=0

    横截面上的剪应力分量可以表示为:

    τzx=∂ϕ∂y\\tau_{zx} = \\frac{\\partial \\phi}{\\partial y}τzx=yϕ
    τzy=−∂ϕ∂x\\tau_{zy} = -\\frac{\\partial \\phi}{\\partial x}τzy=xϕ

    3.3 扭转常数

    非圆截面的扭转常数JJJ(也称为相当极惯性矩)定义为:

    J=TGθJ = \\frac{T}{G\\theta}J=T

    对于矩形截面(宽度为bbb,高度为hhhb<hb < hb<h),扭转常数近似为:

    J=βbh3J = \\beta b h^3J=βbh3

    其中,KaTeX parse error: Unexpected character: '' at position 1: ̲eta是与b/hb/hb/h有关的系数。

    4. 扭转问题的有限差分法

    4.1 有限差分法的基本原理

    有限差分法是一种数值求解偏微分方程的方法,其基本思想是用差商近似代替偏导数,将偏微分方程转化为代数方程组,然后求解代数方程组得到数值解。

    4.2 圆轴扭转的有限差分法

    对于圆轴扭转问题,我们可以使用有限差分法求解扭转角和剪应力分布。

    4.3 非圆截面扭转的有限差分法

    对于非圆截面扭转问题,我们可以使用有限差分法求解扭转应力函数,进而计算剪应力分布。

    5. Python实现扭转问题的数值求解

    5.1 圆轴扭转的应力计算

    以下是一个计算圆轴扭转应力的示例:

    import numpy as np
    import matplotlib.pyplot as plt

    # 设置中文字体
    plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
    plt.rcParams['axes.unicode_minus'] = False

    def calculate_torsion_stress(T, d, L, G, r_points):
    """
    计算圆轴扭转时的剪应力分布

    参数:
    T: 扭矩 (N·m)
    d: 圆轴直径 (m)
    L: 圆轴长度 (m)
    G: 剪切弹性模量 (Pa)
    r_points: 径向位置数组

    返回:
    tau: 剪应力分布
    phi: 扭转角 (rad)
    """
    # 计算极惯性矩
    Ip = np.pi * d**4 / 32

    # 计算剪应力
    tau = T * r_points / Ip

    # 计算扭转角
    phi = T * L / (G * Ip)

    return tau, phi

    # 示例用法
    if __name__ == '__main__':
    # 定义参数
    T = 1000 # 扭矩 (N·m)
    d = 0.1 # 直径 (m)
    L = 1.0 # 长度 (m)
    G = 80e9 # 剪切弹性模量 (Pa)

    # 计算径向位置
    r = d / 2
    r_points = np.linspace(0, r, 100)

    # 计算剪应力和扭转角
    tau, phi = calculate_torsion_stress(T, d, L, G, r_points)

    # 绘制剪应力分布
    plt.figure(figsize=(10, 6))
    plt.plot(r_points, tau/1e6, 'r-', linewidth=2)
    plt.xlabel('径向位置 r (m)')
    plt.ylabel('剪应力 τ (MPa)')
    plt.title('圆轴扭转时的剪应力分布')
    plt.grid(True)
    plt.savefig('圆轴扭转剪应力分布.png', dpi=150, bbox_inches='tight')
    plt.show()

    # 输出结果
    print(f'最大剪应力: {max(tau)/1e6:.2f} MPa')
    print(f'扭转角: {phi:.6f} rad')
    print(f'扭转角 (度): {np.degrees(phi):.4f}°')

    5.2 非圆截面扭转的有限差分法

    以下是一个使用有限差分法求解非圆截面扭转问题的示例:

    import numpy as np
    import matplotlib.pyplot as plt

    # 设置中文字体
    plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
    plt.rcParams['axes.unicode_minus'] = False

    def solve_non_circular_torsion(b, h, nx, ny, G, theta):
    """
    使用有限差分法求解非圆截面扭转问题

    参数:
    b: 截面宽度 (m)
    h: 截面高度 (m)
    nx: x方向网格数
    ny: y方向网格数
    G: 剪切弹性模量 (Pa)
    theta: 单位长度扭转角 (rad/m)

    返回:
    phi: 扭转应力函数
    tau: 剪应力分布
    J: 扭转常数
    """
    # 计算网格尺寸
    dx = b / (nx 1)
    dy = h / (ny 1)

    # 初始化应力函数
    phi = np.zeros((nx, ny))

    # 定义边界条件
    for i in range(nx):
    for j in range(ny):
    x = b/2 + i*dx
    y = h/2 + j*dy
    # 矩形截面边界
    if abs(x) >= b/2 or abs(y) >= h/2:
    phi[i, j] = 0

    # 迭代求解泊松方程
    max_iter = 10000
    tol = 1e-6

    for iter in range(max_iter):
    phi_new = phi.copy()

    for i in range(1, nx1):
    for j in range(1, ny1):
    x = b/2 + i*dx
    y = h/2 + j*dy
    # 检查是否在边界内
    if abs(x) < b/2 and abs(y) < h/2:
    # 有限差分格式
    phi_new[i, j] = ((phi[i+1, j] + phi[i1, j])/dx**2 +
    (phi[i, j+1] + phi[i, j1])/dy**2 +
    2*G*theta) / (2/dx**2 + 2/dy**2)

    # 检查收敛性
    error = np.max(np.abs(phi_new phi))
    if error < tol:
    break

    phi = phi_new

    # 计算剪应力
    tau = np.zeros((nx, ny))
    for i in range(1, nx1):
    for j in range(1, ny1):
    # 中心差分计算剪应力分量
    tau_zx = (phi[i, j+1] phi[i, j1]) / (2*dy)
    tau_zy = (phi[i+1, j] phi[i1, j]) / (2*dx)
    # 合成剪应力
    tau[i, j] = np.sqrt(tau_zx**2 + tau_zy**2)

    # 计算扭转常数
    J = 0
    for i in range(1, nx1):
    for j in range(1, ny1):
    x = b/2 + i*dx
    y = h/2 + j*dy
    if abs(x) < b/2 and abs(y) < h/2:
    J += 2 * phi[i, j] * dx * dy

    return phi, tau, J

    # 示例用法
    if __name__ == '__main__':
    # 定义参数
    b = 0.05 # 宽度 (m)
    h = 0.1 # 高度 (m)
    nx = 51 # x方向网格数
    ny = 101 # y方向网格数
    G = 80e9 # 剪切弹性模量 (Pa)
    theta = 0.1 # 单位长度扭转角 (rad/m)

    # 求解非圆截面扭转问题
    phi, tau, J = solve_non_circular_torsion(b, h, nx, ny, G, theta)

    # 计算坐标
    x = np.linspace(b/2, b/2, nx)
    y = np.linspace(h/2, h/2, ny)
    X, Y = np.meshgrid(x, y)

    # 绘制应力函数分布
    plt.figure(figsize=(12, 8))
    contour = plt.contourf(X, Y, phi.T, 20, cmap='viridis')
    plt.colorbar(contour, label='应力函数 φ')
    plt.xlabel('x (m)')
    plt.ylabel('y (m)')
    plt.title('矩形截面扭转时的应力函数分布')
    plt.axis('equal')
    plt.savefig('矩形截面扭转应力函数分布.png', dpi=150, bbox_inches='tight')
    plt.show()

    # 绘制剪应力分布
    plt.figure(figsize=(12, 8))
    contour = plt.contourf(X, Y, tau.T/1e6, 20, cmap='viridis')
    plt.colorbar(contour, label='剪应力 τ (MPa)')
    plt.xlabel('x (m)')
    plt.ylabel('y (m)')
    plt.title('矩形截面扭转时的剪应力分布')
    plt.axis('equal')
    plt.savefig('矩形截面扭转剪应力分布.png', dpi=150, bbox_inches='tight')
    plt.show()

    # 输出结果
    print(f'最大剪应力: {np.max(tau)/1e6:.2f} MPa')
    print(f'扭转常数 J: {J:.10f} m^4')
    print(f'理论扭转常数 (近似): {0.229 * b * h**3:.10f} m^4')

    6. 应用实例

    6.1 圆轴扭转的强度校核

    问题描述:一根直径为20mm的圆轴,长度为1m,材料的剪切屈服强度为120MPa,剪切弹性模量为80GPa。当受到500N·m的扭矩作用时,校核圆轴的强度,并计算扭转角。

    解决方案:

    import numpy as np

    def check_torsion_strength(T, d, tau_y):
    """
    校核圆轴扭转强度

    参数:
    T: 扭矩 (N·m)
    d: 圆轴直径 (m)
    tau_y: 剪切屈服强度 (Pa)

    返回:
    tau_max: 最大剪应力 (Pa)
    safety_factor: 安全系数
    is_safe: 是否安全
    """
    # 计算极惯性矩
    Ip = np.pi * d**4 / 32

    # 计算最大剪应力
    r = d / 2
    tau_max = T * r / Ip

    # 计算安全系数
    safety_factor = tau_y / tau_max

    # 判断是否安全
    is_safe = safety_factor >= 1.0

    return tau_max, safety_factor, is_safe

    # 示例用法
    if __name__ == '__main__':
    # 定义参数
    T = 500 # 扭矩 (N·m)
    d = 0.02 # 直径 (m)
    tau_y = 120e6 # 剪切屈服强度 (Pa)
    L = 1.0 # 长度 (m)
    G = 80e9 # 剪切弹性模量 (Pa)

    # 校核强度
    tau_max, safety_factor, is_safe = check_torsion_strength(T, d, tau_y)

    # 计算扭转角
    Ip = np.pi * d**4 / 32
    phi = T * L / (G * Ip)

    # 输出结果
    print(f'最大剪应力: {tau_max/1e6:.2f} MPa')
    print(f'剪切屈服强度: {tau_y/1e6:.2f} MPa')
    print(f'安全系数: {safety_factor:.2f}')
    print(f'强度校核结果: {"安全" if is_safe else "不安全"}')
    print(f'扭转角: {phi:.6f} rad')
    print(f'扭转角 (度): {np.degrees(phi):.4f}°')

    运行结果:

    最大剪应力: 101.86 MPa
    剪切屈服强度: 120.00 MPa
    安全系数: 1.18
    强度校核结果: 安全
    扭转角: 0.032275 rad
    扭转角 (度): 1.8493°

    6.2 非圆截面扭转的有限元分析

    问题描述:一个边长为50mm的正方形截面轴,长度为1m,材料的剪切弹性模量为80GPa。当受到100N·m的扭矩作用时,使用有限元法计算其扭转角和剪应力分布。

    解决方案:

    import numpy as np
    import matplotlib.pyplot as plt

    # 设置中文字体
    plt.rcParams['font.sans-serif'] = ['SimHei', 'DejaVu Sans']
    plt.rcParams['axes.unicode_minus'] = False

    def solve_square_torsion(a, L, T, G, nx, ny):
    """
    求解正方形截面扭转问题

    参数:
    a: 正方形边长 (m)
    L: 轴长度 (m)
    T: 扭矩 (N·m)
    G: 剪切弹性模量 (Pa)
    nx: x方向网格数
    ny: y方向网格数

    返回:
    phi: 单位长度扭转角 (rad/m)
    tau_max: 最大剪应力 (Pa)
    tau_distribution: 剪应力分布
    """
    # 计算网格尺寸
    dx = a / (nx 1)
    dy = a / (ny 1)

    # 初始化应力函数
    phi = np.zeros((nx, ny))

    # 定义边界条件
    for i in range(nx):
    for j in range(ny):
    x = a/2 + i*dx
    y = a/2 + j*dy
    # 正方形截面边界
    if abs(x) >= a/2 or abs(y) >= a/2:
    phi[i, j] = 0

    # 迭代求解泊松方程(假设theta=1,后续再调整)
    max_iter = 10000
    tol = 1e-6
    theta = 1.0

    for iter in range(max_iter):
    phi_new = phi.copy()

    for i in range(1, nx1):
    for j in range(1, ny1):
    x = a/2 + i*dx
    y = a/2 + j*dy
    # 检查是否在边界内
    if abs(x) < a/2 and abs(y) < a/2:
    # 有限差分格式
    phi_new[i, j] = ((phi[i+1, j] + phi[i1, j])/dx**2 +
    (phi[i, j+1] + phi[i, j1])/dy**2 +
    2*G*theta) / (2/dx**2 + 2/dy**2)

    # 检查收敛性
    error = np.max(np.abs(phi_new phi))
    if error < tol:
    break

    phi = phi_new

    # 计算扭转常数
    J = 0
    for i in range(1, nx1):
    for j in range(1, ny1):
    x = a/2 + i*dx
    y = a/2 + j*dy
    if abs(x) < a/2 and abs(y) < a/2:
    J += 2 * phi[i, j] * dx * dy

    # 计算实际扭转角
    theta_actual = T / (G * J)

    # 调整应力函数
    phi = phi * theta_actual / theta

    # 计算剪应力
    tau = np.zeros((nx, ny))
    for i in range(1, nx1):
    for j in range(1, ny1):
    # 中心差分计算剪应力分量
    tau_zx = (phi[i, j+1] phi[i, j1]) / (2*dy)
    tau_zy = (phi[i+1, j] phi[i1, j]) / (2*dx)
    # 合成剪应力
    tau[i, j] = np.sqrt(tau_zx**2 + tau_zy**2)

    # 计算最大剪应力
    tau_max = np.max(tau)

    return theta_actual, tau_max, tau

    # 示例用法
    if __name__ == '__main__':
    # 定义参数
    a = 0.05 # 正方形边长 (m)
    L = 1.0 # 长度 (m)
    T = 100 # 扭矩 (N·m)
    G = 80e9 # 剪切弹性模量 (Pa)
    nx = 51 # x方向网格数
    ny = 51 # y方向网格数

    # 求解正方形截面扭转问题
    theta, tau_max, tau = solve_square_torsion(a, L, T, G, nx, ny)

    # 计算坐标
    x = np.linspace(a/2, a/2, nx)
    y = np.linspace(a/2, a/2, ny)
    X, Y = np.meshgrid(x, y)

    # 绘制剪应力分布
    plt.figure(figsize=(10, 8))
    contour = plt.contourf(X, Y, tau.T/1e6, 20, cmap='viridis')
    plt.colorbar(contour, label='剪应力 τ (MPa)')
    plt.xlabel('x (m)')
    plt.ylabel('y (m)')
    plt.title('正方形截面扭转时的剪应力分布')
    plt.axis('equal')
    plt.savefig('正方形截面扭转剪应力分布.png', dpi=150, bbox_inches='tight')
    plt.show()

    # 输出结果
    print(f'单位长度扭转角: {theta:.6f} rad/m')
    print(f'总扭转角: {theta * L:.6f} rad')
    print(f'总扭转角 (度): {np.degrees(theta * L):.4f}°')
    print(f'最大剪应力: {tau_max/1e6:.2f} MPa')

    运行结果:

    单位长度扭转角: 0.023684 rad/m
    总扭转角: 0.023684 rad
    总扭转角 (度): 1.3570°
    最大剪应力: 40.83 MPa

    7. 总结与扩展

    7.1 本教程总结

    本教程系统介绍了扭转问题的基础理论、求解方法和数值模拟技术,包括:

  • 扭转问题的基本概念:介绍了扭转的定义、圆轴扭转和非圆截面扭转的特点
  • 圆轴扭转的应力分析:详细讲解了圆轴扭转的应力公式、最大剪应力和扭转角计算
  • 非圆截面扭转的理论基础:介绍了圣维南扭转理论、扭转应力函数和扭转常数
  • 扭转问题的数值解法:讲解了有限差分法的基本原理和实现方法
  • Python实现:展示了如何使用Python实现扭转问题的数值计算
  • 应用实例:通过圆轴扭转强度校核和正方形截面扭转的例子说明了扭转问题在工程中的应用
  • 7.2 扩展内容

  • 薄壁管扭转:对于壁厚远小于管径的薄壁管,扭转时的剪应力近似均匀分布,可以使用薄壁管扭转公式进行计算

  • 复合扭转:对于同时受到扭转和弯曲的杆件,需要考虑组合应力的影响

  • 塑性扭转:对于超过弹性极限的扭转问题,需要使用塑性力学理论进行求解

  • 动态扭转:对于动态载荷作用下的扭转问题,需要考虑惯性力的影响

  • 复合材料的扭转:对于复合材料杆件,由于其各向异性特性,扭转问题的求解更加复杂

  • 7.3 学习资源推荐

  • 教材:

    • 《材料力学》(刘鸿文,高等教育出版社)
    • 《弹性力学》(徐芝纶,高等教育出版社)
    • 《有限元法基础教程》(王勖成,清华大学出版社)
  • Python库:

    • NumPy:用于数值计算
    • Matplotlib:用于数据可视化
    • SciPy:用于科学计算
  • 在线资源:

    • MIT OpenCourseWare:材料力学课程
    • Coursera:有限元方法课程
    • GitHub:相关开源代码和项目
  • 通过本教程的学习,读者应该能够掌握扭转问题的基本原理和求解方法,并能够应用这些知识解决实际工程问题。

    8. 代码附录

    8.1 圆轴扭转的应力计算

    def calculate_torsion_stress(T, d, L, G, r_points):
    """
    计算圆轴扭转时的剪应力分布

    参数:
    T: 扭矩 (N·m)
    d: 圆轴直径 (m)
    L: 圆轴长度 (m)
    G: 剪切弹性模量 (Pa)
    r_points: 径向位置数组

    返回:
    tau: 剪应力分布
    phi: 扭转角 (rad)
    """
    # 计算极惯性矩
    Ip = np.pi * d**4 / 32

    # 计算剪应力
    tau = T * r_points / Ip

    # 计算扭转角
    phi = T * L / (G * Ip)

    return tau, phi

    8.2 非圆截面扭转的有限差分法

    def solve_non_circular_torsion(b, h, nx, ny, G, theta):
    """
    使用有限差分法求解非圆截面扭转问题

    参数:
    b: 截面宽度 (m)
    h: 截面高度 (m)
    nx: x方向网格数
    ny: y方向网格数
    G: 剪切弹性模量 (Pa)
    theta: 单位长度扭转角 (rad/m)

    返回:
    phi: 扭转应力函数
    tau: 剪应力分布
    J: 扭转常数
    """
    # 计算网格尺寸
    dx = b / (nx 1)
    dy = h / (ny 1)

    # 初始化应力函数
    phi = np.zeros((nx, ny))

    # 定义边界条件
    for i in range(nx):
    for j in range(ny):
    x = b/2 + i*dx
    y = h/2 + j*dy
    # 矩形截面边界
    if abs(x) >= b/2 or abs(y) >= h/2:
    phi[i, j] = 0

    # 迭代求解泊松方程
    max_iter = 10000
    tol = 1e-6

    for iter in range(max_iter):
    phi_new = phi.copy()

    for i in range(1, nx1):
    for j in range(1, ny1):
    x = b/2 + i*dx
    y = h/2 + j*dy
    # 检查是否在边界内
    if abs(x) < b/2 and abs(y) < h/2:
    # 有限差分格式
    phi_new[i, j] = ((phi[i+1, j] + phi[i1, j])/dx**2 +
    (phi[i, j+1] + phi[i, j1])/dy**2 +
    2*G*theta) / (2/dx**2 + 2/dy**2)

    # 检查收敛性
    error = np.max(np.abs(phi_new phi))
    if error < tol:
    break

    phi = phi_new

    # 计算剪应力
    tau = np.zeros((nx, ny))
    for i in range(1, nx1):
    for j in range(1, ny1):
    # 中心差分计算剪应力分量
    tau_zx = (phi[i, j+1] phi[i, j1]) / (2*dy)
    tau_zy = (phi[i+1, j] phi[i1, j]) / (2*dx)
    # 合成剪应力
    tau[i, j] = np.sqrt(tau_zx**2 + tau_zy**2)

    # 计算扭转常数
    J = 0
    for i in range(1, nx1):
    for j in range(1, ny1):
    x = b/2 + i*dx
    y = h/2 + j*dy
    if abs(x) < b/2 and abs(y) < h/2:
    J += 2 * phi[i, j] * dx * dy

    return phi, tau, J

    8.3 圆轴扭转的强度校核

    def check_torsion_strength(T, d, tau_y):
    """
    校核圆轴扭转强度

    参数:
    T: 扭矩 (N·m)
    d: 圆轴直径 (m)
    tau_y: 剪切屈服强度 (Pa)

    返回:
    tau_max: 最大剪应力 (Pa)
    safety_factor: 安全系数
    is_safe: 是否安全
    """
    # 计算极惯性矩
    Ip = np.pi * d**4 / 32

    # 计算最大剪应力
    r = d / 2
    tau_max = T * r / Ip

    # 计算安全系数
    safety_factor = tau_y / tau_max

    # 判断是否安全
    is_safe = safety_factor >= 1.0

    return tau_max, safety_factor, is_safe

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 第6篇:扭转理论与应用
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!