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 <[email protected]>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 <[email protected]> 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 >> >> > > >
_______________________________________________ Getfem-users mailing list [email protected] https://mail.gna.org/listinfo/getfem-users
