RAS_FRAG_SETS Usage

Hi–The online and PDF manuals for RASCI[1,2] mention the keyword RAS_FRAG_SETS, but the description (‘Sets the number of atoms in each fragment’) is suspiciously the same as that for RAS_NFRAG_ATOMS, and doesn’t match the default or options. It looks like this would set canonical orbital subspaces in which to carry out localizations.

  • Are there any examples with that keyword in action? I couldn’t find any
  • Can disjoint orbital sets be specified? The default setting RAS1,RAS2,RAS3 takes advantage of these spaces being disjoint and consecutive by orbital number, which might not be the case in general.

Thanks; Chris

Dear Chris,

indeed, the description for the RAS_FRAG_SETS is incorrect (needs to be corrected).
It should be: “Defines the number of orbitals in each disjoint set to perform orbital localization”.
The disjoint orbital sets can be specified with RAS_FRAG_SETS to modify the default scheme based on RAS1, RAS2 and RAS3.
Below I’m copying a simple example of the use of these keywords (ethylene dimer).

I hope this helps.
Let me know if you need any further clarification.

Best regards,
David

$molecule
0 1
C 0. 0. 0.665547
C 0. 0. -0.665547
H 0. 0.923577 1.23971
H 0. -0.923577 1.23971
H 0. -0.923577 -1.23971
H 0. 0.923577 -1.23971
C 3.5 0. 0.665547
C 3.5 0. -0.665547
H 3.5 0.923577 1.23971
H 3.5 -0.923577 1.23971
H 3.5 -0.923577 -1.23971
H 3.5 0.923577 -1.23971
$end

$rem
jobtype sp
exchange hf
basis 6-31g
max_cis_cycles 50
!RASCI
correlation rasci
ras_roots 3
ras_act 4
ras_elec 4
ras_occ 14
ras_spin_mult 1
!Fragments
ras_nfrag 2 ! # of fragments
ras_nfrag_atoms [6,6] ! # of atoms in each fragment
ras_frag_sets [4,10,2,2] ! # disjoint set of orbitals for localization
! we split RAS1 and RAS2 in 2 subsets: 4,10 and 2,2 respectively
! no need to define RAS3
ras_print 2 ! get (more) info from fragment based analysis
!Plot_molden
molden_format true ! print localized orbitals in molden format
print_orbitals 10
$end

Thanks David.

So from your example, I read 4 orbital sets, indexed 1-4, 5-14, 15-16, and 17-18. Is that right?

Given the format then, it doesn’t look possible to include directly say orbital 2 in set 4 (i.e., {1,3,4}, {5-14}, {15,16}, {2,17,18}). Could one accomplish such a thing just by re-ordering the orbitals and setting the RAS_FRAG_SETS input (in other words, does RAS_FRAG_SETS take raw input orbitals, or input orbitals after $occupied?).

Do you know if there is a way like $occupied or $swap_occupied_virtual to re-order virtual orbitals in Q-Chem other than manually modifying the fchk?

Thanks again; Chris

Hi Chris,

right now, there is no neat way to do it with $occupied or $swap_occupied virtual (at least that I know of).

On the other hand, in a RASCI fragment calculation you have the possibility to reorder orbitals within RAS2 using:
RAS_REORDER_FRAG_ACT [i,j,…]
where you can reorganize orbitals in order to better control orbital localization.
This keyword has not been made public, since we wanted to add more flexibility and perform additional testing before it.
As a test to see how it works, you may add the following to the previous input above and compare the results:
RAS_REORDER_FRAG_ACT [18,17,16,15]

Please, let me know if this is helpful and clear enough.

Best regards,
David

Hi David, thank you and indeed that’s clear.

Having a general mechanism for orbital reordering to prepare active space methods would be cool. With fragments, maybe tuples of fragment and orbital number on the fragment (for cases of bringing pre-computed fragment orbitals, it might simplify things).