updates to use new funcs from Python as well

This commit is contained in:
Steve Plimpton
2022-04-14 10:49:12 -06:00
parent bc2b600f09
commit 5c70f45feb
2 changed files with 35 additions and 12 deletions

View File

@ -290,22 +290,42 @@ if not mdiarg: error()
# world = MPI communicator for just this driver
# invoke perform_tasks() directly
if not plugin:
mdi.MDI_Init(mdiarg)
world = mdi.MDI_MPI_get_world_comm()
#if not plugin:
# mdi.MDI_Init(mdiarg)
# world = mdi.MDI_MPI_get_world_comm()
# connect to engine
mdicomm = mdi.MDI_Accept_Communicator()
# mdicomm = mdi.MDI_Accept_Communicator()
perform_tasks(world,mdicomm,None)
# perform_tasks(world,mdicomm,None)
# LAMMPS engine is a plugin library
# launch plugin
# MDI will call back to perform_tasks()
if plugin:
#if plugin:
# mdi.MDI_Init(mdiarg)
# world = MPI.COMM_WORLD
# plugin_args += " -mdi \"-role ENGINE -name lammps -method LINK\""
# mdi.MDI_Launch_plugin(plugin,plugin_args,world,perform_tasks,None)
# new code to auto-detect whether engine is stand-alone code or plugin library
mdi.MDI_Init(mdiarg)
mdicomm = mdi.MDI_Get_communicator(0)
if mdicomm == mdi.MDI_COMM_NULL:
world = mdi.MDI_MPI_get_world_comm()
mdicomm = mdi.MDI_Accept_Communicator()
if mdicomm == mdi.MDI_COMM_NULL:
error("MDI unable to connect to stand-alone engine")
perform_tasks(world,mdicomm,None)
else:
world = MPI.COMM_WORLD
method = mdi.MDI_Get_method(mdicomm)
if method != mdi.MDI_PLUGIN:
error("MDI internal error for plugin engine")
plugin_args += " -mdi \"-role ENGINE -name lammps -method LINK\""
mdi.MDI_Launch_plugin(plugin,plugin_args,world,perform_tasks,None)

View File

@ -111,20 +111,23 @@ void FixMDIAimd::init()
{
if (mdicomm != MDI_COMM_NULL) return;
// one-time initialization of mdicomm
// plugin = 0/1 if MDI engine is a stand-alone code vs plugin library
// one-time auto-detect whether engine is stand-alone code or plugin library
// also initializes mdicomm
// plugin = 0/1 for engine = stand-alone code vs plugin library
MDI_Get_communicator(&mdicomm,0);
if (mdicomm == MDI_COMM_NULL) {
plugin = 0;
MDI_Accept_communicator(&mdicomm);
if (mdicomm <= 0) error->all(FLERR,"Unable to connect to MDI engine");
if (mdicomm == MDI_COMM_NULL)
error->all(FLERR,"MDI unable to connect to stand-alone engine");
} else {
plugin = 1;
int method;
MDI_Get_method(&method,mdicomm);
if (method != MDI_PLUGIN) error->all(FLERR,"MDI internal error");
if (method != MDI_PLUGIN)
error->all(FLERR,"MDI internal error for plugin engine");
}
}