stores a lists of integer that are local to a processor. The idea is that these integers represent objects that are distributed between the different processors. The ordering is just to make some operation more efficent, logically these lists are like sets. Some operations assume that the integers represent a range of values from 1 to a (not too big) maxval, and that an element is present just once, and only on a processor (these assumption are marked in the documentation of such operations). The concrete task for which this structure was developed was distributing atoms between the processors.

source: distribution_1d_types.FLoading...

structure to store local (to a processor) ordered lists of integers.

SUBROUTINE

distribution_1d_create (distribution_1d, para_env, listbased_distribution, n_el, n_lists)creates a local list

releases the given distribution_1d

retains a distribution_1d

structure to store local (to a processor) ordered lists of integers.

INTEGER |
:: | ref_count | reference count (see doc/ReferenceCounting.html) | |

INTEGER |
:: | id_nr | ... | |

LOGICAL |
:: | listbased_distribution | true if each list has its own distribution | |

INTEGER, |
DIMENSION(:), POINTER | :: | n_el | n_el(i) is number of elements of list(i) |

TYPE(cp_1d_i_p_type), |
DIMENSION(:), POINTER | :: | list | list(i) contains an ordered list of integer (the array might be bigger than n_el(i), but the extra elements should be ignored) |

TYPE(cp_para_env_type), |
POINTER | :: | para_env | the parallel environment underlying the distribution |

TYPE(local_particle_type), |
DIMENSION(:), POINTER | :: | local_particle_set | ... |

creates a local list

TYPE(distribution_1d_type), |
POINTER |
:: | distribution_1d | the lists to create | |

TYPE(cp_para_env_type), |
POINTER |
:: | para_env | parallel environement to be used | |

LOGICAL, |
INTENT(in), |
OPTIONAL |
:: | listbased_distribution | if each list has its own distribution (defaults to false) |

INTEGER, |
INTENT(in), |
OPTIONAL |
:: | n_el(:) | number of elements in each list (defaults to 0) |

INTEGER, |
INTENT(in), |
OPTIONAL |
:: | n_lists | number of lists to create (defaults to 1, or size(n_el)) |

releases the given distribution_1d

TYPE(distribution_1d_type), |
POINTER |
:: | distribution_1d | the object to release |

retains a distribution_1d

TYPE(distribution_1d_type), |
POINTER |
:: | distribution_1d | the object to retain |