|
MPI-SCATCI 2.0
An MPI version of SCATCI
|
Further processing of the diagonalization results. More...
Data Types | |
| type | OuterInterface |
| SWINTERF-inspired post-processing object. More... | |
Functions/Subroutines | |
| subroutine, public | postprocess (scatci_input, solutions) |
| Full post-processing pass. | |
| subroutine | redistribute_solutions (scatci_input, solutions) |
| Redistribute solutions from groups to everyone. | |
| subroutine | cdenprop_properties (scatci_input, iitf, solutions, properties_all) |
| Evaluate multipoles in CDENPROP. | |
| subroutine | outer_interface (scatci_input, iitf, solutions, inner_properties) |
| Extract data needed by outer-region codes. | |
| subroutine | init_outer_interface (this, input) |
| Allocate memory for channel information. | |
| subroutine | deinit_outer_interface (this) |
| Release memory held by this object. | |
| subroutine | setup_amplitudes (this, opts) |
| Initialize raw boundary amplitudes (in integral library) | |
| subroutine | extract_data (this, opts, prop, solution) |
| Get interface data. | |
| subroutine | write_data (this, isym, opts, iitf, prop, solution) |
| Write interface data. | |
| subroutine | get_channel_info (this, opts, prop) |
| Assemble the list of outer channels. | |
| subroutine | get_boundary_data (this, opts, prop, solution) |
| Evaluate boundary amplitudes for propagation and RMT. | |
| subroutine | write_channel_info (this, nchset, opts, luchan, cform, prop) |
| Write the channel list to disk. | |
| subroutine | write_boundary_data (this, nrmset, opts, lurmt, rform, prop, solution) |
| Write the R-matrix amplitudes to disk. | |
| subroutine | get_channel_couplings (this, ismax, ntarg, target_properties, alpha0, alpha2, use_pol) |
| Evaluate long-range channel coupling coefficients. | |
| subroutine | write_rmt_data (input, iitf, inner_properties, solutions, intf) |
| Compose the RMT molecular input data file. | |
| subroutine | generate_couplings (maxl, n_rg, rg, lm_rg) |
| Evaluate angular couplings for outer region of RMT. | |
Variables | |
| integer, parameter | rmt_int = shortint |
| integer, parameter | rmt_real = wp |
Further processing of the diagonalization results.
Contains subroutines that can be used to extract further interesting data from the eigenvectors. In particular, this means extraction of boundary amplitudes for outer region codes (see outer_interface) and calculation of multipole moments, mainly for use in the time-dependent R-matrix code (see cdenprop_properties).
This module currently supports only the UKRmol+ integral format.
|
private |
Evaluate multipoles in CDENPROP.
Calculate properties (multipole moments) of the solutions using CDENPROP library. Only those symmetries that have igh = 1, vecstore = 3 set will be used. This subroutine also assumes that setups for all symmetries are compatible, in particular:
| [in] | SCATCI_input | Input SCATCI namelist data for all symmetries. |
| [in] | iitf | Which outer_interface namelist to consider. |
| [in] | solutions | Eigenvectors and related stuff calculated by the diagonalizer. |
| [out] | properties_all | Table of properties calculated by CDENPROP. |
Definition at line 241 of file Postprocessing_module.F90.
|
private |
Release memory held by this object.
| [in] | this | Interface object to finalize. |
Definition at line 516 of file Postprocessing_module.F90.
|
private |
Get interface data.
This mirros the functionality of SWITERF (UKRmol-out), particularly:
All data are then stored internally for writing.
| [in] | this | Interface object to read. |
| [in] | opts | SCATCI input namelist data. |
| [in] | prop | Target properties. |
| [in] | solution | Eigenvectors and related stuff calculated by the diagonalizer. |
Definition at line 594 of file Postprocessing_module.F90.
|
private |
Evaluate angular couplings for outer region of RMT.
Precompute the necessary Gaunt coefficients.
| [in] | maxl | Limit on angular quantum number. |
| [out] | n_rg | Number of calculated Gaunt coefficients. |
| [out] | rg | Values of the non-zero Gaunt coefficients. |
| [out] | lm_rg | Integer sextets l1,m1,l2,m2,l3,m3 for each of the non-zero Gaunt coefficients. |
Definition at line 1886 of file Postprocessing_module.F90.
|
private |
Evaluate boundary amplitudes for propagation and RMT.
Calculates the contribution to each channel amplitude per eigenstate. The master process retrieves the raw boundary amplitudes from the integral library, then distributes them in the BLACS context of the solution vector, where the multiplication takes place.
The boundary amplitudes evaluated at the R_matrix sphere (but not those evaluated inside) are then collected to master process, who will need to write them to the record-based swinterf output file.
| [in] | this | Interface object to update. |
| [in] | opts | SCATCI namelist information for this irreducible representation. |
| [in] | prop | Results from denprop. |
| [in] | solution | Eigenvectors and related stuff calculated by the diagonalizer. |
Definition at line 817 of file Postprocessing_module.F90.
|
private |
Evaluate long-range channel coupling coefficients.
This is a completely rewritten version of the original SWINTERF routine SWASYMC. The coupling potentials for the outer region calculation are defined as:
\[ V_{ij}(r)=\sum_{\lambda=0}^{\infty}\frac{1}{r^{\lambda+1}}\times \nonumber \\ \times\underbrace{\sum_{m=-\lambda}^{\lambda}\langle{\cal Y}_{l_{i},m_{i}}\vert {\cal {Y}}_{\lambda ,m}\vert{\cal Y}_{l_{j},m_{j}}\rangle \sqrt{\frac{4\pi}{2\lambda+1}}\underbrace{\sqrt{\frac{4\pi}{2\lambda+1}}\left( T_{ij}^{\lambda m} - \langle \Phi_{i}\vert\Phi_{j}\rangle \sum_{k=1}^{Nuclei}Z_{k}{\cal Y}_{\lambda,m}(\hat{\mathbf{R}}_{k})R_{k}^{\lambda}\right)}_{Q_{ij}^{\lambda m}}}_{a_{ij\lambda}} . \]
This routine calculates the coefficients \( a_{ij\lambda} \) using the information for all channels (i,j) and the target permanent and transition multipole moments \( Q_{ij}^{\lambda m} \). The main difference from SWASYMC is that here the coupling coefficients for the real spherical harmonics are calculated independently of the molecular orientation, symmetry and the lambda value. Tests were performed for pyrazine ( \( D_{2h} \)), uracil ( \( C_s \)) and water ( \( C_{2v} \)). The inclusion of the additional polarization potential is also possible, but note that only the spherical part is taken into account at the moment (see the comment for the variable alpha2).
| [in,out] | this | Interface object to update. |
| [in] | ismax | Maximum lambda value for the multipole potential contribution. |
| [in] | ntarg | Total number of target states. |
| [in] | target_properties | Denprop data. |
| [in] | alpha0 | Spherical part of the ground state target polarizability. |
| [in] | alpha2 | Non-spherical part of the ground state target polarizability. Note that this has not been implemented in this subroutine yet since it is not clear to me what is the convention defining this value in the old code. |
| [in] | use_pol | If .true. then the coefficients for the polarization potential will be constructed. |
Definition at line 1309 of file Postprocessing_module.F90.
|
private |
Assemble the list of outer channels.
Adapted from SWCHANL (UKRmol-out). Reads the target information from fort.24 and, with the knowledge of the (N+1)-electron setup, determines the individual channels.
| [in,out] | this | Interface object to update. |
| [in] | opts | SCATCI namelist information for this irreducible representation. |
| [in] | prop | Target properties. |
Definition at line 689 of file Postprocessing_module.F90.
|
private |
Allocate memory for channel information.
| [in] | this | Interface object to initialize. |
| [in] | input | Input SCATCI namelist data for all symmetries. |
Definition at line 466 of file Postprocessing_module.F90.
|
private |
Extract data needed by outer-region codes.
This subroutine does the following:
Essentially, it should cover the work of SWINTERF and RMT_INTERFACE. At the moment, only the symmetries marked with vecstore with the second least-significant bit set (i.e., 2, 5 or 7) are processed in the outer interface.
The outer interface has an automatic support for the contracted virtual orbitals. When the number of continuum orbitals specified in GBTOlib (scatci_integrals) is different than the number of CI target continuum orbitals specified in the input for MPI-SCATCI, the difference (i.e. target orbitals included as fake continuum) are automatically recognized as contracted virtual orbitals. This is equivalent to the NVO infrastructure in SWINTERF. If more fine-grained control over calculation of NVO is desired, use the legacy SCATCI with SWINTERF instead.
| [in] | SCATCI_input | Input SCATCI namelist data for all symmetries. |
| [in] | iitf | Which outer_interface namelist to use. |
| [in] | solutions | Eigenvectors and related stuff calculated by the diagonalizer. |
| [out] | inner_properties | Table of (N+1) properties calculated by CDENPROP. |
Definition at line 391 of file Postprocessing_module.F90.
| subroutine, public Postprocessing_module::postprocess | ( | type(optionsset), intent(in) | scatci_input, |
| type(solutionhandler), dimension(:), intent(inout), allocatable | solutions ) |
Full post-processing pass.
Call the post-processing sequence, starting with evaluation of inner-region dipole moments, followed by extraction of information useful for the outer region.
| [in] | SCATCI_input | Input SCATCI namelist data for all symmetries. |
| [in] | solutions | Eigenvectors and related stuff calculated by the diagonalizer. |
Definition at line 105 of file Postprocessing_module.F90.
|
private |
Redistribute solutions from groups to everyone.
This subroutine needs to be called before using solutions in other subroutines of this module. The diagonalizations may have run in MPI groups and so the eigenvectors are not evenly distributed among all processes, which would cause comlications in communication. This subroutine will redistribute the eigenvectors from groups to the MPI world group.
| [in] | SCATCI_input | Input SCATCI namelist data for all symmetries. |
| [in] | solutions | Eigenvectors and related stuff calculated by the diagonalizer. |
Definition at line 141 of file Postprocessing_module.F90.
|
private |
Initialize raw boundary amplitudes (in integral library)
| [in] | this | Interface object to read. |
| [in] | opts | SCATCI input namelist data. |
Definition at line 561 of file Postprocessing_module.F90.
|
private |
Write the R-matrix amplitudes to disk.
Writes the information into the selected set of the R-matrix output file (fort.21). Adapted from WRITRM (UKRmol-out). The boundary amplitudes are written using derived-type I/O, so that if they are distributed, the data are gathered during the writing one column by another. This is to avoid the need to fetch the complete boundary amplitude matrix, which would negatively affect memory scaling.
There is a bug (CMPLRLIBS-35389) in the Intel oneAPI compiler*, which prevents use of the derived-type I/O with large datasets. To overcome this bug, a temporary workaround is introduced. In case of Intel compiler the amplitudes are actually all collected by the master and written at once using a standard defined I/O. This construction can be removed once the compiler is fixed.
| [in] | this | Interface object to update. |
| [in] | nrmset | Output data set in the file unit. |
| [in] | opts | SCATCI namelist information for this irreducible representation. |
| [in] | lurmt | Unit number for boundary amplitudes output. |
| [in] | rform | 'F'/'U' for formatted or unformatted output. |
| [in] | prop | Results from denprop. |
| [in] | solution | Eigenvectors and related stuff calculated by the diagonalizer. |
Definition at line 1117 of file Postprocessing_module.F90.
|
private |
Write the channel list to disk.
Adapted from WRITCH (UKRmol-out). Writes the information into the selected set of the channel output file fort.10.
| [in] | this | Interface object to update. |
| [in] | nchset | Output data set in the file unit. |
| [in] | opts | SCATCI namelist information for this irreducible representation. |
| [in] | luchan | Unit number for channel info output. |
| [in] | cform | 'F'/'U' for formatted or unformatted output. |
| [in] | prop | Results from denprop. |
Definition at line 991 of file Postprocessing_module.F90.
|
private |
Write interface data.
Updates the channel and R-matrix dump files (fort.10 and fort.21, respectively) by adding/overwriting a data set.
| [in] | this | Interface object to read. |
| [in] | isym | Output set number for this irreducible representation. |
| [in] | opts | SCATCI input namelist data. |
| [in] | iitf | Which outer_interface namelist to use. |
| [in] | prop | Target properties. |
| [in] | solution | Eigenvectors and related stuff calculated by the diagonalizer. |
Definition at line 650 of file Postprocessing_module.F90.
|
private |
Compose the RMT molecular input data file.
Based on generate_data_for_rmt from the original program rmt_interface (UKRmol-out).
This subroutine writes the input data file used by molecular version of RMT. The file is always called 'molecular_data', it is a binary stream file and it contains the following data:
| [in] | input | Input SCATCI namelist data for all symmetries. |
| [in] | iitf | Which outer_interface namelist to use. |
| [in] | inner_properties | Results from cdenprop. |
| [in] | solutions | Results from diagonalization. |
| [in] | intf | Extracted channel and boundary data. |
Definition at line 1543 of file Postprocessing_module.F90.
|
private |
Definition at line 45 of file Postprocessing_module.F90.
|
private |
Definition at line 46 of file Postprocessing_module.F90.