diff --git a/examples/mdi/sequence_driver.py b/examples/mdi/sequence_driver.py index b0b26f6d7f..33dcf61b70 100644 --- a/examples/mdi/sequence_driver.py +++ b/examples/mdi/sequence_driver.py @@ -155,7 +155,7 @@ def perform_tasks(world,mdicomm,dummy): # request virial tensor mdi.MDI_Send_command("all(FLERR, "MDI: all(FLERR, "MDI: virial @@ -356,7 +360,7 @@ void FixMDIQM::post_force(int vflag) else if (domain->dimension == 3) volume = domain->xprd * domain->yprd * domain->zprd; for (int i = 0; i < 6; i++) - virial[i] = qm_virial[i]*volume/nprocs; + virial[i] = qm_virial_symmetric[i]*volume/nprocs; } } @@ -382,7 +386,7 @@ double FixMDIQM::compute_scalar() double FixMDIQM::compute_vector(int n) { - return qm_virial[n]; + return qm_virial_symmetric[n]; } /* ---------------------------------------------------------------------- diff --git a/src/MDI/fix_mdi_qm.h b/src/MDI/fix_mdi_qm.h index 2d6f4b0d23..1db6a0cce2 100644 --- a/src/MDI/fix_mdi_qm.h +++ b/src/MDI/fix_mdi_qm.h @@ -47,7 +47,7 @@ class FixMDIQM : public Fix { double qm_energy; int lmpunits; - double qm_virial[6],qm_virial_all[6]; + double qm_virial[9],qm_virial_symmetric[6]; double **fqm; MDI_Comm mdicomm; diff --git a/src/MDI/mdi_engine.cpp b/src/MDI/mdi_engine.cpp index c5fc7e0b50..6a58512cfa 100644 --- a/src/MDI/mdi_engine.cpp +++ b/src/MDI/mdi_engine.cpp @@ -1413,16 +1413,21 @@ void MDIEngine::send_pe() /* ---------------------------------------------------------------------- compute_vector(); - for (int i = 0; i < 6; i++) vtensor[i] = press->vector[i] * lmp2mdi_pressure; + vtensor_full[0] = press->vector[0] * lmp2mdi_pressure; + vtensor_full[4] = press->vector[1] * lmp2mdi_pressure; + vtensor_full[8] = press->vector[2] * lmp2mdi_pressure; + vtensor_full[1] = vtensor_full[3] = press->vector[3] * lmp2mdi_pressure; + vtensor_full[2] = vtensor_full[6] = press->vector[4] * lmp2mdi_pressure; + vtensor_full[5] = vtensor_full[7] = press->vector[5] * lmp2mdi_pressure; - int ierr = MDI_Send(vtensor, 6, MDI_DOUBLE, mdicomm); + int ierr = MDI_Send(vtensor_full, 9, MDI_DOUBLE, mdicomm); if (ierr) error->all(FLERR, "MDI: