This module gathers the definition of the analytical solution by scattering of an electromagnetic wave at a dielectric sphere/cylinder. The solution is given by means of Mie-series. The solution is given in: Cai, W., & Deng, S. (2003). An upwinding embedded boundary method for Maxwell's equations in media with material interfaces: 2D case. Journal of Computational Physics, 190(1), 159-183. doi:10.1016/S0021-9991(03)00269-9
load gauss pulse variables to set initial condition
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(flu_State) | :: | conf | lua state type |
|||
integer, | intent(in) | :: | thandle | aotus parent handle |
||
type(tem_miescatter_field_type), | intent(out) | :: | me | Global gauss pulse data type |
load gauss pulse variables to set initial condition
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(flu_State) | :: | conf | lua state type |
|||
integer, | intent(in) | :: | thandle | aotus parent handle |
||
type(tem_miescatter_field_type), | intent(out) | :: | me | Global gauss pulse data type |
load gauss pulse variables to set initial condition
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(flu_State) | :: | conf | lua state type |
|||
integer, | intent(in) | :: | thandle | aotus parent handle |
||
type(tem_miescatter_field_type), | intent(out) | :: | me | Global gauss pulse data type |
Parameters of the solution for Mie-Scatter at dielectric cylinder (infinite height in z direction).
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
type(tem_miescatter_type), | private | :: | miescatter | Parameter of the geometrical and material setup |
|||
type(tem_mieexpansion_type), | private | :: | mieexpansion | The expansion parameters for the scattered solution |
Parameters of the solution for Mie-Scatter at dielectric cylinder (infinite height in z direction)
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
real(kind=rk), | private | :: | center(2) | = | [0.0_rk, 0.0_rk] | The center of the cylinder (in the x-y plane) |
|
real(kind=rk), | private | :: | radius | = | 1.0_rk | The radius of the cylinder |
|
real(kind=rk), | private | :: | permeability_background | = | 1.0_rk | Permeability (mu) of the background. |
|
real(kind=rk), | private | :: | permitivity_background | = | 1.0_rk | Permitivity (epsilon) of the background. |
|
real(kind=rk), | private | :: | permeability_cylinder | = | 1.0_rk | Permeability (mu) of the cylinder. |
|
real(kind=rk), | private | :: | permitivity_cylinder | = | 1.0_rk | Permitivity (epsilon) of the cylinder. |
|
real(kind=rk), | private | :: | wavenumber_background | Wave number for the background |
|||
real(kind=rk), | private | :: | wavenumber_cylinder | Wave number for the cylinder |
|||
real(kind=rk), | private | :: | omega | = | 2.0_rk*PI*1.0_rk | Angular frequency ( = 2 * pi * f , where f is the original frequency in Hertz) |
Expansion data for the Mier scatter solution.
Type | Visibility | Attributes | Name | Initial | |||
---|---|---|---|---|---|---|---|
integer, | private | :: | nCoeffs | The number of expansion coefficients |
|||
complex(kind=rk), | private, | allocatable | :: | c_tot(:) | Expansion coefficients inside the cylinder |
||
complex(kind=rk), | private, | allocatable | :: | c_scat(:) | Expansion coefficients outside the cylinder (for the scattered field) |
Evaluate displacement field (z component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_miescatter_field_type), | intent(in) | :: | me | The function to evaluate |
||
real(kind=rk), | intent(in) | :: | coord(n,3) | barycentric Ids of an elements. 1st index goes over number of elements and 2nd index goes over x,y,z coordinates |
||
real(kind=rk), | intent(in) | :: | time | The time to evaluate the function at. |
||
integer, | intent(in) | :: | n | Number of points to evaluate the function for. |
return value of the function
Evaluate magnetic field (x-component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_miescatter_field_type), | intent(in) | :: | me | The function to evaluate |
||
real(kind=rk), | intent(in) | :: | coord(n,3) | barycentric Ids of an elements. 1st index goes over number of elements and 2nd index goes over x,y,z coordinates |
||
real(kind=rk), | intent(in) | :: | time | The time to evaluate the function at. |
||
integer, | intent(in) | :: | n | Number of points to evaluate the function for. |
return value of the function
Evaluate magnetic field (y-component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_miescatter_field_type), | intent(in) | :: | me | The function to evaluate |
||
real(kind=rk), | intent(in) | :: | coord(n,3) | barycentric Ids of an elements. 1st index goes over number of elements and 2nd index goes over x,y,z coordinates |
||
real(kind=rk), | intent(in) | :: | time | The time to evaluate the function at. |
||
integer, | intent(in) | :: | n | Number of points to evaluate the function for. |
return value of the function
Evaluate magnetizing field (angular-component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_miescatter_field_type), | intent(in) | :: | me | The function to evaluate |
||
real(kind=rk), | intent(in) | :: | coord(n,3) | barycentric Ids of an elements. 1st index goes over number of elements and 2nd index goes over x,y,z coordinates |
||
real(kind=rk), | intent(in) | :: | time | The time to evaluate the function at. |
||
integer, | intent(in) | :: | n | Number of points to evaluate the function for. |
return value of the function
Evaluate magnetizing field (radial-component) for Mie-Scattering of electromagnetic wave at dielectric cylinder.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(tem_miescatter_field_type), | intent(in) | :: | me | The function to evaluate |
||
real(kind=rk), | intent(in) | :: | coord(n,3) | barycentric Ids of an elements. 1st index goes over number of elements and 2nd index goes over x,y,z coordinates |
||
real(kind=rk), | intent(in) | :: | time | The time to evaluate the function at. |
||
integer, | intent(in) | :: | n | Number of points to evaluate the function for. |
return value of the function
Convert from cartesian coordinates (in the x-y plane) to polar coordinates (radius,angle)
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real(kind=rk) | :: | x | X coordinate |
|||
real(kind=rk) | :: | y | Y coordinate |
Polar coordinates, radius (first entry) and angle (second entry)
Compute derivative for Bessel function of first kind of order n.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer | :: | n | The order of the function. |
|||
real(kind=rk), | intent(in) | :: | x | The evaluation point. |
The function value.
Compute derivative for Hankel function of second kind of order n.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer | :: | n | The order of the function. |
|||
real(kind=rk), | intent(in) | :: | x | The evaluation point. |
The function value.
Compute Hankel function of second kind of order n.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
integer | :: | n | The order of the function. |
|||
real(kind=rk), | intent(in) | :: | x | The evaluation point. |
The function value.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(flu_State) | :: | conf | lua state type |
|||
integer, | intent(in) | :: | thandle | aotus parent handle |
The number of coefficients necessary for the Fourier series
load gauss pulse variables to set initial condition
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(flu_State) | :: | conf | lua state type |
|||
integer, | intent(in) | :: | thandle | aotus parent handle |
||
type(tem_miescatter_field_type), | intent(out) | :: | me | Global gauss pulse data type |
Init the expansion coefficients for the Mie-Scattering.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(flu_State) | :: | conf | lua state type |
|||
integer, | intent(in) | :: | thandle | aotus parent handle |
||
type(tem_miescatter_type), | intent(in) | :: | miescatter | The description of the Mie-Scattering setup. |
||
type(tem_mieexpansion_type), | intent(out) | :: | mieexpansion | The expansion coefficients to be filled |