MPI-SCATCI 2.0
An MPI version of SCATCI
Loading...
Searching...
No Matches
Postprocessing_module::OuterInterface Type Reference

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.

Detailed Description

SWINTERF-inspired post-processing object.

Authors
J Benda
Date
2019 - 2024

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.

Member Function/Subroutine Documentation

◆ deinit()

procedure, public Postprocessing_module::OuterInterface::deinit ( class(outerinterface), intent(inout) this)

Release memory held by this object.

Authors
J Benda
Date
2019
Parameters
[in]thisInterface object to finalize.

Definition at line 80 of file Postprocessing_module.F90.

◆ extract_data()

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.

Authors
J Benda
Date
2019 - 2023

This mirros the functionality of SWITERF (UKRmol-out), particularly:

  • reads the target property file (fort.24)
  • assembles the list of outer region channels
  • evaluates amplitudes of the eigenstates at R-matrix boundary and, if requested, in its vicinity for use in RMT

All data are then stored internally for writing.

Parameters
[in]thisInterface object to read.
[in]optsSCATCI input namelist data.
[in]propTarget properties.
[in]solutionEigenvectors and related stuff calculated by the diagonalizer.

Definition at line 83 of file Postprocessing_module.F90.

◆ get_boundary_data()

procedure, private Postprocessing_module::OuterInterface::get_boundary_data ( class(outerinterface), intent(inout) this,
type(options), intent(in) opts,
type(molecular_properties_data), intent(in) prop,
type(solutionhandler), intent(in) solution )
private

Evaluate boundary amplitudes for propagation and RMT.

Authors
J Benda
Date
2019 - 2024

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.

Todo
This subroutine contains a potential hidden memory scaling obstacle, which is the evaluation of the boundary amplitudes in GBTOlib. Even though GBTOlib internally stores just a compact array of orbital boundary amplitudes (dimension Npw × Norb), its interface only allows retrieval of the channel boundary amplitudes (Nchan × Norb). For calculations with large numbers of channels (= target states), this is a significantly larger matrix, which should be distributed. However, this is not possible with the current GBTOlib interface.
Parameters
[in]thisInterface object to update.
[in]optsSCATCI namelist information for this irreducible representation.
[in]propResults from denprop.
[in]solutionEigenvectors and related stuff calculated by the diagonalizer.

Definition at line 86 of file Postprocessing_module.F90.

◆ get_channel_couplings()

procedure, private Postprocessing_module::OuterInterface::get_channel_couplings ( class(outerinterface), intent(inout) this,
integer, intent(in) ismax,
integer, intent(in) ntarg,
type(molecular_properties_data), intent(in) target_properties,
real(wp), intent(in) alpha0,
real(wp), intent(in) alpha2,
logical, intent(in) use_pol )
private

Evaluate long-range channel coupling coefficients.

Authors
Z Masin
Date
2014

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

Note
06/02/2019 - Jakub Benda: Copied over from UKRmol-out.
Parameters
[in,out]thisInterface object to update.
[in]ismaxMaximum lambda value for the multipole potential contribution.
[in]ntargTotal number of target states.
[in]target_propertiesDenprop data.
[in]alpha0Spherical part of the ground state target polarizability.
[in]alpha2Non-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_polIf .true. then the coefficients for the polarization potential will be constructed.

Definition at line 85 of file Postprocessing_module.F90.

◆ get_channel_info()

procedure, private Postprocessing_module::OuterInterface::get_channel_info ( class(outerinterface), intent(inout) this,
type(options), intent(in) opts,
type(molecular_properties_data), intent(in) prop )
private

Assemble the list of outer channels.

Authors
J Benda
Date
2019

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.

Parameters
[in,out]thisInterface object to update.
[in]optsSCATCI namelist information for this irreducible representation.
[in]propTarget properties.

Definition at line 84 of file Postprocessing_module.F90.

◆ init()

procedure, public Postprocessing_module::OuterInterface::init ( class(outerinterface), intent(inout) this,
type(interfaceoptions), intent(in) input )

Allocate memory for channel information.

Authors
J Benda
Date
2019 - 2024
Parameters
[in]thisInterface object to initialize.
[in]inputInput SCATCI namelist data for all symmetries.

Definition at line 79 of file Postprocessing_module.F90.

◆ setup_amplitudes()

procedure, public Postprocessing_module::OuterInterface::setup_amplitudes ( class(outerinterface), intent(inout) this,
type(options), intent(in) opts )

Initialize raw boundary amplitudes (in integral library)

Authors
J Benda
Date
2019
Parameters
[in]thisInterface object to read.
[in]optsSCATCI input namelist data.

Definition at line 81 of file Postprocessing_module.F90.

◆ write_boundary_data()

procedure, private Postprocessing_module::OuterInterface::write_boundary_data ( class(outerinterface), intent(in) this,
integer, intent(in) nrmset,
type(options), intent(in) opts,
integer, intent(in) lurmt,
character(len=1), intent(in) rform,
type(molecular_properties_data), intent(in) prop,
type(solutionhandler), intent(in) solution )
private

Write the R-matrix amplitudes to disk.

