Hi everyone,

I would like to ask a question about the assembling using the getfem
generic_assembly procedure.
In the getfem_assembling.h file, on the Helmholtz equation case, the real
and the complex case are dissociate, there are:

- For the complex case:

template<typename MATr, typename MATi, typename VECTr, typename VECTi>
void asm_Helmholtz_cplx(const MATr &Mr, const MATi &Mi, const mesh_im &mim,
     const mesh_fem &mf_u, const mesh_fem &mf_data,
     const VECTr &K_squaredr, const VECTi &K_squaredi,
     const mesh_region &rg=mesh_region::all_convexes()) {
   generic_assembly assem("Kr=data$1(#2); Ki=data$2(#2);"
               "m = comp(Base(#1).Base(#1).Base(#2)); "
               "M$1(#1,#1)+=sym(m(:,:,i).Kr(i) - "
               "comp(Grad(#1).Grad(#1))(:,i,:,i));"
               "M$2(#1,#1)+=sym(m(:,:,i).Ki(i));");
   assem.push_mi(mim);
   assem.push_mf(mf_u);
   assem.push_mf(mf_data);
   assem.push_data(K_squaredr);
   assem.push_data(K_squaredi);
   assem.push_mat(const_cast<MATr&>(Mr));
   assem.push_mat(const_cast<MATi&>(Mi));
   assem.assembly(rg);
}

- For the real case:

template<typename MAT, typename VECT>
void asm_Helmholtz_real(const MAT &M, const mesh_im &mim,
     const mesh_fem &mf_u, const mesh_fem &mf_data,
     const VECT &K_squared,
     const mesh_region &rg=mesh_region::all_convexes()) {
  generic_assembly assem("K=data$1(#2);"
               "m = comp(Base(#1).Base(#1).Base(#2)); "
               "M$1(#1,#1)+=sym(m(:,:,i).K(i) - "
               "comp(Grad(#1).Grad(#1))(:,i,:,i));");
  assem.push_mi(mim);
  assem.push_mf(mf_u);
  assem.push_mf(mf_data);
  assem.push_data(K_squared);
  assem.push_mat(const_cast<MAT&>(M));
  assem.assembly(rg);
}

Does that mean that we cannot use directly a vector of complex
(interleaved real and imaginary part) and that we have to split it in
two vectors of real?

Thanks for your help.

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

Reply via email to