# nuclei

This module contains data relative to the nuclei (coordinates, charge, nuclear repulsion energy, etc). The coordinates are expressed in atomic units.

## EZFIO parameters

`nucl_num```

  Number of nuclei

`nucl_label```

  Nuclear labels

`nucl_charge```

  Nuclear charges

`nucl_coord```

  Nuclear coordinates in the format (:, {x,y,z})

`disk_access_nuclear_repulsion```

  Read/Write Nuclear Repulsion from/to disk [ Write | Read | None ]

  Default: None

`nuclear_repulsion```

  Nuclear repulsion (Computed automaticaly or Read in the EZFIO)

## Providers

`center_of_mass`

  File : `nuclei/nuclei.irp.f`

      double precision, allocatable   :: center_of_mass       (3)

  Center of mass of the molecule

  Needs:

  `element_name` `nucl_charge` | `nucl_coord` | `nucl_num`

  Needed by:

  `inertia_tensor` |  |

`element_mass`

  File : `nuclei/nuclei.irp.f`

      character*(4), allocatable      :: element_name (0:127)
      double precision, allocatable   :: element_mass (0:127)

  Array of the name of element, sorted by nuclear charge (integer)

  Needs:

  `mpi_master` |  |

  Needed by:

  `center_of_mass` | `inertia_tensor` |

`element_name`

  File : `nuclei/nuclei.irp.f`

      character*(4), allocatable      :: element_name (0:127)
      double precision, allocatable   :: element_mass (0:127)

  Array of the name of element, sorted by nuclear charge (integer)

  Needs:

  `mpi_master` |  |

  Needed by:

  `center_of_mass` | `inertia_tensor` |

`inertia_tensor`

  File : `nuclei/inertia.irp.f`

      double precision, allocatable   :: inertia_tensor       (3,3)

  Inertia tensor

  Needs:

  `center_of_mass` `element_name` | `nucl_charge` `nucl_coord` | `nucl_num`

  Needed by:

  `inertia_tensor_eigenvectors` |  |

`inertia_tensor_eigenvalues`

  File : `nuclei/inertia.irp.f`

      double precision, allocatable   :: inertia_tensor_eigenvectors  (3,3)
      double precision, allocatable   :: inertia_tensor_eigenvalues   (3)

  Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation.

  Needs:

  `inertia_tensor` |  |

`inertia_tensor_eigenvectors`

  File : `nuclei/inertia.irp.f`

      double precision, allocatable   :: inertia_tensor_eigenvectors  (3,3)
      double precision, allocatable   :: inertia_tensor_eigenvalues   (3)

  Eigenvectors/eigenvalues of the inertia_tensor. Used to find normal orientation.

  Needs:

  `inertia_tensor` |  |

`nucl_coord`

  File : `nuclei/nuclei.irp.f`

      double precision, allocatable   :: nucl_coord   (nucl_num,3)

  Nuclear coordinates in the format (:, {x,y,z})

  Needs:

  `ezfio_filename` `mpi_master` | `nucl_charge` `nucl_label` | `nucl_num` `output_wall_time_0`

  Needed by:

  `ao_deriv2_x` `ao_deriv_1_x` `ao_dipole_x` `ao_integrals_n_e` `ao_integrals_n_e_per_atom` `ao_overlap` `ao_overlap_abs` | `ao_pseudo_integrals_local` `ao_pseudo_integrals_non_local` `ao_spread_x` `ao_two_e_integral_alpha` `ao_two_e_integral_erf_schwartz` `ao_two_e_integral_schwartz` `ao_two_e_integrals_erf_in_map` | `ao_two_e_integrals_in_map` `center_of_mass` `inertia_tensor` `nucl_coord_transp` `nucl_dist_2` `nuclear_repulsion`

`nucl_coord_transp`

  File : `nuclei/nuclei.irp.f`

      double precision, allocatable   :: nucl_coord_transp    (3,nucl_num)

  Transposed array of nucl_coord

  Needs:

  `nucl_coord` | `nucl_num` |

