Dear Nicolò,

The command gf_asm just allows to compute some different matrices. Is you use 
this strategy, then this is your own responsability to make a resolution with 
the corresponding matrices. You can also use the more integrated model object 
which will agregate all the terms and propose directly a solve. For that, you 
can have a look to the tutorial, for instance 
http://getfem.org/tutorial/thermo_coupling.html

For source term, you can still use gf_asm('generic', ...) yes, with the option 
gf_asm('generic', mim, 1, ...), the "1" indicating that this is a vector 
assembly, not a matrix one. You can also use gf_asm('volumic source', ...)

Best regards,

Yves



----- Mail original -----
De: "Nicolò Cambiaso" <cambiaso.nic...@gmail.com>
À: "yves renard" <yves.ren...@insa-lyon.fr>
Cc: "getfem-users" <getfem-users@nongnu.org>
Envoyé: Mercredi 2 Octobre 2019 15:58:16
Objet: Re: [Getfem-users] Generic Bricks definition using gf_asm.

I'm sorry to bother you again, but a couple of questions raised.

Some of the blocks are symmetric, so in my matrix i'll have the transposed
corresponding block. Do I need to create the transposed block too with the
command gf_asm('generic' ...) or it's going to do it by himself?

Also,
>From the equation, I have a term comprendig a test function and some static
initial data defined in the whole mesh, but no variables ('A*test_pv').
This term is gonig to be in the Right Hand Side of the linear system. Now,
my question is: which one of the functions (gf_asm('function', ...)) is the
correct one to use? Is again 'generic' going to understand it? Right now i
bet on  'volumic source', but i defined nowhere which test function i'm
using, so i'm not so sure about that.

Thank you for your help and your time.
Have a nice day,
Nicolò Cambiaso

Il giorno mer 2 ott 2019 alle ore 09:37 Nicolò Cambiaso <
cambiaso.nic...@gmail.com> ha scritto:

> Thank you very much, now it works.
> to completeness to the future readers, I would like to correct a typo I
> made when asking for the command.
> K= --equation--
> gf_model_set(md, 'add initialized data', 'K', [K]);
> gf_asm('generic', mim3, 2, 'K*(Test_ut.*ut)', -1, 'ut', 1, mf3,
> zeros(gf_mesh_fem_get(mf3, 'nbdof'),1), 'K' , 0, K);
>
> Again, thank you,
> Have a nice day
> Nicolò Cambiaso
>
> Il giorno lun 30 set 2019 alle ore 22:19 Yves Renard <
> yves.ren...@insa-lyon.fr> ha scritto:
>
>>
>> Dear Nicolo Cambiaso,
>>
>> You can use gf_asm to produce a mass matrix as you tried, but you have to
>> specify a fem on which the variable is described. The correct syntax is for
>> instance
>>
>> gf_asm('generic', mim3, 2, 'Grad_Test2_ut.Grad_Test_ut', -1, 'ut',1, mf,
>> zero(gf_mesh_fem_get(mf, 'nbdof'),1));
>>
>> where mf is the mesh_fem structure describing the fem.
>>
>> Best regards,
>>
>> Y.R.
>>
>> ----- Mail original -----
>> De: "Nicolò Cambiaso" <cambiaso.nic...@gmail.com>
>> À: "getfem-users" <getfem-users@nongnu.org>
>> Envoyé: Lundi 30 Septembre 2019 12:25:51
>> Objet: [Getfem-users] Generic Bricks definition using gf_asm.
>>
>> Dear users,
>> I would like to solve a system of equations using Getfemm++ with Matlab
>> interface.
>> So I created a block matrix, and now i cannot create the corresponding
>> bricks.
>> I'm using the command "gf_asm", hoping it's the correct one.
>>
>> the block is the following:
>> Mtt=1/k u_t v_t. (v_t is the test function corresponding to u_t)
>> in full despair, i also removed the 1/k therm, and still nothing worked.
>> this is what i wrote:
>>
>> gf_asm('generic', mim3, 2, 'Grad_Test2_ut.Grad_Test_ut', -1, 'ut',1, U);
>>
>> And the error message is:
>>
>> "Error using gf_matlab
>> Error in getfem_generic_assembly.cc, line 9519 void
>> getfem::ga_node_analysis(const string&, getfem::ga_tree&, const
>> getfem::ga_workspace&, getfem::pga_tree_node, bgeot::size_type,
>> bgeot::size_type, bool, bool, int):
>> Error in assembly string
>>
>> Error in gf_asm (line 338)
>>     [varargout{1:nargout}]=gf_matlab('asm', varargin{:});
>>
>> Error in Comeon (line 56)
>> Mtt=gf_asm('generic', mim3, 2, 'Grad_Test2_ut.Grad_Test_ut', -1, 'ut',1,
>> U);  % M_tt, proviamo"
>>
>> with
>> mim3= gf_mesh_im( mf3, gf_integ('IM_NC(3,1)') )
>> mf3=gf_mesh_fem(OmegaM,3)
>> OmegaM=gf_mesh('regular simplices',vectX, vectY, vectZ, 'degree', 1)
>>
>> at his point, i defined U as ones(2,2,2,3), having the vectX(/Y/Z) only 2
>> points each one, for now, and because u_t is a 3D vector.
>> I think that's not correct, but i have no idea of the correct dimension of
>> U, and i tried everything that came to my mind ... and still nothing
>> worked.
>>
>> I found a lot of material dealing with this on c++ interface, but
>> unfortunately I cannot male it work in Matlab.
>>
>> thank you very much,
>> Nicolo Cambiaso.
>>
>

Reply via email to