|
MPI-SCATCI 2.0
An MPI version of SCATCI
|
SWINTERF-inspired post-processing object. More...
Public Member Functions | |
| procedure, public | init (this, input) |
| Allocate memory for channel information. | |
| procedure, public | deinit (this) |
| Release memory held by this object. | |
| procedure, public | setup_amplitudes (this, opts) |
| Initialize raw boundary amplitudes (in integral library) | |
| procedure, public | extract_data (this, opts, prop, solution) |
| Get interface data. | |
| procedure, public | write_data (this, isym, opts, iitf, prop, solution) |
| Write interface data. | |
Public Attributes | |
| integer | maxchan = 10000 |
| Maximal number of channels per irreducible representation. TODO replace by actual number. | |
| integer | maxnmo |
| Maximal number of continuum molecular orbitals. | |
| integer | ntarg |
| Number of outer region states. | |
| integer | nchan |
| Number of outer region channels. | |
| integer | ismax |
| Largest angular momentum transfer considered (a.k.a. lamax). | |
| logical | auto_nvo |
| Automatically determine contracted virtual orbitals. | |
| integer | nfdm |
| Number of radii at which to evaluate the boundary amplitudes. | |
| real(wp) | rmatr |
| R-matrix radius. | |
| real(wp), dimension(:), allocatable | r_points |
| Boundary amplitude evaluation radii. | |
| type(civect), dimension(:), allocatable | wamp |
| Boundary amplitudes (per channel, per eigenstate) for each evaluation radius. | |
| integer, dimension(:), allocatable | idtarg |
| Denprop-to-congen state order permutation. | |
| integer, dimension(:), allocatable | irrchl |
| Irreducible representation of the channel state. | |
| integer, dimension(:), allocatable | ichl |
| Index of target per channel. | |
| integer, dimension(:), allocatable | lchl |
| Projectile angular momentum per channel. | |
| integer, dimension(:), allocatable | mchl |
| Projection of angular momentum per channel. | |
| integer, dimension(:), allocatable | qchl |
| Projectile charge per channel. | |
| real(wp), dimension(:), allocatable | echl |
| Projectile energy per channel. | |
| real(wp), dimension(:,:), allocatable | a |
| Long-range coupling coefficients. | |
| integer, dimension(:), allocatable | core_charges |
| Number of electrons, on each atom, represented by ECPs. | |
Private Member Functions | |
| procedure, private | get_channel_info (this, opts, prop) |
| Assemble the list of outer channels. | |
| procedure, private | get_channel_couplings (this, ismax, ntarg, target_properties, alpha0, alpha2, use_pol) |
| Evaluate long-range channel coupling coefficients. | |
| procedure, private | get_boundary_data (this, opts, prop, solution) |
| Evaluate boundary amplitudes for propagation and RMT. | |
| procedure, private | write_channel_info (this, nchset, opts, luchan, cform, prop) |
| Write the channel list to disk. | |
| procedure, private | write_boundary_data (this, nrmset, opts, lurmt, rform, prop, solution) |
| Write the R-matrix amplitudes to disk. | |
SWINTERF-inspired post-processing object.
This type extracts and stores outer region channels, as well as boundary amplitudes evaluated from the solutions.
Definition at line 55 of file Postprocessing_module.F90.
| procedure, public Postprocessing_module::OuterInterface::deinit | ( | class(outerinterface), intent(inout) | this | ) |
Release memory held by this object.
| [in] | this | Interface object to finalize. |
Definition at line 80 of file Postprocessing_module.F90.
| procedure, public Postprocessing_module::OuterInterface::extract_data | ( | class(outerinterface), intent(inout) | this, |
| type(options), intent(in) | opts, | ||
| type(molecular_properties_data), intent(in) | prop, | ||
| type(solutionhandler), intent(in) | solution ) |
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 83 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 86 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 85 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 84 of file Postprocessing_module.F90.
| procedure, public Postprocessing_module::OuterInterface::init | ( | class(outerinterface), intent(inout) | this, |
| type(interfaceoptions), intent(in) | input ) |
Allocate memory for channel information.
| [in] | this | Interface object to initialize. |
| [in] | input | Input SCATCI namelist data for all symmetries. |
Definition at line 79 of file Postprocessing_module.F90.
| procedure, public Postprocessing_module::OuterInterface::setup_amplitudes | ( | class(outerinterface), intent(inout) | this, |
| type(options), intent(in) | opts ) |
Initialize raw boundary amplitudes (in integral library)
| [in] | this | Interface object to read. |
| [in] | opts | SCATCI input namelist data. |
Definition at line 81 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 90 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 89 of file Postprocessing_module.F90.
| procedure, public Postprocessing_module::OuterInterface::write_data | ( | class(outerinterface), intent(in) | this, |
| integer, intent(in) | isym, | ||
| type(optionsset), intent(in) | opts, | ||
| integer, intent(in) | iitf, | ||
| type(molecular_properties_data), intent(in) | prop, | ||
| type(solutionhandler), intent(in) | solution ) |
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 88 of file Postprocessing_module.F90.
| real(wp), dimension(:,:), allocatable Postprocessing_module::OuterInterface::a |
Long-range coupling coefficients.
Definition at line 76 of file Postprocessing_module.F90.
| logical Postprocessing_module::OuterInterface::auto_nvo |
Automatically determine contracted virtual orbitals.
Definition at line 61 of file Postprocessing_module.F90.
| integer, dimension(:), allocatable Postprocessing_module::OuterInterface::core_charges |
Number of electrons, on each atom, represented by ECPs.
Definition at line 77 of file Postprocessing_module.F90.
| real(wp), dimension(:), allocatable Postprocessing_module::OuterInterface::echl |
Projectile energy per channel.
Definition at line 75 of file Postprocessing_module.F90.
| integer, dimension(:), allocatable Postprocessing_module::OuterInterface::ichl |
Index of target per channel.
Definition at line 71 of file Postprocessing_module.F90.
| integer, dimension(:), allocatable Postprocessing_module::OuterInterface::idtarg |
Denprop-to-congen state order permutation.
Definition at line 69 of file Postprocessing_module.F90.
| integer, dimension(:), allocatable Postprocessing_module::OuterInterface::irrchl |
Irreducible representation of the channel state.
Definition at line 70 of file Postprocessing_module.F90.
| integer Postprocessing_module::OuterInterface::ismax |
Largest angular momentum transfer considered (a.k.a. lamax).
Definition at line 60 of file Postprocessing_module.F90.
| integer, dimension(:), allocatable Postprocessing_module::OuterInterface::lchl |
Projectile angular momentum per channel.
Definition at line 72 of file Postprocessing_module.F90.
| integer Postprocessing_module::OuterInterface::maxchan = 10000 |
Maximal number of channels per irreducible representation. TODO replace by actual number.
Definition at line 56 of file Postprocessing_module.F90.
| integer Postprocessing_module::OuterInterface::maxnmo |
Maximal number of continuum molecular orbitals.
Definition at line 57 of file Postprocessing_module.F90.
| integer, dimension(:), allocatable Postprocessing_module::OuterInterface::mchl |
Projection of angular momentum per channel.
Definition at line 73 of file Postprocessing_module.F90.
| integer Postprocessing_module::OuterInterface::nchan |
Number of outer region channels.
Definition at line 59 of file Postprocessing_module.F90.
| integer Postprocessing_module::OuterInterface::nfdm |
Number of radii at which to evaluate the boundary amplitudes.
Definition at line 63 of file Postprocessing_module.F90.
| integer Postprocessing_module::OuterInterface::ntarg |
Number of outer region states.
Definition at line 58 of file Postprocessing_module.F90.
| integer, dimension(:), allocatable Postprocessing_module::OuterInterface::qchl |
Projectile charge per channel.
Definition at line 74 of file Postprocessing_module.F90.
| real(wp), dimension(:), allocatable Postprocessing_module::OuterInterface::r_points |
Boundary amplitude evaluation radii.
Definition at line 66 of file Postprocessing_module.F90.
| real(wp) Postprocessing_module::OuterInterface::rmatr |
R-matrix radius.
Definition at line 64 of file Postprocessing_module.F90.
| type(civect), dimension(:), allocatable Postprocessing_module::OuterInterface::wamp |
Boundary amplitudes (per channel, per eigenstate) for each evaluation radius.
Definition at line 67 of file Postprocessing_module.F90.