मैं दो आयामों में प्वासों समीकरण द्वारा शासित एक शारीरिक समस्या है
स्पर्शरेखा प्रवणता घटक, , मैं अभी एकीकृत कर सकता हूं और फिर एक Dirichlet स्थिति के माध्यम से लागू कर सकता हूं, जैसे कि सामान्य घटक को एक साथ लगाने के लिए, , मैंने इकट्ठा किया कि मुझे लैग्रेग मल्टीप्लायरों के माध्यम से जाना होगा।∫गामामीटर∂यू∂ u
इसलिए मुझे लगता है कि परिवर्तनशील रूप तब मैंने संबंधित समस्याओं जैसे https से संबंधित जानकारी पर इसे एक साथ रखने की कोशिश में एक लंबा समय बिताया : //answers.launchpad.net/fenics/+question/212434 https://answers.launchpad.net/fenics/+question/216323
लेकिन अभी भी नहीं देख सकता कि मैं गलत कहाँ जा रहा हूँ। अब तक का मेरा समाधान प्रयास है:
from dolfin import *
# Create mesh and define function space
mesh = UnitSquareMesh(64, 64)
V = FunctionSpace(mesh, "Lagrange", 1)
R = FunctionSpace(mesh, "R", 0)
W = V * R
# Create mesh function over cell facets
boundary_parts = MeshFunction("uint", mesh, mesh.topology().dim()-1)
# Mark left boundary facets as subdomain 0
class LeftBoundary(SubDomain):
def inside(self, x, on_boundary):
return on_boundary and x[0] < DOLFIN_EPS
Gamma_Left = LeftBoundary()
Gamma_Left.mark(boundary_parts, 0)
class FarField(SubDomain):
def inside(self, x, on_boundary):
return on_boundary and ( (x[0] > 1.0-DOLFIN_EPS) \
or (x[1]<DOLFIN_EPS) or (x[1]> 1.0-DOLFIN_EPS) )
Gamma_FF = FarField()
Gamma_FF.mark(boundary_parts, 1)
# Define boundary condition
u0 = Expression("sin(x[1]*pi)")
bcs = [DirichletBC(V, u0, Gamma_Left)]
# Define variational problem
(u, lmbd) = TrialFunctions(W)
(v, d) = TestFunctions(W)
f = Expression("10*exp(-(pow(x[0] - 0.5, 2) + pow(x[1] - 0.5, 2)) / 0.02)")
g = Constant(0.0)
h = Constant(-4.0)
n = FacetNormal(mesh)
F = inner(grad(u), grad(v))*dx + d*dot(grad(u),n)*ds(0) + lmbd*dot(grad(v),n)*ds(0)-\
(f*v*dx + g*v*ds(1) + h*d*ds(0) + lmbd*h*ds(0))
a = lhs(F)
L = rhs(F)
# Compute solution
A = assemble(a, exterior_facet_domains=boundary_parts)
b = assemble(L, exterior_facet_domains=boundary_parts)
for bc in bcs: bc.apply(A, b)
w = Function(W)
solve(A, w.vector(), b, 'lu')
(u,lmbd) = w.split()
# Plot solution
plot(u, interactive=True)
जो चलता है लेकिन पोइसन समीकरण के समाधान के समान नहीं है। ऐसा लगता है कि संयुक्त फ़ंक्शन रिक्त स्थान के साथ कुछ करना है, लेकिन मुझे गलती नहीं मिल रही है।
मैं सही दिशा में किसी भी मदद या संकेत की सराहना करता हूं - पहले से ही बहुत धन्यवाद!
चीयर्स
मार्कस