#include "sll_fftw.h"
#include "sll_memory.h"
#include "sll_working_precision.h"
#include "sll_maxwell_solvers_macros.h"
Go to the source code of this file.
|
module | sll_m_maxwell_3d_pstd |
| Implements the Maxwell solver in 3D with periodic boundary conditions with PSTD method.
|
|
|
subroutine | sll_s_maxwell_3d_pstd_init (self, xmin, xmax, nc_x, ymin, ymax, nc_y, zmin, zmax, nc_z) |
| Initialize 3d maxwell solver on cartesian mesh with PSTD scheme. More...
|
|
subroutine | sll_s_maxwell_3d_pstd_faraday (self, ex, ey, ez, hx, hy, hz, dt) |
| Solve faraday equation (hx,hy,ez) More...
|
|
subroutine | sll_s_maxwell_3d_pstd_ampere (self, hx, hy, hz, ex, ey, ez, dt, jx, jy, jz) |
| Solve ampere maxwell equation (hx,hy,ez) More...
|
|
subroutine | sll_s_maxwell_3d_pstd_free (self) |
| delete maxwell solver object More...
|
|
◆ sll_m_maxwell_3d_pstd::sll_t_maxwell_3d_pstd
type sll_m_maxwell_3d_pstd::sll_t_maxwell_3d_pstd |
Maxwell solver object.
Definition at line 78 of file sll_m_maxwell_3d_pstd.F90.
Class Members |
type(sll_t_fft) |
bwx |
backward fft plan along x |
type(sll_t_fft) |
bwy |
backward fft plan along y |
type(sll_t_fft) |
bwz |
backward fft plan along y |
real(kind=f64), dimension(:), pointer |
d_dx |
field x derivative |
real(kind=f64), dimension(:), pointer |
d_dy |
field y derivative |
real(kind=f64), dimension(:), pointer |
d_dz |
field y derivative |
real(kind=f64) |
e_0 |
electric conductivity |
type(sll_t_fft) |
fwx |
forward fft plan along x |
type(sll_t_fft) |
fwy |
forward fft plan along y |
type(sll_t_fft) |
fwz |
forward fft plan along y |
real(kind=f64), dimension(:), pointer |
kx |
x wave number |
real(kind=f64), dimension(:), pointer |
ky |
y wave number |
real(kind=f64), dimension(:), pointer |
kz |
z wave number |
real(kind=f64) |
mu_0 |
magnetic permeability |
integer(kind=i32) |
nc_x |
x cells number |
integer(kind=i32) |
nc_y |
y cells number |
integer(kind=i32) |
nc_z |
z cells number |
integer(kind=i32) |
polarization |
TE or TM. |
complex(kind=f64), dimension(:), pointer |
tmp_x |
x fft transform |
complex(kind=f64), dimension(:), pointer |
tmp_y |
y fft transform |
complex(kind=f64), dimension(:), pointer |
tmp_z |
y fft transform |
◆ D_DX
Value:
2 call sll_s_fft_exec_r2c_1d(self%fwx, self%d_dx, self%tmp_x); \
3 self%tmp_x(2:nc_x/2 + 1) = -cmplx(0.0_f64, self%kx(2:nc_x/2 + 1), kind=f64)*self%tmp_x(2:nc_x/2 + 1); \
4 call sll_s_fft_exec_c2r_1d(self%bwx, self%tmp_x, self%d_dx); \
5 self%d_dx = self%d_dx/nc_x
◆ D_DY
Value:
2 call sll_s_fft_exec_r2c_1d(self%fwy, self%d_dy, self%tmp_y); \
3 self%tmp_y(2:nc_y/2 + 1) = -cmplx(0.0_f64, self%ky(2:nc_y/2 + 1), kind=f64)*self%tmp_y(2:nc_y/2 + 1); \
4 call sll_s_fft_exec_c2r_1d(self%bwy, self%tmp_y, self%d_dy); \
5 self%d_dy = self%d_dy/nc_y
◆ D_DZ
Value:
2 call sll_s_fft_exec_r2c_1d(self%fwz, self%d_dz, self%tmp_z); \
3 self%tmp_z(2:nc_z/2 + 1) = -cmplx(0.0_f64, self%kz(2:nc_z/2 + 1), kind=f64)*self%tmp_z(2:nc_z/2 + 1); \
4 call sll_s_fft_exec_c2r_1d(self%bwz, self%tmp_z, self%d_dz); \
5 self%d_dz = self%d_dz/nc_z