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

Reply via email to