Dear Roman,
The fact that the gradient is not necessarily the same at the two different points comes from the fact that an arbitrary geometric transformation can be applied, including a nonlinear one. But you are right, it should be gmm::mat_col(K,0) instead of gmm::mat_row(K,0) in the second expression. This means that the element has only been tested in dimension 1 ... And you are also right, the signum function is here to give a unique orientation of the "tangent" derivative between two elements. Yves. On vendredi 28 mai 2010, Roman Putanowicz wrote: > Dear All, > > I am trying to understand the implementation of Hermite element > and have a problem with the following fragment of the method: > void hermite_segment__::mat_trans(/* skip *) > > > gmm::copy(gmm::identity_matrix(), M); > // gradient at point 0 > gmm::mult(G, pgp->grad(1), K); > if (N == 1) M(1, 1) = K(0,0); > else M(1, 1) = gmm::mat_euclidean_norm(K) > * gmm::sgn(gmm::vect_sp(gmm::mat_col(K, 0), r)); > // gradient at point 1 > if (!(pgt->is_linear())) gmm::mult(G, pgp->grad(3), K); > if (N == 1) M(3, 3) = K(0,0); > else M(3, 3) = gmm::mat_euclidean_norm(K) > * gmm::sgn(gmm::vect_sp(gmm::mat_row(K, 0), r)); > > Why the scheme for gradient at point 0 and 1 differ -- that is why > in case of point 1 we take gmm:mat_row(K,0) and not gmm::mat_col(K,0)? > Isn't the matrix K of the size Nx1 where N is the dimension of the > real space? > > And also this computatno with signum function -- are they to take into > account the order of poins in respet to the local coordinate system? > > I would appreciate any hint. > > Regards > > Roman -- Yves Renard ([email protected]) tel : (33) 04.72.43.87.08 Pole de Mathematiques, INSA-Lyon fax : (33) 04.72.43.85.29 20, rue Albert Einstein 69621 Villeurbanne Cedex, FRANCE http://math.univ-lyon1.fr/~renard --------- _______________________________________________ Getfem-users mailing list [email protected] https://mail.gna.org/listinfo/getfem-users
