当前位置:首页>学习笔记>有限元基础学习笔记(三)

有限元基础学习笔记(三)

  • 2026-02-09 19:48:02
有限元基础学习笔记(三)

从公式到代码:1D 有限元 Python 实现

本文我们用 Python 写一个最小 1D 有限元求解 demo,来帮助理解前面推导的公式。

在 FEM 代码里,最机械但关键的工作只有一件事:把弱形式里的积分算出来

为此需要两块铺垫:等参元 与 高斯积分

1. 等参元与数值积分

弱形式中最常见的两类积分项(以 1D 杆单元为例)是:

其中,  可能随着  变化,积分往往难以解析求出,因此需要数值积分。

1. 高斯积分(Gauss quadrature)

高斯积分 的思想是:把  上的积分用若干采样点的加权求和近似:

其中 是权重,是高斯积分点。

实际问题里,每个单元的积分区间一般是 ,如果直接在  上布置积分点,代码会变得很碎,因为每个单元长度不同,坐标不同,积分点位置也不同。

所以 FEM 通常会先做 等参映射:把所有单元都搬到同一个参考区间 

2. 等参元(Isoparametric element)

等参元 的思路是:

  • • 把每个物理单元  都映射到同一个参考单元 
参考单元上的形函数示意如下 () :

以二阶三节点单元为例,我们用形函数插值几何坐标:

对  求导:

因此微分关系是:

其中  是 Jacobian(1D为标量)

弱形式里的刚度矩阵需要 ,但形函数天然写在 ,所以要用链式法则把导数换回物理坐标:

3. 任意积分的统一计算

有了等参映射以后,任何  上的积分都能写成:

再用高斯积分得到计算公式:

4.选几个高斯点?

 点Gauss–Legendre在上对次数的多项式积分是精确的

实际 FEM 里高斯点个数的选择,取决于你要积分的被积函数最高有多复杂。

经验上可以这样取:

  • • 刚度矩阵:若  在单元内近似常数,线性单元用 1 点即可。
  • • 体力项:如果  至少是线性的,线性单元通常需要 2 点才能算准。
  • • 高阶单元一般取  较为合适。

2. 1D 有限元 Python 代码

有限元代码的核心任务是:

计算单元矩阵与向量 → 组装整体方程 → 施加边界条件 → 求解。

本 demo 以之前的 1D 杆问题为例,实现:

  • • 自定义等分网格
  • • 自定义单元阶次 
  • • 计算出未知节点位移 
  • • 生成位移场 及应力场 

