Dear Johnathan,

When using finite element, you are solving the governing equation (in your 
case, the Maxwell equation) using a weak formulation. 
The discretisation of the unknown field injected into the weak formulation 
leads to an algebraical system. It seems to me that you're not using a weak 
formulation.
The weak formulation for maxwell problem is:
" find E in H(curl) such as for any E' in H(curl)
\int_\Omega -omega/c^2 E.E' + curlE curlE' dx=0 "

the first part correspond to the "mass matrix" M, the second to the "stiffness 
matrix" K
you get the mode by taking the eigen vector of (M^-1 K).

I have the following code, but unfortunatelly the stiffness matrix doesn't 
work. I am still trying to find out why.

mf = gf_mesh_fem(m,3);
gf_mesh_fem_set(mf,'fem',gf_fem('FEM_NEDELEC(3)'));
mim=gfMeshIm(m,gf_integ('IM_TETRAHEDRON(8)'));
M=gf_asm('volumic','M(#1,#1)+=comp(vBase(#1).vBase(#1))(:,k,:,k)', mim,mf);

K=gf_asm('volumic','M(#1,#1)+=comp(vGrad(#1).vGrad(#1))(:,2,3,:,2,3)+comp(vGrad(#1).vGrad(#1))(:,3,2,:,3,2)-comp(vGrad(#1).vGrad(#1))(:,2,3,:,3,2)-comp(vGrad(#1).vGrad(#1))(:,3,2,:,2,3)+comp(vGrad(#1).vGrad(#1))(:,3,1,:,3,1)+comp(vGrad(#1).vGrad(#1))(:,1,3,:,1,3)-comp(vGrad(#1).vGrad(#1))(:,3,1,:,1,3)-comp(vGrad(#1).vGrad(#1))(:,1,3,:,3,1)+comp(vGrad(#1).vGrad(#1))(:,1,2,:,1,2)+comp(vGrad(#1).vGrad(#1))(:,2,1,:,2,1)-comp(vGrad(#1).vGrad(#1))(:,1,2,:,2,1)-comp(vGrad(#1).vGrad(#1))(:,2,1,:,1,2)',
 mim,mf);

I hope it will help you.

Best Regards

Louis Kovalevsky


On 1 Dec 2013, at 10:18, Jonathan Yik <[email protected]> wrote:

> Hello,
> 
> I have been trying to calculate the eigenmodes of light travelling through a 
> dielectric waveguide.  To do this, I have been using the assembly tools for 
> arbitrary matrices.  However, when I attempt to solve for eigenvectors of the 
> stiffness matrix using ARPACK, I do not get sensible results.
> 
> I have been attempting to generate matrices for the Maxwell Wave equation 
> using:
> 
> Del^2 Psi - (omega^2 / c^2 ) Psi 
> 
> For the first term, I simply use the laplacian given in the getfem 
> documentation:  M(#1, #1)+=comp(Grad(#1).Grad(#1))(:,k,:,k).  However, I am 
> unsure as to how I should generate the second term.  However, I am not sure 
> how to generate the second term in the equation.  Previously, I have used: 
> (comp(Base(#1).Base(#1).Base(#2))(:,:,j).h(j)).  Another technique I have 
> considered was to take the vector generated by interpolating the data set 
> representing (omega^2 / c^2 ), converting the elements of the vector to 
> elements of a diagonal matrix, and simply adding the result to the matrix of 
> the first term.  Could anyone tell me if either of these approaches is 
> correct, or if the correct procedure is some method that I have not yet 
> thought of?
> 
> Yours,
> 
> Johnathan Yik
> _______________________________________________
> Getfem-users mailing list
> [email protected]
> https://mail.gna.org/listinfo/getfem-users

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

Reply via email to