# WENO **Repository Path**: Mooooi/weno ## Basic Information - **Project Name**: WENO - **Description**: python实现weno5格式(1D) - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-12-18 - **Last Updated**: 2024-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## ENO格式 [0021-9991(87)90031-3.pdf](0021-9991%2887%2990031-3.pdf) 原文比较老了,是扫描件,阅读起来比较困难... 一个比较好读的简介:[研0纪实:ENO/WENO重构 - 知乎](https://zhuanlan.zhihu.com/p/508154960) ## WENO an implementation of WENO5(1D, 2D) by Python 现在的问题: 给定三个三阶的重构结果,无法通过线性组合恢复到五阶. 重构​结果​还​不错​但​组合后收敛阶​只有​三阶:whale: index = 10 k=3模板 [1.86814012 1.86828304 1.86820697] 线性权重构: ==np.float64(1.868245927)== 实际结果: 1.8682459285042472 k=5模板 [1.8682457 1.86824601 ==1.86824593== 1.86824599 1.86824589] debug发现边界上的处理太粗糙 对收敛阶产生巨大影响: 只有三阶 原有处理方案: 对于模板不完整的边界直接设定为用只用一个合法的模板求值,并直接套用权重做内积 验证: 把边界的结果全部利用精确值代替 修改后的结果 达到预期收敛阶: l2 err accuracy order: [ nan 4.41759645 4.45872087 4.4426755 ] linf err accuracy order: [ nan 4.90376354 4.95115609 4.29478957] 测试发现,网格剖分这个参数也很重要 过密 机器误差无法被忽略 过稀疏 计算误差太大 ## 数值算例 ### 光滑函数 $$ y=e^x,\ x\in[0,5]\\ N=[128, 256,512, 1024] $$ 其中$N$为单元格数目 **k=3 三阶线性权** l2 err accuracy order: [nan 4.41759645 4.45872087 4.4426755 ] linf err accuracy order: [nan 4.90376354 4.95115609 4.29478957] **k=5 r=2五阶模板** l2 err accuracy order: [nan 4.36122596 4.43056347 4.4229996 ] linf err accuracy order: [nan 4.84728376 4.92160063 4.27190528] ### 间断问题 $$ f\left( x \right) =\left\{ \begin{array}{c} 1, x\in \left[ 0,\frac{1}{2} \right],\\ 0, x\in(\frac12,1]\\ \end{array} \right. $$ 计算结果不收敛? ![WENO5-N=64](./assets/WENO5-N=64.png)