Authors
J Benda
Date
2019 - 2025

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.

*) https://community.intel.com/t5/Intel-Fortran-Compiler/Unformatted-DTIO-failure-with-gt-2GiB-records/m-p/1705503

Parameters
[in]thisInterface object to update.
[in]nrmsetOutput data set in the file unit.
[in]optsSCATCI namelist information for this irreducible representation.
[in]lurmtUnit number for boundary amplitudes output.
[in]rform'F'/'U' for formatted or unformatted output.
[in]propResults from denprop.
[in]solutionEigenvectors and related stuff calculated by the diagonalizer.

Definition at line 90 of file Postprocessing_module.F90.

◆ write_channel_info()

procedure, private Postprocessing_module::OuterInterface::write_channel_info ( class(outerinterface), intent(in) this,
integer, intent(in) nchset,
type(options), intent(in) opts,
integer, intent(in) luchan,
character(len=1), intent(in) cform,
type(molecular_properties_data), intent(in) prop )
private

Write the channel list to disk.

Authors
J Benda
Date
2019 - 2023

Adapted from WRITCH (UKRmol-out). Writes the information into the selected set of the channel output file fort.10.

Parameters
[in]thisInterface object to update.
[in]nchsetOutput data set in the file unit.
[in]optsSCATCI namelist information for this irreducible representation.
[in]luchanUnit number for channel info output.
[in]cform'F'/'U' for formatted or unformatted output.
[in]propResults from denprop.

Definition at line 89 of file Postprocessing_module.F90.

◆ write_data()

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.

Authors
J Benda
Date
2019 - 2024

Updates the channel and R-matrix dump files (fort.10 and fort.21, respectively) by adding/overwriting a data set.

Parameters
[in]thisInterface object to read.
[in]isymOutput set number for this irreducible representation.
[in]optsSCATCI input namelist data.
[in]iitfWhich outer_interface namelist to use.
[in]propTarget properties.
[in]solutionEigenvectors and related stuff calculated by the diagonalizer.

Definition at line 88 of file Postprocessing_module.F90.

Member Data Documentation

◆ a

real(wp), dimension(:,:), allocatable Postprocessing_module::OuterInterface::a

Long-range coupling coefficients.

Definition at line 76 of file Postprocessing_module.F90.

◆ auto_nvo

logical Postprocessing_module::OuterInterface::auto_nvo

Automatically determine contracted virtual orbitals.

Definition at line 61 of file Postprocessing_module.F90.

◆ core_charges

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.

◆ echl

real(wp), dimension(:), allocatable Postprocessing_module::OuterInterface::echl

Projectile energy per channel.

Definition at line 75 of file Postprocessing_module.F90.

◆ ichl

integer, dimension(:), allocatable Postprocessing_module::OuterInterface::ichl

Index of target per channel.

Definition at line 71 of file Postprocessing_module.F90.

◆ idtarg

integer, dimension(:), allocatable Postprocessing_module::OuterInterface::idtarg

Denprop-to-congen state order permutation.

Definition at line 69 of file Postprocessing_module.F90.

◆ irrchl

integer, dimension(:), allocatable Postprocessing_module::OuterInterface::irrchl

Irreducible representation of the channel state.

Definition at line 70 of file Postprocessing_module.F90.

◆ ismax

integer Postprocessing_module::OuterInterface::ismax

Largest angular momentum transfer considered (a.k.a. lamax).

Definition at line 60 of file Postprocessing_module.F90.

◆ lchl

integer, dimension(:), allocatable Postprocessing_module::OuterInterface::lchl

Projectile angular momentum per channel.

Definition at line 72 of file Postprocessing_module.F90.

◆ maxchan

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.

◆ maxnmo

integer Postprocessing_module::OuterInterface::maxnmo

Maximal number of continuum molecular orbitals.

Definition at line 57 of file Postprocessing_module.F90.

◆ mchl

integer, dimension(:), allocatable Postprocessing_module::OuterInterface::mchl

Projection of angular momentum per channel.

Definition at line 73 of file Postprocessing_module.F90.

◆ nchan

integer Postprocessing_module::OuterInterface::nchan

Number of outer region channels.

Definition at line 59 of file Postprocessing_module.F90.

◆ nfdm

integer Postprocessing_module::OuterInterface::nfdm

Number of radii at which to evaluate the boundary amplitudes.

Definition at line 63 of file Postprocessing_module.F90.

◆ ntarg

integer Postprocessing_module::OuterInterface::ntarg

Number of outer region states.

Definition at line 58 of file Postprocessing_module.F90.

◆ qchl

integer, dimension(:), allocatable Postprocessing_module::OuterInterface::qchl

Projectile charge per channel.

Definition at line 74 of file Postprocessing_module.F90.

◆ r_points

real(wp), dimension(:), allocatable Postprocessing_module::OuterInterface::r_points

Boundary amplitude evaluation radii.

Definition at line 66 of file Postprocessing_module.F90.

◆ rmatr

real(wp) Postprocessing_module::OuterInterface::rmatr

R-matrix radius.

Definition at line 64 of file Postprocessing_module.F90.

◆ wamp

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.


The documentation for this type was generated from the following file: