|
From: | Simone Di Gregorio |
Subject: | [Getfem-users] Pure Advection Stationary Problem |
Date: | Thu, 16 Mar 2017 09:11:48 +0000 |
Dear GetFem users,
I'm dealing with a pure stationary advection problem in 1D straight single branch domain. So the equation is:
d( v(s)c(s))/ds = 0
with v(s) velocity field (NOT constant, so it varies with s) and c(s) solute concentration, while s is the arc length of the vessel. The boundary conditions are Dirichlet B.C. in inlet of the vessel
The weak form is:
(\partial_s \phi, v c)_{\Lambda} + v(\Gamma _{out})c(\Gamma _{out})\phi(\Gamma _{out}) = 0
where \phi is the piecewise linear continuous test function, \Lambda si the domain, \Gamma _{out} is the outlet boundary.
So I build the advection matrix with:
asm_real_or_complex_1_param(M,mim,mf,mf_data,V,rg, "a=data$1(#2);" "M$1(#1,#1)+=comp(Base(#1).vGrad(#1).Base(#2))(:,:,i,j,p).a(p);")
Then I subtract to the last element of the matrix (in position N,N) the value of v(\Gamma _{out}). As expected the solution is unstable, so i added an artificial diffusion in the following way:
+D(\partial_s \phi, \partial_s c)_{\Lambda}
with D= beta*max(v(s))*h, beta large enough and h dimension of the element, and imposing dc/ds=0 over the boundary. I assembled this with asm_real_or_complex_1_param(A,mim,mf,mf_data,D,rg,
"a=data$1(#2);" "M$1(#1,#1)+=comp(vGrad(#1).vGrad(#1).Base(#2))(:,i,j,:,i,j,p).a(p);")
The solution becomes stable.
The problem is that: -the solution is always the same for very different function of v(s): -if D is not very high in the first elements of the vessel, the solution is constant, whereas it varies in the last element(this happens because add v(\Gamma _{out}) otherwise the solution would be costant everywhere) -if D is quite high the solution is a simple exponential, but is not sensitive to variation of v
From an analytical solution I expect that v(s)c(s) remain constant so c(s) should vary along the vessel dependently on value of v(s).
So it's like the problem doesn't feel the variation of velocity and I can't understand what i'm doing wrong.
Thanking you in advance, i hope i was clear enough in my explanation
Best Regards
Simone Di Gregorio
|
[Prev in Thread] | Current Thread | [Next in Thread] |