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 |
residence time and rdf statistics
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 ??
this | : instance of residence_time |
shift_x,shift_y,shift_z | : shift to apply to the origin |
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
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" ) |
subroutine mod_residencetime::delete_resid_time | ( | type ( residence_time ) | this | ) |
Delete arrays.
this | : instance of residence_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.
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 ) |
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.
this | : instance of residence_time |
tab_protein | : instance array_protein_type |
geom_resid | : instance of geometry |
n_rdfs | : number of radial distribution functions |
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
this | : instance residence_time |
geom_resid | : instance of geometry |
nrun | : total number of runs, used for the normalization |
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
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 |
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
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 |
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
this | : instance of residence_time |
dist | : distance between the 2 solutes |
type1,type2 | : type of the solutes |
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
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 ) |
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
this | : instance of residence_time |
shift_center | : center of solute 1 ? |
integer, parameter mod_residencetime::rt_distance = 2 |
integer, parameter mod_residencetime::rt_off = 1 |
integer, parameter mod_residencetime::rt_plan = 3 |
integer, parameter mod_residencetime::rt_resid3d = 4 |