বিচ্ছিন্ন গ্যালার্কিন / পোইসন / ফেনিক্স


10

আমি বিচ্ছিন্ন গ্যালারকিন পদ্ধতি (ডিজি) এবং নিম্নলিখিত বিচক্ষণতা ব্যবহার করে 2 ডি পইসন সমীকরণটি সমাধান করার চেষ্টা করছি (আমার কাছে পিএনজি ফাইল রয়েছে তবে এটি আপলোড করার অনুমতি নেই, দুঃখিত):

সমীকরণ:

(κটি)+ +=0

নতুন সমীকরণ:

কুই=κটিকুই=-

সংখ্যাসূচক সঙ্গে দুর্বল ফর্ম fluxes টি এবং কুই :টি^কুই^

কুইWভী=-টি(κW)ভী+ +κটি^এনWএসকুইবনামভী=বনামভী+ +কুই^এনবনামএস

সংখ্যাসূচক fluxes (আইপি

কুই^={টি}-সি11[টি]টি^={টি}

{টি}=0.5(টি+ ++ +টি-)[টি]=টি+ +এন+ ++ +টি-এন-

সমীকরণটি সমাধান করার জন্য আমি একটি সাধারণ ফেনিক্স অজগর স্ক্রিপ্ট লিখেছিলাম। সমাধানটি আমার কাছে পাওয়া ভাল নয়। ডিজি পদ্ধতির সাথে পরিচিত কেউ যদি নীচের স্ক্রিপ্টটিতে তাত্ক্ষণিকভাবে নজর রাখতে পারে এবং আমি কী ভুল করছি তা আমাকে বলার জন্য আমি সত্যিই প্রশংসা করব।

আমি স্ক্রিপ্টে অবিচ্ছিন্ন গ্যালার্কিন ফর্মুলেশন যুক্ত করেছিলাম একটি দুর্দান্ত সমাধান।

আগাম অনেক ধন্যবাদ.

from dolfin import *

method = "DG" # CG / DG

# Create mesh and define function space
mesh = UnitSquare(32, 32)
V_q = VectorFunctionSpace(mesh, method, 2)
V_T = FunctionSpace (mesh, method, 1)
W = V_q * V_T

# Define test and trial functions
(q, T) = TrialFunctions(W)
(w, v) = TestFunctions(W)

# Define mehs quantities: normal component, mesh size
n = FacetNormal(mesh)

# define right-hand side
f = Expression("500.0*exp(-(pow(x[0] - 0.5, 2) + pow(x[1] - 0.5, 2)) / 0.02)")

# Define parameters
kappa = 1.0

# Define variational problem
if method == 'CG':
  a = dot(q,w)*dx \
       + T*div(kappa*w)*dx \
       + div(q)*v*dx

elif method == 'DG':
  #modele = "IP"
  C11 = 1.

  a = dot(q,w)*dx + T*div(kappa*w)*dx \
      - kappa*avg(T)*dot(n('-'),w('-'))*dS \
                                           \
      + dot(q,grad(v))*dx \
      - dot( avg(grad(T)) - C11 * jump(T,n) ,n('-'))*v('-')*dS

L = -v*f*dx

# Compute solution
qT = Function(W)
solve(a == L, qT)

# Project solution to piecewise linears
(q , T) = qT.split()

# Save solution to file
file = File("poisson.pvd")
file << T

# Plot solution
plot(T); plot(q)
interactive()

উত্তর:


10

Σকেটিকেকুইকেএনকেφকেগুলি=Γ[কুই]{φ}গুলি+ +Γ0{কুই}[φ]গুলি

ΓΓ0

Σকেটিকেকুই^এনকেবনামকেগুলি=Γ0কুই^[বনাম]গুলি+ +Ωকুই^এনবনামগুলিΣকেটিকেWএনকেκটি^গুলি=Γ[W]κটি^গুলি

এটি আমাদের আপনার কোডের নিম্নলিখিত পরিবর্তনের দিকে নিয়ে যায়:

C11 = 1.
qhat = avg(grad(T)) - C11 * kappa*jump(T,n)
qhatbnd = grad(T) - C11 * kappa*T*n

a = dot(q,w)*dx + T*div(kappa*w)*dx \
  - kappa*avg(T)*jump(w,n)*dS \
  - kappa*T*dot(w,n)*ds \
  - dot(q,grad(v))*dx \
  + dot( qhat, jump(v,n))*dS \
  + dot( qhatbnd, v*n)*ds

আসলে চেষ্টা করার মতো এখনও সময় আমার হাতে নেই, সুতরাং সম্ভাব্য সাইন-ত্রুটি ইত্যাদি সম্পর্কে সচেতন থাকুন তবে আমি আশা করি এটি যেভাবেই সহায়তা করবে।

তথ্যসূত্র: ডিএন আর্নল্ড, এফ। ব্রাজি, বি। ককবার্ন, এলডি মেরিনি : উপবৃত্তীয় সমস্যাগুলির জন্য বিচ্ছিন্ন গ্যালার্কিন পদ্ধতিগুলির ইউনিফাইড বিশ্লেষণ সিয়াম জে নুম। এনাল, 39 (2002), 1749-1779


হ্যাঁ আমি সত্যিই কিছু অনুপস্থিত ছিল।
micdup

-2

হ্যাঁ আমি সত্যিই কিছু মিস করছিলাম!

এটা এখন সূক্ষ্ম কাজ করছে।

আপনার সাহায্যের জন্য আপনাকে অনেক ধন্যবাদ!


2
সম্পূর্ণতার জন্য, আপনি কী অনুপস্থিত ছিলেন এবং কীভাবে আপনি এটি স্থির করেছিলেন তা বর্ণনা করতে পারবেন।
পল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.