looping
moment_kinetics.looping
— ModuleProvides convenience macros for shared-memory-parallel loops
moment_kinetics.looping.loop_ranges
— Constantmodule variable that we can access by giving fully-qualified name in loop macros
moment_kinetics.looping.loop_ranges_store
— Constantmodule variable used to store LoopRanges that are swapped into the loopranges variable in begin*_region() functions
moment_kinetics.looping.LoopRanges
— TypeLoopRanges structs contain information on which points should be included on this process in loops over shared-memory arrays.
Members
paralleldims::Tuple{Vararg{Symbol}} Indicates which dimensions are (or might be) parallelized when using this LoopRanges. Provided for information for developers, to make it easier to tell (when using a Debugger, or printing debug informatino) which LoopRanges instance is active in looping.loopranges at any point in the code. rank0::Bool Is this process the one with rank 0 in the 'block' which work in parallel on shared memory arrays. <d>::UnitRange{mkint} Loop ranges for each dimension <d> in looping.alldimensions.
moment_kinetics.looping.begin_anyv_region
— MethodBegin 'anyv' sub-region in which () velocity space dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the beginanyv*region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _anyv_subblock_synchronize()
to synchronize the processes operating on an 'anyv' shared-memory sub-block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_anyv_vpa_region
— MethodBegin 'anyv' sub-region in which (:vpa,) velocity space dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the beginanyv*region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _anyv_subblock_synchronize()
to synchronize the processes operating on an 'anyv' shared-memory sub-block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_anyv_vperp_region
— MethodBegin 'anyv' sub-region in which (:vperp,) velocity space dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the beginanyv*region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _anyv_subblock_synchronize()
to synchronize the processes operating on an 'anyv' shared-memory sub-block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_anyv_vperp_vpa_region
— MethodBegin 'anyv' sub-region in which (:vperp, :vpa) velocity space dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the beginanyv*region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _anyv_subblock_synchronize()
to synchronize the processes operating on an 'anyv' shared-memory sub-block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_region
— MethodBegin region in which (:r,) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_vpa_region
— MethodBegin region in which (:r, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_vperp_region
— MethodBegin region in which (:r, :vperp) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_vperp_vpa_region
— MethodBegin region in which (:r, :vperp, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_vr_region
— MethodBegin region in which (:r, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_vr_vz_region
— MethodBegin region in which (:r, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_vz_region
— MethodBegin region in which (:r, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_vzeta_region
— MethodBegin region in which (:r, :vzeta) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_vzeta_vr_region
— MethodBegin region in which (:r, :vzeta, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_vzeta_vr_vz_region
— MethodBegin region in which (:r, :vzeta, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_vzeta_vz_region
— MethodBegin region in which (:r, :vzeta, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_z_region
— MethodBegin region in which (:r, :z) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_z_vpa_region
— MethodBegin region in which (:r, :z, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_z_vperp_region
— MethodBegin region in which (:r, :z, :vperp) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_z_vperp_vpa_region
— MethodBegin region in which (:r, :z, :vperp, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_z_vr_region
— MethodBegin region in which (:r, :z, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_z_vr_vz_region
— MethodBegin region in which (:r, :z, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_z_vz_region
— MethodBegin region in which (:r, :z, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_z_vzeta_region
— MethodBegin region in which (:r, :z, :vzeta) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_z_vzeta_vr_region
— MethodBegin region in which (:r, :z, :vzeta, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_z_vzeta_vr_vz_region
— MethodBegin region in which (:r, :z, :vzeta, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_r_z_vzeta_vz_region
— MethodBegin region in which (:r, :z, :vzeta, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_r_region
— MethodBegin region in which (:s, :r) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_r_vpa_region
— MethodBegin region in which (:s, :r, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_r_vperp_region
— MethodBegin region in which (:s, :r, :vperp) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_r_vperp_vpa_region
— MethodBegin region in which (:s, :r, :vperp, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_r_z_anyv_region
— MethodBegin region in which (:s,:r,:z) dimensions and velocity dimensions are parallelized by being split between processes, and which velocity dimensions are parallelized can be switched within the outer loop over (:s,:r,:z). This parallelization scheme is intended for use in the collision operator.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_r_z_region
— MethodBegin region in which (:s, :r, :z) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_r_z_vpa_region
— MethodBegin region in which (:s, :r, :z, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_r_z_vperp_region
— MethodBegin region in which (:s, :r, :z, :vperp) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_r_z_vperp_vpa_region
— MethodBegin region in which (:s, :r, :z, :vperp, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_region
— MethodBegin region in which (:s,) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_vpa_region
— MethodBegin region in which (:s, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_vperp_region
— MethodBegin region in which (:s, :vperp) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_vperp_vpa_region
— MethodBegin region in which (:s, :vperp, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_z_region
— MethodBegin region in which (:s, :z) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_z_vpa_region
— MethodBegin region in which (:s, :z, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_z_vperp_region
— MethodBegin region in which (:s, :z, :vperp) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_s_z_vperp_vpa_region
— MethodBegin region in which (:s, :z, :vperp, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_serial_region
— MethodBegin region in which only rank-0 in each group of processes operating on a shared-memory block operates on shared-memory arrays.
Returns immediately if loopranges[] is already set for a serial region. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_region
— MethodBegin region in which (:sn, :r) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_vr_region
— MethodBegin region in which (:sn, :r, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_vr_vz_region
— MethodBegin region in which (:sn, :r, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_vz_region
— MethodBegin region in which (:sn, :r, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_vzeta_region
— MethodBegin region in which (:sn, :r, :vzeta) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_vzeta_vr_region
— MethodBegin region in which (:sn, :r, :vzeta, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_vzeta_vr_vz_region
— MethodBegin region in which (:sn, :r, :vzeta, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_vzeta_vz_region
— MethodBegin region in which (:sn, :r, :vzeta, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_z_region
— MethodBegin region in which (:sn, :r, :z) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_z_vr_region
— MethodBegin region in which (:sn, :r, :z, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_z_vr_vz_region
— MethodBegin region in which (:sn, :r, :z, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_z_vz_region
— MethodBegin region in which (:sn, :r, :z, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_z_vzeta_region
— MethodBegin region in which (:sn, :r, :z, :vzeta) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_z_vzeta_vr_region
— MethodBegin region in which (:sn, :r, :z, :vzeta, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_z_vzeta_vr_vz_region
— MethodBegin region in which (:sn, :r, :z, :vzeta, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_r_z_vzeta_vz_region
— MethodBegin region in which (:sn, :r, :z, :vzeta, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_region
— MethodBegin region in which (:sn,) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_vr_region
— MethodBegin region in which (:sn, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_vr_vz_region
— MethodBegin region in which (:sn, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_vz_region
— MethodBegin region in which (:sn, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_vzeta_region
— MethodBegin region in which (:sn, :vzeta) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_vzeta_vr_region
— MethodBegin region in which (:sn, :vzeta, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_vzeta_vr_vz_region
— MethodBegin region in which (:sn, :vzeta, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_vzeta_vz_region
— MethodBegin region in which (:sn, :vzeta, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_z_region
— MethodBegin region in which (:sn, :z) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_z_vr_region
— MethodBegin region in which (:sn, :z, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_z_vr_vz_region
— MethodBegin region in which (:sn, :z, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_z_vz_region
— MethodBegin region in which (:sn, :z, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_z_vzeta_region
— MethodBegin region in which (:sn, :z, :vzeta) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_z_vzeta_vr_region
— MethodBegin region in which (:sn, :z, :vzeta, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_z_vzeta_vr_vz_region
— MethodBegin region in which (:sn, :z, :vzeta, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_sn_z_vzeta_vz_region
— MethodBegin region in which (:sn, :z, :vzeta, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_vpa_region
— MethodBegin region in which (:vpa,) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_vperp_region
— MethodBegin region in which (:vperp,) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_vperp_vpa_region
— MethodBegin region in which (:vperp, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_vr_region
— MethodBegin region in which (:vr,) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_vr_vz_region
— MethodBegin region in which (:vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_vz_region
— MethodBegin region in which (:vz,) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_vzeta_region
— MethodBegin region in which (:vzeta,) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_vzeta_vr_region
— MethodBegin region in which (:vzeta, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_vzeta_vr_vz_region
— MethodBegin region in which (:vzeta, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_vzeta_vz_region
— MethodBegin region in which (:vzeta, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_z_region
— MethodBegin region in which (:z,) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_z_vpa_region
— MethodBegin region in which (:z, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_z_vperp_region
— MethodBegin region in which (:z, :vperp) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_z_vperp_vpa_region
— MethodBegin region in which (:z, :vperp, :vpa) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_z_vr_region
— MethodBegin region in which (:z, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_z_vr_vz_region
— MethodBegin region in which (:z, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_z_vz_region
— MethodBegin region in which (:z, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_z_vzeta_region
— MethodBegin region in which (:z, :vzeta) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_z_vzeta_vr_region
— MethodBegin region in which (:z, :vzeta, :vr) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_z_vzeta_vr_vz_region
— MethodBegin region in which (:z, :vzeta, :vr, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.begin_z_vzeta_vz_region
— MethodBegin region in which (:z, :vzeta, :vz) dimensions are parallelized by being split between processes.
Returns immediately if loopranges[] is already set to the parallel dimensions being requested. This allows the begin*_region() calls to be placed where they make logical sense, with no cost if a call happens to be repeated (e.g. in different functions).
Calls _block_synchronize()
to synchronize the processes operating on a shared-memory block, unless no_synchronize=true
is passed as an argument.
moment_kinetics.looping.debug_setup_loop_ranges_split_one_combination!
— MethodFor debugging the shared-memory parallelism, create ranges where only the loops for a single combinations of variables (given by combination_to_split
) are parallelised, and which dimensions are parallelised can be set with the dims_to_split...
arguments.
Arguments
Keyword arguments dim=n
are required for each dim in all_dimensions
where n
is an integer giving the size of the dimension.
moment_kinetics.looping.dims_string
— MethodConstruct a string composed of the dimension names given in the Tuple dims
, separated by underscores
moment_kinetics.looping.get_anyv_ranges
— Methodmoment_kinetics.looping.get_best_anyv_split
— MethodFind the numbers of processes for each dimension that optimize load balance for 'anyv' type loops for a certain block_size.
The 'anyv' parallelisation patterns are designed for use in the collision operator. They all share the same parallelisation in species and spatial dimensions so that the region type can be switched between 'anyv' types within a loop over species and spatial dimensions (@loopsr_z). It is only defined for ions, not for neutrals.
Parts of the collision operator cannot conveniently be parallelised over velocity dimensions, so this function aims to assign as much parallelism as possible to the species and spatial dimensions.
moment_kinetics.looping.get_best_ranges
— MethodFind the ranges for loop variables that optimize load balance for a certain block_size
moment_kinetics.looping.get_local_range
— MethodGet local range of indices when splitting a loop over processes in a sub-block
moment_kinetics.looping.get_max_work
— MethodCalculate the maximum number of grid points on any process
This is a measure of the maximum amount of work to do on a single process. Minimising this will make the parallelisation as efficient as possible.
Arguments
nprocslist : Vector{mkint} Number of processes for each dimension sizes : Vector{mk_int} Size of each dimension
moment_kinetics.looping.get_ranges_from_split
— Methodmoment_kinetics.looping.get_splits
— MethodFind possible divisions of each number less than or equal to block_size
into n
factors.
moment_kinetics.looping.get_splits_and_max_work_from_sizes
— Methodmoment_kinetics.looping.get_subblock_splits
— MethodFind possible divisions of subblocksize into n factors
moment_kinetics.looping.setup_loop_ranges!
— MethodCreate ranges for loops with different combinations of variables
Arguments
Keyword arguments dim=n
are required for each dim in [:s, :r, :z, :vperp, :vpa, :sn, :vzeta, :vr, :vz] where n
is an integer giving the size of the dimension.
moment_kinetics.looping.@anyv_serial_region
— MacroRun a block of code on only anyv-subblock-rank-0 of each group of processes operating on an 'anyv' shared-memory subblock
moment_kinetics.looping.@loop_r
— MacroLoop over (:r,) dimensions
moment_kinetics.looping.@loop_r_vpa
— MacroLoop over (:r, :vpa) dimensions
moment_kinetics.looping.@loop_r_vperp
— MacroLoop over (:r, :vperp) dimensions
moment_kinetics.looping.@loop_r_vperp_vpa
— MacroLoop over (:r, :vperp, :vpa) dimensions
moment_kinetics.looping.@loop_r_vr
— MacroLoop over (:r, :vr) dimensions
moment_kinetics.looping.@loop_r_vr_vz
— MacroLoop over (:r, :vr, :vz) dimensions
moment_kinetics.looping.@loop_r_vz
— MacroLoop over (:r, :vz) dimensions
moment_kinetics.looping.@loop_r_vzeta
— MacroLoop over (:r, :vzeta) dimensions
moment_kinetics.looping.@loop_r_vzeta_vr
— MacroLoop over (:r, :vzeta, :vr) dimensions
moment_kinetics.looping.@loop_r_vzeta_vr_vz
— MacroLoop over (:r, :vzeta, :vr, :vz) dimensions
moment_kinetics.looping.@loop_r_vzeta_vz
— MacroLoop over (:r, :vzeta, :vz) dimensions
moment_kinetics.looping.@loop_r_z
— MacroLoop over (:r, :z) dimensions
moment_kinetics.looping.@loop_r_z_vpa
— MacroLoop over (:r, :z, :vpa) dimensions
moment_kinetics.looping.@loop_r_z_vperp
— MacroLoop over (:r, :z, :vperp) dimensions
moment_kinetics.looping.@loop_r_z_vperp_vpa
— MacroLoop over (:r, :z, :vperp, :vpa) dimensions
moment_kinetics.looping.@loop_r_z_vr
— MacroLoop over (:r, :z, :vr) dimensions
moment_kinetics.looping.@loop_r_z_vr_vz
— MacroLoop over (:r, :z, :vr, :vz) dimensions
moment_kinetics.looping.@loop_r_z_vz
— MacroLoop over (:r, :z, :vz) dimensions
moment_kinetics.looping.@loop_r_z_vzeta
— MacroLoop over (:r, :z, :vzeta) dimensions
moment_kinetics.looping.@loop_r_z_vzeta_vr
— MacroLoop over (:r, :z, :vzeta, :vr) dimensions
moment_kinetics.looping.@loop_r_z_vzeta_vr_vz
— MacroLoop over (:r, :z, :vzeta, :vr, :vz) dimensions
moment_kinetics.looping.@loop_r_z_vzeta_vz
— MacroLoop over (:r, :z, :vzeta, :vz) dimensions
moment_kinetics.looping.@loop_s
— MacroLoop over (:s,) dimensions
moment_kinetics.looping.@loop_s_r
— MacroLoop over (:s, :r) dimensions
moment_kinetics.looping.@loop_s_r_vpa
— MacroLoop over (:s, :r, :vpa) dimensions
moment_kinetics.looping.@loop_s_r_vperp
— MacroLoop over (:s, :r, :vperp) dimensions
moment_kinetics.looping.@loop_s_r_vperp_vpa
— MacroLoop over (:s, :r, :vperp, :vpa) dimensions
moment_kinetics.looping.@loop_s_r_z
— MacroLoop over (:s, :r, :z) dimensions
moment_kinetics.looping.@loop_s_r_z_vpa
— MacroLoop over (:s, :r, :z, :vpa) dimensions
moment_kinetics.looping.@loop_s_r_z_vperp
— MacroLoop over (:s, :r, :z, :vperp) dimensions
moment_kinetics.looping.@loop_s_r_z_vperp_vpa
— MacroLoop over (:s, :r, :z, :vperp, :vpa) dimensions
moment_kinetics.looping.@loop_s_vpa
— MacroLoop over (:s, :vpa) dimensions
moment_kinetics.looping.@loop_s_vperp
— MacroLoop over (:s, :vperp) dimensions
moment_kinetics.looping.@loop_s_vperp_vpa
— MacroLoop over (:s, :vperp, :vpa) dimensions
moment_kinetics.looping.@loop_s_z
— MacroLoop over (:s, :z) dimensions
moment_kinetics.looping.@loop_s_z_vpa
— MacroLoop over (:s, :z, :vpa) dimensions
moment_kinetics.looping.@loop_s_z_vperp
— MacroLoop over (:s, :z, :vperp) dimensions
moment_kinetics.looping.@loop_s_z_vperp_vpa
— MacroLoop over (:s, :z, :vperp, :vpa) dimensions
moment_kinetics.looping.@loop_sn
— MacroLoop over (:sn,) dimensions
moment_kinetics.looping.@loop_sn_r
— MacroLoop over (:sn, :r) dimensions
moment_kinetics.looping.@loop_sn_r_vr
— MacroLoop over (:sn, :r, :vr) dimensions
moment_kinetics.looping.@loop_sn_r_vr_vz
— MacroLoop over (:sn, :r, :vr, :vz) dimensions
moment_kinetics.looping.@loop_sn_r_vz
— MacroLoop over (:sn, :r, :vz) dimensions
moment_kinetics.looping.@loop_sn_r_vzeta
— MacroLoop over (:sn, :r, :vzeta) dimensions
moment_kinetics.looping.@loop_sn_r_vzeta_vr
— MacroLoop over (:sn, :r, :vzeta, :vr) dimensions
moment_kinetics.looping.@loop_sn_r_vzeta_vr_vz
— MacroLoop over (:sn, :r, :vzeta, :vr, :vz) dimensions
moment_kinetics.looping.@loop_sn_r_vzeta_vz
— MacroLoop over (:sn, :r, :vzeta, :vz) dimensions
moment_kinetics.looping.@loop_sn_r_z
— MacroLoop over (:sn, :r, :z) dimensions
moment_kinetics.looping.@loop_sn_r_z_vr
— MacroLoop over (:sn, :r, :z, :vr) dimensions
moment_kinetics.looping.@loop_sn_r_z_vr_vz
— MacroLoop over (:sn, :r, :z, :vr, :vz) dimensions
moment_kinetics.looping.@loop_sn_r_z_vz
— MacroLoop over (:sn, :r, :z, :vz) dimensions
moment_kinetics.looping.@loop_sn_r_z_vzeta
— MacroLoop over (:sn, :r, :z, :vzeta) dimensions
moment_kinetics.looping.@loop_sn_r_z_vzeta_vr
— MacroLoop over (:sn, :r, :z, :vzeta, :vr) dimensions
moment_kinetics.looping.@loop_sn_r_z_vzeta_vr_vz
— MacroLoop over (:sn, :r, :z, :vzeta, :vr, :vz) dimensions
moment_kinetics.looping.@loop_sn_r_z_vzeta_vz
— MacroLoop over (:sn, :r, :z, :vzeta, :vz) dimensions
moment_kinetics.looping.@loop_sn_vr
— MacroLoop over (:sn, :vr) dimensions
moment_kinetics.looping.@loop_sn_vr_vz
— MacroLoop over (:sn, :vr, :vz) dimensions
moment_kinetics.looping.@loop_sn_vz
— MacroLoop over (:sn, :vz) dimensions
moment_kinetics.looping.@loop_sn_vzeta
— MacroLoop over (:sn, :vzeta) dimensions
moment_kinetics.looping.@loop_sn_vzeta_vr
— MacroLoop over (:sn, :vzeta, :vr) dimensions
moment_kinetics.looping.@loop_sn_vzeta_vr_vz
— MacroLoop over (:sn, :vzeta, :vr, :vz) dimensions
moment_kinetics.looping.@loop_sn_vzeta_vz
— MacroLoop over (:sn, :vzeta, :vz) dimensions
moment_kinetics.looping.@loop_sn_z
— MacroLoop over (:sn, :z) dimensions
moment_kinetics.looping.@loop_sn_z_vr
— MacroLoop over (:sn, :z, :vr) dimensions
moment_kinetics.looping.@loop_sn_z_vr_vz
— MacroLoop over (:sn, :z, :vr, :vz) dimensions
moment_kinetics.looping.@loop_sn_z_vz
— MacroLoop over (:sn, :z, :vz) dimensions
moment_kinetics.looping.@loop_sn_z_vzeta
— MacroLoop over (:sn, :z, :vzeta) dimensions
moment_kinetics.looping.@loop_sn_z_vzeta_vr
— MacroLoop over (:sn, :z, :vzeta, :vr) dimensions
moment_kinetics.looping.@loop_sn_z_vzeta_vr_vz
— MacroLoop over (:sn, :z, :vzeta, :vr, :vz) dimensions
moment_kinetics.looping.@loop_sn_z_vzeta_vz
— MacroLoop over (:sn, :z, :vzeta, :vz) dimensions
moment_kinetics.looping.@loop_vpa
— MacroLoop over (:vpa,) dimensions
moment_kinetics.looping.@loop_vperp
— MacroLoop over (:vperp,) dimensions
moment_kinetics.looping.@loop_vperp_vpa
— MacroLoop over (:vperp, :vpa) dimensions
moment_kinetics.looping.@loop_vr
— MacroLoop over (:vr,) dimensions
moment_kinetics.looping.@loop_vr_vz
— MacroLoop over (:vr, :vz) dimensions
moment_kinetics.looping.@loop_vz
— MacroLoop over (:vz,) dimensions
moment_kinetics.looping.@loop_vzeta
— MacroLoop over (:vzeta,) dimensions
moment_kinetics.looping.@loop_vzeta_vr
— MacroLoop over (:vzeta, :vr) dimensions
moment_kinetics.looping.@loop_vzeta_vr_vz
— MacroLoop over (:vzeta, :vr, :vz) dimensions
moment_kinetics.looping.@loop_vzeta_vz
— MacroLoop over (:vzeta, :vz) dimensions
moment_kinetics.looping.@loop_z
— MacroLoop over (:z,) dimensions
moment_kinetics.looping.@loop_z_vpa
— MacroLoop over (:z, :vpa) dimensions
moment_kinetics.looping.@loop_z_vperp
— MacroLoop over (:z, :vperp) dimensions
moment_kinetics.looping.@loop_z_vperp_vpa
— MacroLoop over (:z, :vperp, :vpa) dimensions
moment_kinetics.looping.@loop_z_vr
— MacroLoop over (:z, :vr) dimensions
moment_kinetics.looping.@loop_z_vr_vz
— MacroLoop over (:z, :vr, :vz) dimensions
moment_kinetics.looping.@loop_z_vz
— MacroLoop over (:z, :vz) dimensions
moment_kinetics.looping.@loop_z_vzeta
— MacroLoop over (:z, :vzeta) dimensions
moment_kinetics.looping.@loop_z_vzeta_vr
— MacroLoop over (:z, :vzeta, :vr) dimensions
moment_kinetics.looping.@loop_z_vzeta_vr_vz
— MacroLoop over (:z, :vzeta, :vr, :vz) dimensions
moment_kinetics.looping.@loop_z_vzeta_vz
— MacroLoop over (:z, :vzeta, :vz) dimensions
moment_kinetics.looping.@serial_region
— MacroRun a block of code on only rank-0 of each group of processes operating on a shared-memory block