92 logical :: pack_states
93 logical :: parallel_in_states = .false.
94 integer,
public :: nst
95 logical,
public :: packed
97 complex(real64),
allocatable :: rs_state_plane_waves(:,:)
98 complex(real64),
allocatable :: rs_state(:,:)
99 complex(real64),
allocatable :: rs_state_prev(:,:)
100 complex(real64),
allocatable :: rs_state_trans(:,:)
101 complex(real64),
allocatable :: rs_state_long(:,:)
102 complex(real64),
allocatable :: rs_current_density_t1(:,:)
103 complex(real64),
allocatable :: rs_current_density_t2(:,:)
105 logical :: rs_current_density_restart = .false.
106 complex(real64),
allocatable :: rs_current_density_restart_t1(:,:)
107 complex(real64),
allocatable :: rs_current_density_restart_t2(:,:)
109 type(batch_t) :: rs_stateb
110 type(batch_t) :: rs_state_prevb
111 type(batch_t) :: inhomogeneousb
112 type(batch_t) :: rs_state_plane_wavesb
114 real(real64),
allocatable :: ep(:)
115 real(real64),
allocatable :: mu(:)
117 integer,
allocatable :: rs_state_fft_map(:,:,:)
118 integer,
allocatable :: rs_state_fft_map_inv(:,:)
120 real(real64) :: energy_rate
121 real(real64) :: delta_energy
122 real(real64) :: energy_via_flux_calc
124 real(real64) :: trans_energy_rate
125 real(real64) :: trans_delta_energy
126 real(real64) :: trans_energy_via_flux_calc
128 real(real64) :: plane_waves_energy_rate
129 real(real64) :: plane_waves_delta_energy
130 real(real64) :: plane_waves_energy_via_flux_calc
132 real(real64) :: poynting_vector_box_surface(1:2,1:3,1:3) =
m_zero
133 real(real64) :: poynting_vector_box_surface_plane_waves(1:2,1:3,1:3) =
m_zero
134 real(real64) :: electric_field_box_surface(1:2,1:3,1:3) =
m_zero
135 real(real64) :: electric_field_box_surface_plane_waves(1:2,1:3,1:3) =
m_zero
136 real(real64) :: magnetic_field_box_surface(1:2,1:3,1:3) =
m_zero
137 real(real64) :: magnetic_field_box_surface_plane_waves(1:2,1:3,1:3) =
m_zero
139 logical :: rs_state_const_external = .false.
140 complex(real64),
allocatable :: rs_state_const(:)
141 complex(real64),
allocatable :: rs_state_const_amp(:,:)
142 type(tdf_t),
allocatable :: rs_state_const_td_function(:)
144 integer :: inner_points_number
145 integer,
allocatable :: inner_points_map(:)
146 logical,
allocatable :: inner_points_mask(:)
147 integer :: boundary_points_number
148 integer,
allocatable :: boundary_points_map(:)
149 logical,
allocatable :: boundary_points_mask(:)
150 type(accel_mem_t) :: buff_inner_points_map, buff_boundary_points_map
152 integer :: surface_points_number(3)
153 integer,
allocatable :: surface_points_map(:,:,:)
154 real(real64) :: surface_element(3)
156 integer :: surface_grid_rows_number(3)
157 integer,
allocatable :: surface_grid_points_number(:,:,:)
158 integer(int64),
allocatable :: surface_grid_points_map(:,:,:,:,:)
159 integer,
allocatable :: surface_grid_center(:,:,:,:)
160 real(real64) :: surface_grid_element(3)
162 type(mesh_plane_t) :: surface(2,3)
164 integer :: selected_points_number
165 real(real64),
allocatable :: selected_points_coordinate(:,:)
166 complex(real64),
allocatable :: selected_points_rs_state(:,:)
167 complex(real64),
allocatable :: selected_points_rs_state_long(:,:)
168 complex(real64),
allocatable :: selected_points_rs_state_trans(:,:)
169 integer,
allocatable :: selected_points_map(:)
170 type(accel_mem_t) :: buff_selected_points_map
171 real(real64) :: rs_state_trans_var
173 real(real64),
allocatable :: grid_rho(:,:)
174 complex(real64),
allocatable :: kappa_psi(:,:)
176 character(len=1024),
allocatable :: user_def_e_field(:)
177 character(len=1024),
allocatable :: user_def_b_field(:)
179 integer :: energy_incident_waves_calc_iter
180 logical :: energy_incident_waves_calc
183 integer :: external_current_number
184 integer,
allocatable :: external_current_modus(:)
185 character(len=1024),
allocatable :: external_current_string(:,:)
186 real(real64),
allocatable :: external_current_amplitude(:,:,:)
187 type(
tdf_t),
allocatable :: external_current_td_function(:)
188 type(
tdf_t),
allocatable :: external_current_td_phase(:)
189 real(real64),
allocatable :: external_current_omega(:)
190 real(real64),
allocatable :: external_current_phase(:)
193 character(len=1024),
allocatable :: user_def_states(:,:,:)
194 logical :: fromscratch = .
true.
203 logical :: scalapack_compatible
205 integer :: st_start, st_end
206 integer,
allocatable :: node(:)
209 integer :: transverse_field_mode
213 integer,
public,
parameter :: &
226 integer :: idim, nlines, ncols, il
227 real(real64),
allocatable :: pos(:)
228 integer :: ix_max, iy_max, iz_max
236 assert(space%dim == 3)
240 safe_allocate(st%user_def_e_field(1:st%dim))
241 safe_allocate(st%user_def_b_field(1:st%dim))
247 safe_allocate(st%node(1:st%nst))
248 st%node(1:st%nst) = 0
251 st%parallel_in_states = .false.
281 safe_allocate(pos(1:st%dim))
282 st%selected_points_number = 1
283 if (
parse_block(namespace,
'MaxwellFieldsCoordinate', blk) == 0)
then
285 st%selected_points_number = nlines
286 safe_allocate(st%selected_points_coordinate(1:st%dim,1:nlines))
287 safe_allocate(st%selected_points_rs_state(1:st%dim,1:nlines))
288 safe_allocate(st%selected_points_rs_state_long(1:st%dim,1:nlines))
289 safe_allocate(st%selected_points_rs_state_trans(1:st%dim,1:nlines))
290 safe_allocate(st%selected_points_map(1:nlines))
293 if (ncols < 3 .or. ncols > 3)
then
294 message(1) =
'MaxwellFieldCoordinate must have 3 columns.'
300 st%selected_points_coordinate(:,il) = pos
301 st%selected_points_rs_state(:,il) =
m_z0
302 st%selected_points_rs_state_long(:,il) =
m_z0
303 st%selected_points_rs_state_trans(:,il) =
m_z0
307 safe_allocate(st%selected_points_coordinate(1:st%dim, 1))
308 safe_allocate(st%selected_points_rs_state(1:st%dim, 1))
309 safe_allocate(st%selected_points_rs_state_long(1:st%dim, 1))
310 safe_allocate(st%selected_points_rs_state_trans(1:st%dim, 1))
311 safe_allocate(st%selected_points_map(1))
312 st%selected_points_coordinate(:,:) =
m_zero
313 st%selected_points_rs_state(:,:) =
m_z0
314 st%selected_points_rs_state_long(:,:) =
m_z0
315 st%selected_points_rs_state_trans(:,:) =
m_z0
316 st%selected_points_map(:) = -1
319 safe_deallocate_a(pos)
321 st%surface_grid_rows_number(1) = 3
322 ix_max = st%surface_grid_rows_number(1)
323 st%surface_grid_rows_number(2) = 3
324 iy_max = st%surface_grid_rows_number(2)
325 st%surface_grid_rows_number(3) = 3
326 iz_max = st%surface_grid_rows_number(3)
328 safe_allocate(st%surface_grid_center(1:2, 1:st%dim, 1:ix_max, 1:iy_max))
329 safe_allocate(st%surface_grid_points_number(1:st%dim, 1:ix_max, 1:iy_max))
343 st%transverse_field_mode)
355 class(
mesh_t),
intent(in) :: mesh
362 safe_allocate(st%rs_state(1:mesh%np_part, 1:st%dim))
363 st%rs_state(:,:) =
m_z0
365 safe_allocate(st%rs_state_prev(1:mesh%np_part, 1:st%dim))
366 st%rs_state_prev(:,:) =
m_z0
368 safe_allocate(st%rs_state_trans(1:mesh%np_part, 1:st%dim))
369 st%rs_state_trans(:,:) =
m_z0
371 safe_allocate(st%rs_state_long(1:mesh%np_part, 1:st%dim))
372 st%rs_state_long(:,:) =
m_z0
374 safe_allocate(st%rs_state_plane_waves(1:mesh%np_part, 1:st%dim))
375 st%rs_state_plane_waves(:,:) =
m_z0
377 safe_allocate(st%rs_current_density_t1(1:mesh%np, 1:st%dim))
378 st%rs_current_density_t1 =
m_z0
380 safe_allocate(st%rs_current_density_t2(1:mesh%np, 1:st%dim))
381 st%rs_current_density_t2 =
m_z0
383 safe_allocate(st%rs_current_density_restart_t1(1:mesh%np_part, 1:st%dim))
384 st%rs_current_density_restart_t1 =
m_z0
386 safe_allocate(st%rs_current_density_restart_t2(1:mesh%np_part, 1:st%dim))
387 st%rs_current_density_restart_t2 =
m_z0
389 safe_allocate(st%ep(1:mesh%np_part))
390 safe_allocate(st%mu(1:mesh%np_part))
408 safe_deallocate_a(st%rs_state)
409 safe_deallocate_a(st%rs_state_prev)
410 safe_deallocate_a(st%rs_state_trans)
411 safe_deallocate_a(st%selected_points_coordinate)
412 safe_deallocate_a(st%selected_points_rs_state)
413 safe_deallocate_a(st%selected_points_rs_state_long)
414 safe_deallocate_a(st%selected_points_rs_state_trans)
415 safe_deallocate_a(st%rs_current_density_t1)
416 safe_deallocate_a(st%rs_current_density_t2)
417 safe_deallocate_a(st%rs_state_long)
418 safe_deallocate_a(st%rs_current_density_restart_t1)
419 safe_deallocate_a(st%rs_current_density_restart_t2)
420 safe_deallocate_a(st%user_def_e_field)
421 safe_deallocate_a(st%user_def_b_field)
423 safe_deallocate_a(st%rs_state_const)
424 safe_deallocate_a(st%rs_state_const_td_function)
425 safe_deallocate_a(st%rs_state_const_amp)
426 safe_deallocate_a(st%rs_state_plane_waves)
428 safe_deallocate_a(st%surface_grid_center)
429 safe_deallocate_a(st%surface_grid_points_number)
430 safe_deallocate_a(st%surface_grid_points_map)
431 safe_deallocate_a(st%inner_points_map)
432 safe_deallocate_a(st%boundary_points_map)
433 safe_deallocate_a(st%inner_points_mask)
434 safe_deallocate_a(st%boundary_points_mask)
435 safe_deallocate_a(st%ep)
436 safe_deallocate_a(st%mu)
445 safe_deallocate_a(st%external_current_modus)
446 safe_deallocate_a(st%external_current_string)
447 safe_deallocate_a(st%external_current_amplitude)
448 safe_deallocate_a(st%external_current_td_function)
449 safe_deallocate_a(st%external_current_omega)
450 safe_deallocate_a(st%external_current_td_phase)
453 safe_deallocate_a(st%node)
462 subroutine build_rs_element(e_element, b_element, rs_sign, rs_element, ep_element, mu_element)
463 real(real64),
intent(in) :: e_element, b_element
464 complex(real64),
intent(inout) :: rs_element
465 integer,
intent(in) :: rs_sign
466 real(real64),
optional,
intent(in) :: ep_element
467 real(real64),
optional,
intent(in) :: mu_element
471 if (
present(ep_element) .and.
present(mu_element))
then
481 subroutine build_rs_vector(e_vector, b_vector, rs_sign, rs_vector, ep_element, mu_element)
482 real(real64),
intent(in) :: e_vector(:), b_vector(:)
483 complex(real64),
intent(inout) :: rs_vector(:)
484 integer,
intent(in) :: rs_sign
485 real(real64),
optional,
intent(in) :: ep_element
486 real(real64),
optional,
intent(in) :: mu_element
490 if (
present(ep_element) .and.
present(mu_element))
then
500 subroutine build_rs_state(e_field, b_field, rs_sign, rs_state, mesh, ep_field, mu_field, np)
501 real(real64),
intent(in) :: e_field(:,:), b_field(:,:)
502 complex(real64),
intent(inout) :: rs_state(:,:)
503 integer,
intent(in) :: rs_sign
504 class(
mesh_t),
intent(in) :: mesh
505 real(real64),
optional,
intent(in) :: ep_field(:)
506 real(real64),
optional,
intent(in) :: mu_field(:)
507 integer,
optional,
intent(in) :: np
518 if (
present(ep_field) .and.
present(mu_field))
then
519 rs_state(ip, :) =
sqrt(ep_field(ip)/
m_two) * e_field(ip, :) &
536 real(real64),
intent(in) :: current_element
537 complex(real64),
intent(inout) :: rs_current_element
538 real(real64),
optional,
intent(in) :: ep_element
542 if (
present(ep_element))
then
543 rs_current_element =
m_one/
sqrt(
m_two*ep_element) * current_element
553 real(real64),
intent(in) :: current_vector(:)
554 complex(real64),
intent(inout) :: rs_current_vector(:)
555 real(real64),
optional,
intent(in) :: ep_element
558 if (
present(ep_element))
then
569 real(real64),
intent(in) :: current_state(:,:)
570 class(
mesh_t),
intent(in) :: mesh
571 complex(real64),
intent(inout) :: rs_current_state(:,:)
572 real(real64),
optional,
intent(in) :: ep_field(:)
573 integer,
optional,
intent(in) :: np
575 integer :: ip, idim, np_, ff_dim
582 ff_dim =
size(current_state, dim=2)
584 if (
present(ep_field))
then
587 rs_current_state(ip, idim) =
m_one/
sqrt(
m_two*ep_field(ip)) * current_state(ip, idim)
605 complex(real64),
intent(in) :: rs_state_vector(:)
606 real(real64),
intent(out) :: electric_field_vector(:)
607 real(real64),
optional,
intent(in) :: ep_element
611 if (
present(ep_element))
then
612 electric_field_vector(:) =
sqrt(
m_two/ep_element) * real(rs_state_vector(:), real64)
614 electric_field_vector(:) =
sqrt(
m_two/
p_ep) * real(rs_state_vector(:), real64)
622 complex(real64),
intent(in) :: rs_state_vector(:)
623 integer,
intent(in) :: rs_sign
624 real(real64),
intent(out) :: magnetic_field_vector(:)
625 real(real64),
optional,
intent(in) :: mu_element
629 if (
present(mu_element))
then
630 magnetic_field_vector(:) =
sqrt(
m_two*mu_element) * rs_sign * aimag(rs_state_vector(:))
632 magnetic_field_vector(:) =
sqrt(
m_two*
p_mu) * rs_sign * aimag(rs_state_vector(:))
640 complex(real64),
intent(in) :: rs_state(:,:)
641 class(
mesh_t),
intent(in) :: mesh
642 real(real64),
intent(out) :: electric_field(:,:)
643 real(real64),
optional,
intent(in) :: ep_field(:)
644 integer,
optional,
intent(in) :: np
655 if (
present(ep_field))
then
656 electric_field(ip, :) =
sqrt(
m_two/ep_field(ip)) * real(rs_state(ip, :), real64)
658 electric_field(ip,:) =
sqrt(
m_two/
p_ep) * real(rs_state(ip, :), real64)
671 complex(real64),
intent(in) :: rs_state(:,:)
672 class(
mesh_t),
intent(in) :: mesh
673 integer,
intent(in) :: rs_sign
674 real(real64),
intent(out) :: magnetic_field(:,:)
675 real(real64),
optional,
intent(in) :: mu_field(:)
676 integer,
optional,
intent(in) :: np
686 if (
present(mu_field))
then
688 magnetic_field(ip, :) =
sqrt(
m_two*mu_field(ip)) * rs_sign * aimag(rs_state(ip, :))
692 magnetic_field(ip, :) =
sqrt(
m_two*
p_mu) * rs_sign * aimag(rs_state(ip, :))
704 complex(real64),
intent(in) :: rs_current_element
705 real(real64),
intent(inout) :: current_element
706 real(real64),
optional,
intent(in) :: ep_element
710 if (
present(ep_element))
then
711 current_element =
sqrt(
m_two*ep_element) * real(rs_current_element, real64)
713 current_element =
sqrt(
m_two*
p_ep) * real(rs_current_element, real64)
721 complex(real64),
intent(in) :: rs_current_vector(:)
722 real(real64),
intent(inout) :: current_vector(:)
723 real(real64),
optional,
intent(in) :: ep_element
727 if (
present(ep_element))
then
728 current_vector(:) =
sqrt(
m_two*ep_element) * real(rs_current_vector(:), real64)
730 current_vector(:) =
sqrt(
m_two*
p_ep) * real(rs_current_vector(:), real64)
737 subroutine get_current_state(rs_current_field, current_field, mesh, ep_field, np)
738 complex(real64),
intent(in) :: rs_current_field(:,:)
739 real(real64),
intent(inout) :: current_field(:,:)
740 real(real64),
optional,
intent(in) :: ep_field(:)
741 class(
mesh_t),
intent(in) :: mesh
742 integer,
optional,
intent(in) :: np
751 if (
present(ep_field))
then
752 current_field(ip, :) =
sqrt(
m_two*ep_field(ip)) * real(rs_current_field(ip, :), real64)
754 current_field(ip, :) =
sqrt(
m_two*
p_ep) * real(rs_current_field(ip, :), real64)
766 complex(real64),
intent(inout) :: rs_state_point(:,:)
767 complex(real64),
intent(in) :: rs_state(:,:)
768 real(real64),
intent(in) :: pos(:,:)
770 class(
mesh_t),
intent(in) :: mesh
772 integer :: ip, pos_index, rankmin
774 complex(real64),
allocatable :: ztmp(:)
778 safe_allocate(ztmp(1:
size(rs_state, dim=2)))
780 do ip = 1, st%selected_points_number
782 if (mesh%mpi_grp%rank == rankmin)
then
783 ztmp(:) = rs_state(pos_index, :)
785 if (mesh%parallel_in_domains)
then
786 call mesh%mpi_grp%bcast(ztmp, st%dim, mpi_double_complex, rankmin)
788 rs_state_point(:, ip) = ztmp(:)
791 safe_deallocate_a(ztmp)
800 complex(real64),
contiguous,
intent(inout) :: rs_state_point(:,:)
801 type(
batch_t),
intent(in) :: rs_stateb
803 class(
mesh_t),
intent(in) :: mesh
806 complex(real64) :: rs_state_tmp(1:st%dim, 1:st%selected_points_number)
809 integer(int64),
dimension(3) :: gsizes, bsizes
813 rs_state_tmp(:,:) =
m_z0
815 select case (rs_stateb%status())
817 do ip_in = 1, st%selected_points_number
818 ip = st%selected_points_map(ip_in)
820 rs_state_tmp(1:st%dim, ip_in) = rs_stateb%zff_linear(ip, 1:st%dim)
824 do ip_in = 1, st%selected_points_number
825 ip = st%selected_points_map(ip_in)
827 rs_state_tmp(1:st%dim, ip_in) = rs_stateb%zff_pack(1:st%dim, ip)
834 st%selected_points_number*st%dim)
846 gsizes, bsizes, kernel)
850 call accel_read_buffer(buff_points, st%dim, st%selected_points_number, rs_state_tmp)
854 call mesh%mpi_grp%allreduce(rs_state_tmp, rs_state_point, st%selected_points_number*st%dim, mpi_double_complex, mpi_sum)
861 type(
grid_t),
intent(in) :: gr
862 real(real64),
contiguous,
intent(inout) :: field(:,:)
863 real(real64),
contiguous,
intent(inout) :: field_div(:)
864 logical,
intent(in) :: charge_density
871 field_div =
p_ep * field_div
879 subroutine get_poynting_vector(mesh, st, rs_state, rs_sign, poynting_vector, ep_field, mu_field)
880 class(
mesh_t),
intent(in) :: mesh
882 complex(real64),
intent(in) :: rs_state(:,:)
883 integer,
intent(in) :: rs_sign
884 real(real64),
intent(out) :: poynting_vector(:,:)
885 real(real64),
optional,
intent(in) :: ep_field(:)
886 real(real64),
optional,
intent(in) :: mu_field(:)
891 if (
present(ep_field) .and.
present(mu_field))
then
893 poynting_vector(ip, 1:3) =
m_one/mu_field(ip) *
sqrt(
m_two/ep_field(ip)) &
896 rs_sign*aimag(rs_state(ip,1:3)))
900 poynting_vector(ip, 1:3) =
m_one/st%mu(ip) *
sqrt(
m_two/st%ep(ip)) &
903 rs_sign*aimag(rs_state(ip, 1:3)))
913 class(
mesh_t),
intent(in) :: mesh
915 integer,
intent(in) :: rs_sign
916 real(real64),
intent(out) :: poynting_vector(:,:)
925 rs_sign*aimag(st%rs_state_plane_waves(ip,:)))
934 type(
mesh_t),
intent(in) :: mesh
935 real(real64),
intent(in) :: poynting_vector(:,:)
936 real(real64),
intent(out) :: orbital_angular_momentum(:,:)
943 orbital_angular_momentum(ip,1:3) =
dcross_product(real(mesh%x(1:3, ip), real64) , &
944 poynting_vector(ip, 1:3))
952 type(
batch_t),
intent(inout) :: rs_stateb
953 complex(real64),
contiguous,
intent(in) :: rs_state(:, :)
954 integer,
intent(in) :: np
955 integer,
intent(in) :: dim
956 integer,
optional,
intent(in) :: offset
958 integer :: offset_, idir
964 do idir = offset_, offset_ + dim - 1
973 type(
batch_t),
intent(in) :: rs_stateb
974 complex(real64),
contiguous,
intent(out) :: rs_state(:, :)
975 integer,
intent(in) :: np
976 integer,
intent(in) :: dim
977 integer,
optional,
intent(in) :: offset
979 integer :: offset_, idir
985 do idir = offset_, offset_ + dim - 1
1003 select case (st%transverse_field_mode)
1005 call helmholtz%get_trans_field(namespace, st%rs_state_trans, total_field=st%rs_state)
1007 call helmholtz%get_long_field(namespace, st%rs_state_long, total_field=st%rs_state)
1008 st%rs_state_trans = st%rs_state - st%rs_state_long
1010 message(1) =
'Unknown transverse field calculation mode.'
There are several ways how to call batch_set_state and batch_get_state:
Prints out to iunit a message in the form: ["InputVariable" = value] where "InputVariable" is given b...
subroutine, public accel_free_buffer(this, async)
subroutine, public accel_kernel_start_call(this, file_name, kernel_name, flags)
integer, parameter, public accel_mem_read_write
pure logical function, public accel_is_enabled()
This module implements batches of mesh functions.
integer, parameter, public batch_not_packed
functions are stored in CPU memory, unpacked order
integer, parameter, public batch_device_packed
functions are stored in device memory in packed order
integer, parameter, public batch_packed
functions are stored in CPU memory, in transposed (packed) order
This module implements common operations on batches of mesh functions.
This module provides the BLACS processor grid.
subroutine, public blacs_proc_grid_end(this)
This module calculates the derivatives (gradients, Laplacians, etc.) of a function.
subroutine, public dderivatives_div(der, ff, op_ff, ghost_update, set_bc, to_cartesian)
apply the divergence operator to a vector of mesh functions
subroutine, public distributed_end(this)
real(real64), parameter, public m_two
real(real64), parameter, public m_zero
real(real64), parameter, public p_mu
real(real64), parameter, public p_ep
complex(real64), parameter, public m_z0
complex(real64), parameter, public m_zi
real(real64), parameter, public m_one
This module implements the underlying real-space grid.
The Helmholtz decomposition is intended to contain "only mathematical" functions and procedures to co...
This module is intended to contain "only mathematical" functions and procedures.
pure real(real64) function, dimension(1:3), public dcross_product(a, b)
This module defines various routines, operating on mesh functions.
This module defines the meshes, which are used in Octopus.
integer function, public mesh_nearest_point(mesh, pos, dmin, rankmin)
Returns the index of the point which is nearest to a given vector position pos.
character(len=256), dimension(max_lines), public message
to be output by fatal, warning
subroutine, public messages_fatal(no_lines, only_root_writes, namespace)
type(mpi_comm), parameter, public mpi_comm_undefined
used to indicate a communicator has not been initialized
subroutine mpi_grp_init(grp, comm)
Initialize MPI group instance.
This module handles the communicators for the various parallelization strategies.
integer function, public parse_block(namespace, name, blk, check_varinfo_)
subroutine, public profiling_out(label)
Increment out counter and sum up difference between entry and exit time.
subroutine, public profiling_in(label, exclude)
Increment in counter and save entry time.
This module handles spin dimensions of the states and the k-point distribution.
This module handles groups of electronic batches and their parallel distribution.
subroutine, public get_poynting_vector_plane_waves(mesh, st, rs_sign, poynting_vector)
subroutine, public mxll_set_batch(rs_stateb, rs_state, np, dim, offset)
subroutine, public get_orbital_angular_momentum(mesh, poynting_vector, orbital_angular_momentum)
integer, parameter, public transverse_from_helmholtz
subroutine, public get_rs_state_at_point(rs_state_point, rs_state, pos, st, mesh)
subroutine, public get_electric_field_vector(rs_state_vector, electric_field_vector, ep_element)
subroutine, public get_current_vector(rs_current_vector, current_vector, ep_element)
subroutine, public build_rs_vector(e_vector, b_vector, rs_sign, rs_vector, ep_element, mu_element)
subroutine, public get_transverse_rs_state(helmholtz, st, namespace)
subroutine, public build_rs_current_element(current_element, rs_current_element, ep_element)
subroutine, public mxll_get_batch(rs_stateb, rs_state, np, dim, offset)
subroutine, public get_rs_state_batch_selected_points(rs_state_point, rs_stateb, st, mesh)
subroutine, public states_mxll_end(st)
subroutine, public states_mxll_allocate(st, mesh)
Allocates the Maxwell states defined within a states_mxll_t structure.
subroutine, public build_rs_element(e_element, b_element, rs_sign, rs_element, ep_element, mu_element)
subroutine, public build_rs_current_state(current_state, mesh, rs_current_state, ep_field, np)
integer, parameter, public transverse_as_total_minus_long
subroutine, public build_rs_state(e_field, b_field, rs_sign, rs_state, mesh, ep_field, mu_field, np)
subroutine, public states_mxll_init(st, namespace, space)
subroutine, public get_current_element(rs_current_element, current_element, ep_element)
subroutine, public get_current_state(rs_current_field, current_field, mesh, ep_field, np)
subroutine, public get_electric_field_state(rs_state, mesh, electric_field, ep_field, np)
subroutine, public build_rs_current_vector(current_vector, rs_current_vector, ep_element)
subroutine, public get_poynting_vector(mesh, st, rs_state, rs_sign, poynting_vector, ep_field, mu_field)
subroutine, public get_divergence_field(gr, field, field_div, charge_density)
subroutine, public get_magnetic_field_state(rs_state, mesh, rs_sign, magnetic_field, mu_field, np)
subroutine, public get_magnetic_field_vector(rs_state_vector, rs_sign, magnetic_field_vector, mu_element)
type(type_t), public type_cmplx
type(type_t), public type_integer
brief This module defines the class unit_t which is used by the unit_systems_oct_m module.
This module defines the unit system, used for input and output.
type(unit_system_t), public units_inp
the units systems for reading and writing
Class defining batches of mesh functions.
Distribution of N instances over mpi_grpsize processes, for the local rank mpi_grprank....
Description of the grid, containing information on derivatives, stencil, and symmetries.
Describes mesh distribution to nodes.
This is defined even when running serial.