Convert geometry to system_geometry_t for unfragmented calculation Treats entire system as a single monomer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(geometry_type), | intent(in) | :: | geom | |||
| type(system_geometry_t), | intent(out) | :: | sys_geom | |||
| logical, | intent(in) | :: | use_angstrom |
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer, | private | :: | i |
subroutine geometry_to_system_unfragmented(geom, sys_geom, use_angstrom) !! Convert geometry to system_geometry_t for unfragmented calculation !! Treats entire system as a single monomer use mqc_geometry, only: geometry_type type(geometry_type), intent(in) :: geom type(system_geometry_t), intent(out) :: sys_geom logical, intent(in) :: use_angstrom integer :: i ! For unfragmented: n_monomers=1, atoms_per_monomer=natoms sys_geom%n_monomers = 1 sys_geom%atoms_per_monomer = geom%natoms sys_geom%total_atoms = geom%natoms allocate (sys_geom%element_numbers(sys_geom%total_atoms)) allocate (sys_geom%coordinates(3, sys_geom%total_atoms)) ! Convert element symbols to atomic numbers do i = 1, sys_geom%total_atoms sys_geom%element_numbers(i) = element_symbol_to_number(geom%elements(i)) end do ! Store coordinates (convert to Bohr if needed) if (use_angstrom) then sys_geom%coordinates = to_bohr(geom%coords) else sys_geom%coordinates = geom%coords end if end subroutine geometry_to_system_unfragmented