Hello SIESTA community,

I am in the process of writing an implementation of the
Nudged Elastic Band method for SIESTA (2.0.2). I have a pretty good
idea of how I am going to program the modules and and merge
it with the current version, but I have no MPI programming
experience. I am not too worried about this as I am able to
view existing code and adjust pretty well for what I want to
do. I am just one issue, I do not know exactly how to distribute
the images to the nodes (processors).

A quick intro to the Nudged Elastic Band (NEB). The NEB is used
to find the transition state between an initial and final
configuration. A NEB job would consist of a set of N interpolated
"image" geometric configurations between an initial and final
configuration. Each of the images are linked to each of their two
neighbors by a virtual spring force. The job would be run in
parallel with each processor handling a number of images.

My plan is to prepare each of the images before running the job
in sequential directories (i.e. NEB00, NEB01, ... , NEB0N) which
are located in a working directory from which SIESTA will be called.
So when SIESTA is run, it will read the number of images from the
FDF file and will go into each directory and distribute each image
to a processor. This is where I run into problems.

In my fortran source file, I am creating a module which contains the
necessary subroutines to initalise this chain of images linked with
springs as well as routines to calculate forces and tangents between
images. I have the appropriate "#ifdef MPI" lines, but I need some
help using SIESTA's implemented MPI structure. I assume I need to
use the mpi_siesta and m_mpi_utils modules, but I help broadcasting
the images to the nodes. Like I said, I do not know how to program
with MPI and if anybody could offer some advice I would very much
appreciate it. When I complete my implementation of the NEB, I will
gladly share it with this community.

Thanks,

Daniel J. Backlund
Texas Tech University - Physics
[email protected]

Responder a