Define a base class geometry and derivatives : sphere or box. More...
Data Types | |
type | sphere |
Derived class sphere. More... | |
type | box |
Derived class box. More... | |
type | geometry |
geometry is a base (common base ) class More... | |
Functions/Subroutines | |
subroutine | init_geometry (this, pbc, escape, surface, c_surf, xmin, xmax, ymin, ymax, zmin, zmax, start_pos, record_startpos, min_height, half_sphere) |
Allocate the geometry. More... | |
subroutine | delete_geometry (this) |
Delete geometry. More... | |
subroutine | get_parameters (this, params_tmp) |
Get parameters of the geometry object. More... | |
subroutine | update_translation (this, translation, new_pos, cell) |
Update the translation and apply all border conditions, PBC. Sort of "virtual" function, call the appropiate update of sphere or box. Escape could be checked here. to see later. . More... | |
subroutine | init_geometry_sphere (this, b_surf, c_surf) |
Create sphere, should be called by geometry. More... | |
subroutine | get_parameters_sphere (this, param2s) |
Get parameters of the spehere. More... | |
subroutine | init_geometry_box (this, xmin, xmax, ymin, ymax, zmin, zmax) |
Update translation in case of sphere. More... | |
subroutine | get_parameters_box (this, params) |
Get parameters in case of box. More... | |
subroutine | update_translation_box (this, translation, new_pos, pbc, surf, cell) |
Apply the translation with box. Take into account periodicity and surface. More... | |
Variables | |
integer, parameter | enum_sphere = 1 |
enumeration type More... | |
integer, parameter | enum_box = 2 |
Define a base class geometry and derivatives : sphere or box.
Cannot really define a base and derivatives classes, but creates an gemetry object where only the sphere or the box object will be instanciated
Different border conditions can be applied to the box
Normally PBC apply in 3 dimension ( sdamm case )
It is modified in the presence of a surface
For more details see group PBC
subroutine mod_geometry::delete_geometry | ( | type ( geometry ) | this | ) |
Delete geometry.
Delete the appropriate derived class
this | : instance of geometry |
subroutine mod_geometry::get_parameters | ( | type ( geometry ) | this, |
real ( kind=4 ), dimension(6) | params_tmp | ||
) |
Get parameters of the geometry object.
Call appropriate derived class
this | : instance of geometry |
params_tmp | : array to store the results |
subroutine mod_geometry::get_parameters_box | ( | type ( box ) | this, |
real ( kind=4 ), dimension(6), intent(out) | params | ||
) |
Get parameters in case of box.
Should be called by geometry
this | : instance of box |
params | : return array to store the parameters, use all 6 for sphere |
subroutine mod_geometry::get_parameters_sphere | ( | type ( sphere ) | this, |
real ( kind=4 ), dimension(6), intent(out) | param2s | ||
) |
Get parameters of the spehere.
Should be called by geometry
this | : instance of sphere |
param2s | : return array with parameters, only 2 over 6 are filed with sphere |
subroutine mod_geometry::init_geometry | ( | type ( geometry ) | this, |
logical, intent(in) | pbc, | ||
logical, intent(in) | escape, | ||
logical, intent(in) | surface, | ||
real ( kind=4 ), intent(in) | c_surf, | ||
real ( kind=4 ), intent(in) | xmin, | ||
real ( kind=4 ), intent(in) | xmax, | ||
real ( kind=4 ), intent(in) | ymin, | ||
real ( kind=4 ), intent(in) | ymax, | ||
real ( kind=4 ), intent(in) | zmin, | ||
real ( kind=4 ), intent(in) | zmax, | ||
real ( kind=4 ), intent(in) | start_pos, | ||
logical, intent(in) | record_startpos, | ||
real ( kind=4 ), intent(in) | min_height, | ||
logical, intent(in) | half_sphere | ||
) |
Allocate the geometry.
The type of geometry type must be setup before the call to this function
It can be set first with enum_sphere or enum_box
this | : instance of geometry |
pbc | : if periodic boundary conditions should apply |
escape | : if solute(s) can escape |
surface | : if the simulation contains a surface ( modify the computation of distances ) |
c_surf | : b and c surface for sphere geometry |
xmin,xmax,ymin,ymax,zmin,zmax | : position of the box |
start_pos | : if a particular position is needed at start up ( should apply both with box and sphere ) |
record_startpos | : record the start and end positions of two solute simulations in PDB format |
subroutine mod_geometry::init_geometry_box | ( | type ( box ) | this, |
real ( kind=4 ) | xmin, | ||
real ( kind=4 ) | xmax, | ||
real ( kind=4 ) | ymin, | ||
real ( kind=4 ) | ymax, | ||
real ( kind=4 ) | zmin, | ||
real ( kind=4 ) | zmax | ||
) |
Update translation in case of sphere.
Should be called by geometry
In case of sphere do nothing Create box
Assign the dimension of the box. The sizebox is computed
this | : instance of geometry |
xmin,xmax,ymin,ymax,zmin,zmax | : the position of the box |
subroutine mod_geometry::init_geometry_sphere | ( | type ( sphere ) | this, |
real ( kind=4 ), intent(in) | b_surf, | ||
real ( kind=4 ), intent(in) | c_surf | ||
) |
Create sphere, should be called by geometry.
Assign b and c surface
this | : instance of sphere |
b_surf,c_surf | : values of b and c surfaces |
subroutine mod_geometry::update_translation | ( | type ( geometry ) | this, |
real ( kind=8 ), dimension (3), intent(in) | translation, | ||
real ( kind=8 ), dimension (3), intent(out) | new_pos, | ||
integer, dimension (3), intent(inout) | cell | ||
) |
Update the translation and apply all border conditions, PBC.
Sort of "virtual" function, call the appropiate update of sphere or box.
Escape could be checked here. to see later.
.
this | : instance of geometry |
translation | : new position of the solute before treatment |
new_pos | : new position of the solute after treatment ( PBC or reflective boundaries ) |
cell | : box information update, used with PBC (box ) of the solute |
subroutine mod_geometry::update_translation_box | ( | type ( box ) | this, |
real ( kind=8 ), dimension (3), intent(in) | translation, | ||
real ( kind=8 ), dimension (3), intent(out) | new_pos, | ||
logical, intent(in) | pbc, | ||
logical, intent(in) | surf, | ||
integer, dimension (3), intent(inout) | cell | ||
) |
Apply the translation with box. Take into account periodicity and surface.
Normally PBC apply in 3 dimension for box
If a surface is present, there is reflective border on zmax
Function similar in compute_distance.f90. See if we can merge
May add escape ??
this | : instance of box |
translation | : position of the solute before treatment of periodicity |
new_pos | : return the new position after periodicity and border condition |
pbc | : if pbc should apply |
surf | : if a surface is present |
cell | : box information for solutes |
integer, parameter mod_geometry::enum_box = 2 |
integer, parameter mod_geometry::enum_sphere = 1 |
enumeration type