Appearance
adam_prism_fnl_pic_object
ADAM, PRISM Particle-in-Cell definition, FNL backend.
Source: src/app/prism/fnl/adam_prism_fnl_pic_object.F90
Dependencies
Contents
- prism_fnl_pic_object
- particle_cartesian_grid_index_interface_dev
- particle_weighting_interface_dev
- current_weighting_interface_dev
- field_weighting_interface_dev
- destroy
- copy_cpu_gpu
- copy_gpu_cpu
- copy_q_pic_gpu_cpu
- initialize
- migrate_particles_dev
- particle_cartesian_grid_index_dev_impl
- NGP_charge_weighting_dev
- CIC_charge_weighting_dev
- TSC_charge_weighting_dev
- cubic_charge_weighting_dev
- quartic_charge_weighting_dev
- quintic_charge_weighting_dev
- sextic_charge_weighting_dev
- Gaussian_charge_weighting_dev
- NGP_current_weighting_dev
- CIC_current_weighting_dev
- TSC_current_weighting_dev
- cubic_current_weighting_dev
- quartic_current_weighting_dev
- quintic_current_weighting_dev
- sextic_current_weighting_dev
- Gaussian_current_weighting_dev
- zeroD_field_weighting_dev
- oneD_field_weighting_dev
- twoD_field_weighting_dev
- threeD_field_weighting_dev
- fourD_field_weighting_dev
- fiveD_field_weighting_dev
- sixD_field_weighting_dev
- Gaussian_field_weighting_dev
- deposit_bspline_charge_dev
- deposit_gaussian_charge_dev
- deposit_bspline_current_dev
- deposit_gaussian_current_dev
- gather_bspline_fields_dev
- gather_gaussian_fields_dev
- bspline_closed_weights_dev
- set_bspline_stencil_dev
- effective_bspline_weight_dev
- gaussian_weight_dev
- effective_gaussian_weight_dev
- bspline_weight_dev
Variables
| Name | Type | Attributes | Description |
|---|---|---|---|
PIC_VARIABLES_NUMBER | integer(kind=I4P) | parameter | |
PIC_FIELDS_NUMBER | integer(kind=I4P) | parameter | |
PIC_NEIGHBOURS_NUMBER | integer(kind=I4P) | parameter |
Derived Types
prism_fnl_pic_object
Components
| Name | Type | Attributes | Description |
|---|---|---|---|
q_pic_gpu | real(kind=R8P) | pointer | PIC variables on device [particle, variable]. |
pic_fields_gpu | real(kind=R8P) | pointer | Fields at particle locations on device [particle, field]. |
neighbour_list_gpu | integer(kind=I4P) | pointer | Particle-cell map on device [particle, entry]. |
db2_q_pic | integer(kind=I4P) | Device bounds for q_pic_gpu. | |
hb2_q_pic | integer(kind=I4P) | Host bounds for q_pic. | |
db2_pic_fields | integer(kind=I4P) | Device bounds for pic_fields_gpu. | |
hb2_pic_fields | integer(kind=I4P) | Host bounds for pic_fields. | |
db2_neighbour_list | integer(kind=I4P) | Device bounds for neighbour_list_gpu. | |
hb2_neighbour_list | integer(kind=I4P) | Host bounds for neighbour_list. | |
buf_q_pic_R8P | real(kind=R8P) | allocatable | Host buffer with device layout for q_pic copies. |
buf_pic_fields_R8P | real(kind=R8P) | allocatable | Host buffer with device layout for pic_fields copies. |
buf_neighbour_list_I4P | integer(kind=I4P) | allocatable | Host buffer with device layout for neighbour_list copies. |
mig_index_gpu | integer(kind=I4P) | pointer | Migration: ownership flags, then indexes [capacity*2]. |
mig_buffer_gpu | real(kind=R8P) | pointer | Migration: packed particles [capacity*variables]. |
sigma | real(kind=R8P) | Standard deviation for Gaussian weighting. | |
cutoff_sigma | real(kind=R8P) | Gaussian cutoff radius in sigma units. | |
gaussian_support_cells | integer(kind=I4P) | Gaussian compact support radius in cells. | |
filter_deposition | logical | Apply binomial filtering to particle weighting. | |
stencil_radius | integer(kind=I4P) | Max cells reached by deposit/gather stencils (multi-block check). | |
particle_number | integer(kind=I4P) | Total number of particles. | |
n_ions | integer(kind=I4P) | Total ions number. | |
n_electrons | integer(kind=I4P) | Total electrons number. | |
n_neutrals | integer(kind=I4P) | Total neutrals number. | |
particle_cartesian_grid_index_dev | procedure(particle_cartesian_grid_index_interface_dev) | pass(self), pointer | |
particle_weighting_dev | procedure(particle_weighting_interface_dev) | pass(self), pointer | |
current_weighting_dev | procedure(current_weighting_interface_dev) | pass(self), pointer | |
field_weighting_dev | procedure(field_weighting_interface_dev) | pass(self), pointer |
Type-Bound Procedures
| Name | Attributes | Description |
|---|---|---|
copy_cpu_gpu | pass(self) | |
copy_gpu_cpu | pass(self) | |
copy_q_pic_gpu_cpu | pass(self) | |
destroy | pass(self) | |
initialize | pass(self) | |
migrate_particles_dev | pass(self) | |
particle_cartesian_grid_index_dev_impl | pass(self) | |
NGP_charge_weighting_dev | pass(self) | |
CIC_charge_weighting_dev | pass(self) | |
TSC_charge_weighting_dev | pass(self) | |
cubic_charge_weighting_dev | pass(self) | |
quartic_charge_weighting_dev | pass(self) | |
quintic_charge_weighting_dev | pass(self) | |
sextic_charge_weighting_dev | pass(self) | |
Gaussian_charge_weighting_dev | pass(self) | |
NGP_current_weighting_dev | pass(self) | |
CIC_current_weighting_dev | pass(self) | |
TSC_current_weighting_dev | pass(self) | |
cubic_current_weighting_dev | pass(self) | |
quartic_current_weighting_dev | pass(self) | |
quintic_current_weighting_dev | pass(self) | |
sextic_current_weighting_dev | pass(self) | |
Gaussian_current_weighting_dev | pass(self) | |
zeroD_field_weighting_dev | pass(self) | |
oneD_field_weighting_dev | pass(self) | |
twoD_field_weighting_dev | pass(self) | |
threeD_field_weighting_dev | pass(self) | |
fourD_field_weighting_dev | pass(self) | |
fiveD_field_weighting_dev | pass(self) | |
sixD_field_weighting_dev | pass(self) | |
Gaussian_field_weighting_dev | pass(self) |
Interfaces
particle_cartesian_grid_index_interface_dev
particle_weighting_interface_dev
current_weighting_interface_dev
field_weighting_interface_dev
Subroutines
destroy
Free device and host staging data owned by this object.
fortran
subroutine destroy(self)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | PIC object on device. |
Call graph
copy_cpu_gpu
Copy PIC data from CPU to GPU.
fortran
subroutine copy_cpu_gpu(self, pic, q_pic, pic_fields, verbose)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | PIC object on device. | |
pic | class(prism_pic_object) | in | PIC object on host. | |
q_pic | real(kind=R8P) | in | target | PIC variables on host. |
pic_fields | real(kind=R8P) | in | target | Fields at particle locations on host. |
verbose | logical | in | optional | Trigger verbose output. |
Call graph
copy_gpu_cpu
Copy PIC data from GPU to CPU.
fortran
subroutine copy_gpu_cpu(self, pic, q_pic, pic_fields, verbose)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | PIC object on device. | |
pic | class(prism_pic_object) | inout | PIC object on host. | |
q_pic | real(kind=R8P) | inout | target | PIC variables on host. |
pic_fields | real(kind=R8P) | inout | target | Fields at particle locations on host. |
verbose | logical | in | optional | Trigger verbose output. |
Call graph
copy_q_pic_gpu_cpu
Copy only PIC particle state from GPU to CPU.
fortran
subroutine copy_q_pic_gpu_cpu(self, q_pic, verbose)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | PIC object on device. | |
q_pic | real(kind=R8P) | inout | target | PIC variables on host. |
verbose | logical | in | optional | Trigger verbose output. |
Call graph
initialize
Initialize PIC device mirrors and dispatch hooks.
fortran
subroutine initialize(self, pic, q_pic, pic_fields)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | PIC object on device. | |
pic | type(prism_pic_object) | in | PIC object on host. | |
q_pic | real(kind=R8P) | in | target | PIC variables on host. |
pic_fields | real(kind=R8P) | in | target | Fields at particle locations on host. |
Call graph
migrate_particles_dev
Hand the particles that left the local blocks to the owner ranks (end of a time step). Device twin of prism_pic_object%migrate_particles: the ownership flags and the compaction indexes go through the host (deterministic order), the particles are packed, moved and appended on the device; the departing ones travel through the host (prism_pic_object%exchange_particles, MPI_Allgatherv). The host pic%particle_number is updated as well. Collective; with one rank it is a no-op.
fortran
subroutine migrate_particles_dev(self, pic, field_fnl, field, grid)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | PIC object on device. | |
pic | type(prism_pic_object) | inout | PIC object on host. | |
field_fnl | type(field_fnl_object) | in | Device field helper. | |
field | type(field_object) | in | Host field helper. | |
grid | type(grid_object) | in | Host grid helper. |
Call graph
particle_cartesian_grid_index_dev_impl
Compute the grid index corresponding to a particle position. Good for cartesian grids only. CPU twin: prism_pic_object%particle_cartesian_grid_index (ownership first, then the ghost halo of a local block within halo_margin cells; owned_only skips the halo search and leaves non-owned particles with a zero row, without errors).
fortran
subroutine particle_cartesian_grid_index_dev_impl(self, field_fnl, field, grid, q_pic_gpu, owned_only)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | PIC object on device. | |
field_fnl | type(field_fnl_object) | in | Device field helper. | |
field | type(field_object) | in | Host field helper. | |
grid | type(grid_object) | in | Host grid helper. | |
q_pic_gpu | real(kind=R8P) | in | PIC variables on device. | |
owned_only | logical | in | optional | Locate owned particles only, no halo search. |
Call graph
NGP_charge_weighting_dev
Nearest Grid Point weighting of particle charge density to the grid.
fortran
subroutine NGP_charge_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | PIC object on device. | |
field_fnl | type(field_fnl_object) | in | Device field helper. | |
field | type(field_object) | in | Host field helper. | |
grid | type(grid_object) | in | Host grid helper. | |
q_gpu | real(kind=R8P) | inout | Field variables on device. | |
q_pic_gpu | real(kind=R8P) | in | PIC variables on device. | |
nv | integer(kind=I4P) | in | Charge variable index. |
Call graph
CIC_charge_weighting_dev
Cloud-in-Cell weighting of particle charge density to the grid.
fortran
subroutine CIC_charge_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
TSC_charge_weighting_dev
Triangular-Shaped-Cloud weighting of particle charge density to the grid.
fortran
subroutine TSC_charge_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
cubic_charge_weighting_dev
Cubic B-spline weighting of particle charge density to the grid.
fortran
subroutine cubic_charge_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
quartic_charge_weighting_dev
Quartic B-spline weighting of particle charge density to the grid.
fortran
subroutine quartic_charge_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
quintic_charge_weighting_dev
Quintic B-spline weighting of particle charge density to the grid.
fortran
subroutine quintic_charge_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
sextic_charge_weighting_dev
Sextic B-spline weighting of particle charge density to the grid.
fortran
subroutine sextic_charge_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
Gaussian_charge_weighting_dev
Gaussian weighting of particle charge density to the grid.
fortran
subroutine Gaussian_charge_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
NGP_current_weighting_dev
Nearest Grid Point weighting of particle current density to the grid.
fortran
subroutine NGP_current_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
CIC_current_weighting_dev
Cloud-in-Cell weighting of particle current density to the grid.
fortran
subroutine CIC_current_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
TSC_current_weighting_dev
Triangular-Shaped-Cloud weighting of particle current density to the grid.
fortran
subroutine TSC_current_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
cubic_current_weighting_dev
Cubic B-spline weighting of particle current density to the grid.
fortran
subroutine cubic_current_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
quartic_current_weighting_dev
Quartic B-spline weighting of particle current density to the grid.
fortran
subroutine quartic_current_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
quintic_current_weighting_dev
Quintic B-spline weighting of particle current density to the grid.
fortran
subroutine quintic_current_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
sextic_current_weighting_dev
Sextic B-spline weighting of particle current density to the grid.
fortran
subroutine sextic_current_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
Gaussian_current_weighting_dev
Gaussian weighting of particle current density to the grid.
fortran
subroutine Gaussian_current_weighting_dev(self, field_fnl, field, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
zeroD_field_weighting_dev
Zeroth-order spatial interpolation of cell-centered fields to particle locations.
fortran
subroutine zeroD_field_weighting_dev(self, field_fnl, field, grid, pic_fields_gpu, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
pic_fields_gpu | real(kind=R8P) | inout | ||
q_gpu | real(kind=R8P) | in | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
oneD_field_weighting_dev
First-order spatial interpolation of cell-centered fields to particle locations.
fortran
subroutine oneD_field_weighting_dev(self, field_fnl, field, grid, pic_fields_gpu, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
pic_fields_gpu | real(kind=R8P) | inout | ||
q_gpu | real(kind=R8P) | in | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
twoD_field_weighting_dev
Second-order spatial interpolation of cell-centered fields to particle locations.
fortran
subroutine twoD_field_weighting_dev(self, field_fnl, field, grid, pic_fields_gpu, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
pic_fields_gpu | real(kind=R8P) | inout | ||
q_gpu | real(kind=R8P) | in | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
threeD_field_weighting_dev
Third-order spatial interpolation of cell-centered fields to particle locations.
fortran
subroutine threeD_field_weighting_dev(self, field_fnl, field, grid, pic_fields_gpu, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
pic_fields_gpu | real(kind=R8P) | inout | ||
q_gpu | real(kind=R8P) | in | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
fourD_field_weighting_dev
Fourth-order spatial interpolation of cell-centered fields to particle locations.
fortran
subroutine fourD_field_weighting_dev(self, field_fnl, field, grid, pic_fields_gpu, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
pic_fields_gpu | real(kind=R8P) | inout | ||
q_gpu | real(kind=R8P) | in | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
fiveD_field_weighting_dev
Fifth-order spatial interpolation of cell-centered fields to particle locations.
fortran
subroutine fiveD_field_weighting_dev(self, field_fnl, field, grid, pic_fields_gpu, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
pic_fields_gpu | real(kind=R8P) | inout | ||
q_gpu | real(kind=R8P) | in | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
sixD_field_weighting_dev
Sixth-order spatial interpolation of cell-centered fields to particle locations.
fortran
subroutine sixD_field_weighting_dev(self, field_fnl, field, grid, pic_fields_gpu, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
pic_fields_gpu | real(kind=R8P) | inout | ||
q_gpu | real(kind=R8P) | in | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
Gaussian_field_weighting_dev
Gaussian interpolation of cell-centered fields to particle locations.
fortran
subroutine Gaussian_field_weighting_dev(self, field_fnl, field, grid, pic_fields_gpu, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | inout | ||
field_fnl | type(field_fnl_object) | in | ||
field | type(field_object) | in | ||
grid | type(grid_object) | in | ||
pic_fields_gpu | real(kind=R8P) | inout | ||
q_gpu | real(kind=R8P) | in | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
deposit_bspline_charge_dev
Deposit particle charge density with centered cardinal B-splines.
fortran
subroutine deposit_bspline_charge_dev(self, field_fnl, grid, q_gpu, q_pic_gpu, nv, order)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | in | ||
field_fnl | type(field_fnl_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in | ||
order | integer(kind=I4P) | in |
Call graph
deposit_gaussian_charge_dev
Deposit particle charge density with Gaussian support.
fortran
subroutine deposit_gaussian_charge_dev(self, field_fnl, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | in | ||
field_fnl | type(field_fnl_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
deposit_bspline_current_dev
Deposit particle current density with centered cardinal B-splines.
fortran
subroutine deposit_bspline_current_dev(self, field_fnl, grid, q_gpu, q_pic_gpu, nv, order)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | in | ||
field_fnl | type(field_fnl_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in | ||
order | integer(kind=I4P) | in |
Call graph
deposit_gaussian_current_dev
Deposit particle current density with Gaussian support.
fortran
subroutine deposit_gaussian_current_dev(self, field_fnl, grid, q_gpu, q_pic_gpu, nv)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | in | ||
field_fnl | type(field_fnl_object) | in | ||
grid | type(grid_object) | in | ||
q_gpu | real(kind=R8P) | inout | ||
q_pic_gpu | real(kind=R8P) | in | ||
nv | integer(kind=I4P) | in |
Call graph
gather_bspline_fields_dev
Gather cell-centered fields at particle locations with centered cardinal B-splines.
fortran
subroutine gather_bspline_fields_dev(self, field_fnl, grid, pic_fields_gpu, q_gpu, q_pic_gpu, order)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | in | ||
field_fnl | type(field_fnl_object) | in | ||
grid | type(grid_object) | in | ||
pic_fields_gpu | real(kind=R8P) | inout | ||
q_gpu | real(kind=R8P) | in | ||
q_pic_gpu | real(kind=R8P) | in | ||
order | integer(kind=I4P) | in |
Call graph
gather_gaussian_fields_dev
Gather cell-centered fields at particle locations with Gaussian support.
fortran
subroutine gather_gaussian_fields_dev(self, field_fnl, grid, pic_fields_gpu, q_gpu, q_pic_gpu)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
self | class(prism_fnl_pic_object) | in | ||
field_fnl | type(field_fnl_object) | in | ||
grid | type(grid_object) | in | ||
pic_fields_gpu | real(kind=R8P) | inout | ||
q_gpu | real(kind=R8P) | in | ||
q_pic_gpu | real(kind=R8P) | in |
Call graph
bspline_closed_weights_dev
Close the n (<=7) unfiltered B-spline weights of one stencil to sum to 1 by changing only the largest one. CPU twin: bspline_closed_weights (same evaluation and summation order).
Attributes: pure
fortran
subroutine bspline_closed_weights_dev(order, x_p, x_cell, n, dx, w, pu_error)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
order | integer(kind=I4P) | in | B-spline order (0=NGP ... 6=sextic). | |
x_p | real(kind=R8P) | in | Particle coordinate. | |
x_cell | real(kind=R8P) | in | Cell centers of the stencil (1:n used). | |
n | integer(kind=I4P) | in | Stencil cells. | |
dx | real(kind=R8P) | in | Cell size. | |
w | real(kind=R8P) | out | Closed weights (1:n set, the rest 0). | |
pu_error | real(kind=R8P) | out | |raw sum - 1| before the closure. |
Call graph
set_bspline_stencil_dev
Compute the one-dimensional B-spline stencil.
Attributes: pure
fortran
subroutine set_bspline_stencil_dev(order, x_p, x_c, i_p, i_min, i_max)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
order | integer(kind=I4P) | in | ||
x_p | real(kind=R8P) | in | ||
x_c | real(kind=R8P) | in | ||
i_p | integer(kind=I4P) | in | ||
i_min | integer(kind=I4P) | out | ||
i_max | integer(kind=I4P) | out |
Call graph
Functions
effective_bspline_weight_dev
Return the optionally binomial-filtered one-dimensional B-spline weight.
Attributes: pure
Returns: real(kind=R8P)
fortran
function effective_bspline_weight_dev(order, r, filter) result(weight)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
order | integer(kind=I4P) | in | ||
r | real(kind=R8P) | in | ||
filter | logical | in |
Call graph
gaussian_weight_dev
Return an unnormalized one-dimensional Gaussian weight with compact cutoff.
Attributes: pure
Returns: real(kind=R8P)
fortran
function gaussian_weight_dev(r, cutoff_limit) result(weight)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
r | real(kind=R8P) | in | ||
cutoff_limit | real(kind=R8P) | in |
Call graph
effective_gaussian_weight_dev
Return the optionally binomial-filtered one-dimensional Gaussian weight.
Attributes: pure
Returns: real(kind=R8P)
fortran
function effective_gaussian_weight_dev(r, shift, cutoff_limit, filter) result(weight)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
r | real(kind=R8P) | in | ||
shift | real(kind=R8P) | in | ||
cutoff_limit | real(kind=R8P) | in | ||
filter | logical | in |
Call graph
bspline_weight_dev
Return the centered cardinal B-spline weight.
Attributes: pure
Returns: real(kind=R8P)
fortran
function bspline_weight_dev(order, r) result(weight)Arguments
| Name | Type | Intent | Attributes | Description |
|---|---|---|---|---|
order | integer(kind=I4P) | in | ||
r | real(kind=R8P) | in |
Call graph