PSCF v1.4.0
BinaryStructureFactor

This analyzer computes the structure factor for any "binary" system, with only two types of monomer. By default, it computes and outputs only the spherical average of the structure factor, for which each value is an averaged over all wavevectors in a set (or "bunch") of wavevectors of equal magnitude. This class can also optionally output structure factors for all individual wavevectors.

See also
BinaryStructureFactor (class API)

Theory

This class computes the structure factor \( S({\bf q}) \) for an incompressible system containing two monomer types, for all values of the wavevector \( {\bf q} \). Let the two monomer types be denoted by subscripts 0 and 1. The structure factor computed here is defined as

\[ S(\mathbf{q}) = \frac{1}{4V}\langle |\hat{C}_{-}({\bf q})|^{2} \rangle \quad, \]

where \( V \) is total system volume, and

\[ \hat{C}_{-}({\bf q}) \equiv \int \! d{\bf r} \; e^{-i{\bf q}\cdot {\bf r}} [ c_{0}({\bf r}) - c_{1}({\bf r}) ] \quad. \]

Here, \( c_{i}({\bf r}) \) is the local concentration of monomers of type i, for i = 0 and i =1. In a field-theoretic simulation, this is computed using the identity

\[ S(\mathbf{q}) = \frac{1}{v^2\chi^2} \frac{1}{V} \left\langle |\hat{W}_{-}(\mathbf {q})|^{2} \right\rangle - \frac{1}{2v \chi} \]

where \( v \) is monomer volume, \( \chi \) is the bare Flory-Huggins parameter \( \chi = \chi_{12} - (\chi_{11} + \chi_{22})/2 \), and

\[ \hat{W}_{-}({\bf q}) = \int \! d{\bf r} \; e^{-i{\bf q}\cdot {\bf r}} [ w_{0}({\bf r}) - w_{1}({\bf r})]/2 \]

is the Fourier transform of the exchange field \( W_{-}({\bf r}) = [ w_{0}({\bf r}) - w_{1}({\bf r})]/2 \).

Technical note : The Fourier transform \( \hat{W}_{-}({\bf q}) \) that is defined above as an integral is approximated internally by the product of the system volume \( V \) and the normalized discrete Fourier transform (DFT) of \( W_{-}({\bf r}) \) that is computed by either Prdc::Cpu::FFT::forwardTransform or Prdc::Cuda::FFT::forwardTransform .

Parameter file

Parameter file format:

BinaryStructureFactor{
interval* int (1 by default)
outputFileName string
writeWaveData* bool (false by default)
}

Meanings of the parameters:

Label Description
interval* number of steps between data samples
outputFileName base name of output files
writeWaveData* Should \( S({\bf q})\) be reported for individual waves?

Note that the writeWaveData parameter is optional, and set to false (or 0) by default.

Output Files

This class does not output any data during the course of a simulation or trajectory file analysis, but instead outputs accumulated results at the end.

Spherically-averaged structure factor : At the end of the simulation, this class outputs a file containing spherically-averaged values of \( S({\bf q}) \), averaged over time and over groups of wavevectors of the same magnitude. If writeWaveData is false (0. the default), then the name of this file is given by the outputFileName string parameter. If writeWaveData is set to true (1), then the name of this file is obtained by adding a suffix "_ave" to the end of the outputFileName string. In either case, the resulting file will contain two columns of numbers, in which the first column contains an ordered list of values of wavenumber \( q \), and the second column contains a corresponding list of values of the spherically averaged structure factor \( S(q) \).

Structure factor for individual wavevectors : If writeWaveData is true, the class also outputs a second file containing values of S(q) for individual wavevectors at the end of a simulation. The name of this file is obtained by adding a suffix "_wave" to the end of the outputFileName string parameter. The first D columns of this file contain integer indices for individual waves, using a standard DFT grid representation in which all indices are non-negative. These D columns are followed by a column containing the time averaged value of \( S({\bf q}) \) for each wavevector.