getfem-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Getfem-users] Unable to use gf_asm for non-homogeneous Dirichlet co


From: Arvind Ajoy
Subject: Re: [Getfem-users] Unable to use gf_asm for non-homogeneous Dirichlet conditions
Date: Mon, 6 Jul 2009 11:55:57 +0530

Dear Yves

Thank you. I am able to impose my boundary conditions with the modified
_expression_ for FF. Maybe, the documentation at
http://download.gna.org/getfem/doc/getfem_matlab/gfm_50.html should be
changed to this _expression_.

Thanks again.

Regards
Arvind


On Mon, Jul 6, 2009 at 1:55 AM, Renard Yves <address@hidden> wrote:

Dear Arvind,

Your computation is correct except

FF = N'*F;

which have to be completed by

FF = N'*F-N'*K*U0';

since you solve your system on the new unknown U-U0.

Yves.

Arvind Ajoy <address@hidden> a écrit :


Dear users,

1 . I am trying to understand the null-space method for imposing constraints
HU=R
on a system KU=F. I find that the convention used in the documentation is
different under the section for [H,R] =
gf_asm('dirichlet',bnum,mim,mf_u,mf_d,Hd,Rd)
at http://download.gna.org/getfem/doc/getfem_matlab/gfm_50.html and
the example at http://download.gna.org/getfem/doc/getfem_matlab/gfm_13.html.
Specifically,
the matrix N and N' seem to be interchanged.

Could someone please direct me to a reference where I can understand the
theory behind
the null-space technique?

===================================================================

2. In order to figure out more, I tried a simple problem to solve \frac{d^2
u}{dx^2} = 1 on [0,1]
with boundary conditions u(0) = u(1) =2. However, the solution I obtain is
wrong. The dirichlet conditions
are not imposed correctly. The code is as under

clear all;
gf_workspace('clear');

M = gf_mesh('cartesian',[0:0.025:1]);
MFU = gf_mesh_fem(M,1);
gf_mesh_fem_set(MFU,'fem',gf_fem('FEM_PK(1,1)'));
MIM = gf_mesh_im(M,gf_integ('IM_NC(1,1)'));

nbd = gf_mesh_fem_get(MFU,'nbdof');


A = gf_mesh_fem_get(MFU, 'eval', {-1}) ;
K = gf_asm('laplacian',MIM,MFU,MFU,A) ;
F = gf_asm('volumic source', MIM, MFU, MFU, -A) ;

border = gf_mesh_get(M,'outer faces');
gf_mesh_set(M,'boundary',100,border);
[H,R] = gf_asm('dirichlet',100,MIM,MFU,MFU,ones(1,nbd),2*ones(1,nbd));
[N,U0]=gf_spmat_get(H,'dirichlet_nullspace',R)

KK = N'*K*N;
FF = N'*F;

UU = KK \ FF;
U = (N * UU)' + U0;

x = linspace(0,1,100);
plot(x,0.5*x.^2 - 0.5*x + 2,'b');

hold on;
plot([0:0.025:1],U,'r+');

================================================================

Thanks for any help!


Regards
Arvind

PhD Student, Indian Institute of Technology Madras






reply via email to

[Prev in Thread] Current Thread [Next in Thread]