Both sides previous revision Previous revision Next revision | Previous revision |
franck-condon_calculations [2024/07/12 08:37] – external edit 127.0.0.1 | franck-condon_calculations [2025/02/07 13:01] (current) – rauhut |
---|
''FCON'',//options// [fcon] | ''FCON'',//options// [fcon] |
| |
The ''FCON'' program allows for the calculation of Franck-Condon factors based on potential energy surfaces obtained from the ''SURF'' and ''XSURF'' programs and vibrational wavefunctions as provided by the ''VSCF'' or ''VCI'' programs. Duschinsky effects may or may not be included. These can either be applied to the vibrational wavefunction (of the vibrational ground state) or the potential by using the ''PESTRANS'' program. The latter possibility is the recommended one as it is significantly faster. The ''FCON'' program including Duschinsky rotations can only be used with analytical representations of the potential energy surfaces. A prescreening of the Franck-Condon factors without Duschinsky effects at the ''VSCF'' level is used to reduce the computational effort for correlated levels, e.g. ''VCI''. Note that, Franck-Condon factors at the uncorrelated ''VSCF'' level including Duschinsky effects are usually of fairly poor quality. As the calculation of Franck-Condon factors often involves very high quantum numbers for the vibrational states of the final electronic state, very high excitation levels must be enabled in the ''VCI'' calculations, i.e. see keyword ''LEVEX''. As a consequence, the ''SCALE'' parameter in ''SURF'' calculations needs to be modified in most applications. For details see:\\ | The ''FCON'' program allows for the calculation of Franck-Condon factors based on potential energy surfaces obtained from the ''XSURF'' program and vibrational wavefunctions as provided by the ''VSCF'' or ''VCI'' programs. Duschinsky effects may or may not be included. These can either be applied to the vibrational wavefunction (of the vibrational ground state) or the potential by using the ''PESTRANS'' program. The latter possibility is the recommended one as it is significantly faster. The ''FCON'' program including Duschinsky rotations can only be used with analytical representations of the potential energy surfaces. A prescreening of the Franck-Condon factors without Duschinsky effects at the ''VSCF'' level is used to reduce the computational effort for correlated levels, e.g. ''VCI''. Note that, Franck-Condon factors at the uncorrelated ''VSCF'' level including Duschinsky effects are usually of fairly poor quality. As the calculation of Franck-Condon factors often involves very high quantum numbers for the vibrational states of the final electronic state, very high excitation levels must be enabled in the ''VCI'' calculations, i.e. see keyword ''LEVEX''. For details see:\\ |
P. Meier, G. Rauhut, //Comparison of methods for calculating Franck-Condon factors beyond the harmonic approximation: how important are Duschinsky rotations?//, [[https://dx.doi.org/10.1080/00268976.2015.1074740|Mol. Phys.]] **113**, 3859 (2015).\\ | P. Meier, G. Rauhut, //Comparison of methods for calculating Franck-Condon factors beyond the harmonic approximation: how important are Duschinsky rotations?//, [[https://dx.doi.org/10.1080/00268976.2015.1074740|Mol. Phys.]] **113**, 3859 (2015).\\ |
G. Rauhut, //Anharmonic Franck-Condon factors for the ˜X2B1⟵˜X1A1 photoionization of ketene//, J. Phys. Chem. A **119**, (2015) 10264.\\ | G. Rauhut, //Anharmonic Franck-Condon factors for the ˜X2B1⟵˜X1A1 photoionization of ketene//, J. Phys. Chem. A **119**, (2015) 10264.\\ |
The following //options// are available: | The following //options// are available: |
| |
* **''DUSCH''=//n//** This keyword controls the Duschinsky transformation. ''DUSCH=0'' entirely neglects the Duschinsky transformation - including the shift-vector. ''DUSCH=1'' switches the Duschinsky transformation on and the algorithm of Doktorov will be used. Note that this option is only limited to 3-atomic systems. ''DUSCH=3'' neglects the Duschinsky rotation, but includes the shift-vector. This is the default option as the Duschinsky rotation can be passed to the ''PESTRANS'' program, which is much more efficient. | * **''DUSCH''=//n//** This keyword controls the Duschinsky transformation. ''DUSCH=0'' entirely neglects the Duschinsky transformation - including the shift-vector. ''DUSCH=3'' neglects the Duschinsky rotation, but includes the shift-vector. This is the default option as the Duschinsky rotation can be passed to the ''PESTRANS'' program, which is much more efficient. |
* **''ECKART''=//n//** ''ECKART=1'' (default) determines the Eckart transformation matrix as described in the literature. ''ECKART=0'' approximates the Eckart transformation matrix by a unit matrix, which is meaningless unless for debugging purposes or for some very special tests. | * **''ECKART''=//n//** ''ECKART=1'' (default) determines the Eckart transformation matrix as described in the literature. ''ECKART=0'' approximates the Eckart transformation matrix by a unit matrix, which is meaningless unless for debugging purposes or for some very special tests. |
* **''MAXSEL''=//n//** ''MAXSEL=n'' determines the maximum number of Franck-Condon factors to be selected. By default //n// is set to 100. | * **''MAXSEL''=//n//** ''MAXSEL=n'' determines the maximum number of Franck-Condon factors to be selected. By default //n// is set to 100. |
* **''WF''=//type//** Defines the type of the wavefunction. ''WF=VSCF'' specifies state-specific ''VSCF'' wavefunctions for both levels, while ''WF=VCI'' denotes state-specific ''VCI'' wavefunctions. Alternatively, one may use ''WF=VSCFG'' for ground-state based VSCF wavefunctions and ''WF=VCIG'' for ground-state based VCI wavefunctions. The default is ''WF=VCI''. | * **''WF''=//type//** Defines the type of the wavefunction. ''WF=VSCF'' specifies state-specific ''VSCF'' wavefunctions for both levels, while ''WF=VCI'' denotes state-specific ''VCI'' wavefunctions. Alternatively, one may use ''WF=VSCFG'' for ground-state based VSCF wavefunctions and ''WF=VCIG'' for ground-state based VCI wavefunctions. The default is ''WF=VCI''. |
| |
Some of the keywords as described for the ''VCI'' program are also valid for the ''FCON'' program, i.e. ''%%CITYPE, LEVEX, CIMAX, DIPOLE, NDIM, NBAS, NGRID, BASIS%%'' and ''INFO''. | Some of the keywords as described for the ''VCI'' program are also valid for the ''FCON'' program, i.e. ''%%CITYPE, LEVEX, CIMAX, NDIM, NBAS, BASIS%%'' and ''INFO''. |
| |
==== Information Handling ==== | ==== Information Handling ==== |
hf | hf |
| |
{surf,start1D=label1,sym=auto ! reads the PES of the final electronic | {xsurf,sym=auto ! read in the PES of the initial electronic state and assign it to surface label 1 |
disk,where=home,extern='final.pot'} ! state from 'final.pot' | disk,where=home,auto=1,extern='final.pot'} |
| |
poly | |
vscf,type=poly ! saves VSCF wavefunction in record 5750.2 | |
vci,type=poly,export=fcon ! saves VCI wavefunction in record 5800.2 | |
| |
{surf,start1D=label1,sym=auto ! reads the PES of the initial electronic | |
disk,where=home,save=5601.2,extern='initial.pot'} ! state from 'initial.pot' | |
{poly | {poly |
disk,save=5751.2} | disk,auto=1} ! read surface 1 from disk and transform it to polynomials |
{vscf,type=poly | {vscf,pot=poly |
disk,save=5751.2} | disk,auto=1} ! read polynomials for surface 1 from disk and perform a VSCF calculation |
| |
{fcon,wf=vscfg,sel=1 ! selection of the FCFs based on a VSCF calc. | {xsurf,sym=auto ! read in the PES of the final electronic state and assign it to surface label 2 |
disk,surf1=5600.2,surf2=5601.2} | disk,where=home,auto=2,extern='initial.pot'} |
| |
{poly,vam=0 ! it is important to switch off VAM terms | |
disk,start=5601.2,save=5751.2} ! for pestrans | |
{pestrans,umat=1 ! rotate the PES of initial.pot in the | |
! coordinates of final.pot | |
disk,where=home,save=5601.2 ! umat=1 save the Duschinsky matrix in the | |
disk,extern='final.pot'} ! U-matrix for the VCI program, the extern file | |
! provides the hessian of the other system | |
| |
{poly, | |
disk,start=5600.2,save=5750.2} | |
{vscf,type=poly ! saves VSCF wavefunction in record 5750.2 | |
disk,save=5750.2} | |
{vci,type=poly,export=fcon ! saves VCI wavefunction in record 5800.2 | |
disk,save=5800.2} | |
{poly | {poly |
disk,start=5601.2,save=5751.2} | disk,auto=2} ! read surface 2 from disk and transform it to polynomials |
{vscf,type=poly, ! saves VSCF wavefunction in record 5751.2 | {vscf,pot=poly |
disk,save=5751.2} | disk,auto=2} ! read polynomials for surface 2 from disk and perform a VSCF calculation |
{vci,type=poly,export=fcon ! saves VCI wavefunction in record 5801.2 | |
disk,save=5801.2} | {fcon,wf=vscfg,sel=1 ! perform a Franck-Condon calculation at the VSCF level in order to |
| disk,initial=2,final=1} ! identify important transitions, which shall be considered later in the VCI part |
| |
| {poly,vam=0 ! transform PES 2 to polynomials without adding the Watson correction term |
| disk,auto=2} ! as a pseudopotential to (this is needed for the subsequent transformation) |
| |
| {pestrans,transtype=fcf,umat=1 ! transform PES 2 (initial) to the axes (normal coordinates) of PES 1 (final state) |
| disk,where=home,auto=2 ! (Duschinsky transformation) |
| disk,extern='initial.pot'} |
| |
| {poly ! transform the transformed PES to polynomials |
| disk,auto=2} |
| {vscf,pot=poly ! do a VSCF calculation for surface 2 |
| disk,auto=2} |
| {vci,pot=poly,export=fcon ! perform a VCI calculation for surface 2 and export the VCI vectors for |
| disk,auto=2} ! the Franck-Condon program |
| |
| {poly ! transform surface 1 to polynomials |
| disk,auto=1} |
| {vscf,pot=poly ! perform a VSCF calculation for surface 1 |
| disk,auto=1} |
| {vci,pot=poly,export=fcon ! perform a VCI calculation for surface 1 and export the VCI vectors for |
| disk,auto=1} ! the Franck-Condon program |
| |
| {fcon ! perform a Franck-Condon calculation on the basis of the selected VCI states |
| disk,initial=2,final=1} |
| |
{fcon ! calculate the selected FCFs | put,irspec,h2o_pe.gnu ! generate a GNU file with the PE spectrum |
disk,surf1=5600.2,surf2=5601.2 ! disk directive is not necessary here, | </code> |
disk,vscf1=5750.2,vscf2=5751.2 ! but one can see the standard values this way | |
disk,vci1=5800.2,vci2=5801.2} ! 1 correspond to the final state; | |
! 2 correspond to the initial state | |
| |
put,irspec,h2o_pe.gnu ! generate a GNU file with the PE spectrum | <!-- |
</code> | |
==== Example 2 ==== | ==== Example 2 ==== |
| |
put,irspec,keten-fcon.gnu | put,irspec,keten-fcon.gnu |
</code> | </code> |
| --> |
| |
===== ELECTRONIC-VIBRATIONAL SPECTRA (EVSPEC) ===== | ===== ELECTRONIC-VIBRATIONAL SPECTRA (EVSPEC) ===== |
| |
The following example shows a general program flow involving the ''EVSPEC'' calculations. | The following example shows a general program flow involving the ''EVSPEC'' calculations. |
| |
| <code> |
| memory,40,m |
| |
| basis=vdz |
| geometry={ |
| H ,, 2.3971901752 , -2.3962403391 , 0.0000000000 |
| S ,, -0.0873406755 , -1.8178592700 , 0.0000000000 |
| S ,, 0.0117763411 , 1.8933936636 , 0.0000000000 |
| } |
| |
| basis=vdz |
| hf |
| |
| {xsurf ! reads the PES of the initial electronic |
| disk,where=home,extern='initial.pot'} ! state from 'initial.pot' |
| |
| poly ! Transform the initial PES to the |
| vscf,pot=poly ! representation in terms of the normal |
| vci,pot=poly ! coordinates of the final PES |
| ! (stored in 'final.pot'), and fit it |
| {pestrans,info=1 ! with polynomial functions. |
| disk,where=home,auto=1,extern='final.pot'} ! All results for the initial surface |
| ! are stored with the reference number |
| {poly ! given by the keyword auto=1. |
| disk,auto=1} |
| {vscf,pot=poly ! Run VSCF calculations for initial states. |
| disk,auto=1} |
| {vci,pot=poly,export='EVSPEC' ! Run VCI calculations for initial states. |
| disk,auto=1} |
| |
| {xsurf ! Reads the PES of the final electronic |
| disk,where=home,auto=2,extern='final.pot'} ! state from 'final.pot'. |
| |
| {poly ! Provides the polynomial representation |
| disk,auto=2} ! of the final PES. |
| {vscf,pot=poly ! Run VSCF calculations for generating |
| disk,auto=2} ! vibrational modals for the final PES. |
| |
| {evspec,method=rwf,start=1,final=2,info=1 ! Simple input for the RWF calculation |
| graph, evsdump='hs2_rwf.gnu'} |
| </code> |
| |
| <!-- |
<code> | <code> |
memory,20,m | memory,20,m |
| |
</code> | </code> |
| --> |
| |