Dear Yves, thank you for your answer. Is there also something for the function (1-cos(phi))/(phi*phi) when phi tends to zero?
Thanks in advance Marco 2014-04-13 10:44 GMT+02:00 Yves Renard <[email protected]>: > Dear Marco, > > The message "WARNING: detected wrong equivalent nodes" is a debugging message > which can be ignored, it serves to control the efficiency of the hash codes > for the semantic trees produced by the generic assembly. > > For the moment, their is no conditional expressions in the language. However, > you can use pos_part and neg_part. > Concerning the cardinal sine function (sin(t)/t) I added it to the language. > It is called "sinc" now in the generic assembly. > > Yves. > > > > > > ----- Original Message ----- > From: "Marco Pischedda" <[email protected]> > To: "Yves Renard" <[email protected]> > Cc: [email protected] > Sent: Friday, April 11, 2014 9:28:22 AM > Subject: Re: [Getfem-users] High level generic assembly procedures > > Dear Yves, > > thank you for your answer. I understand how to impose the boundary condition. > I have another question: in my formulation I'm assembling a term > A(rho)*f.Test_f, where A(rho) is a symmetric matrix defined as > follows: > > " [-sqr(rho(2))-sqr(rho(3)), rho(1)*rho(2), rho(1)*rho(3);" > " rho(1)*rho(2), -sqr(rho(1))-sqr(rho(3)), rho(2)*rho(3);" > " rho(1)*rho(3), rho(2)*rho(3) , -sqr(rho(1))-sqr(rho(2))]"; > > where rho and f are two FemVariables. When I'm assembling this term I > receive this warning message: "WARNING: detected wrong equivalent > nodes". > What does it mean? > > Then I have an expression "sin(phi)/phi", how can I insert an "if > condition" (i.e if phi<1e-8) in the expression when "phi" tends to > zero? > > Thanks in advance > > Marco > > > > 2014-04-08 15:29 GMT+02:00 Yves Renard <[email protected]>: >> >> >> Dear Marco, >> >> No, "Grad_u.Test_p +p.Grad_Test_u+p.Test_u + p(0)u(0)-p(L)u(L)" is not >> valid. The expression of an assembly string is to be evaluated at each >> Gauss point of the concerned region. An expression such as "p(0)" will >> be understand to be the component 0 of p which is not valid because the >> first component is 1. >> If you want to add some expression on a boundary (an extremity of the >> intervall [0, L] here) then it is possible but not in the same assembly >> string. In your example you have to add the assembly string "p.u" at the >> boundary x=0 and "-p.u" at the boundary x=L. >> >> However, if you need to prescribe a Dirichlet boundary condition, the >> best would be to use a corresponding model brick (if you use the model >> system). >> >> >> Yves. >> >> >> >> >> >> Le 07/04/2014 15:43, Marco Pischedda a écrit : >>> Hi, >>> >>> how can I impose the boundary condition with high level generic >>> assembly? For example I want to assemble "Grad_u.Test_p + >>> p.Grad_Test_u+p.Test_u" and then imposing the value of p on the >>> boundaries of the 1d domain, i.e x=0 and x=L. It is possible >>> to write "Grad_u.Test_p +p.Grad_Test_u+p.Test_u + p(0)u(0)-p(L)u(L)", >>> i.e can I insert the boundaries conditions in the assembling string? >>> >>> Thanks in advance >>> >>> Marco >>> >>> >>> 2014-04-03 9:52 GMT+02:00 Marco Pischedda <[email protected]>: >>>> Dear Yves, >>>> >>>> thank you for bug correction, now it works. >>>> >>>>> Concerning your question on Grad_u for a vector field, it is usually an >>>>> order two tensor (a matrix) except in 1D. >>>> Ok that's good. >>>> >>>> I will let you know if there are other problems. >>>> >>>> Thank you >>>> >>>> Marco >>>> >>>> 2014-04-03 9:25 GMT+02:00 Yves Renard <[email protected]>: >>>>> >>>>> Dear Marco, >>>>> >>>>> Concerning your question on Grad_u for a vector field, it is usually an >>>>> order two tensor (a matrix) except in 1D. >>>>> I tried to to the best to make the most operations "dimension >>>>> indepedent" so there is some permitivity in the langage (components of >>>>> size 1 are sometimes ignored). >>>>> Remember also that you can have the expression of any term with the >>>>> commant Print. For instance "Print( Grad_u).Test_p" will print the >>>>> gradient of u on each Gauss point. It does a lot of print, but at least, >>>>> you can see the format of the term. >>>>> >>>>> Yves. >>>>> >>>>> >>>>> Le 02/04/2014 17:21, Marco Pischedda a écrit : >>>>>> Hi, >>>>>> >>>>>> I have other questions: >>>>>> >>>>>> - I tried to assemble separately the following terms: >>>>>> "Grad_u.Test_p" , "p.Grad_Test_u", "p.Test_u" and the code works >>>>>> correctly. >>>>>> Then I want to assemble the sum of this terms, i.e: "Grad_u.Test_p + >>>>>> p.Grad_Test_u+p.Test_u" >>>>>> but I receive the following error: >>>>>> >>>>>> Addition or substraction of incompatible expressions or of different >>>>>> sizes >>>>>> terminate called after throwing an instance of 'gmm::gmm_error' >>>>>> what(): Error in getfem_generic_assembly.cc, line 3591 : >>>>>> Error in assembly string >>>>>> Aborted >>>>>> >>>>>> - I'm working in 1d problem with vectors as unknowns. Grad_u is >>>>>> therefore a vector or is a tensor? When I do Grad_u.Test_p the >>>>>> result is a scalar or a vector? Test_p is a vector or a scalar? >>>>>> >>>>>> Thanks in Advance >>>>>> >>>>>> Marco >>>>>> >>>>>> >>>>>> >>>>>> 2014-04-01 17:51 GMT+02:00 Marco Pischedda <[email protected]>: >>>>>>> Ok thank you, >>>>>>> >>>>>>> I tried it and it works. I will let you know if there are other >>>>>>> problems. >>>>>>> >>>>>>> Thanks >>>>>>> >>>>>>> Marco >>>>>>> >>>>>>> 2014-04-01 17:16 GMT+02:00 Yves Renard <[email protected]>: >>>>>>>> Dear Marco, >>>>>>>> >>>>>>>> All seems to me correct in your implementation. This is probably just >>>>>>>> the test line 2074 of getfem_generic_assembly.cc >>>>>>>> which is not correct for one-dimensionnal problems. >>>>>>>> >>>>>>>> I think the test should be >>>>>>>> >>>>>>>> GA_DEBUG_ASSERT((qdim == 1 && t.sizes()[0] == N) || >>>>>>>> (t.sizes()[1] == N && t.sizes()[0] == qdim) || >>>>>>>> (N == 1 && t.sizes()[0] == qdim), >>>>>>>> "dimensions mismatch"); >>>>>>>> >>>>>>>> May be you can try this. I will validate it if it works. >>>>>>>> >>>>>>>> Regards, >>>>>>>> >>>>>>>> Yves. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> Le 01/04/2014 16:56, Marco Pischedda a écrit : >>>>>>>>> Dear Yves, >>>>>>>>> >>>>>>>>> thank you for your fast answer. >>>>>>>>> >>>>>>>>> I have another question: >>>>>>>>> >>>>>>>>> - I have a monodimensional problem but the unknowns are vectorial. I >>>>>>>>> set the vectorial >>>>>>>>> dimension of the unknows with mf_u.set_qdim(3) and with >>>>>>>>> mf_p.set_qdim(3). >>>>>>>>> When I define the expression " Grad_u.Test_p " i receive the >>>>>>>>> following error: >>>>>>>>> >>>>>>>>> terminate called after throwing an instance of 'gmm::gmm_error' >>>>>>>>> what(): Error in >>>>>>>>> ../../getfem-svn/getfem/src/getfem_generic_assembly.cc, line 2074 : >>>>>>>>> dimensions mismatch >>>>>>>>> >>>>>>>>> Grad_u should be a 2nd order tensor, while Test_p should be a vector. >>>>>>>>> I suppose the >>>>>>>>> problem is that Grad_u is interpreted as a vector while Test_p is >>>>>>>>> interpreted as a scalar. >>>>>>>>> How can I use the high level generic assembly procedures on vectorial >>>>>>>>> problems >>>>>>>>> defined on a monodimensional computational domain? >>>>>>>>> >>>>>>>>> Thanks in advance >>>>>>>>> >>>>>>>>> Marco >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> 2014-04-01 8:42 GMT+02:00 Yves Renard <[email protected]>: >>>>>>>>>> Dear Marco, >>>>>>>>>> >>>>>>>>>> Yes, your code is correct and it should work correctly. >>>>>>>>>> Note that you can also use the high level generic assembly with the >>>>>>>>>> model object using a generic assembly brick. >>>>>>>>>> Note also that high level assembly is only available in the svn >>>>>>>>>> repository version of Getfem >>>>>>>>>> (and a very recent version, at least r4570 because a bug have been >>>>>>>>>> corrected on coupled problems recently). >>>>>>>>>> >>>>>>>>>> Yves. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Le 31/03/2014 14:00, Marco Pischedda a écrit : >>>>>>>>>>> Dear all, >>>>>>>>>>> >>>>>>>>>>> I want to use the high level generic assembly procedures in order to >>>>>>>>>>> use the automatic differentation for calculating the Jacobian of a >>>>>>>>>>> non-linear problem. >>>>>>>>>>> >>>>>>>>>>> For example I want to calculate the Jacobian of two vectorial >>>>>>>>>>> equations in the unknowns "u" and "p". The first vectorial equation >>>>>>>>>>> is >>>>>>>>>>> (u+p).Test_u while the second is (u+p).Test_p. >>>>>>>>>>> >>>>>>>>>>> It is correct the following code? >>>>>>>>>>> >>>>>>>>>>> gmm::sub_interval Iu(0, ndofs_u); >>>>>>>>>>> gmm::sub_interval Ip(ndofs_u,ndofs_p); >>>>>>>>>>> workspace.add_fem_variable("u", mf_u, Iu, U); >>>>>>>>>>> workspace.add_fem_variable("p", mf_p, Ip, P); >>>>>>>>>>> workspace.add_expression("(u+p).Test_u + (u+p).Test_p",mim); >>>>>>>>>>> getfem::model_real_sparse_matrix Jac(ndofs_u+ndofs_p, >>>>>>>>>>> ndofs_u+ndofs_p); >>>>>>>>>>> workspace.set_assembled_matrix(Jac); >>>>>>>>>>> workspace.assembly(2); >>>>>>>>>>> >>>>>>>>>>> In the matrix Jac I have the Jacobian of the system? >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Thanks in advance >>>>>>>>>>> >>>>>>>>>>> Marco >>>>>>>>>>> >>>>>>>>>>> _______________________________________________ >>>>>>>>>>> Getfem-users mailing list >>>>>>>>>>> [email protected] >>>>>>>>>>> https://mail.gna.org/listinfo/getfem-users >>>>>>>>>> -- >>>>>>>>>> >>>>>>>>>> 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 >>>>>>>>>> >>>>>>>>>> --------- >>>>>>>>>> >>>>>>>> -- >>>>>>>> >>>>>>>> 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 >>>>>>>> >>>>>>>> --------- >>>>>>>> >>>>> >>>>> -- >>>>> >>>>> 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 >>>>> >>>>> --------- >>>>> >> >> >> -- >> >> 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
