args = parser.parse_args()
        args_success = True
finally:
    args_success = comm.bcast(args_success, root=0)

if not args_success:
    print(mpi_rank, "exiting")
    exit(0)

args = comm.bcast(args, root=0)

### ------------------------------------------------------
### Evaluate the same molecule orbitals on all mpi ranks
### ------------------------------------------------------

mol_grid_orb = cgo.Cp2kGridOrbitals(0, 1, single_precision=False)
mol_grid_orb.read_cp2k_input(args.cp2k_input_file2)
mol_grid_orb.read_xyz(args.xyz_file2)
mol_grid_orb.read_basis_functions(args.basis_set_file2)
mol_grid_orb.load_restart_wfn_file(args.wfn_file2,
                                   n_occ=args.nhomo2,
                                   n_virt=args.nlumo2)

print("R%d/%d: loaded G2, %.2fs" % (mpi_rank, mpi_size, (time.time() - time0)))
sys.stdout.flush()
time1 = time.time()

eval_reg = common.parse_eval_region_input(args.eval_region,
                                          mol_grid_orb.ase_atoms,
                                          mol_grid_orb.cell)
Пример #2
0
output_dir = args.output_dir if args.output_dir[
    -1] == '/' else args.output_dir + "/"

### ------------------------------------------------------
### Evaluate orbitals on the real-space grid
### ------------------------------------------------------

n_homo = args.n_homo
n_lumo = args.n_lumo

n_homo_range = n_homo
if args.charge_dens or args.spin_dens:
    n_homo_range = None

mol_grid_orb = cgo.Cp2kGridOrbitals(mpi_rank,
                                    mpi_size,
                                    comm,
                                    single_precision=False)
mol_grid_orb.read_cp2k_input(args.cp2k_input_file)
mol_grid_orb.read_xyz(args.xyz_file)
if not args.do_not_center_atoms:
    mol_grid_orb.center_atoms_to_cell()
mol_grid_orb.read_basis_functions(args.basis_set_file)
mol_grid_orb.load_restart_wfn_file(args.wfn_file,
                                   n_occ=n_homo_range,
                                   n_virt=n_lumo)

eval_reg = common.parse_eval_region_input(args.eval_region,
                                          mol_grid_orb.ase_atoms,
                                          mol_grid_orb.cell)

mol_grid_orb.calc_morbs_in_region(args.dx,
    e_arr = None

max_fwhm = np.max(args.fwhms)
if e_arr is not None:
    sel_emin = np.min(e_arr) - 2.0 * max_fwhm
    sel_emax = np.max(e_arr) + 2.0 * max_fwhm
else:
    sel_emin = None
    sel_emax = None

### ------------------------------------------------------
### Evaluate orbitals on the real-space grid
### ------------------------------------------------------

cp2k_grid_orb = cgo.Cp2kGridOrbitals(mpi_rank,
                                     mpi_size,
                                     mpi_comm=comm,
                                     single_precision=True)
cp2k_grid_orb.read_cp2k_input(args.cp2k_input_file)
cp2k_grid_orb.read_xyz(args.xyz_file)
cp2k_grid_orb.center_atoms_to_cell()
cp2k_grid_orb.read_basis_functions(args.basis_set_file)
cp2k_grid_orb.load_restart_wfn_file(args.wfn_file,
                                    emin=sel_emin,
                                    emax=sel_emax,
                                    n_occ=args.n_homo,
                                    n_virt=args.n_lumo)

print("R%d/%d: loaded wfn, %.2fs" % (mpi_rank, mpi_size,
                                     (time.time() - time0)))
sys.stdout.flush()
time1 = time.time()