1. 问题描述(problem.py

仍取前面推文中的案例,具体参数:

  • • 杆长  为常数
  • • 体力 (或 )
  • • 左端 :自然边界 
  • • 右端 :本质边界 
E = 100000.0
A = 1.0

def
 q(x):
    return
 10.0 * A * x

natural_bcs = {0.0 : 10.0}
essential_bcs = {2.0 : 0.0}

2. 网格(mesh.py

等分网格要输出两样东西:

  • • coords: 全局节点坐标
  • • conn: 每个单元包含哪些节点(连通性)

对  阶单元,单元间共享端点,所以总节点数:

import numpy as np
def
 make_mesh_1d(x0, xl, nel, p):
    """
    x0: float,起点坐标
    x1: float,终点坐标
    nel: int,单元数
    p: int,单元阶数
    """


    nnp = nel * p + 1
    coords = np.linspace(x0, xl, nnp)
    conn = np.zeros((nel, p+1), dtype=int)

    for
 e in range(nel):
        conn[e, :] = np.arange(e * p, e * p + (p + 1))

    return
 coords, conn

3. 单元形函数(shape1d.py)

等参坐标 ,等距节点:

Lagrange 形函数:

导数:

def lagrange_shape_1d(p, xi):
    """
    输入:
    p: int,单元阶数
    xi: 等参元坐标,在[-1,1]范围上
    ----------
    输出:
    N: (p+1, ) xi为输入时的形函数值
    dN_dxi: (p+1, ) xi为输入时形函数一阶导数值
    """


    N = np.ones(p+1, dtype=float)
    dN_dxi = np.zeros(p+1, dtype=float)
    xii = np.zeros(p+1, dtype=float)

    ### 对应公式Eq.9

    for
 i in range(p+1):
        xii[i] = -1 + 2 * i / p
    ### 对应公式Eq.10

    for
 i in range(p+1):
        for
 j in range(p+1):
            if
 i != j:
                N[i] = N[i] * (xi - xii[j]) / (xii[i] - xii[j])
    ### 对应公式Eq.11

    for
 i in range(p+1):
        term = 0
        for
 k in range(p+1):
            if
 k != i:
                prod = 1
                for
 j in range(p+1):
                    if
 (j != k) and (j != i):
                        prod = prod * (xi - xii[j]) / (xii[i] - xii[j])
                term += (1/(xii[i] - xii[k])) * prod
        dN_dxi[i] = term

    return
 N, dN_dxi

4. 数值积分(quad.py

最小实现:1~3 高斯点,后续可补充。

def gauss_legendre(n_gauss):
    """
    输入:
    n_gauss: int,高斯积分点
    ----------
    输出:
    xi_g: (n_gauss, ) 对应的高斯点坐标
    w_g: (n_gauss, ) 对应的权重
    """

    xi_g = np.zeros(n_gauss)
    w_g = np.zeros(n_gauss)

    if
 n_gauss == 1:
        w_g[0] = 2.0
        xi_g[0] = 0.0
    elif
 n_gauss == 2:
        xi_g[:] = [-0.5773502691896257, 0.5773502691896257]
        w_g[:]  = [1.0, 1.0]
    elif
 n_gauss == 3:
        xi_g[:] = [-0.7745966692414834, 0.0, 0.7745966692414834]
        w_g[:]  = [0.5555555555555556, 0.8888888888888888, 0.5555555555555556]
    else
:
        raise
 ValueError("n must be 1, 2, or 3 in this demo.")

    return
 xi_g, w_g

5. 单元矩阵与向量(element1d.py

单元积分统一写成参考单元 上的求和:

每个高斯点的计算顺序很固定:
Step 1 形函数与导数:

Step 2 物理坐标:

Step 3 Jacobian:

Step 4  矩阵:

Step 5 累加 

Step 6 累加 

import numpy as np
from
 quad import *
from
 shape1d import *
from
 problem import *

def
 element_matrices(coords_e, p, n_gauss):
    """
    输入:
    coords_e: 单元物理坐标
    p: 单元阶次
    n_gauss: 高斯点个数
    ----------
    输出:
    Ke: (p+1, p+1) 单元刚度矩阵
    fe: (p+1, ) 单元外荷载向量
    """

    nen = p+1           # 单元节点数
    Ke = np.zeros((nen, nen))
    fe = np.zeros(nen)

    xi_g, w_g = gauss_legendre(n_gauss)

    for
 i in range(n_gauss):
        xi = xi_g[i]
        w = w_g[i]
        # Step 1: N, dN/dxi

        N, dN_dxi = lagrange_shape_1d(p, xi)
        # Step 2: x(xi)

        x = N @ coords_e
        # Step 3: J(xi)

        J = dN_dxi @ coords_e
        # Step 4: B = dN/dx

        dN_dx = dN_dxi / J
        B = dN_dx
        # Step 5: Ke

        Ke += (E*A) * np.outer(B, B) * (w * J)
        # Step 6: fe (body force)

        fe += N * q(x) * (w * J)

    return
 Ke, fe

6. 组装与求解(solver1d.py

组装整体矩阵

前面刚好有一个变量 conn 定义是的各单元内节点的编号。

import numpy as np
from
 mesh import *
from
 element1d import *
from
 problem import *

def
 assemble_global(coords, conn, p, n_gauss):
    """
    输入:
    coords: 所有节点物理坐标
    conn: 各单元上的节点ID
    p: 单元阶次
    n_gauss: 高斯点个数
    ----------
    输出:
    K: (ndofs, ndofs) 整体刚度矩阵
    f: (ndofs, ) 整体外荷载向量
    """

    ndofs = coords.shape[0]  # 总自由度
    nele = conn.shape[0]   # 总单元数

    K = np.zeros((ndofs, ndofs))
    F = np.zeros(ndofs)

    for
 e in range(nele):
        edofs = conn[e, :]  # 各单元内自由度编号,如[0, 1, 2]
        coords_e = coords[edofs]

        ke, fe = element_matrices(coords_e, p, n_gauss)

        for
 i in range(p+1):
            F[edofs[i]] += fe[i]   
#单元e中第i个自由度在整体中的编号edofs[i]
            for
 j in range(p+1):
                K[edofs[i], edofs[j]] += ke[i, j]
    return
 K, F

施加边界条件并求解

这里做两件事:

  • • 自然边界  加到载荷向量 F 上
  • • 本质边界  通过分块消元求解未知自由度

本 demo 只处理每类 BC 各 1 个的情况。

对  按照自由度进行分块得:

通过第二行公式来求解未知位移:

def apply_bcs_and_solve(K, F, coords):
    """
    输入:
    K: (ndofs, ndofs) 整体刚度矩阵
    F: (ndofs, ) 整体外荷载向量
    coords: (ndofs, ) 所有节点坐标
    ----------
    输出:
    d: (ndofs, ) 整体节点位移
    """


    ndofs = K.shape[0]
    # 施加自然边界条件(牵引力)

    x_t = list(natural_bcs.keys())[0]
    tbar = natural_bcs[x_t] * A
    node_t = np.where(np.isclose(coords, x_t))[0][0]    #vaule
    F[node_t] += tbar

    # 施加本质边界条件(位移)

    x_u = list(essential_bcs.keys())[0]    # list
    ubar = essential_bcs[x_u]

    fixed = np.where(np.isclose(coords, x_u))[0] #分块,本质边界条件节点id的list
    fixed_set = set(fixed.tolist())
    free = np.array([i for i in range(ndofs) if i not in fixed_set], dtype=int)  # 分块,其他节点id的list

    # 分块矩阵

    K_FF = K[free][:, free]
    K_FE = K[free][:, fixed]
    F_F = F[free]

    # 施加本质边界条件(位移)

    d_E = np.array([ubar], dtype=float)

    # 求解得未知节点位移

    rhs = F_F - K_FE @ d_E
    d_F = np.linalg.solve(K_FF, rhs)

    d = np.zeros(ndofs)
    d[fixed] = d_E
    d[free] = d_F

    return
 d

后处理

在每个单元  上取若干采样点 ,计算:

Step 1:

Step 2:

Step 3:

Step 4:

def evaluate_uh_on_mesh(coords, conn, p, d, nplot_per_elem=50):
    """
    输入:
    coords: 所有节点物理坐标
    conn: 各单元上的节点ID
    p: 单元阶次
    d: 所有节点位移
    nplot_per_elem: 每个单元上采样点
    ----------
    输出:
    x_h, u_h, eps_h, sigma_h: 全场结果
    """


    nel = conn.shape[0]
    xi_grid = np.linspace(-1.0, 1.0, nplot_per_elem)

    X_all, U_all, EPS_all, SIG_all = [], [], [], []

    for
 e in range(nel):
        # 每个单元上的节点id

        enodes = conn[e, :]
        coords_e = coords[enodes]              # (p+1,)
        de = d[enodes]                   # (p+1,)

        xi_use = xi_grid

        for
 xi in xi_use:
            # 形函数及一阶导数

            N, dN_dxi = lagrange_shape_1d(p, xi)

            # 等参变换 Step 1

            x = N @ coords_e  # 每个单元采样点对应的物理坐标                 
            J = dN_dxi @ coords_e

            # 位移 Step 2

            u = N @ de

            X_all.append(x)
            U_all.append(u)


            # dN/dx = (dN/dxi)/J

            dN_dx = dN_dxi / J
            # 应变和应力 Step 3 and 4

            eps = dN_dx @ de
            sig = E * eps

            EPS_all.append(eps)
            SIG_all.append(sig)

    x_h =  np.array(X_all, dtype=float)
    u_h =  np.array(U_all, dtype=float)
    eps_h = np.array(EPS_all, dtype=float)
    sigma_h = np.array(SIG_all, dtype=float)

    return
 x_h, u_h, eps_h, sigma_h

3. 案例计算

有以上代码后,我们可以在main.py里创建一个函数用于计算。

import numpy as np
from
 problem import *
from
 mesh import *
from
 shape1d import *
from
 quad import *
from
 element1d import *
from
 solver1d import *

def
 run_case(x0, x1, nel, p, n_gauss, nplot_per_elem=50):

    coords, conn = make_mesh_1d(x0, x1, nel, p)

    K, F = assemble_global(coords, conn, p, n_gauss)
    d = apply_bcs_and_solve(K, F, coords)

    x_plot, u_h, eps_h, sigma_h = evaluate_uh_on_mesh(
        coords, conn, p, d, nplot_per_elem=nplot_per_elem
    )

    return
 x_plot, u_h, sigma_h

然后可以自定义nelpn_gauss这三个参数。我们先固定单元数,比较不同的p 和 n_gauss

  1. 1. nel=2 ,p=1n_gauss=1
  2. 2. nel=2 ,p=1n_gauss=2
  3. 3. nel=2 ,p=2n_gauss=2
  4. 4. nel=2 ,p=3n_gauss=3
以下为计算结果:

可以看出:

  • • 1 与 2 的位移不重合,其主要原因来自体力项积分:本例中  是线性的,线性单元  是一次,因此被积函数最高为二次,1 点Gauss 不能精确积分二次项。改用 2 点后明显改善。
  • • 3 与 4(高阶单元)位移更接近精确解:高阶单元在单元内允许更高次数的位移多项式,自然更容易拟合精确位移曲线。
  • • 应力只有 4 更贴近精确解:三次单元位移是三次多项式,因此应变/应力是二次多项式,能更好逼近本例精确应力。

进一步,固定单元阶数和高斯积分点,我们变化单元数:

5. nel=5 ,p=1n_gauss=1
6. nel=10 ,p=1n_gauss=1

以下为计算结果:

可以看出:

  • • 当我们增加单元数时,位移会逐步收敛到精确解。
  • • 但  在每个线性单元内恒为常数,所以应力曲线必然是“阶梯状”。加密网格只能让阶梯更细,并不会让它真正变光滑。想得到更光滑、更准确的应力分布,通常需要用高阶单元或应力恢复。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-02-11 16:58:05 HTTP/2.0 GET : https://67808.cn/a/462319.html
  2. 运行时间 : 0.157872s [ 吞吐率:6.33req/s ] 内存消耗:4,362.73kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=eea8e6043973d59602b12cbede84608f
  1. /yingpanguazai/ssd/ssd1/www/no.67808.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/no.67808.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/no.67808.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/no.67808.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/no.67808.cn/runtime/temp/6df755f970a38e704c5414acbc6e8bcd.php ( 12.06 KB )
  140. /yingpanguazai/ssd/ssd1/www/no.67808.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000428s ] mysql:host=127.0.0.1;port=3306;dbname=no_67808;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000691s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000278s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000250s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000526s ]
  6. SELECT * FROM `set` [ RunTime:0.000195s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000514s ]
  8. SELECT * FROM `article` WHERE `id` = 462319 LIMIT 1 [ RunTime:0.008759s ]
  9. UPDATE `article` SET `lasttime` = 1770800285 WHERE `id` = 462319 [ RunTime:0.015813s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.004417s ]
  11. SELECT * FROM `article` WHERE `id` < 462319 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002212s ]
  12. SELECT * FROM `article` WHERE `id` > 462319 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001780s ]
  13. SELECT * FROM `article` WHERE `id` < 462319 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001800s ]
  14. SELECT * FROM `article` WHERE `id` < 462319 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.016297s ]
  15. SELECT * FROM `article` WHERE `id` < 462319 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.024464s ]
0.159503s