|
From: | Renard Yves |
Subject: | Re: [Getfem-users] Question about non-linear terms |
Date: | Sun, 04 Jul 2010 12:20:12 +0200 |
User-agent: | Dynamic Internet Messaging Program (DIMP) H3 (1.1.2) |
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 <address@hidden> 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 address@hidden https://mail.gna.org/listinfo/getfem-users
[Prev in Thread] | Current Thread | [Next in Thread] |