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)
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()