SDA (SDA flex)  7.2
Simulation of Diffusional Association
Data Types | Functions/Subroutines | Variables
mod_residencetime Module Reference

residence time and rdf statistics More...

Data Types

type  residence_time
 Arrays for 1, 2 and 3 dimensional residence time and radial distribution function with sdamm. More...
 

Functions/Subroutines

subroutine init_resid_time (this, fixe_bin_size, enum_str, format_resid3d, b_pair, nb_type)
 Initialize the instance. More...
 
subroutine delete_resid_time (this)
 Delete arrays. More...
 
subroutine copy_resid_time (this, new_rt, new_enum_rt)
 Not a real copy, data are modified when we want to create a 2D or a 1D form a 3D reisdence_time. More...
 
subroutine set_array_rt (this, geom_resid, nb_xcell, nb_ycell, nb_zcell, xcell, ycell, zcell)
 Set grid parameters. More...
 
subroutine set_array_rt_sdamm (this, geom_resid, nb_type, nb_xcell, nb_ycell, nb_zcell, xcell, ycell, zcell)
 Similar to set_array_rt but only for sdamm. More...
 
subroutine apply_shift_to_rt (this, shift_x, shift_y, shift_z)
 Shift the origin of the residence_time grid. More...
 
subroutine update_residence_time (this, pos_prot, dist, dtnow)
 Update residence_time. More...
 
subroutine update_rdf (this, dist, type1, type2)
 Update the radial distribution function. More...
 
recursive integer function print_residence_time (this, geom_resid, nrun)
 Print final residence_time. More...
 
subroutine print_rdf (this, tab_protein, geom_resid, n_rdfs)
 Normalize and print radial distribution functions in RDF.log. More...
 
subroutine write_resid_3d (this, shift_center)
 Write the 3d reisdence time grid to UHBD format. More...
 

Variables

integer, parameter rt_off = 1
 
integer, parameter rt_distance = 2
 
integer, parameter rt_plan = 3
 
integer, parameter rt_resid3d = 4
 

Detailed Description

residence time and rdf statistics

Function/Subroutine Documentation

◆ apply_shift_to_rt()

