湘潭python培训_对流-反应-扩散方程的有限元求解

fealpy 介绍

本文程序部分使用了湘潭大学魏老师的有限元分析python程序包,下面给出地址。FEALPy 帮助与安装 · 魏华祎的个人网站​www.weihuayi.cnweihuayi/fealpy​github.com

一般椭圆型偏微分方程的求解

对如下椭圆形偏微分方程构造一个有真解模型的例子,用

次元进行求解,画出误差阶,并输出误差表格.

求解区域

,

取真解为

. 则有

定义 PDE

import numpy as np

from fealpy.decorator import cartesian, barycentric

class elliptic_example1:

"""

The class which define the pde.

@author: chtld

@date: 20200730

"""

def __init__(self):

pass

@property

def domain(self):

return np.array([0, 1, 0, 1])

@cartesian

def source(self, p):

x = p[..., 0]

y = p[..., 1]

pi = np.pi

val = (12 * pi ** 2 + 1 + x ** 2 + y ** 2) * np.cos(pi * x) * np.cos(pi * y) \

+ 2 * pi ** 2 * np.sin(pi * x) * np.sin(pi * y) \

- pi * np.sin(pi * x) * np.cos(pi * y) - pi * np.cos(pi * x) * np.sin(pi * y)

return val

@cartesian

def exact_solution(self, p):

x = p[..., 0]

y = p[..., 1]

pi = np.pi

val = np.cos(pi * x) * np.cos(pi * y)

return val

@cartesian

def gradient(self, p):

x = p[..., 0]

y = p[..., 1]

pi = np.pi

val = np.zeros(p.shape, dtype = np.float64)

val[..., 0] = -pi * np.sin(pi * x) * np.cos(pi * y)

val[..., 1] = -pi * np.cos(pi * x) * np.sin(pi * y)

return val

@cartesian

def flux(self, p):

return -self.gradient(p)

@cartesian

def dirichlet(self, p):

return self.exact_solution(p)

@cartesian

def diffusion_coefficient(self, p):

x = p[..., 0]

y = p[..., 1]

return np.array([[10.0 * x * y / x / y, -1.0 * x * y / x / y], [-1.0 * x * y / x / y, 2.0 * x * y / x / y]], dtype=np.float64)

@cartesian

def convection_coefficient(self, p):

x = p[..., 0]

y = p[..., 1]

return np.array([1.0 * x * y / x / y, 1.0 * x * y / x / y], dtype=np.float64)

@cartesian

def reaction_coefficient(self, p):

x = p[..., 0]

y = p[..., 1]

return 1 + x**2 + y**2

弱形式

代数系统

其中

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值