[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Getfem-users] Boundary condition assembling procedure question
From: |
Renard Yves |
Subject: |
Re: [Getfem-users] Boundary condition assembling procedure question |
Date: |
Fri, 14 Aug 2009 14:22:32 +0200 |
User-agent: |
Dynamic Internet Messaging Program (DIMP) H3 (1.1.2) |
Véronique Pham <address@hidden> a écrit :
Hi everyone,
I have a question about boundary condition assembling procedure.
I would like to impose a boundary condition like that : du/dn + a.u +
b.d²u/dt² = 0 to implement BGT radiation condition (or similar) where
u is the unknow solution
du/dn define the normal derivative
d²u/dt² the tangential second derivative
and a and b are constants.
For the weak formulation, in 2d, the tangential derivative of u is needed.
Yes, this means that you have a Laplace operator along the boundary.
After integration by part on the boundary, you indeed need the
tangential derivative. You should obtain the corresponding matrix with
for instance
assem.push_mi(mim);
assem.push_mf(mf_u);
assem.push_mat(M);
assem.set("M(#1,#1)+=sym(comp(Grad(#1).Grad(#1))(:,i,:,i))-sym(comp(Grad(#1).Normal().Grad(#1).Normal())(:,i,i,:,j,j))");
Yves.
To impose the normal derivative and the linear part, I use that kind of
assembling :
getfem::generic_assembly assem;
assem.push_mi(mim);
assem.push_mf(mf_u);
std::vector<T> tmp(1, m_a); //m_a is a constant
assem.push_data(tmp);
assem.push_mat(F);
assem.set("F=data(1);"
"M(#1,#1)+=-sym(comp(Base(#1).Base(#1))(:,:).F(p))");
assem.assembly(Robin_region);
What is the best way to introduce the tangente part?
Thanks for your help.