Dear Kostas,

The non-linear term allows to add a term to the generic assembly which  
is be computed on each Gauss point.
The mechanism of the non-linear term is not fully satisfactory, I  
think, and you are right has not been documented.
One of the problem is to furnish some efficient pre-computation not to  
have an interpolation of the shape function
at each gauss point. This is the role of the  
getfem::fem_interpolation_context objects.
One problem in the assembly routine is that there is only one  
fem_interpolation_context for each term of the generic assembly.
The 'compute' method of the nonlinear term is called with the  
fem_interpolation_context corresponding to the first fem declared in  
the generic assembly (i.e. #1 for NonLin(#1,#2,#3, ...)).
If there is more than one fem declared in the generic assembly for the  
nonlinear term, then the 'prepare' method of the nonlinear term is  
called for each additional fem. the second argument of 'prepare' is  
the index of the fem in the generic assembly. The method 'prepare' is  
called before 'compute' for each Gauss point and typically can make  
some pre-computations.

Moreover, generally, you need in the term the value of a certain  
variable. So, generally, the constructor take the variable and the  
corresponding mesh-fem as a parameter.

I don't know if my explanations are very clear ...

This is sure that in order to build a nonlinear term, one has to have  
a clear idea of the internal of Getfem ! For instance, the difference  
between a scalar fem with is vectorized with the a set_qdim and an  
intrinsic vectorial element have to be taken into account ...
This is one of my goal to try to simplify the writing of nonlinear terms ...


Regards,

Yves.


Konstantinos Poulios <[email protected]> a écrit :

> Hi,
>
> I have noticed that for nonlinear terms in an assembly procedure there
> are two places for them to refer to mesh_fem objects. The first one is
> the constructor function of the nonlinear term, where references to
> mesh_fems can be stored inside the object of the nonlinear term. The
> second one is the assembly command where definitions like
> NonLin(#1,#2) let the nonlinear term refer to the first and second
> mesh_fem which are contained in the assembly procedure. I cannot
> understand this mechanism very well. What are the mesh_fem numbers
> inside NonLin() used for? Is there any documentation of the NonLin
> mechanism?
>
> Regards
>
> Kostas
>
> _______________________________________________
> Getfem-users mailing list
> [email protected]
> https://mail.gna.org/listinfo/getfem-users
>




_______________________________________________
Getfem-users mailing list
[email protected]
https://mail.gna.org/listinfo/getfem-users

Reply via email to