SDA  7.1
Simulation of Diffusional Association
 All Classes Files Functions Variables Groups Pages
Data Types | Public Member Functions | Public Attributes | List of all members
mod_geometry Module Reference

Define a base class geometry and derivatives : sphere or box. More...

Collaboration diagram for mod_geometry:

Data Types

type  box
 Derived class box. More...
 
type  geometry
 geometry is a base (common base ) class More...
 
type  sphere
 Derived class sphere. More...
 

Public Member Functions

subroutine init_geometry (this, pbc, escape, surface, c_surf, xmin, xmax, ymin, ymax, zmin, zmax, start_pos)
 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...
 

Public Attributes

integer, parameter enum_sphere = 1
 enumeration type
 
integer, parameter enum_box = 2
 

Detailed Description

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

Member Function/Subroutine Documentation

subroutine mod_geometry::delete_geometry ( type ( geometry this)

Delete geometry.

Delete the appropriate derived class

Parameters
this: instance of geometry

Here is the caller graph for this function:

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

Parameters
this: instance of geometry
params_tmp: array to store the results

Here is the call graph for this function:

Here is the caller graph for this function:

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

Parameters
this: instance of box
params: return array to store the parameters, use all 6 for sphere

Here is the caller graph for this function:

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

Parameters
this: instance of sphere
param2s: return array with parameters, only 2 over 6 are filed with sphere

Here is the caller graph for this function:

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 
)

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

Parameters
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 )

Here is the call graph for this function:

Here is the caller graph for this function:

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

Parameters
this: instance of geometry
xmin,xmax,ymin,ymax,zmin,zmax: the position of the box

Here is the caller graph for this function:

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

Parameters
this: instance of sphere
b_surf,c_surf: values of b and c surfaces

Here is the caller graph for this function:

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.
.

Parameters
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

Here is the call graph for this function:

Here is the caller graph for this function:

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 ??

Parameters
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

Here is the caller graph for this function:


The documentation for this module was generated from the following file: