柱坐标下多重网格法解泊松方程 您所在的位置:网站首页 柱坐标系方程 柱坐标下多重网格法解泊松方程

柱坐标下多重网格法解泊松方程

2023-08-13 02:46| 来源: 网络整理| 查看: 265

写了一个柱坐标下多重网格法解泊松方程的code,外边界采用的是第一类边界条件,直接用解析解赋值,内边界需要注意的是在x=0的转轴上面有奇点。

柱坐标下泊松方程形式为

\frac{\partial^2 u }{\partial x^2}+\frac{\partial^2 u }{\partial z^2}+\frac{1}{x}\frac{\partial u}{\partial x}=b(x,z)

当x趋向于0时,lim\frac{1}{x}\frac{\partial u}{\partial x}=\frac{\partial^2 u }{\partial x^2}

将方程离散化,其中第三项采用中心差分格式。

开始采用了有残差的多重网格形式,一直不收敛,后来索性残差去掉了,收敛的还可以。

import math import numpy as np import matplotlib.pyplot as plt from scipy import interpolate import time def coarsen(x_fine, y_fine, phi_fine):# Lagrange type interpolation, two order x2 = np.linspace(x_fine[0],x_fine[-1],int(x_fine.size/2)) y2 = np.linspace(y_fine[0],y_fine[-1],int(y_fine.size/2)) f = interpolate.interp2d(x_fine, y_fine, phi_fine, kind='cubic')#{‘linear’, ‘cubic’, ‘quintic’} phi2 = f(x2,y2) return phi2, x2, y2 def fine(x_coarse, y_coarse, phi_coarse):# Lagrange type interpolation, two order x2 = np.linspace(x_coarse[0],x_coarse[-1],int(x_coarse.size*2)) y2 = np.linspace(y_coarse[0],y_coarse[-1],int(y_coarse.size*2)) f = interpolate.interp2d(x_coarse, y_coarse, phi_coarse, kind='cubic')#{‘linear’, ‘cubic’, ‘quintic’} phi2 = f(x2,y2) return phi2, x2, y2 def Relax2( b, phi, x, z,leveli): omega = 1.95 ite = 10*3**leveli # the iteration time, you can set by other condition k = 0 h_r = x[1]-x[0] h_z = z[1]-z[0] while(k


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有