Thank you very much for the answer. I read step-67 and 59 and is somewhere mentioned that there are many different ways to deal with multiple components. In my case (complex values) need only 2. I was wondering if it is possible to use the MatrixFreeOperators::LaplaceOperator and MatrixFreeOperators::MassOperato with 2 components. If so, could you please give me some clues?
Thank you very much. Regards, Hermes El lunes, 18 de octubre de 2021 a las 6:32:54 UTC+2, peterrum escribió: > Hi Hermes, > > I would suggest that you first take a look at step-67 ( > https://www.dealii.org/developer/doxygen/deal.II/step_67.html): it deals > with systems with multiple components. Although I am not particular > familiar with step-29, I guess you can express your complex system as two > component system so that many aspects shown in step-67 could be used here. > > PM > > On Friday, 15 October 2021 at 14:02:10 UTC+2 [email protected] wrote: > >> Dear all, >> >> I still have issues figuring out how to have access to the component >> index when doing a MatrixFree implementation with complex values. I would >> really appreciate it if someone could help me. >> >> Thank you very much >> Regards, >> H >> >> El miércoles, 13 de octubre de 2021 a las 19:07:07 UTC+3, Hermes Sampedro >> escribió: >> >>> Good evening, >>> >>> I am implementing the problem presented in step-29 using a MatrixFree >>> approach as presented in step-37. >>> >>> I have few questions that I would like to ask regarding the >>> local_apply() function (shown in step-37): >>> >>> - I am confused about the way of having access to the different >>> complex components. In this case, as the double for loop (i, j) is >>> avoided, the condition >>> >>> *if(phi.system_to_component_index(i).first==phi.system_to_component_index(j).fsst) >>> * is >>> not longer valid. How can I include it in this particular case? >>> - In step-29 we had in the assemble_system(): *cell_matrix(i, j) >>> +=(((fe_values.shape_value(i, q_point) *fe_values.shape_value(j, >>> q_point)) >>> *(-omega * omega) +(fe_values.shape_grad(i, q_point) >>> *fe_values.shape_grad(j, q_point)) *c * c) *fe_values.JxW(q_point)); * >>> Is >>> it right to write it here as: >>> *(omega*omega)*phi.get_values(q)+phi.get_gradient(q)*(c*c)*phi.JxW(q);* >>> - The same has to be repeated for >>> >>> >>> [image: Captura de pantalla 2021-10-13 a las 18.54.55.png] >>> >>> Thank you very much >>> Regards, >>> H. >>> >> -- The deal.II project is located at http://www.dealii.org/ For mailing list/forum options, see https://groups.google.com/d/forum/dealii?hl=en --- You received this message because you are subscribed to the Google Groups "deal.II User Group" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/dealii/1a09964f-2421-49c2-ac5f-76bcdfb61888n%40googlegroups.com.