`nucl_dist`

  File : `nuclei/nuclei.irp.f`

      double precision, allocatable   :: nucl_dist_2  (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_x      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_y      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_z      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist    (nucl_num,nucl_num)

  nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors

  Needs:

  `nucl_coord` | `nucl_num` |

  Needed by:

  `nucl_dist_inv` |  |

`nucl_dist_2`

  File : `nuclei/nuclei.irp.f`

      double precision, allocatable   :: nucl_dist_2  (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_x      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_y      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_z      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist    (nucl_num,nucl_num)

  nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors

  Needs:

  `nucl_coord` | `nucl_num` |

  Needed by:

  `nucl_dist_inv` |  |

`nucl_dist_inv`

  File : `nuclei/nuclei.irp.f`

      double precision, allocatable   :: nucl_dist_inv        (nucl_num,nucl_num)

  Inverse of the distance between nucleus I and nucleus J

  Needs:

  `nucl_dist_2` | `nucl_num` |

`nucl_dist_vec_x`

  File : `nuclei/nuclei.irp.f`

      double precision, allocatable   :: nucl_dist_2  (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_x      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_y      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_z      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist    (nucl_num,nucl_num)

  nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors

  Needs:

  `nucl_coord` | `nucl_num` |

  Needed by:

  `nucl_dist_inv` |  |

`nucl_dist_vec_y`

  File : `nuclei/nuclei.irp.f`

      double precision, allocatable   :: nucl_dist_2  (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_x      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_y      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_z      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist    (nucl_num,nucl_num)

  nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors

  Needs:

  `nucl_coord` | `nucl_num` |

  Needed by:

  `nucl_dist_inv` |  |

`nucl_dist_vec_z`

  File : `nuclei/nuclei.irp.f`

      double precision, allocatable   :: nucl_dist_2  (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_x      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_y      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist_vec_z      (nucl_num,nucl_num)
      double precision, allocatable   :: nucl_dist    (nucl_num,nucl_num)

  nucl_dist : Nucleus-nucleus distances nucl_dist_2 : Nucleus-nucleus distances squared nucl_dist_vec : Nucleus-nucleus distances vectors

  Needs:

  `nucl_coord` | `nucl_num` |

  Needed by:

  `nucl_dist_inv` |  |

`nuclear_repulsion`

  File : `nuclei/nuclei.irp.f`

      double precision        :: nuclear_repulsion

  Nuclear repulsion energy

  Needs:

  `disk_access_nuclear_repulsion` `mpi_master` | `nucl_charge` `nucl_coord` | `nucl_num` `output_wall_time_0`

  Needed by:

  `ci_energy` `core_energy` `core_energy_erf` | `hf_energy` `psi_energy_with_nucl_rep` | `pt2_e0_denominator` `scf_energy`

`slater_bragg_radii`

  File : `nuclei/atomic_radii.irp.f`

      double precision, allocatable   :: slater_bragg_radii   (100)

  atomic radii in Angstrom defined in table I of JCP 41, 3199 (1964) Slater execpt for the Hydrogen atom where we took the value of Becke (1988, JCP)

  Needed by:

  `slater_bragg_radii_per_atom` | `slater_bragg_radii_ua` |

`slater_bragg_radii_per_atom`

  File : `nuclei/atomic_radii.irp.f`

      double precision, allocatable   :: slater_bragg_radii_per_atom  (nucl_num)

  Needs:

  `nucl_charge` | `nucl_num` | `slater_bragg_radii`

  Needed by:

  `slater_bragg_type_inter_distance` |  |

`slater_bragg_radii_per_atom_ua`

  File : `nuclei/atomic_radii.irp.f`

      double precision, allocatable   :: slater_bragg_radii_per_atom_ua       (nucl_num)

  Needs:

  `nucl_charge` | `nucl_num` | `slater_bragg_radii_ua`

  Needed by:

  `slater_bragg_type_inter_distance_ua` |  |

`slater_bragg_radii_ua`

  File : `nuclei/atomic_radii.irp.f`

      double precision, allocatable   :: slater_bragg_radii_ua        (100)

  Needs:

  `slater_bragg_radii` |  |

  Needed by:

  `slater_bragg_radii_per_atom_ua` |  |

`slater_bragg_type_inter_distance`

  File : `nuclei/atomic_radii.irp.f`

      double precision, allocatable   :: slater_bragg_type_inter_distance     (nucl_num,nucl_num)

  Needs:

  `nucl_num` | `slater_bragg_radii_per_atom` |

`slater_bragg_type_inter_distance_ua`

  File : `nuclei/atomic_radii.irp.f`

      double precision, allocatable   :: slater_bragg_type_inter_distance_ua  (nucl_num,nucl_num)

  Needs:

  `nucl_num` | `slater_bragg_radii_per_atom_ua` |