# mpi

Contains all the functions and providers for parallelization with MPI.

## Providers

`mpi_initialized`

  File : `mpi/mpi.irp.f`

      logical :: mpi_initialized

  Always true. Initialized MPI

  Needed by:

  `ezfio_filename` |  |

`mpi_master`

  File : `mpi/mpi.irp.f`

      logical :: mpi_master

  If true, rank is zero

  Needs:

  `mpi_rank` |  |

  Needed by:

  `ao_cartesian` `ao_coef` `ao_expo` `ao_integrals_threshold` `ao_md5` `ao_nucl` `ao_num` `ao_power` `ao_prim_num` `ao_two_e_integrals_in_map` `cas_bitmask` `ci_energy` `correlation_energy_ratio_max` `data_energy_proj` `data_energy_var` `data_one_e_dm_alpha_mo` `data_one_e_dm_beta_mo` `davidson_sze_max` `disk_access_nuclear_repulsion` `disk_based_davidson` `distributed_davidson` `do_direct_integrals` `do_pseudo` `do_pt2` `elec_alpha_num` `elec_beta_num` `element_name` `energy_iterations` `frozen_orb_scf` `generators_bitmask` `generators_bitmask_restart` `io_ao_integrals_e_n` `io_ao_integrals_kinetic` `io_ao_integrals_overlap` `io_ao_integrals_pseudo` `io_ao_one_e_integrals` `io_ao_two_e_integrals` `io_ao_two_e_integrals_erf` `io_mo_integrals_e_n` | `io_mo_integrals_kinetic` `io_mo_integrals_pseudo` `io_mo_one_e_integrals` `io_mo_two_e_integrals` `io_mo_two_e_integrals_erf` `level_shift` `max_dim_diis` `mo_class` `mo_coef` `mo_guess_type` `mo_integrals_threshold` `mo_label` `mo_num` `mo_occ` `mo_two_e_integrals_in_map` `mu_erf` `n_cas_bitmask` `n_core_orb` `n_det` `n_det_generators` `n_det_iterations` `n_det_max` `n_det_max_full` `n_det_print_wf` `n_det_selectors` `n_generators_bitmask` `n_generators_bitmask_restart` `n_int` `n_it_scf_max` `n_iter` `n_states` `n_states_diag` `no_ivvv_integrals` `no_vvv_integrals` `no_vvvv_integrals` `nthreads_davidson` `nthreads_pt2` `nucl_charge` `nucl_charge_remove` | `nucl_coord` `nucl_label` `nucl_num` `nuclear_repulsion` `only_expected_s2` `pseudo_dz_k` `pseudo_dz_kl` `pseudo_grid_rmax` `pseudo_grid_size` `pseudo_klocmax` `pseudo_kmax` `pseudo_lmax` `pseudo_n_k` `pseudo_n_kl` `pseudo_v_k` `pseudo_v_kl` `psi_cas` `psi_coef` `psi_coef_max` `psi_det` `psi_det_alpha_unique` `psi_det_beta_unique` `psi_det_size` `pt2_e0_denominator` `pt2_iterations` `pt2_max` `pt2_n_teeth` `pt2_relative_error` `qp_max_mem` `read_wf` `s2_eig` `scf_algorithm` `state_following` `target_energy` `thresh_scf` `threshold_davidson` `threshold_diis` `threshold_generators` `used_weight`

`mpi_rank`

  File : `mpi/mpi.irp.f`

      integer :: mpi_rank
      integer :: mpi_size

  Rank of MPI process and number of MPI processes

  Needed by:

  `mpi_master` |  |

`mpi_size`

  File : `mpi/mpi.irp.f`

      integer :: mpi_rank
      integer :: mpi_size

  Rank of MPI process and number of MPI processes

  Needed by:

  `mpi_master` |  |

## Subroutines / functions

`broadcast_chunks_double:`()

  File : `mpi/mpi.irp.f_template_97`

      subroutine broadcast_chunks_double(A, LDA)

  Broadcast with chunks of ~2GB

`broadcast_chunks_integer:`()

  File : `mpi/mpi.irp.f_template_97`

      subroutine broadcast_chunks_integer(A, LDA)

  Broadcast with chunks of ~2GB

`broadcast_chunks_integer8:`()

  File : `mpi/mpi.irp.f_template_97`

      subroutine broadcast_chunks_integer8(A, LDA)

  Broadcast with chunks of ~2GB

`mpi_print:`()

  File : `mpi/mpi.irp.f`

      subroutine mpi_print(string)

  Print string to stdout if the MPI rank is zero.

  Needs:

  `mpi_master` |  |

  Called by:

  `run_slave_main()` |  |