@@ -65,7 +65,6 @@ namespace dftfe
65
65
// root = 1 for proc 0, otherwise 0
66
66
int rank;
67
67
MPI_Comm_rank (d_dftfeMPIComm, &rank);
68
- std::cout << " rank: " << rank << std::endl;
69
68
d_root = (rank == 0 ) ? 1 : 0 ;
70
69
71
70
// MDI setup
@@ -463,13 +462,17 @@ namespace dftfe
463
462
{
464
463
d_actionflag = 0 ;
465
464
d_flag_cell = 1 ;
466
- int ierr = MDI_Recv (d_sys_cell, 9 , MDI_DOUBLE, d_mdicomm);
467
- if (ierr)
468
- AssertThrow (false , dealii::ExcMessage (" MDI: >CELL data" ));
469
- // error->all(FLERR, "MDI: >CELL data");
465
+
466
+ if (d_root == 1 )
467
+ {
468
+ int ierr = MDI_Recv (d_sys_cell, 9 , MDI_DOUBLE, d_mdicomm);
469
+ if (ierr)
470
+ AssertThrow (false , dealii::ExcMessage (" MDI: >CELL data" ));
471
+ }
472
+
470
473
MPI_Bcast (d_sys_cell, 9 , MPI_DOUBLE, 0 , d_dftfeMPIComm);
471
- for (int i = 0 ; i < 9 ; i++)
472
- std::cout << " cell: " << d_sys_cell[i] << std::endl;
474
+ // for (int i = 0; i < 9; i++)
475
+ // std::cout << "cell: " << d_sys_cell[i] << std::endl;
473
476
}
474
477
475
478
/* ----------------------------------------------------------------------
@@ -485,10 +488,14 @@ namespace dftfe
485
488
{
486
489
d_actionflag = 0 ;
487
490
d_flag_cell_displ = 1 ;
488
- int ierr = MDI_Recv (d_sys_cell_displ, 3 , MDI_DOUBLE, d_mdicomm);
489
- if (ierr)
490
- AssertThrow (false , dealii::ExcMessage (" MDI: >CELL_DISPLS data" ));
491
- // error->all(FLERR, "MDI: >CELL_DISPLS data");
491
+
492
+ if (d_root == 1 )
493
+ {
494
+ int ierr = MDI_Recv (d_sys_cell_displ, 3 , MDI_DOUBLE, d_mdicomm);
495
+ if (ierr)
496
+ AssertThrow (false , dealii::ExcMessage (" MDI: >CELL_DISPLS data" ));
497
+ }
498
+
492
499
MPI_Bcast (d_sys_cell_displ, 3 , MPI_DOUBLE, 0 , d_dftfeMPIComm);
493
500
}
494
501
@@ -503,14 +510,18 @@ namespace dftfe
503
510
d_flag_coords = 1 ;
504
511
int n = 3 * d_sys_natoms;
505
512
d_sys_coords.resize (n);
506
- int ierr = MDI_Recv (&d_sys_coords[0 ], n, MDI_DOUBLE, d_mdicomm);
507
- if (ierr)
508
- AssertThrow (false , dealii::ExcMessage (" MDI: >COORDS data" ));
509
- // error->all(FLERR, "MDI: >COORDS data");
513
+
514
+ if (d_root == 1 )
515
+ {
516
+ int ierr = MDI_Recv (&d_sys_coords[0 ], n, MDI_DOUBLE, d_mdicomm);
517
+ if (ierr)
518
+ AssertThrow (false , dealii::ExcMessage (" MDI: >COORDS data" ));
519
+ }
520
+
510
521
MPI_Bcast (&d_sys_coords[0 ], n, MPI_DOUBLE, 0 , d_dftfeMPIComm);
511
522
512
- for (int i = 0 ; i < n; i++)
513
- std::cout << " coord: " << d_sys_coords[i] << std::endl;
523
+ // for (int i = 0; i < n; i++)
524
+ // std::cout << "coord: " << d_sys_coords[i] << std::endl;
514
525
}
515
526
516
527
/* ----------------------------------------------------------------------
@@ -523,12 +534,15 @@ namespace dftfe
523
534
{
524
535
d_actionflag = 0 ;
525
536
d_flag_natoms = 1 ;
526
- int ierr = MDI_Recv (&d_sys_natoms, 1 , MDI_INT, d_mdicomm);
527
- if (ierr)
528
- AssertThrow (false , dealii::ExcMessage (" MDI: >NATOMS data" ));
529
- // error->all(FLERR, "MDI: >NATOMS data");
537
+ if (d_root == 1 )
538
+ {
539
+ int ierr = MDI_Recv (&d_sys_natoms, 1 , MDI_INT, d_mdicomm);
540
+ if (ierr)
541
+ AssertThrow (false , dealii::ExcMessage (" MDI: >NATOMS data" ));
542
+ }
543
+
530
544
MPI_Bcast (&d_sys_natoms, 1 , MPI_INT, 0 , d_dftfeMPIComm);
531
- std::cout << " n atoms: " << d_sys_natoms << std::endl;
545
+ // std::cout << "n atoms: " << d_sys_natoms << std::endl;
532
546
}
533
547
534
548
/* ----------------------------------------------------------------------
@@ -542,15 +556,18 @@ namespace dftfe
542
556
d_actionflag = 0 ;
543
557
d_flag_elements = 1 ;
544
558
d_sys_elements.resize (d_sys_natoms);
545
- int ierr = MDI_Recv (&d_sys_elements[0 ], d_sys_natoms, MDI_INT, d_mdicomm);
546
- if (ierr)
547
- AssertThrow (false , dealii::ExcMessage (" MDI: >ELEMENTS data" ));
548
- // error->all(FLERR, "MDI: >ELEMENTS data");
549
- // FIXME: check if the correct communicator is being used
559
+ if (d_root == 1 )
560
+ {
561
+ int ierr =
562
+ MDI_Recv (&d_sys_elements[0 ], d_sys_natoms, MDI_INT, d_mdicomm);
563
+ if (ierr)
564
+ AssertThrow (false , dealii::ExcMessage (" MDI: >ELEMENTS data" ));
565
+ }
566
+
550
567
MPI_Bcast (&d_sys_elements[0 ], d_sys_natoms, MPI_INT, 0 , d_dftfeMPIComm);
551
568
552
- for (int i = 0 ; i < d_sys_natoms; i++)
553
- std::cout << " element: " << d_sys_elements[i] << std::endl;
569
+ // for (int i = 0; i < d_sys_natoms; i++)
570
+ // std::cout << "element: " << d_sys_elements[i] << std::endl;
554
571
}
555
572
556
573
// ----------------------------------------------------------------------
@@ -574,10 +591,13 @@ namespace dftfe
574
591
{
575
592
// NOTE: energy should be QM energy
576
593
const double energy = d_dftfeWrapper.getDFTFreeEnergy ();
577
- int ierr = MDI_Send (&energy, 1 , MDI_DOUBLE, d_mdicomm);
578
- if (ierr)
579
- AssertThrow (false , dealii::ExcMessage (" MDI: <ENERGY data" ));
580
- // error->all(FLERR, "MDI: <ENERGY data");
594
+ if (d_root == 1 )
595
+ {
596
+ int ierr = MDI_Send (&energy, 1 , MDI_DOUBLE, d_mdicomm);
597
+ if (ierr)
598
+ AssertThrow (false , dealii::ExcMessage (" MDI: <ENERGY data" ));
599
+ }
600
+ MPI_Barrier (d_dftfeMPIComm);
581
601
}
582
602
583
603
/* ----------------------------------------------------------------------
@@ -600,15 +620,18 @@ namespace dftfe
600
620
forces[3 * i + 1 ] = ionicForces[i][1 ];
601
621
forces[3 * i + 2 ] = ionicForces[i][2 ];
602
622
}
603
- int ierr = MDI_Send (&forces[0 ], 3 * d_sys_natoms, MDI_DOUBLE, d_mdicomm);
604
- if (ierr)
605
- AssertThrow (false , dealii::ExcMessage (" MDI: <FORCES data" ));
606
- // error->all(FLERR, "MDI: <FORCES data");
623
+ if (d_root == 1 )
624
+ {
625
+ int ierr =
626
+ MDI_Send (&forces[0 ], 3 * d_sys_natoms, MDI_DOUBLE, d_mdicomm);
627
+ if (ierr)
628
+ AssertThrow (false , dealii::ExcMessage (" MDI: <FORCES data" ));
629
+ }
630
+ MPI_Barrier (d_dftfeMPIComm);
607
631
}
608
632
609
633
/* ----------------------------------------------------------------------
610
634
<STRESS command
611
- send 6-component stress tensor (no kinetic energy term)
612
635
---------------------------------------------------------------------- */
613
636
614
637
void
@@ -629,10 +652,14 @@ namespace dftfe
629
652
stressTensorFlattened[7 ] = stressTensor[2 ][1 ];
630
653
stressTensorFlattened[8 ] = stressTensor[2 ][2 ];
631
654
632
- int ierr = MDI_Send (&stressTensorFlattened[0 ], 9 , MDI_DOUBLE, d_mdicomm);
633
- if (ierr)
634
- AssertThrow (false , dealii::ExcMessage (" MDI: <STRESS data" ));
635
- // error->all(FLERR, "MDI: <STRESS data");
655
+ if (d_root == 1 )
656
+ {
657
+ int ierr =
658
+ MDI_Send (&stressTensorFlattened[0 ], 9 , MDI_DOUBLE, d_mdicomm);
659
+ if (ierr)
660
+ AssertThrow (false , dealii::ExcMessage (" MDI: <STRESS data" ));
661
+ }
662
+ MPI_Barrier (d_dftfeMPIComm);
636
663
}
637
664
} // namespace dftfe
638
665
#endif
0 commit comments