Block-Structured AMR Software Framework
distribution.c File Reference
#include <assert.h>
#include <mpi.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include "distribution_c.h"
#include "verbosity.h"

Macros

#define USE_SLAB_WORKAROUND   0
 
#define DEBUG_CONDITION   false
 

Enumerations

enum  { REDISTRIBUTE_1_TO_3 , REDISTRIBUTE_3_TO_1 , REDISTRIBUTE_2_TO_3 , REDISTRIBUTE_3_TO_2 }
 

Functions

static char const * separator (int i, int n)
 
void Coord_cube (int myrank, int coord[], distribution_t *d)
 
void Rank_cube (int *myrank, int coord[], distribution_t *d)
 
void Coord_x_pencils (int myrank, int coord[], distribution_t *d)
 
void Rank_x_pencils (int *myrank, int coord[], distribution_t *d)
 
void Coord_y_pencils (int myrank, int coord[], distribution_t *d)
 
void Rank_y_pencils (int *myrank, int coord[], distribution_t *d)
 
void Coord_z_pencils (int myrank, int coord[], distribution_t *d)
 
void Rank_z_pencils (int *myrank, int coord[], distribution_t *d)
 
void distribution_init (MPI_Comm comm, const int n[], const int Ndims[], distribution_t *d, const int *rmap, bool debug)
 
void Custom3D_Dims_create (const int Ndims[], int nproc, int ndims, int dims[])
 
void distribution_init_explicit (MPI_Comm comm, const int n[], int nproc_1d[], int nproc_2d_x[], int nproc_2d_y[], int nproc_2d_z[], int nproc_3d[], distribution_t *d, bool debug)
 
void distribution_fini (distribution_t *d)
 
void distribution_assert_commensurate (distribution_t *d)
 
static void redistribute (const complex_t *, complex_t *, distribution_t *, int)
 
static void redistribute_2_and_3 (const complex_t *, complex_t *, distribution_t *, int, int)
 
static void redistribute_slab (const complex_t *, complex_t *, distribution_t *, int)
 
void distribution_1_to_3 (const complex_t *a, complex_t *b, distribution_t *d)
 
void distribution_3_to_1 (const complex_t *a, complex_t *b, distribution_t *d)
 
void distribution_2_to_3 (const complex_t *a, complex_t *b, distribution_t *d, int z_dim)
 
void distribution_3_to_2 (const complex_t *a, complex_t *b, distribution_t *d, int z_dim)
 

Macro Definition Documentation

◆ DEBUG_CONDITION

#define DEBUG_CONDITION   false

◆ USE_SLAB_WORKAROUND

#define USE_SLAB_WORKAROUND   0

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
REDISTRIBUTE_1_TO_3 
REDISTRIBUTE_3_TO_1 
REDISTRIBUTE_2_TO_3 
REDISTRIBUTE_3_TO_2 

Function Documentation

◆ Coord_cube()

void Coord_cube ( int  myrank,
int  coord[],
distribution_t d 
)

◆ Coord_x_pencils()

void Coord_x_pencils ( int  myrank,
int  coord[],
distribution_t d 
)

◆ Coord_y_pencils()

void Coord_y_pencils ( int  myrank,
int  coord[],
distribution_t d 
)

◆ Coord_z_pencils()

void Coord_z_pencils ( int  myrank,
int  coord[],
distribution_t d 
)

◆ Custom3D_Dims_create()

void Custom3D_Dims_create ( const int  Ndims[],
int  nproc,
int  ndims,
int  dims[] 
)

◆ distribution_1_to_3()

void distribution_1_to_3 ( const complex_t a,
complex_t b,
distribution_t d 
)

◆ distribution_2_to_3()

void distribution_2_to_3 ( const complex_t a,
complex_t b,
distribution_t d,
int  z_dim 
)

◆ distribution_3_to_1()

void distribution_3_to_1 ( const complex_t a,
complex_t b,
distribution_t d 
)

◆ distribution_3_to_2()

void distribution_3_to_2 ( const complex_t a,
complex_t b,
distribution_t d,
int  z_dim 
)

◆ distribution_assert_commensurate()

void distribution_assert_commensurate ( distribution_t d)

◆ distribution_fini()

void distribution_fini ( distribution_t d)

◆ distribution_init()

void distribution_init ( MPI_Comm  comm,
const int  n[],
const int  Ndims[],
distribution_t d,
const int *  rmap,
bool  debug 
)

◆ distribution_init_explicit()

void distribution_init_explicit ( MPI_Comm  comm,
const int  n[],
int  nproc_1d[],
int  nproc_2d_x[],
int  nproc_2d_y[],
int  nproc_2d_z[],
int  nproc_3d[],
distribution_t d,
bool  debug 
)

◆ Rank_cube()

void Rank_cube ( int *  myrank,
int  coord[],
distribution_t d 
)

◆ Rank_x_pencils()

void Rank_x_pencils ( int *  myrank,
int  coord[],
distribution_t d 
)

◆ Rank_y_pencils()

void Rank_y_pencils ( int *  myrank,
int  coord[],
distribution_t d 
)

◆ Rank_z_pencils()

void Rank_z_pencils ( int *  myrank,
int  coord[],
distribution_t d 
)

◆ redistribute()

static void redistribute ( const complex_t a,
complex_t b,
distribution_t d,
int  direction 
)
static

◆ redistribute_2_and_3()

static void redistribute_2_and_3 ( const complex_t a,
complex_t b,
distribution_t d,
int  direction,
int  z_dim 
)
static

◆ redistribute_slab()

static void redistribute_slab ( const complex_t a,
complex_t b,
distribution_t d,
int  direction 
)
static

◆ separator()

static char const* separator ( int  i,
int  n 
)
inlinestatic