Last commit for atom.c: 8a155c1522c0818d43b6bae4cc5806ea41f88793

Parallel md code using OpenMP and MPI

Ramses van Zon [2016-09-29 14:34:01]
Parallel md code using OpenMP and MPI
/* atom.c - implements the atom_t type and its mpi type */
#include <stdbool.h>
#include <mpi.h>
#include "atom.h"

MPI_Datatype MPI_ATOM = MPI_BYTE;

static bool MPI_ATOM_defined = false;

MPI_Datatype define_MPI_ATOM()
{
    if (! MPI_ATOM_defined) {
        MPI_Type_struct(16,
                       (int[16]) {
                           1,
                           1, 1, 1,
                           1, 1, 1,
                           1, 1, 1,
                           1,
                           1,1,1,
                           1,
                           1},
                       (MPI_Aint[16]) {
                           0,
                           offsetof(atom_t,rx), offsetof(atom_t,ry), offsetof(atom_t,rz),
                           offsetof(atom_t,px), offsetof(atom_t,py), offsetof(atom_t,pz),
                           offsetof(atom_t,fx), offsetof(atom_t,fy), offsetof(atom_t,fz),
                           offsetof(atom_t,index),
                           offsetof(atom_t,cx),offsetof(atom_t,cy),offsetof(atom_t,cz),
                           offsetof(atom_t,c),
                           sizeof(atom_t)},
                       (MPI_Datatype[16]) {
                           MPI_LB,
                           MPI_DOUBLE, MPI_DOUBLE, MPI_DOUBLE,
                           MPI_DOUBLE, MPI_DOUBLE, MPI_DOUBLE,
                           MPI_DOUBLE, MPI_DOUBLE, MPI_DOUBLE,
                           MPI_LONG_LONG,
                           MPI_INT, MPI_INT, MPI_INT,
                           MPI_INT,
                           MPI_UB},
                       &MPI_ATOM);
        //atom_t testatoms[2];
        //MPI_Type_contiguous(&(testatoms[1])-&(testatoms[0]), MPI_BYTE, &MPI_ATOM);
        MPI_Type_commit(&MPI_ATOM);
        MPI_ATOM_defined = true;
    }
    return MPI_ATOM;

}
ViewGit