归一化函数的梯度

我正在学习,我完全是 Fenics 数值计算的新手。我试图了解 Fenics 实施中某些方面的性质。我尝试为极其简单的函数计算梯度 - basis function in P2 function space with computed gradient

我只显示最重要的代码行:

from dolfin import *
A = Point(0,1)
B = Point(0,0)
C = Point(1,0)
D = Point(1,1)
square = Polygon([B,C,D,A])
mesh = generate_mesh(square,4.1)
V2 = FunctionSpace(mesh,"P",2)
func2 = interpolate(Expression("0.0",degree=1),V2)

#set single particular node in P2 function space
varr2 = func2.vector().get_local()
varr2[30]=1.0
func2.vector().set_local(varr2)

#visualise 

QUESTION1 - 我预计只会看到 5 个节点的梯度(集合基函数的直接邻域)。为什么结果显示其他内容?

问题 2 - 如何将所有梯度向量归一化为一个。我是这样试的:计算

func2x = project(func2.dx(0))
func2y = project(func2.dx(1)) 

以后

module = sqrt(func2x*func2x+func2y*func2y)
unnormedGradient = project(grad(func2))
result = unnormedGradient/module

为什么它没有提供预期的结果,尽管在数学上是正确的。

zw60236636 回答:归一化函数的梯度

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/706639.html

大家都在问