RMPCDMD
Data Types | Functions/Subroutines
correlator Module Reference

Block correlators. More...

Data Types

type  axial_correlator_t
 
type  correlator_t
 

Functions/Subroutines

subroutine init (this, l, b, dim, n)
 Initialize a correlator_t variable. More...
 
subroutine add (this, i, block_operation, x, x_n, xvec, xvec_n)
 Add a data element to the correlator. More...
 
subroutine, public correlate_block_dot (s, c, idx, l, n, dim)
 Correlation routine for dot product. More...
 
subroutine, public correlate_block_distsq (s, c, idx, l, n, dim)
 Correlation routine for squared distance. More...
 
integer function, public get_n_blocks (l, n_blocks_max, n_samples)
 Return the number of blocks needed for a trajectory of length n_samples. More...
 
subroutine axial_init (this, block_length, n_samples, n_samples_fast)
 Initialize an axial correlator. More...
 
subroutine axial_add (this, i, com_pos, unit_r)
 Add a data element to an axial correlator (slow time scale) More...
 
subroutine axial_add_fast (this, i, v_com, unit_r)
 Add a data element to an axial correlator (fast time scale) More...
 
subroutine axial_write (this, correlator_group, sampling, dt, fast_sampling, fast_dt)
 Write all correlators from an axial correlator variable to a HDF5 group. More...
 
subroutine, public write_correlator_block (loc, name, c, step, time)
 Write the data from a correlator_t variable to a HDF5 group. More...
 

Detailed Description

Block correlators.

This modules defines a derived type for storing logarithmic block correlators. The subroutines correlate_block_distsq and correlate_block_dot are correlators for the square distance and the dot product, respectively.

The derived type axial_correlator_t groups correlators for axisymmetric bodies such as the dimer.

See http://pdebuyl.be/blog/2016/correlators.html for information

Function/Subroutine Documentation

◆ add()

subroutine correlator::add ( class(correlator_t), intent(inout)  this,
integer, intent(in)  i,
  block_operation,
double precision, intent(in), optional  x,
double precision, dimension(:), intent(in), optional  x_n,
double precision, dimension(:), intent(in), optional  xvec,
double precision, dimension(:,:), intent(in), optional  xvec_n 
)
private

Add a data element to the correlator.

Definition at line 90 of file correlator.f90.

◆ axial_add()

subroutine correlator::axial_add ( class(axial_correlator_t), intent(inout)  this,
integer, intent(in)  i,
double precision, dimension(3), intent(in)  com_pos,
double precision, dimension(3), intent(in)  unit_r 
)
private

Add a data element to an axial correlator (slow time scale)

Definition at line 217 of file correlator.f90.

◆ axial_add_fast()

subroutine correlator::axial_add_fast ( class(axial_correlator_t), intent(inout)  this,
integer, intent(in)  i,
double precision, dimension(3), intent(in)  v_com,
double precision, dimension(3), intent(in)  unit_r 
)
private

Add a data element to an axial correlator (fast time scale)

Definition at line 228 of file correlator.f90.

◆ axial_init()

subroutine correlator::axial_init ( class(axial_correlator_t), intent(inout)  this,
integer, intent(in)  block_length,
integer, intent(in)  n_samples,
integer, intent(in)  n_samples_fast 
)
private

Initialize an axial correlator.

Definition at line 199 of file correlator.f90.

◆ axial_write()

subroutine correlator::axial_write ( class(axial_correlator_t), intent(inout)  this,
integer(hid_t)  correlator_group,
integer, intent(in)  sampling,
double precision, intent(in)  dt,
integer, intent(in)  fast_sampling,
double precision, intent(in)  fast_dt 
)
private

Write all correlators from an axial correlator variable to a HDF5 group.

Definition at line 244 of file correlator.f90.

◆ correlate_block_distsq()

subroutine, public correlator::correlate_block_distsq ( double precision, dimension(:,:,:), intent(in)  s,
double precision, dimension(:,:,:), intent(inout)  c,
integer, intent(in)  idx,
integer, intent(in)  l,
integer, intent(in)  n,
integer, intent(in)  dim 
)

Correlation routine for squared distance.

Definition at line 168 of file correlator.f90.

◆ correlate_block_dot()

subroutine, public correlator::correlate_block_dot ( double precision, dimension(:,:,:), intent(in)  s,
double precision, dimension(:,:,:), intent(inout)  c,
integer, intent(in)  idx,
integer, intent(in)  l,
integer, intent(in)  n,
integer, intent(in)  dim 
)

Correlation routine for dot product.

Definition at line 148 of file correlator.f90.

◆ get_n_blocks()

integer function, public correlator::get_n_blocks ( integer, intent(in)  l,
integer, intent(in)  n_blocks_max,
integer, intent(in)  n_samples 
)

Return the number of blocks needed for a trajectory of length n_samples.

Definition at line 188 of file correlator.f90.

◆ init()

subroutine correlator::init ( class(correlator_t), intent(out)  this,
integer, intent(in)  l,
integer, intent(in)  b,
integer, intent(in), optional  dim,
integer, intent(in), optional  n 
)
private

Initialize a correlator_t variable.

Definition at line 58 of file correlator.f90.

◆ write_correlator_block()

subroutine, public correlator::write_correlator_block ( integer(hid_t), intent(inout)  loc,
character(len=*), intent(in)  name,
type(correlator_t), intent(in)  c,
integer, intent(in)  step,
double precision, intent(in)  time 
)

Write the data from a correlator_t variable to a HDF5 group.

Definition at line 267 of file correlator.f90.