subroutine mod_residencetime::apply_shift_to_rt ( type ( residence_time this,
real ( kind=4 )  shift_x,
real ( kind=4 )  shift_y,
real ( kind=4 )  shift_z 
)

Shift the origin of the residence_time grid.

Apply only to resid3d ??

Parameters
this: instance of residence_time
shift_x,shift_y,shift_z: shift to apply to the origin
Here is the caller graph for this function:

◆ copy_resid_time()

subroutine mod_residencetime::copy_resid_time ( type ( residence_time this,
type ( residence_time new_rt,
integer  new_enum_rt 
)

Not a real copy, data are modified when we want to create a 2D or a 1D form a 3D reisdence_time.

Only valable when resid3d and called by print_resid_time, NOT general
only to use if this == resid_3d, want to produce new_rt as distance or plan residence time

Parameters
this: instance of residence_time, source of the copy
new_rt: instance of residence_time, target of the copy
new_enum_rt: type of the new_rt residence_time ( "plan" or "distance" )
Here is the caller graph for this function:

◆ delete_resid_time()

subroutine mod_residencetime::delete_resid_time ( type ( residence_time this)

Delete arrays.

Parameters
this: instance of residence_time
Here is the caller graph for this function:

◆ init_resid_time()

subroutine mod_residencetime::init_resid_time ( type ( residence_time this,
integer, intent(in)  fixe_bin_size,
character, dimension(*), intent(in)  enum_str,
integer, intent(in)  format_resid3d,
logical, intent(in)  b_pair,
integer, intent(in)  nb_type 
)

Initialize the instance.

Parameters
this: instance of residence_time
fixe_bin_size: if the size of the bin is fixed
enum_str: "off" / "distance" / "plan" / "resid_3d"
format_resid3d: ascii or binary for the output of the grid
b_pair: if more than type of solute is present in sdamm
nb_type: number of different type of solutes in sdamm, will set the number of pairs ( ( nb_type * ( nb_type + 1 ) ) / 2 )
Here is the caller graph for this function:

◆ print_rdf()

subroutine mod_residencetime::print_rdf ( type ( residence_time ), target  this,
type ( array_protein_type tab_protein,
type ( geometry ), intent(in)  geom_resid,
integer  n_rdfs 
)

Normalize and print radial distribution functions in RDF.log.

Parameters
this: instance of residence_time
tab_protein: instance array_protein_type
geom_resid: instance of geometry
n_rdfs: number of radial distribution functions

◆ print_residence_time()

recursive integer function mod_residencetime::print_residence_time ( type ( residence_time this,
type ( geometry ), intent(in)  geom_resid,
integer  nrun 
)

Print final residence_time.

Use recursive function : if the 3d residence time has been computed, 2d and 1d will be computed and printed

Parameters
this: instance residence_time
geom_resid: instance of geometry
nrun: total number of runs, used for the normalization
Returns
status : error status
Here is the call graph for this function:

◆ set_array_rt()

subroutine mod_residencetime::set_array_rt ( type ( residence_time this,
type ( geometry ), intent(in)  geom_resid,
integer, intent(in)  nb_xcell,
integer, intent(in)  nb_ycell,
integer, intent(in)  nb_zcell,
real ( kind=4 ), intent(in)  xcell,
real ( kind=4 ), intent(in)  ycell,
real ( kind=4 ), intent(in)  zcell 
)

Set grid parameters.

Can specify the size of the cells or the number of cells for each axis or both
But it is an UHBD format which accepts only a fixed cell spacing for all 3 dimensions
The grid can be produced correctly, but not visualized in VMD

Modified origin, for the shift a grid spacing is missing

Parameters
this: instance of residence_time
geom_resid: instance of geometry
nb_xcell,nb_ycell,nb_zcell: number of cell for each axis
xcell,ycell,zcell: size of the cells for each axis
Here is the caller graph for this function:

◆ set_array_rt_sdamm()

subroutine mod_residencetime::set_array_rt_sdamm ( type ( residence_time this,
type ( geometry ), intent(in)  geom_resid,
integer, intent(in)  nb_type,
integer, intent(in)  nb_xcell,
integer, intent(in)  nb_ycell,
integer, intent(in)  nb_zcell,
real ( kind=4 ), intent(in)  xcell,
real ( kind=4 ), intent(in)  ycell,
real ( kind=4 ), intent(in)  zcell 
)

Similar to set_array_rt but only for sdamm.

Additionaly allocate the array for the radial distribution functions

Parameters
this: instance of residence_time
geom_resid: instance of geometry
nb_type: number of different type of solutes, needed for rdf
nb_xcell,nb_ycell,nb_zcell: number of cell for each axis
xcell,ycell,zcell: size of the cells for each axis
Here is the caller graph for this function:

◆ update_rdf()

subroutine mod_residencetime::update_rdf ( type ( residence_time this,
real ( kind=8 ), intent(in)  dist,
integer  type1,
integer  type2 
)

Update the radial distribution function.

Only used with sdamm

Parameters
this: instance of residence_time
dist: distance between the 2 solutes
type1,type2: type of the solutes
Here is the caller graph for this function:

◆ update_residence_time()

subroutine mod_residencetime::update_residence_time ( type ( residence_time this,
real ( kind=8 ), dimension ( 3 )  pos_prot,
real ( kind=4 )  dist,
real ( kind=8 )  dtnow 
)

Update residence_time.

Only used by sda_2proteins
Update all arrays, done every steps in sda_2proteins
This function must be thread-safe

Parameters
this: instance of residence_time
pos_prot: position of one solute
dist: distance, used only for sda_2proteins
dtnow: current value of the timestep ( variable for sda_2proteins )

◆ write_resid_3d()

subroutine mod_residencetime::write_resid_3d ( type ( residence_time ), target  this,
real ( kind=8 ), dimension(3)  shift_center 
)

Write the 3d reisdence time grid to UHBD format.

Need to shift to the center of the solute 1 for visualisation

Parameters
this: instance of residence_time
shift_center: center of solute 1 ?
Here is the call graph for this function:

Variable Documentation

◆ rt_distance

integer, parameter mod_residencetime::rt_distance = 2

◆ rt_off

integer, parameter mod_residencetime::rt_off = 1

◆ rt_plan

integer, parameter mod_residencetime::rt_plan = 3

◆ rt_resid3d

integer, parameter mod_residencetime::rt_resid3d = 4
Imprint/Privacy