diff --git a/compile.sh b/compile.sh old mode 100644 new mode 100755 diff --git a/doc/html/annotated.html b/doc/html/annotated.html new file mode 100644 index 0000000..396b3d1 --- /dev/null +++ b/doc/html/annotated.html @@ -0,0 +1,134 @@ + + + + + + + +MCDC_simulator: Class List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Nsentinels
 CSentinel
 CCollisionCollision Final class =====================================================================/
 CCollisionsphere
 CCollisionspherenCollision Final class ============================================================================/
 CCylinderCylinder Obstacle Derived Class =============================================================/
 CCylinderCollisionSphereClass to save the cylinderical obstacles that a can collide to a walker
 CCylinderGammaDistributionCylinderGammaDistribution Class =============================================================/
 CDynamicsSimulationDynamic simulation main class =============================================================/
 CGradientWaveformGradient Wavefroms =============================================================/
 CMCSimulationAplication Main Class ======================================================================================/
 CObstacleObstacle Base Class ==============================================================================/
 CParallelMCSimulationClass to handle multiprocessor paralellisation. This class basicly controls and syncronize several initializations of MonteCarlo simulations and add up the results. It's a way of soft paralelization
 CParameterBasic class to store simulation parameters =============================================================/
 CParameters
 CPGSESequence
 CPlaneMain class. Implements basic voxel limits and operations. =================================================/
 CPLYCollisionSphere
 CPLYObstaclePlyObstacle Derived Class ====================================================================/
 CPropagator
 CSchemeAuxiliary class to save scheme_files values =============================================================/
 CSentinelsCollision Final class ====================================================================/
 CSimErrnoSimulation Input and parameter errors handling class =================================================/
 CSimulableSequenceMR Sequence Primary Class =============================================================/
 CSubdivisionAuxiliary Subdivision Class =============================================================/
 CTrajectoryAuxiliary class. Handles i/o operation of walker trayectories. ============================/
 CTriangleAuxiliary class. Implements trangular barriers. ===================================/
 CVertexAuxiliary class. Implements basic vertices. ====================================/
 CVoxel//! Main class. Implements basic voxel limits and operations. Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done
 CWalkerSpin Final class =============================================================/
+
+
+
+ + + + diff --git a/doc/html/annotated_dup.js b/doc/html/annotated_dup.js new file mode 100644 index 0000000..a5d26dc --- /dev/null +++ b/doc/html/annotated_dup.js @@ -0,0 +1,34 @@ +var annotated_dup = +[ + [ "sentinels", null, [ + [ "Sentinel", "classsentinels_1_1_sentinel.html", "classsentinels_1_1_sentinel" ] + ] ], + [ "Collision", "class_collision.html", "class_collision" ], + [ "Collisionsphere", "class_collisionsphere.html", "class_collisionsphere" ], + [ "Collisionspheren", "class_collisionspheren.html", null ], + [ "Cylinder", "class_cylinder.html", "class_cylinder" ], + [ "CylinderCollisionSphere", "class_cylinder_collision_sphere.html", "class_cylinder_collision_sphere" ], + [ "CylinderGammaDistribution", "class_cylinder_gamma_distribution.html", "class_cylinder_gamma_distribution" ], + [ "DynamicsSimulation", "class_dynamics_simulation.html", "class_dynamics_simulation" ], + [ "GradientWaveform", "class_gradient_waveform.html", "class_gradient_waveform" ], + [ "MCSimulation", "class_m_c_simulation.html", "class_m_c_simulation" ], + [ "Obstacle", "class_obstacle.html", "class_obstacle" ], + [ "ParallelMCSimulation", "class_parallel_m_c_simulation.html", "class_parallel_m_c_simulation" ], + [ "Parameter", "class_parameter.html", null ], + [ "Parameters", "class_parameters.html", "class_parameters" ], + [ "PGSESequence", "class_p_g_s_e_sequence.html", "class_p_g_s_e_sequence" ], + [ "Plane", "class_plane.html", "class_plane" ], + [ "PLYCollisionSphere", "class_p_l_y_collision_sphere.html", "class_p_l_y_collision_sphere" ], + [ "PLYObstacle", "class_p_l_y_obstacle.html", "class_p_l_y_obstacle" ], + [ "Propagator", "class_propagator.html", "class_propagator" ], + [ "Scheme", "class_scheme.html", "class_scheme" ], + [ "Sentinels", "class_sentinels.html", null ], + [ "SimErrno", "class_sim_errno.html", "class_sim_errno" ], + [ "SimulableSequence", "class_simulable_sequence.html", "class_simulable_sequence" ], + [ "Subdivision", "class_subdivision.html", "class_subdivision" ], + [ "Trajectory", "class_trajectory.html", "class_trajectory" ], + [ "Triangle", "class_triangle.html", "class_triangle" ], + [ "Vertex", "class_vertex.html", "class_vertex" ], + [ "Voxel", "class_voxel.html", "class_voxel" ], + [ "Walker", "class_walker.html", "class_walker" ] +]; \ No newline at end of file diff --git a/doc/html/bc_s.png b/doc/html/bc_s.png new file mode 100644 index 0000000..224b29a Binary files /dev/null and b/doc/html/bc_s.png differ diff --git a/doc/html/bdwn.png b/doc/html/bdwn.png new file mode 100644 index 0000000..940a0b9 Binary files /dev/null and b/doc/html/bdwn.png differ diff --git a/doc/html/class_collision-members.html b/doc/html/class_collision-members.html new file mode 100644 index 0000000..1b1d45a --- /dev/null +++ b/doc/html/class_collision-members.html @@ -0,0 +1,131 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Collision Member List
+
+
+ +

This is the complete list of members for Collision, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bounced_directionCollision
boundary enum value (defined in Collision)Collision
col_locationCollision
colision_pointCollision
Collision() (defined in Collision)Collisioninline
Collision(double u_, double v_, double t_) (defined in Collision)Collisioninline
collision_location enum nameCollision
collision_type enum nameCollision
computeCollisionLocation()Collision
degenerate enum value (defined in Collision)Collision
doIHaveMorePiorityThan(Collision &coll)Collision
hit enum value (defined in Collision)Collision
inside enum value (defined in Collision)Collision
near enum value (defined in Collision)Collision
null enum value (defined in Collision)Collision
obstacle_indCollision
on_edge enum value (defined in Collision)Collision
on_vertex enum value (defined in Collision)Collision
outside enum value (defined in Collision)Collision
rnCollision
tCollision
triangle_indCollision
typeCollision
uCollision
unknown enum value (defined in Collision)Collision
vCollision
voxel enum value (defined in Collision)Collision
~Collision()Collision
+
+ + + + diff --git a/doc/html/class_collision.html b/doc/html/class_collision.html new file mode 100644 index 0000000..643ecf5 --- /dev/null +++ b/doc/html/class_collision.html @@ -0,0 +1,393 @@ + + + + + + + +MCDC_simulator: Collision Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Collision Class Reference
+
+
+ +

Collision Final class =====================================================================/. + More...

+ +

#include <collision.h>

+ + + + + + +

+Public Types

enum  collision_type {
+  hit, +near, +null, +boundary, +
+  degenerate +
+ }
 
enum  collision_location {
+  inside, +on_edge, +on_vertex, +voxel, +
+  outside, +unknown +
+ }
 
+ + + + + + + + + + + + +

+Public Member Functions

Collision (double u_, double v_, double t_)
 
~Collision ()
 Does nothing.
 
+bool doIHaveMorePiorityThan (Collision &coll)
 Compares a second collision to determine which one has more priority. The comparison is based on the type of collision and distance.
 
void computeCollisionLocation ()
 Computes, based on the the coordinates u,v,t of the collision, the location relative to the triangle. More...
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

collision_type type
 
collision_location col_location
 
Eigen::Vector3d colision_point
 
Eigen::Vector3d bounced_direction
 
double rn
 
double u
 
double v
 
double t
 
int triangle_ind
 
int obstacle_ind
 
+

Detailed Description

+

Collision Final class =====================================================================/.

+

Class to save and handle collisions between walkers and objects.

Author
Jonathan Rafael

November 2016

+
+

Class to save and handle collisions between walkers and objects.

+

This class should handle all the cases where a collision can happened as well as all the operation between collision.

+

Member Enumeration Documentation

+ +

◆ collision_location

+ +
+
+ +

+

Only in case of collision (or a very close ending position) this are the cases where the collision can happened.

+ +
+
+ +

◆ collision_type

+ +
+
+ + + + +
enum Collision::collision_type
+
+ +

+

All the possibles cases or situations where a step can end. The next step is performed according to this state

+ +
+
+

Member Function Documentation

+ +

◆ computeCollisionLocation()

+ +
+
+ + + + + + + +
Collision::computeCollisionLocation ()
+
+ +

Computes, based on the the coordinates u,v,t of the collision, the location relative to the triangle.

+

Auxiliar function for Triangular barriers

+ +
+
+

Member Data Documentation

+ +

◆ bounced_direction

+ +
+
+ + + + +
Eigen::Vector3d Collision::bounced_direction
+
+

Save the bounced direction for a given obstacle

+ +
+
+ +

◆ col_location

+ +
+
+ + + + +
collision_location Collision::col_location
+
+

Save the colocation of the collision over the object

+ +
+
+ +

◆ colision_point

+ +
+
+ + + + +
Eigen::Vector3d Collision::colision_point
+
+

Saves the position of colision

+ +
+
+ +

◆ obstacle_ind

+ +
+
+ + + + +
int Collision::obstacle_ind
+
+

In case of a generic obstacle saves the obstacle index.

+ +
+
+ +

◆ rn

+ +
+
+ + + + +
double Collision::rn
+
+

saves the local orietnation between the wall and the particle

+ +
+
+ +

◆ t

+ +
+
+ + + + +
double Collision::t
+
+

signed, collision distance

+ +
+
+ +

◆ triangle_ind

+ +
+
+ + + + +
int Collision::triangle_ind
+
+

In case of a PLY obstacle saves the triangle index. t collison distance

+ +
+
+ +

◆ type

+ +
+
+ + + + +
collision_type Collision::type
+
+

Saves the type of collsion (if any)

+ +
+
+ +

◆ u

+ +
+
+ + + + +
double Collision::u
+
+

u position in baricentric coordinates

+ +
+
+ +

◆ v

+ +
+
+ + + + +
double Collision::v
+
+

v position in baricentric coordinates

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_collision.js b/doc/html/class_collision.js new file mode 100644 index 0000000..f238733 --- /dev/null +++ b/doc/html/class_collision.js @@ -0,0 +1,33 @@ +var class_collision = +[ + [ "collision_location", "class_collision.html#aad433eb4e51dbfd7ab9bbe188fbe47ab", [ + [ "inside", "class_collision.html#aad433eb4e51dbfd7ab9bbe188fbe47abacb60181a386e24a360e6fc42620fa667", null ], + [ "on_edge", "class_collision.html#aad433eb4e51dbfd7ab9bbe188fbe47aba3ddc94e48fda5e8b0a1806c93ceb8157", null ], + [ "on_vertex", "class_collision.html#aad433eb4e51dbfd7ab9bbe188fbe47abaaf901f716b62030883d7699191a87754", null ], + [ "voxel", "class_collision.html#aad433eb4e51dbfd7ab9bbe188fbe47abafc413c08f45b3dc25e1471c9542a3cde", null ], + [ "outside", "class_collision.html#aad433eb4e51dbfd7ab9bbe188fbe47aba4778fce18725479048f0b32d4438108f", null ], + [ "unknown", "class_collision.html#aad433eb4e51dbfd7ab9bbe188fbe47aba5b0bc47b4863ce82f5160ddcc2af321e", null ] + ] ], + [ "collision_type", "class_collision.html#aa7f309840b693689b164c7e4b4d643e5", [ + [ "hit", "class_collision.html#aa7f309840b693689b164c7e4b4d643e5a5619c670f276ba1f43b1fd8981ff4237", null ], + [ "near", "class_collision.html#aa7f309840b693689b164c7e4b4d643e5aa81a2ed36f71b73ad0c4cd3f283008c7", null ], + [ "null", "class_collision.html#aa7f309840b693689b164c7e4b4d643e5ad6fde9bfb3f5e0119764ea20ad1f7865", null ], + [ "boundary", "class_collision.html#aa7f309840b693689b164c7e4b4d643e5ae9d4aef77fe21e211a2b48aaf7f14486", null ], + [ "degenerate", "class_collision.html#aa7f309840b693689b164c7e4b4d643e5afa7f9aaee6bdb325789ecbeb20bf334f", null ] + ] ], + [ "Collision", "class_collision.html#aea8004fbf48b79b5db7b784688b23788", null ], + [ "Collision", "class_collision.html#a4cd23239c1de38dcc082345934a34441", null ], + [ "~Collision", "class_collision.html#a19ae49bcb3b16f4622443a34a171590c", null ], + [ "computeCollisionLocation", "class_collision.html#aa7ec5170357d8913c390defd844686e1", null ], + [ "doIHaveMorePiorityThan", "class_collision.html#aedabfa9b114e4201343963df5698f7ef", null ], + [ "bounced_direction", "class_collision.html#aee20b80597eeea9b0c5a3ff0a5d0c81c", null ], + [ "col_location", "class_collision.html#ae35c71ff91ffc9c253a345f0b4e2fbba", null ], + [ "colision_point", "class_collision.html#a00d821761200316e1d54eace02c725b4", null ], + [ "obstacle_ind", "class_collision.html#ad1f81d05e175689b7e31bf36121d1589", null ], + [ "rn", "class_collision.html#a95898b1296dfa87b78e8a1197f0f5ea2", null ], + [ "t", "class_collision.html#a195d201b0843d9f7190ac3a27761b4e7", null ], + [ "triangle_ind", "class_collision.html#a50dfece7495474875117cfbb3c4f524d", null ], + [ "type", "class_collision.html#a384809577e353e0905047beac856015b", null ], + [ "u", "class_collision.html#a6d79ffbca0e7f67fdc9af809f13f7f8a", null ], + [ "v", "class_collision.html#ade5759fea1e6b41812d2499f1dc06c02", null ] +]; \ No newline at end of file diff --git a/doc/html/class_collisionsphere-members.html b/doc/html/class_collisionsphere-members.html new file mode 100644 index 0000000..6349bcc --- /dev/null +++ b/doc/html/class_collisionsphere-members.html @@ -0,0 +1,107 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Collisionsphere Member List
+
+
+ +

This is the complete list of members for Collisionsphere, including all inherited members.

+ + + + + +
big_sphere_distanceCollisionsphere
Collisionsphere() (defined in Collisionsphere)Collisionsphereinline
list_size (defined in Collisionsphere)Collisionsphere
small_sphere_distanceCollisionsphere
+
+ + + + diff --git a/doc/html/class_collisionsphere.html b/doc/html/class_collisionsphere.html new file mode 100644 index 0000000..c54600b --- /dev/null +++ b/doc/html/class_collisionsphere.html @@ -0,0 +1,158 @@ + + + + + + + +MCDC_simulator: Collisionsphere Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Collisionsphere Class Reference
+
+
+
+Inheritance diagram for Collisionsphere:
+
+
Inheritance graph
+ + + + +
[legend]
+ + + + + + + + +

+Public Attributes

float big_sphere_distance
 
float small_sphere_distance
 
+unsigned list_size
 
+

Member Data Documentation

+ +

◆ big_sphere_distance

+ +
+
+ + + + +
float Collisionsphere::big_sphere_distance
+
+

Size of the big (outer) collision sphere

+ +
+
+ +

◆ small_sphere_distance

+ +
+
+ + + + +
float Collisionsphere::small_sphere_distance
+
+

Size of the small (inner) collision sphere

+ +
+
+
The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/class_collisionsphere.js b/doc/html/class_collisionsphere.js new file mode 100644 index 0000000..dbee1b8 --- /dev/null +++ b/doc/html/class_collisionsphere.js @@ -0,0 +1,7 @@ +var class_collisionsphere = +[ + [ "Collisionsphere", "class_collisionsphere.html#acd591f09debfac154b54e109967cd4f2", null ], + [ "big_sphere_distance", "class_collisionsphere.html#a4b791781efcb1af5198b22ea0b542cfb", null ], + [ "list_size", "class_collisionsphere.html#abf63a29c825cdd63ecb86d1dc430a0d4", null ], + [ "small_sphere_distance", "class_collisionsphere.html#ae5430c092ea0436edfe0adeb79402ff2", null ] +]; \ No newline at end of file diff --git a/doc/html/class_collisionsphere__inherit__graph.map b/doc/html/class_collisionsphere__inherit__graph.map new file mode 100644 index 0000000..0b2a64b --- /dev/null +++ b/doc/html/class_collisionsphere__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doc/html/class_collisionsphere__inherit__graph.md5 b/doc/html/class_collisionsphere__inherit__graph.md5 new file mode 100644 index 0000000..b6ddcb2 --- /dev/null +++ b/doc/html/class_collisionsphere__inherit__graph.md5 @@ -0,0 +1 @@ +fe2855d462463850d5e982af4f7799b9 \ No newline at end of file diff --git a/doc/html/class_collisionsphere__inherit__graph.png b/doc/html/class_collisionsphere__inherit__graph.png new file mode 100644 index 0000000..7c46f9b Binary files /dev/null and b/doc/html/class_collisionsphere__inherit__graph.png differ diff --git a/doc/html/class_collisionspheren.html b/doc/html/class_collisionspheren.html new file mode 100644 index 0000000..5776e14 --- /dev/null +++ b/doc/html/class_collisionspheren.html @@ -0,0 +1,114 @@ + + + + + + + +MCDC_simulator: Collisionspheren Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Collisionspheren Class Reference
+
+
+ +

Collision Final class ============================================================================/. + More...

+ +

#include <collisionsphere.h>

+

Detailed Description

+

Collision Final class ============================================================================/.

+

Class to implement spherical bounding boxes for the WALKER mean diffusion. This class provides methods in order to create and update spherical bounding boxes used to compute the collisions.

Author
Jonathan Rafael

February 2017

+
+

Father class. this class provides methods in order to create and update spherical bounding box used to compute the collisions. The implementation is based on two collision spheres. The inner one (small) and the (outer). The fist saves the objects where th particle MAY collide in a given time, While the second saves the full set of obstacles where the particle can possibly collide, i.e. that are physically achievable for the walker to collide.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/class_cylinder-members.html b/doc/html/class_cylinder-members.html new file mode 100644 index 0000000..c6a62cc --- /dev/null +++ b/doc/html/class_cylinder-members.html @@ -0,0 +1,121 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Cylinder Member List
+
+
+ +

This is the complete list of members for Cylinder, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
checkCollision(Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision)Cylinder
Obstacle::checkCollision(Walker &walker, Eigen::Array3d &step, const double &step_lenght, Collision &colision)Obstacle
count (defined in Cylinder)Cylinderstatic
count_perc_crossingsObstacle
Cylinder()Cylinder
Cylinder(Eigen::Vector3d P_, Eigen::Vector3d Q_, double radius_, double scale=1)Cylinderinline
Cylinder(Cylinder const &cyl)Cylinder
DCylinder
elasticBounceAgainsPlane(Eigen::Vector3d &ray_origin, Eigen::Vector3d &normal, double &t, Eigen::Vector3d &step) (defined in Obstacle)Obstacle
idObstacle
minDistance(Walker &w)Cylinder
Obstacle()Obstacle
P (defined in Cylinder)Cylinder
percolationObstacle
QCylinder
radiusCylinder
T2Obstacle
~Cylinder() (defined in Cylinder)Cylinder
+
+ + + + diff --git a/doc/html/class_cylinder.html b/doc/html/class_cylinder.html new file mode 100644 index 0000000..4305f78 --- /dev/null +++ b/doc/html/class_cylinder.html @@ -0,0 +1,412 @@ + + + + + + + +MCDC_simulator: Cylinder Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Cylinder Class Reference
+
+
+ +

Cylinder Obstacle Derived Class =============================================================/. + More...

+ +

#include <cylinder.h>

+
+Inheritance diagram for Cylinder:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for Cylinder:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Cylinder ()
 Default constructor. Does nothing.
 
 Cylinder (Eigen::Vector3d P_, Eigen::Vector3d Q_, double radius_, double scale=1)
 Initialize everything. More...
 
 Cylinder (Cylinder const &cyl)
 Initialize everything. More...
 
bool checkCollision (Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision)
 Basic collision function. Returns the if there was any collision on against the obstacle. More...
 
double minDistance (Walker &w)
 Returns the minimum distance from the walker to the cylinder. Used to set the reachable cylinders that a given walker can reach. More...
 
- Public Member Functions inherited from Obstacle
Obstacle ()
 Default constructor. Does nothing.
 
bool checkCollision (Walker &walker, Eigen::Array3d &step, const double &step_lenght, Collision &colision)
 Basic collision function. Returns the if there was any collision on against the obstacle. More...
 
+void elasticBounceAgainsPlane (Eigen::Vector3d &ray_origin, Eigen::Vector3d &normal, double &t, Eigen::Vector3d &step)
 
double minDistance (Walker &w)
 Returns the minimum distance of collision. More...
 
+ + + + + + + + + + + + + + + + + + +

+Public Attributes

+Eigen::Vector3d P
 
Eigen::Vector3d Q
 
Eigen::Vector3d D
 
double radius
 
- Public Attributes inherited from Obstacle
int id
 
int count_perc_crossings
 
double percolation
 
double T2
 
+ + + +

+Static Public Attributes

+static int count = 0
 
+

Detailed Description

+

Cylinder Obstacle Derived Class =============================================================/.

+

Cylinder class derived from an Obstacle. Defines infinite long cylinders in the direction set by P,Q.

Author
Jonathan Rafael
+
Date
November 2016

1.42

+
+

Constructor & Destructor Documentation

+ +

◆ Cylinder() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cylinder::Cylinder (Eigen::Vector3d P_,
Eigen::Vector3d Q_,
double radius_,
double scale = 1 
)
+
+inline
+
+ +

Initialize everything.

+
Parameters
+ + + + + +
P_Cylinder origin
Q_cylinder direction.
radius_cylinder's radius
scalescale factor for the values passed. Useful when reading a file.
+
+
+ +
+
+ +

◆ Cylinder() [2/2]

+ +
+
+ + + + + + + + +
Cylinder::Cylinder (Cylinder const & cyl)
+
+ +

Initialize everything.

+
Parameters
+ + + + + +
P_Cylinder origin
Q_cylinder direction.
radius_cylinder's radius
scalescale factor for the values passed. Useful when reading a file.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ checkCollision()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Cylinder::checkCollision (Walkerwalker,
Eigen::Vector3d & step,
double & step_lenght,
Collisioncolision 
)
+
+ +

Basic collision function. Returns the if there was any collision on against the obstacle.

+
Parameters
+ + + + + +
walker,Walkerinstance in the simulation.
3dstep. Is assumed to be normalized.
step_length,lengthused as the maximum step collision distance.
collision,Collisioninstance to save the collision (if any) details.
+
+
+
Returns
true only if there was a Collision::hit status.
+
See also
Collision.
+ +
+
+ +

◆ minDistance()

+ +
+
+ + + + + + + + +
Cylinder::minDistance (Walkerw)
+
+ +

Returns the minimum distance from the walker to the cylinder. Used to set the reachable cylinders that a given walker can reach.

+
Parameters
+ + +
walker,Walkerinstance in the simulation.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ D

+ +
+
+ + + + +
Eigen::Vector3d Cylinder::D
+
+

Pre-computed and normalized P - Q vector

+ +
+
+ +

◆ Q

+ +
+
+ + + + +
Eigen::Vector3d Cylinder::Q
+
+

Cilinder Axis reference Points, P should be the "center"

+ +
+
+ +

◆ radius

+ +
+
+ + + + +
double Cylinder::radius
+
+

Radius of the cylinder

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_cylinder.js b/doc/html/class_cylinder.js new file mode 100644 index 0000000..5e03e2f --- /dev/null +++ b/doc/html/class_cylinder.js @@ -0,0 +1,13 @@ +var class_cylinder = +[ + [ "Cylinder", "class_cylinder.html#a01dc978cb576f834b9545e43d4dad2a2", null ], + [ "~Cylinder", "class_cylinder.html#a05ab556f0ae3cd6e99d9d1f3caca80b3", null ], + [ "Cylinder", "class_cylinder.html#a0a5f7aa0a0c5c5e17c783784fd99fa1a", null ], + [ "Cylinder", "class_cylinder.html#ab5389301aa05bdee0c066e0b8026611f", null ], + [ "checkCollision", "class_cylinder.html#a43350a6331f8656dd0774a4a3b68724f", null ], + [ "minDistance", "class_cylinder.html#a6eb639d12a7fc0aec50895151fb91b1f", null ], + [ "D", "class_cylinder.html#a2e7f0d4e406cc50daf30f3e3b0be1609", null ], + [ "P", "class_cylinder.html#ae9823df86b6b76bc86172d84d798494f", null ], + [ "Q", "class_cylinder.html#a9f367beb008c847b97bb0ce043601769", null ], + [ "radius", "class_cylinder.html#a8a825799285bcf60b49b8aef0459b498", null ] +]; \ No newline at end of file diff --git a/doc/html/class_cylinder__coll__graph.map b/doc/html/class_cylinder__coll__graph.map new file mode 100644 index 0000000..6d234f7 --- /dev/null +++ b/doc/html/class_cylinder__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/class_cylinder__coll__graph.md5 b/doc/html/class_cylinder__coll__graph.md5 new file mode 100644 index 0000000..010c87a --- /dev/null +++ b/doc/html/class_cylinder__coll__graph.md5 @@ -0,0 +1 @@ +e2b7c1d0c119944237b25301a0a370b5 \ No newline at end of file diff --git a/doc/html/class_cylinder__coll__graph.png b/doc/html/class_cylinder__coll__graph.png new file mode 100644 index 0000000..722e285 Binary files /dev/null and b/doc/html/class_cylinder__coll__graph.png differ diff --git a/doc/html/class_cylinder__inherit__graph.map b/doc/html/class_cylinder__inherit__graph.map new file mode 100644 index 0000000..6d234f7 --- /dev/null +++ b/doc/html/class_cylinder__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/class_cylinder__inherit__graph.md5 b/doc/html/class_cylinder__inherit__graph.md5 new file mode 100644 index 0000000..4f8dd30 --- /dev/null +++ b/doc/html/class_cylinder__inherit__graph.md5 @@ -0,0 +1 @@ +24d757a3e2e9fec14cfbd59ef7058099 \ No newline at end of file diff --git a/doc/html/class_cylinder__inherit__graph.png b/doc/html/class_cylinder__inherit__graph.png new file mode 100644 index 0000000..722e285 Binary files /dev/null and b/doc/html/class_cylinder__inherit__graph.png differ diff --git a/doc/html/class_cylinder_collision_sphere-members.html b/doc/html/class_cylinder_collision_sphere-members.html new file mode 100644 index 0000000..93bc140 --- /dev/null +++ b/doc/html/class_cylinder_collision_sphere-members.html @@ -0,0 +1,118 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
CylinderCollisionSphere Member List
+
+
+ +

This is the complete list of members for CylinderCollisionSphere, including all inherited members.

+ + + + + + + + + + + + + + + + +
big_sphere_distanceCollisionsphere
big_sphere_list_endCylinderCollisionSphere
collision_list (defined in CylinderCollisionSphere)CylinderCollisionSphere
Collisionsphere() (defined in Collisionsphere)Collisionsphereinline
CylinderCollisionSphere()CylinderCollisionSphere
list_size (defined in Collisionsphere)Collisionsphere
popFromBigSphere(unsigned i)CylinderCollisionSphere
popFromSmallSphere(unsigned i)CylinderCollisionSphere
push_index(unsigned int element)CylinderCollisionSphere
pushToBigSphere(unsigned i)CylinderCollisionSphere
pushToSmallSphere(unsigned i)CylinderCollisionSphere
setBigSphereSize(float size)CylinderCollisionSphere
setSmallSphereSize(float size)CylinderCollisionSphere
small_sphere_distanceCollisionsphere
small_sphere_list_endCylinderCollisionSphere
+
+ + + + diff --git a/doc/html/class_cylinder_collision_sphere.html b/doc/html/class_cylinder_collision_sphere.html new file mode 100644 index 0000000..16efbe7 --- /dev/null +++ b/doc/html/class_cylinder_collision_sphere.html @@ -0,0 +1,302 @@ + + + + + + + +MCDC_simulator: CylinderCollisionSphere Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
CylinderCollisionSphere Class Reference
+
+
+ +

Class to save the cylinderical obstacles that a can collide to a walker. + More...

+ +

#include <collisionsphere.h>

+
+Inheritance diagram for CylinderCollisionSphere:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for CylinderCollisionSphere:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 CylinderCollisionSphere ()
 
+void popFromSmallSphere (unsigned i)
 This function receives a index from the collision list and moves the value to the last position of the list. then decrease the inner sphere end index. This way this index is no longer considered inner collision list.
 
+void pushToSmallSphere (unsigned i)
 This function receives a index from the collision list and moves the value to the last position of the list. then increase the inner sphere end index. This way this index is now included in the inner collision list.
 
+void popFromBigSphere (unsigned i)
 This function receives a index from the collision list and moves the value to the last position of the list. Then decrease the inner sphere end index. This way this index is now excluded in the outer collision list.
 
+void pushToBigSphere (unsigned i)
 This function receives a index from the collision list and moves the value to the last position of the list. Then increase the inner sphere end index. This way this index is now included in the outer collision list.
 
void setBigSphereSize (float size)
 
void setSmallSphereSize (float size)
 
void push_index (unsigned int element)
 
+ + + + + + + + + + + + + + +

+Public Attributes

unsigned small_sphere_list_end
 
unsigned big_sphere_list_end
 
+std::vector< unsigned > * collision_list
 
- Public Attributes inherited from Collisionsphere
float big_sphere_distance
 
float small_sphere_distance
 
+unsigned list_size
 
+

Detailed Description

+

Class to save the cylinderical obstacles that a can collide to a walker.

+

Class to save the PLY mehses and the subset of triangles that a can collide to a walker.

+

Constructor & Destructor Documentation

+ +

◆ CylinderCollisionSphere()

+ +
+
+ + + + + + + +
CylinderCollisionSphere::CylinderCollisionSphere ()
+
+

<Pointer to List with the cylinders indexes. The indexes are permuted in its position.

+ +
+
+

Member Function Documentation

+ +

◆ push_index()

+ +
+
+ + + + + + + + +
void CylinderCollisionSphere::push_index (unsigned int element)
+
+
Parameters
+ + +
elementvalue to be added to the obstacle list
+
+
+ +
+
+ +

◆ setBigSphereSize()

+ +
+
+ + + + + + + + +
void CylinderCollisionSphere::setBigSphereSize (float size)
+
+
Parameters
+ + +
sizeof the list
+
+
+ +
+
+ +

◆ setSmallSphereSize()

+ +
+
+ + + + + + + + +
void CylinderCollisionSphere::setSmallSphereSize (float size)
+
+
Parameters
+ + +
sizeof the list
+
+
+ +
+
+

Member Data Documentation

+ +

◆ big_sphere_list_end

+ +
+
+ + + + +
unsigned CylinderCollisionSphere::big_sphere_list_end
+
+

Index of the LAST element on the list for the big collision sphere

+ +
+
+ +

◆ small_sphere_list_end

+ +
+
+ + + + +
unsigned CylinderCollisionSphere::small_sphere_list_end
+
+

Index of the LAST element on the list for the small collision sphere

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_cylinder_collision_sphere.js b/doc/html/class_cylinder_collision_sphere.js new file mode 100644 index 0000000..8cbf7c3 --- /dev/null +++ b/doc/html/class_cylinder_collision_sphere.js @@ -0,0 +1,14 @@ +var class_cylinder_collision_sphere = +[ + [ "CylinderCollisionSphere", "class_cylinder_collision_sphere.html#ac4f58e8792fdcdfe475b9556dc804553", null ], + [ "popFromBigSphere", "class_cylinder_collision_sphere.html#a06a8f75674ef0bcc44a820e948624f60", null ], + [ "popFromSmallSphere", "class_cylinder_collision_sphere.html#ad4cfd86c6ab7035b9ba67277792c132f", null ], + [ "push_index", "class_cylinder_collision_sphere.html#af2977e3da60e7a4c1e4ae4fccf03ed09", null ], + [ "pushToBigSphere", "class_cylinder_collision_sphere.html#a8742564f85c9fede195ee716a3b16042", null ], + [ "pushToSmallSphere", "class_cylinder_collision_sphere.html#aa369aaa1ce839382c915ac4f32ac82ca", null ], + [ "setBigSphereSize", "class_cylinder_collision_sphere.html#a3fe165c817a66074e737985efd87128b", null ], + [ "setSmallSphereSize", "class_cylinder_collision_sphere.html#a6e7f5ff8f4e5c076edb5f1cbee433a34", null ], + [ "big_sphere_list_end", "class_cylinder_collision_sphere.html#a303b3843a9c8ab9ae3e6f4cce85ae8e0", null ], + [ "collision_list", "class_cylinder_collision_sphere.html#a2c925c436410847d2f6079cd5331eada", null ], + [ "small_sphere_list_end", "class_cylinder_collision_sphere.html#a89e3bdfa12042aa94c20949587c513d5", null ] +]; \ No newline at end of file diff --git a/doc/html/class_cylinder_collision_sphere__coll__graph.map b/doc/html/class_cylinder_collision_sphere__coll__graph.map new file mode 100644 index 0000000..9167b4c --- /dev/null +++ b/doc/html/class_cylinder_collision_sphere__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/class_cylinder_collision_sphere__coll__graph.md5 b/doc/html/class_cylinder_collision_sphere__coll__graph.md5 new file mode 100644 index 0000000..4d59a5e --- /dev/null +++ b/doc/html/class_cylinder_collision_sphere__coll__graph.md5 @@ -0,0 +1 @@ +496277fa734809904a0c4bad47346065 \ No newline at end of file diff --git a/doc/html/class_cylinder_collision_sphere__coll__graph.png b/doc/html/class_cylinder_collision_sphere__coll__graph.png new file mode 100644 index 0000000..f20cda5 Binary files /dev/null and b/doc/html/class_cylinder_collision_sphere__coll__graph.png differ diff --git a/doc/html/class_cylinder_collision_sphere__inherit__graph.map b/doc/html/class_cylinder_collision_sphere__inherit__graph.map new file mode 100644 index 0000000..9167b4c --- /dev/null +++ b/doc/html/class_cylinder_collision_sphere__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/class_cylinder_collision_sphere__inherit__graph.md5 b/doc/html/class_cylinder_collision_sphere__inherit__graph.md5 new file mode 100644 index 0000000..13aff5b --- /dev/null +++ b/doc/html/class_cylinder_collision_sphere__inherit__graph.md5 @@ -0,0 +1 @@ +93feae2b5595384153c2d8691eb8ac0c \ No newline at end of file diff --git a/doc/html/class_cylinder_collision_sphere__inherit__graph.png b/doc/html/class_cylinder_collision_sphere__inherit__graph.png new file mode 100644 index 0000000..f20cda5 Binary files /dev/null and b/doc/html/class_cylinder_collision_sphere__inherit__graph.png differ diff --git a/doc/html/class_cylinder_gamma_distribution-members.html b/doc/html/class_cylinder_gamma_distribution-members.html new file mode 100644 index 0000000..79e3be9 --- /dev/null +++ b/doc/html/class_cylinder_gamma_distribution-members.html @@ -0,0 +1,115 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
CylinderGammaDistribution Member List
+
+
+ +

This is the complete list of members for CylinderGammaDistribution, including all inherited members.

+ + + + + + + + + + + + + +
alphaCylinderGammaDistribution
betaCylinderGammaDistribution
createGammaSubstrate()CylinderGammaDistribution
CylinderGammaDistribution(unsigned, double, double, double, Eigen::Vector3d &, Eigen::Vector3d &, float min_radius)CylinderGammaDistribution
cylindersCylinderGammaDistribution
displayGammaDistribution()CylinderGammaDistribution
icvfCylinderGammaDistribution
max_limitsCylinderGammaDistribution
min_limitsCylinderGammaDistribution
min_radiusCylinderGammaDistribution
num_cylindersCylinderGammaDistribution
printSubstrate(std::ostream &out)CylinderGammaDistribution
+
+ + + + diff --git a/doc/html/class_cylinder_gamma_distribution.html b/doc/html/class_cylinder_gamma_distribution.html new file mode 100644 index 0000000..b7867c7 --- /dev/null +++ b/doc/html/class_cylinder_gamma_distribution.html @@ -0,0 +1,374 @@ + + + + + + + +MCDC_simulator: CylinderGammaDistribution Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
CylinderGammaDistribution Class Reference
+
+
+ +

CylinderGammaDistribution Class =============================================================/. + More...

+ +

#include <cylindergammadistribution.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

 CylinderGammaDistribution (unsigned, double, double, double, Eigen::Vector3d &, Eigen::Vector3d &, float min_radius)
 Initialize everything. More...
 
+void displayGammaDistribution ()
 Shows a small histogram of the gamma distribution.
 
+void createGammaSubstrate ()
 Samples and constructs a Gamma distribution.
 
void printSubstrate (std::ostream &out)
 Prints the cylinders positions in a file or output stream. More...
 
+ + + + + + + + + + + + + + + + + +

+Public Attributes

unsigned num_cylinders
 
double alpha
 
double beta
 
double icvf
 
float min_radius
 
Eigen::Vector3d min_limits
 
Eigen::Vector3d max_limits
 
std::vector< Cylindercylinders
 
+

Detailed Description

+

CylinderGammaDistribution Class =============================================================/.

+

Class to construct a substrate taken from a Gamma distribution of radiis placed in a single voxel structure.

Author
Jonathan Rafael
+
Date
february 2017

0.2

+
+

Constructor & Destructor Documentation

+ +

◆ CylinderGammaDistribution()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CylinderGammaDistribution::CylinderGammaDistribution (unsigned num_cyl,
double a,
double b,
double icvf_,
Eigen::Vector3d & min_l,
Eigen::Vector3d & max_l,
float min_radius = 0.01 
)
+
+ +

Initialize everything.

+
Parameters
+ + + + + +
P_Cylinder origin
Q_cylinder direction.
radius_cylinder's radius
scalescale factor for the values passed. Useful when reading a file.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ printSubstrate()

+ +
+
+ + + + + + + + +
void CylinderGammaDistribution::printSubstrate (std::ostream & out)
+
+ +

Prints the cylinders positions in a file or output stream.

+
Parameters
+ + +
outostream where to write the info.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ alpha

+ +
+
+ + + + +
double CylinderGammaDistribution::alpha
+
+

alpha coefficient of the Gamma distribution

+ +
+
+ +

◆ beta

+ +
+
+ + + + +
double CylinderGammaDistribution::beta
+
+

beta coefficient of the gamma distribution

+ +
+
+ +

◆ cylinders

+ +
+
+ + + + +
std::vector<Cylinder> CylinderGammaDistribution::cylinders
+
+

Cylinder vector

+ +
+
+ +

◆ icvf

+ +
+
+ + + + +
double CylinderGammaDistribution::icvf
+
+

Achieved intra-celular volum fraction in the substrate

+ +
+
+ +

◆ max_limits

+ +
+
+ + + + +
Eigen::Vector3d CylinderGammaDistribution::max_limits
+
+

voxel max limits (if any)

+ +
+
+ +

◆ min_limits

+ +
+
+ + + + +
Eigen::Vector3d CylinderGammaDistribution::min_limits
+
+

voxel min limits (if any) (bottom left corner)

+ +
+
+ +

◆ min_radius

+ +
+
+ + + + +
float CylinderGammaDistribution::min_radius
+
+

Minimum radius to be sampled from the gamma distribution

+ +
+
+ +

◆ num_cylinders

+ +
+
+ + + + +
unsigned CylinderGammaDistribution::num_cylinders
+
+

number of cylnders fit inside the substrate

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_cylinder_gamma_distribution.js b/doc/html/class_cylinder_gamma_distribution.js new file mode 100644 index 0000000..bd23079 --- /dev/null +++ b/doc/html/class_cylinder_gamma_distribution.js @@ -0,0 +1,15 @@ +var class_cylinder_gamma_distribution = +[ + [ "CylinderGammaDistribution", "class_cylinder_gamma_distribution.html#a7578f5f0fb11398ec5bf5007047f4b81", null ], + [ "createGammaSubstrate", "class_cylinder_gamma_distribution.html#ad93e569b24e3c6b1266ecf79bd18dec9", null ], + [ "displayGammaDistribution", "class_cylinder_gamma_distribution.html#a3408ed30966550c10810a0a6cbbfd3c2", null ], + [ "printSubstrate", "class_cylinder_gamma_distribution.html#a2345c03be0b0c934efe02e4234c65fd1", null ], + [ "alpha", "class_cylinder_gamma_distribution.html#a8cae528f51692ed05049e4ea06c63722", null ], + [ "beta", "class_cylinder_gamma_distribution.html#a601a42ef7bacbf9696229efbd703f61e", null ], + [ "cylinders", "class_cylinder_gamma_distribution.html#a3e8265a7ddb15d895112e02bd66fbf67", null ], + [ "icvf", "class_cylinder_gamma_distribution.html#a31f82c4608b7cd2b022805e30a4db983", null ], + [ "max_limits", "class_cylinder_gamma_distribution.html#aa7094851c2ccf05fc5ff7a99707aa786", null ], + [ "min_limits", "class_cylinder_gamma_distribution.html#ac77a9d794f2f2000066c4a26f19a9097", null ], + [ "min_radius", "class_cylinder_gamma_distribution.html#aece7d3ec40d3dbb3a2ecd1bd88c5a694", null ], + [ "num_cylinders", "class_cylinder_gamma_distribution.html#af74583662a4f33ba1565f2c71e6bbc5a", null ] +]; \ No newline at end of file diff --git a/doc/html/class_dynamics_simulation-members.html b/doc/html/class_dynamics_simulation-members.html new file mode 100644 index 0000000..e4961d9 --- /dev/null +++ b/doc/html/class_dynamics_simulation-members.html @@ -0,0 +1,148 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
DynamicsSimulation Member List
+
+
+ +

This is the complete list of members for DynamicsSimulation, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aux_walker_index (defined in DynamicsSimulation)DynamicsSimulation
completedDynamicsSimulation
cylinders_dequeDynamicsSimulation
cylinders_listDynamicsSimulation
DynamicsSimulation()DynamicsSimulation
DynamicsSimulation(std::string conf_file)DynamicsSimulation
DynamicsSimulation(Parameters &params_)DynamicsSimulation
icvfDynamicsSimulation
idDynamicsSimulation
ini_pos_fileDynamicsSimulation
ini_pos_file_ini_indexDynamicsSimulation
iniPos (defined in DynamicsSimulation)DynamicsSimulation
intra_tries (defined in DynamicsSimulation)DynamicsSimulation
isInIntra(Eigen::Vector3d &position, int &cyl_id, int &ply_id, double distance_to_be_intra_ply=1e-6)DynamicsSimulation
isInsideCylinders(Eigen::Vector3d &position, int &cyl_id, double distance_to_be_inside=1e-6) (defined in DynamicsSimulation)DynamicsSimulation
isInsidePLY(Eigen::Vector3d &position, int &ply_id, double distance_to_be_inside=1e-6) (defined in DynamicsSimulation)DynamicsSimulation
last_time_dtDynamicsSimulation
max_simulation_timeDynamicsSimulation
mtDynamicsSimulation
nowDynamicsSimulation
num_simulated_walkersDynamicsSimulation
paramsDynamicsSimulation
ply_dequeDynamicsSimulation
plyObstacles_listDynamicsSimulation
print_expected_timeDynamicsSimulation
propagatorDynamicsSimulation
readConfigurationFile(std::string conf_file_path)DynamicsSimulation
second_passedDynamicsSimulation
secondsToMinutes(double) (defined in DynamicsSimulation)DynamicsSimulationstatic
sentinelaDynamicsSimulation
setDuration(const double &duration)DynamicsSimulation
setStepsNum(const unsigned &T) (defined in DynamicsSimulation)DynamicsSimulation
setWalkersNum(const unsigned &N) (defined in DynamicsSimulation)DynamicsSimulation
start (defined in DynamicsSimulation)DynamicsSimulation
startSimulation(SimulableSequence *dataSynth=nullptr)DynamicsSimulation
step (defined in DynamicsSimulation)DynamicsSimulation
step_lenghtDynamicsSimulation
time_dt (defined in DynamicsSimulation)DynamicsSimulation
time_step (defined in DynamicsSimulation)DynamicsSimulation
total_triesDynamicsSimulation
trajectoryDynamicsSimulation
voxels_listDynamicsSimulation
walkerDynamicsSimulation
writePropagator(std::string path)DynamicsSimulation
~DynamicsSimulation()DynamicsSimulation
+
+ + + + diff --git a/doc/html/class_dynamics_simulation.html b/doc/html/class_dynamics_simulation.html new file mode 100644 index 0000000..fa54afb --- /dev/null +++ b/doc/html/class_dynamics_simulation.html @@ -0,0 +1,822 @@ + + + + + + + +MCDC_simulator: DynamicsSimulation Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
DynamicsSimulation Class Reference
+
+
+ +

Dynamic simulation main class =============================================================/. + More...

+ +

#include <dynamicsSimulation.h>

+
+Collaboration diagram for DynamicsSimulation:
+
+
Collaboration graph
+ + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 DynamicsSimulation ()
 Default constructor. Initialize everything with 0's and NULL states, object indexes are set to -1. More...
 
 DynamicsSimulation (std::string conf_file)
 
 DynamicsSimulation (Parameters &params_)
 
~DynamicsSimulation ()
 Does nothing.
 
void startSimulation (SimulableSequence *dataSynth=nullptr)
 Starts the dynamics simulation and, if a PGSE sequence is given, computes the DW signal. More...
 
void readConfigurationFile (std::string conf_file_path)
 Reads all the parameters listed in the param conf_file and stores them in the /t params object. More...
 
void setDuration (const double &duration)
 Sets the simulation duration in milliseconds, this should be synchronized w/r the Time Echo. More...
 
+void setWalkersNum (const unsigned &N)
 
+void setStepsNum (const unsigned &T)
 
bool isInIntra (Eigen::Vector3d &position, int &cyl_id, int &ply_id, double distance_to_be_intra_ply=1e-6)
 return true if the position is inside any of the obstacles. Only obstacles with a defined "inside region" can be considered. Voxel periodicity is not considered More...
 
+void writePropagator (std::string path)
 Writes to disk the final propagator matrix.
 
+bool isInsideCylinders (Eigen::Vector3d &position, int &cyl_id, double distance_to_be_inside=1e-6)
 
+bool isInsidePLY (Eigen::Vector3d &position, int &ply_id, double distance_to_be_inside=1e-6)
 
+ + + +

+Static Public Member Functions

+static std::string secondsToMinutes (double)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Parameters params
 
Walker walker
 
Trajectory trajectory
 
std::mt19937 mt
 
double step_lenght
 
double second_passed
 
double max_simulation_time
 
double completed
 
std::string ini_pos_file
 
unsigned ini_pos_file_ini_index
 
int id
 
sentinels::Sentinel sentinela
 
std::vector< PLYObstacle > * plyObstacles_list
 
std::vector< Cylinder > * cylinders_list
 
std::vector< unsigned > cylinders_deque
 
std::vector< std::vector< unsigned > > ply_deque
 
std::vector< Voxelvoxels_list
 
Propagator propagator
 
double icvf
 
+unsigned intra_tries
 
unsigned total_tries
 
+Eigen::Vector3d step
 
+double time_step
 
+double time_dt
 
double last_time_dt
 
+std::ifstream iniPos
 
+time_t start
 
time_t now
 
bool print_expected_time
 
unsigned num_simulated_walkers
 
+unsigned aux_walker_index
 
+

Detailed Description

+

Dynamic simulation main class =============================================================/.

+

Main implementation of the particles dynamics. Handles collisions and bouncing

Author
Jonathan Rafael
+
Date
November 2016

1.42

+
+

Main class, implements the particles dynamics. Handles collisions and bouncing.

+

Constructor & Destructor Documentation

+ +

◆ DynamicsSimulation() [1/3]

+ +
+
+ + + + + + + +
DynamicsSimulation::DynamicsSimulation ()
+
+ +

Default constructor. Initialize everything with 0's and NULL states, object indexes are set to -1.

+

DynamicsSimulation implementation

+ +
+
+ +

◆ DynamicsSimulation() [2/3]

+ +
+
+ + + + + + + + +
DynamicsSimulation::DynamicsSimulation (std::string conf_file)
+
+
Parameters
+ + +
configurationfile
+
+
+ +
+
+ +

◆ DynamicsSimulation() [3/3]

+ +
+
+ + + + + + + + +
DynamicsSimulation::DynamicsSimulation (Parametersparams_)
+
+
Parameters
+ + +
Parameterinstance
+
+
+ +
+
+

Member Function Documentation

+ +

◆ isInIntra()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DynamicsSimulation::isInIntra (Eigen::Vector3d & position,
int & cyl_id,
int & ply_id,
double distance_to_be_intra_ply = 1e-6 
)
+
+ +

return true if the position is inside any of the obstacles. Only obstacles with a defined "inside region" can be considered. Voxel periodicity is not considered

+
Parameters
+ + + +
position3d position on space.
errorminimum distance to be considered "outside" de obstacle (barrier thickness)
+
+
+ +
+
+ +

◆ readConfigurationFile()

+ +
+
+ + + + + + + + +
DynamicsSimulation::readConfigurationFile (std::string conf_file_path)
+
+ +

Reads all the parameters listed in the param conf_file and stores them in the /t params object.

+
Parameters
+ + +
conf_file_path
+
+
+
Returns
void
+
Parameters
+ + +
conf_file_pathparemeters file path.
+
+
+ +
+
+ +

◆ setDuration()

+ +
+
+ + + + + + + + +
DynamicsSimulation::setDuration (const double & duration)
+
+ +

Sets the simulation duration in milliseconds, this should be synchronized w/r the Time Echo.

+
Parameters
+ + +
durationsimulation duration.
+
+
+ +
+
+ +

◆ startSimulation()

+ +
+
+ + + + + + + + +
DynamicsSimulation::startSimulation (SimulableSequencedataSynth = nullptr)
+
+ +

Starts the dynamics simulation and, if a PGSE sequence is given, computes the DW signal.

+
Parameters
+ + +
dataSynthoptional paramter. If this parameter is not given, no signal is computed.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ completed

+ +
+
+ + + + +
double DynamicsSimulation::completed
+
+

Auxiliar variable to save the milestone of percentage of completed walkers

+ +
+
+ +

◆ cylinders_deque

+ +
+
+ + + + +
std::vector<unsigned> DynamicsSimulation::cylinders_deque
+
+

deque with the indexes of the cylinders (used for optmization)

+ +
+
+ +

◆ cylinders_list

+ +
+
+ + + + +
std::vector<Cylinder>* DynamicsSimulation::cylinders_list
+
+

vector with all the isntances of "Cylider" obstacles

+ +
+
+ +

◆ icvf

+ +
+
+ + + + +
double DynamicsSimulation::icvf
+
+

Stores the ICVF (1 - Intra-Extra) if needed

+ +
+
+ +

◆ id

+ +
+
+ + + + +
int DynamicsSimulation::id
+
+

Unique id for the dynamic simulation

+ +
+
+ +

◆ ini_pos_file

+ +
+
+ + + + +
std::string DynamicsSimulation::ini_pos_file
+
+

walkers intitial position file

+ +
+
+ +

◆ ini_pos_file_ini_index

+ +
+
+ + + + +
unsigned DynamicsSimulation::ini_pos_file_ini_index
+
+

starting position in the ini walker position file (multicore support)

+ +
+
+ +

◆ last_time_dt

+ +
+
+ + + + +
double DynamicsSimulation::last_time_dt
+
+

simulation time steps auxiliar values

+ +
+
+ +

◆ max_simulation_time

+ +
+
+ + + + +
double DynamicsSimulation::max_simulation_time
+
+

Maximum simulation time if not passed we carry all the particles

+ +
+
+ +

◆ mt

+ +
+
+ + + + +
std::mt19937 DynamicsSimulation::mt
+
+

rnd, random generator instance

+ +
+
+ +

◆ now

+ +
+
+ + + + +
time_t DynamicsSimulation::now
+
+

Auxiliar Variable for time recording and estimation for time.

+ +
+
+ +

◆ num_simulated_walkers

+ +
+
+ + + + +
unsigned DynamicsSimulation::num_simulated_walkers
+
+

Saves the final number of simulated walkers (time limit)

+ +
+
+ +

◆ params

+ +
+
+ + + + +
Parameters DynamicsSimulation::params
+
+

Parameters handler instance

+ +
+
+ +

◆ ply_deque

+ +
+
+ + + + +
std::vector<std::vector<unsigned> > DynamicsSimulation::ply_deque
+
+

deque with the indexes of the triangles of all ply's (used for opt)

+ +
+
+ +

◆ plyObstacles_list

+ +
+
+ + + + +
std::vector<PLYObstacle>* DynamicsSimulation::plyObstacles_list
+
+

pointer to a vector with all the instances of PLYObstacles

+ +
+
+ +

◆ print_expected_time

+ +
+
+ + + + +
bool DynamicsSimulation::print_expected_time
+
+

Auxiliar flag for time recording and stimation for time.

+ +
+
+ +

◆ propagator

+ +
+
+ + + + +
Propagator DynamicsSimulation::propagator
+
+

Propagator object to compute and save the particles MSD

+ +
+
+ +

◆ second_passed

+ +
+
+ + + + +
double DynamicsSimulation::second_passed
+
+

Simulation total time in seconds

+ +
+
+ +

◆ sentinela

+ +
+
+ + + + +
sentinels::Sentinel DynamicsSimulation::sentinela
+
+

Sentinel initialization to encoutner error in the simulation

+ +
+
+ +

◆ step_lenght

+ +
+
+ + + + +
double DynamicsSimulation::step_lenght
+
+

l, step length

+ +
+
+ +

◆ total_tries

+ +
+
+ + + + +
unsigned DynamicsSimulation::total_tries
+
+

Helper variables to compute the estimated ICVF

+ +
+
+ +

◆ trajectory

+ +
+
+ + + + +
Trajectory DynamicsSimulation::trajectory
+
+

Trajectory instance. Handles i/o operations

+ +
+
+ +

◆ voxels_list

+ +
+
+ + + + +
std::vector<Voxel> DynamicsSimulation::voxels_list
+
+

vector with all the voxels to be simulated (if any)

+ +
+
+ +

◆ walker

+ +
+
+ + + + +
Walker DynamicsSimulation::walker
+
+

Single walker to diffuse

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_dynamics_simulation.js b/doc/html/class_dynamics_simulation.js new file mode 100644 index 0000000..57dbdda --- /dev/null +++ b/doc/html/class_dynamics_simulation.js @@ -0,0 +1,47 @@ +var class_dynamics_simulation = +[ + [ "DynamicsSimulation", "class_dynamics_simulation.html#ad9a3e1f235466c3827cb49c67d3a6147", null ], + [ "DynamicsSimulation", "class_dynamics_simulation.html#aa603b5ba682b1b37cc96dd8be113cb52", null ], + [ "DynamicsSimulation", "class_dynamics_simulation.html#a8fd2ec6f3640bff79e4b1ad960bbda5b", null ], + [ "~DynamicsSimulation", "class_dynamics_simulation.html#a15a1f18a99d606ef2ca939e718ca996f", null ], + [ "isInIntra", "class_dynamics_simulation.html#ae7aa76c335aceb658a4ffc683898077c", null ], + [ "isInsideCylinders", "class_dynamics_simulation.html#a6c69cd2599f088e7631be0721d5815f1", null ], + [ "isInsidePLY", "class_dynamics_simulation.html#a4064621288ca5066ed5b76cc71a81e25", null ], + [ "readConfigurationFile", "class_dynamics_simulation.html#a67adab75eba635447c1b1b2b26d1e0ab", null ], + [ "setDuration", "class_dynamics_simulation.html#a9148a30590bef5c766fd2366bbd16eb8", null ], + [ "setStepsNum", "class_dynamics_simulation.html#a45248ef6170eaf8a3a62b43f3ce77e02", null ], + [ "setWalkersNum", "class_dynamics_simulation.html#a25b78b4ef659a448a806b995a19cf8b1", null ], + [ "startSimulation", "class_dynamics_simulation.html#a00cf4a6cbde1ef708fdbd58e8d8a7727", null ], + [ "writePropagator", "class_dynamics_simulation.html#aeae993217cebb5c23f68cb3e04cf8e49", null ], + [ "aux_walker_index", "class_dynamics_simulation.html#a09d2b3a3b998c85d98a5b87509a1e13a", null ], + [ "completed", "class_dynamics_simulation.html#a6a210fb28fe2f996c226614742a25214", null ], + [ "cylinders_deque", "class_dynamics_simulation.html#a927a79875ff2f035d929229cf4471756", null ], + [ "cylinders_list", "class_dynamics_simulation.html#a938c4df48ca1cabcadefb974093d4a57", null ], + [ "icvf", "class_dynamics_simulation.html#ac4161cbca21d20fde85817a21b99bd07", null ], + [ "id", "class_dynamics_simulation.html#aa178498c8be8af1a515a8c0a02187600", null ], + [ "ini_pos_file", "class_dynamics_simulation.html#a4fb0e535753c48b4a2647502379aebaf", null ], + [ "ini_pos_file_ini_index", "class_dynamics_simulation.html#a8e20cd71b55dda041844cfc305851dbe", null ], + [ "iniPos", "class_dynamics_simulation.html#a5d736b0d739d22d6a2d9371fbcdd8775", null ], + [ "intra_tries", "class_dynamics_simulation.html#ab2eef9ff5ee32531cdf743327cf41455", null ], + [ "last_time_dt", "class_dynamics_simulation.html#aa73be02bc4cb5027a1bc4a0b6b91b4b2", null ], + [ "max_simulation_time", "class_dynamics_simulation.html#a337972272af798cb8606796116145d11", null ], + [ "mt", "class_dynamics_simulation.html#a03ba104f00ae772e9b8fb55e7878c793", null ], + [ "now", "class_dynamics_simulation.html#a4e14e7f5efc039772219b00b02381db1", null ], + [ "num_simulated_walkers", "class_dynamics_simulation.html#a8772d8683d6089eef368212ee99d12d5", null ], + [ "params", "class_dynamics_simulation.html#a67cd4cd9a2e7cd2339c98dae60e66dde", null ], + [ "ply_deque", "class_dynamics_simulation.html#ad920a07f2c8c85fab7a1aec983c15b20", null ], + [ "plyObstacles_list", "class_dynamics_simulation.html#a830b3e0aa0ce95720ea0a8180e2cffec", null ], + [ "print_expected_time", "class_dynamics_simulation.html#a8742da6be78261e71b9b8cd4de0df488", null ], + [ "propagator", "class_dynamics_simulation.html#a62f78ae3e723206d16f1528e344ab1e9", null ], + [ "second_passed", "class_dynamics_simulation.html#a46187e70aad2b130249ba3d1dd6a3c75", null ], + [ "sentinela", "class_dynamics_simulation.html#aed384434dc469e766301268dcf1ec4ab", null ], + [ "start", "class_dynamics_simulation.html#a6fc87bbfea509599236624fda517c901", null ], + [ "step", "class_dynamics_simulation.html#af7ff1563912461e63693087d7aaf616b", null ], + [ "step_lenght", "class_dynamics_simulation.html#ad6dddce1d5bc30d3e61dceb69652c893", null ], + [ "time_dt", "class_dynamics_simulation.html#ae79118cbf5ce497cc82c6471353d5045", null ], + [ "time_step", "class_dynamics_simulation.html#a854c987e8b1806d74205eb916836befa", null ], + [ "total_tries", "class_dynamics_simulation.html#abb056d8cde70aab8b6fa81ee8cdb231e", null ], + [ "trajectory", "class_dynamics_simulation.html#ab69fedf7129784621eec440ba873218d", null ], + [ "voxels_list", "class_dynamics_simulation.html#ab68d71822661c3608bde4553392c9bd1", null ], + [ "walker", "class_dynamics_simulation.html#a9a5d2596527abdcdd185430c97dea9ad", null ] +]; \ No newline at end of file diff --git a/doc/html/class_dynamics_simulation__coll__graph.map b/doc/html/class_dynamics_simulation__coll__graph.map new file mode 100644 index 0000000..f8b8ec1 --- /dev/null +++ b/doc/html/class_dynamics_simulation__coll__graph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/doc/html/class_dynamics_simulation__coll__graph.md5 b/doc/html/class_dynamics_simulation__coll__graph.md5 new file mode 100644 index 0000000..72dec89 --- /dev/null +++ b/doc/html/class_dynamics_simulation__coll__graph.md5 @@ -0,0 +1 @@ +ffc822bf53fc7c603ad8a6a44e636ddf \ No newline at end of file diff --git a/doc/html/class_dynamics_simulation__coll__graph.png b/doc/html/class_dynamics_simulation__coll__graph.png new file mode 100644 index 0000000..2294bf4 Binary files /dev/null and b/doc/html/class_dynamics_simulation__coll__graph.png differ diff --git a/doc/html/class_gradient_waveform-members.html b/doc/html/class_gradient_waveform-members.html new file mode 100644 index 0000000..ebd7a8c --- /dev/null +++ b/doc/html/class_gradient_waveform-members.html @@ -0,0 +1,155 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
GradientWaveform Member List
+
+
+ +

This is the complete list of members for GradientWaveform, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cleanDWISignal() (defined in SimulableSequence)SimulableSequencevirtual
cleanPhaseShift() (defined in SimulableSequence)SimulableSequencevirtual
computeDynamicTimeSteps()SimulableSequenceinlinevirtual
dtGradientWaveform
DWISimulableSequence
DWI_extraSimulableSequence
DWI_intraSimulableSequence
DWIiSimulableSequence
dyn_durationGradientWaveform
dynamicSimulableSequence
getbValue(unsigned i)SimulableSequenceinlinevirtual
getDWISignal()GradientWaveform
getFreeDecay(unsigned i, double D)SimulableSequenceinlinevirtual
getGradImpulse(int i, double t, double tLast, Eigen::Vector3d &Gdt)GradientWaveformvirtual
getInterpolatedGradImpulse(uint rep_index, double dt_sim, double t_sim_last, Eigen::Vector3d &Gdt)GradientWaveform
getNumericalbValue(unsigned)GradientWaveform
GradientWaveform()GradientWaveform
GradientWaveform(Scheme &scheme)GradientWaveform
GradientWaveform(Scheme &scheme_, const char *traj_file_name)GradientWaveform
img_signalSimulableSequence
initializeIntraExtraSignals()SimulableSequencevirtual
initializeSubdivisionSignals()SimulableSequencevirtual
num_repSimulableSequence
percent_steps_inSimulableSequence
phase_shiftSimulableSequence
phase_shift_distributionSimulableSequence
readSchemeFile()GradientWaveform
save_phase_shiftSimulableSequence
scale_from_stuGradientWaveform
scheme_fileSimulableSequence
separate_signalSimulableSequence
setNumberOfSteps(unsigned T)GradientWaveformvirtual
SimulableSequence() (defined in SimulableSequence)SimulableSequenceinline
sub_DWISimulableSequence
sub_DWI_extraSimulableSequence
sub_DWI_intraSimulableSequence
sub_DWIiSimulableSequence
subdivision_flagSimulableSequence
subdivisionsSimulableSequence
TGradientWaveform
TEGradientWaveform
time_stepsSimulableSequence
trajectoryGradientWaveform
update_DWI_signal(Walker &walker)GradientWaveformvirtual
update_phase_shift(double time_step, Eigen::Matrix3Xd trajectory)GradientWaveformvirtual
update_phase_shift(double dt, double dt_last, Walker walker)GradientWaveformvirtual
wave_binsGradientWaveform
wave_durationGradientWaveform
waveformGradientWaveform
writePhaseShiftDistribution(std::string output_base_name) (defined in SimulableSequence)SimulableSequencevirtual
writeResultingData(std::string output_base_name) (defined in SimulableSequence)SimulableSequencevirtual
~SimulableSequence() (defined in SimulableSequence)SimulableSequenceinlinevirtual
+
+ + + + diff --git a/doc/html/class_gradient_waveform.html b/doc/html/class_gradient_waveform.html new file mode 100644 index 0000000..5526153 --- /dev/null +++ b/doc/html/class_gradient_waveform.html @@ -0,0 +1,583 @@ + + + + + + + +MCDC_simulator: GradientWaveform Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
GradientWaveform Class Reference
+
+
+ +

Gradient Wavefroms =============================================================/. + More...

+ +

#include <gradientwaveform.h>

+
+Inheritance diagram for GradientWaveform:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for GradientWaveform:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

GradientWaveform ()
 Default constructor, set default NULL values. Not to be used.
 
GradientWaveform (Scheme &scheme)
 Main constructor. Takes a pre-loaded Scheme file.
 
GradientWaveform (Scheme &scheme_, const char *traj_file_name)
 Main constructor. Takes a pre-loaded Scheme file and a traj file name. if this argument is passed a traj file is should be written.
 
double getNumericalbValue (unsigned)
 
+void getDWISignal ()
 Computes de DW signal from a trajfile.
 
+void readSchemeFile ()
 reads the waveform
 
+void getInterpolatedGradImpulse (uint rep_index, double dt_sim, double t_sim_last, Eigen::Vector3d &Gdt)
 For using with the adt array.
 
void update_phase_shift (double time_step, Eigen::Matrix3Xd trajectory)
 
void update_phase_shift (double dt, double dt_last, Walker walker)
 
+void update_DWI_signal (Walker &walker)
 Updates the DWI signal using the cumulated phase shift.
 
+void setNumberOfSteps (unsigned T)
 Set the number of time steps if they are known.
 
void getGradImpulse (int i, double t, double tLast, Eigen::Vector3d &Gdt)
 
- Public Member Functions inherited from SimulableSequence
virtual double getbValue (unsigned i)
 
+virtual double getFreeDecay (unsigned i, double D)
 Expected free Decay.
 
+virtual void computeDynamicTimeSteps ()
 Compute the time for all the steps when they are not constant.
 
+virtual void initializeSubdivisionSignals ()
 Initialize the DWI signals for each subdivision.
 
+virtual void initializeIntraExtraSignals ()
 Initialize the DWI signals for each compartment (intra extra)
 
+virtual void writeResultingData (std::string output_base_name)
 
+virtual void writePhaseShiftDistribution (std::string output_base_name)
 
+virtual void cleanPhaseShift ()
 
+virtual void cleanDWISignal ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

double TE
 
uint T
 
double dyn_duration
 
int wave_bins
 
double wave_duration
 
double dt
 
bool scale_from_stu
 
std::vector< std::vector< float > > waveform
 
Trajectory trajectory
 
- Public Attributes inherited from SimulableSequence
std::string scheme_file
 
std::vector< double > DWI
 
std::vector< double > DWI_intra
 
std::vector< double > DWI_extra
 
std::vector< double > DWIi
 
std::vector< double > phase_shift
 
int num_rep
 
bool save_phase_shift
 
bool dynamic
 
double percent_steps_in
 
std::vector< double > time_steps
 
Eigen::ArrayXXf phase_shift_distribution
 
std::vector< std::vector< double > > sub_DWI
 
std::vector< std::vector< double > > sub_DWI_intra
 
std::vector< std::vector< double > > sub_DWI_extra
 
std::vector< std::vector< double > > sub_DWIi
 
bool subdivision_flag = false
 
bool separate_signal = false
 
bool img_signal = false
 
std::vector< Subdivisionsubdivisions
 
+

Detailed Description

+

Gradient Wavefroms =============================================================/.

+

Implementation of the the General Wavefroms.

+

Main implementation of the gradient waveforms protocol

Author
Jonathan Rafael
+
Date
November 2017

1.42

+
+

Member Function Documentation

+ +

◆ getGradImpulse()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void GradientWaveform::getGradImpulse (int i,
double t,
double tLast,
Eigen::Vector3d & Gdt 
)
+
+virtual
+
+
Parameters
+ + + + + +
iWalker index
tcurrent time step (in milisenconds)
tLastlast time step (in milisenconds)
Gdtvector to compute de G*dt impulse
+
+
+ +

Implements SimulableSequence.

+ +
+
+ +

◆ getNumericalbValue()

+ +
+
+ + + + + + + + +
double GradientWaveform::getNumericalbValue (unsigned )
+
+
Warning
not implemented yet.
+ +
+
+ +

◆ update_phase_shift() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void GradientWaveform::update_phase_shift (double time_step,
Eigen::Matrix3Xd trajectory 
)
+
+virtual
+
+
Parameters
+ + +
iupdated the phase shift over a whole trajectory
+
+
+ +

Implements SimulableSequence.

+ +
+
+ +

◆ update_phase_shift() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void GradientWaveform::update_phase_shift (double dt,
double dt_last,
Walker walker 
)
+
+virtual
+
+
Parameters
+ + +
iupdated walker
+
+
+ +

Implements SimulableSequence.

+ +
+
+

Member Data Documentation

+ +

◆ dt

+ +
+
+ + + + +
double GradientWaveform::dt
+
+

individual time steps (miliseconds) of the wave

+ +
+
+ +

◆ dyn_duration

+ +
+
+ + + + +
double GradientWaveform::dyn_duration
+
+

simulation duration (miliseconds)

+ +
+
+ +

◆ scale_from_stu

+ +
+
+ + + + +
bool GradientWaveform::scale_from_stu
+
+

True if the input is in standar units

+ +
+
+ +

◆ T

+ +
+
+ + + + +
uint GradientWaveform::T
+
+

num bins (time steps)

+ +
+
+ +

◆ TE

+ +
+
+ + + + +
double GradientWaveform::TE
+
+

Time Echo.

+ +
+
+ +

◆ trajectory

+ +
+
+ + + + +
Trajectory GradientWaveform::trajectory
+
+

If the signal is computed from a .trajfile

+ +
+
+ +

◆ wave_bins

+ +
+
+ + + + +
int GradientWaveform::wave_bins
+
+

Wave discretization

+ +
+
+ +

◆ wave_duration

+ +
+
+ + + + +
double GradientWaveform::wave_duration
+
+

Wave duration (should be less qeual than dyn_dur.)

+ +
+
+ +

◆ waveform

+ +
+
+ + + + +
std::vector< std::vector<float> > GradientWaveform::waveform
+
+

Defined waveforms

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_gradient_waveform.js b/doc/html/class_gradient_waveform.js new file mode 100644 index 0000000..8dcbf8e --- /dev/null +++ b/doc/html/class_gradient_waveform.js @@ -0,0 +1,24 @@ +var class_gradient_waveform = +[ + [ "GradientWaveform", "class_gradient_waveform.html#acf951c9a86f95d002db4858ee4c78582", null ], + [ "GradientWaveform", "class_gradient_waveform.html#aad3922dbe19647ed0fcbba175fb9a5ff", null ], + [ "GradientWaveform", "class_gradient_waveform.html#a4780653a03ac1f576aeb6102b910ccde", null ], + [ "getDWISignal", "class_gradient_waveform.html#a52971b5f773c8c0b7c43bcd5fc50197a", null ], + [ "getGradImpulse", "class_gradient_waveform.html#a80dd810cb4e5a11dec311ac87e55ea18", null ], + [ "getInterpolatedGradImpulse", "class_gradient_waveform.html#a2f1449c026649e4601f773086d1346ce", null ], + [ "getNumericalbValue", "class_gradient_waveform.html#a5f55e43b3057509b0f98812d2a72db9a", null ], + [ "readSchemeFile", "class_gradient_waveform.html#a82da8e7b3bffe4557e6e38191b7f8d81", null ], + [ "setNumberOfSteps", "class_gradient_waveform.html#a040d4a70dc7951c235010791e1c581d1", null ], + [ "update_DWI_signal", "class_gradient_waveform.html#af4291596da9c45247b0748d945bd9b54", null ], + [ "update_phase_shift", "class_gradient_waveform.html#a2c606400c648cebd85827efa8d22b6bc", null ], + [ "update_phase_shift", "class_gradient_waveform.html#a7421301b24b6c98e28ef9430287cdf8e", null ], + [ "dt", "class_gradient_waveform.html#a3eacca54a58dc574384f07899a9a6da3", null ], + [ "dyn_duration", "class_gradient_waveform.html#a8608216ab7e5f002dcf6af4f869c5d27", null ], + [ "scale_from_stu", "class_gradient_waveform.html#a712eedb2165b3f889e27244fc9d91ebd", null ], + [ "T", "class_gradient_waveform.html#af2f45ff237ba41afe3ff5cedb7c1c966", null ], + [ "TE", "class_gradient_waveform.html#a4e0c0163e36cc017f5b147e9ca3022e0", null ], + [ "trajectory", "class_gradient_waveform.html#a83a7c844f86acee3b7ab12e7e70202af", null ], + [ "wave_bins", "class_gradient_waveform.html#ac2287a6ef99e35f0c1f97fc3ffb37d7b", null ], + [ "wave_duration", "class_gradient_waveform.html#a02d695fa36713bd28d3c85d2bb7a877b", null ], + [ "waveform", "class_gradient_waveform.html#a565fce08abb28fe26664194c04faeaea", null ] +]; \ No newline at end of file diff --git a/doc/html/class_gradient_waveform__coll__graph.map b/doc/html/class_gradient_waveform__coll__graph.map new file mode 100644 index 0000000..34f4d1c --- /dev/null +++ b/doc/html/class_gradient_waveform__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doc/html/class_gradient_waveform__coll__graph.md5 b/doc/html/class_gradient_waveform__coll__graph.md5 new file mode 100644 index 0000000..b309913 --- /dev/null +++ b/doc/html/class_gradient_waveform__coll__graph.md5 @@ -0,0 +1 @@ +2744f074bb8246dbb773c9ed05c4a331 \ No newline at end of file diff --git a/doc/html/class_gradient_waveform__coll__graph.png b/doc/html/class_gradient_waveform__coll__graph.png new file mode 100644 index 0000000..5f3528c Binary files /dev/null and b/doc/html/class_gradient_waveform__coll__graph.png differ diff --git a/doc/html/class_gradient_waveform__inherit__graph.map b/doc/html/class_gradient_waveform__inherit__graph.map new file mode 100644 index 0000000..ffa20b4 --- /dev/null +++ b/doc/html/class_gradient_waveform__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/class_gradient_waveform__inherit__graph.md5 b/doc/html/class_gradient_waveform__inherit__graph.md5 new file mode 100644 index 0000000..42f05bf --- /dev/null +++ b/doc/html/class_gradient_waveform__inherit__graph.md5 @@ -0,0 +1 @@ +20ffaf6aabaff97f74f2be3dd77f6dde \ No newline at end of file diff --git a/doc/html/class_gradient_waveform__inherit__graph.png b/doc/html/class_gradient_waveform__inherit__graph.png new file mode 100644 index 0000000..06c9315 Binary files /dev/null and b/doc/html/class_gradient_waveform__inherit__graph.png differ diff --git a/doc/html/class_m_c_simulation-members.html b/doc/html/class_m_c_simulation-members.html new file mode 100644 index 0000000..c607cb3 --- /dev/null +++ b/doc/html/class_m_c_simulation-members.html @@ -0,0 +1,119 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MCSimulation Member List
+
+
+ +

This is the complete list of members for MCSimulation, including all inherited members.

+ + + + + + + + + + + + + + + + + +
countMCSimulationstatic
cylinders_listMCSimulation
dataSynthMCSimulation
dynamicsEngineMCSimulation
getExpectedFreeeDecay(unsigned i) (defined in MCSimulation)MCSimulation
idMCSimulation
ini_walker_positionsMCSimulation
iniObstacles()MCSimulation
MCSimulation()MCSimulation
MCSimulation(std::string config_file) (defined in MCSimulation)MCSimulation
MCSimulation(Parameters &params_) (defined in MCSimulation)MCSimulation
paramsMCSimulation
plyObstacles_listMCSimulation
schemeMCSimulation
startSimulation()MCSimulation
~MCSimulation()MCSimulation
+
+ + + + diff --git a/doc/html/class_m_c_simulation.html b/doc/html/class_m_c_simulation.html new file mode 100644 index 0000000..c20d502 --- /dev/null +++ b/doc/html/class_m_c_simulation.html @@ -0,0 +1,400 @@ + + + + + + + +MCDC_simulator: MCSimulation Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
MCSimulation Class Reference
+
+
+ +

Aplication Main Class ======================================================================================/. + More...

+ +

#include <mcsimulation.h>

+
+Collaboration diagram for MCSimulation:
+
+
Collaboration graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 MCSimulation ()
 Default constructor. Intialize everything with 0's and NULL states, object indexes are set to -1. More...
 
MCSimulation (std::string config_file)
 
MCSimulation (Parameters &params_)
 
~MCSimulation ()
 Main destructor. Frees dynamicly allocated memory instances.
 
void startSimulation ()
 Warp function. Calls the dynamicEngine's native DynamicsSimulation::startSimulation function. More...
 
+double getExpectedFreeeDecay (unsigned i)
 
void iniObstacles ()
 
+ + + + + + + + + + + + + + + + + +

+Public Attributes

int id
 
DynamicsSimulationdynamicsEngine
 
Scheme scheme
 
Parameters params
 
SimulableSequencedataSynth
 
std::vector< std::vector< float > > ini_walker_positions
 
std::vector< PLYObstacle > * plyObstacles_list
 
std::vector< Cylinder > * cylinders_list
 
+ + + +

+Static Public Attributes

static int count =0
 
+

Detailed Description

+

Aplication Main Class ======================================================================================/.

+

Main implementation class. Incorporates the particle's dynamics and the data synthesis.

Author
Jonathan Rafael
+
Date
November 2016

1.44.00

+
+

Main implementation class. Incorporates the particle's dynamics and the data synthesis.

+

Constructor & Destructor Documentation

+ +

◆ MCSimulation()

+ +
+
+ + + + + + + +
MCSimulation::MCSimulation ()
+
+ +

Default constructor. Intialize everything with 0's and NULL states, object indexes are set to -1.

+

Secondary constructor.

+

Main constructor.

+
Parameters
+ + + +
config_file.conf file name with the full set of experiments parameters.
params_preloaded simulation parameters.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ iniObstacles()

+ +
+
+ + + + + + + +
void MCSimulation::iniObstacles ()
+
+

Adds all the obstacles defined in the confiuration files.

+ +
+
+ +

◆ startSimulation()

+ +
+
+ + + + + + + +
MCSimulation::startSimulation ()
+
+ +

Warp function. Calls the dynamicEngine's native DynamicsSimulation::startSimulation function.

+
See also
:DynamicsSimulation:.
+ +
+
+

Member Data Documentation

+ +

◆ count

+ +
+
+ + + + + +
+ + + + +
int MCSimulation::count =0
+
+static
+
+

count of

+ +
+
+ +

◆ cylinders_list

+ +
+
+ + + + +
std::vector<Cylinder>* MCSimulation::cylinders_list
+
+

pointer to a vector with all the instances of Cylinders

+ +
+
+ +

◆ dataSynth

+ +
+
+ + + + +
SimulableSequence* MCSimulation::dataSynth
+
+

Simuleable sequence instance, PGSE and General Wavefroms only

+ +
+
+ +

◆ dynamicsEngine

+ +
+
+ + + + +
DynamicsSimulation* MCSimulation::dynamicsEngine
+
+

Instance for the particle dynamics

+ +
+
+ +

◆ id

+ +
+
+ + + + +
int MCSimulation::id
+
+

Unique id of the simulation

+ +
+
+ +

◆ ini_walker_positions

+ +
+
+ + + + +
std::vector<std::vector<float> > MCSimulation::ini_walker_positions
+
+

patch for regular sampling in a subdivision

+ +
+
+ +

◆ params

+ +
+
+ + + + +
Parameters MCSimulation::params
+
+

Parameters instance1

See also
:Parameters:
+ +
+
+ +

◆ plyObstacles_list

+ +
+
+ + + + +
std::vector<PLYObstacle>* MCSimulation::plyObstacles_list
+
+

pointer to a vector with all the instances of PLYObstacles

+ +
+
+ +

◆ scheme

+ +
+
+ + + + +
Scheme MCSimulation::scheme
+
+

Scheme file, only PGSE in camino format is supported in 0.2

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_m_c_simulation.js b/doc/html/class_m_c_simulation.js new file mode 100644 index 0000000..b600b31 --- /dev/null +++ b/doc/html/class_m_c_simulation.js @@ -0,0 +1,18 @@ +var class_m_c_simulation = +[ + [ "MCSimulation", "class_m_c_simulation.html#a89f56682a13f0bcb2c53d191ca336e35", null ], + [ "MCSimulation", "class_m_c_simulation.html#a5b2bdb95de31810a0d2ee54174e83f98", null ], + [ "MCSimulation", "class_m_c_simulation.html#a76ac3d50d345d249cacc913273b2bd34", null ], + [ "~MCSimulation", "class_m_c_simulation.html#a859c6ddce0e3c07db0159b2e4906b7ca", null ], + [ "getExpectedFreeeDecay", "class_m_c_simulation.html#aff302334b2743a583b5d6f642d841f2f", null ], + [ "iniObstacles", "class_m_c_simulation.html#aa60234e3f6d2a100c8b03e4f304b07f4", null ], + [ "startSimulation", "class_m_c_simulation.html#aa305f18bd48dd26f916cc9c006a8dec8", null ], + [ "cylinders_list", "class_m_c_simulation.html#a36909899f67439feed1a980037ea8c03", null ], + [ "dataSynth", "class_m_c_simulation.html#a7e2496127af6436d64bca7f52bc40c82", null ], + [ "dynamicsEngine", "class_m_c_simulation.html#ac453455b2dfb994b7b1a4b7823bd3dc9", null ], + [ "id", "class_m_c_simulation.html#aff828a83a905ae188146d3ffaa12a1bc", null ], + [ "ini_walker_positions", "class_m_c_simulation.html#af53387a4edc7627a77ff03a562f8befa", null ], + [ "params", "class_m_c_simulation.html#aecb8470cb31fa67e38c5d5acd5a80bef", null ], + [ "plyObstacles_list", "class_m_c_simulation.html#a8c21d28d54c9c947f6c5465657019ed4", null ], + [ "scheme", "class_m_c_simulation.html#a87ba6332f1f49024a442981b477360c4", null ] +]; \ No newline at end of file diff --git a/doc/html/class_m_c_simulation__coll__graph.map b/doc/html/class_m_c_simulation__coll__graph.map new file mode 100644 index 0000000..77e14d9 --- /dev/null +++ b/doc/html/class_m_c_simulation__coll__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/doc/html/class_m_c_simulation__coll__graph.md5 b/doc/html/class_m_c_simulation__coll__graph.md5 new file mode 100644 index 0000000..568b5c1 --- /dev/null +++ b/doc/html/class_m_c_simulation__coll__graph.md5 @@ -0,0 +1 @@ +d370ada8b43e5717978ffa6e10b4c6e4 \ No newline at end of file diff --git a/doc/html/class_m_c_simulation__coll__graph.png b/doc/html/class_m_c_simulation__coll__graph.png new file mode 100644 index 0000000..ffbd8df Binary files /dev/null and b/doc/html/class_m_c_simulation__coll__graph.png differ diff --git a/doc/html/class_obstacle-members.html b/doc/html/class_obstacle-members.html new file mode 100644 index 0000000..c21a4bc --- /dev/null +++ b/doc/html/class_obstacle-members.html @@ -0,0 +1,111 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Obstacle Member List
+
+
+ +

This is the complete list of members for Obstacle, including all inherited members.

+ + + + + + + + + +
checkCollision(Walker &walker, Eigen::Array3d &step, const double &step_lenght, Collision &colision)Obstacle
count_perc_crossingsObstacle
elasticBounceAgainsPlane(Eigen::Vector3d &ray_origin, Eigen::Vector3d &normal, double &t, Eigen::Vector3d &step) (defined in Obstacle)Obstacle
idObstacle
minDistance(Walker &w)Obstacle
Obstacle()Obstacle
percolationObstacle
T2Obstacle
+
+ + + + diff --git a/doc/html/class_obstacle.html b/doc/html/class_obstacle.html new file mode 100644 index 0000000..98f758c --- /dev/null +++ b/doc/html/class_obstacle.html @@ -0,0 +1,297 @@ + + + + + + + +MCDC_simulator: Obstacle Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Obstacle Class Reference
+
+
+ +

Obstacle Base Class ==============================================================================/. + More...

+ +

#include <obstacle.h>

+
+Inheritance diagram for Obstacle:
+
+
Inheritance graph
+ + + + +
[legend]
+ + + + + + + + + + + + + +

+Public Member Functions

Obstacle ()
 Default constructor. Does nothing.
 
bool checkCollision (Walker &walker, Eigen::Array3d &step, const double &step_lenght, Collision &colision)
 Basic collision function. Returns the if there was any collision on against the obstacle. More...
 
+void elasticBounceAgainsPlane (Eigen::Vector3d &ray_origin, Eigen::Vector3d &normal, double &t, Eigen::Vector3d &step)
 
double minDistance (Walker &w)
 Returns the minimum distance of collision. More...
 
+ + + + + + + + + +

+Public Attributes

int id
 
int count_perc_crossings
 
double percolation
 
double T2
 
+

Detailed Description

+

Obstacle Base Class ==============================================================================/.

+

Father class to define the base of any other obstacle (wall or substrate)

Author
Jonathan Rafael
+
Date
November 2016

1.42

+
+

Member Function Documentation

+ +

◆ checkCollision()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Obstacle::checkCollision (Walkerwalker,
Eigen::Array3d & step,
const double & step_lenght,
Collisioncolision 
)
+
+ +

Basic collision function. Returns the if there was any collision on against the obstacle.

+
Parameters
+ + + + + +
walker,Walkerinstance in the simulation.
3dstep. Is assumed to be normalized.
step_lenght,lengthused as the maximum step collision distance.
colilsion,Collisioninstance to save the collision (if any) details.
+
+
+
Returns
true only if there was a Collision::hit status.
+
See also
Collision.
+ +
+
+ +

◆ minDistance()

+ +
+
+ + + + + + + + +
double Obstacle::minDistance (Walkerw)
+
+ +

Returns the minimum distance of collision.

+
Parameters
+ + +
walkerto find the (closest) distance.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ count_perc_crossings

+ +
+
+ + + + +
int Obstacle::count_perc_crossings
+
+

Auxiliar value to count the number of percolatin crossings in a simulation

+ +
+
+ +

◆ id

+ +
+
+ + + + +
int Obstacle::id
+
+

Unique id of the simulation

+ +
+
+ +

◆ percolation

+ +
+
+ + + + +
double Obstacle::percolation
+
+

Percolation value between 0 and 1.

+ +
+
+ +

◆ T2

+ +
+
+ + + + +
double Obstacle::T2
+
+

T2 decay, not used by default

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_obstacle.js b/doc/html/class_obstacle.js new file mode 100644 index 0000000..e60a6ee --- /dev/null +++ b/doc/html/class_obstacle.js @@ -0,0 +1,11 @@ +var class_obstacle = +[ + [ "Obstacle", "class_obstacle.html#a8f734072321fa06a7b7dae2d5f50f352", null ], + [ "checkCollision", "class_obstacle.html#af11af63f11595304ff6d5c1785c03da5", null ], + [ "elasticBounceAgainsPlane", "class_obstacle.html#a5316aabce6765c943d131aa3d5018f8d", null ], + [ "minDistance", "class_obstacle.html#a742e9d6ea940b33545cef4f1f2d58566", null ], + [ "count_perc_crossings", "class_obstacle.html#aaa096d441fd095c7bbe924d1a78a8e23", null ], + [ "id", "class_obstacle.html#a02e049a3395138a0dc6194af0112e2b0", null ], + [ "percolation", "class_obstacle.html#a7afe63ee05b482c526591c981b22cf54", null ], + [ "T2", "class_obstacle.html#a374f9b4486f63abce9696f5fe3a13e8e", null ] +]; \ No newline at end of file diff --git a/doc/html/class_obstacle__inherit__graph.map b/doc/html/class_obstacle__inherit__graph.map new file mode 100644 index 0000000..c974aa6 --- /dev/null +++ b/doc/html/class_obstacle__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doc/html/class_obstacle__inherit__graph.md5 b/doc/html/class_obstacle__inherit__graph.md5 new file mode 100644 index 0000000..22aef0e --- /dev/null +++ b/doc/html/class_obstacle__inherit__graph.md5 @@ -0,0 +1 @@ +97b355a4ea30f8df263e796c7e84a6ee \ No newline at end of file diff --git a/doc/html/class_obstacle__inherit__graph.png b/doc/html/class_obstacle__inherit__graph.png new file mode 100644 index 0000000..16b518e Binary files /dev/null and b/doc/html/class_obstacle__inherit__graph.png differ diff --git a/doc/html/class_p_g_s_e_sequence-members.html b/doc/html/class_p_g_s_e_sequence-members.html new file mode 100644 index 0000000..892ae11 --- /dev/null +++ b/doc/html/class_p_g_s_e_sequence-members.html @@ -0,0 +1,156 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
PGSESequence Member List
+
+
+ +

This is the complete list of members for PGSESequence, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cleanDWISignal() (defined in SimulableSequence)SimulableSequencevirtual
cleanPhaseShift() (defined in SimulableSequence)SimulableSequencevirtual
computeDynamicTimeSteps()PGSESequencevirtual
DWISimulableSequence
DWI_extraSimulableSequence
DWI_intraSimulableSequence
DWIiSimulableSequence
dyn_durationPGSESequence
dynamicSimulableSequence
get_adt(int grad_index, double t, double tLast)PGSESequence
getbValue(unsigned)PGSESequencevirtual
getDWISignal()PGSESequence
getFreeDecay(unsigned i, double D)PGSESequencevirtual
getGradImpulse(int i, double t, double tLast, Eigen::Vector3d &Gdt)PGSESequencevirtual
getGradImpuse(int i, double t, Eigen::Vector3d Gdt)PGSESequence
getNumericalbValue(unsigned)PGSESequence
img_signalSimulableSequence
initializeIntraExtraSignals()SimulableSequencevirtual
initializeSubdivisionSignals()SimulableSequencevirtual
num_repSimulableSequence
percent_steps_inSimulableSequence
PGSESequence()PGSESequence
PGSESequence(Scheme scheme_)PGSESequence
PGSESequence(Scheme scheme_, const char *traj_file_name)PGSESequence
PGSESequence(const char *scheme_file_name)PGSESequence
PGSESequence(const char *scheme_file_name, const char *traj_file_name)PGSESequence
phase_shiftSimulableSequence
phase_shift_distributionSimulableSequence
print_adt_and_dt(int grad_index, double t, double tLast)PGSESequence
readSchemeFile()PGSESequence
save_phase_shiftSimulableSequence
schemePGSESequence
scheme_fileSimulableSequence
separate_signalSimulableSequence
setNumberOfSteps(unsigned T)PGSESequencevirtual
SimulableSequence() (defined in SimulableSequence)SimulableSequenceinline
sub_DWISimulableSequence
sub_DWI_extraSimulableSequence
sub_DWI_intraSimulableSequence
sub_DWIiSimulableSequence
subdivision_flagSimulableSequence
subdivisionsSimulableSequence
TPGSESequence
TEPGSESequence
time_stepsSimulableSequence
trajectoryPGSESequence
update_DWI_signal(Walker &walker)PGSESequencevirtual
update_phase_shift(double dt, double dt_last, Walker walker)PGSESequencevirtual
update_phase_shift(double time_step, Eigen::Matrix3Xd trajectory)PGSESequencevirtual
writePhaseShiftDistribution(std::string output_base_name) (defined in SimulableSequence)SimulableSequencevirtual
writeResultingData(std::string output_base_name) (defined in SimulableSequence)SimulableSequencevirtual
~PGSESequence()PGSESequence
~SimulableSequence() (defined in SimulableSequence)SimulableSequenceinlinevirtual
+
+ + + + diff --git a/doc/html/class_p_g_s_e_sequence.html b/doc/html/class_p_g_s_e_sequence.html new file mode 100644 index 0000000..bf9e122 --- /dev/null +++ b/doc/html/class_p_g_s_e_sequence.html @@ -0,0 +1,427 @@ + + + + + + + +MCDC_simulator: PGSESequence Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
PGSESequence Class Reference
+
+
+
+Inheritance diagram for PGSESequence:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for PGSESequence:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

PGSESequence ()
 Default constructor, set default NULL values. Not to be used.
 
PGSESequence (Scheme scheme_)
 Main constructor. Takes a pre-loaded Scheme file.
 
PGSESequence (Scheme scheme_, const char *traj_file_name)
 Main constructor. Takes a pre-loaded Scheme file and a traj file name. if this argument is passed a traj file is should be written.
 
PGSESequence (const char *scheme_file_name)
 Constructor. Takes a the scheme file name to be loaded.
 
PGSESequence (const char *scheme_file_name, const char *traj_file_name)
 Constructor. Takes a scheme file name to be loaded and atraj file name. if this argument is passed a traj file is should be written.
 
~PGSESequence ()
 Destuctor. Does nothing.
 
+void getGradImpulse (int i, double t, double tLast, Eigen::Vector3d &Gdt)
 For using w/o the adt array.
 
+void getGradImpuse (int i, double t, Eigen::Vector3d Gdt)
 For using with the adt array.
 
+double getbValue (unsigned)
 Analytical defined b-value.
 
+double getFreeDecay (unsigned i, double D)
 Expected free Decay.
 
double getNumericalbValue (unsigned)
 
+void getDWISignal ()
 Computes de DW signal from a trajfile.
 
+void readSchemeFile ()
 reads the scheme files
 
virtual void update_phase_shift (double dt, double dt_last, Walker walker)
 
+virtual void update_phase_shift (double time_step, Eigen::Matrix3Xd trajectory)
 Updates the phase shift using the full stored trajectory.
 
+virtual void update_DWI_signal (Walker &walker)
 Updates the DWI signal using the cumulated phase shift.
 
+double get_adt (int grad_index, double t, double tLast)
 computes de signal value and sign in a certain time step.
 
+double print_adt_and_dt (int grad_index, double t, double tLast)
 prints the array adt in the format ().
 
+virtual void setNumberOfSteps (unsigned T)
 Set the number of time steps if they are known.
 
+virtual void computeDynamicTimeSteps ()
 Compute the time for all the steps when they are not constant.
 
- Public Member Functions inherited from SimulableSequence
+virtual void initializeSubdivisionSignals ()
 Initialize the DWI signals for each subdivision.
 
+virtual void initializeIntraExtraSignals ()
 Initialize the DWI signals for each compartment (intra extra)
 
+virtual void writeResultingData (std::string output_base_name)
 
+virtual void writePhaseShiftDistribution (std::string output_base_name)
 
+virtual void cleanPhaseShift ()
 
+virtual void cleanDWISignal ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

double TE
 
int T
 
double dyn_duration
 
std::vector< std::vector< double > > scheme
 
Trajectory trajectory
 
- Public Attributes inherited from SimulableSequence
std::string scheme_file
 
std::vector< double > DWI
 
std::vector< double > DWI_intra
 
std::vector< double > DWI_extra
 
std::vector< double > DWIi
 
std::vector< double > phase_shift
 
int num_rep
 
bool save_phase_shift
 
bool dynamic
 
double percent_steps_in
 
std::vector< double > time_steps
 
Eigen::ArrayXXf phase_shift_distribution
 
std::vector< std::vector< double > > sub_DWI
 
std::vector< std::vector< double > > sub_DWI_intra
 
std::vector< std::vector< double > > sub_DWI_extra
 
std::vector< std::vector< double > > sub_DWIi
 
bool subdivision_flag = false
 
bool separate_signal = false
 
bool img_signal = false
 
std::vector< Subdivisionsubdivisions
 
+

Member Function Documentation

+ +

◆ getNumericalbValue()

+ +
+
+ + + + + + + + +
double PGSESequence::getNumericalbValue (unsigned i)
+
+
Warning
not implemented yet.
+ +
+
+ +

◆ update_phase_shift()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void PGSESequence::update_phase_shift (double dt,
double dt_last,
Walker walker 
)
+
+virtual
+
+
Parameters
+ + +
iupdated walker
+
+
+ +

Implements SimulableSequence.

+ +
+
+

Member Data Documentation

+ +

◆ dyn_duration

+ +
+
+ + + + +
double PGSESequence::dyn_duration
+
+

simulation duration (miliseconds)

+ +
+
+ +

◆ scheme

+ +
+
+ + + + +
std::vector< std::vector<double> > PGSESequence::scheme
+
+

Scheme file values

+ +
+
+ +

◆ T

+ +
+
+ + + + +
int PGSESequence::T
+
+

num bins (time steps)

+ +
+
+ +

◆ TE

+ +
+
+ + + + +
double PGSESequence::TE
+
+

Time Echo.

+ +
+
+ +

◆ trajectory

+ +
+
+ + + + +
Trajectory PGSESequence::trajectory
+
+

If the signal is computed from a .trajfile

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_p_g_s_e_sequence.js b/doc/html/class_p_g_s_e_sequence.js new file mode 100644 index 0000000..19d4dee --- /dev/null +++ b/doc/html/class_p_g_s_e_sequence.js @@ -0,0 +1,28 @@ +var class_p_g_s_e_sequence = +[ + [ "PGSESequence", "class_p_g_s_e_sequence.html#a29db64fbd60c54c191e8197e1818dce0", null ], + [ "PGSESequence", "class_p_g_s_e_sequence.html#a31bcb2e91e27823bbe71904e180f7de9", null ], + [ "PGSESequence", "class_p_g_s_e_sequence.html#ab278a413c31a67f82712590897a556cb", null ], + [ "PGSESequence", "class_p_g_s_e_sequence.html#a262f1156c51983fba9b9a6b666dd2e07", null ], + [ "PGSESequence", "class_p_g_s_e_sequence.html#a1eb4e53eb0769b16eb9bb2156c769644", null ], + [ "~PGSESequence", "class_p_g_s_e_sequence.html#a7e5815e4ae0b3a6d42c45322fc69fdd6", null ], + [ "computeDynamicTimeSteps", "class_p_g_s_e_sequence.html#ac115d93aabb283f19568f55493d57ded", null ], + [ "get_adt", "class_p_g_s_e_sequence.html#a885a0415519683a7fbfa1883f7f3d807", null ], + [ "getbValue", "class_p_g_s_e_sequence.html#a8b0671a505f79a601d3d4d2d9b7f36cc", null ], + [ "getDWISignal", "class_p_g_s_e_sequence.html#aec05e76b5c7b3361bd3e68301b262a0a", null ], + [ "getFreeDecay", "class_p_g_s_e_sequence.html#a375c8a943f4857a323ffc404394b5d8a", null ], + [ "getGradImpulse", "class_p_g_s_e_sequence.html#a3f2a705b7d3312944630f3d7f639e8e4", null ], + [ "getGradImpuse", "class_p_g_s_e_sequence.html#a9985ead781333f782d1dee54482eb0d2", null ], + [ "getNumericalbValue", "class_p_g_s_e_sequence.html#a1373f02bffedb1e934818ae8d4fb8939", null ], + [ "print_adt_and_dt", "class_p_g_s_e_sequence.html#afa9e363ef76474d5e2495407034a10d4", null ], + [ "readSchemeFile", "class_p_g_s_e_sequence.html#a22005e67e3513690f9e46b1d531481b0", null ], + [ "setNumberOfSteps", "class_p_g_s_e_sequence.html#a89f9bf116876b04403058a240a91efa3", null ], + [ "update_DWI_signal", "class_p_g_s_e_sequence.html#ae2b79f12ccd2f2446a498cb51f45e88d", null ], + [ "update_phase_shift", "class_p_g_s_e_sequence.html#a6914efd208eab28a1ee6a3f28ca65478", null ], + [ "update_phase_shift", "class_p_g_s_e_sequence.html#a850a2f22cdf8b420888cfa906e03e078", null ], + [ "dyn_duration", "class_p_g_s_e_sequence.html#a0c7e884c3b71cbcc04d6cb2d5f2a5eb9", null ], + [ "scheme", "class_p_g_s_e_sequence.html#a7349d86720a34e75eaf578fdfd3caeeb", null ], + [ "T", "class_p_g_s_e_sequence.html#a07e27e6e8a8506521386a291d62e8423", null ], + [ "TE", "class_p_g_s_e_sequence.html#a06df939859fd2ed6104bfee584f893a1", null ], + [ "trajectory", "class_p_g_s_e_sequence.html#a0fd0fb458384bfb65070fdab5165dde5", null ] +]; \ No newline at end of file diff --git a/doc/html/class_p_g_s_e_sequence__coll__graph.map b/doc/html/class_p_g_s_e_sequence__coll__graph.map new file mode 100644 index 0000000..3ea0b73 --- /dev/null +++ b/doc/html/class_p_g_s_e_sequence__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doc/html/class_p_g_s_e_sequence__coll__graph.md5 b/doc/html/class_p_g_s_e_sequence__coll__graph.md5 new file mode 100644 index 0000000..4db078f --- /dev/null +++ b/doc/html/class_p_g_s_e_sequence__coll__graph.md5 @@ -0,0 +1 @@ +e68ea10c4b80bbee92d64801b60ed111 \ No newline at end of file diff --git a/doc/html/class_p_g_s_e_sequence__coll__graph.png b/doc/html/class_p_g_s_e_sequence__coll__graph.png new file mode 100644 index 0000000..8d8f79e Binary files /dev/null and b/doc/html/class_p_g_s_e_sequence__coll__graph.png differ diff --git a/doc/html/class_p_g_s_e_sequence__inherit__graph.map b/doc/html/class_p_g_s_e_sequence__inherit__graph.map new file mode 100644 index 0000000..e86cfc4 --- /dev/null +++ b/doc/html/class_p_g_s_e_sequence__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/class_p_g_s_e_sequence__inherit__graph.md5 b/doc/html/class_p_g_s_e_sequence__inherit__graph.md5 new file mode 100644 index 0000000..0b8ff20 --- /dev/null +++ b/doc/html/class_p_g_s_e_sequence__inherit__graph.md5 @@ -0,0 +1 @@ +8a2127287e71a616ae02fb4be0d7bc5e \ No newline at end of file diff --git a/doc/html/class_p_g_s_e_sequence__inherit__graph.png b/doc/html/class_p_g_s_e_sequence__inherit__graph.png new file mode 100644 index 0000000..f35eeb9 Binary files /dev/null and b/doc/html/class_p_g_s_e_sequence__inherit__graph.png differ diff --git a/doc/html/class_p_l_y_collision_sphere-members.html b/doc/html/class_p_l_y_collision_sphere-members.html new file mode 100644 index 0000000..c9a618e --- /dev/null +++ b/doc/html/class_p_l_y_collision_sphere-members.html @@ -0,0 +1,118 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
PLYCollisionSphere Member List
+
+
+ +

This is the complete list of members for PLYCollisionSphere, including all inherited members.

+ + + + + + + + + + + + + + + + +
big_sphere_distanceCollisionsphere
big_sphere_list_endPLYCollisionSphere
collision_listPLYCollisionSphere
Collisionsphere() (defined in Collisionsphere)Collisionsphereinline
list_size (defined in Collisionsphere)Collisionsphere
PLYCollisionSphere() (defined in PLYCollisionSphere)PLYCollisionSphere
popFromBigSphere(unsigned i, unsigned t)PLYCollisionSphere
popFromSmallSphere(unsigned i, unsigned t)PLYCollisionSphere
push_ply(std::vector< unsigned > list)PLYCollisionSphere
pushToBigSphere(unsigned i, unsigned t)PLYCollisionSphere
pushToSmallSphere(unsigned i, unsigned t)PLYCollisionSphere
setBigSphereSize(float size)PLYCollisionSphere
setSmallSphereSize(float size)PLYCollisionSphere
small_sphere_distanceCollisionsphere
small_sphere_list_endPLYCollisionSphere
+
+ + + + diff --git a/doc/html/class_p_l_y_collision_sphere.html b/doc/html/class_p_l_y_collision_sphere.html new file mode 100644 index 0000000..ed23287 --- /dev/null +++ b/doc/html/class_p_l_y_collision_sphere.html @@ -0,0 +1,347 @@ + + + + + + + +MCDC_simulator: PLYCollisionSphere Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
PLYCollisionSphere Class Reference
+
+
+
+Inheritance diagram for PLYCollisionSphere:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for PLYCollisionSphere:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

void popFromSmallSphere (unsigned i, unsigned t)
 This function receives a index from the collision list and moves the value to the last position of the list. then decrease the inner sphere end index. This way this index is no longer considered inner collision list. More...
 
void pushToSmallSphere (unsigned i, unsigned t)
 This function receives a index from the collision list and moves the value to the last position of the list. then increse the inner sphere end index. This way this index is now included in the inner collision list. More...
 
+void popFromBigSphere (unsigned i, unsigned t)
 This function receives a index from the collision list and moves the value to the last position of the list. Then decrease the inner sphere end index. This way this index is now excluded in the outer collision list.
 
+void pushToBigSphere (unsigned i, unsigned t)
 This function receives a index from the collision list and moves the value to the last position of the list. Then increase the inner sphere end index. This way this index is now included in the outer collision list.
 
void setBigSphereSize (float size)
 
void setSmallSphereSize (float size)
 
void push_ply (std::vector< unsigned > list)
 
+ + + + + + + + + + + + + + +

+Public Attributes

std::vector< unsigned > small_sphere_list_end
 
std::vector< unsigned > big_sphere_list_end
 
std::vector< std::vector< unsigned > > * collision_list
 
- Public Attributes inherited from Collisionsphere
float big_sphere_distance
 
float small_sphere_distance
 
+unsigned list_size
 
+

Member Function Documentation

+ +

◆ popFromSmallSphere()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PLYCollisionSphere::popFromSmallSphere (unsigned i,
unsigned t 
)
+
+ +

This function receives a index from the collision list and moves the value to the last position of the list. then decrease the inner sphere end index. This way this index is no longer considered inner collision list.

+

Removes one index from the list by moving it to the end of the list and decreading the index.

+ +
+
+ +

◆ push_ply()

+ +
+
+ + + + + + + + +
void PLYCollisionSphere::push_ply (std::vector< unsigned > list)
+
+
Parameters
+ + +
elementvalue to be added to the obstacle list
+
+
+ +
+
+ +

◆ pushToSmallSphere()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void PLYCollisionSphere::pushToSmallSphere (unsigned i,
unsigned t 
)
+
+ +

This function receives a index from the collision list and moves the value to the last position of the list. then increse the inner sphere end index. This way this index is now included in the inner collision list.

+

Adds one element to the list by moving it in front of the current index and increasing the index.

+ +
+
+ +

◆ setBigSphereSize()

+ +
+
+ + + + + + + + +
void PLYCollisionSphere::setBigSphereSize (float size)
+
+
Parameters
+ + +
sizeof the list
+
+
+ +
+
+ +

◆ setSmallSphereSize()

+ +
+
+ + + + + + + + +
void PLYCollisionSphere::setSmallSphereSize (float size)
+
+
Parameters
+ + +
sizeof the list
+
+
+ +
+
+

Member Data Documentation

+ +

◆ big_sphere_list_end

+ +
+
+ + + + +
std::vector<unsigned> PLYCollisionSphere::big_sphere_list_end
+
+

Index vecotr of the LAST element on the list for the big collision sphere

+ +
+
+ +

◆ collision_list

+ +
+
+ + + + +
std::vector<std::vector<unsigned> >* PLYCollisionSphere::collision_list
+
+

Pointer to the list with the triangle indexes for each PLY. The indexes are permuted in its position.

+ +
+
+ +

◆ small_sphere_list_end

+ +
+
+ + + + +
std::vector<unsigned> PLYCollisionSphere::small_sphere_list_end
+
+

Index vector of the LAST element on the list for the small collision sphere

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_p_l_y_collision_sphere.js b/doc/html/class_p_l_y_collision_sphere.js new file mode 100644 index 0000000..78dd7c6 --- /dev/null +++ b/doc/html/class_p_l_y_collision_sphere.js @@ -0,0 +1,14 @@ +var class_p_l_y_collision_sphere = +[ + [ "PLYCollisionSphere", "class_p_l_y_collision_sphere.html#a3a30709ea0677ea53702e40625af0431", null ], + [ "popFromBigSphere", "class_p_l_y_collision_sphere.html#ac9cf3838088310db3dc8f0d282c3c383", null ], + [ "popFromSmallSphere", "class_p_l_y_collision_sphere.html#adc8f318a913935cdd31d81f1c96192eb", null ], + [ "push_ply", "class_p_l_y_collision_sphere.html#a10e46dea74b839faf34872028eafae46", null ], + [ "pushToBigSphere", "class_p_l_y_collision_sphere.html#aa1fe5971687051f0de78a12ee4b31574", null ], + [ "pushToSmallSphere", "class_p_l_y_collision_sphere.html#a546ea2c6fe80908502fba0350c4f9726", null ], + [ "setBigSphereSize", "class_p_l_y_collision_sphere.html#acf52aecaf0bf676087035151e6c662c9", null ], + [ "setSmallSphereSize", "class_p_l_y_collision_sphere.html#af9ba1a8616bb5703e58f392f45c6c069", null ], + [ "big_sphere_list_end", "class_p_l_y_collision_sphere.html#aadf7b345b8c91791fa96e00862bc8cbb", null ], + [ "collision_list", "class_p_l_y_collision_sphere.html#a6ef04af98385142ed0b41a2e35f423b9", null ], + [ "small_sphere_list_end", "class_p_l_y_collision_sphere.html#a7fd18a4a8a9dbb2f7104f9b9a5dd6766", null ] +]; \ No newline at end of file diff --git a/doc/html/class_p_l_y_collision_sphere__coll__graph.map b/doc/html/class_p_l_y_collision_sphere__coll__graph.map new file mode 100644 index 0000000..d6a1111 --- /dev/null +++ b/doc/html/class_p_l_y_collision_sphere__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/class_p_l_y_collision_sphere__coll__graph.md5 b/doc/html/class_p_l_y_collision_sphere__coll__graph.md5 new file mode 100644 index 0000000..4dab170 --- /dev/null +++ b/doc/html/class_p_l_y_collision_sphere__coll__graph.md5 @@ -0,0 +1 @@ +2634328decf33f31d8b1841b63a128bf \ No newline at end of file diff --git a/doc/html/class_p_l_y_collision_sphere__coll__graph.png b/doc/html/class_p_l_y_collision_sphere__coll__graph.png new file mode 100644 index 0000000..160c8d4 Binary files /dev/null and b/doc/html/class_p_l_y_collision_sphere__coll__graph.png differ diff --git a/doc/html/class_p_l_y_collision_sphere__inherit__graph.map b/doc/html/class_p_l_y_collision_sphere__inherit__graph.map new file mode 100644 index 0000000..d6a1111 --- /dev/null +++ b/doc/html/class_p_l_y_collision_sphere__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/class_p_l_y_collision_sphere__inherit__graph.md5 b/doc/html/class_p_l_y_collision_sphere__inherit__graph.md5 new file mode 100644 index 0000000..d1ce697 --- /dev/null +++ b/doc/html/class_p_l_y_collision_sphere__inherit__graph.md5 @@ -0,0 +1 @@ +bb664e369f5fb3e0d2cbc12e5964cb0f \ No newline at end of file diff --git a/doc/html/class_p_l_y_collision_sphere__inherit__graph.png b/doc/html/class_p_l_y_collision_sphere__inherit__graph.png new file mode 100644 index 0000000..160c8d4 Binary files /dev/null and b/doc/html/class_p_l_y_collision_sphere__inherit__graph.png differ diff --git a/doc/html/class_p_l_y_obstacle-members.html b/doc/html/class_p_l_y_obstacle-members.html new file mode 100644 index 0000000..ecf3fbe --- /dev/null +++ b/doc/html/class_p_l_y_obstacle-members.html @@ -0,0 +1,127 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
PLYObstacle Member List
+
+
+ +

This is the complete list of members for PLYObstacle, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
checkCollision(Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision) (defined in PLYObstacle)PLYObstacle
checkCollision(Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision, std::vector< unsigned > &triangle_list, unsigned list_end) (defined in PLYObstacle)PLYObstacle
Obstacle::checkCollision(Walker &walker, Eigen::Array3d &step, const double &step_lenght, Collision &colision)Obstacle
count_perc_crossingsObstacle
elasticBounceAgainsPlane(Eigen::Vector3d &ray_origin, Eigen::Vector3d &normal, double &t, Eigen::Vector3d &step) (defined in Obstacle)Obstacle
face_number (defined in PLYObstacle)PLYObstacle
faces (defined in PLYObstacle)PLYObstacle
file_path (defined in PLYObstacle)PLYObstacle
id (defined in PLYObstacle)PLYObstacle
minDistance(Walker &w, unsigned t) (defined in PLYObstacle)PLYObstacle
Obstacle::minDistance(Walker &w)Obstacle
Obstacle()Obstacle
percolationObstacle
PLYObstacle() (defined in PLYObstacle)PLYObstacle
PLYObstacle(std::string path, double scale_factor_=1) (defined in PLYObstacle)PLYObstacle
PLYObstacle(std::string path, std::vector< Eigen::Vector3d > &centers, double max_distance=INFINITY, double scale_factor_=1) (defined in PLYObstacle)PLYObstacle
readPLY_ASCII_triangleFan(std::string ply_file) (defined in PLYObstacle)PLYObstacle
readPLY_ASCII_triangles(std::string ply_file) (defined in PLYObstacle)PLYObstacle
readPLY_ASCII_trianglesSubdivitionDistance(std::string ply_file, std::vector< Eigen::Vector3d > &centers, double max_distance) (defined in PLYObstacle)PLYObstacle
scale_factor (defined in PLYObstacle)PLYObstacle
setScaleFactor(double scale) (defined in PLYObstacle)PLYObstacleinline
T2Obstacle
vert_number (defined in PLYObstacle)PLYObstacle
vertices (defined in PLYObstacle)PLYObstacle
+
+ + + + diff --git a/doc/html/class_p_l_y_obstacle.html b/doc/html/class_p_l_y_obstacle.html new file mode 100644 index 0000000..9829aa1 --- /dev/null +++ b/doc/html/class_p_l_y_obstacle.html @@ -0,0 +1,216 @@ + + + + + + + +MCDC_simulator: PLYObstacle Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
PLYObstacle Class Reference
+
+
+ +

PlyObstacle Derived Class ====================================================================/. + More...

+ +

#include <plyobstacle.h>

+
+Inheritance diagram for PLYObstacle:
+
+
Inheritance graph
+ + + +
[legend]
+
+Collaboration diagram for PLYObstacle:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

PLYObstacle (std::string path, double scale_factor_=1)
 
PLYObstacle (std::string path, std::vector< Eigen::Vector3d > &centers, double max_distance=INFINITY, double scale_factor_=1)
 
+void readPLY_ASCII_triangleFan (std::string ply_file)
 
+void readPLY_ASCII_triangles (std::string ply_file)
 
+void readPLY_ASCII_trianglesSubdivitionDistance (std::string ply_file, std::vector< Eigen::Vector3d > &centers, double max_distance)
 
+void setScaleFactor (double scale)
 
+bool checkCollision (Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision)
 
+bool checkCollision (Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision, std::vector< unsigned > &triangle_list, unsigned list_end)
 
+double minDistance (Walker &w, unsigned t)
 
- Public Member Functions inherited from Obstacle
Obstacle ()
 Default constructor. Does nothing.
 
bool checkCollision (Walker &walker, Eigen::Array3d &step, const double &step_lenght, Collision &colision)
 Basic collision function. Returns the if there was any collision on against the obstacle. More...
 
+void elasticBounceAgainsPlane (Eigen::Vector3d &ray_origin, Eigen::Vector3d &normal, double &t, Eigen::Vector3d &step)
 
double minDistance (Walker &w)
 Returns the minimum distance of collision. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+unsigned vert_number
 
+unsigned face_number
 
+std::string file_path
 
+Vertexvertices
 
+Trianglefaces
 
+double scale_factor
 
+int id
 
- Public Attributes inherited from Obstacle
int id
 
int count_perc_crossings
 
double percolation
 
double T2
 
+

Detailed Description

+

PlyObstacle Derived Class ====================================================================/.

+

PLYObstacle derived class. Implements obstacles loaded from pre-defined PY meshes.

Author
Jonathan Rafael
+
Date
November 2016

0.2

+
+

Implements obstacles loaded from pre-constructed PLY meshes. The PLY format should be without any other experiment.

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_p_l_y_obstacle.js b/doc/html/class_p_l_y_obstacle.js new file mode 100644 index 0000000..a1aa76a --- /dev/null +++ b/doc/html/class_p_l_y_obstacle.js @@ -0,0 +1,20 @@ +var class_p_l_y_obstacle = +[ + [ "PLYObstacle", "class_p_l_y_obstacle.html#afa108eef1e3030ee0aa8ed6978740b13", null ], + [ "PLYObstacle", "class_p_l_y_obstacle.html#a8995508a44982787e9aa44bc8d47f669", null ], + [ "PLYObstacle", "class_p_l_y_obstacle.html#a52649eb1362242e7681e75f7409ee940", null ], + [ "checkCollision", "class_p_l_y_obstacle.html#aa43eb5a352acb2305b0ad5d4f3535dd1", null ], + [ "checkCollision", "class_p_l_y_obstacle.html#ada5a479826a277b78f7531693809e69c", null ], + [ "minDistance", "class_p_l_y_obstacle.html#aef64d5d9c5ea9d16c0efb75b89dc7ba0", null ], + [ "readPLY_ASCII_triangleFan", "class_p_l_y_obstacle.html#a4e409be3ded2cb3fe2f3cae97fafd266", null ], + [ "readPLY_ASCII_triangles", "class_p_l_y_obstacle.html#af5db9263d9555682f8345cef2d116eb4", null ], + [ "readPLY_ASCII_trianglesSubdivitionDistance", "class_p_l_y_obstacle.html#a428018f72231740be297c9cd24752bbd", null ], + [ "setScaleFactor", "class_p_l_y_obstacle.html#ad0ce0257b8250a5e325da3f0d58e90de", null ], + [ "face_number", "class_p_l_y_obstacle.html#a9664285e5921c10b8d05954849f23e8d", null ], + [ "faces", "class_p_l_y_obstacle.html#acd5752df4a98fbe92382184d732ddbc9", null ], + [ "file_path", "class_p_l_y_obstacle.html#ab384ad44fb6165d7d7277157e774ba40", null ], + [ "id", "class_p_l_y_obstacle.html#acf5a992f0da5e81dddf32484e24956ac", null ], + [ "scale_factor", "class_p_l_y_obstacle.html#a3ddffa50af76259975a4b8d13c1019da", null ], + [ "vert_number", "class_p_l_y_obstacle.html#a5e14e62690601a6273147aca53751569", null ], + [ "vertices", "class_p_l_y_obstacle.html#a59d10b1c902e053caaf905e81bb618a6", null ] +]; \ No newline at end of file diff --git a/doc/html/class_p_l_y_obstacle__coll__graph.map b/doc/html/class_p_l_y_obstacle__coll__graph.map new file mode 100644 index 0000000..186786c --- /dev/null +++ b/doc/html/class_p_l_y_obstacle__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doc/html/class_p_l_y_obstacle__coll__graph.md5 b/doc/html/class_p_l_y_obstacle__coll__graph.md5 new file mode 100644 index 0000000..24bb239 --- /dev/null +++ b/doc/html/class_p_l_y_obstacle__coll__graph.md5 @@ -0,0 +1 @@ +78fed28d6b636b0f0bfec7b47337877e \ No newline at end of file diff --git a/doc/html/class_p_l_y_obstacle__coll__graph.png b/doc/html/class_p_l_y_obstacle__coll__graph.png new file mode 100644 index 0000000..46f8383 Binary files /dev/null and b/doc/html/class_p_l_y_obstacle__coll__graph.png differ diff --git a/doc/html/class_p_l_y_obstacle__inherit__graph.map b/doc/html/class_p_l_y_obstacle__inherit__graph.map new file mode 100644 index 0000000..032310e --- /dev/null +++ b/doc/html/class_p_l_y_obstacle__inherit__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/class_p_l_y_obstacle__inherit__graph.md5 b/doc/html/class_p_l_y_obstacle__inherit__graph.md5 new file mode 100644 index 0000000..5f6d262 --- /dev/null +++ b/doc/html/class_p_l_y_obstacle__inherit__graph.md5 @@ -0,0 +1 @@ +a1405afa75f022fbb0216564f1304bda \ No newline at end of file diff --git a/doc/html/class_p_l_y_obstacle__inherit__graph.png b/doc/html/class_p_l_y_obstacle__inherit__graph.png new file mode 100644 index 0000000..80a7077 Binary files /dev/null and b/doc/html/class_p_l_y_obstacle__inherit__graph.png differ diff --git a/doc/html/class_parallel_m_c_simulation-members.html b/doc/html/class_parallel_m_c_simulation-members.html new file mode 100644 index 0000000..1ad3609 --- /dev/null +++ b/doc/html/class_parallel_m_c_simulation-members.html @@ -0,0 +1,120 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
ParallelMCSimulation Member List
+
+
+ +

This is the complete list of members for ParallelMCSimulation, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
aprox_volumenParallelMCSimulation
cylinders_listParallelMCSimulation
icvfParallelMCSimulation
illegal_countParallelMCSimulation
mean_second_passedParallelMCSimulation
ParallelMCSimulation(std::string config_file)ParallelMCSimulation
ParallelMCSimulation(Parameters &params)ParallelMCSimulation
ParallelMCSimulation() (defined in ParallelMCSimulation)ParallelMCSimulationinline
paramsParallelMCSimulation
plyObstacles_listParallelMCSimulation
sim_threadsParallelMCSimulation
simulationsParallelMCSimulation
startSimulation()ParallelMCSimulation
stuck_countParallelMCSimulation
total_ini_walker_posParallelMCSimulation
total_sim_particlesParallelMCSimulation
~ParallelMCSimulation() (defined in ParallelMCSimulation)ParallelMCSimulation
+
+ + + + diff --git a/doc/html/class_parallel_m_c_simulation.html b/doc/html/class_parallel_m_c_simulation.html new file mode 100644 index 0000000..c4995ce --- /dev/null +++ b/doc/html/class_parallel_m_c_simulation.html @@ -0,0 +1,424 @@ + + + + + + + +MCDC_simulator: ParallelMCSimulation Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
ParallelMCSimulation Class Reference
+
+
+ +

Class to handle multiprocessor paralellisation. This class basicly controls and syncronize several initializations of MonteCarlo simulations and add up the results. It's a way of soft paralelization. + More...

+ +

#include <parallelmcsimulation.h>

+
+Collaboration diagram for ParallelMCSimulation:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + +

+Public Member Functions

 ParallelMCSimulation (std::string config_file)
 Main constructor. More...
 
 ParallelMCSimulation (Parameters &params)
 Constructor. More...
 
void startSimulation ()
 Warp function. Calls the MCSimulation's native function for all the instances. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Parameters params
 
double mean_second_passed
 
unsigned total_sim_particles
 
unsigned stuck_count
 
unsigned illegal_count
 
double icvf
 
double aprox_volumen
 
std::vector< MCSimulation * > simulations
 
std::vector< std::thread > sim_threads
 
std::vector< PLYObstacleplyObstacles_list
 
std::vector< Cylindercylinders_list
 
std::vector< Eigen::Vector3f > total_ini_walker_pos
 
+

Detailed Description

+

Class to handle multiprocessor paralellisation. This class basicly controls and syncronize several initializations of MonteCarlo simulations and add up the results. It's a way of soft paralelization.

+

Implementation of the PGSE protocol.

+

==============================================================================/

+

Class to handle multiprocessor paralellisation

Author
Jonathan Rafael
+
Date
November 2016
+
+

Constructor & Destructor Documentation

+ +

◆ ParallelMCSimulation() [1/2]

+ +
+
+ + + + + + + + +
ParallelMCSimulation::ParallelMCSimulation (std::string config_file)
+
+ +

Main constructor.

+
Parameters
+ + +
config_file.conf file name with the full set of experiments parameters.
+
+
+ +
+
+ +

◆ ParallelMCSimulation() [2/2]

+ +
+
+ + + + + + + + +
ParallelMCSimulation::ParallelMCSimulation (Parametersparams)
+
+ +

Constructor.

+
Parameters
+ + +
parametersof the simulation. Read form a conf file or given by the user.
+
+
+ +
+
+

Member Function Documentation

+ +

◆ startSimulation()

+ +
+
+ + + + + + + +
ParallelMCSimulation::startSimulation ()
+
+ +

Warp function. Calls the MCSimulation's native function for all the instances.

+
See also
:MCSimulation:.
+ +
+
+

Member Data Documentation

+ +

◆ aprox_volumen

+ +
+
+ + + + +
double ParallelMCSimulation::aprox_volumen
+
+

Stores the volumen based on ICVF and the voxel size

+ +
+
+ +

◆ cylinders_list

+ +
+
+ + + + +
std::vector<Cylinder> ParallelMCSimulation::cylinders_list
+
+

vector with all the instances of cylinders

+ +
+
+ +

◆ icvf

+ +
+
+ + + + +
double ParallelMCSimulation::icvf
+
+

Stores the ICVF based on the particles sampling

+ +
+
+ +

◆ illegal_count

+ +
+
+ + + + +
unsigned ParallelMCSimulation::illegal_count
+
+

Counts the number of particles that attempt to cross

+ +
+
+ +

◆ mean_second_passed

+ +
+
+ + + + +
double ParallelMCSimulation::mean_second_passed
+
+

Simualation total time in seconds

+ +
+
+ +

◆ params

+ +
+
+ + + + +
Parameters ParallelMCSimulation::params
+
+

Parameters instance

See also
:Parameters:
+ +
+
+ +

◆ plyObstacles_list

+ +
+
+ + + + +
std::vector<PLYObstacle> ParallelMCSimulation::plyObstacles_list
+
+

vector with all the instances of PLYObstacles

+ +
+
+ +

◆ sim_threads

+ +
+
+ + + + +
std::vector<std::thread> ParallelMCSimulation::sim_threads
+
+

Number of threads (instances and processors) to be used

+ +
+
+ +

◆ simulations

+ +
+
+ + + + +
std::vector<MCSimulation*> ParallelMCSimulation::simulations
+
+

vector of pointers to MCSimulation instances

+ +
+
+ +

◆ stuck_count

+ +
+
+ + + + +
unsigned ParallelMCSimulation::stuck_count
+
+

Counts the number of particles stuck in the simulations

+ +
+
+ +

◆ total_ini_walker_pos

+ +
+
+ + + + +
std::vector<Eigen::Vector3f> ParallelMCSimulation::total_ini_walker_pos
+
+

Number of threads (instances and processors) to be used

+ +
+
+ +

◆ total_sim_particles

+ +
+
+ + + + +
unsigned ParallelMCSimulation::total_sim_particles
+
+

Total number of simulated particles

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_parallel_m_c_simulation.js b/doc/html/class_parallel_m_c_simulation.js new file mode 100644 index 0000000..76332fe --- /dev/null +++ b/doc/html/class_parallel_m_c_simulation.js @@ -0,0 +1,20 @@ +var class_parallel_m_c_simulation = +[ + [ "ParallelMCSimulation", "class_parallel_m_c_simulation.html#ac85dc215688a1462b770d20c2ff10b3f", null ], + [ "ParallelMCSimulation", "class_parallel_m_c_simulation.html#a32ee405791787a1ea9d03895fdd810f4", null ], + [ "ParallelMCSimulation", "class_parallel_m_c_simulation.html#abcc36ff65ff389c1f8d9b31478fa16dc", null ], + [ "~ParallelMCSimulation", "class_parallel_m_c_simulation.html#a5de848eb160a4f33b73eeb87ec136682", null ], + [ "startSimulation", "class_parallel_m_c_simulation.html#a7d9420ac20b19cb1c74f81bdbad94196", null ], + [ "aprox_volumen", "class_parallel_m_c_simulation.html#aa51edc0c79c6ae66ddd0046d21b871d4", null ], + [ "cylinders_list", "class_parallel_m_c_simulation.html#a4c36ff5327e9f19258fed5d64d48fdb8", null ], + [ "icvf", "class_parallel_m_c_simulation.html#a871e3fdace01984a533792dd49bebd1b", null ], + [ "illegal_count", "class_parallel_m_c_simulation.html#ae667ec358689a3a7b42876b401a5fce5", null ], + [ "mean_second_passed", "class_parallel_m_c_simulation.html#ad122df5454bb26a56e89c9077560a33d", null ], + [ "params", "class_parallel_m_c_simulation.html#a83f856aaa88a403c657c7b8234deee7a", null ], + [ "plyObstacles_list", "class_parallel_m_c_simulation.html#aa90f4d989bc868b6d225c0c5b9fe832a", null ], + [ "sim_threads", "class_parallel_m_c_simulation.html#a2a0f1cc2812c1a35e5e38d9d9ddde78b", null ], + [ "simulations", "class_parallel_m_c_simulation.html#af16d292f007b8391122a035022422ed5", null ], + [ "stuck_count", "class_parallel_m_c_simulation.html#a6ee1dfd6e695ec5ec7d4c2ed94f233cf", null ], + [ "total_ini_walker_pos", "class_parallel_m_c_simulation.html#a5efe5faa45e57e6ff3827e9ec9e52a64", null ], + [ "total_sim_particles", "class_parallel_m_c_simulation.html#a18326e05c32fac82264d7351d78a7433", null ] +]; \ No newline at end of file diff --git a/doc/html/class_parallel_m_c_simulation__coll__graph.map b/doc/html/class_parallel_m_c_simulation__coll__graph.map new file mode 100644 index 0000000..a76b1da --- /dev/null +++ b/doc/html/class_parallel_m_c_simulation__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/class_parallel_m_c_simulation__coll__graph.md5 b/doc/html/class_parallel_m_c_simulation__coll__graph.md5 new file mode 100644 index 0000000..0e87780 --- /dev/null +++ b/doc/html/class_parallel_m_c_simulation__coll__graph.md5 @@ -0,0 +1 @@ +9eb942d342e1688dd2c22d2b5a80dc1a \ No newline at end of file diff --git a/doc/html/class_parallel_m_c_simulation__coll__graph.png b/doc/html/class_parallel_m_c_simulation__coll__graph.png new file mode 100644 index 0000000..2166022 Binary files /dev/null and b/doc/html/class_parallel_m_c_simulation__coll__graph.png differ diff --git a/doc/html/class_parameter.html b/doc/html/class_parameter.html new file mode 100644 index 0000000..0fda94d --- /dev/null +++ b/doc/html/class_parameter.html @@ -0,0 +1,115 @@ + + + + + + + +MCDC_simulator: Parameter Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Parameter Class Reference
+
+
+ +

Basic class to store simulation parameters =============================================================/. + More...

+ +

#include <parameters.h>

+

Detailed Description

+

Basic class to store simulation parameters =============================================================/.

+

Basic class to store and handle all the possible simulation parameters.

Author
Jonathan Rafael
+
Date
November 2016

1.43

+
+

Class used to hold and operate all the user and simulation parameters. This is the main class to comunicate between instances of the simulations and derived classes. So, in a way, it's an interface for the comunication between component classes in the simulation.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/class_parameters-members.html b/doc/html/class_parameters-members.html new file mode 100644 index 0000000..2af897f --- /dev/null +++ b/doc/html/class_parameters-members.html @@ -0,0 +1,189 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Parameters Member List
+
+
+ +

This is the complete list of members for Parameters, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addSubdivisions() (defined in Parameters)Parameters
collision_sphere_distanceParameters
computeVolumeParameters
custom_sampling_areaParameters
cylinders_filesParameters
diffusivityParameters
discard_illegalsParameters
discard_stucksParameters
gamma_icvf (defined in Parameters)Parameters
gamma_num_cylinders (defined in Parameters)Parameters
gamma_output_conf (defined in Parameters)Parameters
gamma_output_configuration (defined in Parameters)Parameters
gamma_packingParameters
gamma_packing_alpha (defined in Parameters)Parameters
gamma_packing_beta (defined in Parameters)Parameters
getDiffusivity()Parameters
getIniWalkersFileName() (defined in Parameters)Parameters
getMaxLimits()Parameters
getMinLimits()Parameters
getNumSteps()Parameters
getNumWalkers()Parameters
getOutputBaseFileName()Parameters
getSchemeFileName()Parameters
getTrajFileName()Parameters
getWriteTextFlag()Parameters
getWriteTrajFlag()Parameters
hex_packingParameters
hex_packing_radiusParameters
hex_packing_separationParameters
img_signalParameters
ini_delta_posParameters
ini_walker_flagParameters
ini_walkers_fileParameters
ini_walkers_file_countParameters
iniWalkersFileName(std::string ini_walkers_file_)Parameters
log_oppParameters
log_phase_shiftParameters
log_propagatorParameters
max_limitsParameters
max_sampling_areaParameters
max_simulation_timeParameters
min_cyl_radiiParameters
min_limitsParameters
min_sampling_areaParameters
num_procParameters
num_stepsParameters
num_walkersParameters
number_subdivisionsParameters
obstacle_permeabilityParameters
output_base_nameParameters
Parameters()Parameters
PLY_filesParameters
PLY_percolationParameters
PLY_scalesParameters
prop_dirsParameters
readSchemeFile(std::string conf_file)Parameters
record_phase_timesParameters
record_pos_timesParameters
record_prop_timesParameters
save_phase_shiftParameters
scale_from_stuParameters
scheme_fileParameters
seedParameters
separate_signalsParameters
setDiffusivity(double Diff)Parameters
setMaxLimits(Eigen::Vector3d max_limits_)Parameters
setMinLimits(Eigen::Vector3d min_limits_)Parameters
setNumSteps(unsigned T)Parameters
setNumWalkers(unsigned N) (defined in Parameters)Parameters
setOutputBaseFileName(std::string output_base_name_)Parameters
setSchemeFileName(std::string scheme_file_)Parameters
setSimDuration(double duration)Parameters
setTrajFileName(std::string traj_file_)Parameters
setWriteTextFlag(bool write_txt_) (defined in Parameters)Parameters
setWriteTrajFlag(bool write_bin) (defined in Parameters)Parameters
sim_durationParameters
str_dist(std::string s, std::string t) (defined in Parameters)Parametersstatic
subdivision_flagParameters
subdivisionsParameters
subdivisions_fileParameters
traj_fileParameters
verbatimParameters
voxels_listParameters
write_binParameters
write_trajParameters
write_txtParameters
+
+ + + + diff --git a/doc/html/class_parameters.html b/doc/html/class_parameters.html new file mode 100644 index 0000000..cecea87 --- /dev/null +++ b/doc/html/class_parameters.html @@ -0,0 +1,1545 @@ + + + + + + + +MCDC_simulator: Parameters Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Parameters Class Reference
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Parameters ()
 Default constructor. Sets all the parameters to default and NULL values.
 
void readSchemeFile (std::string conf_file)
 Reads all the parameters from a scheme file in the correct format the function scales them if necessary. The parameters are passed by listing, first, the parameter name, followed by the value. The supported parameters are: number of walkers (N), number of steps (T), duration (duration), PGSE scheme file (scheme_file), min voxles limits (min limits), max voxel limits (max_limits), diffusivity (diffusivity), index name for the trajectory and output values (out_traj_file_index), initial walker position file (ini_walkers_file), write a txt traj flag and header (write_text), write binary traj file and header, write_bin, flag to scale the values from estandar unit (scale_from_stu), random seed (seed). More...
 
+void setNumWalkers (unsigned N)
 
void setNumSteps (unsigned T)
 set the number of steps in the simulation. More...
 
void setDiffusivity (double Diff)
 set the simulation diffusivity. More...
 
void setSimDuration (double duration)
 sets the simulation duration. More...
 
+void setWriteTrajFlag (bool write_bin)
 
+void setWriteTextFlag (bool write_txt_)
 
void setMinLimits (Eigen::Vector3d min_limits_)
 set the bottom left corner of the voxel to be simulated. More...
 
void setMaxLimits (Eigen::Vector3d max_limits_)
 set the bottom left corner of the voxel to be simulated. More...
 
void setTrajFileName (std::string traj_file_)
 Set the prefix of the name for the traj file (txt and .traj) More...
 
void setOutputBaseFileName (std::string output_base_name_)
 Set the prefix of the name for all the outputs in the simulation. More...
 
void iniWalkersFileName (std::string ini_walkers_file_)
 
void setSchemeFileName (std::string scheme_file_)
 Sets the scheme file name to be used for the data synthesis. More...
 
unsigned getNumWalkers ()
 
unsigned getNumSteps ()
 
double getDiffusivity ()
 
bool getWriteTrajFlag ()
 
bool getWriteTextFlag ()
 
Eigen::Vector3d getMinLimits ()
 
Eigen::Vector3d getMaxLimits ()
 
std::string getTrajFileName ()
 
std::string getOutputBaseFileName ()
 
+std::string getIniWalkersFileName ()
 
std::string getSchemeFileName ()
 
+void addSubdivisions ()
 
+ + + +

+Static Public Member Functions

+static int str_dist (std::string s, std::string t)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

unsigned num_walkers
 
unsigned num_steps
 
double diffusivity
 
double sim_duration
 
bool write_traj
 
bool write_txt
 
bool write_bin
 
bool scale_from_stu
 
bool save_phase_shift
 
long seed
 
bool verbatim
 
std::string traj_file
 
std::string output_base_name
 
std::string ini_walkers_file
 
unsigned ini_walkers_file_count
 
std::string ini_walker_flag
 
std::string scheme_file
 
Eigen::Vector3d min_limits
 
Eigen::Vector3d max_limits
 
std::vector< std::string > cylinders_files
 
std::vector< std::string > PLY_files
 
std::vector< double > PLY_scales
 
std::vector< double > PLY_percolation
 
std::vector< float > ini_delta_pos
 
unsigned num_proc
 
std::vector< std::pair< Eigen::Vector3d, Eigen::Vector3d > > voxels_list
 
std::vector< Eigen::Vector3f > prop_dirs
 
std::vector< unsigned > record_pos_times
 
std::vector< unsigned > record_phase_times
 
std::vector< unsigned > record_prop_times
 
bool hex_packing
 
double hex_packing_radius
 
double hex_packing_separation
 
bool gamma_packing
 
+bool gamma_output_conf
 
+double gamma_packing_alpha
 
+double gamma_packing_beta
 
+double gamma_icvf
 
+double gamma_output_configuration
 
+unsigned gamma_num_cylinders
 
float min_cyl_radii
 
bool subdivision_flag = false
 
unsigned number_subdivisions = 0
 
std::string subdivisions_file = ""
 
std::vector< Subdivisionsubdivisions
 
double obstacle_permeability = 0
 
double collision_sphere_distance = 0
 
double max_simulation_time = 0
 
bool log_phase_shift = false
 
bool log_opp = false
 
bool discard_stucks = true
 
bool discard_illegals = true
 
bool log_propagator = false
 
Eigen::Vector3d min_sampling_area
 
Eigen::Vector3d max_sampling_area
 
bool custom_sampling_area
 
bool computeVolume
 
bool separate_signals
 
bool img_signal
 
+

Member Function Documentation

+ +

◆ getDiffusivity()

+ +
+
+ + + + + + + +
Parameters::getDiffusivity ()
+
+
Returns
Diffusivity
+ +
+
+ +

◆ getMaxLimits()

+ +
+
+ + + + + + + +
Parameters::getMaxLimits ()
+
+
Returns
voxel max limits (right top corner)
+ +
+
+ +

◆ getMinLimits()

+ +
+
+ + + + + + + +
Parameters::getMinLimits ()
+
+
Returns
voxel min limits (left bottom corner)
+ +
+
+ +

◆ getNumSteps()

+ +
+
+ + + + + + + +
Parameters::getNumSteps ()
+
+
Returns
Number of Steps
+ +
+
+ +

◆ getNumWalkers()

+ +
+
+ + + + + + + +
Parameters::getNumWalkers ()
+
+
Returns
Number of walkers N
+ +
+
+ +

◆ getOutputBaseFileName()

+ +
+
+ + + + + + + +
Parameters::getOutputBaseFileName ()
+
+
Returns
Output prefix
+ +
+
+ +

◆ getSchemeFileName()

+ +
+
+ + + + + + + +
Parameters::getSchemeFileName ()
+
+
Returns
name of the scheme file name used (PGSE)
+ +
+
+ +

◆ getTrajFileName()

+ +
+
+ + + + + + + +
Parameters::getTrajFileName ()
+
+
Returns
trajectory prefix
+ +
+
+ +

◆ getWriteTextFlag()

+ +
+
+ + + + + + + +
Parameters::getWriteTextFlag ()
+
+
Returns
flag of the text write traj
+ +
+
+ +

◆ getWriteTrajFlag()

+ +
+
+ + + + + + + +
Parameters::getWriteTrajFlag ()
+
+
Returns
flag of the binary traj file writer
+ +
+
+ +

◆ iniWalkersFileName()

+ +
+
+ + + + + + + + +
Parameters::iniWalkersFileName (std::string ini_walkers_file_)
+
+
Returns
initial position walkers file name
+ +
+
+ +

◆ readSchemeFile()

+ +
+
+ + + + + + + + +
Parameters::readSchemeFile (std::string conf_file)
+
+ +

Reads all the parameters from a scheme file in the correct format the function scales them if necessary. The parameters are passed by listing, first, the parameter name, followed by the value. The supported parameters are: number of walkers (N), number of steps (T), duration (duration), PGSE scheme file (scheme_file), min voxles limits (min limits), max voxel limits (max_limits), diffusivity (diffusivity), index name for the trajectory and output values (out_traj_file_index), initial walker position file (ini_walkers_file), write a txt traj flag and header (write_text), write binary traj file and header, write_bin, flag to scale the values from estandar unit (scale_from_stu), random seed (seed).

+
Parameters
+ + +
conf_file
+
+
+ +
+
+ +

◆ setDiffusivity()

+ +
+
+ + + + + + + + +
Parameters::setDiffusivity (double Diff)
+
+ +

set the simulation diffusivity.

+
Parameters
+ + +
Diffdiffusivity value.
+
+
+ +
+
+ +

◆ setMaxLimits()

+ +
+
+ + + + + + + + +
Parameters::setMaxLimits (Eigen::Vector3d max_limits_)
+
+ +

set the bottom left corner of the voxel to be simulated.

+
Parameters
+ + +
max_limits_vector with the maximum voxel limits (bottom right corner).
+
+
+ +
+
+ +

◆ setMinLimits()

+ +
+
+ + + + + + + + +
Parameters::setMinLimits (Eigen::Vector3d min_limits_)
+
+ +

set the bottom left corner of the voxel to be simulated.

+
Parameters
+ + +
min_limits_vector with the minimum voxel limits (bottom left corner).
+
+
+ +
+
+ +

◆ setNumSteps()

+ +
+
+ + + + + + + + +
Parameters::setNumSteps (unsigned T)
+
+ +

set the number of steps in the simulation.

+
Parameters
+ + +
Tnumber of steps
+
+
+ +
+
+ +

◆ setOutputBaseFileName()

+ +
+
+ + + + + + + + +
Parameters::setOutputBaseFileName (std::string output_base_name_)
+
+ +

Set the prefix of the name for all the outputs in the simulation.

+
Parameters
+ + +
output_base_nameprefix for the outputs
+
+
+ +
+
+ +

◆ setSchemeFileName()

+ +
+
+ + + + + + + + +
Parameters::setSchemeFileName (std::string scheme_file_)
+
+ +

Sets the scheme file name to be used for the data synthesis.

+
Parameters
+ + +
scheme_file_scheme (PGSE )file name.
+
+
+ +
+
+ +

◆ setSimDuration()

+ +
+
+ + + + + + + + +
Parameters::setSimDuration (double duration)
+
+ +

sets the simulation duration.

+
Parameters
+ + +
durationsimulation duration.
+
+
+ +
+
+ +

◆ setTrajFileName()

+ +
+
+ + + + + + + + +
Parameters::setTrajFileName (std::string traj_file_)
+
+ +

Set the prefix of the name for the traj file (txt and .traj)

+
Parameters
+ + +
traj_file_prefix of the traj file.
+
+
+ +
+
+

Member Data Documentation

+ +

◆ collision_sphere_distance

+ +
+
+ + + + +
double Parameters::collision_sphere_distance = 0
+
+

Custiom size for the collision sphere

+ +
+
+ +

◆ computeVolume

+ +
+
+ + + + +
bool Parameters::computeVolume
+
+

Forces the volumen computation (slower) even without custom sampling

+ +
+
+ +

◆ custom_sampling_area

+ +
+
+ + + + +
bool Parameters::custom_sampling_area
+
+

True if a custom sampling area is defined (voxel for default)

+ +
+
+ +

◆ cylinders_files

+ +
+
+ + + + +
std::vector<std::string> Parameters::cylinders_files
+
+

file paths with a list of cilinders obstacles

+ +
+
+ +

◆ diffusivity

+ +
+
+ + + + +
double Parameters::diffusivity
+
+

D, diffusivity constant

+ +
+
+ +

◆ discard_illegals

+ +
+
+ + + + +
bool Parameters::discard_illegals = true
+
+

flag, true to discard possible illegal crossings, Trump by default.

+ +
+
+ +

◆ discard_stucks

+ +
+
+ + + + +
bool Parameters::discard_stucks = true
+
+

flag, true to discard posible stuck particles (max bouncing reached)

+ +
+
+ +

◆ gamma_packing

+ +
+
+ + + + +
bool Parameters::gamma_packing
+
+

flag, true if a gamma distribution of cylinders will be initialized

+ +
+
+ +

◆ hex_packing

+ +
+
+ + + + +
bool Parameters::hex_packing
+
+

flag, true if an haxagonal packing should be used

+ +
+
+ +

◆ hex_packing_radius

+ +
+
+ + + + +
double Parameters::hex_packing_radius
+
+

float, constant radius for the cylinders

+ +
+
+ +

◆ hex_packing_separation

+ +
+
+ + + + +
double Parameters::hex_packing_separation
+
+

float, separation distance betwen cylinders (separation > 2*radius)

+ +
+
+ +

◆ img_signal

+ +
+
+ + + + +
bool Parameters::img_signal
+
+

True to save the img part of the dwi signal (false by default)

+ +
+
+ +

◆ ini_delta_pos

+ +
+
+ + + + +
std::vector<float> Parameters::ini_delta_pos
+
+

Delta position for the walkers

+ +
+
+ +

◆ ini_walker_flag

+ +
+
+ + + + +
std::string Parameters::ini_walker_flag
+
+

where to initialize the walkers

+ +
+
+ +

◆ ini_walkers_file

+ +
+
+ + + + +
std::string Parameters::ini_walkers_file
+
+

initial walker position file (if any)

+ +
+
+ +

◆ ini_walkers_file_count

+ +
+
+ + + + +
unsigned Parameters::ini_walkers_file_count
+
+

number of walker positions initialize in the configuration file

+ +
+
+ +

◆ log_opp

+ +
+
+ + + + +
bool Parameters::log_opp = false
+
+

flag, true to save one per process output

+ +
+
+ +

◆ log_phase_shift

+ +
+
+ + + + +
bool Parameters::log_phase_shift = false
+
+

flag, true to save the final phase shift distribution

+ +
+
+ +

◆ log_propagator

+ +
+
+ + + + +
bool Parameters::log_propagator = false
+
+

flag, true saves the propagator for a given set of directions and times

+ +
+
+ +

◆ max_limits

+ +
+
+ + + + +
Eigen::Vector3d Parameters::max_limits
+
+

voxel max limits (if any)

+ +
+
+ +

◆ max_sampling_area

+ +
+
+ + + + +
Eigen::Vector3d Parameters::max_sampling_area
+
+

Max defining point to delimiter the uniform sampling of walkers

+ +
+
+ +

◆ max_simulation_time

+ +
+
+ + + + +
double Parameters::max_simulation_time = 0
+
+

Maximum simulation time for the DYNAMIC SIMULATION

+ +
+
+ +

◆ min_cyl_radii

+ +
+
+ + + + +
float Parameters::min_cyl_radii
+
+

Minimum radii (in um) to be sampled

+ +
+
+ +

◆ min_limits

+ +
+
+ + + + +
Eigen::Vector3d Parameters::min_limits
+
+

voxel min limits (if any) (bottom left corner)

+ +
+
+ +

◆ min_sampling_area

+ +
+
+ + + + +
Eigen::Vector3d Parameters::min_sampling_area
+
+

Min defining point to delimiter the uniform sampling of walkers

+ +
+
+ +

◆ num_proc

+ +
+
+ + + + +
unsigned Parameters::num_proc
+
+

Number of precessors/process to launch in parallel

+ +
+
+ +

◆ num_steps

+ +
+
+ + + + +
unsigned Parameters::num_steps
+
+

T, number of steps

+ +
+
+ +

◆ num_walkers

+ +
+
+ + + + +
unsigned Parameters::num_walkers
+
+

N, number of walkers

+ +
+
+ +

◆ number_subdivisions

+ +
+
+ + + + +
unsigned Parameters::number_subdivisions = 0
+
+

saves the number of subdivisions for an initialzied voxel (needed)

+ +
+
+ +

◆ obstacle_permeability

+ +
+
+ + + + +
double Parameters::obstacle_permeability = 0
+
+

Obstacles permeability

+ +
+
+ +

◆ output_base_name

+ +
+
+ + + + +
std::string Parameters::output_base_name
+
+

output files base name (path + sufix)

+ +
+
+ +

◆ PLY_files

+ +
+
+ + + + +
std::vector<std::string> Parameters::PLY_files
+
+

file paths with PLY obstacle files

+ +
+
+ +

◆ PLY_percolation

+ +
+
+ + + + +
std::vector<double> Parameters::PLY_percolation
+
+

Auxiliary vector to save PLY percolation

+ +
+
+ +

◆ PLY_scales

+ +
+
+ + + + +
std::vector<double> Parameters::PLY_scales
+
+

Auxiliary vector to save PLY file scales

+ +
+
+ +

◆ prop_dirs

+ +
+
+ + + + +
std::vector<Eigen::Vector3f> Parameters::prop_dirs
+
+

Saves the directions used to compute the propagator

+ +
+
+ +

◆ record_phase_times

+ +
+
+ + + + +
std::vector<unsigned> Parameters::record_phase_times
+
+

time indexes, used to save the phase shif of all walkers at certain time

+ +
+
+ +

◆ record_pos_times

+ +
+
+ + + + +
std::vector<unsigned> Parameters::record_pos_times
+
+

time indexes, used to save the position of all walkers at certain time

+ +
+
+ +

◆ record_prop_times

+ +
+
+ + + + +
std::vector<unsigned> Parameters::record_prop_times
+
+

time indexes, used to save the mean propagator of the walkers at c. times

+ +
+
+ +

◆ save_phase_shift

+ +
+
+ + + + +
bool Parameters::save_phase_shift
+
+

flag, saves the phase shift distribution for all particles

+ +
+
+ +

◆ scale_from_stu

+ +
+
+ + + + +
bool Parameters::scale_from_stu
+
+

flag, true if the scheme file is in standar units m,s

+ +
+
+ +

◆ scheme_file

+ +
+
+ + + + +
std::string Parameters::scheme_file
+
+

signal adquisition scheme file (if any)

+ +
+
+ +

◆ seed

+ +
+
+ + + + +
long Parameters::seed
+
+

Initial seed for the random generator

+ +
+
+ +

◆ separate_signals

+ +
+
+ + + + +
bool Parameters::separate_signals
+
+

Separate the signals into intra and extra (compute_volume on)

+ +
+
+ +

◆ sim_duration

+ +
+
+ + + + +
double Parameters::sim_duration
+
+

simulation total time

+ +
+
+ +

◆ subdivision_flag

+ +
+
+ + + + +
bool Parameters::subdivision_flag = false
+
+

flag to check if we have several voxel subdivision to compute the signal

+ +
+
+ +

◆ subdivisions

+ +
+
+ + + + +
std::vector<Subdivision> Parameters::subdivisions
+
+

saves actual positions of the subdivision to compute the signal

+ +
+
+ +

◆ subdivisions_file

+ +
+
+ + + + +
std::string Parameters::subdivisions_file = ""
+
+

file with the list of subdivisions coordinates to compute the signal

+ +
+
+ +

◆ traj_file

+ +
+
+ + + + +
std::string Parameters::traj_file
+
+

Trajectory file path

+ +
+
+ +

◆ verbatim

+ +
+
+ + + + +
bool Parameters::verbatim
+
+

False to omit displaying state and warnings

+ +
+
+ +

◆ voxels_list

+ +
+
+ + + + +
std::vector<std::pair<Eigen::Vector3d,Eigen::Vector3d> > Parameters::voxels_list
+
+

voxel min and max positions list (deprecated)

+ +
+
+ +

◆ write_bin

+ +
+
+ + + + +
bool Parameters::write_bin
+
+

flag, writes the output signal in binary format (True by default)

+ +
+
+ +

◆ write_traj

+ +
+
+ + + + +
bool Parameters::write_traj
+
+

flag, write a traj file or not, binary format only

+ +
+
+ +

◆ write_txt

+ +
+
+ + + + +
bool Parameters::write_txt
+
+

flag, writes DWI output signals in .txt if True

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_parameters.js b/doc/html/class_parameters.js new file mode 100644 index 0000000..f5aaf44 --- /dev/null +++ b/doc/html/class_parameters.js @@ -0,0 +1,88 @@ +var class_parameters = +[ + [ "Parameters", "class_parameters.html#af4d94ee360ac0157d9065f78797fe9a1", null ], + [ "addSubdivisions", "class_parameters.html#ae5fa10ca3ccc20d9b51a2bc549daf1c3", null ], + [ "getDiffusivity", "class_parameters.html#ac429071159941e3957eb7c030280a30f", null ], + [ "getIniWalkersFileName", "class_parameters.html#af734dc58d8d5898049226614c2dd38a3", null ], + [ "getMaxLimits", "class_parameters.html#ad4f8b826db4c1b665891740469e41086", null ], + [ "getMinLimits", "class_parameters.html#abda8b91e5ac40e67c79184d7071c353a", null ], + [ "getNumSteps", "class_parameters.html#aa5aaf80e0189c63090e8f04cf485800f", null ], + [ "getNumWalkers", "class_parameters.html#adb8599bc60f977f684f32a83bbe28fc1", null ], + [ "getOutputBaseFileName", "class_parameters.html#a794fd941bf5ff311f61f2e6b4f19e64d", null ], + [ "getSchemeFileName", "class_parameters.html#a7291b970983c021569cd2e3a0573592c", null ], + [ "getTrajFileName", "class_parameters.html#a38057c2ae3d11b578c8f199d73683ee1", null ], + [ "getWriteTextFlag", "class_parameters.html#adb6064f329732640c226608d6e1ddb60", null ], + [ "getWriteTrajFlag", "class_parameters.html#a21817e9a0207da2adf32611bcaf889ef", null ], + [ "iniWalkersFileName", "class_parameters.html#a73d64bb093a93c2b806883f5504d8fb5", null ], + [ "readSchemeFile", "class_parameters.html#afa8dd9d59fa727c3c2b2fe366efb2c14", null ], + [ "setDiffusivity", "class_parameters.html#a7af2bd289f8c8de738d643bb8e05ac62", null ], + [ "setMaxLimits", "class_parameters.html#a96764612c6ee5aeb684e1348e47b2308", null ], + [ "setMinLimits", "class_parameters.html#a73a4f685a35f8f7012609effb30a17d8", null ], + [ "setNumSteps", "class_parameters.html#af61156929c1abed67da0a1c9920ca508", null ], + [ "setNumWalkers", "class_parameters.html#a666f753268b273d35f9623f0754e67ce", null ], + [ "setOutputBaseFileName", "class_parameters.html#aec6b8dc2c119405ab2cdc4e6622ac616", null ], + [ "setSchemeFileName", "class_parameters.html#a95ca6c28a5c87363460ca48eed5f065f", null ], + [ "setSimDuration", "class_parameters.html#a934a87940878dc78b75ae4c230132f75", null ], + [ "setTrajFileName", "class_parameters.html#ac07671c27ff8f0ec9f5d8bdc656e7ffb", null ], + [ "setWriteTextFlag", "class_parameters.html#ac785bd73c771f6a46109fba421fbc059", null ], + [ "setWriteTrajFlag", "class_parameters.html#a632988a9dc0d04fdff35c6f72739ed83", null ], + [ "collision_sphere_distance", "class_parameters.html#abe008f02a49ef7f7a6f041f79cc81fbb", null ], + [ "computeVolume", "class_parameters.html#a669c92fe7864a00da04bba0c2af93a16", null ], + [ "custom_sampling_area", "class_parameters.html#af023e7efce57b9da0837731db6a85c87", null ], + [ "cylinders_files", "class_parameters.html#abdef3b0fe62c5fdca7d417d01edd7422", null ], + [ "diffusivity", "class_parameters.html#add48efa1d9fe056fdb21fe2d2d92533d", null ], + [ "discard_illegals", "class_parameters.html#ac1a5fa4c00eaaf1b40789f329ae20e9a", null ], + [ "discard_stucks", "class_parameters.html#ab1815ac94d73ca8b56a9f12fca04cb89", null ], + [ "gamma_icvf", "class_parameters.html#a97df7bda4427bbdd7b7e0aa2cd23e858", null ], + [ "gamma_num_cylinders", "class_parameters.html#a6e8dfd894eef31a43bd7bb0de5f02f37", null ], + [ "gamma_output_conf", "class_parameters.html#ae7568296f688ccea271336e882162e7e", null ], + [ "gamma_output_configuration", "class_parameters.html#a484419e6ab0c0661ff7825fbe6d5a963", null ], + [ "gamma_packing", "class_parameters.html#aaef8b4218392fb19de2c5c886f5f7fa0", null ], + [ "gamma_packing_alpha", "class_parameters.html#a29d423618cf9acb2bbfe071fac98ec29", null ], + [ "gamma_packing_beta", "class_parameters.html#a2b10c9b8191ca74923f07d74b8f7e30a", null ], + [ "hex_packing", "class_parameters.html#aad79d8e720492fd880ee021c6320dfe0", null ], + [ "hex_packing_radius", "class_parameters.html#a3c49b55dc2a2af1c5ddfc3426e2a7936", null ], + [ "hex_packing_separation", "class_parameters.html#a480338071cedf966fdb79b37d9ebe656", null ], + [ "img_signal", "class_parameters.html#a1dd221193dd0ad7e34a6b4f7c496d899", null ], + [ "ini_delta_pos", "class_parameters.html#aea1568fbc8a92bd90303ea8afc9e8c63", null ], + [ "ini_walker_flag", "class_parameters.html#a87cb2db5b45bf9cb36e74903fecfaa6e", null ], + [ "ini_walkers_file", "class_parameters.html#a84db69d29321fccb7cc7ea724a74df50", null ], + [ "ini_walkers_file_count", "class_parameters.html#ae01ac4f7d6d3b9eea6799f5c929ddf00", null ], + [ "log_opp", "class_parameters.html#ae30abbd794dee7f5aaf5d3d51152acef", null ], + [ "log_phase_shift", "class_parameters.html#a947e4b1fef66466119ea7b2e8e2bc0e4", null ], + [ "log_propagator", "class_parameters.html#a1f5a62a35d6521994a623d0fd0a98a24", null ], + [ "max_limits", "class_parameters.html#a879b4c717e0f59c9bbc4b7810b8fdde3", null ], + [ "max_sampling_area", "class_parameters.html#a2bf25423e72a562d5812ed0df3e06e2d", null ], + [ "max_simulation_time", "class_parameters.html#a66ad8359ef1cc76e8d5581a402cc86b5", null ], + [ "min_cyl_radii", "class_parameters.html#a0b44e239201caecaebdb7e956ead1e0c", null ], + [ "min_limits", "class_parameters.html#aa9d387477810c2bb574b83ecd1fbf8f0", null ], + [ "min_sampling_area", "class_parameters.html#a8b7e1481e63d5ac9a36eed8ab310d315", null ], + [ "num_proc", "class_parameters.html#aab0de21efc3f85e5c44205ed5ebf9d4d", null ], + [ "num_steps", "class_parameters.html#a3475e7efae778bc7720fe6c17274eef0", null ], + [ "num_walkers", "class_parameters.html#a35329cc60a28986ee4020457d46921fb", null ], + [ "number_subdivisions", "class_parameters.html#a0d15fd8f1f5c332174864c3acbaf5e10", null ], + [ "obstacle_permeability", "class_parameters.html#a2e5fa275543b4a52599e694e64546e13", null ], + [ "output_base_name", "class_parameters.html#a2662ccc98a7a2b9f0c81f223a8f0748f", null ], + [ "PLY_files", "class_parameters.html#a76984fe140c1c6c8a047dd622561200d", null ], + [ "PLY_percolation", "class_parameters.html#a67f6e450517ee21255d72d41bc9f0ce7", null ], + [ "PLY_scales", "class_parameters.html#a97ed7a4d1b6c6ea8f6507a6a0fc04698", null ], + [ "prop_dirs", "class_parameters.html#a4bbfed0148cec6e10d0e90d85437a37a", null ], + [ "record_phase_times", "class_parameters.html#a559e66b65a2cb4391d1099bf0db6ec44", null ], + [ "record_pos_times", "class_parameters.html#a4f884a7effd3a8816c78084ff3c2b202", null ], + [ "record_prop_times", "class_parameters.html#af47bd2eada81c6c581aaa8c70d04c8d6", null ], + [ "save_phase_shift", "class_parameters.html#ab737ef40d88faa6ee8a701013d9d2984", null ], + [ "scale_from_stu", "class_parameters.html#a3c37f738b7700bdc22845bc725d51e6f", null ], + [ "scheme_file", "class_parameters.html#afbb7caab773abb16753263a0b04c8a2c", null ], + [ "seed", "class_parameters.html#afa076397ed9cbdc4c88215e29b850e3c", null ], + [ "separate_signals", "class_parameters.html#adacb13afed18c07dfd269fae76f828b3", null ], + [ "sim_duration", "class_parameters.html#acbe36f055786ddcf8480a49d2c34c914", null ], + [ "subdivision_flag", "class_parameters.html#a43362cb6e3ea49cc9db9e52c3ebc7140", null ], + [ "subdivisions", "class_parameters.html#a3c05ff7a30f151c384b83ce3adca26fa", null ], + [ "subdivisions_file", "class_parameters.html#a1733bfcb8391c494b7b1a317dfda5e44", null ], + [ "traj_file", "class_parameters.html#a75346dc3b7a41548a2f9e0560343df24", null ], + [ "verbatim", "class_parameters.html#aabce43eb8376a94a8e765da99b58d003", null ], + [ "voxels_list", "class_parameters.html#aefbd07d8501ebb9311bbb1ea7c37be26", null ], + [ "write_bin", "class_parameters.html#a4c98120687d1ba332d0c6cd5a14c59fb", null ], + [ "write_traj", "class_parameters.html#ac9408092b6254b4ccfecc85decbb1944", null ], + [ "write_txt", "class_parameters.html#a15446bf0727ebfe03f119821c7d8ed0f", null ] +]; \ No newline at end of file diff --git a/doc/html/class_plane-members.html b/doc/html/class_plane-members.html new file mode 100644 index 0000000..cdc00c9 --- /dev/null +++ b/doc/html/class_plane-members.html @@ -0,0 +1,110 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Plane Member List
+
+
+ +

This is the complete list of members for Plane, including all inherited members.

+ + + + + + + + +
CheckCollision(Walker &walker, Eigen::Vector3d &step, double tmax, Collision &colision) (defined in Plane)Plane
d (defined in Plane)Plane
normal (defined in Plane)Plane
Plane() (defined in Plane)Planeinline
Plane(Eigen::Vector3d normal_, Eigen::Vector3d plane_center_, double d_) (defined in Plane)Plane
Plane(Eigen::Vector3d &a, Eigen::Vector3d &b, Eigen::Vector3d &c, Eigen::Vector3d &d) (defined in Plane)Plane
plane_center (defined in Plane)Plane
+
+ + + + diff --git a/doc/html/class_plane.html b/doc/html/class_plane.html new file mode 100644 index 0000000..b36c792 --- /dev/null +++ b/doc/html/class_plane.html @@ -0,0 +1,146 @@ + + + + + + + +MCDC_simulator: Plane Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Plane Class Reference
+
+
+ +

Main class. Implements basic voxel limits and operations. =================================================/. + More...

+ +

#include <voxel.h>

+ + + + + + + + +

+Public Member Functions

Plane (Eigen::Vector3d normal_, Eigen::Vector3d plane_center_, double d_)
 
Plane (Eigen::Vector3d &a, Eigen::Vector3d &b, Eigen::Vector3d &c, Eigen::Vector3d &d)
 
+bool CheckCollision (Walker &walker, Eigen::Vector3d &step, double tmax, Collision &colision)
 
+ + + + + + + +

+Public Attributes

+Eigen::Vector3d normal
 
+Eigen::Vector3d plane_center
 
+double d
 
+

Detailed Description

+

Main class. Implements basic voxel limits and operations. =================================================/.

+

Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done.

+
Author
Jonathan Rafael
+
Date
July 2016
+
Version
0.2 =============================================================================================================+
+

Auxiliary class to implements plane's interactions with particles.

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_plane.js b/doc/html/class_plane.js new file mode 100644 index 0000000..bfa7812 --- /dev/null +++ b/doc/html/class_plane.js @@ -0,0 +1,10 @@ +var class_plane = +[ + [ "Plane", "class_plane.html#acac0d9c003e0ab10d07b146c3566a0c7", null ], + [ "Plane", "class_plane.html#a8b1516b02b3ab4bdfe48234db82da168", null ], + [ "Plane", "class_plane.html#a942208920a6e4762e3dc9aab76305667", null ], + [ "CheckCollision", "class_plane.html#a1a4e24c5ca029ceb787f291a11adac8f", null ], + [ "d", "class_plane.html#a13e69abc574bead3f8f450bbe2b43cf9", null ], + [ "normal", "class_plane.html#a229ee65fd1663c7e7bd101309ddcf5e0", null ], + [ "plane_center", "class_plane.html#a20cfe0415a4f25f03d2d639ae9a647e9", null ] +]; \ No newline at end of file diff --git a/doc/html/class_propagator-members.html b/doc/html/class_propagator-members.html new file mode 100644 index 0000000..5d76c46 --- /dev/null +++ b/doc/html/class_propagator-members.html @@ -0,0 +1,110 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Propagator Member List
+
+
+ +

This is the complete list of members for Propagator, including all inherited members.

+ + + + + + + + +
directions (defined in Propagator)Propagator
initPropagator() (defined in Propagator)Propagator
log_times (defined in Propagator)Propagator
num_dirs (defined in Propagator)Propagator
num_times (defined in Propagator)Propagator
Propagator() (defined in Propagator)Propagator
propagator_log (defined in Propagator)Propagator
+
+ + + + diff --git a/doc/html/class_propagator.html b/doc/html/class_propagator.html new file mode 100644 index 0000000..6ae0dc8 --- /dev/null +++ b/doc/html/class_propagator.html @@ -0,0 +1,134 @@ + + + + + + + +MCDC_simulator: Propagator Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Propagator Class Reference
+
+
+ + + + +

+Public Member Functions

+void initPropagator ()
 
+ + + + + + + + + + + +

+Public Attributes

+uint num_dirs =0
 
+uint num_times = 0
 
+Eigen::Matrix3Xf directions
 
+std::vector< unsigned > log_times
 
+std::vector< std::vector< float > > propagator_log
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_propagator.js b/doc/html/class_propagator.js new file mode 100644 index 0000000..b5e7fdf --- /dev/null +++ b/doc/html/class_propagator.js @@ -0,0 +1,10 @@ +var class_propagator = +[ + [ "Propagator", "class_propagator.html#adcfb565519a2151819d1266bc87d0376", null ], + [ "initPropagator", "class_propagator.html#aadc489a4d28c7a91e092fb7cef3b7a62", null ], + [ "directions", "class_propagator.html#a2adc46036a2a2a8417ccdcd57e0c5f55", null ], + [ "log_times", "class_propagator.html#a9908ca97eaa8011f368510bc8ecc2343", null ], + [ "num_dirs", "class_propagator.html#a77f3732528ba16cef0092bc03a9d3020", null ], + [ "num_times", "class_propagator.html#ab2e3c09934290a84abd3726faadbadc3", null ], + [ "propagator_log", "class_propagator.html#aac52b49320c34b14b8bb8c5186f16bab", null ] +]; \ No newline at end of file diff --git a/doc/html/class_scheme-members.html b/doc/html/class_scheme-members.html new file mode 100644 index 0000000..4cb6e85 --- /dev/null +++ b/doc/html/class_scheme-members.html @@ -0,0 +1,115 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Scheme Member List
+
+
+ +

This is the complete list of members for Scheme, including all inherited members.

+ + + + + + + + + + + + + +
durationScheme
headerScheme
num_repScheme
readSchemeFile(std::string scheme_file_, bool scale_from_stu=0) (defined in Scheme)Scheme
scale_from_stuScheme
schemeScheme
Scheme() (defined in Scheme)Scheme
Scheme(std::string scheme_file_) (defined in Scheme)Scheme
scheme_fileScheme
TScheme
typeScheme
~Scheme() (defined in Scheme)Schemeinline
+
+ + + + diff --git a/doc/html/class_scheme.html b/doc/html/class_scheme.html new file mode 100644 index 0000000..8fdb304 --- /dev/null +++ b/doc/html/class_scheme.html @@ -0,0 +1,269 @@ + + + + + + + +MCDC_simulator: Scheme Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Scheme Class Reference
+
+
+ +

Auxiliary class to save scheme_files values =============================================================/. + More...

+ +

#include <scheme.h>

+ + + + + + +

+Public Member Functions

Scheme (std::string scheme_file_)
 
+void readSchemeFile (std::string scheme_file_, bool scale_from_stu=0)
 
+ + + + + + + + + + + + + + + + + +

+Public Attributes

std::string scheme_file
 
std::string header
 
std::string type
 
int num_rep
 
float duration
 
float T
 
bool scale_from_stu
 
std::vector< std::vector< double > > scheme
 
+

Detailed Description

+

Auxiliary class to save scheme_files values =============================================================/.

+

Helper class to store, handle and read scheme files values .

Author
Jonathan Rafael
+
Date
November 2016

0.2

+
+

Member Data Documentation

+ +

◆ duration

+ +
+
+ + + + +
float Scheme::duration
+
+

time duration (wavefroms)

+ +
+
+ +

◆ header

+ +
+
+ + + + +
std::string Scheme::header
+
+

Header on the scheme_file

+ +
+
+ +

◆ num_rep

+ +
+
+ + + + +
int Scheme::num_rep
+
+

Number of gradients

+ +
+
+ +

◆ scale_from_stu

+ +
+
+ + + + +
bool Scheme::scale_from_stu
+
+

True if the input is in standar units

+ +
+
+ +

◆ scheme

+ +
+
+ + + + +
std::vector< std::vector<double> > Scheme::scheme
+
+

Scheme values

+ +
+
+ +

◆ scheme_file

+ +
+
+ + + + +
std::string Scheme::scheme_file
+
+

Scheme file path

+ +
+
+ +

◆ T

+ +
+
+ + + + +
float Scheme::T
+
+

number of time steps (wavefroms)

+ +
+
+ +

◆ type

+ +
+
+ + + + +
std::string Scheme::type
+
+

Sequence type (PGSE only so far)

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_scheme.js b/doc/html/class_scheme.js new file mode 100644 index 0000000..397ab4d --- /dev/null +++ b/doc/html/class_scheme.js @@ -0,0 +1,15 @@ +var class_scheme = +[ + [ "Scheme", "class_scheme.html#aa0b319a6594176dea40ca78562401b53", null ], + [ "Scheme", "class_scheme.html#a932eafa378988202a457037db3846aac", null ], + [ "~Scheme", "class_scheme.html#af8f283786d3b27d97c55d92b9ae8b20b", null ], + [ "readSchemeFile", "class_scheme.html#a6c117cd4fa744d12abecb9184df30356", null ], + [ "duration", "class_scheme.html#ae2b4a7f1d0f06f4bea2a7f2761cbe2a7", null ], + [ "header", "class_scheme.html#a276a907de6afa60b6826552f337e310b", null ], + [ "num_rep", "class_scheme.html#ae41c5ea2b3aab4492f95b2479945b729", null ], + [ "scale_from_stu", "class_scheme.html#ac66ecb38621208f8dd1b5334919316cf", null ], + [ "scheme", "class_scheme.html#aa0d26e624075fbac339a746ed10b2dc0", null ], + [ "scheme_file", "class_scheme.html#afa0549aa16f4f6c62d6c397909be3350", null ], + [ "T", "class_scheme.html#a9715a33d087d317724e96229572ebe0d", null ], + [ "type", "class_scheme.html#a3a767ed00f8859a04857812e370c6db5", null ] +]; \ No newline at end of file diff --git a/doc/html/class_sentinels.html b/doc/html/class_sentinels.html new file mode 100644 index 0000000..8409de1 --- /dev/null +++ b/doc/html/class_sentinels.html @@ -0,0 +1,115 @@ + + + + + + + +MCDC_simulator: Sentinels Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Sentinels Class Reference
+
+
+ +

Collision Final class ====================================================================/. + More...

+ +

#include <sentinel.h>

+

Detailed Description

+

Collision Final class ====================================================================/.

+

Auxiliar class to check error and misbehaviours during the particle dynamics.

Author
Jonathan Rafael
+
Date
Junes 2017
+
+

Class used to check the possible numerical errors or un-handed cases inside the dynamic simulation.

+

The documentation for this class was generated from the following file: +
+
+ + + + diff --git a/doc/html/class_sim_errno-members.html b/doc/html/class_sim_errno-members.html new file mode 100644 index 0000000..ca08b41 --- /dev/null +++ b/doc/html/class_sim_errno-members.html @@ -0,0 +1,123 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
SimErrno Member List
+
+
+ +

This is the complete list of members for SimErrno, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
appendRepetitionLabel(Parameters &params)SimErrnostatic
checkConfigurationFile(const char *configuration_file)SimErrnostatic
checkCylindersListFile(Parameters &params)SimErrnostatic
checkFileExist(const std::string name)SimErrnoinlinestatic
checkGammaDistributionParamaters(Parameters &params)SimErrnostatic
checkInitWalkerFile(Parameters &params)SimErrnostatic
checkOuputPrefixAndWriteInfo(Parameters &params)SimErrnostatic
checkPLYFiles(Parameters &params)SimErrnostatic
checkSchemeFile(Parameters &params)SimErrnostatic
checkSimulationParameters(Parameters &params)SimErrnostatic
checkSubdivisionsFile(Parameters &params)SimErrnostatic
checkVoxelLimits(Parameters &params)SimErrnostatic
currentDateTime() (defined in SimErrno)SimErrnostatic
error(std::string message, std::ostream &, bool color=1)SimErrnostatic
expectedTime(std::string completed, std::string time, std::ostream &, bool color=1, std::string steps_second="", std::string endl_str="")SimErrnostatic
info(std::string message, std::ostream &, bool color=1)SimErrnostatic
infoMenu(std::string message, std::string value, std::ostream &, bool color=1, int space=0)SimErrnostatic
printSimulatinInfo(Parameters &params, std::ostream &, bool color=1)SimErrnostatic
SimErrno() (defined in SimErrno)SimErrno
warning(std::string message, std::ostream &, bool color=1)SimErrnostatic
+
+ + + + diff --git a/doc/html/class_sim_errno.html b/doc/html/class_sim_errno.html new file mode 100644 index 0000000..aeaed53 --- /dev/null +++ b/doc/html/class_sim_errno.html @@ -0,0 +1,911 @@ + + + + + + + +MCDC_simulator: SimErrno Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
SimErrno Class Reference
+
+
+ +

Simulation Input and parameter errors handling class =================================================/. + More...

+ +

#include <simerrno.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

static bool checkFileExist (const std::string name)
 Return true if the file does exist, false otherwise. More...
 
static bool checkSimulationParameters (Parameters &params)
 Return false if any of the parameters are inconsistent or bugged. In may assert the program. More...
 
static bool checkSchemeFile (Parameters &params)
 Return false if any of the parameters are inconsistent or bugged. In may assert the program. More...
 
static bool checkPLYFiles (Parameters &params)
 Return false if any of the PLY files are inconsistent or bugged. In may assert the program. More...
 
static bool checkCylindersListFile (Parameters &params)
 Return false if any of the cylinder list files are inconsistent or bugged. In may assert the program. More...
 
static bool checkInitWalkerFile (Parameters &params)
 Return false if the initial position file is inconsistent or bugged. In may assert the program. More...
 
static bool checkVoxelLimits (Parameters &params)
 Return false if the voxel instances are inconsistent or bugged. In may assert the program. More...
 
static bool checkConfigurationFile (const char *configuration_file)
 Return false if the scheme file does not exist or there are inconsistent or bugs. In may assert the program. More...
 
static void printSimulatinInfo (Parameters &params, std::ostream &, bool color=1)
 
static void checkOuputPrefixAndWriteInfo (Parameters &params)
 Return false if the output location and prefix are inconsistence or bugged. More...
 
static bool checkGammaDistributionParamaters (Parameters &params)
 Return false if the there are errors or inconsistencies in the gamma distr. parameters. More...
 
static void warning (std::string message, std::ostream &, bool color=1)
 
static void info (std::string message, std::ostream &, bool color=1)
 
static void infoMenu (std::string message, std::string value, std::ostream &, bool color=1, int space=0)
 
static void error (std::string message, std::ostream &, bool color=1)
 
static void expectedTime (std::string completed, std::string time, std::ostream &, bool color=1, std::string steps_second="", std::string endl_str="")
 
+static std::string currentDateTime ()
 
static bool checkSubdivisionsFile (Parameters &params)
 Return false if any of the elements in the file are miss configured. More...
 
static void appendRepetitionLabel (Parameters &params)
 Appends a repetition label on the prefix command so no results are overwritten, helpful if you are running batch of simulation inside a server. More...
 
+

Detailed Description

+

Simulation Input and parameter errors handling class =================================================/.

+

Class ot handle the errors in the parameters, logical and on the syntaxis.

Author
Jonathan Rafael
+
Date
March 2016
+
+

Class to handle the errors in the parameters, logical and on the syntax

+

This class contains a set of static methods to check that the configuration files exist and that the parameters are correctly set. This may cause asserts ERRORS or WARNINGS.

+

Member Function Documentation

+ +

◆ appendRepetitionLabel()

+ +
+
+ + + + + +
+ + + + + + + + +
void SimErrno::appendRepetitionLabel (Parametersparams)
+
+static
+
+ +

Appends a repetition label on the prefix command so no results are overwritten, helpful if you are running batch of simulation inside a server.

+
Parameters
+ + +
parameterinstance
+
+
+ +
+
+ +

◆ checkConfigurationFile()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SimErrno::checkConfigurationFile (const char * configuration_file)
+
+static
+
+ +

Return false if the scheme file does not exist or there are inconsistent or bugs. In may assert the program.

+
Parameters
+ + +
parameterinstance
+
+
+ +
+
+ +

◆ checkCylindersListFile()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SimErrno::checkCylindersListFile (Parametersparams)
+
+static
+
+ +

Return false if any of the cylinder list files are inconsistent or bugged. In may assert the program.

+
Parameters
+ + +
parameterinstance
+
+
+ +
+
+ +

◆ checkFileExist()

+ +
+
+ + + + + +
+ + + + + + + + +
static bool SimErrno::checkFileExist (const std::string name)
+
+inlinestatic
+
+ +

Return true if the file does exist, false otherwise.

+
Parameters
+ + +
namefile path
+
+
+ +
+
+ +

◆ checkGammaDistributionParamaters()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SimErrno::checkGammaDistributionParamaters (Parametersparams)
+
+static
+
+ +

Return false if the there are errors or inconsistencies in the gamma distr. parameters.

+
Parameters
+ + +
parameterinstance
+
+
+ +
+
+ +

◆ checkInitWalkerFile()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SimErrno::checkInitWalkerFile (Parametersparams)
+
+static
+
+ +

Return false if the initial position file is inconsistent or bugged. In may assert the program.

+
Parameters
+ + +
parameterinstance
+
+
+ +
+
+ +

◆ checkOuputPrefixAndWriteInfo()

+ +
+
+ + + + + +
+ + + + + + + + +
void SimErrno::checkOuputPrefixAndWriteInfo (Parametersparams)
+
+static
+
+ +

Return false if the output location and prefix are inconsistence or bugged.

+
Parameters
+ + +
parameterinstance
+
+
+ +
+
+ +

◆ checkPLYFiles()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SimErrno::checkPLYFiles (Parametersparams)
+
+static
+
+ +

Return false if any of the PLY files are inconsistent or bugged. In may assert the program.

+
Parameters
+ + +
parameterinstance
+
+
+ +
+
+ +

◆ checkSchemeFile()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SimErrno::checkSchemeFile (Parametersparams)
+
+static
+
+ +

Return false if any of the parameters are inconsistent or bugged. In may assert the program.

+
Parameters
+ + +
parameterinstance
+
+
+ +
+
+ +

◆ checkSimulationParameters()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SimErrno::checkSimulationParameters (Parametersparams)
+
+static
+
+ +

Return false if any of the parameters are inconsistent or bugged. In may assert the program.

+
Parameters
+ + +
parameterinstance
+
+
+ +
+
+ +

◆ checkSubdivisionsFile()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SimErrno::checkSubdivisionsFile (Parametersparams)
+
+static
+
+ +

Return false if any of the elements in the file are miss configured.

+
Parameters
+ + +
parameterinstance
+
+
+ +
+
+ +

◆ checkVoxelLimits()

+ +
+
+ + + + + +
+ + + + + + + + +
bool SimErrno::checkVoxelLimits (Parametersparams)
+
+static
+
+ +

Return false if the voxel instances are inconsistent or bugged. In may assert the program.

+
Parameters
+ + +
parameterinstance
+
+
+ +
+
+ +

◆ error()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SimErrno::error (std::string message,
std::ostream & ,
bool color = 1 
)
+
+static
+
+
Parameters
+ + + +
iostreamwhere to print !
colourflag, false if no colour should be display or written
+
+
+ +
+
+ +

◆ expectedTime()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SimErrno::expectedTime (std::string completed,
std::string time,
std::ostream & ,
bool color = 1,
std::string steps_second = "",
std::string endl_str = "" 
)
+
+static
+
+
Parameters
+ + + + +
iostreamwhere to print !
colourflag, false if no colour should be display or written !
endflag, false if no end of line string should be printing
+
+
+ +
+
+ +

◆ info()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SimErrno::info (std::string message,
std::ostream & ,
bool color = 1 
)
+
+static
+
+
Parameters
+ + + +
iostreamwhere to print
colourflag, false if no colour should be display or written
+
+
+ +
+
+ +

◆ infoMenu()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
void SimErrno::infoMenu (std::string message,
std::string value,
std::ostream & ,
bool color = 1,
int space = 0 
)
+
+static
+
+
Parameters
+ + + + +
iostreamwhere to print !
colourflag, false if no colour should be display or written !
spacingat the end of the message
+
+
+ +
+
+ +

◆ printSimulatinInfo()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SimErrno::printSimulatinInfo (Parametersparams,
std::ostream & ,
bool color = 1 
)
+
+static
+
+
Parameters
+ + + + +
parameterinstance
iostreamto print to
colorflag, false if no colour should be display or written
+
+
+ +
+
+ +

◆ warning()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void SimErrno::warning (std::string message,
std::ostream & ,
bool color = 1 
)
+
+static
+
+
Parameters
+ + + +
iostreamwhere to print
colourflag, false if no colour should be display or written
+
+
+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_sim_errno.js b/doc/html/class_sim_errno.js new file mode 100644 index 0000000..9385f3b --- /dev/null +++ b/doc/html/class_sim_errno.js @@ -0,0 +1,4 @@ +var class_sim_errno = +[ + [ "SimErrno", "class_sim_errno.html#a3afad3ed9244e3b22c1cfc73c1ee8a1f", null ] +]; \ No newline at end of file diff --git a/doc/html/class_simulable_sequence-members.html b/doc/html/class_simulable_sequence-members.html new file mode 100644 index 0000000..c3bac9c --- /dev/null +++ b/doc/html/class_simulable_sequence-members.html @@ -0,0 +1,139 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
SimulableSequence Member List
+
+
+ +

This is the complete list of members for SimulableSequence, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cleanDWISignal() (defined in SimulableSequence)SimulableSequencevirtual
cleanPhaseShift() (defined in SimulableSequence)SimulableSequencevirtual
computeDynamicTimeSteps()SimulableSequenceinlinevirtual
DWISimulableSequence
DWI_extraSimulableSequence
DWI_intraSimulableSequence
DWIiSimulableSequence
dynamicSimulableSequence
getbValue(unsigned i)SimulableSequenceinlinevirtual
getFreeDecay(unsigned i, double D)SimulableSequenceinlinevirtual
getGradImpulse(int i, double t, double tLast, Eigen::Vector3d &Gdt)=0SimulableSequencepure virtual
img_signalSimulableSequence
initializeIntraExtraSignals()SimulableSequencevirtual
initializeSubdivisionSignals()SimulableSequencevirtual
num_repSimulableSequence
percent_steps_inSimulableSequence
phase_shiftSimulableSequence
phase_shift_distributionSimulableSequence
save_phase_shiftSimulableSequence
scheme_fileSimulableSequence
separate_signalSimulableSequence
setNumberOfSteps(unsigned T)=0SimulableSequencepure virtual
SimulableSequence() (defined in SimulableSequence)SimulableSequenceinline
sub_DWISimulableSequence
sub_DWI_extraSimulableSequence
sub_DWI_intraSimulableSequence
sub_DWIiSimulableSequence
subdivision_flagSimulableSequence
subdivisionsSimulableSequence
time_stepsSimulableSequence
update_DWI_signal(Walker &walker)=0SimulableSequencepure virtual
update_phase_shift(double dt, double dt_last, Walker walker)=0SimulableSequencepure virtual
update_phase_shift(double time_step, Eigen::Matrix3Xd trajectory)=0SimulableSequencepure virtual
writePhaseShiftDistribution(std::string output_base_name) (defined in SimulableSequence)SimulableSequencevirtual
writeResultingData(std::string output_base_name) (defined in SimulableSequence)SimulableSequencevirtual
~SimulableSequence() (defined in SimulableSequence)SimulableSequenceinlinevirtual
+
+ + + + diff --git a/doc/html/class_simulable_sequence.html b/doc/html/class_simulable_sequence.html new file mode 100644 index 0000000..bb7252a --- /dev/null +++ b/doc/html/class_simulable_sequence.html @@ -0,0 +1,708 @@ + + + + + + + +MCDC_simulator: SimulableSequence Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
SimulableSequence Class Referenceabstract
+
+
+ +

MR Sequence Primary Class =============================================================/. + More...

+ +

#include <simulablesequence.h>

+
+Inheritance diagram for SimulableSequence:
+
+
Inheritance graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual void getGradImpulse (int i, double t, double tLast, Eigen::Vector3d &Gdt)=0
 
virtual double getbValue (unsigned i)
 
+virtual double getFreeDecay (unsigned i, double D)
 Expected free Decay.
 
virtual void update_phase_shift (double dt, double dt_last, Walker walker)=0
 
virtual void update_phase_shift (double time_step, Eigen::Matrix3Xd trajectory)=0
 
+virtual void update_DWI_signal (Walker &walker)=0
 Updates the DWI signal using the cumulated phase shift.
 
+virtual void setNumberOfSteps (unsigned T)=0
 Set the number of time steps if they are known.
 
+virtual void computeDynamicTimeSteps ()
 Compute the time for all the steps when they are not constant.
 
+virtual void initializeSubdivisionSignals ()
 Initialize the DWI signals for each subdivision.
 
+virtual void initializeIntraExtraSignals ()
 Initialize the DWI signals for each compartment (intra extra)
 
+virtual void writeResultingData (std::string output_base_name)
 
+virtual void writePhaseShiftDistribution (std::string output_base_name)
 
+virtual void cleanPhaseShift ()
 
+virtual void cleanDWISignal ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

std::string scheme_file
 
std::vector< double > DWI
 
std::vector< double > DWI_intra
 
std::vector< double > DWI_extra
 
std::vector< double > DWIi
 
std::vector< double > phase_shift
 
int num_rep
 
bool save_phase_shift
 
bool dynamic
 
double percent_steps_in
 
std::vector< double > time_steps
 
Eigen::ArrayXXf phase_shift_distribution
 
std::vector< std::vector< double > > sub_DWI
 
std::vector< std::vector< double > > sub_DWI_intra
 
std::vector< std::vector< double > > sub_DWI_extra
 
std::vector< std::vector< double > > sub_DWIi
 
bool subdivision_flag = false
 
bool separate_signal = false
 
bool img_signal = false
 
std::vector< Subdivisionsubdivisions
 
+

Detailed Description

+

MR Sequence Primary Class =============================================================/.

+

Elemental base clase. Abstract class to synthesise the MRI signal

+

Jonathan Rafael

+

Member Function Documentation

+ +

◆ getbValue()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual double SimulableSequence::getbValue (unsigned i)
+
+inlinevirtual
+
+
Parameters
+ + +
iindex of the gradient in the scheme_file (0,N-1)
+
+
+
Returns
b-value
+ +

Reimplemented in PGSESequence.

+ +
+
+ +

◆ getGradImpulse()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
virtual void SimulableSequence::getGradImpulse (int i,
double t,
double tLast,
Eigen::Vector3d & Gdt 
)
+
+pure virtual
+
+
Parameters
+ + + + + +
iWalker index
tcurrent time step (in milisenconds)
tLastlast time step (in milisenconds)
Gdtvector to compute de G*dt impulse
+
+
+ +

Implemented in GradientWaveform, and PGSESequence.

+ +
+
+ +

◆ update_phase_shift() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void SimulableSequence::update_phase_shift (double dt,
double dt_last,
Walker walker 
)
+
+pure virtual
+
+
Parameters
+ + +
iupdated walker
+
+
+ +

Implemented in PGSESequence, and GradientWaveform.

+ +
+
+ +

◆ update_phase_shift() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void SimulableSequence::update_phase_shift (double time_step,
Eigen::Matrix3Xd trajectory 
)
+
+pure virtual
+
+
Parameters
+ + +
iupdated the phase shift over a whole trajectory
+
+
+ +

Implemented in PGSESequence, and GradientWaveform.

+ +
+
+

Member Data Documentation

+ +

◆ DWI

+ +
+
+ + + + +
std::vector<double> SimulableSequence::DWI
+
+

Real part of the DWI signal

+ +
+
+ +

◆ DWI_extra

+ +
+
+ + + + +
std::vector<double> SimulableSequence::DWI_extra
+
+

Real part of the DWI signal extra axonal only (if needed)

+ +
+
+ +

◆ DWI_intra

+ +
+
+ + + + +
std::vector<double> SimulableSequence::DWI_intra
+
+

Real part of the DWI signal intra axonal olny (if needed)

+ +
+
+ +

◆ DWIi

+ +
+
+ + + + +
std::vector<double> SimulableSequence::DWIi
+
+

imaginary part of the DWI signal

+ +
+
+ +

◆ dynamic

+ +
+
+ + + + +
bool SimulableSequence::dynamic
+
+

Flag to indicate if the time steps are non-uniform

+ +
+
+ +

◆ img_signal

+ +
+
+ + + + +
bool SimulableSequence::img_signal = false
+
+

flag to check if the img part will be computed or not (false default

+ +
+
+ +

◆ num_rep

+ +
+
+ + + + +
int SimulableSequence::num_rep
+
+

number of repetitions .

+ +
+
+ +

◆ percent_steps_in

+ +
+
+ + + + +
double SimulableSequence::percent_steps_in
+
+

percentage of steps that should be inside the gradient times

+ +
+
+ +

◆ phase_shift

+ +
+
+ + + + +
std::vector<double> SimulableSequence::phase_shift
+
+

auxiliar phase shift for signal computations.

+ +
+
+ +

◆ phase_shift_distribution

+ +
+
+ + + + +
Eigen::ArrayXXf SimulableSequence::phase_shift_distribution
+
+

Matrix to save the phase shif distribution

+ +
+
+ +

◆ save_phase_shift

+ +
+
+ + + + +
bool SimulableSequence::save_phase_shift
+
+

flag, if true, saves the pahse shift distribution.

+ +
+
+ +

◆ scheme_file

+ +
+
+ + + + +
std::string SimulableSequence::scheme_file
+
+

Scheme file path

+ +
+
+ +

◆ separate_signal

+ +
+
+ + + + +
bool SimulableSequence::separate_signal = false
+
+

flag to check if we will separate the signal in intra and extra

+ +
+
+ +

◆ sub_DWI

+ +
+
+ + + + +
std::vector<std::vector<double> > SimulableSequence::sub_DWI
+
+

Real part of the DWI signal for each subDivision

+ +
+
+ +

◆ sub_DWI_extra

+ +
+
+ + + + +
std::vector<std::vector<double> > SimulableSequence::sub_DWI_extra
+
+

Real part of the DWI extra signal for each subDivision

+ +
+
+ +

◆ sub_DWI_intra

+ +
+
+ + + + +
std::vector<std::vector<double> > SimulableSequence::sub_DWI_intra
+
+

Real part of the DWI intra signal for each subDivision

+ +
+
+ +

◆ sub_DWIi

+ +
+
+ + + + +
std::vector<std::vector<double> > SimulableSequence::sub_DWIi
+
+

Imaginary part of the DWI signal for each subdivision

+ +
+
+ +

◆ subdivision_flag

+ +
+
+ + + + +
bool SimulableSequence::subdivision_flag = false
+
+

flag to check if we have several voxel subdivision to compute the signal

+ +
+
+ +

◆ subdivisions

+ +
+
+ + + + +
std::vector<Subdivision> SimulableSequence::subdivisions
+
+

saves the actual positions of the subdivision to compute the signal

+ +
+
+ +

◆ time_steps

+ +
+
+ + + + +
std::vector<double> SimulableSequence::time_steps
+
+

Auxiliary array to save the time steps

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_simulable_sequence.js b/doc/html/class_simulable_sequence.js new file mode 100644 index 0000000..15891e0 --- /dev/null +++ b/doc/html/class_simulable_sequence.js @@ -0,0 +1,39 @@ +var class_simulable_sequence = +[ + [ "SimulableSequence", "class_simulable_sequence.html#af58baa6151b8865b3b39088a9f3097ab", null ], + [ "~SimulableSequence", "class_simulable_sequence.html#aeb4a0b2cb0a4e972d3f49bc511656fc7", null ], + [ "cleanDWISignal", "class_simulable_sequence.html#af8396d72ccbb4ad1e8a403e554b8e8e1", null ], + [ "cleanPhaseShift", "class_simulable_sequence.html#a49a95a0735a939b65495be51ce0fb1be", null ], + [ "computeDynamicTimeSteps", "class_simulable_sequence.html#a3c5285531564cdb204894e6c6fc9204e", null ], + [ "getbValue", "class_simulable_sequence.html#a85cdcf5f7bd5bed804a816e3c18840b7", null ], + [ "getFreeDecay", "class_simulable_sequence.html#a31a328cc716e039a53f9b12122050b83", null ], + [ "getGradImpulse", "class_simulable_sequence.html#a03a417776f5404b06c761ab9109e3e1d", null ], + [ "initializeIntraExtraSignals", "class_simulable_sequence.html#a3fad0e115a2ec07a8b1202608eba698e", null ], + [ "initializeSubdivisionSignals", "class_simulable_sequence.html#aa2434c3b2ef59d1cd8b822b8e3a2920c", null ], + [ "setNumberOfSteps", "class_simulable_sequence.html#a2e16c0b0dcf1b90ad0afc53ab14e9250", null ], + [ "update_DWI_signal", "class_simulable_sequence.html#af5621196178ee78b27e740dfe360815e", null ], + [ "update_phase_shift", "class_simulable_sequence.html#ad7b2a30f563343aa65489aa553d4df63", null ], + [ "update_phase_shift", "class_simulable_sequence.html#a175197d165ee7852094bc70cadc59589", null ], + [ "writePhaseShiftDistribution", "class_simulable_sequence.html#aa6c72a9d84fda0fe15551f84a28d427d", null ], + [ "writeResultingData", "class_simulable_sequence.html#a372f6d9f448c537afde10e30b68428aa", null ], + [ "DWI", "class_simulable_sequence.html#a083961d839ed1433206ccbc481996409", null ], + [ "DWI_extra", "class_simulable_sequence.html#a49a24269e364bcd02000ba575acc85ed", null ], + [ "DWI_intra", "class_simulable_sequence.html#ac64fb8110b769e180283365567bd4158", null ], + [ "DWIi", "class_simulable_sequence.html#a3708afa1322d72b59d3be20b740d107c", null ], + [ "dynamic", "class_simulable_sequence.html#a1de2d00a939f550af1947ae25acc4b97", null ], + [ "img_signal", "class_simulable_sequence.html#a7603177060550acd31ece2c87fcdd2a9", null ], + [ "num_rep", "class_simulable_sequence.html#aa524c45db6c27dd21acacf97d7951ac2", null ], + [ "percent_steps_in", "class_simulable_sequence.html#a43e046af3bf6c498a5ad232058de8a90", null ], + [ "phase_shift", "class_simulable_sequence.html#a8691c0451c305869064862e30986c34c", null ], + [ "phase_shift_distribution", "class_simulable_sequence.html#a4e45e2d935a05a7375b04718a49c9af7", null ], + [ "save_phase_shift", "class_simulable_sequence.html#aa29f58ae224d92dd467a0845bd207324", null ], + [ "scheme_file", "class_simulable_sequence.html#a9898335af9d8f639f65b73eeac8efb53", null ], + [ "separate_signal", "class_simulable_sequence.html#a3278d9b5b22b0bfbdd0ce4bef0e1cc85", null ], + [ "sub_DWI", "class_simulable_sequence.html#a2686ccfa89396eeadd0a0d4f7842623c", null ], + [ "sub_DWI_extra", "class_simulable_sequence.html#ad7157eed5b79cf74c45b4185a2465eb6", null ], + [ "sub_DWI_intra", "class_simulable_sequence.html#a20a947108c3bb80ed45dd8851e777511", null ], + [ "sub_DWIi", "class_simulable_sequence.html#a1e958cc7d15337fa3ae0e58c8330f212", null ], + [ "subdivision_flag", "class_simulable_sequence.html#ae9e6e581ba16bbf81b693c0e4943bbf9", null ], + [ "subdivisions", "class_simulable_sequence.html#a77c721d4650578fdc3f44adfa91c030e", null ], + [ "time_steps", "class_simulable_sequence.html#a7e7e1a0de6045046061ffccaba4fa5ee", null ] +]; \ No newline at end of file diff --git a/doc/html/class_simulable_sequence__inherit__graph.map b/doc/html/class_simulable_sequence__inherit__graph.map new file mode 100644 index 0000000..8ebccec --- /dev/null +++ b/doc/html/class_simulable_sequence__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doc/html/class_simulable_sequence__inherit__graph.md5 b/doc/html/class_simulable_sequence__inherit__graph.md5 new file mode 100644 index 0000000..51f217a --- /dev/null +++ b/doc/html/class_simulable_sequence__inherit__graph.md5 @@ -0,0 +1 @@ +93166b1759999132a20819d25a356aa4 \ No newline at end of file diff --git a/doc/html/class_simulable_sequence__inherit__graph.png b/doc/html/class_simulable_sequence__inherit__graph.png new file mode 100644 index 0000000..ce9fbe7 Binary files /dev/null and b/doc/html/class_simulable_sequence__inherit__graph.png differ diff --git a/doc/html/class_subdivision-members.html b/doc/html/class_subdivision-members.html new file mode 100644 index 0000000..3730cd3 --- /dev/null +++ b/doc/html/class_subdivision-members.html @@ -0,0 +1,111 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Subdivision Member List
+
+
+ +

This is the complete list of members for Subdivision, including all inherited members.

+ + + + + + + + + +
densitySubdivision
density_extraSubdivision
density_intraSubdivision
isInside(Eigen::Vector3d &pos)Subdivision
max_limitsSubdivision
min_limitsSubdivision
Subdivision()Subdivision
Subdivision(Eigen::Vector3f &, Eigen::Vector3f &)Subdivision
+
+ + + + diff --git a/doc/html/class_subdivision.html b/doc/html/class_subdivision.html new file mode 100644 index 0000000..b626f87 --- /dev/null +++ b/doc/html/class_subdivision.html @@ -0,0 +1,251 @@ + + + + + + + +MCDC_simulator: Subdivision Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Subdivision Class Reference
+
+
+ +

Auxiliary Subdivision Class =============================================================/. + More...

+ +

#include <subdivision.h>

+ + + + + + + + + + + +

+Public Member Functions

Subdivision ()
 Naive constructor.
 
Subdivision (Eigen::Vector3f &, Eigen::Vector3f &)
 Constructor for a defined list of min and max positions.
 
bool isInside (Eigen::Vector3d &pos)
 Auxiliary function to check if a 3d position is inside a "subdivision" i.e. defined cube. More...
 
+ + + + + + + + + + + +

+Public Attributes

Eigen::Vector3f min_limits
 
Eigen::Vector3f max_limits
 
int density
 
int density_intra
 
int density_extra
 
+

Detailed Description

+

Auxiliary Subdivision Class =============================================================/.

+

Auxiliary Class. Implementation of the subdivision of a voxel into separate adquisitions

+
Date
September 2017
+
Author
Jonathan Rafael

0.1.0

+
+

Member Function Documentation

+ +

◆ isInside()

+ +
+
+ + + + + + + + +
bool Subdivision::isInside (Eigen::Vector3d & pos)
+
+ +

Auxiliary function to check if a 3d position is inside a "subdivision" i.e. defined cube.

+
Parameters
+ + +
pos3d position
+
+
+ +
+
+

Member Data Documentation

+ +

◆ density

+ +
+
+ + + + +
int Subdivision::density
+
+

Counter to save the number of particles inside that region

+ +
+
+ +

◆ density_extra

+ +
+
+ + + + +
int Subdivision::density_extra
+
+

Counter to save the number of particles labeled as Extra in that region

+ +
+
+ +

◆ density_intra

+ +
+
+ + + + +
int Subdivision::density_intra
+
+

Counter to save the number of particles labeled as Intra in that region

+ +
+
+ +

◆ max_limits

+ +
+
+ + + + +
Eigen::Vector3f Subdivision::max_limits
+
+

Vector with the list of max limits points of each subdivisions

+ +
+
+ +

◆ min_limits

+ +
+
+ + + + +
Eigen::Vector3f Subdivision::min_limits
+
+

Vector with the list of min limits points of each subdivisions

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_subdivision.js b/doc/html/class_subdivision.js new file mode 100644 index 0000000..bcbfb1f --- /dev/null +++ b/doc/html/class_subdivision.js @@ -0,0 +1,11 @@ +var class_subdivision = +[ + [ "Subdivision", "class_subdivision.html#ac51db3c00b0e4f7543c34859ad846871", null ], + [ "Subdivision", "class_subdivision.html#a96a55a5e9c88a2ee0640a904bb30141c", null ], + [ "isInside", "class_subdivision.html#adb91e1cc1e6959d13220454ddfc7ba28", null ], + [ "density", "class_subdivision.html#a6135c9e9b9a16f2f316d28071dee16c6", null ], + [ "density_extra", "class_subdivision.html#aa9d564a68a0785998db3e129c6698c0f", null ], + [ "density_intra", "class_subdivision.html#a2944862a3bafcacaf45a935f266f0cf0", null ], + [ "max_limits", "class_subdivision.html#a96ca3e7e744026fef809ade08d861985", null ], + [ "min_limits", "class_subdivision.html#ac8d84e208bb294b78379a05da4ccfc37", null ] +]; \ No newline at end of file diff --git a/doc/html/class_trajectory-members.html b/doc/html/class_trajectory-members.html new file mode 100644 index 0000000..49b4993 --- /dev/null +++ b/doc/html/class_trajectory-members.html @@ -0,0 +1,143 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Trajectory Member List
+
+
+ +

This is the complete list of members for Trajectory, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bheaderout (defined in Trajectory)Trajectory
bout (defined in Trajectory)Trajectory
closeTrajReaderFile()Trajectory
dyn_duration (defined in Trajectory)Trajectory
headerfileTrajectory
in (defined in Trajectory)Trajectory
in_headerTrajectory
initTrajectory(Parameters params)Trajectory
initTrajReaderFile() (defined in Trajectory)Trajectory
initTrajWriter()Trajectory
initTrajWriterBinary() (defined in Trajectory)Trajectory
initTrajWriterText() (defined in Trajectory)Trajectory
io_flag (defined in Trajectory)Trajectory
isBigEndianTrajectory
N (defined in Trajectory)Trajectory
openTrajReaderFile() (defined in Trajectory)Trajectory
pos_timesTrajectory
readCurrentWalkersTrajectory(Eigen::Matrix3Xd &) (defined in Trajectory)Trajectory
readTrajectoryHeader() (defined in Trajectory)Trajectory
reWriteHeaderFile(unsigned num_walkers) (defined in Trajectory)Trajectory
setTrajFile(std::string)Trajectory
steps_subsetTrajectory
TTrajectory
theaderout (defined in Trajectory)Trajectory
tout (defined in Trajectory)Trajectory
Trajectory()Trajectory
Trajectory(const char *traj_file, bool isBigEndian_=true, std::string io_flag_="rb")Trajectory
trajfileTrajectory
write_binTrajectory
write_trajTrajectory
write_txtTrajectory
writePosition(Eigen::Vector3d &) (defined in Trajectory)Trajectory
writePosition(Eigen::Matrix3Xd &) (defined in Trajectory)Trajectory
writePositionBinary(Eigen::Vector3d &) (defined in Trajectory)Trajectory
writePositionBinary(Eigen::Matrix3Xd &) (defined in Trajectory)Trajectory
writePositionText(Eigen::Vector3d &) (defined in Trajectory)Trajectory
writePositionText(Eigen::Matrix3Xd &) (defined in Trajectory)Trajectory
writeTrajectoryHeaderBinary() (defined in Trajectory)Trajectory
writeTrajectoryHeaderText() (defined in Trajectory)Trajectory
~Trajectory()Trajectory
+
+ + + + diff --git a/doc/html/class_trajectory.html b/doc/html/class_trajectory.html new file mode 100644 index 0000000..fa1d2ab --- /dev/null +++ b/doc/html/class_trajectory.html @@ -0,0 +1,429 @@ + + + + + + + +MCDC_simulator: Trajectory Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Trajectory Class Reference
+
+
+ +

Auxiliary class. Handles i/o operation of walker trayectories. ============================/. + More...

+ +

#include <trajectory.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Trajectory ()
 Main constructor, Initialice everythin to default.
 
Trajectory (const char *traj_file, bool isBigEndian_=true, std::string io_flag_="rb")
 Contructor , Initialice everythin by parameters.
 
~Trajectory ()
 Destructor, close files and fstreams.
 
+void initTrajectory (Parameters params)
 Initialice the output files if any.
 
+void setTrajFile (std::string)
 Setd the traj file operations.
 
void closeTrajReaderFile ()
 
+void openTrajReaderFile ()
 
+void initTrajReaderFile ()
 
+void readTrajectoryHeader ()
 
+void readCurrentWalkersTrajectory (Eigen::Matrix3Xd &)
 
void initTrajWriter ()
 
+void initTrajWriterBinary ()
 
+void initTrajWriterText ()
 
+void writeTrajectoryHeaderBinary ()
 
+void writeTrajectoryHeaderText ()
 
+void reWriteHeaderFile (unsigned num_walkers)
 
+void writePosition (Eigen::Vector3d &)
 
+void writePositionText (Eigen::Vector3d &)
 
+void writePositionBinary (Eigen::Vector3d &)
 
+void writePosition (Eigen::Matrix3Xd &)
 
+void writePositionText (Eigen::Matrix3Xd &)
 
+void writePositionBinary (Eigen::Matrix3Xd &)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

std::string trajfile
 
std::string headerfile
 
+FILE * in
 
FILE * in_header
 
+std::ofstream bout
 
+std::ofstream tout
 
+std::ofstream bheaderout
 
+std::ofstream theaderout
 
+unsigned N
 
unsigned T
 
+double dyn_duration
 
+std::string io_flag
 
std::vector< unsigned > pos_times
 
bool isBigEndian
 
bool write_traj
 
bool write_txt
 
bool write_bin
 
bool steps_subset
 
+

Detailed Description

+

Auxiliary class. Handles i/o operation of walker trayectories. ============================/.

+
Author
Jonathan Rafael
+
Date
July 2016

0.2

+
+

Member Function Documentation

+ +

◆ closeTrajReaderFile()

+ +
+
+ + + + + + + +
void Trajectory::closeTrajReaderFile ()
+
+

Read operations

+ +
+
+ +

◆ initTrajWriter()

+ +
+
+ + + + + + + +
void Trajectory::initTrajWriter ()
+
+

Write operations

+ +
+
+

Member Data Documentation

+ +

◆ headerfile

+ +
+
+ + + + +
std::string Trajectory::headerfile
+
+

header name

+ +
+
+ +

◆ in_header

+ +
+
+ + + + +
FILE * Trajectory::in_header
+
+

Files to be written using the previous names binary out, text out, binary header, text header

+ +
+
+ +

◆ isBigEndian

+ +
+
+ + + + +
bool Trajectory::isBigEndian
+
+

flag if the format is big endian

+ +
+
+ +

◆ pos_times

+ +
+
+ + + + +
std::vector<unsigned> Trajectory::pos_times
+
+

Times indexes when to save the particle positions.

+ +
+
+ +

◆ steps_subset

+ +
+
+ + + + +
bool Trajectory::steps_subset
+
+

true if the steps are no uniform

+ +
+
+ +

◆ T

+ +
+
+ + + + +
unsigned Trajectory::T
+
+

number of walkers, total time;

+ +
+
+ +

◆ trajfile

+ +
+
+ + + + +
std::string Trajectory::trajfile
+
+

trajfile name

+ +
+
+ +

◆ write_bin

+ +
+
+ + + + +
bool Trajectory::write_bin
+
+

flag if we want to write a binary traj file

+ +
+
+ +

◆ write_traj

+ +
+
+ + + + +
bool Trajectory::write_traj
+
+

flag if we want to write a traj file

+ +
+
+ +

◆ write_txt

+ +
+
+ + + + +
bool Trajectory::write_txt
+
+

flag if we want to write a text traj file

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_trajectory.js b/doc/html/class_trajectory.js new file mode 100644 index 0000000..ac75957 --- /dev/null +++ b/doc/html/class_trajectory.js @@ -0,0 +1,43 @@ +var class_trajectory = +[ + [ "Trajectory", "class_trajectory.html#aa340ba80f1f4d1aa39f19f069d5d8089", null ], + [ "Trajectory", "class_trajectory.html#a4879a4d0944eb04246e21deac940b90d", null ], + [ "~Trajectory", "class_trajectory.html#ac673c37025ca5353ad99ab41c936e75d", null ], + [ "closeTrajReaderFile", "class_trajectory.html#a9aedf2530dca72ca629741585717c64a", null ], + [ "initTrajectory", "class_trajectory.html#aaeda8b05ad61298fbd2aba2a3192486e", null ], + [ "initTrajReaderFile", "class_trajectory.html#a727883a1c29c9bdb8d4cdb01888023da", null ], + [ "initTrajWriter", "class_trajectory.html#aec9f75fa04452af2199888c47652c7e4", null ], + [ "initTrajWriterBinary", "class_trajectory.html#a661b8c4070a55fd2e6abe703d23c95df", null ], + [ "initTrajWriterText", "class_trajectory.html#a7b6926793185fc0ebebb09a7abba8b7a", null ], + [ "openTrajReaderFile", "class_trajectory.html#a9239f7d5d05f02ce58b6ad2e7be231d7", null ], + [ "readCurrentWalkersTrajectory", "class_trajectory.html#a5f96383db2d95b41a46dc752b00f70e6", null ], + [ "readTrajectoryHeader", "class_trajectory.html#ad436905c5614d4ac3a52acb6d2211b61", null ], + [ "reWriteHeaderFile", "class_trajectory.html#a82540862cb8c200b1a6979b5f919681d", null ], + [ "setTrajFile", "class_trajectory.html#a00a28c1782a0a661b40ad9dfefc0d3f4", null ], + [ "writePosition", "class_trajectory.html#ada4c4918a46c69508e6e847e4ef54f56", null ], + [ "writePosition", "class_trajectory.html#a5392bbab8cb315fcb99d30c90ca746b1", null ], + [ "writePositionBinary", "class_trajectory.html#a8ab6682b6a6c9cdc78fb6cef56129c91", null ], + [ "writePositionBinary", "class_trajectory.html#a0c8e6a22d330cfdb6419813ffd43ccba", null ], + [ "writePositionText", "class_trajectory.html#ad35ef554146d54b4ea0a3bdce1f6246d", null ], + [ "writePositionText", "class_trajectory.html#a85776d999a5eacdbbef9008f96da007b", null ], + [ "writeTrajectoryHeaderBinary", "class_trajectory.html#a0cf9e0365b4d075d2da7c800fef83858", null ], + [ "writeTrajectoryHeaderText", "class_trajectory.html#ae84e1c1573c8f42bd68c09dff3909f6f", null ], + [ "bheaderout", "class_trajectory.html#abf8e0a2b50a2e873c261720e295687ac", null ], + [ "bout", "class_trajectory.html#a41053c7c21f625933b4dd290da958b7c", null ], + [ "dyn_duration", "class_trajectory.html#ada15a7d6836e4cee2f35f788df0d844f", null ], + [ "headerfile", "class_trajectory.html#a6bb5d5e4ad4fb36a65d6cffdc6ab05af", null ], + [ "in", "class_trajectory.html#aa6725e54b483f0eaaae88710707e58fe", null ], + [ "in_header", "class_trajectory.html#a6a7484c5282331583841b038997d597b", null ], + [ "io_flag", "class_trajectory.html#abc9b9bb15f5723a208f0ff22cd740eda", null ], + [ "isBigEndian", "class_trajectory.html#a66dfa9e8d1e60706b8e8bb1e91a34e29", null ], + [ "N", "class_trajectory.html#a849e3a9c92a6eea27073c4e533412a67", null ], + [ "pos_times", "class_trajectory.html#a4b6369fb83108e27a774f50c06169817", null ], + [ "steps_subset", "class_trajectory.html#a973422e0d41afe4720fbbf62500a5035", null ], + [ "T", "class_trajectory.html#ad9cbff5cf9f84ca1e2378d1d6105c5e3", null ], + [ "theaderout", "class_trajectory.html#a90e41427f7c6ce7b5b549e072fd9f59d", null ], + [ "tout", "class_trajectory.html#a2373f0055623b904e6051c0681d13472", null ], + [ "trajfile", "class_trajectory.html#aee056cca538c4430eacff9534e43bc8e", null ], + [ "write_bin", "class_trajectory.html#a7135e87575f429a7d6ad32477dc96e2c", null ], + [ "write_traj", "class_trajectory.html#a1194477068ed051401f99aba4a1056b1", null ], + [ "write_txt", "class_trajectory.html#a94125474ee64fd3007091a3e88f59769", null ] +]; \ No newline at end of file diff --git a/doc/html/class_triangle-members.html b/doc/html/class_triangle-members.html new file mode 100644 index 0000000..ae0947f --- /dev/null +++ b/doc/html/class_triangle-members.html @@ -0,0 +1,119 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Triangle Member List
+
+
+ +

This is the complete list of members for Triangle, including all inherited members.

+ + + + + + + + + + + + + + + + + +
center (defined in Triangle)Triangle
getNormal(Eigen::Vector3d &normal) (defined in Triangle)Triangle
getVertex(const unsigned i, Eigen::Vector3d &v) (defined in Triangle)Triangle
index (defined in Triangle)Triangle
indexes (defined in Triangle)Triangle
minDistance(const Eigen::Vector3d p) (defined in Triangle)Triangle
normal (defined in Triangle)Triangle
radius (defined in Triangle)Triangle
rayIntersects(const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, double &t) (defined in Triangle)Triangle
rayIntersects_MT(const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, double &u, double &v, double &t) (defined in Triangle)Triangle
saveNormalAndAuxInfo() (defined in Triangle)Triangle
stepIntersects_MT(Walker &walker, const Eigen::Vector3d &step, const double &max_length, Collision &colision) (defined in Triangle)Triangle
stepIntersects_MT_limits(const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, const double &max_length, Collision &colision, const Eigen::Vector3d &limits_mod, double limit_x, double limit_y, double limit_z) (defined in Triangle)Triangle
Triangle() (defined in Triangle)Triangle
Triangle(Vertex *vertices, unsigned index) (defined in Triangle)Triangle
vertices (defined in Triangle)Triangle
+
+ + + + diff --git a/doc/html/class_triangle.html b/doc/html/class_triangle.html new file mode 100644 index 0000000..6880a59 --- /dev/null +++ b/doc/html/class_triangle.html @@ -0,0 +1,179 @@ + + + + + + + +MCDC_simulator: Triangle Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Triangle Class Reference
+
+
+ +

Auxiliary class. Implements trangular barriers. ===================================/. + More...

+ +

#include <triangle.h>

+
+Collaboration diagram for Triangle:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Triangle (Vertex *vertices, unsigned index)
 
+void getVertex (const unsigned i, Eigen::Vector3d &v)
 
+void getNormal (Eigen::Vector3d &normal)
 
+void saveNormalAndAuxInfo ()
 
+bool rayIntersects (const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, double &t)
 
+void stepIntersects_MT (Walker &walker, const Eigen::Vector3d &step, const double &max_length, Collision &colision)
 
+void stepIntersects_MT_limits (const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, const double &max_length, Collision &colision, const Eigen::Vector3d &limits_mod, double limit_x, double limit_y, double limit_z)
 
+bool rayIntersects_MT (const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, double &u, double &v, double &t)
 
+double minDistance (const Eigen::Vector3d p)
 
+ + + + + + + + + + + + + +

+Public Attributes

+unsigned index
 
+Vertexvertices
 
+Eigen::Array3i indexes
 
+Eigen::Vector3d normal
 
+Eigen::Vector3d center
 
+double radius
 
+

Detailed Description

+

Auxiliary class. Implements trangular barriers. ===================================/.

+

Helper class to strore and handle trangular barriers.

Author
Jonathan Rafael
+
Date
July 2016

0.2

+
+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_triangle.js b/doc/html/class_triangle.js new file mode 100644 index 0000000..061577b --- /dev/null +++ b/doc/html/class_triangle.js @@ -0,0 +1,19 @@ +var class_triangle = +[ + [ "Triangle", "class_triangle.html#aaefe4ed500c07918d30c6f0e286332c5", null ], + [ "Triangle", "class_triangle.html#a420f50ce640dca2aca127ceb68de2e0f", null ], + [ "getNormal", "class_triangle.html#ac134db353d4bd34eae298e6220bd0254", null ], + [ "getVertex", "class_triangle.html#a31d9c90daae516c82e03dcbb492a1fe5", null ], + [ "minDistance", "class_triangle.html#afd80e0b45910181568098c04e5a2046d", null ], + [ "rayIntersects", "class_triangle.html#a087e0b0bfb2c49ed4854d8b0e939e7d2", null ], + [ "rayIntersects_MT", "class_triangle.html#a733c94320a1effcee36b7382e92be1e6", null ], + [ "saveNormalAndAuxInfo", "class_triangle.html#acb81455a547203d7b61b6d178578620a", null ], + [ "stepIntersects_MT", "class_triangle.html#ac1197111887bcba4098f20a71108105c", null ], + [ "stepIntersects_MT_limits", "class_triangle.html#a01e5c101c7455d7030080594628533bf", null ], + [ "center", "class_triangle.html#af85e52d2beb9feb49a4ded02061c056a", null ], + [ "index", "class_triangle.html#a0f6509666826b8e916e8c884e6d92fdf", null ], + [ "indexes", "class_triangle.html#a60f4999d8220f2e9f5361dfc2d3fa7d2", null ], + [ "normal", "class_triangle.html#a90c44b094ed4f5f663b3198f254b015a", null ], + [ "radius", "class_triangle.html#aca1dd750b3a5e13fd86947f318e9176a", null ], + [ "vertices", "class_triangle.html#a1f17e61561dadac3966d2450dcdb001d", null ] +]; \ No newline at end of file diff --git a/doc/html/class_triangle__coll__graph.map b/doc/html/class_triangle__coll__graph.map new file mode 100644 index 0000000..7297a00 --- /dev/null +++ b/doc/html/class_triangle__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/class_triangle__coll__graph.md5 b/doc/html/class_triangle__coll__graph.md5 new file mode 100644 index 0000000..9de78b9 --- /dev/null +++ b/doc/html/class_triangle__coll__graph.md5 @@ -0,0 +1 @@ +754f08c326e2584f4df3b0de5f9ad1ab \ No newline at end of file diff --git a/doc/html/class_triangle__coll__graph.png b/doc/html/class_triangle__coll__graph.png new file mode 100644 index 0000000..a06cf8d Binary files /dev/null and b/doc/html/class_triangle__coll__graph.png differ diff --git a/doc/html/class_vertex-members.html b/doc/html/class_vertex-members.html new file mode 100644 index 0000000..ddb24c3 --- /dev/null +++ b/doc/html/class_vertex-members.html @@ -0,0 +1,108 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Vertex Member List
+
+
+ +

This is the complete list of members for Vertex, including all inherited members.

+ + + + + + +
index (defined in Vertex)Vertex
operator()(unsigned i) (defined in Vertex)Vertexinline
points (defined in Vertex)Vertex
Vertex() (defined in Vertex)Vertex
Vertex(const double &x, const double &y, const double &z) (defined in Vertex)Vertex
+
+ + + + diff --git a/doc/html/class_vertex.html b/doc/html/class_vertex.html new file mode 100644 index 0000000..e076d22 --- /dev/null +++ b/doc/html/class_vertex.html @@ -0,0 +1,139 @@ + + + + + + + +MCDC_simulator: Vertex Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Vertex Class Reference
+
+
+ +

Auxiliary class. Implements basic vertices. ====================================/. + More...

+ +

#include <vertex.h>

+ + + + + + +

+Public Member Functions

Vertex (const double &x, const double &y, const double &z)
 
+double operator() (unsigned i)
 
+ + + + + +

+Public Attributes

+unsigned index
 
+double points [3]
 
+

Detailed Description

+

Auxiliary class. Implements basic vertices. ====================================/.

+

Helper class to strore and handle vertices.

Author
Jonathan Rafael
+
Date
July 2016

0.2

+
+

Vertex of a 3d poly

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_vertex.js b/doc/html/class_vertex.js new file mode 100644 index 0000000..0286b0b --- /dev/null +++ b/doc/html/class_vertex.js @@ -0,0 +1,8 @@ +var class_vertex = +[ + [ "Vertex", "class_vertex.html#a97488994a2482d70da74e1b91d40e169", null ], + [ "Vertex", "class_vertex.html#abd9cebad3eacc656ea6a9027c1d96b8d", null ], + [ "operator()", "class_vertex.html#a43d933c801f9d4deff63b0ebefa57dd6", null ], + [ "index", "class_vertex.html#a0370aebecc487a440882a2a8b44d0501", null ], + [ "points", "class_vertex.html#a3df67e6d67e5fd518b9ea215722b187f", null ] +]; \ No newline at end of file diff --git a/doc/html/class_voxel-members.html b/doc/html/class_voxel-members.html new file mode 100644 index 0000000..38a2d8a --- /dev/null +++ b/doc/html/class_voxel-members.html @@ -0,0 +1,109 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Voxel Member List
+
+
+ +

This is the complete list of members for Voxel, including all inherited members.

+ + + + + + + +
CheckCollision(Walker &walker, Eigen::Vector3d &step, double &tmax, Collision &colision) (defined in Voxel)Voxel
max_limits (defined in Voxel)Voxel
min_limits (defined in Voxel)Voxel
Voxel() (defined in Voxel)Voxel
Voxel(Eigen::Vector3d min_limits_, Eigen::Vector3d max_limits_) (defined in Voxel)Voxel
walls (defined in Voxel)Voxel
+
+ + + + diff --git a/doc/html/class_voxel.html b/doc/html/class_voxel.html new file mode 100644 index 0000000..3300432 --- /dev/null +++ b/doc/html/class_voxel.html @@ -0,0 +1,146 @@ + + + + + + + +MCDC_simulator: Voxel Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Voxel Class Reference
+
+
+ +

//! Main class. Implements basic voxel limits and operations. Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done. + More...

+ +

#include <voxel.h>

+
+Collaboration diagram for Voxel:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + +

+Public Member Functions

Voxel (Eigen::Vector3d min_limits_, Eigen::Vector3d max_limits_)
 
+bool CheckCollision (Walker &walker, Eigen::Vector3d &step, double &tmax, Collision &colision)
 
+ + + + + + + +

+Public Attributes

+Eigen::Vector3d min_limits
 
+Eigen::Vector3d max_limits
 
+Plane walls [6]
 
+

Detailed Description

+

//! Main class. Implements basic voxel limits and operations. Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done.

+

The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_voxel.js b/doc/html/class_voxel.js new file mode 100644 index 0000000..75c2d51 --- /dev/null +++ b/doc/html/class_voxel.js @@ -0,0 +1,9 @@ +var class_voxel = +[ + [ "Voxel", "class_voxel.html#a5c7a2b788d03ad489a17c4a21da4c204", null ], + [ "Voxel", "class_voxel.html#acbb05a2f277a8ae7c59119eb3adf7e8c", null ], + [ "CheckCollision", "class_voxel.html#af52a1ec58a5244591c56963b28192748", null ], + [ "max_limits", "class_voxel.html#a5ffa055c53543ad2dd0944c0667b0787", null ], + [ "min_limits", "class_voxel.html#a8f82e23dc4dd9b0a3df065b876525fb4", null ], + [ "walls", "class_voxel.html#a9cce047be8fe658b21dbaef698b8b5ae", null ] +]; \ No newline at end of file diff --git a/doc/html/class_voxel__coll__graph.map b/doc/html/class_voxel__coll__graph.map new file mode 100644 index 0000000..ef79733 --- /dev/null +++ b/doc/html/class_voxel__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/class_voxel__coll__graph.md5 b/doc/html/class_voxel__coll__graph.md5 new file mode 100644 index 0000000..157c12b --- /dev/null +++ b/doc/html/class_voxel__coll__graph.md5 @@ -0,0 +1 @@ +cb68d1a39d0a4fa857ea9165ba62d5a0 \ No newline at end of file diff --git a/doc/html/class_voxel__coll__graph.png b/doc/html/class_voxel__coll__graph.png new file mode 100644 index 0000000..2eb80aa Binary files /dev/null and b/doc/html/class_voxel__coll__graph.png differ diff --git a/doc/html/class_walker-members.html b/doc/html/class_walker-members.html new file mode 100644 index 0000000..0c57327 --- /dev/null +++ b/doc/html/class_walker-members.html @@ -0,0 +1,162 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Walker Member List
+
+
+ +

This is the complete list of members for Walker, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bouncing enum value (defined in Walker)Walker
collision_sphere_cylindersWalker
collision_sphere_plyWalker
extra enum value (defined in Walker)Walker
extra_coll_countWalker
free enum value (defined in Walker)Walker
getIndex() const (defined in Walker)Walker
getInitialPosition(double &, double &, double &) const (defined in Walker)Walker
getInitialPosition(Eigen::Vector3d &) const (defined in Walker)Walker
getNextDirection(Eigen::Vector3d &) const (defined in Walker)Walker
getRealPosition(double &, double &, double &) const (defined in Walker)Walker
getRealPosition(Eigen::Vector3d &) const (defined in Walker)Walker
getVoxelPosition(double &, double &, double &) const (defined in Walker)Walker
getVoxelPosition(Eigen::Vector3d &) const (defined in Walker)Walker
in_obj_indexWalker
in_ply_indexWalker
indexWalker
ini_posWalker
initial_location (defined in Walker)Walker
initial_sphere_pos_vWalker
intra enum value (defined in Walker)Walker
intra_coll_countWalker
intra_extra_consensusWalker
last_pos_rWalker
last_pos_vWalker
locationWalker
next_directionWalker
on_edge enum value (defined in Walker)Walker
on_object enum value (defined in Walker)Walker
on_vertex enum value (defined in Walker)Walker
on_voxel enum value (defined in Walker)Walker
pos_rWalker
pos_r_logWalker
pos_vWalker
pos_v_logWalker
rejection_countWalker
RelativeLocation enum nameWalker
setIndex(unsigned int &) (defined in Walker)Walker
setInitialPosition(const double &, const double &, const double &) (defined in Walker)Walker
setInitialPosition(const Eigen::Vector3d &) (defined in Walker)Walker
setNextDirection(Eigen::Vector3d &) (defined in Walker)Walker
setNumberOfSteps(unsigned T) (defined in Walker)Walker
setRandomInitialPosition(const Eigen::Vector3d &min, const Eigen::Vector3d &max) (defined in Walker)Walker
setRealPosition(const double &, const double &, const double &) (defined in Walker)Walker
setRealPosition(const Eigen::Vector3d &) (defined in Walker)Walker
setRealPosLog(const Eigen::Vector3d &pos, unsigned t) (defined in Walker)Walker
setRealPosLog(double x, double y, double z, unsigned t) (defined in Walker)Walker
setVoxelPosition(const double &, const double &, const double &) (defined in Walker)Walker
setVoxelPosition(const Eigen::Vector3d &) (defined in Walker)Walker
setVoxPosLog(const Eigen::Vector3d &pos, unsigned t) (defined in Walker)Walker
setVoxPosLog(double x, double y, double z, unsigned t) (defined in Walker)Walker
state enum nameWalker
statusWalker
steps_countWalker
steps_per_secondWalker
unknown enum value (defined in Walker)Walker
Walker()Walker
Walker(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)Walker
~Walker()Walkerinline
+
+ + + + diff --git a/doc/html/class_walker.html b/doc/html/class_walker.html new file mode 100644 index 0000000..76ec37d --- /dev/null +++ b/doc/html/class_walker.html @@ -0,0 +1,759 @@ + + + + + + + +MCDC_simulator: Walker Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
Walker Class Reference
+
+
+ +

Spin Final class =============================================================/. + More...

+ +

#include <walker.h>

+
+Collaboration diagram for Walker:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + +

+Public Types

enum  state {
+  on_object, +on_edge, +on_vertex, +on_voxel, +
+  free, +bouncing +
+ }
 An enum. More...
 
enum  RelativeLocation { unknown, +intra, +extra + }
 An enum. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 Walker ()
 Default constructor. More...
 
 ~Walker ()
 
 Walker (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)
 Constructor. More...
 
+void getRealPosition (double &, double &, double &) const
 
+void getRealPosition (Eigen::Vector3d &) const
 
+void getVoxelPosition (double &, double &, double &) const
 
+void getVoxelPosition (Eigen::Vector3d &) const
 
+void getInitialPosition (double &, double &, double &) const
 
+void getInitialPosition (Eigen::Vector3d &) const
 
+void getNextDirection (Eigen::Vector3d &) const
 
+unsigned int getIndex () const
 
+void setRealPosition (const double &, const double &, const double &)
 
+void setRealPosition (const Eigen::Vector3d &)
 
+void setVoxelPosition (const double &, const double &, const double &)
 
+void setVoxelPosition (const Eigen::Vector3d &)
 
+void setInitialPosition (const double &, const double &, const double &)
 
+void setInitialPosition (const Eigen::Vector3d &)
 
+void setNextDirection (Eigen::Vector3d &)
 
+void setRandomInitialPosition (const Eigen::Vector3d &min, const Eigen::Vector3d &max)
 
+void setIndex (unsigned int &)
 
+void setRealPosLog (const Eigen::Vector3d &pos, unsigned t)
 
+void setRealPosLog (double x, double y, double z, unsigned t)
 
+void setVoxPosLog (const Eigen::Vector3d &pos, unsigned t)
 
+void setVoxPosLog (double x, double y, double z, unsigned t)
 
+void setNumberOfSteps (unsigned T)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

Eigen::Vector3d pos_r
 
Eigen::Vector3d pos_v
 
Eigen::Vector3d last_pos_r
 
Eigen::Vector3d last_pos_v
 
Eigen::Vector3d ini_pos
 
Eigen::Vector3d next_direction
 
Eigen::Matrix3Xd pos_r_log
 
Eigen::Matrix3Xd pos_v_log
 
int in_obj_index
 
int in_ply_index
 
CylinderCollisionSphere collision_sphere_cylinders
 
PLYCollisionSphere collision_sphere_ply
 
Eigen::Vector3d initial_sphere_pos_v
 
unsigned steps_count
 
state status
 
+RelativeLocation initial_location
 
RelativeLocation location
 
int intra_extra_consensus
 
unsigned intra_coll_count
 
unsigned extra_coll_count
 
unsigned int index
 
unsigned int rejection_count
 
float steps_per_second
 
+

Detailed Description

+

Spin Final class =============================================================/.

+

Basic unit of the diffusion process.

+
Author
Jonathan Rafael
+
Date
November 2016

0.2

+
+

Alias for a particle. Basic unit on the simulation process. Saves all the necessary information to perform the particles dynamics.

+

Member Enumeration Documentation

+ +

◆ RelativeLocation

+ +
+
+ + + + +
enum Walker::RelativeLocation
+
+ +

An enum.

+

Possible location of the walker inside the voxel. Checks illegal crossings of the barrier (border, lol)

+ +
+
+ +

◆ state

+ +
+
+ + + + +
enum Walker::state
+
+ +

An enum.

+

All the possibles states that a walker can be in a given step. The next step is perform according to this state

+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Walker() [1/2]

+ +
+
+ + + + + + + +
Walker::Walker ()
+
+ +

Default constructor.

+

Set all variables to cero.

+

Based class Walker.

+ +
+
+ +

◆ ~Walker()

+ +
+
+ + + + + +
+ + + + + + + +
Walker::~Walker ()
+
+inline
+
+

Default destructor.

+

Does nothing

+ +
+
+ +

◆ Walker() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Walker::Walker (double xmin,
double xmax,
double ymin,
double ymax,
double zmin,
double zmax 
)
+
+ +

Constructor.

+

Initialize the walker position in a random position inside the boundaries defined by the limits.

Parameters
+ + + + + +
xminlower x threshold
xmaxupper x threshold
yminlower y threshold
ymaxupper y threshold
+
+
+ +
+
+

Member Data Documentation

+ +

◆ collision_sphere_cylinders

+ +
+
+ + + + +
CylinderCollisionSphere Walker::collision_sphere_cylinders
+
+

Collision sphere for collition against cylidners

+ +
+
+ +

◆ collision_sphere_ply

+ +
+
+ + + + +
PLYCollisionSphere Walker::collision_sphere_ply
+
+

Collision sphere for collition against PLY meshes

+ +
+
+ +

◆ extra_coll_count

+ +
+
+ + + + +
unsigned Walker::extra_coll_count
+
+

counter of collision in the extra-side w/r the normal

+ +
+
+ +

◆ in_obj_index

+ +
+
+ + + + +
int Walker::in_obj_index
+
+

Auxiliar index to save if the walker was inside a convex object

+ +
+
+ +

◆ in_ply_index

+ +
+
+ + + + +
int Walker::in_ply_index
+
+

Auxiliar index to save if the walker was inside a convex ply object

+ +
+
+ +

◆ index

+ +
+
+ + + + +
unsigned int Walker::index
+
+

Walker identifier (id)

+ +
+
+ +

◆ ini_pos

+ +
+
+ + + + +
Eigen::Vector3d Walker::ini_pos
+
+

Walker intital position

+ +
+
+ +

◆ initial_sphere_pos_v

+ +
+
+ + + + +
Eigen::Vector3d Walker::initial_sphere_pos_v
+
+

Saves the intial positioon of the walker inside the collition sphere

+ +
+
+ +

◆ intra_coll_count

+ +
+
+ + + + +
unsigned Walker::intra_coll_count
+
+

counter of collision in the ïntra-side w/r the normal

+ +
+
+ +

◆ intra_extra_consensus

+ +
+
+ + + + +
int Walker::intra_extra_consensus
+
+

intra o extra position by face collision consensus w/r the normal

+ +
+
+ +

◆ last_pos_r

+ +
+
+ + + + +
Eigen::Vector3d Walker::last_pos_r
+
+

Walker voxel last position

+ +
+
+ +

◆ last_pos_v

+ +
+
+ + + + +
Eigen::Vector3d Walker::last_pos_v
+
+

Walker real last position

+ +
+
+ +

◆ location

+ +
+
+ + + + +
RelativeLocation Walker::location
+
+

location on the substrate (if known)

+ +
+
+ +

◆ next_direction

+ +
+
+ + + + +
Eigen::Vector3d Walker::next_direction
+
+

Auxiliar vector for special states cases, decides the next direction

+ +
+
+ +

◆ pos_r

+ +
+
+ + + + +
Eigen::Vector3d Walker::pos_r
+
+

Real walker position for collision, r stands for real

+ +
+
+ +

◆ pos_r_log

+ +
+
+ + + + +
Eigen::Matrix3Xd Walker::pos_r_log
+
+

log of the real spin position, used to compute the phase shift

+ +
+
+ +

◆ pos_v

+ +
+
+ + + + +
Eigen::Vector3d Walker::pos_v
+
+

Walker current position

+ +
+
+ +

◆ pos_v_log

+ +
+
+ + + + +
Eigen::Matrix3Xd Walker::pos_v_log
+
+

log of the voxel position, used for collision location and bouncing

+ +
+
+ +

◆ rejection_count

+ +
+
+ + + + +
unsigned int Walker::rejection_count
+
+

counter of the rejected directions in a single time-step

+ +
+
+ +

◆ status

+ +
+
+ + + + +
state Walker::status
+
+

state memeber

+ +
+
+ +

◆ steps_count

+ +
+
+ + + + +
unsigned Walker::steps_count
+
+

Counts the number of steps (including bouncings) made.

+ +
+
+ +

◆ steps_per_second

+ +
+
+ + + + +
float Walker::steps_per_second
+
+

Particles steps per second speeed.

+ +
+
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/class_walker.js b/doc/html/class_walker.js new file mode 100644 index 0000000..b4ab71f --- /dev/null +++ b/doc/html/class_walker.js @@ -0,0 +1,64 @@ +var class_walker = +[ + [ "RelativeLocation", "class_walker.html#a24246136a10754791b05cb570dbb8417", [ + [ "unknown", "class_walker.html#a24246136a10754791b05cb570dbb8417a1b75b0056750fa4af837e4bca9850277", null ], + [ "intra", "class_walker.html#a24246136a10754791b05cb570dbb8417a303a32add0e4c31f23066fec5c20068c", null ], + [ "extra", "class_walker.html#a24246136a10754791b05cb570dbb8417a04ece26f855d26697b35c11a8c94bd89", null ] + ] ], + [ "state", "class_walker.html#afcad3f5c11d0bd045de22fb0347dc44c", [ + [ "on_object", "class_walker.html#afcad3f5c11d0bd045de22fb0347dc44ca41a8748907223a8e17705338c674a253", null ], + [ "on_edge", "class_walker.html#afcad3f5c11d0bd045de22fb0347dc44ca6908bdc52b282a759803c8783f8d8727", null ], + [ "on_vertex", "class_walker.html#afcad3f5c11d0bd045de22fb0347dc44cac5bb87bf010e8b000a7139389fcaa9c3", null ], + [ "on_voxel", "class_walker.html#afcad3f5c11d0bd045de22fb0347dc44ca4f5ac98c949b25c9b1a5dbf03046a4b9", null ], + [ "free", "class_walker.html#afcad3f5c11d0bd045de22fb0347dc44ca329068c390790a83508199e9dde77cf7", null ], + [ "bouncing", "class_walker.html#afcad3f5c11d0bd045de22fb0347dc44ca8dfa4d363ad27d03c212b1a5c2431d4c", null ] + ] ], + [ "Walker", "class_walker.html#acc0931305bedcf81ff621c31cdf2a92c", null ], + [ "~Walker", "class_walker.html#a562c14b600628c18ac689464bd0f7e35", null ], + [ "Walker", "class_walker.html#ada366966172eec6916690c01ac8f01db", null ], + [ "getIndex", "class_walker.html#a37969cac5ade61c75fb7407b56b535da", null ], + [ "getInitialPosition", "class_walker.html#a0341476db76d217c0eec89b5f786dc87", null ], + [ "getInitialPosition", "class_walker.html#a3aa5f7410325a5fc1096684e215e4e3f", null ], + [ "getNextDirection", "class_walker.html#adf89d9d3c6cd537d2587e51775f9b6ad", null ], + [ "getRealPosition", "class_walker.html#a682ea5a26950ba7a563ebbf1d1cfe62e", null ], + [ "getRealPosition", "class_walker.html#a85bf9ae51ffcfa9c797ac863bb0ed58a", null ], + [ "getVoxelPosition", "class_walker.html#a01b46473c4c9126531f86084644be87b", null ], + [ "getVoxelPosition", "class_walker.html#aae6ee54e7ca18144ebc63ae30184ac57", null ], + [ "setIndex", "class_walker.html#aa6643451a4e13c1d7e121fe710a3bade", null ], + [ "setInitialPosition", "class_walker.html#a06a696a95f7678cb76be214e90e64337", null ], + [ "setInitialPosition", "class_walker.html#aafa361803280bc080049ea153867b61d", null ], + [ "setNextDirection", "class_walker.html#abdeb613b765c45fdabe2891accdbdfb6", null ], + [ "setNumberOfSteps", "class_walker.html#a288f810ee9e4de79a7fe9224de7438b3", null ], + [ "setRandomInitialPosition", "class_walker.html#aefd71f5bc3303af7e7748bcac5b6ce92", null ], + [ "setRealPosition", "class_walker.html#a47cb165188d588ea04f090648b091654", null ], + [ "setRealPosition", "class_walker.html#ad25cfee48c03072212d9034069002819", null ], + [ "setRealPosLog", "class_walker.html#a1fff7bf0f8dde00b9909891f060ac009", null ], + [ "setRealPosLog", "class_walker.html#a00a41d2b11cfeffae9ea66f4ea80a568", null ], + [ "setVoxelPosition", "class_walker.html#a4d87112b21f490f19e7b942ca94aae20", null ], + [ "setVoxelPosition", "class_walker.html#aba1f54b57de786fe550ebfcf9f4a7e31", null ], + [ "setVoxPosLog", "class_walker.html#adc7b7500ea403ce7dba872ef729c2c40", null ], + [ "setVoxPosLog", "class_walker.html#adb197a756c457adc604b6605111e9b92", null ], + [ "collision_sphere_cylinders", "class_walker.html#a28d139085430c9a11e0a70be2c3083af", null ], + [ "collision_sphere_ply", "class_walker.html#a8aecfb76c9007eb6da99b024bc5e425d", null ], + [ "extra_coll_count", "class_walker.html#a28c595f6f6b4c32bed6afb177c0a6608", null ], + [ "in_obj_index", "class_walker.html#adf221f7a635c09cfaafc0dab5aa38106", null ], + [ "in_ply_index", "class_walker.html#a48d0fe08f2297d9ad56cfaec9ee1926c", null ], + [ "index", "class_walker.html#a58e2d14d760748687138b7582cd04365", null ], + [ "ini_pos", "class_walker.html#a98116f0e5d65e1cf65449d80a2d87617", null ], + [ "initial_location", "class_walker.html#aa80fe894bc14568bdc296083ca5e5492", null ], + [ "initial_sphere_pos_v", "class_walker.html#a8a27ead68d3dc7140afbec2710fb3176", null ], + [ "intra_coll_count", "class_walker.html#a8ca6c90f124e46869ea752920565e2c2", null ], + [ "intra_extra_consensus", "class_walker.html#aa211ac1f9a396b1bf3b565e0f8ed098a", null ], + [ "last_pos_r", "class_walker.html#a8c78216899e04e9439a991cbad9df36f", null ], + [ "last_pos_v", "class_walker.html#a2d50601346a754183b38890c18e7a6e7", null ], + [ "location", "class_walker.html#a77f5c801c38158bb8568f75a22baed20", null ], + [ "next_direction", "class_walker.html#ad1629485a13c80367a563ed7b88149eb", null ], + [ "pos_r", "class_walker.html#a1008a95833c1f74b53f02e57e84417b7", null ], + [ "pos_r_log", "class_walker.html#a1ba5a46fddf62eb3eeaabc7c868afe07", null ], + [ "pos_v", "class_walker.html#a2c1bf5a8da9e8f3a230a22ab4ae0e373", null ], + [ "pos_v_log", "class_walker.html#a62d99cc92226681123be94e64fb2bf7b", null ], + [ "rejection_count", "class_walker.html#a38669698192d39146c77011b69b1e372", null ], + [ "status", "class_walker.html#afa37629b74387435a0bb02e0c061a718", null ], + [ "steps_count", "class_walker.html#a83536011f160b42f6c39f121ee550731", null ], + [ "steps_per_second", "class_walker.html#a7f33d06b7aa5fabf2a2ac15d119bbcc7", null ] +]; \ No newline at end of file diff --git a/doc/html/class_walker__coll__graph.map b/doc/html/class_walker__coll__graph.map new file mode 100644 index 0000000..93ab64f --- /dev/null +++ b/doc/html/class_walker__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doc/html/class_walker__coll__graph.md5 b/doc/html/class_walker__coll__graph.md5 new file mode 100644 index 0000000..f821a95 --- /dev/null +++ b/doc/html/class_walker__coll__graph.md5 @@ -0,0 +1 @@ +b6efca388db9c7ee2a403e6b8741b5a0 \ No newline at end of file diff --git a/doc/html/class_walker__coll__graph.png b/doc/html/class_walker__coll__graph.png new file mode 100644 index 0000000..895dd17 Binary files /dev/null and b/doc/html/class_walker__coll__graph.png differ diff --git a/doc/html/classes.html b/doc/html/classes.html new file mode 100644 index 0000000..ec30d38 --- /dev/null +++ b/doc/html/classes.html @@ -0,0 +1,127 @@ + + + + + + + +MCDC_simulator: Class Index + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
c | d | g | m | o | p | s | t | v | w
+ + + + + + + + + + + + + + +
  c  
+
  g  
+
Parameter   Sentinel (sentinels)   Voxel   
Parameters   Sentinels   
  w  
+
Collision   GradientWaveform   PGSESequence   SimErrno   
Collisionsphere   
  m  
+
Plane   SimulableSequence   Walker   
Collisionspheren   PLYCollisionSphere   Subdivision   
Cylinder   MCSimulation   PLYObstacle   
  t  
+
CylinderCollisionSphere   
  o  
+
Propagator   
CylinderGammaDistribution   
  s  
+
Trajectory   
  d  
+
Obstacle   Triangle   
  p  
+
Scheme   
  v  
+
DynamicsSimulation   
ParallelMCSimulation   Vertex   
+
c | d | g | m | o | p | s | t | v | w
+
+
+ + + + diff --git a/doc/html/classsentinels_1_1_sentinel-members.html b/doc/html/classsentinels_1_1_sentinel-members.html new file mode 100644 index 0000000..276c8fa --- /dev/null +++ b/doc/html/classsentinels_1_1_sentinel-members.html @@ -0,0 +1,125 @@ + + + + + + + +MCDC_simulator: Member List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
sentinels::Sentinel Member List
+
+
+ +

This is the complete list of members for sentinels::Sentinel, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
bouncings (defined in sentinels::Sentinel)sentinels::Sentinel
checkErrors(Walker &w, const Parameters &params, bool noPLY, unsigned &bouncing_count) (defined in sentinels::Sentinel)sentinels::Sentinel
clear() (defined in sentinels::Sentinel)sentinels::Sentinel
crossed enum value (defined in sentinels::Sentinel)sentinels::Sentinel
deport_illegals (defined in sentinels::Sentinel)sentinels::Sentinel
deportationProcess(Walker &walker, unsigned &w, unsigned &t, bool &back_tracking, Parameters &params, int id) (defined in sentinels::Sentinel)sentinels::Sentinel
discard_stucks (defined in sentinels::Sentinel)sentinels::Sentinel
error (defined in sentinels::Sentinel)sentinels::Sentinel
ErrorCases enum name (defined in sentinels::Sentinel)sentinels::Sentinel
illegal_count (defined in sentinels::Sentinel)sentinels::Sentinel
none enum value (defined in sentinels::Sentinel)sentinels::Sentinel
obstacle_id (defined in sentinels::Sentinel)sentinels::Sentinel
rejected enum value (defined in sentinels::Sentinel)sentinels::Sentinel
rejected_count (defined in sentinels::Sentinel)sentinels::Sentinel
rejected_initial_pos enum value (defined in sentinels::Sentinel)sentinels::Sentinel
rejected_step (defined in sentinels::Sentinel)sentinels::Sentinel
Sentinel() (defined in sentinels::Sentinel)sentinels::Sentinel
setBouncingError(unsigned bouncings) (defined in sentinels::Sentinel)sentinels::Sentinel
setCrossingError(unsigned) (defined in sentinels::Sentinel)sentinels::Sentinel
setRejectedError() (defined in sentinels::Sentinel)sentinels::Sentinel
stuck enum value (defined in sentinels::Sentinel)sentinels::Sentinel
stuck_count (defined in sentinels::Sentinel)sentinels::Sentinel
+
+ + + + diff --git a/doc/html/classsentinels_1_1_sentinel.html b/doc/html/classsentinels_1_1_sentinel.html new file mode 100644 index 0000000..043ff10 --- /dev/null +++ b/doc/html/classsentinels_1_1_sentinel.html @@ -0,0 +1,175 @@ + + + + + + + +MCDC_simulator: sentinels::Sentinel Class Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+ +
+
sentinels::Sentinel Class Reference
+
+
+ + + + +

+Public Types

enum  ErrorCases {
+  none, +stuck, +crossed, +rejected, +
+  rejected_initial_pos +
+ }
 
+ + + + + + + + + + + + + +

+Public Member Functions

+void clear ()
 
+void setBouncingError (unsigned bouncings)
 
+void setCrossingError (unsigned)
 
+void setRejectedError ()
 
+bool checkErrors (Walker &w, const Parameters &params, bool noPLY, unsigned &bouncing_count)
 
+void deportationProcess (Walker &walker, unsigned &w, unsigned &t, bool &back_tracking, Parameters &params, int id)
 
+ + + + + + + + + + + + + + + + + + + +

+Public Attributes

+unsigned stuck_count
 
+unsigned illegal_count
 
+unsigned bouncings
 
+unsigned obstacle_id
 
+unsigned rejected_count
 
+bool rejected_step
 
+bool deport_illegals
 
+bool discard_stucks
 
+ErrorCases error
 
+
The documentation for this class was generated from the following files: +
+
+ + + + diff --git a/doc/html/classsentinels_1_1_sentinel.js b/doc/html/classsentinels_1_1_sentinel.js new file mode 100644 index 0000000..1949064 --- /dev/null +++ b/doc/html/classsentinels_1_1_sentinel.js @@ -0,0 +1,26 @@ +var classsentinels_1_1_sentinel = +[ + [ "ErrorCases", "classsentinels_1_1_sentinel.html#a82dc9b174c5d4c23b747b083f6ba7dbd", [ + [ "none", "classsentinels_1_1_sentinel.html#a82dc9b174c5d4c23b747b083f6ba7dbda2382d7edabe5b82666518970902ce0a5", null ], + [ "stuck", "classsentinels_1_1_sentinel.html#a82dc9b174c5d4c23b747b083f6ba7dbdae53f3f8847351776cd601de49c7d915a", null ], + [ "crossed", "classsentinels_1_1_sentinel.html#a82dc9b174c5d4c23b747b083f6ba7dbda21d6240134dcfedeb9f31d603704aaa6", null ], + [ "rejected", "classsentinels_1_1_sentinel.html#a82dc9b174c5d4c23b747b083f6ba7dbdace66c786e23d925dca9ef11d4afcb78e", null ], + [ "rejected_initial_pos", "classsentinels_1_1_sentinel.html#a82dc9b174c5d4c23b747b083f6ba7dbda2b0e59b3dbf70bf823e695b17c822cbd", null ] + ] ], + [ "Sentinel", "classsentinels_1_1_sentinel.html#aae2f776368f864208264fdbe3a90ecdb", null ], + [ "checkErrors", "classsentinels_1_1_sentinel.html#a43d8a814622b8c3ad0290d7cc2c7202e", null ], + [ "clear", "classsentinels_1_1_sentinel.html#ad292b3700a6f7172e31aba2c3c57d800", null ], + [ "deportationProcess", "classsentinels_1_1_sentinel.html#aabce46b0d258a94d0401d80904e3b1f4", null ], + [ "setBouncingError", "classsentinels_1_1_sentinel.html#a88cb42ad4144fcd6079117fe71e762ed", null ], + [ "setCrossingError", "classsentinels_1_1_sentinel.html#a19710e1e2a694442d64772c63307c110", null ], + [ "setRejectedError", "classsentinels_1_1_sentinel.html#a75fbb7413866ebf130fd6d28fa4a77b9", null ], + [ "bouncings", "classsentinels_1_1_sentinel.html#a117da1c60b611dcf0780f21b9b4bcfff", null ], + [ "deport_illegals", "classsentinels_1_1_sentinel.html#af1f6fc70d0048859742b3df027b1e775", null ], + [ "discard_stucks", "classsentinels_1_1_sentinel.html#ae542b64ba62eabadab040447ae23f960", null ], + [ "error", "classsentinels_1_1_sentinel.html#a1c163213e6a40e1d935d5eb6333b5b62", null ], + [ "illegal_count", "classsentinels_1_1_sentinel.html#ae63b02f83c9738eb01a85268279ebb52", null ], + [ "obstacle_id", "classsentinels_1_1_sentinel.html#a934aa2e258cfed479b293bd6fa546b4d", null ], + [ "rejected_count", "classsentinels_1_1_sentinel.html#aa1711693186810c3b3db9d6d25d43373", null ], + [ "rejected_step", "classsentinels_1_1_sentinel.html#abf75c99c36d1155320b934ae2f9a8f82", null ], + [ "stuck_count", "classsentinels_1_1_sentinel.html#a7c588d3516d0576ccd319cfffa2ba1ee", null ] +]; \ No newline at end of file diff --git a/doc/html/closed.png b/doc/html/closed.png new file mode 100644 index 0000000..98cc2c9 Binary files /dev/null and b/doc/html/closed.png differ diff --git a/doc/html/collision_8h_source.html b/doc/html/collision_8h_source.html new file mode 100644 index 0000000..4a698dc --- /dev/null +++ b/doc/html/collision_8h_source.html @@ -0,0 +1,117 @@ + + + + + + + +MCDC_simulator: src/collision.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
collision.h
+
+
+
1 
8 #ifndef COLLISION_H
9 #define COLLISION_H
10 #include <Eigen/Core>
11 
19 class Collision{
20 public:
22 
25  enum collision_type{hit,near,null,boundary,degenerate};
26 
28 
31  enum collision_location{inside, on_edge, on_vertex, voxel, outside,unknown};
32 
35  Eigen::Vector3d colision_point;
36  Eigen::Vector3d bounced_direction;
38  double rn;
40  double u;
41  double v;
42  double t;
52  Collision():u(0),v(0),t(1e15),triangle_ind(-1),obstacle_ind(-1){type=null;col_location=unknown;}
53 
61  Collision(double u_,double v_,double t_):u(u_),v(v_),t(t_),triangle_ind(-1),obstacle_ind(-1){}
62 
64 
66  ~Collision();
67 
70 
74 
77 
81 
82 };
83 
84 
85 #endif // COLLISION_H
double v
Definition: collision.h:41
+
int obstacle_ind
Definition: collision.h:46
+
Eigen::Vector3d colision_point
Definition: collision.h:35
+
collision_location
Definition: collision.h:31
+
collision_type
Definition: collision.h:25
+
collision_location col_location
Definition: collision.h:34
+
int triangle_ind
Definition: collision.h:44
+
~Collision()
Does nothing.
Definition: collision.cpp:5
+
double t
Definition: collision.h:42
+
void computeCollisionLocation()
Computes, based on the the coordinates u,v,t of the collision, the location relative to the triangle...
Definition: collision.cpp:24
+
double rn
Definition: collision.h:38
+
Eigen::Vector3d bounced_direction
Definition: collision.h:36
+
bool doIHaveMorePiorityThan(Collision &coll)
Compares a second collision to determine which one has more priority. The comparison is based on the ...
Definition: collision.cpp:11
+
collision_type type
Definition: collision.h:33
+
Collision Final class =====================================================================/.
Definition: collision.h:19
+
double u
Definition: collision.h:40
+
+
+ + + + diff --git a/doc/html/collisionsphere_8h_source.html b/doc/html/collisionsphere_8h_source.html new file mode 100644 index 0000000..31d19f8 --- /dev/null +++ b/doc/html/collisionsphere_8h_source.html @@ -0,0 +1,111 @@ + + + + + + + +MCDC_simulator: src/collisionsphere.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
collisionsphere.h
+
+
+
1 
10 #ifndef COLLISIONSPHERE_H
11 #define COLLISIONSPHERE_H
12 #include <vector>
13 
24 {
25 public:
26 
30  unsigned list_size;
31 
32  Collisionsphere():big_sphere_distance(0),small_sphere_distance(0),list_size(0){}
33 };
34 
39 
40 public:
41 
45  std::vector<unsigned>* collision_list;
48 
51 
54  void popFromSmallSphere(unsigned i);
55 
58 
61  void pushToSmallSphere(unsigned i);
62 
65 
68  void popFromBigSphere(unsigned i);
69 
72 
75  void pushToBigSphere(unsigned i);
76 
78 
80  void setBigSphereSize(float size);
81 
83 
85  void setSmallSphereSize(float size);
86 
88 
90  void push_index(unsigned int element);
91 
92 };
93 
99 
100 public:
101 
102  std::vector<unsigned> small_sphere_list_end;
103  std::vector<unsigned> big_sphere_list_end;
105  std::vector<std::vector<unsigned>>* collision_list;
108 
111 
114  void popFromSmallSphere(unsigned i,unsigned t);
117 
122  void pushToSmallSphere(unsigned i,unsigned t);
124 
129  void popFromBigSphere(unsigned i,unsigned t);
130 
133 
136  void pushToBigSphere(unsigned i,unsigned t);
137 
139 
141  void setBigSphereSize(float size);
142 
144 
146  void setSmallSphereSize(float size);
147 
149 
151  void push_ply(std::vector<unsigned> list);
152 
153 };
154 
155 #endif // COLLISIONSPHERE_H
Class to save the cylinderical obstacles that a can collide to a walker.
Definition: collisionsphere.h:38
+
unsigned small_sphere_list_end
Definition: collisionsphere.h:42
+
std::vector< std::vector< unsigned > > * collision_list
Definition: collisionsphere.h:105
+
Definition: collisionsphere.h:98
+
std::vector< unsigned > big_sphere_list_end
Definition: collisionsphere.h:103
+
float small_sphere_distance
Definition: collisionsphere.h:28
+
unsigned big_sphere_list_end
Definition: collisionsphere.h:43
+
std::vector< unsigned > small_sphere_list_end
Definition: collisionsphere.h:102
+
Definition: collisionsphere.h:23
+
float big_sphere_distance
Definition: collisionsphere.h:27
+
+
+ + + + diff --git a/doc/html/constants_8h_source.html b/doc/html/constants_8h_source.html new file mode 100644 index 0000000..c9014c1 --- /dev/null +++ b/doc/html/constants_8h_source.html @@ -0,0 +1,101 @@ + + + + + + + +MCDC_simulator: src/constants.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
constants.h
+
+
+
1 
9 #ifndef CONSTANTS_H
10 #define CONSTANTS_H
11 
12 #include <stdio.h>
13 #include <string>
14 #include <limits>
15 #define PRINT_EXPETED_TIME 1
16 
17 
18 #define SH_BG_RED "\033[1;41m"
19 #define SH_BG_LIGHT_YELLOW "\033[1;43m"
20 #define SH_FG_LIGHT_RED "\033[1;31m"
21 #define SH_FG_LIGHT_YELLOW "\033[1;33m"
22 #define SH_FG_PURPLE "\033[1;35m"
23 #define SH_FG_GRAY "\033[0;47m"
24 #define SH_FG_GREEN "\033[0;32m"
25 #define SH_DEFAULT "\033[0m"
26 
27 #define VERSION_ID "1.44.004"
28 
29 const double m_to_mm = 1e3;
30 const double s_to_ms = 1e3;
31 const double EPS_VAL = 1e-15;
32 const double m2_to_mm2 = 1e6;
33 const double giro = 267.51525e3;
34 const double DIFF_CONST = 2.02e-7;
35 const double barrier_tickness = 1e-6;
36 const double max_number_bouncings = 10000.0;
37 const double triangle_eps = 1e-10;
38 const unsigned max_rejections =25;
39 const double INFINITY_VALUE = std::numeric_limits<double>::infinity();
41 #ifdef _WIN64
42 typedef unsigned int ulong;
43 typedef unsigned int uint;
44 #ifndef M_PI
45  #define M_PI 3.14159265358979323846
46 #endif
47 #elif __APPLE__
48 typedef unsigned int ulong;
49 #endif
50 
52 #define PRECISE_T_MIN_D 0
53 
55 //const double outher_col_dist_factor = 5.0;
56 
58 const double inner_col_dist_factor = 0.25;
59 
60 
61 #endif // CONSTANTS_H
+
+ + + + diff --git a/doc/html/cylinder_8h_source.html b/doc/html/cylinder_8h_source.html new file mode 100644 index 0000000..378a807 --- /dev/null +++ b/doc/html/cylinder_8h_source.html @@ -0,0 +1,112 @@ + + + + + + + +MCDC_simulator: src/cylinder.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
cylinder.h
+
+
+
1 
11 #ifndef CYLINDER_H
12 #define CYLINDER_H
13 
14 #include "obstacle.h"
15 
16 
17 class Cylinder : public Obstacle
18 {
19 public:
20 
21  static int count;
22 
23  Eigen::Vector3d P,Q;
24  Eigen::Vector3d D;
25  double radius;
30  Cylinder();
31 
32  ~Cylinder();
33 
41  Cylinder(Eigen::Vector3d P_, Eigen::Vector3d Q_, double radius_, double scale = 1):P(P_*scale),Q(Q_*scale),radius(radius_*scale){
42  D = (Q_-P_).normalized();
43  Q = P+D;
44  id = count++;
45  }
46 
54  Cylinder(Cylinder const &cyl);
55 
64  bool checkCollision(Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision);
65 
71  double minDistance(Walker &w);
72 
73 private:
74 
81  inline bool handleCollition(Walker& walker, Collision &colision, Eigen::Vector3d& step,double& a,double& b, double& c,double& discr,double& step_length);
82 
83 };
84 
85 #endif // CYLINDER_H
Cylinder()
Default constructor. Does nothing.
Definition: cylinder.cpp:9
+
Eigen::Vector3d Q
Definition: cylinder.h:23
+
double radius
Definition: cylinder.h:25
+
Cylinder Obstacle Derived Class =============================================================/.
Definition: cylinder.h:17
+
bool checkCollision(Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision)
Basic collision function. Returns the if there was any collision on against the obstacle.
Definition: cylinder.cpp:30
+
Collision Final class =====================================================================/.
Definition: collision.h:19
+
Obstacle Base Class ==============================================================================/.
Definition: obstacle.h:14
+
Spin Final class =============================================================/.
Definition: walker.h:23
+
double minDistance(Walker &w)
Returns the minimum distance from the walker to the cylinder. Used to set the reachable cylinders tha...
Definition: cylinder.cpp:166
+
Cylinder(Eigen::Vector3d P_, Eigen::Vector3d Q_, double radius_, double scale=1)
Initialize everything.
Definition: cylinder.h:41
+
Eigen::Vector3d D
Definition: cylinder.h:24
+
+
+ + + + diff --git a/doc/html/cylindergammadistribution_8h_source.html b/doc/html/cylindergammadistribution_8h_source.html new file mode 100644 index 0000000..5b8287b --- /dev/null +++ b/doc/html/cylindergammadistribution_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +MCDC_simulator: src/cylindergammadistribution.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
cylindergammadistribution.h
+
+
+
1 
10 #ifndef CYLINDERGAMMADISTRIBUTION_H
11 #define CYLINDERGAMMADISTRIBUTION_H
12 
13 #include "Eigen/Core"
14 #include <vector>
15 #include "constants.h"
16 #include "simerrno.h"
17 #include <iostream>
18 #include "cylinder.h"
19 
21 {
22 public:
23 
24  unsigned num_cylinders;
25  double alpha;
26  double beta;
27  double icvf;
28  float min_radius;
30  Eigen::Vector3d min_limits;
31  Eigen::Vector3d max_limits;
32  std::vector<Cylinder> cylinders;
41  CylinderGammaDistribution(unsigned, double, double, double, Eigen::Vector3d &, Eigen::Vector3d &, float min_radius);
42 
47 
51  void createGammaSubstrate();
52 
57  void printSubstrate(std::ostream& out);
58 
59 private:
60 
69  bool checkForCollition(Cylinder cyl, Eigen::Vector3d min_limits, Eigen::Vector3d max_limits, std::vector<Cylinder>& cylinders_list, double &min_distance);
70 
78  void checkBoundaryConditions(Cylinder cyl, std::vector<Cylinder>& cylinders_list, Eigen::Vector3d min_limits, Eigen::Vector3d max_limits);
79 
86  double computeICVF(std::vector<Cylinder> &cylinders, Eigen::Vector3d &min_limits, Eigen::Vector3d &max_limits, int &num_no_repeat);
87 
88  void computeMinimalSize(std::vector<double> radiis, double icvf_, Eigen::Vector3d& l);
89 
90 
91 };
92 
93 #endif // CYLINDERGAMMADISTRIBUTION_H
float min_radius
Definition: cylindergammadistribution.h:28
+
CylinderGammaDistribution Class =============================================================/.
Definition: cylindergammadistribution.h:20
+
double icvf
Definition: cylindergammadistribution.h:27
+
Eigen::Vector3d max_limits
Definition: cylindergammadistribution.h:31
+
Eigen::Vector3d min_limits
Definition: cylindergammadistribution.h:30
+
void printSubstrate(std::ostream &out)
Prints the cylinders positions in a file or output stream.
Definition: cylindergammadistribution.cpp:186
+
CylinderGammaDistribution(unsigned, double, double, double, Eigen::Vector3d &, Eigen::Vector3d &, float min_radius)
Initialize everything.
Definition: cylindergammadistribution.cpp:8
+
Cylinder Obstacle Derived Class =============================================================/.
Definition: cylinder.h:17
+
std::vector< Cylinder > cylinders
Definition: cylindergammadistribution.h:32
+
void createGammaSubstrate()
Samples and constructs a Gamma distribution.
Definition: cylindergammadistribution.cpp:67
+
double alpha
Definition: cylindergammadistribution.h:25
+
unsigned num_cylinders
Definition: cylindergammadistribution.h:24
+
void displayGammaDistribution()
Shows a small histogram of the gamma distribution.
Definition: cylindergammadistribution.cpp:39
+
double beta
Definition: cylindergammadistribution.h:26
+
+
+ + + + diff --git a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000..b4b9d81 --- /dev/null +++ b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,101 @@ + + + + + + + +MCDC_simulator: src Directory Reference + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
src Directory Reference
+
+
+
+
+ + + + diff --git a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js new file mode 100644 index 0000000..4f47501 --- /dev/null +++ b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js @@ -0,0 +1,27 @@ +var dir_68267d1309a1af8e8297ef4c3efbcdba = +[ + [ "collision.h", "collision_8h_source.html", null ], + [ "collisionsphere.h", "collisionsphere_8h_source.html", null ], + [ "constants.h", "constants_8h_source.html", null ], + [ "cylinder.h", "cylinder_8h_source.html", null ], + [ "cylindergammadistribution.h", "cylindergammadistribution_8h_source.html", null ], + [ "dynamicsSimulation.h", "dynamics_simulation_8h_source.html", null ], + [ "gradientwaveform.h", "gradientwaveform_8h_source.html", null ], + [ "mcsimulation.h", "mcsimulation_8h_source.html", null ], + [ "obstacle.h", "obstacle_8h_source.html", null ], + [ "parallelmcsimulation.h", "parallelmcsimulation_8h_source.html", null ], + [ "parameters.h", "parameters_8h_source.html", null ], + [ "pgsesequence.h", "pgsesequence_8h_source.html", null ], + [ "plyobstacle.h", "plyobstacle_8h_source.html", null ], + [ "propagator.h", "propagator_8h_source.html", null ], + [ "scheme.h", "scheme_8h_source.html", null ], + [ "sentinel.h", "sentinel_8h_source.html", null ], + [ "simerrno.h", "simerrno_8h_source.html", null ], + [ "simulablesequence.h", "simulablesequence_8h_source.html", null ], + [ "subdivision.h", "subdivision_8h_source.html", null ], + [ "trajectory.h", "trajectory_8h_source.html", null ], + [ "triangle.h", "triangle_8h_source.html", null ], + [ "vertex.h", "vertex_8h_source.html", null ], + [ "voxel.h", "voxel_8h_source.html", null ], + [ "walker.h", "walker_8h_source.html", null ] +]; \ No newline at end of file diff --git a/doc/html/doc.png b/doc/html/doc.png new file mode 100644 index 0000000..17edabf Binary files /dev/null and b/doc/html/doc.png differ diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css new file mode 100644 index 0000000..4f1ab91 --- /dev/null +++ b/doc/html/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.13 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/doc/html/doxygen.png b/doc/html/doxygen.png new file mode 100644 index 0000000..3ff17d8 Binary files /dev/null and b/doc/html/doxygen.png differ diff --git a/doc/html/dynamics_simulation_8h_source.html b/doc/html/dynamics_simulation_8h_source.html new file mode 100644 index 0000000..99c4134 --- /dev/null +++ b/doc/html/dynamics_simulation_8h_source.html @@ -0,0 +1,140 @@ + + + + + + + +MCDC_simulator: src/dynamicsSimulation.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
dynamicsSimulation.h
+
+
+
1 
9 #ifndef DynamicsSimulation_H
10 #define DynamicsSimulation_H
11 
12 #include "walker.h"
13 #include <string>
14 #include "Eigen/Core"
15 #include <iostream>
16 #include <random>
17 #include "trajectory.h"
18 #include "simulablesequence.h"
19 #include "parameters.h"
20 #include "plyobstacle.h"
21 #include "voxel.h"
22 #include "cylinder.h"
23 #include "sentinel.h"
24 #include "propagator.h"
25 
26 
31 {
32 
33 public:
37  std::mt19937 mt;
38  double step_lenght;
39  double second_passed;
41  double completed;
42  std::string ini_pos_file;
44  int id;
46  std::vector <PLYObstacle>* plyObstacles_list;
47  std::vector <Cylinder>* cylinders_list;
48  std::vector<unsigned> cylinders_deque;
49  std::vector<std::vector<unsigned>> ply_deque;
50  std::vector <Voxel> voxels_list;
52  double icvf;
53  unsigned intra_tries, total_tries;
55  /****** Auxiliar variables ********/
56  Eigen::Vector3d step;
57 
58  double time_step, time_dt, last_time_dt;
60  std::ifstream iniPos;
61 
62  time_t start,now;
68  unsigned aux_walker_index;
69  /****** END Auxiliar variables ********/
70 
71 
76 
81  DynamicsSimulation(std::string conf_file);
82 
88 
90 
93 
98  void startSimulation(SimulableSequence* dataSynth = nullptr);
99 
104  void readConfigurationFile(std::string conf_file_path);
105 
106  //SET VALUES FUNCTIONS
111  void setDuration(const double& duration);
112 
117  void setWalkersNum(const unsigned& N);
118 
123  void setStepsNum(const unsigned &T);
124 
125 
126  static std::string secondsToMinutes(double);
127 
135  bool isInIntra(Eigen::Vector3d& position, int& cyl_id, int& ply_id,double distance_to_be_intra_ply=1e-6);
136 
140  void writePropagator(std::string path);
141 
142  bool isInsideCylinders(Eigen::Vector3d& position,int& cyl_id,double distance_to_be_inside=1e-6);
143 
144  bool isInsidePLY(Eigen::Vector3d& position,int& ply_id,double distance_to_be_inside=1e-6);
145 
146 
147 private:
154  inline void generateStep(Eigen::Vector3d& step , double l);
155 
161  inline void generateDirectedStep(Eigen::Vector3d& new_step , Eigen::Vector3d &direction);
162 
169  bool updateWalkerPosition(Eigen::Vector3d&step);
170 
180  inline bool checkObstacleCollision(Eigen::Vector3d& amended_step, double &tmax, Eigen::Vector3d &end_point, Collision &colision);
181 
191  inline bool updateWalkerPositionAndHandleBouncing(Eigen::Vector3d& amended_step, double& tmax, Collision& colision);
192 
201  inline void handleCollisions(Collision &colision, Collision &colision_tmp, double &max_collision_distance, unsigned indx);
202 
207  inline void mapWalkerIntoVoxel(Eigen::Vector3d &amended_step, Collision &colision, double barrier_thickness);
208 
218  inline void getTimeDt(double &last_time_dt, double& time_dt, double& l, SimulableSequence* dataSynth, unsigned t, double time_step);
219 
223  inline void initSimulation();
224 
229  inline bool expectedTimeAndMaxTimeCheck(unsigned w);
230 
235  inline void writeDWSignal(SimulableSequence *dataSynth);
236 
242  inline void iniWalkerPosition();
243 
248  inline void updateWalkerObstacleIndexes(unsigned t_);
249 
254  inline void initWalkerObstacleIndexes();
255 
260  inline void updateCollitionSphere(unsigned t);
261 
266  inline void getAnIntraCellularPosition(Eigen::Vector3d& intra_pos, int &cyl_ind, int &ply_ind);
267 
272  inline void getAnExtraCellularPosition(Eigen::Vector3d& extra_pos);
273 
278  inline bool checkIfPosInsideVoxel(Eigen::Vector3d& pos);
279 
284  inline void initObstacleInformation();
285 
289  inline void updatePropagator(Eigen::Matrix3Xd& log_pos_r);
290 
291 
296  inline void normalizePropagator(float num_samples);
297 
298  inline void computeICVF();
299 
300  inline bool finalPositionCheck();
301 
302 
303 
304 };
305 
306 
307 #endif //DynamicsSimulation_H
unsigned num_simulated_walkers
Definition: dynamicsSimulation.h:66
+
Definition: sentinel.h:20
+
Definition: propagator.h:9
+
DynamicsSimulation()
Default constructor. Initialize everything with 0&#39;s and NULL states, object indexes are set to -1...
Definition: dynamicsSimulation.cpp:33
+
double max_simulation_time
Definition: dynamicsSimulation.h:40
+
void startSimulation(SimulableSequence *dataSynth=nullptr)
Starts the dynamics simulation and, if a PGSE sequence is given, computes the DW signal.
Definition: dynamicsSimulation.cpp:810
+
std::vector< std::vector< unsigned > > ply_deque
Definition: dynamicsSimulation.h:49
+
void writePropagator(std::string path)
Writes to disk the final propagator matrix.
Definition: dynamicsSimulation.cpp:222
+
Definition: parameters.h:22
+
bool print_expected_time
Definition: dynamicsSimulation.h:64
+
Parameters params
Definition: dynamicsSimulation.h:34
+
Walker walker
Definition: dynamicsSimulation.h:35
+
sentinels::Sentinel sentinela
Definition: dynamicsSimulation.h:45
+
double second_passed
Definition: dynamicsSimulation.h:39
+
unsigned ini_pos_file_ini_index
Definition: dynamicsSimulation.h:43
+
double completed
Definition: dynamicsSimulation.h:41
+
time_t now
Definition: dynamicsSimulation.h:62
+
double icvf
Definition: dynamicsSimulation.h:52
+
double step_lenght
Definition: dynamicsSimulation.h:38
+
Dynamic simulation main class =============================================================/.
Definition: dynamicsSimulation.h:30
+
unsigned total_tries
Definition: dynamicsSimulation.h:53
+
std::vector< Voxel > voxels_list
Definition: dynamicsSimulation.h:50
+
MR Sequence Primary Class =============================================================/.
Definition: simulablesequence.h:16
+
void setDuration(const double &duration)
Sets the simulation duration in milliseconds, this should be synchronized w/r the Time Echo...
Definition: dynamicsSimulation.cpp:1341
+
std::vector< PLYObstacle > * plyObstacles_list
Definition: dynamicsSimulation.h:46
+
void readConfigurationFile(std::string conf_file_path)
Reads all the parameters listed in the param conf_file and stores them in the /t params object...
Definition: dynamicsSimulation.cpp:994
+
std::vector< Cylinder > * cylinders_list
Definition: dynamicsSimulation.h:47
+
~DynamicsSimulation()
Does nothing.
Definition: dynamicsSimulation.cpp:985
+
bool isInIntra(Eigen::Vector3d &position, int &cyl_id, int &ply_id, double distance_to_be_intra_ply=1e-6)
return true if the position is inside any of the obstacles. Only obstacles with a defined "inside reg...
Definition: dynamicsSimulation.cpp:793
+
int id
Definition: dynamicsSimulation.h:44
+
double last_time_dt
Definition: dynamicsSimulation.h:58
+
Propagator propagator
Definition: dynamicsSimulation.h:51
+
Collision Final class =====================================================================/.
Definition: collision.h:19
+
Spin Final class =============================================================/.
Definition: walker.h:23
+
Trajectory trajectory
Definition: dynamicsSimulation.h:36
+
std::mt19937 mt
Definition: dynamicsSimulation.h:37
+
Auxiliary class. Handles i/o operation of walker trayectories. ============================/.
Definition: trajectory.h:18
+
std::vector< unsigned > cylinders_deque
Definition: dynamicsSimulation.h:48
+
std::string ini_pos_file
Definition: dynamicsSimulation.h:42
+
+
+ + + + diff --git a/doc/html/dynsections.js b/doc/html/dynsections.js new file mode 100644 index 0000000..85e1836 --- /dev/null +++ b/doc/html/dynsections.js @@ -0,0 +1,97 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +MCDC_simulator: File List + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + +
  src
 collision.h
 collisionsphere.h
 constants.h
 cylinder.h
 cylindergammadistribution.h
 dynamicsSimulation.h
 gradientwaveform.h
 mcsimulation.h
 obstacle.h
 parallelmcsimulation.h
 parameters.h
 pgsesequence.h
 plyobstacle.h
 propagator.h
 scheme.h
 sentinel.h
 simerrno.h
 simulablesequence.h
 subdivision.h
 trajectory.h
 triangle.h
 vertex.h
 voxel.h
 walker.h
+
+
+
+ + + + diff --git a/doc/html/files.js b/doc/html/files.js new file mode 100644 index 0000000..04b0a8e --- /dev/null +++ b/doc/html/files.js @@ -0,0 +1,4 @@ +var files = +[ + [ "src", "dir_68267d1309a1af8e8297ef4c3efbcdba.html", "dir_68267d1309a1af8e8297ef4c3efbcdba" ] +]; \ No newline at end of file diff --git a/doc/html/folderclosed.png b/doc/html/folderclosed.png new file mode 100644 index 0000000..bb8ab35 Binary files /dev/null and b/doc/html/folderclosed.png differ diff --git a/doc/html/folderopen.png b/doc/html/folderopen.png new file mode 100644 index 0000000..d6c7f67 Binary files /dev/null and b/doc/html/folderopen.png differ diff --git a/doc/html/functions.html b/doc/html/functions.html new file mode 100644 index 0000000..d688347 --- /dev/null +++ b/doc/html/functions.html @@ -0,0 +1,109 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+
+
+ + + + diff --git a/doc/html/functions_0x7e.html b/doc/html/functions_0x7e.html new file mode 100644 index 0000000..9101120 --- /dev/null +++ b/doc/html/functions_0x7e.html @@ -0,0 +1,118 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- ~ -

+
+
+ + + + diff --git a/doc/html/functions_b.html b/doc/html/functions_b.html new file mode 100644 index 0000000..0eb2689 --- /dev/null +++ b/doc/html/functions_b.html @@ -0,0 +1,113 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+
+
+ + + + diff --git a/doc/html/functions_c.html b/doc/html/functions_c.html new file mode 100644 index 0000000..fe5510b --- /dev/null +++ b/doc/html/functions_c.html @@ -0,0 +1,212 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- c -

+
+
+ + + + diff --git a/doc/html/functions_d.html b/doc/html/functions_d.html new file mode 100644 index 0000000..862c5bd --- /dev/null +++ b/doc/html/functions_d.html @@ -0,0 +1,161 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- d -

+
+
+ + + + diff --git a/doc/html/functions_dup.js b/doc/html/functions_dup.js new file mode 100644 index 0000000..0ce3376 --- /dev/null +++ b/doc/html/functions_dup.js @@ -0,0 +1,24 @@ +var functions_dup = +[ + [ "a", "functions.html", null ], + [ "b", "functions_b.html", null ], + [ "c", "functions_c.html", null ], + [ "d", "functions_d.html", null ], + [ "e", "functions_e.html", null ], + [ "g", "functions_g.html", null ], + [ "h", "functions_h.html", null ], + [ "i", "functions_i.html", null ], + [ "l", "functions_l.html", null ], + [ "m", "functions_m.html", null ], + [ "n", "functions_n.html", null ], + [ "o", "functions_o.html", null ], + [ "p", "functions_p.html", null ], + [ "q", "functions_q.html", null ], + [ "r", "functions_r.html", null ], + [ "s", "functions_s.html", null ], + [ "t", "functions_t.html", null ], + [ "u", "functions_u.html", null ], + [ "v", "functions_v.html", null ], + [ "w", "functions_w.html", null ], + [ "~", "functions_0x7e.html", null ] +]; \ No newline at end of file diff --git a/doc/html/functions_e.html b/doc/html/functions_e.html new file mode 100644 index 0000000..606a725 --- /dev/null +++ b/doc/html/functions_e.html @@ -0,0 +1,109 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- e -

+
+
+ + + + diff --git a/doc/html/functions_enum.html b/doc/html/functions_enum.html new file mode 100644 index 0000000..0ed6fd7 --- /dev/null +++ b/doc/html/functions_enum.html @@ -0,0 +1,110 @@ + + + + + + + +MCDC_simulator: Class Members - Enumerations + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
+ + + + diff --git a/doc/html/functions_func.html b/doc/html/functions_func.html new file mode 100644 index 0000000..98d6960 --- /dev/null +++ b/doc/html/functions_func.html @@ -0,0 +1,475 @@ + + + + + + + +MCDC_simulator: Class Members - Functions + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

    +
  • appendRepetitionLabel() +: SimErrno +
  • +
+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- g -

+ + +

- i -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- w -

+ + +

- ~ -

+
+
+ + + + diff --git a/doc/html/functions_g.html b/doc/html/functions_g.html new file mode 100644 index 0000000..df5365a --- /dev/null +++ b/doc/html/functions_g.html @@ -0,0 +1,166 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- g -

+
+
+ + + + diff --git a/doc/html/functions_h.html b/doc/html/functions_h.html new file mode 100644 index 0000000..1ec8c30 --- /dev/null +++ b/doc/html/functions_h.html @@ -0,0 +1,115 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- h -

+
+
+ + + + diff --git a/doc/html/functions_i.html b/doc/html/functions_i.html new file mode 100644 index 0000000..a55f8ee --- /dev/null +++ b/doc/html/functions_i.html @@ -0,0 +1,195 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- i -

+
+
+ + + + diff --git a/doc/html/functions_l.html b/doc/html/functions_l.html new file mode 100644 index 0000000..d515fa4 --- /dev/null +++ b/doc/html/functions_l.html @@ -0,0 +1,121 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- l -

+
+
+ + + + diff --git a/doc/html/functions_m.html b/doc/html/functions_m.html new file mode 100644 index 0000000..1c2a654 --- /dev/null +++ b/doc/html/functions_m.html @@ -0,0 +1,139 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- m -

+
+
+ + + + diff --git a/doc/html/functions_n.html b/doc/html/functions_n.html new file mode 100644 index 0000000..51590a1 --- /dev/null +++ b/doc/html/functions_n.html @@ -0,0 +1,128 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- n -

+
+
+ + + + diff --git a/doc/html/functions_o.html b/doc/html/functions_o.html new file mode 100644 index 0000000..feff2a6 --- /dev/null +++ b/doc/html/functions_o.html @@ -0,0 +1,112 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- o -

+
+
+ + + + diff --git a/doc/html/functions_p.html b/doc/html/functions_p.html new file mode 100644 index 0000000..6928692 --- /dev/null +++ b/doc/html/functions_p.html @@ -0,0 +1,198 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- p -

+
+
+ + + + diff --git a/doc/html/functions_q.html b/doc/html/functions_q.html new file mode 100644 index 0000000..0f7a02d --- /dev/null +++ b/doc/html/functions_q.html @@ -0,0 +1,103 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- q -

+
+
+ + + + diff --git a/doc/html/functions_r.html b/doc/html/functions_r.html new file mode 100644 index 0000000..0a73b4c --- /dev/null +++ b/doc/html/functions_r.html @@ -0,0 +1,129 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- r -

+
+
+ + + + diff --git a/doc/html/functions_s.html b/doc/html/functions_s.html new file mode 100644 index 0000000..a5fa9b7 --- /dev/null +++ b/doc/html/functions_s.html @@ -0,0 +1,245 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- s -

+
+
+ + + + diff --git a/doc/html/functions_t.html b/doc/html/functions_t.html new file mode 100644 index 0000000..83ed317 --- /dev/null +++ b/doc/html/functions_t.html @@ -0,0 +1,149 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- t -

+
+
+ + + + diff --git a/doc/html/functions_u.html b/doc/html/functions_u.html new file mode 100644 index 0000000..6bfc425 --- /dev/null +++ b/doc/html/functions_u.html @@ -0,0 +1,113 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- u -

+
+
+ + + + diff --git a/doc/html/functions_v.html b/doc/html/functions_v.html new file mode 100644 index 0000000..965eb13 --- /dev/null +++ b/doc/html/functions_v.html @@ -0,0 +1,110 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- v -

+
+
+ + + + diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html new file mode 100644 index 0000000..73f03fc --- /dev/null +++ b/doc/html/functions_vars.html @@ -0,0 +1,106 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+
+ + + + diff --git a/doc/html/functions_vars.js b/doc/html/functions_vars.js new file mode 100644 index 0000000..174ad17 --- /dev/null +++ b/doc/html/functions_vars.js @@ -0,0 +1,23 @@ +var functions_vars = +[ + [ "a", "functions_vars.html", null ], + [ "b", "functions_vars_b.html", null ], + [ "c", "functions_vars_c.html", null ], + [ "d", "functions_vars_d.html", null ], + [ "e", "functions_vars_e.html", null ], + [ "g", "functions_vars_g.html", null ], + [ "h", "functions_vars_h.html", null ], + [ "i", "functions_vars_i.html", null ], + [ "l", "functions_vars_l.html", null ], + [ "m", "functions_vars_m.html", null ], + [ "n", "functions_vars_n.html", null ], + [ "o", "functions_vars_o.html", null ], + [ "p", "functions_vars_p.html", null ], + [ "q", "functions_vars_q.html", null ], + [ "r", "functions_vars_r.html", null ], + [ "s", "functions_vars_s.html", null ], + [ "t", "functions_vars_t.html", null ], + [ "u", "functions_vars_u.html", null ], + [ "v", "functions_vars_v.html", null ], + [ "w", "functions_vars_w.html", null ] +]; \ No newline at end of file diff --git a/doc/html/functions_vars_b.html b/doc/html/functions_vars_b.html new file mode 100644 index 0000000..5827640 --- /dev/null +++ b/doc/html/functions_vars_b.html @@ -0,0 +1,113 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+
+ + + + diff --git a/doc/html/functions_vars_c.html b/doc/html/functions_vars_c.html new file mode 100644 index 0000000..f307f5f --- /dev/null +++ b/doc/html/functions_vars_c.html @@ -0,0 +1,147 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+
+ + + + diff --git a/doc/html/functions_vars_d.html b/doc/html/functions_vars_d.html new file mode 100644 index 0000000..74b67aa --- /dev/null +++ b/doc/html/functions_vars_d.html @@ -0,0 +1,152 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+
+ + + + diff --git a/doc/html/functions_vars_e.html b/doc/html/functions_vars_e.html new file mode 100644 index 0000000..0bef6dd --- /dev/null +++ b/doc/html/functions_vars_e.html @@ -0,0 +1,103 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

    +
  • extra_coll_count +: Walker +
  • +
+
+
+ + + + diff --git a/doc/html/functions_vars_g.html b/doc/html/functions_vars_g.html new file mode 100644 index 0000000..522ca40 --- /dev/null +++ b/doc/html/functions_vars_g.html @@ -0,0 +1,103 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+
+ + + + diff --git a/doc/html/functions_vars_h.html b/doc/html/functions_vars_h.html new file mode 100644 index 0000000..5245be7 --- /dev/null +++ b/doc/html/functions_vars_h.html @@ -0,0 +1,115 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+
+ + + + diff --git a/doc/html/functions_vars_i.html b/doc/html/functions_vars_i.html new file mode 100644 index 0000000..038a2e0 --- /dev/null +++ b/doc/html/functions_vars_i.html @@ -0,0 +1,165 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+
+ + + + diff --git a/doc/html/functions_vars_l.html b/doc/html/functions_vars_l.html new file mode 100644 index 0000000..ef4f787 --- /dev/null +++ b/doc/html/functions_vars_l.html @@ -0,0 +1,121 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+
+ + + + diff --git a/doc/html/functions_vars_m.html b/doc/html/functions_vars_m.html new file mode 100644 index 0000000..1801e9e --- /dev/null +++ b/doc/html/functions_vars_m.html @@ -0,0 +1,132 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+
+ + + + diff --git a/doc/html/functions_vars_n.html b/doc/html/functions_vars_n.html new file mode 100644 index 0000000..7eaf6ce --- /dev/null +++ b/doc/html/functions_vars_n.html @@ -0,0 +1,128 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+
+ + + + diff --git a/doc/html/functions_vars_o.html b/doc/html/functions_vars_o.html new file mode 100644 index 0000000..41700c0 --- /dev/null +++ b/doc/html/functions_vars_o.html @@ -0,0 +1,109 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- o -

+
+
+ + + + diff --git a/doc/html/functions_vars_p.html b/doc/html/functions_vars_p.html new file mode 100644 index 0000000..8f6f675 --- /dev/null +++ b/doc/html/functions_vars_p.html @@ -0,0 +1,158 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+
+ + + + diff --git a/doc/html/functions_vars_q.html b/doc/html/functions_vars_q.html new file mode 100644 index 0000000..388b122 --- /dev/null +++ b/doc/html/functions_vars_q.html @@ -0,0 +1,103 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- q -

+
+
+ + + + diff --git a/doc/html/functions_vars_r.html b/doc/html/functions_vars_r.html new file mode 100644 index 0000000..3ed68fc --- /dev/null +++ b/doc/html/functions_vars_r.html @@ -0,0 +1,118 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+
+ + + + diff --git a/doc/html/functions_vars_s.html b/doc/html/functions_vars_s.html new file mode 100644 index 0000000..c402736 --- /dev/null +++ b/doc/html/functions_vars_s.html @@ -0,0 +1,191 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+
+ + + + diff --git a/doc/html/functions_vars_t.html b/doc/html/functions_vars_t.html new file mode 100644 index 0000000..1a56edf --- /dev/null +++ b/doc/html/functions_vars_t.html @@ -0,0 +1,146 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+
+ + + + diff --git a/doc/html/functions_vars_u.html b/doc/html/functions_vars_u.html new file mode 100644 index 0000000..987d619 --- /dev/null +++ b/doc/html/functions_vars_u.html @@ -0,0 +1,103 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- u -

+
+
+ + + + diff --git a/doc/html/functions_vars_v.html b/doc/html/functions_vars_v.html new file mode 100644 index 0000000..6b89f17 --- /dev/null +++ b/doc/html/functions_vars_v.html @@ -0,0 +1,110 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+
+ + + + diff --git a/doc/html/functions_vars_w.html b/doc/html/functions_vars_w.html new file mode 100644 index 0000000..bc4a43b --- /dev/null +++ b/doc/html/functions_vars_w.html @@ -0,0 +1,124 @@ + + + + + + + +MCDC_simulator: Class Members - Variables + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

+
+
+ + + + diff --git a/doc/html/functions_w.html b/doc/html/functions_w.html new file mode 100644 index 0000000..0d47e28 --- /dev/null +++ b/doc/html/functions_w.html @@ -0,0 +1,133 @@ + + + + + + + +MCDC_simulator: Class Members + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- w -

+
+
+ + + + diff --git a/doc/html/gradientwaveform_8h_source.html b/doc/html/gradientwaveform_8h_source.html new file mode 100644 index 0000000..fad25d6 --- /dev/null +++ b/doc/html/gradientwaveform_8h_source.html @@ -0,0 +1,124 @@ + + + + + + + +MCDC_simulator: src/gradientwaveform.h Source File + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
gradientwaveform.h
+
+
+
1 
9 #ifndef GRADIENTWAVEFORM_H
10 #define GRADIENTWAVEFORM_H
11 
12 #include "pgsesequence.h"
13 #include "Eigen/Dense"
14 #include "constants.h"
15 
17 {
18 public:
19 
20  double TE;
22  uint T;
24  double dyn_duration;
26  int wave_bins;
28  double wave_duration;
30  double dt;
34  std::vector< std::vector<float> > waveform;
42 
46  GradientWaveform(Scheme& scheme);
47 
52  GradientWaveform(Scheme& scheme_,const char* traj_file_name);
53 
54 
55  //TODO: to implement
59  double getNumericalbValue(unsigned);
60 
64  void getDWISignal();
65 
66 
70  void readSchemeFile();
71 
75  void getInterpolatedGradImpulse(uint rep_index, double dt_sim, double t_sim_last, Eigen::Vector3d &Gdt);
76 
77  /*
78  * @brief Updates the phase shift using the full stored trajectory
79  */
80  void update_phase_shift(double time_step, Eigen::Matrix3Xd trajectory);
81 
82 
83  void update_phase_shift(double dt,double dt_last,Walker walker);
87  void update_DWI_signal(Walker &walker);
88 
89  void setNumberOfSteps(unsigned T);
90 
91  void getGradImpulse(int i, double t, double tLast, Eigen::Vector3d& Gdt);
92 
93 
94 private:
98  void readSchemeParameters(Scheme &scheme_);
99 
100 
101 };
102 
103 #endif // GRADIENTWAVEFORM_H
void getDWISignal()
Computes de DW signal from a trajfile.
Definition: gradientwaveform.cpp:205
+
int wave_bins
Definition: gradientwaveform.h:26
+
double dt
Definition: gradientwaveform.h:30
+
double wave_duration
Definition: gradientwaveform.h:28
+
double getNumericalbValue(unsigned)
Definition: gradientwaveform.cpp:69
+
Auxiliary class to save scheme_files values =========================================================...
Definition: scheme.h:14
+
double TE
Definition: gradientwaveform.h:20
+
uint T
Definition: gradientwaveform.h:22
+
void getGradImpulse(int i, double t, double tLast, Eigen::Vector3d &Gdt)
Definition: gradientwaveform.cpp:130
+
GradientWaveform()
Default constructor, set default NULL values. Not to be used.
Definition: gradientwaveform.cpp:32
+
double dyn_duration
Definition: gradientwaveform.h:24
+
void setNumberOfSteps(unsigned T)
Set the number of time steps if they are known.
Definition: gradientwaveform.cpp:337
+
MR Sequence Primary Class =============================================================/.
Definition: simulablesequence.h:16
+
Gradient Wavefroms =============================================================/.
Definition: gradientwaveform.h:16
+
Trajectory trajectory
Definition: gradientwaveform.h:36
+
void update_DWI_signal(Walker &walker)
Updates the DWI signal using the cumulated phase shift.
Definition: gradientwaveform.cpp:262
+
Spin Final class =============================================================/.
Definition: walker.h:23
+
bool scale_from_stu
Definition: gradientwaveform.h:32
+
void getInterpolatedGradImpulse(uint rep_index, double dt_sim, double t_sim_last, Eigen::Vector3d &Gdt)
For using with the adt array.
Definition: gradientwaveform.cpp:134
+
std::vector< std::vector< float > > waveform
Definition: gradientwaveform.h:34
+
void readSchemeFile()
reads the waveform
Definition: gradientwaveform.cpp:89
+
Auxiliary class. Handles i/o operation of walker trayectories. ============================/.
Definition: trajectory.h:18
+
void update_phase_shift(double time_step, Eigen::Matrix3Xd trajectory)
Definition: gradientwaveform.cpp:172
+
+
+ + + + diff --git a/doc/html/graph_legend.html b/doc/html/graph_legend.html new file mode 100644 index 0000000..09584dc --- /dev/null +++ b/doc/html/graph_legend.html @@ -0,0 +1,129 @@ + + + + + + + +MCDC_simulator: Graph Legend + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
class Invisible { };
/*! Truncated class, inheritance relation is hidden */
class Truncated : public Invisible { };
/* Class not documented with doxygen comments */
class Undocumented { };
/*! Class that is inherited using public inheritance */
class PublicBase : public Truncated { };
/*! A template class */
template<class T> class Templ { };
/*! Class that is inherited using protected inheritance */
class ProtectedBase { };
/*! Class that is inherited using private inheritance */
class PrivateBase { };
/*! Class that is used by the Inherited class */
class Used { };
/*! Super class that inherits a number of other classes */
class Inherited : public PublicBase,
protected ProtectedBase,
private PrivateBase,
public Undocumented,
public Templ<int>
{
private:
Used *m_usedClass;
};

This will result in the following graph:

+
+ +
+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+
+ + + + diff --git a/doc/html/graph_legend.md5 b/doc/html/graph_legend.md5 new file mode 100644 index 0000000..a06ed05 --- /dev/null +++ b/doc/html/graph_legend.md5 @@ -0,0 +1 @@ +387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/doc/html/graph_legend.png b/doc/html/graph_legend.png new file mode 100644 index 0000000..81788d8 Binary files /dev/null and b/doc/html/graph_legend.png differ diff --git a/doc/html/hierarchy.html b/doc/html/hierarchy.html new file mode 100644 index 0000000..218fcae --- /dev/null +++ b/doc/html/hierarchy.html @@ -0,0 +1,135 @@ + + + + + + + +MCDC_simulator: Class Hierarchy + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 12]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 CCollisionCollision Final class =====================================================================/
 CCollisionsphere
 CCylinderCollisionSphereClass to save the cylinderical obstacles that a can collide to a walker
 CPLYCollisionSphere
 CCollisionspherenCollision Final class ============================================================================/
 CCylinderGammaDistributionCylinderGammaDistribution Class =============================================================/
 CDynamicsSimulationDynamic simulation main class =============================================================/
 CMCSimulationAplication Main Class ======================================================================================/
 CObstacleObstacle Base Class ==============================================================================/
 CCylinderCylinder Obstacle Derived Class =============================================================/
 CPLYObstaclePlyObstacle Derived Class ====================================================================/
 CParallelMCSimulationClass to handle multiprocessor paralellisation. This class basicly controls and syncronize several initializations of MonteCarlo simulations and add up the results. It's a way of soft paralelization
 CParameterBasic class to store simulation parameters =============================================================/
 CParameters
 CPlaneMain class. Implements basic voxel limits and operations. =================================================/
 CPropagator
 CSchemeAuxiliary class to save scheme_files values =============================================================/
 Csentinels::Sentinel
 CSentinelsCollision Final class ====================================================================/
 CSimErrnoSimulation Input and parameter errors handling class =================================================/
 CSimulableSequenceMR Sequence Primary Class =============================================================/
 CGradientWaveformGradient Wavefroms =============================================================/
 CPGSESequence
 CSubdivisionAuxiliary Subdivision Class =============================================================/
 CTrajectoryAuxiliary class. Handles i/o operation of walker trayectories. ============================/
 CTriangleAuxiliary class. Implements trangular barriers. ===================================/
 CVertexAuxiliary class. Implements basic vertices. ====================================/
 CVoxel//! Main class. Implements basic voxel limits and operations. Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done
 CWalkerSpin Final class =============================================================/
+
+
+
+ + + + diff --git a/doc/html/hierarchy.js b/doc/html/hierarchy.js new file mode 100644 index 0000000..fbc7f83 --- /dev/null +++ b/doc/html/hierarchy.js @@ -0,0 +1,35 @@ +var hierarchy = +[ + [ "Collision", "class_collision.html", null ], + [ "Collisionsphere", "class_collisionsphere.html", [ + [ "CylinderCollisionSphere", "class_cylinder_collision_sphere.html", null ], + [ "PLYCollisionSphere", "class_p_l_y_collision_sphere.html", null ] + ] ], + [ "Collisionspheren", "class_collisionspheren.html", null ], + [ "CylinderGammaDistribution", "class_cylinder_gamma_distribution.html", null ], + [ "DynamicsSimulation", "class_dynamics_simulation.html", null ], + [ "MCSimulation", "class_m_c_simulation.html", null ], + [ "Obstacle", "class_obstacle.html", [ + [ "Cylinder", "class_cylinder.html", null ], + [ "PLYObstacle", "class_p_l_y_obstacle.html", null ] + ] ], + [ "ParallelMCSimulation", "class_parallel_m_c_simulation.html", null ], + [ "Parameter", "class_parameter.html", null ], + [ "Parameters", "class_parameters.html", null ], + [ "Plane", "class_plane.html", null ], + [ "Propagator", "class_propagator.html", null ], + [ "Scheme", "class_scheme.html", null ], + [ "sentinels::Sentinel", "classsentinels_1_1_sentinel.html", null ], + [ "Sentinels", "class_sentinels.html", null ], + [ "SimErrno", "class_sim_errno.html", null ], + [ "SimulableSequence", "class_simulable_sequence.html", [ + [ "GradientWaveform", "class_gradient_waveform.html", null ], + [ "PGSESequence", "class_p_g_s_e_sequence.html", null ] + ] ], + [ "Subdivision", "class_subdivision.html", null ], + [ "Trajectory", "class_trajectory.html", null ], + [ "Triangle", "class_triangle.html", null ], + [ "Vertex", "class_vertex.html", null ], + [ "Voxel", "class_voxel.html", null ], + [ "Walker", "class_walker.html", null ] +]; \ No newline at end of file diff --git a/doc/html/index.html b/doc/html/index.html new file mode 100644 index 0000000..b48a103 --- /dev/null +++ b/doc/html/index.html @@ -0,0 +1,100 @@ + + + + + + + +MCDC_simulator: Main Page + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
MCDC_simulator Documentation
+
+
+
+
+ + + + diff --git a/doc/html/inherit_graph_0.map b/doc/html/inherit_graph_0.map new file mode 100644 index 0000000..8cdadfe --- /dev/null +++ b/doc/html/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_0.md5 b/doc/html/inherit_graph_0.md5 new file mode 100644 index 0000000..4362107 --- /dev/null +++ b/doc/html/inherit_graph_0.md5 @@ -0,0 +1 @@ +7813d78a9a2e7c023740ac4439757489 \ No newline at end of file diff --git a/doc/html/inherit_graph_0.png b/doc/html/inherit_graph_0.png new file mode 100644 index 0000000..e66234f Binary files /dev/null and b/doc/html/inherit_graph_0.png differ diff --git a/doc/html/inherit_graph_1.map b/doc/html/inherit_graph_1.map new file mode 100644 index 0000000..1ff9411 --- /dev/null +++ b/doc/html/inherit_graph_1.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doc/html/inherit_graph_1.md5 b/doc/html/inherit_graph_1.md5 new file mode 100644 index 0000000..99ef05f --- /dev/null +++ b/doc/html/inherit_graph_1.md5 @@ -0,0 +1 @@ +88694ec477f35b009107a1f6919e63fb \ No newline at end of file diff --git a/doc/html/inherit_graph_1.png b/doc/html/inherit_graph_1.png new file mode 100644 index 0000000..a754c8a Binary files /dev/null and b/doc/html/inherit_graph_1.png differ diff --git a/doc/html/inherit_graph_10.map b/doc/html/inherit_graph_10.map new file mode 100644 index 0000000..4798457 --- /dev/null +++ b/doc/html/inherit_graph_10.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_10.md5 b/doc/html/inherit_graph_10.md5 new file mode 100644 index 0000000..70f6bb3 --- /dev/null +++ b/doc/html/inherit_graph_10.md5 @@ -0,0 +1 @@ +d8988d92204f7f9fee74ddfe8b002e92 \ No newline at end of file diff --git a/doc/html/inherit_graph_10.png b/doc/html/inherit_graph_10.png new file mode 100644 index 0000000..4ed89e2 Binary files /dev/null and b/doc/html/inherit_graph_10.png differ diff --git a/doc/html/inherit_graph_11.map b/doc/html/inherit_graph_11.map new file mode 100644 index 0000000..3732bab --- /dev/null +++ b/doc/html/inherit_graph_11.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_11.md5 b/doc/html/inherit_graph_11.md5 new file mode 100644 index 0000000..03cd7ba --- /dev/null +++ b/doc/html/inherit_graph_11.md5 @@ -0,0 +1 @@ +61414f9a98a1a5382b1356c68bd675fa \ No newline at end of file diff --git a/doc/html/inherit_graph_11.png b/doc/html/inherit_graph_11.png new file mode 100644 index 0000000..d0c5fbc Binary files /dev/null and b/doc/html/inherit_graph_11.png differ diff --git a/doc/html/inherit_graph_12.map b/doc/html/inherit_graph_12.map new file mode 100644 index 0000000..7456966 --- /dev/null +++ b/doc/html/inherit_graph_12.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_12.md5 b/doc/html/inherit_graph_12.md5 new file mode 100644 index 0000000..486389e --- /dev/null +++ b/doc/html/inherit_graph_12.md5 @@ -0,0 +1 @@ +2d3f4b457109e94c7dbad98e6b425a1b \ No newline at end of file diff --git a/doc/html/inherit_graph_12.png b/doc/html/inherit_graph_12.png new file mode 100644 index 0000000..3631b39 Binary files /dev/null and b/doc/html/inherit_graph_12.png differ diff --git a/doc/html/inherit_graph_13.map b/doc/html/inherit_graph_13.map new file mode 100644 index 0000000..506a3c4 --- /dev/null +++ b/doc/html/inherit_graph_13.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_13.md5 b/doc/html/inherit_graph_13.md5 new file mode 100644 index 0000000..15328b5 --- /dev/null +++ b/doc/html/inherit_graph_13.md5 @@ -0,0 +1 @@ +06a46cd35f642ec025eb1d08d1731e50 \ No newline at end of file diff --git a/doc/html/inherit_graph_13.png b/doc/html/inherit_graph_13.png new file mode 100644 index 0000000..02ba2d7 Binary files /dev/null and b/doc/html/inherit_graph_13.png differ diff --git a/doc/html/inherit_graph_14.map b/doc/html/inherit_graph_14.map new file mode 100644 index 0000000..eed6745 --- /dev/null +++ b/doc/html/inherit_graph_14.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_14.md5 b/doc/html/inherit_graph_14.md5 new file mode 100644 index 0000000..3a3e852 --- /dev/null +++ b/doc/html/inherit_graph_14.md5 @@ -0,0 +1 @@ +643c07f1a06db94c8ed1b995ab399d3d \ No newline at end of file diff --git a/doc/html/inherit_graph_14.png b/doc/html/inherit_graph_14.png new file mode 100644 index 0000000..e40e1a9 Binary files /dev/null and b/doc/html/inherit_graph_14.png differ diff --git a/doc/html/inherit_graph_15.map b/doc/html/inherit_graph_15.map new file mode 100644 index 0000000..bf0b245 --- /dev/null +++ b/doc/html/inherit_graph_15.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_15.md5 b/doc/html/inherit_graph_15.md5 new file mode 100644 index 0000000..2e7d380 --- /dev/null +++ b/doc/html/inherit_graph_15.md5 @@ -0,0 +1 @@ +6b53833ddbfa65e57be8de1bb4c85dd2 \ No newline at end of file diff --git a/doc/html/inherit_graph_15.png b/doc/html/inherit_graph_15.png new file mode 100644 index 0000000..8a7107c Binary files /dev/null and b/doc/html/inherit_graph_15.png differ diff --git a/doc/html/inherit_graph_16.map b/doc/html/inherit_graph_16.map new file mode 100644 index 0000000..7b48d05 --- /dev/null +++ b/doc/html/inherit_graph_16.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doc/html/inherit_graph_16.md5 b/doc/html/inherit_graph_16.md5 new file mode 100644 index 0000000..55715fa --- /dev/null +++ b/doc/html/inherit_graph_16.md5 @@ -0,0 +1 @@ +37ee44ffbeb8a5503c4da5999eb57aaa \ No newline at end of file diff --git a/doc/html/inherit_graph_16.png b/doc/html/inherit_graph_16.png new file mode 100644 index 0000000..a8090d8 Binary files /dev/null and b/doc/html/inherit_graph_16.png differ diff --git a/doc/html/inherit_graph_17.map b/doc/html/inherit_graph_17.map new file mode 100644 index 0000000..f400390 --- /dev/null +++ b/doc/html/inherit_graph_17.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_17.md5 b/doc/html/inherit_graph_17.md5 new file mode 100644 index 0000000..87c881f --- /dev/null +++ b/doc/html/inherit_graph_17.md5 @@ -0,0 +1 @@ +4514956f1fe12006f0be07a6db8bfcf7 \ No newline at end of file diff --git a/doc/html/inherit_graph_17.png b/doc/html/inherit_graph_17.png new file mode 100644 index 0000000..3eb2dce Binary files /dev/null and b/doc/html/inherit_graph_17.png differ diff --git a/doc/html/inherit_graph_18.map b/doc/html/inherit_graph_18.map new file mode 100644 index 0000000..b27e4e9 --- /dev/null +++ b/doc/html/inherit_graph_18.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_18.md5 b/doc/html/inherit_graph_18.md5 new file mode 100644 index 0000000..df21535 --- /dev/null +++ b/doc/html/inherit_graph_18.md5 @@ -0,0 +1 @@ +072cdfd32b9de2729e475eaa1eb4580b \ No newline at end of file diff --git a/doc/html/inherit_graph_18.png b/doc/html/inherit_graph_18.png new file mode 100644 index 0000000..b72ff12 Binary files /dev/null and b/doc/html/inherit_graph_18.png differ diff --git a/doc/html/inherit_graph_19.map b/doc/html/inherit_graph_19.map new file mode 100644 index 0000000..1f763e0 --- /dev/null +++ b/doc/html/inherit_graph_19.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_19.md5 b/doc/html/inherit_graph_19.md5 new file mode 100644 index 0000000..6e7782f --- /dev/null +++ b/doc/html/inherit_graph_19.md5 @@ -0,0 +1 @@ +80f0e5c02994b91e9dadcbbed719a64e \ No newline at end of file diff --git a/doc/html/inherit_graph_19.png b/doc/html/inherit_graph_19.png new file mode 100644 index 0000000..f52389a Binary files /dev/null and b/doc/html/inherit_graph_19.png differ diff --git a/doc/html/inherit_graph_2.map b/doc/html/inherit_graph_2.map new file mode 100644 index 0000000..ce8655b --- /dev/null +++ b/doc/html/inherit_graph_2.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_2.md5 b/doc/html/inherit_graph_2.md5 new file mode 100644 index 0000000..c61655d --- /dev/null +++ b/doc/html/inherit_graph_2.md5 @@ -0,0 +1 @@ +f3e6c16c553c141a20541f4bb01ebf2a \ No newline at end of file diff --git a/doc/html/inherit_graph_2.png b/doc/html/inherit_graph_2.png new file mode 100644 index 0000000..f5c3410 Binary files /dev/null and b/doc/html/inherit_graph_2.png differ diff --git a/doc/html/inherit_graph_20.map b/doc/html/inherit_graph_20.map new file mode 100644 index 0000000..3410589 --- /dev/null +++ b/doc/html/inherit_graph_20.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_20.md5 b/doc/html/inherit_graph_20.md5 new file mode 100644 index 0000000..580fc1f --- /dev/null +++ b/doc/html/inherit_graph_20.md5 @@ -0,0 +1 @@ +e08a2652d237f35aeaddf5b93ec0d559 \ No newline at end of file diff --git a/doc/html/inherit_graph_20.png b/doc/html/inherit_graph_20.png new file mode 100644 index 0000000..d442ed1 Binary files /dev/null and b/doc/html/inherit_graph_20.png differ diff --git a/doc/html/inherit_graph_21.map b/doc/html/inherit_graph_21.map new file mode 100644 index 0000000..69befd0 --- /dev/null +++ b/doc/html/inherit_graph_21.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_21.md5 b/doc/html/inherit_graph_21.md5 new file mode 100644 index 0000000..0cecc4e --- /dev/null +++ b/doc/html/inherit_graph_21.md5 @@ -0,0 +1 @@ +4d03ba110966c68e8f4e0b36c52b42a5 \ No newline at end of file diff --git a/doc/html/inherit_graph_21.png b/doc/html/inherit_graph_21.png new file mode 100644 index 0000000..4e366e9 Binary files /dev/null and b/doc/html/inherit_graph_21.png differ diff --git a/doc/html/inherit_graph_22.map b/doc/html/inherit_graph_22.map new file mode 100644 index 0000000..2e266b1 --- /dev/null +++ b/doc/html/inherit_graph_22.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_22.md5 b/doc/html/inherit_graph_22.md5 new file mode 100644 index 0000000..1e228ae --- /dev/null +++ b/doc/html/inherit_graph_22.md5 @@ -0,0 +1 @@ +641bd3a1189f2b4999defa88a249cdc1 \ No newline at end of file diff --git a/doc/html/inherit_graph_22.png b/doc/html/inherit_graph_22.png new file mode 100644 index 0000000..2865549 Binary files /dev/null and b/doc/html/inherit_graph_22.png differ diff --git a/doc/html/inherit_graph_3.map b/doc/html/inherit_graph_3.map new file mode 100644 index 0000000..9a6189b --- /dev/null +++ b/doc/html/inherit_graph_3.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_3.md5 b/doc/html/inherit_graph_3.md5 new file mode 100644 index 0000000..c2fea10 --- /dev/null +++ b/doc/html/inherit_graph_3.md5 @@ -0,0 +1 @@ +d123aa5729800ffdbaaecb00b0bc218a \ No newline at end of file diff --git a/doc/html/inherit_graph_3.png b/doc/html/inherit_graph_3.png new file mode 100644 index 0000000..682ce02 Binary files /dev/null and b/doc/html/inherit_graph_3.png differ diff --git a/doc/html/inherit_graph_4.map b/doc/html/inherit_graph_4.map new file mode 100644 index 0000000..b43151e --- /dev/null +++ b/doc/html/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_4.md5 b/doc/html/inherit_graph_4.md5 new file mode 100644 index 0000000..28eee73 --- /dev/null +++ b/doc/html/inherit_graph_4.md5 @@ -0,0 +1 @@ +fe1fa7fc430dc5d7ef822aef17a331f5 \ No newline at end of file diff --git a/doc/html/inherit_graph_4.png b/doc/html/inherit_graph_4.png new file mode 100644 index 0000000..00d95ca Binary files /dev/null and b/doc/html/inherit_graph_4.png differ diff --git a/doc/html/inherit_graph_5.map b/doc/html/inherit_graph_5.map new file mode 100644 index 0000000..aa44281 --- /dev/null +++ b/doc/html/inherit_graph_5.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_5.md5 b/doc/html/inherit_graph_5.md5 new file mode 100644 index 0000000..e25ba7e --- /dev/null +++ b/doc/html/inherit_graph_5.md5 @@ -0,0 +1 @@ +019e673f7937835761ef1d0b4931c7d5 \ No newline at end of file diff --git a/doc/html/inherit_graph_5.png b/doc/html/inherit_graph_5.png new file mode 100644 index 0000000..031a1e2 Binary files /dev/null and b/doc/html/inherit_graph_5.png differ diff --git a/doc/html/inherit_graph_6.map b/doc/html/inherit_graph_6.map new file mode 100644 index 0000000..48da025 --- /dev/null +++ b/doc/html/inherit_graph_6.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doc/html/inherit_graph_6.md5 b/doc/html/inherit_graph_6.md5 new file mode 100644 index 0000000..176ed25 --- /dev/null +++ b/doc/html/inherit_graph_6.md5 @@ -0,0 +1 @@ +dc988693b9fe8093443836ed36ef11ea \ No newline at end of file diff --git a/doc/html/inherit_graph_6.png b/doc/html/inherit_graph_6.png new file mode 100644 index 0000000..cd94e4a Binary files /dev/null and b/doc/html/inherit_graph_6.png differ diff --git a/doc/html/inherit_graph_7.map b/doc/html/inherit_graph_7.map new file mode 100644 index 0000000..9ffdc8e --- /dev/null +++ b/doc/html/inherit_graph_7.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_7.md5 b/doc/html/inherit_graph_7.md5 new file mode 100644 index 0000000..5532ae5 --- /dev/null +++ b/doc/html/inherit_graph_7.md5 @@ -0,0 +1 @@ +bbac9e71f9aa01688c348c61d77d8df9 \ No newline at end of file diff --git a/doc/html/inherit_graph_7.png b/doc/html/inherit_graph_7.png new file mode 100644 index 0000000..64bd991 Binary files /dev/null and b/doc/html/inherit_graph_7.png differ diff --git a/doc/html/inherit_graph_8.map b/doc/html/inherit_graph_8.map new file mode 100644 index 0000000..5668399 --- /dev/null +++ b/doc/html/inherit_graph_8.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_8.md5 b/doc/html/inherit_graph_8.md5 new file mode 100644 index 0000000..2d24963 --- /dev/null +++ b/doc/html/inherit_graph_8.md5 @@ -0,0 +1 @@ +659fa993047e98e755f448a31cc63e47 \ No newline at end of file diff --git a/doc/html/inherit_graph_8.png b/doc/html/inherit_graph_8.png new file mode 100644 index 0000000..b8b095b Binary files /dev/null and b/doc/html/inherit_graph_8.png differ diff --git a/doc/html/inherit_graph_9.map b/doc/html/inherit_graph_9.map new file mode 100644 index 0000000..6902b3b --- /dev/null +++ b/doc/html/inherit_graph_9.map @@ -0,0 +1,3 @@ + + + diff --git a/doc/html/inherit_graph_9.md5 b/doc/html/inherit_graph_9.md5 new file mode 100644 index 0000000..def12aa --- /dev/null +++ b/doc/html/inherit_graph_9.md5 @@ -0,0 +1 @@ +ab9342a7ff4e19952ae4039e45c8b903 \ No newline at end of file diff --git a/doc/html/inherit_graph_9.png b/doc/html/inherit_graph_9.png new file mode 100644 index 0000000..3f05af2 Binary files /dev/null and b/doc/html/inherit_graph_9.png differ diff --git a/doc/html/inherits.html b/doc/html/inherits.html new file mode 100644 index 0000000..b6b8d67 --- /dev/null +++ b/doc/html/inherits.html @@ -0,0 +1,225 @@ + + + + + + + +MCDC_simulator: Class Hierarchy + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+
+ + + + + + + +
+
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+
+
+ + + + diff --git a/doc/html/jquery.js b/doc/html/jquery.js new file mode 100644 index 0000000..f5343ed --- /dev/null +++ b/doc/html/jquery.js @@ -0,0 +1,87 @@ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
t
";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="
";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT0){for(bB=bA;bB=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/",""],legend:[1,"
","
"],thead:[1,"","
"],tr:[2,"","
"],td:[3,"","
"],col:[2,"","
"],area:[1,"",""],_default:[0,"",""]},ac=a(av);ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div
","
"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1>");try{for(var bw=0,bv=this.length;bw1&&bw0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]===""&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;if(bA>0){if(bv!=="border"){for(;bx)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("
").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"":"")+"");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b})}})(window);/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,d){a.ui=a.ui||{};if(a.ui.version){return}a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(e,f){return typeof e==="number"?this.each(function(){var g=this;setTimeout(function(){a(g).focus();if(f){f.call(g)}},e)}):this._focus.apply(this,arguments)},scrollParent:function(){var e;if((a.browser.msie&&(/(static|relative)/).test(this.css("position")))||(/absolute/).test(this.css("position"))){e=this.parents().filter(function(){return(/(relative|absolute|fixed)/).test(a.curCSS(this,"position",1))&&(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}else{e=this.parents().filter(function(){return(/(auto|scroll)/).test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0)}return(/fixed/).test(this.css("position"))||!e.length?a(document):e},zIndex:function(h){if(h!==d){return this.css("zIndex",h)}if(this.length){var f=a(this[0]),e,g;while(f.length&&f[0]!==document){e=f.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){g=parseInt(f.css("zIndex"),10);if(!isNaN(g)&&g!==0){return g}}f=f.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});a.each(["Width","Height"],function(g,e){var f=e==="Width"?["Left","Right"]:["Top","Bottom"],h=e.toLowerCase(),k={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};function j(m,l,i,n){a.each(f,function(){l-=parseFloat(a.curCSS(m,"padding"+this,true))||0;if(i){l-=parseFloat(a.curCSS(m,"border"+this+"Width",true))||0}if(n){l-=parseFloat(a.curCSS(m,"margin"+this,true))||0}});return l}a.fn["inner"+e]=function(i){if(i===d){return k["inner"+e].call(this)}return this.each(function(){a(this).css(h,j(this,i)+"px")})};a.fn["outer"+e]=function(i,l){if(typeof i!=="number"){return k["outer"+e].call(this,i)}return this.each(function(){a(this).css(h,j(this,i,true,l)+"px")})}});function c(g,e){var j=g.nodeName.toLowerCase();if("area"===j){var i=g.parentNode,h=i.name,f;if(!g.href||!h||i.nodeName.toLowerCase()!=="map"){return false}f=a("img[usemap=#"+h+"]")[0];return !!f&&b(f)}return(/input|select|textarea|button|object/.test(j)?!g.disabled:"a"==j?g.href||e:e)&&b(g)}function b(e){return !a(e).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.extend(a.expr[":"],{data:function(g,f,e){return !!a.data(g,e[3])},focusable:function(e){return c(e,!isNaN(a.attr(e,"tabindex")))},tabbable:function(g){var e=a.attr(g,"tabindex"),f=isNaN(e);return(f||e>=0)&&c(g,!f)}});a(function(){var e=document.body,f=e.appendChild(f=document.createElement("div"));f.offsetHeight;a.extend(f.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});a.support.minHeight=f.offsetHeight===100;a.support.selectstart="onselectstart" in f;e.removeChild(f).style.display="none"});a.extend(a.ui,{plugin:{add:function(f,g,j){var h=a.ui[f].prototype;for(var e in j){h.plugins[e]=h.plugins[e]||[];h.plugins[e].push([g,j[e]])}},call:function(e,g,f){var j=e.plugins[g];if(!j||!e.element[0].parentNode){return}for(var h=0;h0){return true}h[e]=1;g=(h[e]>0);h[e]=0;return g},isOverAxis:function(f,e,g){return(f>e)&&(f<(e+g))},isOver:function(j,f,i,h,e,g){return a.ui.isOverAxis(j,i,e)&&a.ui.isOverAxis(f,h,g)}})})(jQuery);/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(b,d){if(b.cleanData){var c=b.cleanData;b.cleanData=function(f){for(var g=0,h;(h=f[g])!=null;g++){try{b(h).triggerHandler("remove")}catch(j){}}c(f)}}else{var a=b.fn.remove;b.fn.remove=function(e,f){return this.each(function(){if(!f){if(!e||b.filter(e,[this]).length){b("*",this).add([this]).each(function(){try{b(this).triggerHandler("remove")}catch(g){}})}}return a.call(b(this),e,f)})}}b.widget=function(f,h,e){var g=f.split(".")[0],j;f=f.split(".")[1];j=g+"-"+f;if(!e){e=h;h=b.Widget}b.expr[":"][j]=function(k){return !!b.data(k,f)};b[g]=b[g]||{};b[g][f]=function(k,l){if(arguments.length){this._createWidget(k,l)}};var i=new h();i.options=b.extend(true,{},i.options);b[g][f].prototype=b.extend(true,i,{namespace:g,widgetName:f,widgetEventPrefix:b[g][f].prototype.widgetEventPrefix||f,widgetBaseClass:j},e);b.widget.bridge(f,b[g][f])};b.widget.bridge=function(f,e){b.fn[f]=function(i){var g=typeof i==="string",h=Array.prototype.slice.call(arguments,1),j=this;i=!g&&h.length?b.extend.apply(null,[true,i].concat(h)):i;if(g&&i.charAt(0)==="_"){return j}if(g){this.each(function(){var k=b.data(this,f),l=k&&b.isFunction(k[i])?k[i].apply(k,h):k;if(l!==k&&l!==d){j=l;return false}})}else{this.each(function(){var k=b.data(this,f);if(k){k.option(i||{})._init()}else{b.data(this,f,new e(i,this))}})}return j}};b.Widget=function(e,f){if(arguments.length){this._createWidget(e,f)}};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(f,g){b.data(g,this.widgetName,this);this.element=b(g);this.options=b.extend(true,{},this.options,this._getCreateOptions(),f);var e=this;this.element.bind("remove."+this.widgetName,function(){e.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(f,g){var e=f;if(arguments.length===0){return b.extend({},this.options)}if(typeof f==="string"){if(g===d){return this.options[f]}e={};e[f]=g}this._setOptions(e);return this},_setOptions:function(f){var e=this;b.each(f,function(g,h){e._setOption(g,h)});return this},_setOption:function(e,f){this.options[e]=f;if(e==="disabled"){this.widget()[f?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",f)}return this},enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(e,f,g){var j,i,h=this.options[e];g=g||{};f=b.Event(f);f.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase();f.target=this.element[0];i=f.originalEvent;if(i){for(j in i){if(!(j in f)){f[j]=i[j]}}}this.element.trigger(f,g);return !(b.isFunction(h)&&h.call(this.element[0],f,g)===false||f.isDefaultPrevented())}}})(jQuery);/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(b,c){var a=false;b(document).mouseup(function(d){a=false});b.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var d=this;this.element.bind("mousedown."+this.widgetName,function(e){return d._mouseDown(e)}).bind("click."+this.widgetName,function(e){if(true===b.data(e.target,d.widgetName+".preventClickEvent")){b.removeData(e.target,d.widgetName+".preventClickEvent");e.stopImmediatePropagation();return false}});this.started=false},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(f){if(a){return}(this._mouseStarted&&this._mouseUp(f));this._mouseDownEvent=f;var e=this,g=(f.which==1),d=(typeof this.options.cancel=="string"&&f.target.nodeName?b(f.target).closest(this.options.cancel).length:false);if(!g||d||!this._mouseCapture(f)){return true}this.mouseDelayMet=!this.options.delay;if(!this.mouseDelayMet){this._mouseDelayTimer=setTimeout(function(){e.mouseDelayMet=true},this.options.delay)}if(this._mouseDistanceMet(f)&&this._mouseDelayMet(f)){this._mouseStarted=(this._mouseStart(f)!==false);if(!this._mouseStarted){f.preventDefault();return true}}if(true===b.data(f.target,this.widgetName+".preventClickEvent")){b.removeData(f.target,this.widgetName+".preventClickEvent")}this._mouseMoveDelegate=function(h){return e._mouseMove(h)};this._mouseUpDelegate=function(h){return e._mouseUp(h)};b(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate);f.preventDefault();a=true;return true},_mouseMove:function(d){if(b.browser.msie&&!(document.documentMode>=9)&&!d.button){return this._mouseUp(d)}if(this._mouseStarted){this._mouseDrag(d);return d.preventDefault()}if(this._mouseDistanceMet(d)&&this._mouseDelayMet(d)){this._mouseStarted=(this._mouseStart(this._mouseDownEvent,d)!==false);(this._mouseStarted?this._mouseDrag(d):this._mouseUp(d))}return !this._mouseStarted},_mouseUp:function(d){b(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate);if(this._mouseStarted){this._mouseStarted=false;if(d.target==this._mouseDownEvent.target){b.data(d.target,this.widgetName+".preventClickEvent",true)}this._mouseStop(d)}return false},_mouseDistanceMet:function(d){return(Math.max(Math.abs(this._mouseDownEvent.pageX-d.pageX),Math.abs(this._mouseDownEvent.pageY-d.pageY))>=this.options.distance)},_mouseDelayMet:function(d){return this.mouseDelayMet},_mouseStart:function(d){},_mouseDrag:function(d){},_mouseStop:function(d){},_mouseCapture:function(d){return true}})})(jQuery);(function(c,d){c.widget("ui.resizable",c.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:false,animate:false,animateDuration:"slow",animateEasing:"swing",aspectRatio:false,autoHide:false,containment:false,ghost:false,grid:false,handles:"e,s,se",helper:false,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1000},_create:function(){var f=this,k=this.options;this.element.addClass("ui-resizable");c.extend(this,{_aspectRatio:!!(k.aspectRatio),aspectRatio:k.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:k.helper||k.ghost||k.animate?k.helper||"ui-resizable-helper":null});if(this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)){this.element.wrap(c('
').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")}));this.element=this.element.parent().data("resizable",this.element.data("resizable"));this.elementIsWrapper=true;this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")});this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0});this.originalResizeStyle=this.originalElement.css("resize");this.originalElement.css("resize","none");this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"}));this.originalElement.css({margin:this.originalElement.css("margin")});this._proportionallyResize()}this.handles=k.handles||(!c(".ui-resizable-handle",this.element).length?"e,s,se":{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"});if(this.handles.constructor==String){if(this.handles=="all"){this.handles="n,e,s,w,se,sw,ne,nw"}var l=this.handles.split(",");this.handles={};for(var g=0;g
');if(/sw|se|ne|nw/.test(j)){h.css({zIndex:++k.zIndex})}if("se"==j){h.addClass("ui-icon ui-icon-gripsmall-diagonal-se")}this.handles[j]=".ui-resizable-"+j;this.element.append(h)}}this._renderAxis=function(q){q=q||this.element;for(var n in this.handles){if(this.handles[n].constructor==String){this.handles[n]=c(this.handles[n],this.element).show()}if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var o=c(this.handles[n],this.element),p=0;p=/sw|ne|nw|se|n|s/.test(n)?o.outerHeight():o.outerWidth();var m=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join("");q.css(m,p);this._proportionallyResize()}if(!c(this.handles[n]).length){continue}}};this._renderAxis(this.element);this._handles=c(".ui-resizable-handle",this.element).disableSelection();this._handles.mouseover(function(){if(!f.resizing){if(this.className){var i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)}f.axis=i&&i[1]?i[1]:"se"}});if(k.autoHide){this._handles.hide();c(this.element).addClass("ui-resizable-autohide").hover(function(){if(k.disabled){return}c(this).removeClass("ui-resizable-autohide");f._handles.show()},function(){if(k.disabled){return}if(!f.resizing){c(this).addClass("ui-resizable-autohide");f._handles.hide()}})}this._mouseInit()},destroy:function(){this._mouseDestroy();var e=function(g){c(g).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){e(this.element);var f=this.element;f.after(this.originalElement.css({position:f.css("position"),width:f.outerWidth(),height:f.outerHeight(),top:f.css("top"),left:f.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle);e(this.originalElement);return this},_mouseCapture:function(f){var g=false;for(var e in this.handles){if(c(this.handles[e])[0]==f.target){g=true}}return !this.options.disabled&&g},_mouseStart:function(g){var j=this.options,f=this.element.position(),e=this.element;this.resizing=true;this.documentScroll={top:c(document).scrollTop(),left:c(document).scrollLeft()};if(e.is(".ui-draggable")||(/absolute/).test(e.css("position"))){e.css({position:"absolute",top:f.top,left:f.left})}this._renderProxy();var k=b(this.helper.css("left")),h=b(this.helper.css("top"));if(j.containment){k+=c(j.containment).scrollLeft()||0;h+=c(j.containment).scrollTop()||0}this.offset=this.helper.offset();this.position={left:k,top:h};this.size=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalSize=this._helper?{width:e.outerWidth(),height:e.outerHeight()}:{width:e.width(),height:e.height()};this.originalPosition={left:k,top:h};this.sizeDiff={width:e.outerWidth()-e.width(),height:e.outerHeight()-e.height()};this.originalMousePosition={left:g.pageX,top:g.pageY};this.aspectRatio=(typeof j.aspectRatio=="number")?j.aspectRatio:((this.originalSize.width/this.originalSize.height)||1);var i=c(".ui-resizable-"+this.axis).css("cursor");c("body").css("cursor",i=="auto"?this.axis+"-resize":i);e.addClass("ui-resizable-resizing");this._propagate("start",g);return true},_mouseDrag:function(e){var h=this.helper,g=this.options,m={},q=this,j=this.originalMousePosition,n=this.axis;var r=(e.pageX-j.left)||0,p=(e.pageY-j.top)||0;var i=this._change[n];if(!i){return false}var l=i.apply(this,[e,r,p]),k=c.browser.msie&&c.browser.version<7,f=this.sizeDiff;this._updateVirtualBoundaries(e.shiftKey);if(this._aspectRatio||e.shiftKey){l=this._updateRatio(l,e)}l=this._respectSize(l,e);this._propagate("resize",e);h.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"});if(!this._helper&&this._proportionallyResizeElements.length){this._proportionallyResize()}this._updateCache(l);this._trigger("resize",e,this.ui());return false},_mouseStop:function(h){this.resizing=false;var i=this.options,m=this;if(this._helper){var g=this._proportionallyResizeElements,e=g.length&&(/textarea/i).test(g[0].nodeName),f=e&&c.ui.hasScroll(g[0],"left")?0:m.sizeDiff.height,k=e?0:m.sizeDiff.width;var n={width:(m.helper.width()-k),height:(m.helper.height()-f)},j=(parseInt(m.element.css("left"),10)+(m.position.left-m.originalPosition.left))||null,l=(parseInt(m.element.css("top"),10)+(m.position.top-m.originalPosition.top))||null;if(!i.animate){this.element.css(c.extend(n,{top:l,left:j}))}m.helper.height(m.size.height);m.helper.width(m.size.width);if(this._helper&&!i.animate){this._proportionallyResize()}}c("body").css("cursor","auto");this.element.removeClass("ui-resizable-resizing");this._propagate("stop",h);if(this._helper){this.helper.remove()}return false},_updateVirtualBoundaries:function(g){var j=this.options,i,h,f,k,e;e={minWidth:a(j.minWidth)?j.minWidth:0,maxWidth:a(j.maxWidth)?j.maxWidth:Infinity,minHeight:a(j.minHeight)?j.minHeight:0,maxHeight:a(j.maxHeight)?j.maxHeight:Infinity};if(this._aspectRatio||g){i=e.minHeight*this.aspectRatio;f=e.minWidth/this.aspectRatio;h=e.maxHeight*this.aspectRatio;k=e.maxWidth/this.aspectRatio;if(i>e.minWidth){e.minWidth=i}if(f>e.minHeight){e.minHeight=f}if(hl.width),s=a(l.height)&&i.minHeight&&(i.minHeight>l.height);if(h){l.width=i.minWidth}if(s){l.height=i.minHeight}if(t){l.width=i.maxWidth}if(m){l.height=i.maxHeight}var f=this.originalPosition.left+this.originalSize.width,p=this.position.top+this.size.height;var k=/sw|nw|w/.test(q),e=/nw|ne|n/.test(q);if(h&&k){l.left=f-i.minWidth}if(t&&k){l.left=f-i.maxWidth}if(s&&e){l.top=p-i.minHeight}if(m&&e){l.top=p-i.maxHeight}var n=!l.width&&!l.height;if(n&&!l.left&&l.top){l.top=null}else{if(n&&!l.top&&l.left){l.left=null}}return l},_proportionallyResize:function(){var k=this.options;if(!this._proportionallyResizeElements.length){return}var g=this.helper||this.element;for(var f=0;f');var e=c.browser.msie&&c.browser.version<7,g=(e?1:0),h=(e?2:-1);this.helper.addClass(this._helper).css({width:this.element.outerWidth()+h,height:this.element.outerHeight()+h,position:"absolute",left:this.elementOffset.left-g+"px",top:this.elementOffset.top-g+"px",zIndex:++i.zIndex});this.helper.appendTo("body").disableSelection()}else{this.helper=this.element}},_change:{e:function(g,f,e){return{width:this.originalSize.width+f}},w:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{left:i.left+f,width:g.width-f}},n:function(h,f,e){var j=this.options,g=this.originalSize,i=this.originalPosition;return{top:i.top+e,height:g.height-e}},s:function(g,f,e){return{height:this.originalSize.height+e}},se:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},sw:function(g,f,e){return c.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[g,f,e]))},ne:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[g,f,e]))},nw:function(g,f,e){return c.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[g,f,e]))}},_propagate:function(f,e){c.ui.plugin.call(this,f,[e,this.ui()]);(f!="resize"&&this._trigger(f,e,this.ui()))},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}});c.extend(c.ui.resizable,{version:"1.8.18"});c.ui.plugin.add("resizable","alsoResize",{start:function(f,g){var e=c(this).data("resizable"),i=e.options;var h=function(j){c(j).each(function(){var k=c(this);k.data("resizable-alsoresize",{width:parseInt(k.width(),10),height:parseInt(k.height(),10),left:parseInt(k.css("left"),10),top:parseInt(k.css("top"),10)})})};if(typeof(i.alsoResize)=="object"&&!i.alsoResize.parentNode){if(i.alsoResize.length){i.alsoResize=i.alsoResize[0];h(i.alsoResize)}else{c.each(i.alsoResize,function(j){h(j)})}}else{h(i.alsoResize)}},resize:function(g,i){var f=c(this).data("resizable"),j=f.options,h=f.originalSize,l=f.originalPosition;var k={height:(f.size.height-h.height)||0,width:(f.size.width-h.width)||0,top:(f.position.top-l.top)||0,left:(f.position.left-l.left)||0},e=function(m,n){c(m).each(function(){var q=c(this),r=c(this).data("resizable-alsoresize"),p={},o=n&&n.length?n:q.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];c.each(o,function(s,u){var t=(r[u]||0)+(k[u]||0);if(t&&t>=0){p[u]=t||null}});q.css(p)})};if(typeof(j.alsoResize)=="object"&&!j.alsoResize.nodeType){c.each(j.alsoResize,function(m,n){e(m,n)})}else{e(j.alsoResize)}},stop:function(e,f){c(this).removeData("resizable-alsoresize")}});c.ui.plugin.add("resizable","animate",{stop:function(i,n){var p=c(this).data("resizable"),j=p.options;var h=p._proportionallyResizeElements,e=h.length&&(/textarea/i).test(h[0].nodeName),f=e&&c.ui.hasScroll(h[0],"left")?0:p.sizeDiff.height,l=e?0:p.sizeDiff.width;var g={width:(p.size.width-l),height:(p.size.height-f)},k=(parseInt(p.element.css("left"),10)+(p.position.left-p.originalPosition.left))||null,m=(parseInt(p.element.css("top"),10)+(p.position.top-p.originalPosition.top))||null;p.element.animate(c.extend(g,m&&k?{top:m,left:k}:{}),{duration:j.animateDuration,easing:j.animateEasing,step:function(){var o={width:parseInt(p.element.css("width"),10),height:parseInt(p.element.css("height"),10),top:parseInt(p.element.css("top"),10),left:parseInt(p.element.css("left"),10)};if(h&&h.length){c(h[0]).css({width:o.width,height:o.height})}p._updateCache(o);p._propagate("resize",i)}})}});c.ui.plugin.add("resizable","containment",{start:function(f,r){var t=c(this).data("resizable"),j=t.options,l=t.element;var g=j.containment,k=(g instanceof c)?g.get(0):(/parent/.test(g))?l.parent().get(0):g;if(!k){return}t.containerElement=c(k);if(/document/.test(g)||g==document){t.containerOffset={left:0,top:0};t.containerPosition={left:0,top:0};t.parentData={element:c(document),left:0,top:0,width:c(document).width(),height:c(document).height()||document.body.parentNode.scrollHeight}}else{var n=c(k),i=[];c(["Top","Right","Left","Bottom"]).each(function(p,o){i[p]=b(n.css("padding"+o))});t.containerOffset=n.offset();t.containerPosition=n.position();t.containerSize={height:(n.innerHeight()-i[3]),width:(n.innerWidth()-i[1])};var q=t.containerOffset,e=t.containerSize.height,m=t.containerSize.width,h=(c.ui.hasScroll(k,"left")?k.scrollWidth:m),s=(c.ui.hasScroll(k)?k.scrollHeight:e);t.parentData={element:k,left:q.left,top:q.top,width:h,height:s}}},resize:function(g,q){var t=c(this).data("resizable"),i=t.options,f=t.containerSize,p=t.containerOffset,m=t.size,n=t.position,r=t._aspectRatio||g.shiftKey,e={top:0,left:0},h=t.containerElement;if(h[0]!=document&&(/static/).test(h.css("position"))){e=p}if(n.left<(t._helper?p.left:0)){t.size.width=t.size.width+(t._helper?(t.position.left-p.left):(t.position.left-e.left));if(r){t.size.height=t.size.width/i.aspectRatio}t.position.left=i.helper?p.left:0}if(n.top<(t._helper?p.top:0)){t.size.height=t.size.height+(t._helper?(t.position.top-p.top):t.position.top);if(r){t.size.width=t.size.height*i.aspectRatio}t.position.top=t._helper?p.top:0}t.offset.left=t.parentData.left+t.position.left;t.offset.top=t.parentData.top+t.position.top;var l=Math.abs((t._helper?t.offset.left-e.left:(t.offset.left-e.left))+t.sizeDiff.width),s=Math.abs((t._helper?t.offset.top-e.top:(t.offset.top-p.top))+t.sizeDiff.height);var k=t.containerElement.get(0)==t.element.parent().get(0),j=/relative|absolute/.test(t.containerElement.css("position"));if(k&&j){l-=t.parentData.left}if(l+t.size.width>=t.parentData.width){t.size.width=t.parentData.width-l;if(r){t.size.height=t.size.width/t.aspectRatio}}if(s+t.size.height>=t.parentData.height){t.size.height=t.parentData.height-s;if(r){t.size.width=t.size.height*t.aspectRatio}}},stop:function(f,n){var q=c(this).data("resizable"),g=q.options,l=q.position,m=q.containerOffset,e=q.containerPosition,i=q.containerElement;var j=c(q.helper),r=j.offset(),p=j.outerWidth()-q.sizeDiff.width,k=j.outerHeight()-q.sizeDiff.height;if(q._helper&&!g.animate&&(/relative/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}if(q._helper&&!g.animate&&(/static/).test(i.css("position"))){c(this).css({left:r.left-e.left-m.left,width:p,height:k})}}});c.ui.plugin.add("resizable","ghost",{start:function(g,h){var e=c(this).data("resizable"),i=e.options,f=e.size;e.ghost=e.originalElement.clone();e.ghost.css({opacity:0.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof i.ghost=="string"?i.ghost:"");e.ghost.appendTo(e.helper)},resize:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost){e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})}},stop:function(f,g){var e=c(this).data("resizable"),h=e.options;if(e.ghost&&e.helper){e.helper.get(0).removeChild(e.ghost.get(0))}}});c.ui.plugin.add("resizable","grid",{resize:function(e,m){var p=c(this).data("resizable"),h=p.options,k=p.size,i=p.originalSize,j=p.originalPosition,n=p.axis,l=h._aspectRatio||e.shiftKey;h.grid=typeof h.grid=="number"?[h.grid,h.grid]:h.grid;var g=Math.round((k.width-i.width)/(h.grid[0]||1))*(h.grid[0]||1),f=Math.round((k.height-i.height)/(h.grid[1]||1))*(h.grid[1]||1);if(/^(se|s|e)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f}else{if(/^(ne)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f}else{if(/^(sw)$/.test(n)){p.size.width=i.width+g;p.size.height=i.height+f;p.position.left=j.left-g}else{p.size.width=i.width+g;p.size.height=i.height+f;p.position.top=j.top-f;p.position.left=j.left-g}}}}});var b=function(e){return parseInt(e,10)||0};var a=function(e){return !isNaN(parseInt(e,10))}})(jQuery);/*! + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' + + +
+
+
mcsimulation.h
+
+
+
1 
2 //███╗ ███╗ ██████╗ ██╗██████╗ ██████╗
3 //████╗ ████║██╔════╝ ██╔╝██╔══██╗██╔════╝
4 //██╔████╔██║██║ ██╔╝ ██║ ██║██║
5 //██║╚██╔╝██║██║ ██╔╝ ██║ ██║██║
6 //██║ ╚═╝ ██║╚██████╗██╔╝ ██████╔╝╚██████╗
7 //╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═════╝ ╚═════╝
8 
9 
11 
18 #ifndef MCSIMULATION_H
19 #define MCSIMULATION_H
20 
21 #include "dynamicsSimulation.h"
22 #include "scheme.h"
23 #include <vector>
24 
29 {
30 public:
31  static int count;
33  int id;
43  std::vector<std::vector<float>> ini_walker_positions;
45  std::vector <PLYObstacle>* plyObstacles_list;
47  std::vector <Cylinder>* cylinders_list;
55  MCSimulation();
56 
57 
62  MCSimulation(std::string config_file);
63 
68  MCSimulation(Parameters &params_);
69 
73  ~MCSimulation();
74 
78  void startSimulation();
79 
84  double getExpectedFreeeDecay(unsigned i);
85 
89  void iniObstacles();
90 
91 private:
92 
93  void addCylindersObstacles();
94 
95  void addPLYObstacles();
96 
97  void addVoxels();
98 
99  // void addCylindersConfigurations();
100 
101  //void addExtraObstacles();
102 
103 };
104 
105 #endif // MCSIMULATION_H
static int count
Definition: mcsimulation.h:31
+
MCSimulation()
Default constructor. Intialize everything with 0&#39;s and NULL states, object indexes are set to -1...
Definition: mcsimulation.cpp:9
+
SimulableSequence * dataSynth
Definition: mcsimulation.h:41
+
Parameters params
Definition: mcsimulation.h:39
+
Definition: parameters.h:22
+
void iniObstacles()
Definition: mcsimulation.cpp:114
+
std::vector< std::vector< float > > ini_walker_positions
Definition: mcsimulation.h:43
+
void startSimulation()
Warp function. Calls the dynamicEngine&#39;s native DynamicsSimulation::startSimulation function...
Definition: mcsimulation.cpp:89
+
Auxiliary class to save scheme_files values =========================================================...
Definition: scheme.h:14
+
std::vector< Cylinder > * cylinders_list
Definition: mcsimulation.h:47
+
Aplication Main Class ===============================================================================...
Definition: mcsimulation.h:28
+
DynamicsSimulation * dynamicsEngine
Definition: mcsimulation.h:35
+
Scheme scheme
Definition: mcsimulation.h:37
+
Dynamic simulation main class =============================================================/.
Definition: dynamicsSimulation.h:30
+
MR Sequence Primary Class =============================================================/.
Definition: simulablesequence.h:16
+
int id
Definition: mcsimulation.h:33
+
std::vector< PLYObstacle > * plyObstacles_list
Definition: mcsimulation.h:45
+
~MCSimulation()
Main destructor. Frees dynamicly allocated memory instances.
Definition: mcsimulation.cpp:306
+
+ + + + + diff --git a/doc/html/md_src__r_e_a_d_m_e.html b/doc/html/md_src__r_e_a_d_m_e.html new file mode 100644 index 0000000..b7b5d6e --- /dev/null +++ b/doc/html/md_src__r_e_a_d_m_e.html @@ -0,0 +1,105 @@ + + + + + + + +MCDC_simulator: Monte Carlo Diffusion and Collision Simulator + + + + + + + + + + + + + + +
+
+
+ + + + + + +
+
MCDC_simulator +  1.42.14_wf +
+
Monte Carlo Diffusion and Collision Simulator
+
+ + + + + + + + + +
+ +
+
+
+ +
+ +
+
+ + +
+ +
+ +
+
+
Monte Carlo Diffusion and Collision Simulator
+
+
+

Static building from sources:

+

Assuming a bin folder:

+

Cretes a folder mkdir bin

+

Compiles all the magic (statically, slowly, but without messy .o)

+

g++ -O3 -std=c++11 -lpthread -std=c++0x -pthread -I. main.cpp simulablesequence.cpp vertex.cpp obstacle.cpp collision.cpp scheme.cpp voxel.cpp cylinder.cpp walker.cpp mcsimulation.cpp parallelmcsimulation.cpp trajectory.cpp triangle.cpp parameters.cpp plyobstacle.cpp pgsesequence.cpp dynamicsSimulation.cpp simerrno.cpp collisionsphere.cpp cylindergammadistribution.cpp sentinel.cpp subdivision.cpp gradientwaveform.cpp propagator.cpp -o bin/MC-DC_Simulator

+
+
+ + + + diff --git a/doc/html/menu.js b/doc/html/menu.js new file mode 100644 index 0000000..97db4c2 --- /dev/null +++ b/doc/html/menu.js @@ -0,0 +1,26 @@ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} diff --git a/doc/html/menudata.js b/doc/html/menudata.js new file mode 100644 index 0000000..bb51526 --- /dev/null +++ b/doc/html/menudata.js @@ -0,0 +1,70 @@ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Related Pages",url:"pages.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"~",url:"functions_0x7e.html#index_0x7e"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"c",url:"functions_func.html#index_c"}, +{text:"d",url:"functions_func.html#index_d"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"o",url:"functions_func.html#index_o"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}, +{text:"u",url:"functions_func.html#index_u"}, +{text:"w",url:"functions_func.html#index_w"}, +{text:"~",url:"functions_func.html#index_0x7e"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars_b.html#index_b"}, +{text:"c",url:"functions_vars_c.html#index_c"}, +{text:"d",url:"functions_vars_d.html#index_d"}, +{text:"e",url:"functions_vars_e.html#index_e"}, +{text:"g",url:"functions_vars_g.html#index_g"}, +{text:"h",url:"functions_vars_h.html#index_h"}, +{text:"i",url:"functions_vars_i.html#index_i"}, +{text:"l",url:"functions_vars_l.html#index_l"}, +{text:"m",url:"functions_vars_m.html#index_m"}, +{text:"n",url:"functions_vars_n.html#index_n"}, +{text:"o",url:"functions_vars_o.html#index_o"}, +{text:"p",url:"functions_vars_p.html#index_p"}, +{text:"q",url:"functions_vars_q.html#index_q"}, +{text:"r",url:"functions_vars_r.html#index_r"}, +{text:"s",url:"functions_vars_s.html#index_s"}, +{text:"t",url:"functions_vars_t.html#index_t"}, +{text:"u",url:"functions_vars_u.html#index_u"}, +{text:"v",url:"functions_vars_v.html#index_v"}, +{text:"w",url:"functions_vars_w.html#index_w"}]}, +{text:"Enumerations",url:"functions_enum.html"}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/doc/html/nav_f.png b/doc/html/nav_f.png new file mode 100644 index 0000000..72a58a5 Binary files /dev/null and b/doc/html/nav_f.png differ diff --git a/doc/html/nav_g.png b/doc/html/nav_g.png new file mode 100644 index 0000000..2093a23 Binary files /dev/null and b/doc/html/nav_g.png differ diff --git a/doc/html/nav_h.png b/doc/html/nav_h.png new file mode 100644 index 0000000..33389b1 Binary files /dev/null and b/doc/html/nav_h.png differ diff --git a/doc/html/navtree.css b/doc/html/navtree.css new file mode 100644 index 0000000..0cc7e77 --- /dev/null +++ b/doc/html/navtree.css @@ -0,0 +1,146 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 250px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background-image:url("splitbar.png"); + background-size:100%; + background-repeat:no-repeat; + background-attachment: scroll; + cursor:ew-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/doc/html/navtree.js b/doc/html/navtree.js new file mode 100644 index 0000000..e6d31b0 --- /dev/null +++ b/doc/html/navtree.js @@ -0,0 +1,517 @@ +var navTreeSubIndices = new Array(); +var arrowDown = '▼'; +var arrowRight = '►'; + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function hashValue() +{ + return $(location).attr('hash').substring(1).replace(/[^\w\-]/g,''); +} + +function hashUrl() +{ + return '#'+hashValue(); +} + +function pathName() +{ + return $(location).attr('pathname').replace(/[^-A-Za-z0-9+&@#/%?=~_|!:,.;\(\)]/g, ''); +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does not work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + var level=-1; + var n = node; + while (n.parentNode) { level++; n=n.parentNode; } + if (node.childrenData) { + var imgNode = document.createElement("span"); + imgNode.className = 'arrow'; + imgNode.style.paddingLeft=(16*level).toString()+'px'; + imgNode.innerHTML=arrowRight; + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + node.plus_img.innerHTML=arrowRight; + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + var span = document.createElement("span"); + span.className = 'arrow'; + span.style.width = 16*(level+1)+'px'; + span.innerHTML = ' '; + domNode.appendChild(span); + } +} + +var animationInProgress = false; + +function gotoAnchor(anchor,aname,updateLocation) +{ + var pos, docContent = $('#doc-content'); + var ancParent = $(anchor.parent()); + if (ancParent.hasClass('memItemLeft') || + ancParent.hasClass('fieldname') || + ancParent.hasClass('fieldtype') || + ancParent.is(':header')) + { + pos = ancParent.position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + animationInProgress=true; + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + if (updateLocation) window.location.href=aname; + animationInProgress=false; + }); + } +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath(pathName()); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : "javascript:void(0)"; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var anchor = $(aname); + gotoAnchor(anchor,aname,true); + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var aname = hashUrl(); + var anchor = $(aname); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+hashValue()+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parent().attr('class')=='fieldname'){ + glowEffect(anchor.parent().parent(),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } + gotoAnchor(anchor,aname,false); +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath(pathName())+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + if ($('#nav-tree-contents .item:first').hasClass('selected')) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).css({'display':'block'}); + node.plus_img.innerHTML = arrowDown; + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+11) hash = '#'+parts[1].replace(/[^\w\-]/g,''); + else hash=''; + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (i==-1) { i=0; root=NAVTREE[0][1]; } // fallback: show index + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html(''); +} + +function showSyncOn(n,relpath) +{ + n.html(''); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2(pathName())+hashUrl()); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("span"); + o.node.plus_img.className = 'arrow'; + o.node.plus_img.innerHTML = arrowRight; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + $(window).load(function(){ + navTo(o,toroot,hashUrl(),relpath); + showRoot(); + }); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath(pathName())+':'+hashValue(); + a=$('.item a[class$="'+clslink.replace(/ + + + + + + +MCDC_simulator: src/obstacle.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    obstacle.h
    +
    +
    +
    1 
    9 #ifndef OBSTACLE_H
    10 #define OBSTACLE_H
    11 #include "collision.h"
    12 #include "walker.h"
    13 #include "Eigen/Core"
    14 class Obstacle
    15 {
    16 public:
    17 
    18  int id;
    20  double percolation;
    21  double T2;
    26  Obstacle();
    27 
    36  bool checkCollision(Walker& walker, Eigen::Array3d& step,const double& step_lenght, Collision& colision);
    37 
    40  void elasticBounceAgainsPlane(Eigen::Vector3d& ray_origin, Eigen::Vector3d& normal, double& t, Eigen::Vector3d &step);
    41 
    46  double minDistance(Walker& w);
    47 
    48 };
    49 
    50 #endif // OBSTACLE_H
    double percolation
    Definition: obstacle.h:20
    +
    int id
    Definition: obstacle.h:18
    +
    bool checkCollision(Walker &walker, Eigen::Array3d &step, const double &step_lenght, Collision &colision)
    Basic collision function. Returns the if there was any collision on against the obstacle.
    Definition: obstacle.cpp:8
    +
    double minDistance(Walker &w)
    Returns the minimum distance of collision.
    Definition: obstacle.cpp:26
    +
    double T2
    Definition: obstacle.h:21
    +
    int count_perc_crossings
    Definition: obstacle.h:19
    +
    Obstacle()
    Default constructor. Does nothing.
    Definition: obstacle.cpp:4
    +
    Collision Final class =====================================================================/.
    Definition: collision.h:19
    +
    Obstacle Base Class ==============================================================================/.
    Definition: obstacle.h:14
    +
    Spin Final class =============================================================/.
    Definition: walker.h:23
    +
    +
    + + + + diff --git a/doc/html/open.png b/doc/html/open.png new file mode 100644 index 0000000..30f75c7 Binary files /dev/null and b/doc/html/open.png differ diff --git a/doc/html/pages.html b/doc/html/pages.html new file mode 100644 index 0000000..ed8a26c --- /dev/null +++ b/doc/html/pages.html @@ -0,0 +1,105 @@ + + + + + + + +MCDC_simulator: Related Pages + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    +
    + + + + diff --git a/doc/html/parallelmcsimulation_8h_source.html b/doc/html/parallelmcsimulation_8h_source.html new file mode 100644 index 0000000..f59113c --- /dev/null +++ b/doc/html/parallelmcsimulation_8h_source.html @@ -0,0 +1,116 @@ + + + + + + + +MCDC_simulator: src/parallelmcsimulation.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    parallelmcsimulation.h
    +
    +
    +
    1 
    7 #ifndef PARALLELMCSIMULATION_H
    8 #define PARALLELMCSIMULATION_H
    9 
    10 #include "mcsimulation.h"
    11 #include <thread>
    12 
    13 
    19 {
    20 public:
    21 
    27  unsigned stuck_count;
    28  unsigned illegal_count;
    29  double icvf;
    30  double aprox_volumen;
    31  std::vector<MCSimulation*> simulations;
    32  std::vector<std::thread> sim_threads;
    33  std::vector <PLYObstacle> plyObstacles_list;
    34  std::vector <Cylinder> cylinders_list;
    36  std::vector<Eigen::Vector3f> total_ini_walker_pos;
    42  ParallelMCSimulation(std::string config_file);
    43 
    49 
    50 
    52 
    54 
    58  void startSimulation();
    59 
    60 private:
    64  void getNumberOfProcessors();
    65 
    69  void initializeUnitSimulations();
    70 
    74  void jointResults();
    75 
    79  void specialInitializations();
    80 
    84  void addCylindersObstaclesFromFiles();
    85 
    89  void addCylindersConfigurations();
    90 
    91 };
    92 
    93 #endif // PARALLELMCSIMULATION_H
    std::vector< Eigen::Vector3f > total_ini_walker_pos
    Definition: parallelmcsimulation.h:36
    +
    unsigned total_sim_particles
    Definition: parallelmcsimulation.h:25
    +
    Parameters params
    Definition: parallelmcsimulation.h:22
    +
    unsigned stuck_count
    Definition: parallelmcsimulation.h:27
    +
    double aprox_volumen
    Definition: parallelmcsimulation.h:30
    +
    double mean_second_passed
    Definition: parallelmcsimulation.h:24
    +
    Definition: parameters.h:22
    +
    std::vector< std::thread > sim_threads
    Definition: parallelmcsimulation.h:32
    +
    unsigned illegal_count
    Definition: parallelmcsimulation.h:28
    +
    Class to handle multiprocessor paralellisation. This class basicly controls and syncronize several in...
    Definition: parallelmcsimulation.h:18
    +
    void startSimulation()
    Warp function. Calls the MCSimulation&#39;s native function for all the instances.
    Definition: parallelmcsimulation.cpp:69
    +
    std::vector< Cylinder > cylinders_list
    Definition: parallelmcsimulation.h:34
    +
    std::vector< MCSimulation * > simulations
    Definition: parallelmcsimulation.h:31
    +
    double icvf
    Definition: parallelmcsimulation.h:29
    +
    std::vector< PLYObstacle > plyObstacles_list
    Definition: parallelmcsimulation.h:33
    +
    +
    + + + + diff --git a/doc/html/parameters_8h_source.html b/doc/html/parameters_8h_source.html new file mode 100644 index 0000000..6887f9b --- /dev/null +++ b/doc/html/parameters_8h_source.html @@ -0,0 +1,176 @@ + + + + + + + +MCDC_simulator: src/parameters.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    parameters.h
    +
    +
    +
    1 
    8 #ifndef PARAMETERS_H
    9 #define PARAMETERS_H
    10 
    11 #include <vector>
    12 #include "Eigen/Core"
    13 #include "subdivision.h"
    14 #include <utility>
    15 
    16 
    23 {
    24 public:
    25 
    26  unsigned num_walkers;
    27  unsigned num_steps;
    28  double diffusivity;
    29  double sim_duration;
    30  bool write_traj;
    31  bool write_txt;
    32  bool write_bin;
    35  long seed;
    36  bool verbatim;
    37  std::string traj_file;
    38  std::string output_base_name;
    39  std::string ini_walkers_file;
    41  std::string ini_walker_flag;
    42  std::string scheme_file;
    43  Eigen::Vector3d min_limits;
    44  Eigen::Vector3d max_limits;
    46  std::vector<std::string> cylinders_files;
    47  std::vector<std::string> PLY_files;
    48  std::vector<double> PLY_scales;
    49  std::vector<double> PLY_percolation;
    51  std::vector<float> ini_delta_pos;
    53  unsigned num_proc;
    55  std::vector<std::pair<Eigen::Vector3d,Eigen::Vector3d>>voxels_list;
    57  std::vector<Eigen::Vector3f> prop_dirs;
    59  std::vector<unsigned> record_pos_times;
    60  std::vector<unsigned> record_phase_times;
    61  std::vector<unsigned> record_prop_times;
    63  bool hex_packing;
    68  bool gamma_output_conf;
    69  double gamma_packing_alpha;
    70  double gamma_packing_beta;
    71  double gamma_icvf;
    72  double gamma_output_configuration;
    73  unsigned gamma_num_cylinders;
    74  float min_cyl_radii;
    76  bool subdivision_flag = false;
    77  unsigned number_subdivisions = 0;
    78  std::string subdivisions_file = "";
    79  std::vector<Subdivision> subdivisions;
    81  double obstacle_permeability = 0;
    83  double max_simulation_time = 0;
    85  bool log_phase_shift = false;
    86  bool log_opp = false;
    87  bool discard_stucks = true;
    88  bool discard_illegals = true;
    90  bool log_propagator = false;
    92  Eigen::Vector3d min_sampling_area;
    93  Eigen::Vector3d max_sampling_area;
    97  bool img_signal;
    103  Parameters();
    104 
    116  void readSchemeFile(std::string conf_file);
    117 
    118  //Set Methods:
    119 
    124  void setNumWalkers(unsigned N);
    125 
    130  void setNumSteps(unsigned T);
    131 
    136  void setDiffusivity(double Diff);
    137 
    142  void setSimDuration(double duration);
    143 
    148  void setWriteTrajFlag(bool write_bin);
    149 
    154  void setWriteTextFlag(bool write_txt_);
    155 
    160  void setMinLimits(Eigen::Vector3d min_limits_);
    161 
    166  void setMaxLimits(Eigen::Vector3d max_limits_);
    167 
    172  void setTrajFileName(std::string traj_file_);
    173 
    178  void setOutputBaseFileName(std::string output_base_name_);
    179 
    184  void iniWalkersFileName(std::string ini_walkers_file_);
    185 
    190  void setSchemeFileName(std::string scheme_file_);
    191 
    192  // Get Methods
    193 
    197  unsigned getNumWalkers();
    198 
    202  unsigned getNumSteps();
    203 
    207  double getDiffusivity();
    208 
    212  bool getWriteTrajFlag();
    213 
    217  bool getWriteTextFlag();
    218 
    222  Eigen::Vector3d getMinLimits();
    223 
    227  Eigen::Vector3d getMaxLimits();
    228 
    232  std::string getTrajFileName();
    233 
    237  std::string getOutputBaseFileName();
    238 
    242  std::string getIniWalkersFileName();
    243 
    247  std::string getSchemeFileName();
    248 
    249  static int str_dist(std::string s, std::string t);
    250 
    254  void addSubdivisions();
    255 
    256 private:
    257 
    262  void readObstacles(std::ifstream &in);
    263 
    268  void readVoxels(std::ifstream& in);
    269 
    275  void readInfoGatheringParams(std::ifstream& in);
    276 
    281  void readHexagonalParams(std::ifstream& in);
    282 
    287  void readGammaParams(std::ifstream& in);
    288 
    293  void readSubdivisionFile();
    294 
    295 
    299  void readPropagatorDirections(std::string dir_path);
    300 
    304  void readPLYFileList(std::string path);
    305 
    310  void readPLYFileListScalePercolation(std::string path);
    311 
    312 
    313 };
    314 
    315 #endif // PARAMETERS_H
    bool write_bin
    Definition: parameters.h:32
    +
    Eigen::Vector3d min_sampling_area
    Definition: parameters.h:92
    +
    bool gamma_packing
    Definition: parameters.h:67
    +
    void setSchemeFileName(std::string scheme_file_)
    Sets the scheme file name to be used for the data synthesis.
    Definition: parameters.cpp:281
    +
    bool img_signal
    Definition: parameters.h:97
    +
    std::string ini_walker_flag
    Definition: parameters.h:41
    +
    bool write_traj
    Definition: parameters.h:30
    +
    std::string getTrajFileName()
    Definition: parameters.cpp:324
    +
    bool verbatim
    Definition: parameters.h:36
    +
    std::vector< unsigned > record_pos_times
    Definition: parameters.h:59
    +
    float min_cyl_radii
    Definition: parameters.h:74
    +
    unsigned num_proc
    Definition: parameters.h:53
    +
    std::string output_base_name
    Definition: parameters.h:38
    +
    Parameters()
    Default constructor. Sets all the parameters to default and NULL values.
    Definition: parameters.cpp:8
    +
    bool subdivision_flag
    Definition: parameters.h:76
    +
    unsigned ini_walkers_file_count
    Definition: parameters.h:40
    +
    Definition: parameters.h:22
    +
    void setMaxLimits(Eigen::Vector3d max_limits_)
    set the bottom left corner of the voxel to be simulated.
    Definition: parameters.cpp:261
    +
    long seed
    Definition: parameters.h:35
    +
    bool log_phase_shift
    Definition: parameters.h:85
    +
    std::vector< float > ini_delta_pos
    Definition: parameters.h:51
    +
    bool custom_sampling_area
    Definition: parameters.h:94
    +
    double hex_packing_radius
    Definition: parameters.h:64
    +
    std::string ini_walkers_file
    Definition: parameters.h:39
    +
    bool hex_packing
    Definition: parameters.h:63
    +
    std::vector< Eigen::Vector3f > prop_dirs
    Definition: parameters.h:57
    +
    bool separate_signals
    Definition: parameters.h:96
    +
    Eigen::Vector3d min_limits
    Definition: parameters.h:43
    +
    unsigned getNumWalkers()
    Definition: parameters.cpp:289
    +
    void iniWalkersFileName(std::string ini_walkers_file_)
    Definition: parameters.cpp:276
    +
    bool log_opp
    Definition: parameters.h:86
    +
    double max_simulation_time
    Definition: parameters.h:83
    +
    Eigen::Vector3d max_sampling_area
    Definition: parameters.h:93
    +
    void setDiffusivity(double Diff)
    set the simulation diffusivity.
    Definition: parameters.cpp:235
    +
    std::vector< double > PLY_scales
    Definition: parameters.h:48
    +
    std::string traj_file
    Definition: parameters.h:37
    +
    std::vector< std::string > cylinders_files
    Definition: parameters.h:46
    +
    void setSimDuration(double duration)
    sets the simulation duration.
    Definition: parameters.cpp:240
    +
    double sim_duration
    Definition: parameters.h:29
    +
    bool scale_from_stu
    Definition: parameters.h:33
    +
    std::string subdivisions_file
    Definition: parameters.h:78
    +
    bool computeVolume
    Definition: parameters.h:95
    +
    unsigned num_walkers
    Definition: parameters.h:26
    +
    bool log_propagator
    Definition: parameters.h:90
    +
    bool discard_stucks
    Definition: parameters.h:87
    +
    std::string getOutputBaseFileName()
    Definition: parameters.cpp:329
    +
    void setTrajFileName(std::string traj_file_)
    Set the prefix of the name for the traj file (txt and .traj)
    Definition: parameters.cpp:266
    +
    std::vector< unsigned > record_prop_times
    Definition: parameters.h:61
    +
    Eigen::Vector3d getMinLimits()
    Definition: parameters.cpp:314
    +
    bool save_phase_shift
    Definition: parameters.h:34
    +
    double getDiffusivity()
    Definition: parameters.cpp:299
    +
    std::vector< std::pair< Eigen::Vector3d, Eigen::Vector3d > > voxels_list
    Definition: parameters.h:55
    +
    bool write_txt
    Definition: parameters.h:31
    +
    std::vector< Subdivision > subdivisions
    Definition: parameters.h:79
    +
    std::vector< std::string > PLY_files
    Definition: parameters.h:47
    +
    Eigen::Vector3d max_limits
    Definition: parameters.h:44
    +
    unsigned number_subdivisions
    Definition: parameters.h:77
    +
    double hex_packing_separation
    Definition: parameters.h:65
    +
    void setOutputBaseFileName(std::string output_base_name_)
    Set the prefix of the name for all the outputs in the simulation.
    Definition: parameters.cpp:271
    +
    unsigned getNumSteps()
    Definition: parameters.cpp:294
    +
    bool discard_illegals
    Definition: parameters.h:88
    +
    std::string getSchemeFileName()
    Definition: parameters.cpp:339
    +
    void setMinLimits(Eigen::Vector3d min_limits_)
    set the bottom left corner of the voxel to be simulated.
    Definition: parameters.cpp:255
    +
    std::vector< unsigned > record_phase_times
    Definition: parameters.h:60
    +
    void setNumSteps(unsigned T)
    set the number of steps in the simulation.
    Definition: parameters.cpp:230
    +
    double collision_sphere_distance
    Definition: parameters.h:82
    +
    bool getWriteTrajFlag()
    Definition: parameters.cpp:304
    +
    Eigen::Vector3d getMaxLimits()
    Definition: parameters.cpp:319
    +
    double diffusivity
    Definition: parameters.h:28
    +
    double obstacle_permeability
    Definition: parameters.h:81
    +
    bool getWriteTextFlag()
    Definition: parameters.cpp:309
    +
    std::string scheme_file
    Definition: parameters.h:42
    +
    std::vector< double > PLY_percolation
    Definition: parameters.h:49
    +
    unsigned num_steps
    Definition: parameters.h:27
    +
    void readSchemeFile(std::string conf_file)
    Reads all the parameters from a scheme file in the correct format the function scales them if necessa...
    Definition: parameters.cpp:47
    +
    +
    + + + + diff --git a/doc/html/pgsesequence_8h_source.html b/doc/html/pgsesequence_8h_source.html new file mode 100644 index 0000000..e4b39c7 --- /dev/null +++ b/doc/html/pgsesequence_8h_source.html @@ -0,0 +1,126 @@ + + + + + + + +MCDC_simulator: src/pgsesequence.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    pgsesequence.h
    +
    +
    +
    1 
    11 #ifndef PGSESEQUENCE_H
    12 #define PGSESEQUENCE_H
    13 
    14 #include <vector>
    15 #include <iostream>
    16 #include "trajectory.h"
    17 #include <Eigen/Core>
    18 #include "simulablesequence.h"
    19 #include "scheme.h"
    20 typedef unsigned long ulong;
    21 
    22 
    27 public:
    28 
    29  double TE;
    31  int T;
    33  double dyn_duration;
    35  std::vector< std::vector<double> > scheme;
    39  //constructors
    40 
    44  PGSESequence();
    48  PGSESequence(Scheme scheme_);
    53  PGSESequence(Scheme scheme_,const char* traj_file_name);
    57  PGSESequence(const char* scheme_file_name);
    62  PGSESequence(const char* scheme_file_name,const char* traj_file_name);
    63 
    67  ~PGSESequence();
    68 
    72  void getGradImpulse(int i, double t, double tLast, Eigen::Vector3d &Gdt);
    73 
    74 
    78  void getGradImpuse(int i, double t, Eigen::Vector3d Gdt);
    79 
    83  double getbValue(unsigned);
    84 
    88  double getFreeDecay(unsigned i,double D);
    89 
    90 
    91  //TODO: to implement
    95  double getNumericalbValue(unsigned);
    96 
    100  void getDWISignal();
    101 
    105  void readSchemeFile();
    106 
    110  virtual void update_phase_shift(double dt,double dt_last,Walker walker);
    111 
    115  virtual void update_phase_shift(double time_step, Eigen::Matrix3Xd trajectory);
    116 
    120  virtual void update_DWI_signal(Walker &walker);
    121 
    125  double get_adt(int grad_index, double t, double tLast);
    126 
    130  double print_adt_and_dt(int grad_index, double t, double tLast);
    131 
    132  virtual void setNumberOfSteps(unsigned T);
    133 
    134  virtual void computeDynamicTimeSteps();
    135 
    136 private:
    137  virtual void readSchemeParameters(Scheme scheme_);
    138 
    139 
    140 
    141 };
    142 #endif // PGSESEQUENCE_H
    double TE
    Definition: pgsesequence.h:29
    +
    int T
    Definition: pgsesequence.h:31
    +
    double print_adt_and_dt(int grad_index, double t, double tLast)
    prints the array adt in the format ().
    +
    virtual void computeDynamicTimeSteps()
    Compute the time for all the steps when they are not constant.
    Definition: pgsesequence.cpp:364
    +
    Trajectory trajectory
    Definition: pgsesequence.h:37
    +
    virtual void setNumberOfSteps(unsigned T)
    Set the number of time steps if they are known.
    Definition: pgsesequence.cpp:359
    +
    double getNumericalbValue(unsigned)
    Definition: pgsesequence.cpp:458
    +
    double getbValue(unsigned)
    Analytical defined b-value.
    Definition: pgsesequence.cpp:442
    +
    void getGradImpulse(int i, double t, double tLast, Eigen::Vector3d &Gdt)
    For using w/o the adt array.
    Definition: pgsesequence.cpp:83
    +
    PGSESequence()
    Default constructor, set default NULL values. Not to be used.
    Definition: pgsesequence.cpp:15
    +
    Auxiliary class to save scheme_files values =========================================================...
    Definition: scheme.h:14
    +
    virtual void update_DWI_signal(Walker &walker)
    Updates the DWI signal using the cumulated phase shift.
    Definition: pgsesequence.cpp:282
    +
    ~PGSESequence()
    Destuctor. Does nothing.
    Definition: pgsesequence.cpp:79
    +
    void readSchemeFile()
    reads the scheme files
    Definition: pgsesequence.cpp:189
    +
    std::vector< std::vector< double > > scheme
    Definition: pgsesequence.h:35
    +
    double dyn_duration
    Definition: pgsesequence.h:33
    +
    MR Sequence Primary Class =============================================================/.
    Definition: simulablesequence.h:16
    +
    void getDWISignal()
    Computes de DW signal from a trajfile.
    Definition: pgsesequence.cpp:463
    +
    double get_adt(int grad_index, double t, double tLast)
    computes de signal value and sign in a certain time step.
    Definition: pgsesequence.cpp:520
    +
    Spin Final class =============================================================/.
    Definition: walker.h:23
    +
    double getFreeDecay(unsigned i, double D)
    Expected free Decay.
    Definition: pgsesequence.cpp:451
    +
    Definition: pgsesequence.h:26
    +
    void getGradImpuse(int i, double t, Eigen::Vector3d Gdt)
    For using with the adt array.
    +
    Auxiliary class. Handles i/o operation of walker trayectories. ============================/.
    Definition: trajectory.h:18
    +
    virtual void update_phase_shift(double dt, double dt_last, Walker walker)
    Definition: pgsesequence.cpp:230
    +
    +
    + + + + diff --git a/doc/html/plyobstacle_8h_source.html b/doc/html/plyobstacle_8h_source.html new file mode 100644 index 0000000..674b9a6 --- /dev/null +++ b/doc/html/plyobstacle_8h_source.html @@ -0,0 +1,107 @@ + + + + + + + +MCDC_simulator: src/plyobstacle.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    plyobstacle.h
    +
    +
    +
    1 
    10 #ifndef PLYOBSTACLE_H
    11 #define PLYOBSTACLE_H
    12 
    13 #include "obstacle.h"
    14 #include "triangle.h"
    15 
    20 class PLYObstacle : public Obstacle
    21 {
    22 public:
    23 
    24  unsigned vert_number;
    25  unsigned face_number;
    26  std::string file_path;
    27  Vertex* vertices;
    28  Triangle* faces;
    29  double scale_factor;
    30  int id;
    31 
    32  PLYObstacle();
    33  PLYObstacle(std::string path,double scale_factor_ = 1);
    34  PLYObstacle(std::string path, std::vector<Eigen::Vector3d> &centers, double max_distance=INFINITY,double scale_factor_ = 1);
    35 
    36 
    37  void readPLY_ASCII_triangleFan(std::string ply_file);
    38  void readPLY_ASCII_triangles(std::string ply_file);
    39  void readPLY_ASCII_trianglesSubdivitionDistance(std::string ply_file, std::vector<Eigen::Vector3d> &centers, double max_distance);
    40 
    41  void setScaleFactor(double scale){scale_factor = scale;}
    42 
    43 // bool computeStepCollition(Walker &w, double step[3], const double &step_length,double end_point[3], Collision& colision);
    44  bool checkCollision(Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision);
    45 
    46  bool checkCollision(Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision, std::vector<unsigned> &triangle_list, unsigned list_end);
    47 
    48  double minDistance(Walker& w, unsigned t);
    49 
    50 private:
    51  // Compare 2 coliision and decides wich one has the highest piority and if
    52  // colision_2 neess to be handled differently
    53  void handleCollisions(Collision& colision_confirmed, Collision& colision_2, double& max_distance, Eigen::Vector3d &end_point, const unsigned triangle_indx);
    54 
    55  //Function to check if a point is close to a a certain triangle. save the result in a Collision object
    56  void checkIfItsNearToTriangle(const Eigen::Vector3d end_point, const unsigned triangle_ind, Collision &colision);
    57 
    58  //Given the collision, handles the next walker status and the bouncing, if needed.
    59  bool updateWalkerStatusAndHandleBouncing(Walker &walker, Eigen::Vector3d &ray_origin, Eigen::Vector3d &step, Collision &colision);
    60 
    61 };
    62 
    63 #endif // PLYOBSTACLE_H
    Auxiliary class. Implements basic vertices. ====================================/.
    Definition: vertex.h:15
    +
    Auxiliary class. Implements trangular barriers. ===================================/.
    Definition: triangle.h:16
    +
    Collision Final class =====================================================================/.
    Definition: collision.h:19
    +
    Obstacle Base Class ==============================================================================/.
    Definition: obstacle.h:14
    +
    PlyObstacle Derived Class ====================================================================/.
    Definition: plyobstacle.h:20
    +
    Spin Final class =============================================================/.
    Definition: walker.h:23
    +
    +
    + + + + diff --git a/doc/html/propagator_8h_source.html b/doc/html/propagator_8h_source.html new file mode 100644 index 0000000..4a301b1 --- /dev/null +++ b/doc/html/propagator_8h_source.html @@ -0,0 +1,102 @@ + + + + + + + +MCDC_simulator: src/propagator.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    propagator.h
    +
    +
    +
    1 #ifndef PROPAGATOR_H
    2 #define PROPAGATOR_H
    3 
    4 #include "constants.h"
    5 #include "Eigen/Core"
    6 #include <vector>
    7 
    8 
    9 class Propagator
    10 {
    11 public:
    12 
    13  uint num_dirs =0;
    14  uint num_times = 0;
    15  Eigen::Matrix3Xf directions;
    16 
    17  std::vector<unsigned> log_times;
    18 
    19  std::vector<std::vector<float>> propagator_log;
    20 
    21  Propagator();
    22 
    23  void initPropagator();
    24 
    25 };
    26 
    27 #endif // PROPAGATOR_H
    Definition: propagator.h:9
    +
    +
    + + + + diff --git a/doc/html/resize.js b/doc/html/resize.js new file mode 100644 index 0000000..56e4a02 --- /dev/null +++ b/doc/html/resize.js @@ -0,0 +1,114 @@ +function initResizable() +{ + var cookie_namespace = 'doxygen'; + var sidenav,navtree,content,header,collapsed,collapsedWidth=0,barWidth=6,desktop_vp=768,titleHeight; + + function readCookie(cookie) + { + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) { + var index = document.cookie.indexOf(myCookie); + if (index != -1) { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; + } + + function writeCookie(cookie, val, expiration) + { + if (val==undefined) return; + if (expiration == null) { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; + } + + function resizeWidth() + { + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).outerWidth(); + content.css({marginLeft:parseInt(sidenavWidth)+"px"}); + writeCookie('width',sidenavWidth-barWidth, null); + } + + function restoreWidth(navWidth) + { + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+barWidth+"px"}); + sidenav.css({width:navWidth + "px"}); + } + + function resizeHeight() + { + var headerHeight = header.outerHeight(); + var footerHeight = footer.outerHeight(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px"}); + var width=$(window).width(); + if (width!=collapsedWidth) { + if (width=desktop_vp) { + if (!collapsed) { + collapseExpand(); + } + } else if (width>desktop_vp && collapsedWidth0) { + restoreWidth(0); + collapsed=true; + } + else { + var width = readCookie('width'); + if (width>200 && width<$(window).width()) { restoreWidth(width); } else { restoreWidth(200); } + collapsed=false; + } + } + + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(sidenav).resizable({ minWidth: 0 }); + $(window).resize(function() { resizeHeight(); }); + var device = navigator.userAgent.toLowerCase(); + var touch_device = device.match(/(iphone|ipod|ipad|android)/); + if (touch_device) { /* wider split bar for touch only devices */ + $(sidenav).css({ paddingRight:'20px' }); + $('.ui-resizable-e').css({ width:'20px' }); + $('#nav-sync').css({ right:'34px' }); + barWidth=20; + } + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(".ui-resizable-handle").dblclick(collapseExpand); + $(window).load(resizeHeight); +} + + diff --git a/doc/html/scheme_8h_source.html b/doc/html/scheme_8h_source.html new file mode 100644 index 0000000..bb05b46 --- /dev/null +++ b/doc/html/scheme_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +MCDC_simulator: src/scheme.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    scheme.h
    +
    +
    +
    1 
    9 #ifndef SCHEME_H
    10 #define SCHEME_H
    11 #include <vector>
    12 #include <string>
    13 
    14 class Scheme
    15 {
    16 public:
    17  std::string scheme_file;
    18  std::string header;
    19  std::string type;
    20  int num_rep;
    22  float duration;
    23  float T;
    27  std::vector< std::vector<double> > scheme;
    32  Scheme();
    33 
    38  Scheme(std::string scheme_file_);
    39 
    40  ~Scheme(){}
    41 
    45  void readSchemeFile(std::string scheme_file_,bool scale_from_stu = 0);
    46 
    47 
    48 private:
    49  void readPGSE(std::ifstream &in,bool scale_from_stu);
    50  void readAPGSE(std::ifstream &in,bool scale_from_stu);
    51  void readWaveForm(std::ifstream &in,bool scale_from_stu);
    52 
    53 };
    54 
    55 #endif // SCHEME_H
    std::string type
    Definition: scheme.h:19
    +
    std::string scheme_file
    Definition: scheme.h:17
    +
    std::vector< std::vector< double > > scheme
    Definition: scheme.h:27
    +
    bool scale_from_stu
    Definition: scheme.h:24
    +
    Auxiliary class to save scheme_files values =========================================================...
    Definition: scheme.h:14
    +
    float duration
    Definition: scheme.h:22
    +
    std::string header
    Definition: scheme.h:18
    +
    float T
    Definition: scheme.h:23
    +
    int num_rep
    Definition: scheme.h:20
    +
    +
    + + + + diff --git a/doc/html/search/all_0.html b/doc/html/search/all_0.html new file mode 100644 index 0000000..f25360b --- /dev/null +++ b/doc/html/search/all_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_0.js b/doc/html/search/all_0.js new file mode 100644 index 0000000..77cda61 --- /dev/null +++ b/doc/html/search/all_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['alpha',['alpha',['../class_cylinder_gamma_distribution.html#a8cae528f51692ed05049e4ea06c63722',1,'CylinderGammaDistribution']]], + ['appendrepetitionlabel',['appendRepetitionLabel',['../class_sim_errno.html#a3dfc14a69998cff0ee82f8bb6ef2ddc4',1,'SimErrno']]], + ['aprox_5fvolumen',['aprox_volumen',['../class_parallel_m_c_simulation.html#aa51edc0c79c6ae66ddd0046d21b871d4',1,'ParallelMCSimulation']]] +]; diff --git a/doc/html/search/all_1.html b/doc/html/search/all_1.html new file mode 100644 index 0000000..b13f0f7 --- /dev/null +++ b/doc/html/search/all_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_1.js b/doc/html/search/all_1.js new file mode 100644 index 0000000..e648bdc --- /dev/null +++ b/doc/html/search/all_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['beta',['beta',['../class_cylinder_gamma_distribution.html#a601a42ef7bacbf9696229efbd703f61e',1,'CylinderGammaDistribution']]], + ['big_5fsphere_5fdistance',['big_sphere_distance',['../class_collisionsphere.html#a4b791781efcb1af5198b22ea0b542cfb',1,'Collisionsphere']]], + ['big_5fsphere_5flist_5fend',['big_sphere_list_end',['../class_cylinder_collision_sphere.html#a303b3843a9c8ab9ae3e6f4cce85ae8e0',1,'CylinderCollisionSphere::big_sphere_list_end()'],['../class_p_l_y_collision_sphere.html#aadf7b345b8c91791fa96e00862bc8cbb',1,'PLYCollisionSphere::big_sphere_list_end()']]], + ['bounced_5fdirection',['bounced_direction',['../class_collision.html#aee20b80597eeea9b0c5a3ff0a5d0c81c',1,'Collision']]] +]; diff --git a/doc/html/search/all_10.html b/doc/html/search/all_10.html new file mode 100644 index 0000000..d1345a1 --- /dev/null +++ b/doc/html/search/all_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_10.js b/doc/html/search/all_10.js new file mode 100644 index 0000000..4959c6d --- /dev/null +++ b/doc/html/search/all_10.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['t',['T',['../class_gradient_waveform.html#af2f45ff237ba41afe3ff5cedb7c1c966',1,'GradientWaveform::T()'],['../class_p_g_s_e_sequence.html#a07e27e6e8a8506521386a291d62e8423',1,'PGSESequence::T()'],['../class_scheme.html#a9715a33d087d317724e96229572ebe0d',1,'Scheme::T()'],['../class_trajectory.html#ad9cbff5cf9f84ca1e2378d1d6105c5e3',1,'Trajectory::T()'],['../class_collision.html#a195d201b0843d9f7190ac3a27761b4e7',1,'Collision::t()']]], + ['t2',['T2',['../class_obstacle.html#a374f9b4486f63abce9696f5fe3a13e8e',1,'Obstacle']]], + ['te',['TE',['../class_gradient_waveform.html#a4e0c0163e36cc017f5b147e9ca3022e0',1,'GradientWaveform::TE()'],['../class_p_g_s_e_sequence.html#a06df939859fd2ed6104bfee584f893a1',1,'PGSESequence::TE()']]], + ['time_5fsteps',['time_steps',['../class_simulable_sequence.html#a7e7e1a0de6045046061ffccaba4fa5ee',1,'SimulableSequence']]], + ['total_5fini_5fwalker_5fpos',['total_ini_walker_pos',['../class_parallel_m_c_simulation.html#a5efe5faa45e57e6ff3827e9ec9e52a64',1,'ParallelMCSimulation']]], + ['total_5fsim_5fparticles',['total_sim_particles',['../class_parallel_m_c_simulation.html#a18326e05c32fac82264d7351d78a7433',1,'ParallelMCSimulation']]], + ['total_5ftries',['total_tries',['../class_dynamics_simulation.html#abb056d8cde70aab8b6fa81ee8cdb231e',1,'DynamicsSimulation']]], + ['traj_5ffile',['traj_file',['../class_parameters.html#a75346dc3b7a41548a2f9e0560343df24',1,'Parameters']]], + ['trajectory',['Trajectory',['../class_trajectory.html',1,'Trajectory'],['../class_trajectory.html#aa340ba80f1f4d1aa39f19f069d5d8089',1,'Trajectory::Trajectory()'],['../class_trajectory.html#a4879a4d0944eb04246e21deac940b90d',1,'Trajectory::Trajectory(const char *traj_file, bool isBigEndian_=true, std::string io_flag_="rb")'],['../class_dynamics_simulation.html#ab69fedf7129784621eec440ba873218d',1,'DynamicsSimulation::trajectory()'],['../class_gradient_waveform.html#a83a7c844f86acee3b7ab12e7e70202af',1,'GradientWaveform::trajectory()'],['../class_p_g_s_e_sequence.html#a0fd0fb458384bfb65070fdab5165dde5',1,'PGSESequence::trajectory()']]], + ['trajfile',['trajfile',['../class_trajectory.html#aee056cca538c4430eacff9534e43bc8e',1,'Trajectory']]], + ['triangle',['Triangle',['../class_triangle.html',1,'']]], + ['triangle_5find',['triangle_ind',['../class_collision.html#a50dfece7495474875117cfbb3c4f524d',1,'Collision']]], + ['type',['type',['../class_collision.html#a384809577e353e0905047beac856015b',1,'Collision::type()'],['../class_scheme.html#a3a767ed00f8859a04857812e370c6db5',1,'Scheme::type()']]] +]; diff --git a/doc/html/search/all_11.html b/doc/html/search/all_11.html new file mode 100644 index 0000000..2be8b71 --- /dev/null +++ b/doc/html/search/all_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_11.js b/doc/html/search/all_11.js new file mode 100644 index 0000000..52d22fd --- /dev/null +++ b/doc/html/search/all_11.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['u',['u',['../class_collision.html#a6d79ffbca0e7f67fdc9af809f13f7f8a',1,'Collision']]], + ['update_5fdwi_5fsignal',['update_DWI_signal',['../class_gradient_waveform.html#af4291596da9c45247b0748d945bd9b54',1,'GradientWaveform::update_DWI_signal()'],['../class_p_g_s_e_sequence.html#ae2b79f12ccd2f2446a498cb51f45e88d',1,'PGSESequence::update_DWI_signal()'],['../class_simulable_sequence.html#af5621196178ee78b27e740dfe360815e',1,'SimulableSequence::update_DWI_signal()']]], + ['update_5fphase_5fshift',['update_phase_shift',['../class_gradient_waveform.html#a2c606400c648cebd85827efa8d22b6bc',1,'GradientWaveform::update_phase_shift(double time_step, Eigen::Matrix3Xd trajectory)'],['../class_gradient_waveform.html#a7421301b24b6c98e28ef9430287cdf8e',1,'GradientWaveform::update_phase_shift(double dt, double dt_last, Walker walker)'],['../class_p_g_s_e_sequence.html#a6914efd208eab28a1ee6a3f28ca65478',1,'PGSESequence::update_phase_shift(double dt, double dt_last, Walker walker)'],['../class_p_g_s_e_sequence.html#a850a2f22cdf8b420888cfa906e03e078',1,'PGSESequence::update_phase_shift(double time_step, Eigen::Matrix3Xd trajectory)'],['../class_simulable_sequence.html#ad7b2a30f563343aa65489aa553d4df63',1,'SimulableSequence::update_phase_shift(double dt, double dt_last, Walker walker)=0'],['../class_simulable_sequence.html#a175197d165ee7852094bc70cadc59589',1,'SimulableSequence::update_phase_shift(double time_step, Eigen::Matrix3Xd trajectory)=0']]] +]; diff --git a/doc/html/search/all_12.html b/doc/html/search/all_12.html new file mode 100644 index 0000000..13c5263 --- /dev/null +++ b/doc/html/search/all_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_12.js b/doc/html/search/all_12.js new file mode 100644 index 0000000..57fbe65 --- /dev/null +++ b/doc/html/search/all_12.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['v',['v',['../class_collision.html#ade5759fea1e6b41812d2499f1dc06c02',1,'Collision']]], + ['verbatim',['verbatim',['../class_parameters.html#aabce43eb8376a94a8e765da99b58d003',1,'Parameters']]], + ['vertex',['Vertex',['../class_vertex.html',1,'']]], + ['voxel',['Voxel',['../class_voxel.html',1,'']]], + ['voxels_5flist',['voxels_list',['../class_dynamics_simulation.html#ab68d71822661c3608bde4553392c9bd1',1,'DynamicsSimulation::voxels_list()'],['../class_parameters.html#aefbd07d8501ebb9311bbb1ea7c37be26',1,'Parameters::voxels_list()']]] +]; diff --git a/doc/html/search/all_13.html b/doc/html/search/all_13.html new file mode 100644 index 0000000..b4a8bca --- /dev/null +++ b/doc/html/search/all_13.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_13.js b/doc/html/search/all_13.js new file mode 100644 index 0000000..aef2a07 --- /dev/null +++ b/doc/html/search/all_13.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['walker',['Walker',['../class_walker.html',1,'Walker'],['../class_walker.html#acc0931305bedcf81ff621c31cdf2a92c',1,'Walker::Walker()'],['../class_walker.html#ada366966172eec6916690c01ac8f01db',1,'Walker::Walker(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)'],['../class_dynamics_simulation.html#a9a5d2596527abdcdd185430c97dea9ad',1,'DynamicsSimulation::walker()']]], + ['warning',['warning',['../class_sim_errno.html#acd92c1f938453f86e5f6d6967ed09754',1,'SimErrno']]], + ['wave_5fbins',['wave_bins',['../class_gradient_waveform.html#ac2287a6ef99e35f0c1f97fc3ffb37d7b',1,'GradientWaveform']]], + ['wave_5fduration',['wave_duration',['../class_gradient_waveform.html#a02d695fa36713bd28d3c85d2bb7a877b',1,'GradientWaveform']]], + ['waveform',['waveform',['../class_gradient_waveform.html#a565fce08abb28fe26664194c04faeaea',1,'GradientWaveform']]], + ['write_5fbin',['write_bin',['../class_parameters.html#a4c98120687d1ba332d0c6cd5a14c59fb',1,'Parameters::write_bin()'],['../class_trajectory.html#a7135e87575f429a7d6ad32477dc96e2c',1,'Trajectory::write_bin()']]], + ['write_5ftraj',['write_traj',['../class_parameters.html#ac9408092b6254b4ccfecc85decbb1944',1,'Parameters::write_traj()'],['../class_trajectory.html#a1194477068ed051401f99aba4a1056b1',1,'Trajectory::write_traj()']]], + ['write_5ftxt',['write_txt',['../class_parameters.html#a15446bf0727ebfe03f119821c7d8ed0f',1,'Parameters::write_txt()'],['../class_trajectory.html#a94125474ee64fd3007091a3e88f59769',1,'Trajectory::write_txt()']]], + ['writepropagator',['writePropagator',['../class_dynamics_simulation.html#aeae993217cebb5c23f68cb3e04cf8e49',1,'DynamicsSimulation']]] +]; diff --git a/doc/html/search/all_14.html b/doc/html/search/all_14.html new file mode 100644 index 0000000..fb4d0ec --- /dev/null +++ b/doc/html/search/all_14.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_14.js b/doc/html/search/all_14.js new file mode 100644 index 0000000..549360e --- /dev/null +++ b/doc/html/search/all_14.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['_7ecollision',['~Collision',['../class_collision.html#a19ae49bcb3b16f4622443a34a171590c',1,'Collision']]], + ['_7edynamicssimulation',['~DynamicsSimulation',['../class_dynamics_simulation.html#a15a1f18a99d606ef2ca939e718ca996f',1,'DynamicsSimulation']]], + ['_7emcsimulation',['~MCSimulation',['../class_m_c_simulation.html#a859c6ddce0e3c07db0159b2e4906b7ca',1,'MCSimulation']]], + ['_7epgsesequence',['~PGSESequence',['../class_p_g_s_e_sequence.html#a7e5815e4ae0b3a6d42c45322fc69fdd6',1,'PGSESequence']]], + ['_7etrajectory',['~Trajectory',['../class_trajectory.html#ac673c37025ca5353ad99ab41c936e75d',1,'Trajectory']]], + ['_7ewalker',['~Walker',['../class_walker.html#a562c14b600628c18ac689464bd0f7e35',1,'Walker']]] +]; diff --git a/doc/html/search/all_2.html b/doc/html/search/all_2.html new file mode 100644 index 0000000..9543c57 --- /dev/null +++ b/doc/html/search/all_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_2.js b/doc/html/search/all_2.js new file mode 100644 index 0000000..a626795 --- /dev/null +++ b/doc/html/search/all_2.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['checkcollision',['checkCollision',['../class_cylinder.html#a43350a6331f8656dd0774a4a3b68724f',1,'Cylinder::checkCollision()'],['../class_obstacle.html#af11af63f11595304ff6d5c1785c03da5',1,'Obstacle::checkCollision()']]], + ['checkconfigurationfile',['checkConfigurationFile',['../class_sim_errno.html#a4b59c263ba564ebc9edbd40fe9ec3bc8',1,'SimErrno']]], + ['checkcylinderslistfile',['checkCylindersListFile',['../class_sim_errno.html#a077a20f0886022c924911e24fbc91b52',1,'SimErrno']]], + ['checkfileexist',['checkFileExist',['../class_sim_errno.html#a8786cb077da0c41a32cd5d96f03fde35',1,'SimErrno']]], + ['checkgammadistributionparamaters',['checkGammaDistributionParamaters',['../class_sim_errno.html#aa997e9bec44280eec04ce320f8d75031',1,'SimErrno']]], + ['checkinitwalkerfile',['checkInitWalkerFile',['../class_sim_errno.html#a21ed929e9b81e9059d4da3ca03c9d80c',1,'SimErrno']]], + ['checkouputprefixandwriteinfo',['checkOuputPrefixAndWriteInfo',['../class_sim_errno.html#a195d934b873f7b10be5f57cf6f77e80f',1,'SimErrno']]], + ['checkplyfiles',['checkPLYFiles',['../class_sim_errno.html#a3a4c60541ecf163e50f70f8b9795be29',1,'SimErrno']]], + ['checkschemefile',['checkSchemeFile',['../class_sim_errno.html#ad5048e2a5f5630118ec614afdd4fd197',1,'SimErrno']]], + ['checksimulationparameters',['checkSimulationParameters',['../class_sim_errno.html#aabc7284492cb5f8ef38fce7d4501abbd',1,'SimErrno']]], + ['checksubdivisionsfile',['checkSubdivisionsFile',['../class_sim_errno.html#a71e44ab51c81191171464b1371887844',1,'SimErrno']]], + ['checkvoxellimits',['checkVoxelLimits',['../class_sim_errno.html#a9b9712b12322cdd0667d6fc4ee7aceaf',1,'SimErrno']]], + ['closetrajreaderfile',['closeTrajReaderFile',['../class_trajectory.html#a9aedf2530dca72ca629741585717c64a',1,'Trajectory']]], + ['col_5flocation',['col_location',['../class_collision.html#ae35c71ff91ffc9c253a345f0b4e2fbba',1,'Collision']]], + ['colision_5fpoint',['colision_point',['../class_collision.html#a00d821761200316e1d54eace02c725b4',1,'Collision']]], + ['collision',['Collision',['../class_collision.html',1,'']]], + ['collision_5flist',['collision_list',['../class_p_l_y_collision_sphere.html#a6ef04af98385142ed0b41a2e35f423b9',1,'PLYCollisionSphere']]], + ['collision_5flocation',['collision_location',['../class_collision.html#aad433eb4e51dbfd7ab9bbe188fbe47ab',1,'Collision']]], + ['collision_5fsphere_5fcylinders',['collision_sphere_cylinders',['../class_walker.html#a28d139085430c9a11e0a70be2c3083af',1,'Walker']]], + ['collision_5fsphere_5fdistance',['collision_sphere_distance',['../class_parameters.html#abe008f02a49ef7f7a6f041f79cc81fbb',1,'Parameters']]], + ['collision_5fsphere_5fply',['collision_sphere_ply',['../class_walker.html#a8aecfb76c9007eb6da99b024bc5e425d',1,'Walker']]], + ['collision_5ftype',['collision_type',['../class_collision.html#aa7f309840b693689b164c7e4b4d643e5',1,'Collision']]], + ['collisionsphere',['Collisionsphere',['../class_collisionsphere.html',1,'']]], + ['collisionspheren',['Collisionspheren',['../class_collisionspheren.html',1,'']]], + ['completed',['completed',['../class_dynamics_simulation.html#a6a210fb28fe2f996c226614742a25214',1,'DynamicsSimulation']]], + ['computecollisionlocation',['computeCollisionLocation',['../class_collision.html#aa7ec5170357d8913c390defd844686e1',1,'Collision']]], + ['computedynamictimesteps',['computeDynamicTimeSteps',['../class_p_g_s_e_sequence.html#ac115d93aabb283f19568f55493d57ded',1,'PGSESequence::computeDynamicTimeSteps()'],['../class_simulable_sequence.html#a3c5285531564cdb204894e6c6fc9204e',1,'SimulableSequence::computeDynamicTimeSteps()']]], + ['computevolume',['computeVolume',['../class_parameters.html#a669c92fe7864a00da04bba0c2af93a16',1,'Parameters']]], + ['count',['count',['../class_m_c_simulation.html#aa3853b6cec83b055593cbf58def0c164',1,'MCSimulation']]], + ['count_5fperc_5fcrossings',['count_perc_crossings',['../class_obstacle.html#aaa096d441fd095c7bbe924d1a78a8e23',1,'Obstacle']]], + ['creategammasubstrate',['createGammaSubstrate',['../class_cylinder_gamma_distribution.html#ad93e569b24e3c6b1266ecf79bd18dec9',1,'CylinderGammaDistribution']]], + ['custom_5fsampling_5farea',['custom_sampling_area',['../class_parameters.html#af023e7efce57b9da0837731db6a85c87',1,'Parameters']]], + ['cylinder',['Cylinder',['../class_cylinder.html',1,'Cylinder'],['../class_cylinder.html#a01dc978cb576f834b9545e43d4dad2a2',1,'Cylinder::Cylinder()'],['../class_cylinder.html#a0a5f7aa0a0c5c5e17c783784fd99fa1a',1,'Cylinder::Cylinder(Eigen::Vector3d P_, Eigen::Vector3d Q_, double radius_, double scale=1)'],['../class_cylinder.html#ab5389301aa05bdee0c066e0b8026611f',1,'Cylinder::Cylinder(Cylinder const &cyl)']]], + ['cylindercollisionsphere',['CylinderCollisionSphere',['../class_cylinder_collision_sphere.html',1,'CylinderCollisionSphere'],['../class_cylinder_collision_sphere.html#ac4f58e8792fdcdfe475b9556dc804553',1,'CylinderCollisionSphere::CylinderCollisionSphere()']]], + ['cylindergammadistribution',['CylinderGammaDistribution',['../class_cylinder_gamma_distribution.html',1,'CylinderGammaDistribution'],['../class_cylinder_gamma_distribution.html#a7578f5f0fb11398ec5bf5007047f4b81',1,'CylinderGammaDistribution::CylinderGammaDistribution()']]], + ['cylinders',['cylinders',['../class_cylinder_gamma_distribution.html#a3e8265a7ddb15d895112e02bd66fbf67',1,'CylinderGammaDistribution']]], + ['cylinders_5fdeque',['cylinders_deque',['../class_dynamics_simulation.html#a927a79875ff2f035d929229cf4471756',1,'DynamicsSimulation']]], + ['cylinders_5ffiles',['cylinders_files',['../class_parameters.html#abdef3b0fe62c5fdca7d417d01edd7422',1,'Parameters']]], + ['cylinders_5flist',['cylinders_list',['../class_dynamics_simulation.html#a938c4df48ca1cabcadefb974093d4a57',1,'DynamicsSimulation::cylinders_list()'],['../class_m_c_simulation.html#a36909899f67439feed1a980037ea8c03',1,'MCSimulation::cylinders_list()'],['../class_parallel_m_c_simulation.html#a4c36ff5327e9f19258fed5d64d48fdb8',1,'ParallelMCSimulation::cylinders_list()']]] +]; diff --git a/doc/html/search/all_3.html b/doc/html/search/all_3.html new file mode 100644 index 0000000..03405c0 --- /dev/null +++ b/doc/html/search/all_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_3.js b/doc/html/search/all_3.js new file mode 100644 index 0000000..85bd5e1 --- /dev/null +++ b/doc/html/search/all_3.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['d',['D',['../class_cylinder.html#a2e7f0d4e406cc50daf30f3e3b0be1609',1,'Cylinder']]], + ['datasynth',['dataSynth',['../class_m_c_simulation.html#a7e2496127af6436d64bca7f52bc40c82',1,'MCSimulation']]], + ['density',['density',['../class_subdivision.html#a6135c9e9b9a16f2f316d28071dee16c6',1,'Subdivision']]], + ['density_5fextra',['density_extra',['../class_subdivision.html#aa9d564a68a0785998db3e129c6698c0f',1,'Subdivision']]], + ['density_5fintra',['density_intra',['../class_subdivision.html#a2944862a3bafcacaf45a935f266f0cf0',1,'Subdivision']]], + ['diffusivity',['diffusivity',['../class_parameters.html#add48efa1d9fe056fdb21fe2d2d92533d',1,'Parameters']]], + ['discard_5fillegals',['discard_illegals',['../class_parameters.html#ac1a5fa4c00eaaf1b40789f329ae20e9a',1,'Parameters']]], + ['discard_5fstucks',['discard_stucks',['../class_parameters.html#ab1815ac94d73ca8b56a9f12fca04cb89',1,'Parameters']]], + ['displaygammadistribution',['displayGammaDistribution',['../class_cylinder_gamma_distribution.html#a3408ed30966550c10810a0a6cbbfd3c2',1,'CylinderGammaDistribution']]], + ['doihavemorepioritythan',['doIHaveMorePiorityThan',['../class_collision.html#aedabfa9b114e4201343963df5698f7ef',1,'Collision']]], + ['dt',['dt',['../class_gradient_waveform.html#a3eacca54a58dc574384f07899a9a6da3',1,'GradientWaveform']]], + ['duration',['duration',['../class_scheme.html#ae2b4a7f1d0f06f4bea2a7f2761cbe2a7',1,'Scheme']]], + ['dwi',['DWI',['../class_simulable_sequence.html#a083961d839ed1433206ccbc481996409',1,'SimulableSequence']]], + ['dwi_5fextra',['DWI_extra',['../class_simulable_sequence.html#a49a24269e364bcd02000ba575acc85ed',1,'SimulableSequence']]], + ['dwi_5fintra',['DWI_intra',['../class_simulable_sequence.html#ac64fb8110b769e180283365567bd4158',1,'SimulableSequence']]], + ['dwii',['DWIi',['../class_simulable_sequence.html#a3708afa1322d72b59d3be20b740d107c',1,'SimulableSequence']]], + ['dyn_5fduration',['dyn_duration',['../class_gradient_waveform.html#a8608216ab7e5f002dcf6af4f869c5d27',1,'GradientWaveform::dyn_duration()'],['../class_p_g_s_e_sequence.html#a0c7e884c3b71cbcc04d6cb2d5f2a5eb9',1,'PGSESequence::dyn_duration()']]], + ['dynamic',['dynamic',['../class_simulable_sequence.html#a1de2d00a939f550af1947ae25acc4b97',1,'SimulableSequence']]], + ['dynamicsengine',['dynamicsEngine',['../class_m_c_simulation.html#ac453455b2dfb994b7b1a4b7823bd3dc9',1,'MCSimulation']]], + ['dynamicssimulation',['DynamicsSimulation',['../class_dynamics_simulation.html',1,'DynamicsSimulation'],['../class_dynamics_simulation.html#ad9a3e1f235466c3827cb49c67d3a6147',1,'DynamicsSimulation::DynamicsSimulation()'],['../class_dynamics_simulation.html#aa603b5ba682b1b37cc96dd8be113cb52',1,'DynamicsSimulation::DynamicsSimulation(std::string conf_file)'],['../class_dynamics_simulation.html#a8fd2ec6f3640bff79e4b1ad960bbda5b',1,'DynamicsSimulation::DynamicsSimulation(Parameters &params_)']]] +]; diff --git a/doc/html/search/all_4.html b/doc/html/search/all_4.html new file mode 100644 index 0000000..8e1f4b9 --- /dev/null +++ b/doc/html/search/all_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_4.js b/doc/html/search/all_4.js new file mode 100644 index 0000000..1503560 --- /dev/null +++ b/doc/html/search/all_4.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['error',['error',['../class_sim_errno.html#a1d49dc3d396b355aee645c6d35436aa9',1,'SimErrno']]], + ['expectedtime',['expectedTime',['../class_sim_errno.html#a786ea76043026ad10aec48bc81137144',1,'SimErrno']]], + ['extra_5fcoll_5fcount',['extra_coll_count',['../class_walker.html#a28c595f6f6b4c32bed6afb177c0a6608',1,'Walker']]] +]; diff --git a/doc/html/search/all_5.html b/doc/html/search/all_5.html new file mode 100644 index 0000000..89a879e --- /dev/null +++ b/doc/html/search/all_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_5.js b/doc/html/search/all_5.js new file mode 100644 index 0000000..429f04a --- /dev/null +++ b/doc/html/search/all_5.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['gamma_5fpacking',['gamma_packing',['../class_parameters.html#aaef8b4218392fb19de2c5c886f5f7fa0',1,'Parameters']]], + ['get_5fadt',['get_adt',['../class_p_g_s_e_sequence.html#a885a0415519683a7fbfa1883f7f3d807',1,'PGSESequence']]], + ['getbvalue',['getbValue',['../class_p_g_s_e_sequence.html#a8b0671a505f79a601d3d4d2d9b7f36cc',1,'PGSESequence::getbValue()'],['../class_simulable_sequence.html#a85cdcf5f7bd5bed804a816e3c18840b7',1,'SimulableSequence::getbValue()']]], + ['getdiffusivity',['getDiffusivity',['../class_parameters.html#ac429071159941e3957eb7c030280a30f',1,'Parameters']]], + ['getdwisignal',['getDWISignal',['../class_gradient_waveform.html#a52971b5f773c8c0b7c43bcd5fc50197a',1,'GradientWaveform::getDWISignal()'],['../class_p_g_s_e_sequence.html#aec05e76b5c7b3361bd3e68301b262a0a',1,'PGSESequence::getDWISignal()']]], + ['getfreedecay',['getFreeDecay',['../class_p_g_s_e_sequence.html#a375c8a943f4857a323ffc404394b5d8a',1,'PGSESequence::getFreeDecay()'],['../class_simulable_sequence.html#a31a328cc716e039a53f9b12122050b83',1,'SimulableSequence::getFreeDecay()']]], + ['getgradimpulse',['getGradImpulse',['../class_gradient_waveform.html#a80dd810cb4e5a11dec311ac87e55ea18',1,'GradientWaveform::getGradImpulse()'],['../class_p_g_s_e_sequence.html#a3f2a705b7d3312944630f3d7f639e8e4',1,'PGSESequence::getGradImpulse()'],['../class_simulable_sequence.html#a03a417776f5404b06c761ab9109e3e1d',1,'SimulableSequence::getGradImpulse()']]], + ['getgradimpuse',['getGradImpuse',['../class_p_g_s_e_sequence.html#a9985ead781333f782d1dee54482eb0d2',1,'PGSESequence']]], + ['getinterpolatedgradimpulse',['getInterpolatedGradImpulse',['../class_gradient_waveform.html#a2f1449c026649e4601f773086d1346ce',1,'GradientWaveform']]], + ['getmaxlimits',['getMaxLimits',['../class_parameters.html#ad4f8b826db4c1b665891740469e41086',1,'Parameters']]], + ['getminlimits',['getMinLimits',['../class_parameters.html#abda8b91e5ac40e67c79184d7071c353a',1,'Parameters']]], + ['getnumericalbvalue',['getNumericalbValue',['../class_gradient_waveform.html#a5f55e43b3057509b0f98812d2a72db9a',1,'GradientWaveform::getNumericalbValue()'],['../class_p_g_s_e_sequence.html#a1373f02bffedb1e934818ae8d4fb8939',1,'PGSESequence::getNumericalbValue()']]], + ['getnumsteps',['getNumSteps',['../class_parameters.html#aa5aaf80e0189c63090e8f04cf485800f',1,'Parameters']]], + ['getnumwalkers',['getNumWalkers',['../class_parameters.html#adb8599bc60f977f684f32a83bbe28fc1',1,'Parameters']]], + ['getoutputbasefilename',['getOutputBaseFileName',['../class_parameters.html#a794fd941bf5ff311f61f2e6b4f19e64d',1,'Parameters']]], + ['getschemefilename',['getSchemeFileName',['../class_parameters.html#a7291b970983c021569cd2e3a0573592c',1,'Parameters']]], + ['gettrajfilename',['getTrajFileName',['../class_parameters.html#a38057c2ae3d11b578c8f199d73683ee1',1,'Parameters']]], + ['getwritetextflag',['getWriteTextFlag',['../class_parameters.html#adb6064f329732640c226608d6e1ddb60',1,'Parameters']]], + ['getwritetrajflag',['getWriteTrajFlag',['../class_parameters.html#a21817e9a0207da2adf32611bcaf889ef',1,'Parameters']]], + ['gradientwaveform',['GradientWaveform',['../class_gradient_waveform.html',1,'GradientWaveform'],['../class_gradient_waveform.html#acf951c9a86f95d002db4858ee4c78582',1,'GradientWaveform::GradientWaveform()'],['../class_gradient_waveform.html#aad3922dbe19647ed0fcbba175fb9a5ff',1,'GradientWaveform::GradientWaveform(Scheme &scheme)'],['../class_gradient_waveform.html#a4780653a03ac1f576aeb6102b910ccde',1,'GradientWaveform::GradientWaveform(Scheme &scheme_, const char *traj_file_name)']]] +]; diff --git a/doc/html/search/all_6.html b/doc/html/search/all_6.html new file mode 100644 index 0000000..6afac06 --- /dev/null +++ b/doc/html/search/all_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_6.js b/doc/html/search/all_6.js new file mode 100644 index 0000000..cacb2bd --- /dev/null +++ b/doc/html/search/all_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['header',['header',['../class_scheme.html#a276a907de6afa60b6826552f337e310b',1,'Scheme']]], + ['headerfile',['headerfile',['../class_trajectory.html#a6bb5d5e4ad4fb36a65d6cffdc6ab05af',1,'Trajectory']]], + ['hex_5fpacking',['hex_packing',['../class_parameters.html#aad79d8e720492fd880ee021c6320dfe0',1,'Parameters']]], + ['hex_5fpacking_5fradius',['hex_packing_radius',['../class_parameters.html#a3c49b55dc2a2af1c5ddfc3426e2a7936',1,'Parameters']]], + ['hex_5fpacking_5fseparation',['hex_packing_separation',['../class_parameters.html#a480338071cedf966fdb79b37d9ebe656',1,'Parameters']]] +]; diff --git a/doc/html/search/all_7.html b/doc/html/search/all_7.html new file mode 100644 index 0000000..de19107 --- /dev/null +++ b/doc/html/search/all_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_7.js b/doc/html/search/all_7.js new file mode 100644 index 0000000..566582c --- /dev/null +++ b/doc/html/search/all_7.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['icvf',['icvf',['../class_cylinder_gamma_distribution.html#a31f82c4608b7cd2b022805e30a4db983',1,'CylinderGammaDistribution::icvf()'],['../class_dynamics_simulation.html#ac4161cbca21d20fde85817a21b99bd07',1,'DynamicsSimulation::icvf()'],['../class_parallel_m_c_simulation.html#a871e3fdace01984a533792dd49bebd1b',1,'ParallelMCSimulation::icvf()']]], + ['id',['id',['../class_dynamics_simulation.html#aa178498c8be8af1a515a8c0a02187600',1,'DynamicsSimulation::id()'],['../class_m_c_simulation.html#aff828a83a905ae188146d3ffaa12a1bc',1,'MCSimulation::id()'],['../class_obstacle.html#a02e049a3395138a0dc6194af0112e2b0',1,'Obstacle::id()']]], + ['illegal_5fcount',['illegal_count',['../class_parallel_m_c_simulation.html#ae667ec358689a3a7b42876b401a5fce5',1,'ParallelMCSimulation']]], + ['img_5fsignal',['img_signal',['../class_parameters.html#a1dd221193dd0ad7e34a6b4f7c496d899',1,'Parameters::img_signal()'],['../class_simulable_sequence.html#a7603177060550acd31ece2c87fcdd2a9',1,'SimulableSequence::img_signal()']]], + ['in_5fheader',['in_header',['../class_trajectory.html#a6a7484c5282331583841b038997d597b',1,'Trajectory']]], + ['in_5fobj_5findex',['in_obj_index',['../class_walker.html#adf221f7a635c09cfaafc0dab5aa38106',1,'Walker']]], + ['in_5fply_5findex',['in_ply_index',['../class_walker.html#a48d0fe08f2297d9ad56cfaec9ee1926c',1,'Walker']]], + ['index',['index',['../class_walker.html#a58e2d14d760748687138b7582cd04365',1,'Walker']]], + ['info',['info',['../class_sim_errno.html#aef262fffecd567fe6ebcf57aed23e8dd',1,'SimErrno']]], + ['infomenu',['infoMenu',['../class_sim_errno.html#aafbfe0b71883701a1c8882135c54cfe4',1,'SimErrno']]], + ['ini_5fdelta_5fpos',['ini_delta_pos',['../class_parameters.html#aea1568fbc8a92bd90303ea8afc9e8c63',1,'Parameters']]], + ['ini_5fpos',['ini_pos',['../class_walker.html#a98116f0e5d65e1cf65449d80a2d87617',1,'Walker']]], + ['ini_5fpos_5ffile',['ini_pos_file',['../class_dynamics_simulation.html#a4fb0e535753c48b4a2647502379aebaf',1,'DynamicsSimulation']]], + ['ini_5fpos_5ffile_5fini_5findex',['ini_pos_file_ini_index',['../class_dynamics_simulation.html#a8e20cd71b55dda041844cfc305851dbe',1,'DynamicsSimulation']]], + ['ini_5fwalker_5fflag',['ini_walker_flag',['../class_parameters.html#a87cb2db5b45bf9cb36e74903fecfaa6e',1,'Parameters']]], + ['ini_5fwalker_5fpositions',['ini_walker_positions',['../class_m_c_simulation.html#af53387a4edc7627a77ff03a562f8befa',1,'MCSimulation']]], + ['ini_5fwalkers_5ffile',['ini_walkers_file',['../class_parameters.html#a84db69d29321fccb7cc7ea724a74df50',1,'Parameters']]], + ['ini_5fwalkers_5ffile_5fcount',['ini_walkers_file_count',['../class_parameters.html#ae01ac4f7d6d3b9eea6799f5c929ddf00',1,'Parameters']]], + ['iniobstacles',['iniObstacles',['../class_m_c_simulation.html#aa60234e3f6d2a100c8b03e4f304b07f4',1,'MCSimulation']]], + ['initial_5fsphere_5fpos_5fv',['initial_sphere_pos_v',['../class_walker.html#a8a27ead68d3dc7140afbec2710fb3176',1,'Walker']]], + ['initializeintraextrasignals',['initializeIntraExtraSignals',['../class_simulable_sequence.html#a3fad0e115a2ec07a8b1202608eba698e',1,'SimulableSequence']]], + ['initializesubdivisionsignals',['initializeSubdivisionSignals',['../class_simulable_sequence.html#aa2434c3b2ef59d1cd8b822b8e3a2920c',1,'SimulableSequence']]], + ['inittrajectory',['initTrajectory',['../class_trajectory.html#aaeda8b05ad61298fbd2aba2a3192486e',1,'Trajectory']]], + ['inittrajwriter',['initTrajWriter',['../class_trajectory.html#aec9f75fa04452af2199888c47652c7e4',1,'Trajectory']]], + ['iniwalkersfilename',['iniWalkersFileName',['../class_parameters.html#a73d64bb093a93c2b806883f5504d8fb5',1,'Parameters']]], + ['intra_5fcoll_5fcount',['intra_coll_count',['../class_walker.html#a8ca6c90f124e46869ea752920565e2c2',1,'Walker']]], + ['intra_5fextra_5fconsensus',['intra_extra_consensus',['../class_walker.html#aa211ac1f9a396b1bf3b565e0f8ed098a',1,'Walker']]], + ['isbigendian',['isBigEndian',['../class_trajectory.html#a66dfa9e8d1e60706b8e8bb1e91a34e29',1,'Trajectory']]], + ['isinintra',['isInIntra',['../class_dynamics_simulation.html#ae7aa76c335aceb658a4ffc683898077c',1,'DynamicsSimulation']]], + ['isinside',['isInside',['../class_subdivision.html#adb91e1cc1e6959d13220454ddfc7ba28',1,'Subdivision']]] +]; diff --git a/doc/html/search/all_8.html b/doc/html/search/all_8.html new file mode 100644 index 0000000..11e27cd --- /dev/null +++ b/doc/html/search/all_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_8.js b/doc/html/search/all_8.js new file mode 100644 index 0000000..b4ebce0 --- /dev/null +++ b/doc/html/search/all_8.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['last_5fpos_5fr',['last_pos_r',['../class_walker.html#a8c78216899e04e9439a991cbad9df36f',1,'Walker']]], + ['last_5fpos_5fv',['last_pos_v',['../class_walker.html#a2d50601346a754183b38890c18e7a6e7',1,'Walker']]], + ['last_5ftime_5fdt',['last_time_dt',['../class_dynamics_simulation.html#aa73be02bc4cb5027a1bc4a0b6b91b4b2',1,'DynamicsSimulation']]], + ['location',['location',['../class_walker.html#a77f5c801c38158bb8568f75a22baed20',1,'Walker']]], + ['log_5fopp',['log_opp',['../class_parameters.html#ae30abbd794dee7f5aaf5d3d51152acef',1,'Parameters']]], + ['log_5fphase_5fshift',['log_phase_shift',['../class_parameters.html#a947e4b1fef66466119ea7b2e8e2bc0e4',1,'Parameters']]], + ['log_5fpropagator',['log_propagator',['../class_parameters.html#a1f5a62a35d6521994a623d0fd0a98a24',1,'Parameters']]] +]; diff --git a/doc/html/search/all_9.html b/doc/html/search/all_9.html new file mode 100644 index 0000000..f8abbbe --- /dev/null +++ b/doc/html/search/all_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_9.js b/doc/html/search/all_9.js new file mode 100644 index 0000000..dd6bddc --- /dev/null +++ b/doc/html/search/all_9.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['max_5flimits',['max_limits',['../class_cylinder_gamma_distribution.html#aa7094851c2ccf05fc5ff7a99707aa786',1,'CylinderGammaDistribution::max_limits()'],['../class_parameters.html#a879b4c717e0f59c9bbc4b7810b8fdde3',1,'Parameters::max_limits()'],['../class_subdivision.html#a96ca3e7e744026fef809ade08d861985',1,'Subdivision::max_limits()']]], + ['max_5fsampling_5farea',['max_sampling_area',['../class_parameters.html#a2bf25423e72a562d5812ed0df3e06e2d',1,'Parameters']]], + ['max_5fsimulation_5ftime',['max_simulation_time',['../class_dynamics_simulation.html#a337972272af798cb8606796116145d11',1,'DynamicsSimulation::max_simulation_time()'],['../class_parameters.html#a66ad8359ef1cc76e8d5581a402cc86b5',1,'Parameters::max_simulation_time()']]], + ['mcsimulation',['MCSimulation',['../class_m_c_simulation.html',1,'MCSimulation'],['../class_m_c_simulation.html#a89f56682a13f0bcb2c53d191ca336e35',1,'MCSimulation::MCSimulation()']]], + ['monte_20carlo_20diffusion_20and_20collision_20simulator',['Monte Carlo Diffusion and Collision Simulator',['../md_src__r_e_a_d_m_e.html',1,'']]], + ['mean_5fsecond_5fpassed',['mean_second_passed',['../class_parallel_m_c_simulation.html#ad122df5454bb26a56e89c9077560a33d',1,'ParallelMCSimulation']]], + ['min_5fcyl_5fradii',['min_cyl_radii',['../class_parameters.html#a0b44e239201caecaebdb7e956ead1e0c',1,'Parameters']]], + ['min_5flimits',['min_limits',['../class_cylinder_gamma_distribution.html#ac77a9d794f2f2000066c4a26f19a9097',1,'CylinderGammaDistribution::min_limits()'],['../class_parameters.html#aa9d387477810c2bb574b83ecd1fbf8f0',1,'Parameters::min_limits()'],['../class_subdivision.html#ac8d84e208bb294b78379a05da4ccfc37',1,'Subdivision::min_limits()']]], + ['min_5fradius',['min_radius',['../class_cylinder_gamma_distribution.html#aece7d3ec40d3dbb3a2ecd1bd88c5a694',1,'CylinderGammaDistribution']]], + ['min_5fsampling_5farea',['min_sampling_area',['../class_parameters.html#a8b7e1481e63d5ac9a36eed8ab310d315',1,'Parameters']]], + ['mindistance',['minDistance',['../class_cylinder.html#a6eb639d12a7fc0aec50895151fb91b1f',1,'Cylinder::minDistance()'],['../class_obstacle.html#a742e9d6ea940b33545cef4f1f2d58566',1,'Obstacle::minDistance()']]], + ['mt',['mt',['../class_dynamics_simulation.html#a03ba104f00ae772e9b8fb55e7878c793',1,'DynamicsSimulation']]] +]; diff --git a/doc/html/search/all_a.html b/doc/html/search/all_a.html new file mode 100644 index 0000000..9601fce --- /dev/null +++ b/doc/html/search/all_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_a.js b/doc/html/search/all_a.js new file mode 100644 index 0000000..d4a2c75 --- /dev/null +++ b/doc/html/search/all_a.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['next_5fdirection',['next_direction',['../class_walker.html#ad1629485a13c80367a563ed7b88149eb',1,'Walker']]], + ['now',['now',['../class_dynamics_simulation.html#a4e14e7f5efc039772219b00b02381db1',1,'DynamicsSimulation']]], + ['num_5fcylinders',['num_cylinders',['../class_cylinder_gamma_distribution.html#af74583662a4f33ba1565f2c71e6bbc5a',1,'CylinderGammaDistribution']]], + ['num_5fproc',['num_proc',['../class_parameters.html#aab0de21efc3f85e5c44205ed5ebf9d4d',1,'Parameters']]], + ['num_5frep',['num_rep',['../class_scheme.html#ae41c5ea2b3aab4492f95b2479945b729',1,'Scheme::num_rep()'],['../class_simulable_sequence.html#aa524c45db6c27dd21acacf97d7951ac2',1,'SimulableSequence::num_rep()']]], + ['num_5fsimulated_5fwalkers',['num_simulated_walkers',['../class_dynamics_simulation.html#a8772d8683d6089eef368212ee99d12d5',1,'DynamicsSimulation']]], + ['num_5fsteps',['num_steps',['../class_parameters.html#a3475e7efae778bc7720fe6c17274eef0',1,'Parameters']]], + ['num_5fwalkers',['num_walkers',['../class_parameters.html#a35329cc60a28986ee4020457d46921fb',1,'Parameters']]], + ['number_5fsubdivisions',['number_subdivisions',['../class_parameters.html#a0d15fd8f1f5c332174864c3acbaf5e10',1,'Parameters']]] +]; diff --git a/doc/html/search/all_b.html b/doc/html/search/all_b.html new file mode 100644 index 0000000..0814e4e --- /dev/null +++ b/doc/html/search/all_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_b.js b/doc/html/search/all_b.js new file mode 100644 index 0000000..d5422d9 --- /dev/null +++ b/doc/html/search/all_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['obstacle',['Obstacle',['../class_obstacle.html',1,'Obstacle'],['../class_obstacle.html#a8f734072321fa06a7b7dae2d5f50f352',1,'Obstacle::Obstacle()']]], + ['obstacle_5find',['obstacle_ind',['../class_collision.html#ad1f81d05e175689b7e31bf36121d1589',1,'Collision']]], + ['obstacle_5fpermeability',['obstacle_permeability',['../class_parameters.html#a2e5fa275543b4a52599e694e64546e13',1,'Parameters']]], + ['output_5fbase_5fname',['output_base_name',['../class_parameters.html#a2662ccc98a7a2b9f0c81f223a8f0748f',1,'Parameters']]] +]; diff --git a/doc/html/search/all_c.html b/doc/html/search/all_c.html new file mode 100644 index 0000000..da08c38 --- /dev/null +++ b/doc/html/search/all_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_c.js b/doc/html/search/all_c.js new file mode 100644 index 0000000..01d686e --- /dev/null +++ b/doc/html/search/all_c.js @@ -0,0 +1,37 @@ +var searchData= +[ + ['parallelmcsimulation',['ParallelMCSimulation',['../class_parallel_m_c_simulation.html',1,'ParallelMCSimulation'],['../class_parallel_m_c_simulation.html#ac85dc215688a1462b770d20c2ff10b3f',1,'ParallelMCSimulation::ParallelMCSimulation(std::string config_file)'],['../class_parallel_m_c_simulation.html#a32ee405791787a1ea9d03895fdd810f4',1,'ParallelMCSimulation::ParallelMCSimulation(Parameters &params)']]], + ['parameter',['Parameter',['../class_parameter.html',1,'']]], + ['parameters',['Parameters',['../class_parameters.html',1,'Parameters'],['../class_parameters.html#af4d94ee360ac0157d9065f78797fe9a1',1,'Parameters::Parameters()']]], + ['params',['params',['../class_dynamics_simulation.html#a67cd4cd9a2e7cd2339c98dae60e66dde',1,'DynamicsSimulation::params()'],['../class_m_c_simulation.html#aecb8470cb31fa67e38c5d5acd5a80bef',1,'MCSimulation::params()'],['../class_parallel_m_c_simulation.html#a83f856aaa88a403c657c7b8234deee7a',1,'ParallelMCSimulation::params()']]], + ['percent_5fsteps_5fin',['percent_steps_in',['../class_simulable_sequence.html#a43e046af3bf6c498a5ad232058de8a90',1,'SimulableSequence']]], + ['percolation',['percolation',['../class_obstacle.html#a7afe63ee05b482c526591c981b22cf54',1,'Obstacle']]], + ['pgsesequence',['PGSESequence',['../class_p_g_s_e_sequence.html',1,'PGSESequence'],['../class_p_g_s_e_sequence.html#a29db64fbd60c54c191e8197e1818dce0',1,'PGSESequence::PGSESequence()'],['../class_p_g_s_e_sequence.html#a31bcb2e91e27823bbe71904e180f7de9',1,'PGSESequence::PGSESequence(Scheme scheme_)'],['../class_p_g_s_e_sequence.html#ab278a413c31a67f82712590897a556cb',1,'PGSESequence::PGSESequence(Scheme scheme_, const char *traj_file_name)'],['../class_p_g_s_e_sequence.html#a262f1156c51983fba9b9a6b666dd2e07',1,'PGSESequence::PGSESequence(const char *scheme_file_name)'],['../class_p_g_s_e_sequence.html#a1eb4e53eb0769b16eb9bb2156c769644',1,'PGSESequence::PGSESequence(const char *scheme_file_name, const char *traj_file_name)']]], + ['phase_5fshift',['phase_shift',['../class_simulable_sequence.html#a8691c0451c305869064862e30986c34c',1,'SimulableSequence']]], + ['phase_5fshift_5fdistribution',['phase_shift_distribution',['../class_simulable_sequence.html#a4e45e2d935a05a7375b04718a49c9af7',1,'SimulableSequence']]], + ['plane',['Plane',['../class_plane.html',1,'']]], + ['ply_5fdeque',['ply_deque',['../class_dynamics_simulation.html#ad920a07f2c8c85fab7a1aec983c15b20',1,'DynamicsSimulation']]], + ['ply_5ffiles',['PLY_files',['../class_parameters.html#a76984fe140c1c6c8a047dd622561200d',1,'Parameters']]], + ['ply_5fpercolation',['PLY_percolation',['../class_parameters.html#a67f6e450517ee21255d72d41bc9f0ce7',1,'Parameters']]], + ['ply_5fscales',['PLY_scales',['../class_parameters.html#a97ed7a4d1b6c6ea8f6507a6a0fc04698',1,'Parameters']]], + ['plycollisionsphere',['PLYCollisionSphere',['../class_p_l_y_collision_sphere.html',1,'']]], + ['plyobstacle',['PLYObstacle',['../class_p_l_y_obstacle.html',1,'']]], + ['plyobstacles_5flist',['plyObstacles_list',['../class_dynamics_simulation.html#a830b3e0aa0ce95720ea0a8180e2cffec',1,'DynamicsSimulation::plyObstacles_list()'],['../class_m_c_simulation.html#a8c21d28d54c9c947f6c5465657019ed4',1,'MCSimulation::plyObstacles_list()'],['../class_parallel_m_c_simulation.html#aa90f4d989bc868b6d225c0c5b9fe832a',1,'ParallelMCSimulation::plyObstacles_list()']]], + ['popfrombigsphere',['popFromBigSphere',['../class_cylinder_collision_sphere.html#a06a8f75674ef0bcc44a820e948624f60',1,'CylinderCollisionSphere::popFromBigSphere()'],['../class_p_l_y_collision_sphere.html#ac9cf3838088310db3dc8f0d282c3c383',1,'PLYCollisionSphere::popFromBigSphere()']]], + ['popfromsmallsphere',['popFromSmallSphere',['../class_cylinder_collision_sphere.html#ad4cfd86c6ab7035b9ba67277792c132f',1,'CylinderCollisionSphere::popFromSmallSphere()'],['../class_p_l_y_collision_sphere.html#adc8f318a913935cdd31d81f1c96192eb',1,'PLYCollisionSphere::popFromSmallSphere()']]], + ['pos_5fr',['pos_r',['../class_walker.html#a1008a95833c1f74b53f02e57e84417b7',1,'Walker']]], + ['pos_5fr_5flog',['pos_r_log',['../class_walker.html#a1ba5a46fddf62eb3eeaabc7c868afe07',1,'Walker']]], + ['pos_5ftimes',['pos_times',['../class_trajectory.html#a4b6369fb83108e27a774f50c06169817',1,'Trajectory']]], + ['pos_5fv',['pos_v',['../class_walker.html#a2c1bf5a8da9e8f3a230a22ab4ae0e373',1,'Walker']]], + ['pos_5fv_5flog',['pos_v_log',['../class_walker.html#a62d99cc92226681123be94e64fb2bf7b',1,'Walker']]], + ['print_5fadt_5fand_5fdt',['print_adt_and_dt',['../class_p_g_s_e_sequence.html#afa9e363ef76474d5e2495407034a10d4',1,'PGSESequence']]], + ['print_5fexpected_5ftime',['print_expected_time',['../class_dynamics_simulation.html#a8742da6be78261e71b9b8cd4de0df488',1,'DynamicsSimulation']]], + ['printsimulatininfo',['printSimulatinInfo',['../class_sim_errno.html#a87782efbd7825d733d3f0c760cf47222',1,'SimErrno']]], + ['printsubstrate',['printSubstrate',['../class_cylinder_gamma_distribution.html#a2345c03be0b0c934efe02e4234c65fd1',1,'CylinderGammaDistribution']]], + ['prop_5fdirs',['prop_dirs',['../class_parameters.html#a4bbfed0148cec6e10d0e90d85437a37a',1,'Parameters']]], + ['propagator',['Propagator',['../class_propagator.html',1,'Propagator'],['../class_dynamics_simulation.html#a62f78ae3e723206d16f1528e344ab1e9',1,'DynamicsSimulation::propagator()']]], + ['push_5findex',['push_index',['../class_cylinder_collision_sphere.html#af2977e3da60e7a4c1e4ae4fccf03ed09',1,'CylinderCollisionSphere']]], + ['push_5fply',['push_ply',['../class_p_l_y_collision_sphere.html#a10e46dea74b839faf34872028eafae46',1,'PLYCollisionSphere']]], + ['pushtobigsphere',['pushToBigSphere',['../class_cylinder_collision_sphere.html#a8742564f85c9fede195ee716a3b16042',1,'CylinderCollisionSphere::pushToBigSphere()'],['../class_p_l_y_collision_sphere.html#aa1fe5971687051f0de78a12ee4b31574',1,'PLYCollisionSphere::pushToBigSphere()']]], + ['pushtosmallsphere',['pushToSmallSphere',['../class_cylinder_collision_sphere.html#aa369aaa1ce839382c915ac4f32ac82ca',1,'CylinderCollisionSphere::pushToSmallSphere()'],['../class_p_l_y_collision_sphere.html#a546ea2c6fe80908502fba0350c4f9726',1,'PLYCollisionSphere::pushToSmallSphere()']]] +]; diff --git a/doc/html/search/all_d.html b/doc/html/search/all_d.html new file mode 100644 index 0000000..9986c9c --- /dev/null +++ b/doc/html/search/all_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_d.js b/doc/html/search/all_d.js new file mode 100644 index 0000000..48aa177 --- /dev/null +++ b/doc/html/search/all_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['q',['Q',['../class_cylinder.html#a9f367beb008c847b97bb0ce043601769',1,'Cylinder']]] +]; diff --git a/doc/html/search/all_e.html b/doc/html/search/all_e.html new file mode 100644 index 0000000..9fa42bb --- /dev/null +++ b/doc/html/search/all_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_e.js b/doc/html/search/all_e.js new file mode 100644 index 0000000..4d686ea --- /dev/null +++ b/doc/html/search/all_e.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['radius',['radius',['../class_cylinder.html#a8a825799285bcf60b49b8aef0459b498',1,'Cylinder']]], + ['readconfigurationfile',['readConfigurationFile',['../class_dynamics_simulation.html#a67adab75eba635447c1b1b2b26d1e0ab',1,'DynamicsSimulation']]], + ['readschemefile',['readSchemeFile',['../class_gradient_waveform.html#a82da8e7b3bffe4557e6e38191b7f8d81',1,'GradientWaveform::readSchemeFile()'],['../class_parameters.html#afa8dd9d59fa727c3c2b2fe366efb2c14',1,'Parameters::readSchemeFile()'],['../class_p_g_s_e_sequence.html#a22005e67e3513690f9e46b1d531481b0',1,'PGSESequence::readSchemeFile()']]], + ['record_5fphase_5ftimes',['record_phase_times',['../class_parameters.html#a559e66b65a2cb4391d1099bf0db6ec44',1,'Parameters']]], + ['record_5fpos_5ftimes',['record_pos_times',['../class_parameters.html#a4f884a7effd3a8816c78084ff3c2b202',1,'Parameters']]], + ['record_5fprop_5ftimes',['record_prop_times',['../class_parameters.html#af47bd2eada81c6c581aaa8c70d04c8d6',1,'Parameters']]], + ['rejection_5fcount',['rejection_count',['../class_walker.html#a38669698192d39146c77011b69b1e372',1,'Walker']]], + ['relativelocation',['RelativeLocation',['../class_walker.html#a24246136a10754791b05cb570dbb8417',1,'Walker']]], + ['rn',['rn',['../class_collision.html#a95898b1296dfa87b78e8a1197f0f5ea2',1,'Collision']]] +]; diff --git a/doc/html/search/all_f.html b/doc/html/search/all_f.html new file mode 100644 index 0000000..6ecfc0e --- /dev/null +++ b/doc/html/search/all_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/all_f.js b/doc/html/search/all_f.js new file mode 100644 index 0000000..a3c1c80 --- /dev/null +++ b/doc/html/search/all_f.js @@ -0,0 +1,50 @@ +var searchData= +[ + ['save_5fphase_5fshift',['save_phase_shift',['../class_parameters.html#ab737ef40d88faa6ee8a701013d9d2984',1,'Parameters::save_phase_shift()'],['../class_simulable_sequence.html#aa29f58ae224d92dd467a0845bd207324',1,'SimulableSequence::save_phase_shift()']]], + ['scale_5ffrom_5fstu',['scale_from_stu',['../class_gradient_waveform.html#a712eedb2165b3f889e27244fc9d91ebd',1,'GradientWaveform::scale_from_stu()'],['../class_parameters.html#a3c37f738b7700bdc22845bc725d51e6f',1,'Parameters::scale_from_stu()'],['../class_scheme.html#ac66ecb38621208f8dd1b5334919316cf',1,'Scheme::scale_from_stu()']]], + ['scheme',['Scheme',['../class_scheme.html',1,'Scheme'],['../class_m_c_simulation.html#a87ba6332f1f49024a442981b477360c4',1,'MCSimulation::scheme()'],['../class_p_g_s_e_sequence.html#a7349d86720a34e75eaf578fdfd3caeeb',1,'PGSESequence::scheme()'],['../class_scheme.html#aa0d26e624075fbac339a746ed10b2dc0',1,'Scheme::scheme()']]], + ['scheme_5ffile',['scheme_file',['../class_parameters.html#afbb7caab773abb16753263a0b04c8a2c',1,'Parameters::scheme_file()'],['../class_scheme.html#afa0549aa16f4f6c62d6c397909be3350',1,'Scheme::scheme_file()'],['../class_simulable_sequence.html#a9898335af9d8f639f65b73eeac8efb53',1,'SimulableSequence::scheme_file()']]], + ['second_5fpassed',['second_passed',['../class_dynamics_simulation.html#a46187e70aad2b130249ba3d1dd6a3c75',1,'DynamicsSimulation']]], + ['seed',['seed',['../class_parameters.html#afa076397ed9cbdc4c88215e29b850e3c',1,'Parameters']]], + ['sentinel',['Sentinel',['../classsentinels_1_1_sentinel.html',1,'sentinels']]], + ['sentinela',['sentinela',['../class_dynamics_simulation.html#aed384434dc469e766301268dcf1ec4ab',1,'DynamicsSimulation']]], + ['sentinels',['Sentinels',['../class_sentinels.html',1,'']]], + ['separate_5fsignal',['separate_signal',['../class_simulable_sequence.html#a3278d9b5b22b0bfbdd0ce4bef0e1cc85',1,'SimulableSequence']]], + ['separate_5fsignals',['separate_signals',['../class_parameters.html#adacb13afed18c07dfd269fae76f828b3',1,'Parameters']]], + ['setbigspheresize',['setBigSphereSize',['../class_cylinder_collision_sphere.html#a3fe165c817a66074e737985efd87128b',1,'CylinderCollisionSphere::setBigSphereSize()'],['../class_p_l_y_collision_sphere.html#acf52aecaf0bf676087035151e6c662c9',1,'PLYCollisionSphere::setBigSphereSize()']]], + ['setdiffusivity',['setDiffusivity',['../class_parameters.html#a7af2bd289f8c8de738d643bb8e05ac62',1,'Parameters']]], + ['setduration',['setDuration',['../class_dynamics_simulation.html#a9148a30590bef5c766fd2366bbd16eb8',1,'DynamicsSimulation']]], + ['setmaxlimits',['setMaxLimits',['../class_parameters.html#a96764612c6ee5aeb684e1348e47b2308',1,'Parameters']]], + ['setminlimits',['setMinLimits',['../class_parameters.html#a73a4f685a35f8f7012609effb30a17d8',1,'Parameters']]], + ['setnumberofsteps',['setNumberOfSteps',['../class_gradient_waveform.html#a040d4a70dc7951c235010791e1c581d1',1,'GradientWaveform::setNumberOfSteps()'],['../class_p_g_s_e_sequence.html#a89f9bf116876b04403058a240a91efa3',1,'PGSESequence::setNumberOfSteps()'],['../class_simulable_sequence.html#a2e16c0b0dcf1b90ad0afc53ab14e9250',1,'SimulableSequence::setNumberOfSteps()']]], + ['setnumsteps',['setNumSteps',['../class_parameters.html#af61156929c1abed67da0a1c9920ca508',1,'Parameters']]], + ['setoutputbasefilename',['setOutputBaseFileName',['../class_parameters.html#aec6b8dc2c119405ab2cdc4e6622ac616',1,'Parameters']]], + ['setschemefilename',['setSchemeFileName',['../class_parameters.html#a95ca6c28a5c87363460ca48eed5f065f',1,'Parameters']]], + ['setsimduration',['setSimDuration',['../class_parameters.html#a934a87940878dc78b75ae4c230132f75',1,'Parameters']]], + ['setsmallspheresize',['setSmallSphereSize',['../class_cylinder_collision_sphere.html#a6e7f5ff8f4e5c076edb5f1cbee433a34',1,'CylinderCollisionSphere::setSmallSphereSize()'],['../class_p_l_y_collision_sphere.html#af9ba1a8616bb5703e58f392f45c6c069',1,'PLYCollisionSphere::setSmallSphereSize()']]], + ['settrajfile',['setTrajFile',['../class_trajectory.html#a00a28c1782a0a661b40ad9dfefc0d3f4',1,'Trajectory']]], + ['settrajfilename',['setTrajFileName',['../class_parameters.html#ac07671c27ff8f0ec9f5d8bdc656e7ffb',1,'Parameters']]], + ['sim_5fduration',['sim_duration',['../class_parameters.html#acbe36f055786ddcf8480a49d2c34c914',1,'Parameters']]], + ['sim_5fthreads',['sim_threads',['../class_parallel_m_c_simulation.html#a2a0f1cc2812c1a35e5e38d9d9ddde78b',1,'ParallelMCSimulation']]], + ['simerrno',['SimErrno',['../class_sim_errno.html',1,'']]], + ['simulablesequence',['SimulableSequence',['../class_simulable_sequence.html',1,'']]], + ['simulations',['simulations',['../class_parallel_m_c_simulation.html#af16d292f007b8391122a035022422ed5',1,'ParallelMCSimulation']]], + ['small_5fsphere_5fdistance',['small_sphere_distance',['../class_collisionsphere.html#ae5430c092ea0436edfe0adeb79402ff2',1,'Collisionsphere']]], + ['small_5fsphere_5flist_5fend',['small_sphere_list_end',['../class_cylinder_collision_sphere.html#a89e3bdfa12042aa94c20949587c513d5',1,'CylinderCollisionSphere::small_sphere_list_end()'],['../class_p_l_y_collision_sphere.html#a7fd18a4a8a9dbb2f7104f9b9a5dd6766',1,'PLYCollisionSphere::small_sphere_list_end()']]], + ['startsimulation',['startSimulation',['../class_dynamics_simulation.html#a00cf4a6cbde1ef708fdbd58e8d8a7727',1,'DynamicsSimulation::startSimulation()'],['../class_m_c_simulation.html#aa305f18bd48dd26f916cc9c006a8dec8',1,'MCSimulation::startSimulation()'],['../class_parallel_m_c_simulation.html#a7d9420ac20b19cb1c74f81bdbad94196',1,'ParallelMCSimulation::startSimulation()']]], + ['state',['state',['../class_walker.html#afcad3f5c11d0bd045de22fb0347dc44c',1,'Walker']]], + ['status',['status',['../class_walker.html#afa37629b74387435a0bb02e0c061a718',1,'Walker']]], + ['step_5flenght',['step_lenght',['../class_dynamics_simulation.html#ad6dddce1d5bc30d3e61dceb69652c893',1,'DynamicsSimulation']]], + ['steps_5fcount',['steps_count',['../class_walker.html#a83536011f160b42f6c39f121ee550731',1,'Walker']]], + ['steps_5fper_5fsecond',['steps_per_second',['../class_walker.html#a7f33d06b7aa5fabf2a2ac15d119bbcc7',1,'Walker']]], + ['steps_5fsubset',['steps_subset',['../class_trajectory.html#a973422e0d41afe4720fbbf62500a5035',1,'Trajectory']]], + ['stuck_5fcount',['stuck_count',['../class_parallel_m_c_simulation.html#a6ee1dfd6e695ec5ec7d4c2ed94f233cf',1,'ParallelMCSimulation']]], + ['sub_5fdwi',['sub_DWI',['../class_simulable_sequence.html#a2686ccfa89396eeadd0a0d4f7842623c',1,'SimulableSequence']]], + ['sub_5fdwi_5fextra',['sub_DWI_extra',['../class_simulable_sequence.html#ad7157eed5b79cf74c45b4185a2465eb6',1,'SimulableSequence']]], + ['sub_5fdwi_5fintra',['sub_DWI_intra',['../class_simulable_sequence.html#a20a947108c3bb80ed45dd8851e777511',1,'SimulableSequence']]], + ['sub_5fdwii',['sub_DWIi',['../class_simulable_sequence.html#a1e958cc7d15337fa3ae0e58c8330f212',1,'SimulableSequence']]], + ['subdivision',['Subdivision',['../class_subdivision.html',1,'Subdivision'],['../class_subdivision.html#ac51db3c00b0e4f7543c34859ad846871',1,'Subdivision::Subdivision()'],['../class_subdivision.html#a96a55a5e9c88a2ee0640a904bb30141c',1,'Subdivision::Subdivision(Eigen::Vector3f &, Eigen::Vector3f &)']]], + ['subdivision_5fflag',['subdivision_flag',['../class_parameters.html#a43362cb6e3ea49cc9db9e52c3ebc7140',1,'Parameters::subdivision_flag()'],['../class_simulable_sequence.html#ae9e6e581ba16bbf81b693c0e4943bbf9',1,'SimulableSequence::subdivision_flag()']]], + ['subdivisions',['subdivisions',['../class_parameters.html#a3c05ff7a30f151c384b83ce3adca26fa',1,'Parameters::subdivisions()'],['../class_simulable_sequence.html#a77c721d4650578fdc3f44adfa91c030e',1,'SimulableSequence::subdivisions()']]], + ['subdivisions_5ffile',['subdivisions_file',['../class_parameters.html#a1733bfcb8391c494b7b1a317dfda5e44',1,'Parameters']]] +]; diff --git a/doc/html/search/classes_0.html b/doc/html/search/classes_0.html new file mode 100644 index 0000000..1c3e406 --- /dev/null +++ b/doc/html/search/classes_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_0.js b/doc/html/search/classes_0.js new file mode 100644 index 0000000..ce00d91 --- /dev/null +++ b/doc/html/search/classes_0.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['collision',['Collision',['../class_collision.html',1,'']]], + ['collisionsphere',['Collisionsphere',['../class_collisionsphere.html',1,'']]], + ['collisionspheren',['Collisionspheren',['../class_collisionspheren.html',1,'']]], + ['cylinder',['Cylinder',['../class_cylinder.html',1,'']]], + ['cylindercollisionsphere',['CylinderCollisionSphere',['../class_cylinder_collision_sphere.html',1,'']]], + ['cylindergammadistribution',['CylinderGammaDistribution',['../class_cylinder_gamma_distribution.html',1,'']]] +]; diff --git a/doc/html/search/classes_1.html b/doc/html/search/classes_1.html new file mode 100644 index 0000000..a8e7069 --- /dev/null +++ b/doc/html/search/classes_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_1.js b/doc/html/search/classes_1.js new file mode 100644 index 0000000..a9c485a --- /dev/null +++ b/doc/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['dynamicssimulation',['DynamicsSimulation',['../class_dynamics_simulation.html',1,'']]] +]; diff --git a/doc/html/search/classes_2.html b/doc/html/search/classes_2.html new file mode 100644 index 0000000..5c09c96 --- /dev/null +++ b/doc/html/search/classes_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_2.js b/doc/html/search/classes_2.js new file mode 100644 index 0000000..0e6653e --- /dev/null +++ b/doc/html/search/classes_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gradientwaveform',['GradientWaveform',['../class_gradient_waveform.html',1,'']]] +]; diff --git a/doc/html/search/classes_3.html b/doc/html/search/classes_3.html new file mode 100644 index 0000000..5faaeba --- /dev/null +++ b/doc/html/search/classes_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_3.js b/doc/html/search/classes_3.js new file mode 100644 index 0000000..cd3926d --- /dev/null +++ b/doc/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mcsimulation',['MCSimulation',['../class_m_c_simulation.html',1,'']]] +]; diff --git a/doc/html/search/classes_4.html b/doc/html/search/classes_4.html new file mode 100644 index 0000000..b3f11bc --- /dev/null +++ b/doc/html/search/classes_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_4.js b/doc/html/search/classes_4.js new file mode 100644 index 0000000..6114822 --- /dev/null +++ b/doc/html/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['obstacle',['Obstacle',['../class_obstacle.html',1,'']]] +]; diff --git a/doc/html/search/classes_5.html b/doc/html/search/classes_5.html new file mode 100644 index 0000000..952ace6 --- /dev/null +++ b/doc/html/search/classes_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_5.js b/doc/html/search/classes_5.js new file mode 100644 index 0000000..3f50b69 --- /dev/null +++ b/doc/html/search/classes_5.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['parallelmcsimulation',['ParallelMCSimulation',['../class_parallel_m_c_simulation.html',1,'']]], + ['parameter',['Parameter',['../class_parameter.html',1,'']]], + ['parameters',['Parameters',['../class_parameters.html',1,'']]], + ['pgsesequence',['PGSESequence',['../class_p_g_s_e_sequence.html',1,'']]], + ['plane',['Plane',['../class_plane.html',1,'']]], + ['plycollisionsphere',['PLYCollisionSphere',['../class_p_l_y_collision_sphere.html',1,'']]], + ['plyobstacle',['PLYObstacle',['../class_p_l_y_obstacle.html',1,'']]], + ['propagator',['Propagator',['../class_propagator.html',1,'']]] +]; diff --git a/doc/html/search/classes_6.html b/doc/html/search/classes_6.html new file mode 100644 index 0000000..75eef9f --- /dev/null +++ b/doc/html/search/classes_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_6.js b/doc/html/search/classes_6.js new file mode 100644 index 0000000..6cc9fd5 --- /dev/null +++ b/doc/html/search/classes_6.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['scheme',['Scheme',['../class_scheme.html',1,'']]], + ['sentinel',['Sentinel',['../classsentinels_1_1_sentinel.html',1,'sentinels']]], + ['sentinels',['Sentinels',['../class_sentinels.html',1,'']]], + ['simerrno',['SimErrno',['../class_sim_errno.html',1,'']]], + ['simulablesequence',['SimulableSequence',['../class_simulable_sequence.html',1,'']]], + ['subdivision',['Subdivision',['../class_subdivision.html',1,'']]] +]; diff --git a/doc/html/search/classes_7.html b/doc/html/search/classes_7.html new file mode 100644 index 0000000..745f5f2 --- /dev/null +++ b/doc/html/search/classes_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_7.js b/doc/html/search/classes_7.js new file mode 100644 index 0000000..28d089a --- /dev/null +++ b/doc/html/search/classes_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['trajectory',['Trajectory',['../class_trajectory.html',1,'']]], + ['triangle',['Triangle',['../class_triangle.html',1,'']]] +]; diff --git a/doc/html/search/classes_8.html b/doc/html/search/classes_8.html new file mode 100644 index 0000000..5a443d9 --- /dev/null +++ b/doc/html/search/classes_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_8.js b/doc/html/search/classes_8.js new file mode 100644 index 0000000..c4192c9 --- /dev/null +++ b/doc/html/search/classes_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['vertex',['Vertex',['../class_vertex.html',1,'']]], + ['voxel',['Voxel',['../class_voxel.html',1,'']]] +]; diff --git a/doc/html/search/classes_9.html b/doc/html/search/classes_9.html new file mode 100644 index 0000000..9cb55be --- /dev/null +++ b/doc/html/search/classes_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/classes_9.js b/doc/html/search/classes_9.js new file mode 100644 index 0000000..da36d30 --- /dev/null +++ b/doc/html/search/classes_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['walker',['Walker',['../class_walker.html',1,'']]] +]; diff --git a/doc/html/search/close.png b/doc/html/search/close.png new file mode 100644 index 0000000..9342d3d Binary files /dev/null and b/doc/html/search/close.png differ diff --git a/doc/html/search/enums_0.html b/doc/html/search/enums_0.html new file mode 100644 index 0000000..ee343ac --- /dev/null +++ b/doc/html/search/enums_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enums_0.js b/doc/html/search/enums_0.js new file mode 100644 index 0000000..80a2f1c --- /dev/null +++ b/doc/html/search/enums_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['collision_5flocation',['collision_location',['../class_collision.html#aad433eb4e51dbfd7ab9bbe188fbe47ab',1,'Collision']]], + ['collision_5ftype',['collision_type',['../class_collision.html#aa7f309840b693689b164c7e4b4d643e5',1,'Collision']]] +]; diff --git a/doc/html/search/enums_1.html b/doc/html/search/enums_1.html new file mode 100644 index 0000000..3fd210a --- /dev/null +++ b/doc/html/search/enums_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enums_1.js b/doc/html/search/enums_1.js new file mode 100644 index 0000000..1fa434a --- /dev/null +++ b/doc/html/search/enums_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['relativelocation',['RelativeLocation',['../class_walker.html#a24246136a10754791b05cb570dbb8417',1,'Walker']]] +]; diff --git a/doc/html/search/enums_2.html b/doc/html/search/enums_2.html new file mode 100644 index 0000000..a042e52 --- /dev/null +++ b/doc/html/search/enums_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/enums_2.js b/doc/html/search/enums_2.js new file mode 100644 index 0000000..9b42bd0 --- /dev/null +++ b/doc/html/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['state',['state',['../class_walker.html#afcad3f5c11d0bd045de22fb0347dc44c',1,'Walker']]] +]; diff --git a/doc/html/search/functions_0.html b/doc/html/search/functions_0.html new file mode 100644 index 0000000..4e6d87d --- /dev/null +++ b/doc/html/search/functions_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_0.js b/doc/html/search/functions_0.js new file mode 100644 index 0000000..ce8b682 --- /dev/null +++ b/doc/html/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['appendrepetitionlabel',['appendRepetitionLabel',['../class_sim_errno.html#a3dfc14a69998cff0ee82f8bb6ef2ddc4',1,'SimErrno']]] +]; diff --git a/doc/html/search/functions_1.html b/doc/html/search/functions_1.html new file mode 100644 index 0000000..b343e2d --- /dev/null +++ b/doc/html/search/functions_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_1.js b/doc/html/search/functions_1.js new file mode 100644 index 0000000..0b24717 --- /dev/null +++ b/doc/html/search/functions_1.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['checkcollision',['checkCollision',['../class_cylinder.html#a43350a6331f8656dd0774a4a3b68724f',1,'Cylinder::checkCollision()'],['../class_obstacle.html#af11af63f11595304ff6d5c1785c03da5',1,'Obstacle::checkCollision()']]], + ['checkconfigurationfile',['checkConfigurationFile',['../class_sim_errno.html#a4b59c263ba564ebc9edbd40fe9ec3bc8',1,'SimErrno']]], + ['checkcylinderslistfile',['checkCylindersListFile',['../class_sim_errno.html#a077a20f0886022c924911e24fbc91b52',1,'SimErrno']]], + ['checkfileexist',['checkFileExist',['../class_sim_errno.html#a8786cb077da0c41a32cd5d96f03fde35',1,'SimErrno']]], + ['checkgammadistributionparamaters',['checkGammaDistributionParamaters',['../class_sim_errno.html#aa997e9bec44280eec04ce320f8d75031',1,'SimErrno']]], + ['checkinitwalkerfile',['checkInitWalkerFile',['../class_sim_errno.html#a21ed929e9b81e9059d4da3ca03c9d80c',1,'SimErrno']]], + ['checkouputprefixandwriteinfo',['checkOuputPrefixAndWriteInfo',['../class_sim_errno.html#a195d934b873f7b10be5f57cf6f77e80f',1,'SimErrno']]], + ['checkplyfiles',['checkPLYFiles',['../class_sim_errno.html#a3a4c60541ecf163e50f70f8b9795be29',1,'SimErrno']]], + ['checkschemefile',['checkSchemeFile',['../class_sim_errno.html#ad5048e2a5f5630118ec614afdd4fd197',1,'SimErrno']]], + ['checksimulationparameters',['checkSimulationParameters',['../class_sim_errno.html#aabc7284492cb5f8ef38fce7d4501abbd',1,'SimErrno']]], + ['checksubdivisionsfile',['checkSubdivisionsFile',['../class_sim_errno.html#a71e44ab51c81191171464b1371887844',1,'SimErrno']]], + ['checkvoxellimits',['checkVoxelLimits',['../class_sim_errno.html#a9b9712b12322cdd0667d6fc4ee7aceaf',1,'SimErrno']]], + ['closetrajreaderfile',['closeTrajReaderFile',['../class_trajectory.html#a9aedf2530dca72ca629741585717c64a',1,'Trajectory']]], + ['computecollisionlocation',['computeCollisionLocation',['../class_collision.html#aa7ec5170357d8913c390defd844686e1',1,'Collision']]], + ['computedynamictimesteps',['computeDynamicTimeSteps',['../class_p_g_s_e_sequence.html#ac115d93aabb283f19568f55493d57ded',1,'PGSESequence::computeDynamicTimeSteps()'],['../class_simulable_sequence.html#a3c5285531564cdb204894e6c6fc9204e',1,'SimulableSequence::computeDynamicTimeSteps()']]], + ['creategammasubstrate',['createGammaSubstrate',['../class_cylinder_gamma_distribution.html#ad93e569b24e3c6b1266ecf79bd18dec9',1,'CylinderGammaDistribution']]], + ['cylinder',['Cylinder',['../class_cylinder.html#a01dc978cb576f834b9545e43d4dad2a2',1,'Cylinder::Cylinder()'],['../class_cylinder.html#a0a5f7aa0a0c5c5e17c783784fd99fa1a',1,'Cylinder::Cylinder(Eigen::Vector3d P_, Eigen::Vector3d Q_, double radius_, double scale=1)'],['../class_cylinder.html#ab5389301aa05bdee0c066e0b8026611f',1,'Cylinder::Cylinder(Cylinder const &cyl)']]], + ['cylindercollisionsphere',['CylinderCollisionSphere',['../class_cylinder_collision_sphere.html#ac4f58e8792fdcdfe475b9556dc804553',1,'CylinderCollisionSphere']]], + ['cylindergammadistribution',['CylinderGammaDistribution',['../class_cylinder_gamma_distribution.html#a7578f5f0fb11398ec5bf5007047f4b81',1,'CylinderGammaDistribution']]] +]; diff --git a/doc/html/search/functions_2.html b/doc/html/search/functions_2.html new file mode 100644 index 0000000..ecce2f3 --- /dev/null +++ b/doc/html/search/functions_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_2.js b/doc/html/search/functions_2.js new file mode 100644 index 0000000..7b2955a --- /dev/null +++ b/doc/html/search/functions_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['displaygammadistribution',['displayGammaDistribution',['../class_cylinder_gamma_distribution.html#a3408ed30966550c10810a0a6cbbfd3c2',1,'CylinderGammaDistribution']]], + ['doihavemorepioritythan',['doIHaveMorePiorityThan',['../class_collision.html#aedabfa9b114e4201343963df5698f7ef',1,'Collision']]], + ['dynamicssimulation',['DynamicsSimulation',['../class_dynamics_simulation.html#ad9a3e1f235466c3827cb49c67d3a6147',1,'DynamicsSimulation::DynamicsSimulation()'],['../class_dynamics_simulation.html#aa603b5ba682b1b37cc96dd8be113cb52',1,'DynamicsSimulation::DynamicsSimulation(std::string conf_file)'],['../class_dynamics_simulation.html#a8fd2ec6f3640bff79e4b1ad960bbda5b',1,'DynamicsSimulation::DynamicsSimulation(Parameters &params_)']]] +]; diff --git a/doc/html/search/functions_3.html b/doc/html/search/functions_3.html new file mode 100644 index 0000000..15f06ab --- /dev/null +++ b/doc/html/search/functions_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_3.js b/doc/html/search/functions_3.js new file mode 100644 index 0000000..05d263e --- /dev/null +++ b/doc/html/search/functions_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['error',['error',['../class_sim_errno.html#a1d49dc3d396b355aee645c6d35436aa9',1,'SimErrno']]], + ['expectedtime',['expectedTime',['../class_sim_errno.html#a786ea76043026ad10aec48bc81137144',1,'SimErrno']]] +]; diff --git a/doc/html/search/functions_4.html b/doc/html/search/functions_4.html new file mode 100644 index 0000000..8985ff2 --- /dev/null +++ b/doc/html/search/functions_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_4.js b/doc/html/search/functions_4.js new file mode 100644 index 0000000..b1d88d6 --- /dev/null +++ b/doc/html/search/functions_4.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['get_5fadt',['get_adt',['../class_p_g_s_e_sequence.html#a885a0415519683a7fbfa1883f7f3d807',1,'PGSESequence']]], + ['getbvalue',['getbValue',['../class_p_g_s_e_sequence.html#a8b0671a505f79a601d3d4d2d9b7f36cc',1,'PGSESequence::getbValue()'],['../class_simulable_sequence.html#a85cdcf5f7bd5bed804a816e3c18840b7',1,'SimulableSequence::getbValue()']]], + ['getdiffusivity',['getDiffusivity',['../class_parameters.html#ac429071159941e3957eb7c030280a30f',1,'Parameters']]], + ['getdwisignal',['getDWISignal',['../class_gradient_waveform.html#a52971b5f773c8c0b7c43bcd5fc50197a',1,'GradientWaveform::getDWISignal()'],['../class_p_g_s_e_sequence.html#aec05e76b5c7b3361bd3e68301b262a0a',1,'PGSESequence::getDWISignal()']]], + ['getfreedecay',['getFreeDecay',['../class_p_g_s_e_sequence.html#a375c8a943f4857a323ffc404394b5d8a',1,'PGSESequence::getFreeDecay()'],['../class_simulable_sequence.html#a31a328cc716e039a53f9b12122050b83',1,'SimulableSequence::getFreeDecay()']]], + ['getgradimpulse',['getGradImpulse',['../class_gradient_waveform.html#a80dd810cb4e5a11dec311ac87e55ea18',1,'GradientWaveform::getGradImpulse()'],['../class_p_g_s_e_sequence.html#a3f2a705b7d3312944630f3d7f639e8e4',1,'PGSESequence::getGradImpulse()'],['../class_simulable_sequence.html#a03a417776f5404b06c761ab9109e3e1d',1,'SimulableSequence::getGradImpulse()']]], + ['getgradimpuse',['getGradImpuse',['../class_p_g_s_e_sequence.html#a9985ead781333f782d1dee54482eb0d2',1,'PGSESequence']]], + ['getinterpolatedgradimpulse',['getInterpolatedGradImpulse',['../class_gradient_waveform.html#a2f1449c026649e4601f773086d1346ce',1,'GradientWaveform']]], + ['getmaxlimits',['getMaxLimits',['../class_parameters.html#ad4f8b826db4c1b665891740469e41086',1,'Parameters']]], + ['getminlimits',['getMinLimits',['../class_parameters.html#abda8b91e5ac40e67c79184d7071c353a',1,'Parameters']]], + ['getnumericalbvalue',['getNumericalbValue',['../class_gradient_waveform.html#a5f55e43b3057509b0f98812d2a72db9a',1,'GradientWaveform::getNumericalbValue()'],['../class_p_g_s_e_sequence.html#a1373f02bffedb1e934818ae8d4fb8939',1,'PGSESequence::getNumericalbValue()']]], + ['getnumsteps',['getNumSteps',['../class_parameters.html#aa5aaf80e0189c63090e8f04cf485800f',1,'Parameters']]], + ['getnumwalkers',['getNumWalkers',['../class_parameters.html#adb8599bc60f977f684f32a83bbe28fc1',1,'Parameters']]], + ['getoutputbasefilename',['getOutputBaseFileName',['../class_parameters.html#a794fd941bf5ff311f61f2e6b4f19e64d',1,'Parameters']]], + ['getschemefilename',['getSchemeFileName',['../class_parameters.html#a7291b970983c021569cd2e3a0573592c',1,'Parameters']]], + ['gettrajfilename',['getTrajFileName',['../class_parameters.html#a38057c2ae3d11b578c8f199d73683ee1',1,'Parameters']]], + ['getwritetextflag',['getWriteTextFlag',['../class_parameters.html#adb6064f329732640c226608d6e1ddb60',1,'Parameters']]], + ['getwritetrajflag',['getWriteTrajFlag',['../class_parameters.html#a21817e9a0207da2adf32611bcaf889ef',1,'Parameters']]], + ['gradientwaveform',['GradientWaveform',['../class_gradient_waveform.html#acf951c9a86f95d002db4858ee4c78582',1,'GradientWaveform::GradientWaveform()'],['../class_gradient_waveform.html#aad3922dbe19647ed0fcbba175fb9a5ff',1,'GradientWaveform::GradientWaveform(Scheme &scheme)'],['../class_gradient_waveform.html#a4780653a03ac1f576aeb6102b910ccde',1,'GradientWaveform::GradientWaveform(Scheme &scheme_, const char *traj_file_name)']]] +]; diff --git a/doc/html/search/functions_5.html b/doc/html/search/functions_5.html new file mode 100644 index 0000000..0314918 --- /dev/null +++ b/doc/html/search/functions_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_5.js b/doc/html/search/functions_5.js new file mode 100644 index 0000000..49f65aa --- /dev/null +++ b/doc/html/search/functions_5.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['info',['info',['../class_sim_errno.html#aef262fffecd567fe6ebcf57aed23e8dd',1,'SimErrno']]], + ['infomenu',['infoMenu',['../class_sim_errno.html#aafbfe0b71883701a1c8882135c54cfe4',1,'SimErrno']]], + ['iniobstacles',['iniObstacles',['../class_m_c_simulation.html#aa60234e3f6d2a100c8b03e4f304b07f4',1,'MCSimulation']]], + ['initializeintraextrasignals',['initializeIntraExtraSignals',['../class_simulable_sequence.html#a3fad0e115a2ec07a8b1202608eba698e',1,'SimulableSequence']]], + ['initializesubdivisionsignals',['initializeSubdivisionSignals',['../class_simulable_sequence.html#aa2434c3b2ef59d1cd8b822b8e3a2920c',1,'SimulableSequence']]], + ['inittrajectory',['initTrajectory',['../class_trajectory.html#aaeda8b05ad61298fbd2aba2a3192486e',1,'Trajectory']]], + ['inittrajwriter',['initTrajWriter',['../class_trajectory.html#aec9f75fa04452af2199888c47652c7e4',1,'Trajectory']]], + ['iniwalkersfilename',['iniWalkersFileName',['../class_parameters.html#a73d64bb093a93c2b806883f5504d8fb5',1,'Parameters']]], + ['isinintra',['isInIntra',['../class_dynamics_simulation.html#ae7aa76c335aceb658a4ffc683898077c',1,'DynamicsSimulation']]], + ['isinside',['isInside',['../class_subdivision.html#adb91e1cc1e6959d13220454ddfc7ba28',1,'Subdivision']]] +]; diff --git a/doc/html/search/functions_6.html b/doc/html/search/functions_6.html new file mode 100644 index 0000000..c506123 --- /dev/null +++ b/doc/html/search/functions_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_6.js b/doc/html/search/functions_6.js new file mode 100644 index 0000000..3753cb1 --- /dev/null +++ b/doc/html/search/functions_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['mcsimulation',['MCSimulation',['../class_m_c_simulation.html#a89f56682a13f0bcb2c53d191ca336e35',1,'MCSimulation']]], + ['mindistance',['minDistance',['../class_cylinder.html#a6eb639d12a7fc0aec50895151fb91b1f',1,'Cylinder::minDistance()'],['../class_obstacle.html#a742e9d6ea940b33545cef4f1f2d58566',1,'Obstacle::minDistance()']]] +]; diff --git a/doc/html/search/functions_7.html b/doc/html/search/functions_7.html new file mode 100644 index 0000000..83a7b84 --- /dev/null +++ b/doc/html/search/functions_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_7.js b/doc/html/search/functions_7.js new file mode 100644 index 0000000..9a33b46 --- /dev/null +++ b/doc/html/search/functions_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['obstacle',['Obstacle',['../class_obstacle.html#a8f734072321fa06a7b7dae2d5f50f352',1,'Obstacle']]] +]; diff --git a/doc/html/search/functions_8.html b/doc/html/search/functions_8.html new file mode 100644 index 0000000..b55f0e6 --- /dev/null +++ b/doc/html/search/functions_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_8.js b/doc/html/search/functions_8.js new file mode 100644 index 0000000..e97b0b9 --- /dev/null +++ b/doc/html/search/functions_8.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['parallelmcsimulation',['ParallelMCSimulation',['../class_parallel_m_c_simulation.html#ac85dc215688a1462b770d20c2ff10b3f',1,'ParallelMCSimulation::ParallelMCSimulation(std::string config_file)'],['../class_parallel_m_c_simulation.html#a32ee405791787a1ea9d03895fdd810f4',1,'ParallelMCSimulation::ParallelMCSimulation(Parameters &params)']]], + ['parameters',['Parameters',['../class_parameters.html#af4d94ee360ac0157d9065f78797fe9a1',1,'Parameters']]], + ['pgsesequence',['PGSESequence',['../class_p_g_s_e_sequence.html#a29db64fbd60c54c191e8197e1818dce0',1,'PGSESequence::PGSESequence()'],['../class_p_g_s_e_sequence.html#a31bcb2e91e27823bbe71904e180f7de9',1,'PGSESequence::PGSESequence(Scheme scheme_)'],['../class_p_g_s_e_sequence.html#ab278a413c31a67f82712590897a556cb',1,'PGSESequence::PGSESequence(Scheme scheme_, const char *traj_file_name)'],['../class_p_g_s_e_sequence.html#a262f1156c51983fba9b9a6b666dd2e07',1,'PGSESequence::PGSESequence(const char *scheme_file_name)'],['../class_p_g_s_e_sequence.html#a1eb4e53eb0769b16eb9bb2156c769644',1,'PGSESequence::PGSESequence(const char *scheme_file_name, const char *traj_file_name)']]], + ['popfrombigsphere',['popFromBigSphere',['../class_cylinder_collision_sphere.html#a06a8f75674ef0bcc44a820e948624f60',1,'CylinderCollisionSphere::popFromBigSphere()'],['../class_p_l_y_collision_sphere.html#ac9cf3838088310db3dc8f0d282c3c383',1,'PLYCollisionSphere::popFromBigSphere()']]], + ['popfromsmallsphere',['popFromSmallSphere',['../class_cylinder_collision_sphere.html#ad4cfd86c6ab7035b9ba67277792c132f',1,'CylinderCollisionSphere::popFromSmallSphere()'],['../class_p_l_y_collision_sphere.html#adc8f318a913935cdd31d81f1c96192eb',1,'PLYCollisionSphere::popFromSmallSphere()']]], + ['print_5fadt_5fand_5fdt',['print_adt_and_dt',['../class_p_g_s_e_sequence.html#afa9e363ef76474d5e2495407034a10d4',1,'PGSESequence']]], + ['printsimulatininfo',['printSimulatinInfo',['../class_sim_errno.html#a87782efbd7825d733d3f0c760cf47222',1,'SimErrno']]], + ['printsubstrate',['printSubstrate',['../class_cylinder_gamma_distribution.html#a2345c03be0b0c934efe02e4234c65fd1',1,'CylinderGammaDistribution']]], + ['push_5findex',['push_index',['../class_cylinder_collision_sphere.html#af2977e3da60e7a4c1e4ae4fccf03ed09',1,'CylinderCollisionSphere']]], + ['push_5fply',['push_ply',['../class_p_l_y_collision_sphere.html#a10e46dea74b839faf34872028eafae46',1,'PLYCollisionSphere']]], + ['pushtobigsphere',['pushToBigSphere',['../class_cylinder_collision_sphere.html#a8742564f85c9fede195ee716a3b16042',1,'CylinderCollisionSphere::pushToBigSphere()'],['../class_p_l_y_collision_sphere.html#aa1fe5971687051f0de78a12ee4b31574',1,'PLYCollisionSphere::pushToBigSphere()']]], + ['pushtosmallsphere',['pushToSmallSphere',['../class_cylinder_collision_sphere.html#aa369aaa1ce839382c915ac4f32ac82ca',1,'CylinderCollisionSphere::pushToSmallSphere()'],['../class_p_l_y_collision_sphere.html#a546ea2c6fe80908502fba0350c4f9726',1,'PLYCollisionSphere::pushToSmallSphere()']]] +]; diff --git a/doc/html/search/functions_9.html b/doc/html/search/functions_9.html new file mode 100644 index 0000000..c73f07b --- /dev/null +++ b/doc/html/search/functions_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_9.js b/doc/html/search/functions_9.js new file mode 100644 index 0000000..e1eceb6 --- /dev/null +++ b/doc/html/search/functions_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['readconfigurationfile',['readConfigurationFile',['../class_dynamics_simulation.html#a67adab75eba635447c1b1b2b26d1e0ab',1,'DynamicsSimulation']]], + ['readschemefile',['readSchemeFile',['../class_gradient_waveform.html#a82da8e7b3bffe4557e6e38191b7f8d81',1,'GradientWaveform::readSchemeFile()'],['../class_parameters.html#afa8dd9d59fa727c3c2b2fe366efb2c14',1,'Parameters::readSchemeFile()'],['../class_p_g_s_e_sequence.html#a22005e67e3513690f9e46b1d531481b0',1,'PGSESequence::readSchemeFile()']]] +]; diff --git a/doc/html/search/functions_a.html b/doc/html/search/functions_a.html new file mode 100644 index 0000000..f10ad63 --- /dev/null +++ b/doc/html/search/functions_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_a.js b/doc/html/search/functions_a.js new file mode 100644 index 0000000..494a794 --- /dev/null +++ b/doc/html/search/functions_a.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['setbigspheresize',['setBigSphereSize',['../class_cylinder_collision_sphere.html#a3fe165c817a66074e737985efd87128b',1,'CylinderCollisionSphere::setBigSphereSize()'],['../class_p_l_y_collision_sphere.html#acf52aecaf0bf676087035151e6c662c9',1,'PLYCollisionSphere::setBigSphereSize()']]], + ['setdiffusivity',['setDiffusivity',['../class_parameters.html#a7af2bd289f8c8de738d643bb8e05ac62',1,'Parameters']]], + ['setduration',['setDuration',['../class_dynamics_simulation.html#a9148a30590bef5c766fd2366bbd16eb8',1,'DynamicsSimulation']]], + ['setmaxlimits',['setMaxLimits',['../class_parameters.html#a96764612c6ee5aeb684e1348e47b2308',1,'Parameters']]], + ['setminlimits',['setMinLimits',['../class_parameters.html#a73a4f685a35f8f7012609effb30a17d8',1,'Parameters']]], + ['setnumberofsteps',['setNumberOfSteps',['../class_gradient_waveform.html#a040d4a70dc7951c235010791e1c581d1',1,'GradientWaveform::setNumberOfSteps()'],['../class_p_g_s_e_sequence.html#a89f9bf116876b04403058a240a91efa3',1,'PGSESequence::setNumberOfSteps()'],['../class_simulable_sequence.html#a2e16c0b0dcf1b90ad0afc53ab14e9250',1,'SimulableSequence::setNumberOfSteps()']]], + ['setnumsteps',['setNumSteps',['../class_parameters.html#af61156929c1abed67da0a1c9920ca508',1,'Parameters']]], + ['setoutputbasefilename',['setOutputBaseFileName',['../class_parameters.html#aec6b8dc2c119405ab2cdc4e6622ac616',1,'Parameters']]], + ['setschemefilename',['setSchemeFileName',['../class_parameters.html#a95ca6c28a5c87363460ca48eed5f065f',1,'Parameters']]], + ['setsimduration',['setSimDuration',['../class_parameters.html#a934a87940878dc78b75ae4c230132f75',1,'Parameters']]], + ['setsmallspheresize',['setSmallSphereSize',['../class_cylinder_collision_sphere.html#a6e7f5ff8f4e5c076edb5f1cbee433a34',1,'CylinderCollisionSphere::setSmallSphereSize()'],['../class_p_l_y_collision_sphere.html#af9ba1a8616bb5703e58f392f45c6c069',1,'PLYCollisionSphere::setSmallSphereSize()']]], + ['settrajfile',['setTrajFile',['../class_trajectory.html#a00a28c1782a0a661b40ad9dfefc0d3f4',1,'Trajectory']]], + ['settrajfilename',['setTrajFileName',['../class_parameters.html#ac07671c27ff8f0ec9f5d8bdc656e7ffb',1,'Parameters']]], + ['startsimulation',['startSimulation',['../class_dynamics_simulation.html#a00cf4a6cbde1ef708fdbd58e8d8a7727',1,'DynamicsSimulation::startSimulation()'],['../class_m_c_simulation.html#aa305f18bd48dd26f916cc9c006a8dec8',1,'MCSimulation::startSimulation()'],['../class_parallel_m_c_simulation.html#a7d9420ac20b19cb1c74f81bdbad94196',1,'ParallelMCSimulation::startSimulation()']]], + ['subdivision',['Subdivision',['../class_subdivision.html#ac51db3c00b0e4f7543c34859ad846871',1,'Subdivision::Subdivision()'],['../class_subdivision.html#a96a55a5e9c88a2ee0640a904bb30141c',1,'Subdivision::Subdivision(Eigen::Vector3f &, Eigen::Vector3f &)']]] +]; diff --git a/doc/html/search/functions_b.html b/doc/html/search/functions_b.html new file mode 100644 index 0000000..172ea1b --- /dev/null +++ b/doc/html/search/functions_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_b.js b/doc/html/search/functions_b.js new file mode 100644 index 0000000..cc41523 --- /dev/null +++ b/doc/html/search/functions_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['trajectory',['Trajectory',['../class_trajectory.html#aa340ba80f1f4d1aa39f19f069d5d8089',1,'Trajectory::Trajectory()'],['../class_trajectory.html#a4879a4d0944eb04246e21deac940b90d',1,'Trajectory::Trajectory(const char *traj_file, bool isBigEndian_=true, std::string io_flag_="rb")']]] +]; diff --git a/doc/html/search/functions_c.html b/doc/html/search/functions_c.html new file mode 100644 index 0000000..99492ba --- /dev/null +++ b/doc/html/search/functions_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_c.js b/doc/html/search/functions_c.js new file mode 100644 index 0000000..ebd8d7c --- /dev/null +++ b/doc/html/search/functions_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['update_5fdwi_5fsignal',['update_DWI_signal',['../class_gradient_waveform.html#af4291596da9c45247b0748d945bd9b54',1,'GradientWaveform::update_DWI_signal()'],['../class_p_g_s_e_sequence.html#ae2b79f12ccd2f2446a498cb51f45e88d',1,'PGSESequence::update_DWI_signal()'],['../class_simulable_sequence.html#af5621196178ee78b27e740dfe360815e',1,'SimulableSequence::update_DWI_signal()']]], + ['update_5fphase_5fshift',['update_phase_shift',['../class_gradient_waveform.html#a2c606400c648cebd85827efa8d22b6bc',1,'GradientWaveform::update_phase_shift(double time_step, Eigen::Matrix3Xd trajectory)'],['../class_gradient_waveform.html#a7421301b24b6c98e28ef9430287cdf8e',1,'GradientWaveform::update_phase_shift(double dt, double dt_last, Walker walker)'],['../class_p_g_s_e_sequence.html#a6914efd208eab28a1ee6a3f28ca65478',1,'PGSESequence::update_phase_shift(double dt, double dt_last, Walker walker)'],['../class_p_g_s_e_sequence.html#a850a2f22cdf8b420888cfa906e03e078',1,'PGSESequence::update_phase_shift(double time_step, Eigen::Matrix3Xd trajectory)'],['../class_simulable_sequence.html#ad7b2a30f563343aa65489aa553d4df63',1,'SimulableSequence::update_phase_shift(double dt, double dt_last, Walker walker)=0'],['../class_simulable_sequence.html#a175197d165ee7852094bc70cadc59589',1,'SimulableSequence::update_phase_shift(double time_step, Eigen::Matrix3Xd trajectory)=0']]] +]; diff --git a/doc/html/search/functions_d.html b/doc/html/search/functions_d.html new file mode 100644 index 0000000..5be9ecc --- /dev/null +++ b/doc/html/search/functions_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_d.js b/doc/html/search/functions_d.js new file mode 100644 index 0000000..887862f --- /dev/null +++ b/doc/html/search/functions_d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['walker',['Walker',['../class_walker.html#acc0931305bedcf81ff621c31cdf2a92c',1,'Walker::Walker()'],['../class_walker.html#ada366966172eec6916690c01ac8f01db',1,'Walker::Walker(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)']]], + ['warning',['warning',['../class_sim_errno.html#acd92c1f938453f86e5f6d6967ed09754',1,'SimErrno']]], + ['writepropagator',['writePropagator',['../class_dynamics_simulation.html#aeae993217cebb5c23f68cb3e04cf8e49',1,'DynamicsSimulation']]] +]; diff --git a/doc/html/search/functions_e.html b/doc/html/search/functions_e.html new file mode 100644 index 0000000..e256cb6 --- /dev/null +++ b/doc/html/search/functions_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/functions_e.js b/doc/html/search/functions_e.js new file mode 100644 index 0000000..549360e --- /dev/null +++ b/doc/html/search/functions_e.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['_7ecollision',['~Collision',['../class_collision.html#a19ae49bcb3b16f4622443a34a171590c',1,'Collision']]], + ['_7edynamicssimulation',['~DynamicsSimulation',['../class_dynamics_simulation.html#a15a1f18a99d606ef2ca939e718ca996f',1,'DynamicsSimulation']]], + ['_7emcsimulation',['~MCSimulation',['../class_m_c_simulation.html#a859c6ddce0e3c07db0159b2e4906b7ca',1,'MCSimulation']]], + ['_7epgsesequence',['~PGSESequence',['../class_p_g_s_e_sequence.html#a7e5815e4ae0b3a6d42c45322fc69fdd6',1,'PGSESequence']]], + ['_7etrajectory',['~Trajectory',['../class_trajectory.html#ac673c37025ca5353ad99ab41c936e75d',1,'Trajectory']]], + ['_7ewalker',['~Walker',['../class_walker.html#a562c14b600628c18ac689464bd0f7e35',1,'Walker']]] +]; diff --git a/doc/html/search/mag_sel.png b/doc/html/search/mag_sel.png new file mode 100644 index 0000000..81f6040 Binary files /dev/null and b/doc/html/search/mag_sel.png differ diff --git a/doc/html/search/nomatches.html b/doc/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/doc/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/doc/html/search/pages_0.html b/doc/html/search/pages_0.html new file mode 100644 index 0000000..4955b9e --- /dev/null +++ b/doc/html/search/pages_0.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/pages_0.js b/doc/html/search/pages_0.js new file mode 100644 index 0000000..940039b --- /dev/null +++ b/doc/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['monte_20carlo_20diffusion_20and_20collision_20simulator',['Monte Carlo Diffusion and Collision Simulator',['../md_src__r_e_a_d_m_e.html',1,'']]] +]; diff --git a/doc/html/search/search.css b/doc/html/search/search.css new file mode 100644 index 0000000..3cf9df9 --- /dev/null +++ b/doc/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doc/html/search/search.js b/doc/html/search/search.js new file mode 100644 index 0000000..dedce3b --- /dev/null +++ b/doc/html/search/search.js @@ -0,0 +1,791 @@ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_0.js b/doc/html/search/variables_0.js new file mode 100644 index 0000000..6a26259 --- /dev/null +++ b/doc/html/search/variables_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['alpha',['alpha',['../class_cylinder_gamma_distribution.html#a8cae528f51692ed05049e4ea06c63722',1,'CylinderGammaDistribution']]], + ['aprox_5fvolumen',['aprox_volumen',['../class_parallel_m_c_simulation.html#aa51edc0c79c6ae66ddd0046d21b871d4',1,'ParallelMCSimulation']]] +]; diff --git a/doc/html/search/variables_1.html b/doc/html/search/variables_1.html new file mode 100644 index 0000000..84237b6 --- /dev/null +++ b/doc/html/search/variables_1.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_1.js b/doc/html/search/variables_1.js new file mode 100644 index 0000000..e648bdc --- /dev/null +++ b/doc/html/search/variables_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['beta',['beta',['../class_cylinder_gamma_distribution.html#a601a42ef7bacbf9696229efbd703f61e',1,'CylinderGammaDistribution']]], + ['big_5fsphere_5fdistance',['big_sphere_distance',['../class_collisionsphere.html#a4b791781efcb1af5198b22ea0b542cfb',1,'Collisionsphere']]], + ['big_5fsphere_5flist_5fend',['big_sphere_list_end',['../class_cylinder_collision_sphere.html#a303b3843a9c8ab9ae3e6f4cce85ae8e0',1,'CylinderCollisionSphere::big_sphere_list_end()'],['../class_p_l_y_collision_sphere.html#aadf7b345b8c91791fa96e00862bc8cbb',1,'PLYCollisionSphere::big_sphere_list_end()']]], + ['bounced_5fdirection',['bounced_direction',['../class_collision.html#aee20b80597eeea9b0c5a3ff0a5d0c81c',1,'Collision']]] +]; diff --git a/doc/html/search/variables_10.html b/doc/html/search/variables_10.html new file mode 100644 index 0000000..548ac84 --- /dev/null +++ b/doc/html/search/variables_10.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_10.js b/doc/html/search/variables_10.js new file mode 100644 index 0000000..4485985 --- /dev/null +++ b/doc/html/search/variables_10.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['t',['T',['../class_gradient_waveform.html#af2f45ff237ba41afe3ff5cedb7c1c966',1,'GradientWaveform::T()'],['../class_p_g_s_e_sequence.html#a07e27e6e8a8506521386a291d62e8423',1,'PGSESequence::T()'],['../class_scheme.html#a9715a33d087d317724e96229572ebe0d',1,'Scheme::T()'],['../class_trajectory.html#ad9cbff5cf9f84ca1e2378d1d6105c5e3',1,'Trajectory::T()'],['../class_collision.html#a195d201b0843d9f7190ac3a27761b4e7',1,'Collision::t()']]], + ['t2',['T2',['../class_obstacle.html#a374f9b4486f63abce9696f5fe3a13e8e',1,'Obstacle']]], + ['te',['TE',['../class_gradient_waveform.html#a4e0c0163e36cc017f5b147e9ca3022e0',1,'GradientWaveform::TE()'],['../class_p_g_s_e_sequence.html#a06df939859fd2ed6104bfee584f893a1',1,'PGSESequence::TE()']]], + ['time_5fsteps',['time_steps',['../class_simulable_sequence.html#a7e7e1a0de6045046061ffccaba4fa5ee',1,'SimulableSequence']]], + ['total_5fini_5fwalker_5fpos',['total_ini_walker_pos',['../class_parallel_m_c_simulation.html#a5efe5faa45e57e6ff3827e9ec9e52a64',1,'ParallelMCSimulation']]], + ['total_5fsim_5fparticles',['total_sim_particles',['../class_parallel_m_c_simulation.html#a18326e05c32fac82264d7351d78a7433',1,'ParallelMCSimulation']]], + ['total_5ftries',['total_tries',['../class_dynamics_simulation.html#abb056d8cde70aab8b6fa81ee8cdb231e',1,'DynamicsSimulation']]], + ['traj_5ffile',['traj_file',['../class_parameters.html#a75346dc3b7a41548a2f9e0560343df24',1,'Parameters']]], + ['trajectory',['trajectory',['../class_dynamics_simulation.html#ab69fedf7129784621eec440ba873218d',1,'DynamicsSimulation::trajectory()'],['../class_gradient_waveform.html#a83a7c844f86acee3b7ab12e7e70202af',1,'GradientWaveform::trajectory()'],['../class_p_g_s_e_sequence.html#a0fd0fb458384bfb65070fdab5165dde5',1,'PGSESequence::trajectory()']]], + ['trajfile',['trajfile',['../class_trajectory.html#aee056cca538c4430eacff9534e43bc8e',1,'Trajectory']]], + ['triangle_5find',['triangle_ind',['../class_collision.html#a50dfece7495474875117cfbb3c4f524d',1,'Collision']]], + ['type',['type',['../class_collision.html#a384809577e353e0905047beac856015b',1,'Collision::type()'],['../class_scheme.html#a3a767ed00f8859a04857812e370c6db5',1,'Scheme::type()']]] +]; diff --git a/doc/html/search/variables_11.html b/doc/html/search/variables_11.html new file mode 100644 index 0000000..d5be914 --- /dev/null +++ b/doc/html/search/variables_11.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_11.js b/doc/html/search/variables_11.js new file mode 100644 index 0000000..810ba43 --- /dev/null +++ b/doc/html/search/variables_11.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['u',['u',['../class_collision.html#a6d79ffbca0e7f67fdc9af809f13f7f8a',1,'Collision']]] +]; diff --git a/doc/html/search/variables_12.html b/doc/html/search/variables_12.html new file mode 100644 index 0000000..b62e1ee --- /dev/null +++ b/doc/html/search/variables_12.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_12.js b/doc/html/search/variables_12.js new file mode 100644 index 0000000..6218be3 --- /dev/null +++ b/doc/html/search/variables_12.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['v',['v',['../class_collision.html#ade5759fea1e6b41812d2499f1dc06c02',1,'Collision']]], + ['verbatim',['verbatim',['../class_parameters.html#aabce43eb8376a94a8e765da99b58d003',1,'Parameters']]], + ['voxels_5flist',['voxels_list',['../class_dynamics_simulation.html#ab68d71822661c3608bde4553392c9bd1',1,'DynamicsSimulation::voxels_list()'],['../class_parameters.html#aefbd07d8501ebb9311bbb1ea7c37be26',1,'Parameters::voxels_list()']]] +]; diff --git a/doc/html/search/variables_13.html b/doc/html/search/variables_13.html new file mode 100644 index 0000000..15437be --- /dev/null +++ b/doc/html/search/variables_13.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_13.js b/doc/html/search/variables_13.js new file mode 100644 index 0000000..64cf429 --- /dev/null +++ b/doc/html/search/variables_13.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['walker',['walker',['../class_dynamics_simulation.html#a9a5d2596527abdcdd185430c97dea9ad',1,'DynamicsSimulation']]], + ['wave_5fbins',['wave_bins',['../class_gradient_waveform.html#ac2287a6ef99e35f0c1f97fc3ffb37d7b',1,'GradientWaveform']]], + ['wave_5fduration',['wave_duration',['../class_gradient_waveform.html#a02d695fa36713bd28d3c85d2bb7a877b',1,'GradientWaveform']]], + ['waveform',['waveform',['../class_gradient_waveform.html#a565fce08abb28fe26664194c04faeaea',1,'GradientWaveform']]], + ['write_5fbin',['write_bin',['../class_parameters.html#a4c98120687d1ba332d0c6cd5a14c59fb',1,'Parameters::write_bin()'],['../class_trajectory.html#a7135e87575f429a7d6ad32477dc96e2c',1,'Trajectory::write_bin()']]], + ['write_5ftraj',['write_traj',['../class_parameters.html#ac9408092b6254b4ccfecc85decbb1944',1,'Parameters::write_traj()'],['../class_trajectory.html#a1194477068ed051401f99aba4a1056b1',1,'Trajectory::write_traj()']]], + ['write_5ftxt',['write_txt',['../class_parameters.html#a15446bf0727ebfe03f119821c7d8ed0f',1,'Parameters::write_txt()'],['../class_trajectory.html#a94125474ee64fd3007091a3e88f59769',1,'Trajectory::write_txt()']]] +]; diff --git a/doc/html/search/variables_2.html b/doc/html/search/variables_2.html new file mode 100644 index 0000000..5c9de1a --- /dev/null +++ b/doc/html/search/variables_2.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_2.js b/doc/html/search/variables_2.js new file mode 100644 index 0000000..1f5f29f --- /dev/null +++ b/doc/html/search/variables_2.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['col_5flocation',['col_location',['../class_collision.html#ae35c71ff91ffc9c253a345f0b4e2fbba',1,'Collision']]], + ['colision_5fpoint',['colision_point',['../class_collision.html#a00d821761200316e1d54eace02c725b4',1,'Collision']]], + ['collision_5flist',['collision_list',['../class_p_l_y_collision_sphere.html#a6ef04af98385142ed0b41a2e35f423b9',1,'PLYCollisionSphere']]], + ['collision_5fsphere_5fcylinders',['collision_sphere_cylinders',['../class_walker.html#a28d139085430c9a11e0a70be2c3083af',1,'Walker']]], + ['collision_5fsphere_5fdistance',['collision_sphere_distance',['../class_parameters.html#abe008f02a49ef7f7a6f041f79cc81fbb',1,'Parameters']]], + ['collision_5fsphere_5fply',['collision_sphere_ply',['../class_walker.html#a8aecfb76c9007eb6da99b024bc5e425d',1,'Walker']]], + ['completed',['completed',['../class_dynamics_simulation.html#a6a210fb28fe2f996c226614742a25214',1,'DynamicsSimulation']]], + ['computevolume',['computeVolume',['../class_parameters.html#a669c92fe7864a00da04bba0c2af93a16',1,'Parameters']]], + ['count',['count',['../class_m_c_simulation.html#aa3853b6cec83b055593cbf58def0c164',1,'MCSimulation']]], + ['count_5fperc_5fcrossings',['count_perc_crossings',['../class_obstacle.html#aaa096d441fd095c7bbe924d1a78a8e23',1,'Obstacle']]], + ['custom_5fsampling_5farea',['custom_sampling_area',['../class_parameters.html#af023e7efce57b9da0837731db6a85c87',1,'Parameters']]], + ['cylinders',['cylinders',['../class_cylinder_gamma_distribution.html#a3e8265a7ddb15d895112e02bd66fbf67',1,'CylinderGammaDistribution']]], + ['cylinders_5fdeque',['cylinders_deque',['../class_dynamics_simulation.html#a927a79875ff2f035d929229cf4471756',1,'DynamicsSimulation']]], + ['cylinders_5ffiles',['cylinders_files',['../class_parameters.html#abdef3b0fe62c5fdca7d417d01edd7422',1,'Parameters']]], + ['cylinders_5flist',['cylinders_list',['../class_dynamics_simulation.html#a938c4df48ca1cabcadefb974093d4a57',1,'DynamicsSimulation::cylinders_list()'],['../class_m_c_simulation.html#a36909899f67439feed1a980037ea8c03',1,'MCSimulation::cylinders_list()'],['../class_parallel_m_c_simulation.html#a4c36ff5327e9f19258fed5d64d48fdb8',1,'ParallelMCSimulation::cylinders_list()']]] +]; diff --git a/doc/html/search/variables_3.html b/doc/html/search/variables_3.html new file mode 100644 index 0000000..f95e34c --- /dev/null +++ b/doc/html/search/variables_3.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_3.js b/doc/html/search/variables_3.js new file mode 100644 index 0000000..0c09166 --- /dev/null +++ b/doc/html/search/variables_3.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['d',['D',['../class_cylinder.html#a2e7f0d4e406cc50daf30f3e3b0be1609',1,'Cylinder']]], + ['datasynth',['dataSynth',['../class_m_c_simulation.html#a7e2496127af6436d64bca7f52bc40c82',1,'MCSimulation']]], + ['density',['density',['../class_subdivision.html#a6135c9e9b9a16f2f316d28071dee16c6',1,'Subdivision']]], + ['density_5fextra',['density_extra',['../class_subdivision.html#aa9d564a68a0785998db3e129c6698c0f',1,'Subdivision']]], + ['density_5fintra',['density_intra',['../class_subdivision.html#a2944862a3bafcacaf45a935f266f0cf0',1,'Subdivision']]], + ['diffusivity',['diffusivity',['../class_parameters.html#add48efa1d9fe056fdb21fe2d2d92533d',1,'Parameters']]], + ['discard_5fillegals',['discard_illegals',['../class_parameters.html#ac1a5fa4c00eaaf1b40789f329ae20e9a',1,'Parameters']]], + ['discard_5fstucks',['discard_stucks',['../class_parameters.html#ab1815ac94d73ca8b56a9f12fca04cb89',1,'Parameters']]], + ['dt',['dt',['../class_gradient_waveform.html#a3eacca54a58dc574384f07899a9a6da3',1,'GradientWaveform']]], + ['duration',['duration',['../class_scheme.html#ae2b4a7f1d0f06f4bea2a7f2761cbe2a7',1,'Scheme']]], + ['dwi',['DWI',['../class_simulable_sequence.html#a083961d839ed1433206ccbc481996409',1,'SimulableSequence']]], + ['dwi_5fextra',['DWI_extra',['../class_simulable_sequence.html#a49a24269e364bcd02000ba575acc85ed',1,'SimulableSequence']]], + ['dwi_5fintra',['DWI_intra',['../class_simulable_sequence.html#ac64fb8110b769e180283365567bd4158',1,'SimulableSequence']]], + ['dwii',['DWIi',['../class_simulable_sequence.html#a3708afa1322d72b59d3be20b740d107c',1,'SimulableSequence']]], + ['dyn_5fduration',['dyn_duration',['../class_gradient_waveform.html#a8608216ab7e5f002dcf6af4f869c5d27',1,'GradientWaveform::dyn_duration()'],['../class_p_g_s_e_sequence.html#a0c7e884c3b71cbcc04d6cb2d5f2a5eb9',1,'PGSESequence::dyn_duration()']]], + ['dynamic',['dynamic',['../class_simulable_sequence.html#a1de2d00a939f550af1947ae25acc4b97',1,'SimulableSequence']]], + ['dynamicsengine',['dynamicsEngine',['../class_m_c_simulation.html#ac453455b2dfb994b7b1a4b7823bd3dc9',1,'MCSimulation']]] +]; diff --git a/doc/html/search/variables_4.html b/doc/html/search/variables_4.html new file mode 100644 index 0000000..d7db285 --- /dev/null +++ b/doc/html/search/variables_4.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_4.js b/doc/html/search/variables_4.js new file mode 100644 index 0000000..3979f25 --- /dev/null +++ b/doc/html/search/variables_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['extra_5fcoll_5fcount',['extra_coll_count',['../class_walker.html#a28c595f6f6b4c32bed6afb177c0a6608',1,'Walker']]] +]; diff --git a/doc/html/search/variables_5.html b/doc/html/search/variables_5.html new file mode 100644 index 0000000..7bbceeb --- /dev/null +++ b/doc/html/search/variables_5.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_5.js b/doc/html/search/variables_5.js new file mode 100644 index 0000000..7d8d529 --- /dev/null +++ b/doc/html/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['gamma_5fpacking',['gamma_packing',['../class_parameters.html#aaef8b4218392fb19de2c5c886f5f7fa0',1,'Parameters']]] +]; diff --git a/doc/html/search/variables_6.html b/doc/html/search/variables_6.html new file mode 100644 index 0000000..4eb162d --- /dev/null +++ b/doc/html/search/variables_6.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_6.js b/doc/html/search/variables_6.js new file mode 100644 index 0000000..cacb2bd --- /dev/null +++ b/doc/html/search/variables_6.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['header',['header',['../class_scheme.html#a276a907de6afa60b6826552f337e310b',1,'Scheme']]], + ['headerfile',['headerfile',['../class_trajectory.html#a6bb5d5e4ad4fb36a65d6cffdc6ab05af',1,'Trajectory']]], + ['hex_5fpacking',['hex_packing',['../class_parameters.html#aad79d8e720492fd880ee021c6320dfe0',1,'Parameters']]], + ['hex_5fpacking_5fradius',['hex_packing_radius',['../class_parameters.html#a3c49b55dc2a2af1c5ddfc3426e2a7936',1,'Parameters']]], + ['hex_5fpacking_5fseparation',['hex_packing_separation',['../class_parameters.html#a480338071cedf966fdb79b37d9ebe656',1,'Parameters']]] +]; diff --git a/doc/html/search/variables_7.html b/doc/html/search/variables_7.html new file mode 100644 index 0000000..0408829 --- /dev/null +++ b/doc/html/search/variables_7.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_7.js b/doc/html/search/variables_7.js new file mode 100644 index 0000000..23307fd --- /dev/null +++ b/doc/html/search/variables_7.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['icvf',['icvf',['../class_cylinder_gamma_distribution.html#a31f82c4608b7cd2b022805e30a4db983',1,'CylinderGammaDistribution::icvf()'],['../class_dynamics_simulation.html#ac4161cbca21d20fde85817a21b99bd07',1,'DynamicsSimulation::icvf()'],['../class_parallel_m_c_simulation.html#a871e3fdace01984a533792dd49bebd1b',1,'ParallelMCSimulation::icvf()']]], + ['id',['id',['../class_dynamics_simulation.html#aa178498c8be8af1a515a8c0a02187600',1,'DynamicsSimulation::id()'],['../class_m_c_simulation.html#aff828a83a905ae188146d3ffaa12a1bc',1,'MCSimulation::id()'],['../class_obstacle.html#a02e049a3395138a0dc6194af0112e2b0',1,'Obstacle::id()']]], + ['illegal_5fcount',['illegal_count',['../class_parallel_m_c_simulation.html#ae667ec358689a3a7b42876b401a5fce5',1,'ParallelMCSimulation']]], + ['img_5fsignal',['img_signal',['../class_parameters.html#a1dd221193dd0ad7e34a6b4f7c496d899',1,'Parameters::img_signal()'],['../class_simulable_sequence.html#a7603177060550acd31ece2c87fcdd2a9',1,'SimulableSequence::img_signal()']]], + ['in_5fheader',['in_header',['../class_trajectory.html#a6a7484c5282331583841b038997d597b',1,'Trajectory']]], + ['in_5fobj_5findex',['in_obj_index',['../class_walker.html#adf221f7a635c09cfaafc0dab5aa38106',1,'Walker']]], + ['in_5fply_5findex',['in_ply_index',['../class_walker.html#a48d0fe08f2297d9ad56cfaec9ee1926c',1,'Walker']]], + ['index',['index',['../class_walker.html#a58e2d14d760748687138b7582cd04365',1,'Walker']]], + ['ini_5fdelta_5fpos',['ini_delta_pos',['../class_parameters.html#aea1568fbc8a92bd90303ea8afc9e8c63',1,'Parameters']]], + ['ini_5fpos',['ini_pos',['../class_walker.html#a98116f0e5d65e1cf65449d80a2d87617',1,'Walker']]], + ['ini_5fpos_5ffile',['ini_pos_file',['../class_dynamics_simulation.html#a4fb0e535753c48b4a2647502379aebaf',1,'DynamicsSimulation']]], + ['ini_5fpos_5ffile_5fini_5findex',['ini_pos_file_ini_index',['../class_dynamics_simulation.html#a8e20cd71b55dda041844cfc305851dbe',1,'DynamicsSimulation']]], + ['ini_5fwalker_5fflag',['ini_walker_flag',['../class_parameters.html#a87cb2db5b45bf9cb36e74903fecfaa6e',1,'Parameters']]], + ['ini_5fwalker_5fpositions',['ini_walker_positions',['../class_m_c_simulation.html#af53387a4edc7627a77ff03a562f8befa',1,'MCSimulation']]], + ['ini_5fwalkers_5ffile',['ini_walkers_file',['../class_parameters.html#a84db69d29321fccb7cc7ea724a74df50',1,'Parameters']]], + ['ini_5fwalkers_5ffile_5fcount',['ini_walkers_file_count',['../class_parameters.html#ae01ac4f7d6d3b9eea6799f5c929ddf00',1,'Parameters']]], + ['initial_5fsphere_5fpos_5fv',['initial_sphere_pos_v',['../class_walker.html#a8a27ead68d3dc7140afbec2710fb3176',1,'Walker']]], + ['intra_5fcoll_5fcount',['intra_coll_count',['../class_walker.html#a8ca6c90f124e46869ea752920565e2c2',1,'Walker']]], + ['intra_5fextra_5fconsensus',['intra_extra_consensus',['../class_walker.html#aa211ac1f9a396b1bf3b565e0f8ed098a',1,'Walker']]], + ['isbigendian',['isBigEndian',['../class_trajectory.html#a66dfa9e8d1e60706b8e8bb1e91a34e29',1,'Trajectory']]] +]; diff --git a/doc/html/search/variables_8.html b/doc/html/search/variables_8.html new file mode 100644 index 0000000..d54d096 --- /dev/null +++ b/doc/html/search/variables_8.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_8.js b/doc/html/search/variables_8.js new file mode 100644 index 0000000..b4ebce0 --- /dev/null +++ b/doc/html/search/variables_8.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['last_5fpos_5fr',['last_pos_r',['../class_walker.html#a8c78216899e04e9439a991cbad9df36f',1,'Walker']]], + ['last_5fpos_5fv',['last_pos_v',['../class_walker.html#a2d50601346a754183b38890c18e7a6e7',1,'Walker']]], + ['last_5ftime_5fdt',['last_time_dt',['../class_dynamics_simulation.html#aa73be02bc4cb5027a1bc4a0b6b91b4b2',1,'DynamicsSimulation']]], + ['location',['location',['../class_walker.html#a77f5c801c38158bb8568f75a22baed20',1,'Walker']]], + ['log_5fopp',['log_opp',['../class_parameters.html#ae30abbd794dee7f5aaf5d3d51152acef',1,'Parameters']]], + ['log_5fphase_5fshift',['log_phase_shift',['../class_parameters.html#a947e4b1fef66466119ea7b2e8e2bc0e4',1,'Parameters']]], + ['log_5fpropagator',['log_propagator',['../class_parameters.html#a1f5a62a35d6521994a623d0fd0a98a24',1,'Parameters']]] +]; diff --git a/doc/html/search/variables_9.html b/doc/html/search/variables_9.html new file mode 100644 index 0000000..234dc60 --- /dev/null +++ b/doc/html/search/variables_9.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_9.js b/doc/html/search/variables_9.js new file mode 100644 index 0000000..721e62c --- /dev/null +++ b/doc/html/search/variables_9.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['max_5flimits',['max_limits',['../class_cylinder_gamma_distribution.html#aa7094851c2ccf05fc5ff7a99707aa786',1,'CylinderGammaDistribution::max_limits()'],['../class_parameters.html#a879b4c717e0f59c9bbc4b7810b8fdde3',1,'Parameters::max_limits()'],['../class_subdivision.html#a96ca3e7e744026fef809ade08d861985',1,'Subdivision::max_limits()']]], + ['max_5fsampling_5farea',['max_sampling_area',['../class_parameters.html#a2bf25423e72a562d5812ed0df3e06e2d',1,'Parameters']]], + ['max_5fsimulation_5ftime',['max_simulation_time',['../class_dynamics_simulation.html#a337972272af798cb8606796116145d11',1,'DynamicsSimulation::max_simulation_time()'],['../class_parameters.html#a66ad8359ef1cc76e8d5581a402cc86b5',1,'Parameters::max_simulation_time()']]], + ['mean_5fsecond_5fpassed',['mean_second_passed',['../class_parallel_m_c_simulation.html#ad122df5454bb26a56e89c9077560a33d',1,'ParallelMCSimulation']]], + ['min_5fcyl_5fradii',['min_cyl_radii',['../class_parameters.html#a0b44e239201caecaebdb7e956ead1e0c',1,'Parameters']]], + ['min_5flimits',['min_limits',['../class_cylinder_gamma_distribution.html#ac77a9d794f2f2000066c4a26f19a9097',1,'CylinderGammaDistribution::min_limits()'],['../class_parameters.html#aa9d387477810c2bb574b83ecd1fbf8f0',1,'Parameters::min_limits()'],['../class_subdivision.html#ac8d84e208bb294b78379a05da4ccfc37',1,'Subdivision::min_limits()']]], + ['min_5fradius',['min_radius',['../class_cylinder_gamma_distribution.html#aece7d3ec40d3dbb3a2ecd1bd88c5a694',1,'CylinderGammaDistribution']]], + ['min_5fsampling_5farea',['min_sampling_area',['../class_parameters.html#a8b7e1481e63d5ac9a36eed8ab310d315',1,'Parameters']]], + ['mt',['mt',['../class_dynamics_simulation.html#a03ba104f00ae772e9b8fb55e7878c793',1,'DynamicsSimulation']]] +]; diff --git a/doc/html/search/variables_a.html b/doc/html/search/variables_a.html new file mode 100644 index 0000000..0892488 --- /dev/null +++ b/doc/html/search/variables_a.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_a.js b/doc/html/search/variables_a.js new file mode 100644 index 0000000..d4a2c75 --- /dev/null +++ b/doc/html/search/variables_a.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['next_5fdirection',['next_direction',['../class_walker.html#ad1629485a13c80367a563ed7b88149eb',1,'Walker']]], + ['now',['now',['../class_dynamics_simulation.html#a4e14e7f5efc039772219b00b02381db1',1,'DynamicsSimulation']]], + ['num_5fcylinders',['num_cylinders',['../class_cylinder_gamma_distribution.html#af74583662a4f33ba1565f2c71e6bbc5a',1,'CylinderGammaDistribution']]], + ['num_5fproc',['num_proc',['../class_parameters.html#aab0de21efc3f85e5c44205ed5ebf9d4d',1,'Parameters']]], + ['num_5frep',['num_rep',['../class_scheme.html#ae41c5ea2b3aab4492f95b2479945b729',1,'Scheme::num_rep()'],['../class_simulable_sequence.html#aa524c45db6c27dd21acacf97d7951ac2',1,'SimulableSequence::num_rep()']]], + ['num_5fsimulated_5fwalkers',['num_simulated_walkers',['../class_dynamics_simulation.html#a8772d8683d6089eef368212ee99d12d5',1,'DynamicsSimulation']]], + ['num_5fsteps',['num_steps',['../class_parameters.html#a3475e7efae778bc7720fe6c17274eef0',1,'Parameters']]], + ['num_5fwalkers',['num_walkers',['../class_parameters.html#a35329cc60a28986ee4020457d46921fb',1,'Parameters']]], + ['number_5fsubdivisions',['number_subdivisions',['../class_parameters.html#a0d15fd8f1f5c332174864c3acbaf5e10',1,'Parameters']]] +]; diff --git a/doc/html/search/variables_b.html b/doc/html/search/variables_b.html new file mode 100644 index 0000000..ea46965 --- /dev/null +++ b/doc/html/search/variables_b.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_b.js b/doc/html/search/variables_b.js new file mode 100644 index 0000000..b41be39 --- /dev/null +++ b/doc/html/search/variables_b.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['obstacle_5find',['obstacle_ind',['../class_collision.html#ad1f81d05e175689b7e31bf36121d1589',1,'Collision']]], + ['obstacle_5fpermeability',['obstacle_permeability',['../class_parameters.html#a2e5fa275543b4a52599e694e64546e13',1,'Parameters']]], + ['output_5fbase_5fname',['output_base_name',['../class_parameters.html#a2662ccc98a7a2b9f0c81f223a8f0748f',1,'Parameters']]] +]; diff --git a/doc/html/search/variables_c.html b/doc/html/search/variables_c.html new file mode 100644 index 0000000..94bf1a6 --- /dev/null +++ b/doc/html/search/variables_c.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_c.js b/doc/html/search/variables_c.js new file mode 100644 index 0000000..bec7f7b --- /dev/null +++ b/doc/html/search/variables_c.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['params',['params',['../class_dynamics_simulation.html#a67cd4cd9a2e7cd2339c98dae60e66dde',1,'DynamicsSimulation::params()'],['../class_m_c_simulation.html#aecb8470cb31fa67e38c5d5acd5a80bef',1,'MCSimulation::params()'],['../class_parallel_m_c_simulation.html#a83f856aaa88a403c657c7b8234deee7a',1,'ParallelMCSimulation::params()']]], + ['percent_5fsteps_5fin',['percent_steps_in',['../class_simulable_sequence.html#a43e046af3bf6c498a5ad232058de8a90',1,'SimulableSequence']]], + ['percolation',['percolation',['../class_obstacle.html#a7afe63ee05b482c526591c981b22cf54',1,'Obstacle']]], + ['phase_5fshift',['phase_shift',['../class_simulable_sequence.html#a8691c0451c305869064862e30986c34c',1,'SimulableSequence']]], + ['phase_5fshift_5fdistribution',['phase_shift_distribution',['../class_simulable_sequence.html#a4e45e2d935a05a7375b04718a49c9af7',1,'SimulableSequence']]], + ['ply_5fdeque',['ply_deque',['../class_dynamics_simulation.html#ad920a07f2c8c85fab7a1aec983c15b20',1,'DynamicsSimulation']]], + ['ply_5ffiles',['PLY_files',['../class_parameters.html#a76984fe140c1c6c8a047dd622561200d',1,'Parameters']]], + ['ply_5fpercolation',['PLY_percolation',['../class_parameters.html#a67f6e450517ee21255d72d41bc9f0ce7',1,'Parameters']]], + ['ply_5fscales',['PLY_scales',['../class_parameters.html#a97ed7a4d1b6c6ea8f6507a6a0fc04698',1,'Parameters']]], + ['plyobstacles_5flist',['plyObstacles_list',['../class_dynamics_simulation.html#a830b3e0aa0ce95720ea0a8180e2cffec',1,'DynamicsSimulation::plyObstacles_list()'],['../class_m_c_simulation.html#a8c21d28d54c9c947f6c5465657019ed4',1,'MCSimulation::plyObstacles_list()'],['../class_parallel_m_c_simulation.html#aa90f4d989bc868b6d225c0c5b9fe832a',1,'ParallelMCSimulation::plyObstacles_list()']]], + ['pos_5fr',['pos_r',['../class_walker.html#a1008a95833c1f74b53f02e57e84417b7',1,'Walker']]], + ['pos_5fr_5flog',['pos_r_log',['../class_walker.html#a1ba5a46fddf62eb3eeaabc7c868afe07',1,'Walker']]], + ['pos_5ftimes',['pos_times',['../class_trajectory.html#a4b6369fb83108e27a774f50c06169817',1,'Trajectory']]], + ['pos_5fv',['pos_v',['../class_walker.html#a2c1bf5a8da9e8f3a230a22ab4ae0e373',1,'Walker']]], + ['pos_5fv_5flog',['pos_v_log',['../class_walker.html#a62d99cc92226681123be94e64fb2bf7b',1,'Walker']]], + ['print_5fexpected_5ftime',['print_expected_time',['../class_dynamics_simulation.html#a8742da6be78261e71b9b8cd4de0df488',1,'DynamicsSimulation']]], + ['prop_5fdirs',['prop_dirs',['../class_parameters.html#a4bbfed0148cec6e10d0e90d85437a37a',1,'Parameters']]], + ['propagator',['propagator',['../class_dynamics_simulation.html#a62f78ae3e723206d16f1528e344ab1e9',1,'DynamicsSimulation']]] +]; diff --git a/doc/html/search/variables_d.html b/doc/html/search/variables_d.html new file mode 100644 index 0000000..b9381e9 --- /dev/null +++ b/doc/html/search/variables_d.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_d.js b/doc/html/search/variables_d.js new file mode 100644 index 0000000..48aa177 --- /dev/null +++ b/doc/html/search/variables_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['q',['Q',['../class_cylinder.html#a9f367beb008c847b97bb0ce043601769',1,'Cylinder']]] +]; diff --git a/doc/html/search/variables_e.html b/doc/html/search/variables_e.html new file mode 100644 index 0000000..375ad70 --- /dev/null +++ b/doc/html/search/variables_e.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_e.js b/doc/html/search/variables_e.js new file mode 100644 index 0000000..4abca67 --- /dev/null +++ b/doc/html/search/variables_e.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['radius',['radius',['../class_cylinder.html#a8a825799285bcf60b49b8aef0459b498',1,'Cylinder']]], + ['record_5fphase_5ftimes',['record_phase_times',['../class_parameters.html#a559e66b65a2cb4391d1099bf0db6ec44',1,'Parameters']]], + ['record_5fpos_5ftimes',['record_pos_times',['../class_parameters.html#a4f884a7effd3a8816c78084ff3c2b202',1,'Parameters']]], + ['record_5fprop_5ftimes',['record_prop_times',['../class_parameters.html#af47bd2eada81c6c581aaa8c70d04c8d6',1,'Parameters']]], + ['rejection_5fcount',['rejection_count',['../class_walker.html#a38669698192d39146c77011b69b1e372',1,'Walker']]], + ['rn',['rn',['../class_collision.html#a95898b1296dfa87b78e8a1197f0f5ea2',1,'Collision']]] +]; diff --git a/doc/html/search/variables_f.html b/doc/html/search/variables_f.html new file mode 100644 index 0000000..d371418 --- /dev/null +++ b/doc/html/search/variables_f.html @@ -0,0 +1,26 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doc/html/search/variables_f.js b/doc/html/search/variables_f.js new file mode 100644 index 0000000..706fa32 --- /dev/null +++ b/doc/html/search/variables_f.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['save_5fphase_5fshift',['save_phase_shift',['../class_parameters.html#ab737ef40d88faa6ee8a701013d9d2984',1,'Parameters::save_phase_shift()'],['../class_simulable_sequence.html#aa29f58ae224d92dd467a0845bd207324',1,'SimulableSequence::save_phase_shift()']]], + ['scale_5ffrom_5fstu',['scale_from_stu',['../class_gradient_waveform.html#a712eedb2165b3f889e27244fc9d91ebd',1,'GradientWaveform::scale_from_stu()'],['../class_parameters.html#a3c37f738b7700bdc22845bc725d51e6f',1,'Parameters::scale_from_stu()'],['../class_scheme.html#ac66ecb38621208f8dd1b5334919316cf',1,'Scheme::scale_from_stu()']]], + ['scheme',['scheme',['../class_m_c_simulation.html#a87ba6332f1f49024a442981b477360c4',1,'MCSimulation::scheme()'],['../class_p_g_s_e_sequence.html#a7349d86720a34e75eaf578fdfd3caeeb',1,'PGSESequence::scheme()'],['../class_scheme.html#aa0d26e624075fbac339a746ed10b2dc0',1,'Scheme::scheme()']]], + ['scheme_5ffile',['scheme_file',['../class_parameters.html#afbb7caab773abb16753263a0b04c8a2c',1,'Parameters::scheme_file()'],['../class_scheme.html#afa0549aa16f4f6c62d6c397909be3350',1,'Scheme::scheme_file()'],['../class_simulable_sequence.html#a9898335af9d8f639f65b73eeac8efb53',1,'SimulableSequence::scheme_file()']]], + ['second_5fpassed',['second_passed',['../class_dynamics_simulation.html#a46187e70aad2b130249ba3d1dd6a3c75',1,'DynamicsSimulation']]], + ['seed',['seed',['../class_parameters.html#afa076397ed9cbdc4c88215e29b850e3c',1,'Parameters']]], + ['sentinela',['sentinela',['../class_dynamics_simulation.html#aed384434dc469e766301268dcf1ec4ab',1,'DynamicsSimulation']]], + ['separate_5fsignal',['separate_signal',['../class_simulable_sequence.html#a3278d9b5b22b0bfbdd0ce4bef0e1cc85',1,'SimulableSequence']]], + ['separate_5fsignals',['separate_signals',['../class_parameters.html#adacb13afed18c07dfd269fae76f828b3',1,'Parameters']]], + ['sim_5fduration',['sim_duration',['../class_parameters.html#acbe36f055786ddcf8480a49d2c34c914',1,'Parameters']]], + ['sim_5fthreads',['sim_threads',['../class_parallel_m_c_simulation.html#a2a0f1cc2812c1a35e5e38d9d9ddde78b',1,'ParallelMCSimulation']]], + ['simulations',['simulations',['../class_parallel_m_c_simulation.html#af16d292f007b8391122a035022422ed5',1,'ParallelMCSimulation']]], + ['small_5fsphere_5fdistance',['small_sphere_distance',['../class_collisionsphere.html#ae5430c092ea0436edfe0adeb79402ff2',1,'Collisionsphere']]], + ['small_5fsphere_5flist_5fend',['small_sphere_list_end',['../class_cylinder_collision_sphere.html#a89e3bdfa12042aa94c20949587c513d5',1,'CylinderCollisionSphere::small_sphere_list_end()'],['../class_p_l_y_collision_sphere.html#a7fd18a4a8a9dbb2f7104f9b9a5dd6766',1,'PLYCollisionSphere::small_sphere_list_end()']]], + ['status',['status',['../class_walker.html#afa37629b74387435a0bb02e0c061a718',1,'Walker']]], + ['step_5flenght',['step_lenght',['../class_dynamics_simulation.html#ad6dddce1d5bc30d3e61dceb69652c893',1,'DynamicsSimulation']]], + ['steps_5fcount',['steps_count',['../class_walker.html#a83536011f160b42f6c39f121ee550731',1,'Walker']]], + ['steps_5fper_5fsecond',['steps_per_second',['../class_walker.html#a7f33d06b7aa5fabf2a2ac15d119bbcc7',1,'Walker']]], + ['steps_5fsubset',['steps_subset',['../class_trajectory.html#a973422e0d41afe4720fbbf62500a5035',1,'Trajectory']]], + ['stuck_5fcount',['stuck_count',['../class_parallel_m_c_simulation.html#a6ee1dfd6e695ec5ec7d4c2ed94f233cf',1,'ParallelMCSimulation']]], + ['sub_5fdwi',['sub_DWI',['../class_simulable_sequence.html#a2686ccfa89396eeadd0a0d4f7842623c',1,'SimulableSequence']]], + ['sub_5fdwi_5fextra',['sub_DWI_extra',['../class_simulable_sequence.html#ad7157eed5b79cf74c45b4185a2465eb6',1,'SimulableSequence']]], + ['sub_5fdwi_5fintra',['sub_DWI_intra',['../class_simulable_sequence.html#a20a947108c3bb80ed45dd8851e777511',1,'SimulableSequence']]], + ['sub_5fdwii',['sub_DWIi',['../class_simulable_sequence.html#a1e958cc7d15337fa3ae0e58c8330f212',1,'SimulableSequence']]], + ['subdivision_5fflag',['subdivision_flag',['../class_parameters.html#a43362cb6e3ea49cc9db9e52c3ebc7140',1,'Parameters::subdivision_flag()'],['../class_simulable_sequence.html#ae9e6e581ba16bbf81b693c0e4943bbf9',1,'SimulableSequence::subdivision_flag()']]], + ['subdivisions',['subdivisions',['../class_parameters.html#a3c05ff7a30f151c384b83ce3adca26fa',1,'Parameters::subdivisions()'],['../class_simulable_sequence.html#a77c721d4650578fdc3f44adfa91c030e',1,'SimulableSequence::subdivisions()']]], + ['subdivisions_5ffile',['subdivisions_file',['../class_parameters.html#a1733bfcb8391c494b7b1a317dfda5e44',1,'Parameters']]] +]; diff --git a/doc/html/sentinel_8h_source.html b/doc/html/sentinel_8h_source.html new file mode 100644 index 0000000..e74dc6a --- /dev/null +++ b/doc/html/sentinel_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +MCDC_simulator: src/sentinel.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    sentinel.h
    +
    +
    +
    1 
    8 #ifndef SENTINEL_H
    9 #define SENTINEL_H
    10 #include "walker.h"
    11 #include "parameters.h"
    12 
    18 namespace sentinels{;
    19 
    20 class Sentinel
    21 {
    22 public:
    23 
    24  unsigned stuck_count;
    25  unsigned illegal_count;
    26 
    27  enum ErrorCases{none,stuck,crossed,rejected,rejected_initial_pos};
    28 
    29  unsigned bouncings;
    30  unsigned obstacle_id;
    31  unsigned rejected_count;
    32  bool rejected_step;
    33  bool deport_illegals;
    34  bool discard_stucks ;
    35 
    36  ErrorCases error;
    37 
    38  Sentinel();
    39 
    40  void clear();
    41 
    42  void setBouncingError(unsigned bouncings);
    43 
    44  void setCrossingError(unsigned);
    45 
    46  void setRejectedError();
    47 
    48  bool checkErrors(Walker &w, const Parameters &params, bool noPLY, unsigned &bouncing_count);
    49 
    50  void deportationProcess(Walker &walker, unsigned &w, unsigned& t , bool& back_tracking, Parameters &params, int id);
    51 
    52 };
    53 
    54 }
    55 #endif // SENTINEL_H
    Definition: sentinel.h:20
    +
    Definition: parameters.h:22
    +
    Definition: sentinel.h:18
    +
    Spin Final class =============================================================/.
    Definition: walker.h:23
    +
    +
    + + + + diff --git a/doc/html/simerrno_8h_source.html b/doc/html/simerrno_8h_source.html new file mode 100644 index 0000000..01353fb --- /dev/null +++ b/doc/html/simerrno_8h_source.html @@ -0,0 +1,121 @@ + + + + + + + +MCDC_simulator: src/simerrno.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    simerrno.h
    +
    +
    +
    1 
    8 #ifndef SIMERRNO_H
    9 #define SIMERRNO_H
    10 #include <assert.h>
    11 #include <string>
    12 #include <fstream>
    13 #include "parameters.h"
    14 
    15 
    23 class SimErrno
    24 {
    25 public:
    26  SimErrno();
    27 
    29 
    32  inline static bool checkFileExist(const std::string name){
    33  std::ifstream f(name.c_str());
    34  return f.good();
    35  }
    36 
    38 
    42  static bool checkSimulationParameters(Parameters& params);
    43 
    45 
    49  static bool checkSchemeFile(Parameters& params);
    50 
    52 
    56  static bool checkPLYFiles(Parameters& params);
    57 
    59 
    63  static bool checkCylindersListFile(Parameters &params);
    64 
    66 
    70  static bool checkInitWalkerFile(Parameters &params);
    71 
    73 
    77  static bool checkVoxelLimits(Parameters& params);
    78 
    80 
    84  static bool checkConfigurationFile(const char *configuration_file);
    85 
    87 
    91  static void printSimulatinInfo(Parameters &params, std::ostream&, bool color = 1);
    92 
    93 
    95 
    98  static void checkOuputPrefixAndWriteInfo(Parameters &params);
    99 
    101 
    104  static bool checkGammaDistributionParamaters(Parameters &params);
    105 
    108 
    111  static void warning(std::string message, std::ostream &, bool color = 1);
    112 
    115 
    118  static void info(std::string message, std::ostream &, bool color = 1);
    119 
    122 
    126  static void infoMenu(std::string message, std::string value, std::ostream &, bool color = 1, int space = 0);
    127 
    130 
    133  static void error(std::string message, std::ostream &, bool color = 1);
    134 
    138 
    142  static void expectedTime(std::string completed, std::string time, std::ostream &, bool color = 1, std::string steps_second="", std::string endl_str ="");
    143 
    145 
    147  static std::string currentDateTime();
    148 
    150 
    153  static bool checkSubdivisionsFile(Parameters & params);
    154 
    156 
    160  static void appendRepetitionLabel(Parameters& params);
    161 
    162 };
    163 
    164 
    165 #endif // SIMERRNO_H
    static void warning(std::string message, std::ostream &, bool color=1)
    Definition: simerrno.cpp:954
    +
    static bool checkPLYFiles(Parameters &params)
    Return false if any of the PLY files are inconsistent or bugged. In may assert the program...
    Definition: simerrno.cpp:310
    +
    static bool checkInitWalkerFile(Parameters &params)
    Return false if the initial position file is inconsistent or bugged. In may assert the program...
    Definition: simerrno.cpp:516
    +
    static void printSimulatinInfo(Parameters &params, std::ostream &, bool color=1)
    Definition: simerrno.cpp:728
    +
    static void appendRepetitionLabel(Parameters &params)
    Appends a repetition label on the prefix command so no results are overwritten, helpful if you are ru...
    Definition: simerrno.cpp:1073
    +
    Definition: parameters.h:22
    +
    Simulation Input and parameter errors handling class ================================================...
    Definition: simerrno.h:23
    +
    static void checkOuputPrefixAndWriteInfo(Parameters &params)
    Return false if the output location and prefix are inconsistence or bugged.
    Definition: simerrno.cpp:900
    +
    static void infoMenu(std::string message, std::string value, std::ostream &, bool color=1, int space=0)
    Definition: simerrno.cpp:971
    +
    static bool checkSimulationParameters(Parameters &params)
    Return false if any of the parameters are inconsistent or bugged. In may assert the program...
    Definition: simerrno.cpp:17
    +
    static bool checkSchemeFile(Parameters &params)
    Return false if any of the parameters are inconsistent or bugged. In may assert the program...
    Definition: simerrno.cpp:184
    +
    static void error(std::string message, std::ostream &, bool color=1)
    Definition: simerrno.cpp:979
    +
    static bool checkGammaDistributionParamaters(Parameters &params)
    Return false if the there are errors or inconsistencies in the gamma distr. parameters.
    Definition: simerrno.cpp:922
    +
    static bool checkSubdivisionsFile(Parameters &params)
    Return false if any of the elements in the file are miss configured.
    Definition: simerrno.cpp:1015
    +
    static bool checkVoxelLimits(Parameters &params)
    Return false if the voxel instances are inconsistent or bugged. In may assert the program...
    Definition: simerrno.cpp:571
    +
    static bool checkFileExist(const std::string name)
    Return true if the file does exist, false otherwise.
    Definition: simerrno.h:32
    +
    static bool checkConfigurationFile(const char *configuration_file)
    Return false if the scheme file does not exist or there are inconsistent or bugs. In may assert the p...
    Definition: simerrno.cpp:583
    +
    static bool checkCylindersListFile(Parameters &params)
    Return false if any of the cylinder list files are inconsistent or bugged. In may assert the program...
    Definition: simerrno.cpp:450
    +
    static void expectedTime(std::string completed, std::string time, std::ostream &, bool color=1, std::string steps_second="", std::string endl_str="")
    Definition: simerrno.cpp:987
    +
    static void info(std::string message, std::ostream &, bool color=1)
    Definition: simerrno.cpp:963
    +
    +
    + + + + diff --git a/doc/html/simulablesequence_8h_source.html b/doc/html/simulablesequence_8h_source.html new file mode 100644 index 0000000..7404455 --- /dev/null +++ b/doc/html/simulablesequence_8h_source.html @@ -0,0 +1,132 @@ + + + + + + + +MCDC_simulator: src/simulablesequence.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    simulablesequence.h
    +
    +
    +
    1 
    9 #ifndef SIMULABLESEQUENCE_H
    10 #define SIMULABLESEQUENCE_H
    11 #include <string>
    12 #include <vector>
    13 #include "walker.h"
    14 #include "subdivision.h"
    15 
    17 public:
    18 
    19  std::string scheme_file;
    21  std::vector<double> DWI;
    23  std::vector<double> DWI_intra;
    25  std::vector<double> DWI_extra;
    27  std::vector<double> DWIi;
    29  std::vector<double> phase_shift;
    31  int num_rep;
    35  bool dynamic;
    39  std::vector<double> time_steps;
    41  Eigen::ArrayXXf phase_shift_distribution;
    43  std::vector<std::vector<double>> sub_DWI;
    45  std::vector<std::vector<double>> sub_DWI_intra;
    47  std::vector<std::vector<double>> sub_DWI_extra;
    49  std::vector<std::vector<double>> sub_DWIi;
    51  bool subdivision_flag = false;
    53  bool separate_signal = false;
    55  bool img_signal = false;
    57  std::vector<Subdivision> subdivisions;
    60 
    61  virtual ~SimulableSequence(){}
    62 
    69  virtual void getGradImpulse(int i, double t, double tLast, Eigen::Vector3d& Gdt) = 0;
    70 
    75  virtual double getbValue(unsigned i) {return i;} /*WARNING:Needs to be overloaded*/
    76 
    80  virtual double getFreeDecay(unsigned i,double D){return i*D;} /*WARNING: Needs to be overloaded*/
    81 
    85  virtual void update_phase_shift(double dt,double dt_last,Walker walker) = 0;
    86 
    90  virtual void update_phase_shift(double time_step,Eigen::Matrix3Xd trajectory) = 0;
    91 
    95  virtual void update_DWI_signal(Walker& walker) = 0;
    96 
    100  virtual void setNumberOfSteps(unsigned T) = 0;
    101 
    105  virtual void computeDynamicTimeSteps() {}
    106 
    110  virtual void initializeSubdivisionSignals();
    114  virtual void initializeIntraExtraSignals();
    115 
    116  virtual void writeResultingData(std::string output_base_name);
    117 
    118  virtual void writePhaseShiftDistribution(std::string output_base_name);
    119 
    120  virtual void cleanPhaseShift();
    121 
    122  virtual void cleanDWISignal();
    123 };
    124 
    125 
    126 #endif // SIMULABLESEQUENCE_H
    virtual void computeDynamicTimeSteps()
    Compute the time for all the steps when they are not constant.
    Definition: simulablesequence.h:105
    +
    Eigen::ArrayXXf phase_shift_distribution
    Definition: simulablesequence.h:41
    +
    bool save_phase_shift
    Definition: simulablesequence.h:33
    +
    virtual void setNumberOfSteps(unsigned T)=0
    Set the number of time steps if they are known.
    +
    bool separate_signal
    Definition: simulablesequence.h:53
    +
    std::vector< double > time_steps
    Definition: simulablesequence.h:39
    +
    std::vector< double > DWI_extra
    Definition: simulablesequence.h:25
    +
    std::vector< std::vector< double > > sub_DWI_intra
    Definition: simulablesequence.h:45
    +
    std::vector< double > DWIi
    Definition: simulablesequence.h:27
    +
    std::vector< double > phase_shift
    Definition: simulablesequence.h:29
    +
    std::vector< double > DWI
    Definition: simulablesequence.h:21
    +
    virtual void update_phase_shift(double dt, double dt_last, Walker walker)=0
    +
    virtual void initializeIntraExtraSignals()
    Initialize the DWI signals for each compartment (intra extra)
    Definition: simulablesequence.cpp:107
    +
    virtual void update_DWI_signal(Walker &walker)=0
    Updates the DWI signal using the cumulated phase shift.
    +
    std::vector< std::vector< double > > sub_DWI_extra
    Definition: simulablesequence.h:47
    +
    int num_rep
    Definition: simulablesequence.h:31
    +
    virtual void getGradImpulse(int i, double t, double tLast, Eigen::Vector3d &Gdt)=0
    +
    bool subdivision_flag
    Definition: simulablesequence.h:51
    +
    MR Sequence Primary Class =============================================================/.
    Definition: simulablesequence.h:16
    +
    std::string scheme_file
    Definition: simulablesequence.h:19
    +
    std::vector< double > DWI_intra
    Definition: simulablesequence.h:23
    +
    double percent_steps_in
    Definition: simulablesequence.h:37
    +
    std::vector< Subdivision > subdivisions
    Definition: simulablesequence.h:57
    +
    bool img_signal
    Definition: simulablesequence.h:55
    +
    virtual double getbValue(unsigned i)
    Definition: simulablesequence.h:75
    +
    bool dynamic
    Definition: simulablesequence.h:35
    +
    std::vector< std::vector< double > > sub_DWIi
    Definition: simulablesequence.h:49
    +
    virtual void initializeSubdivisionSignals()
    Initialize the DWI signals for each subdivision.
    Definition: simulablesequence.cpp:90
    +
    Spin Final class =============================================================/.
    Definition: walker.h:23
    +
    std::vector< std::vector< double > > sub_DWI
    Definition: simulablesequence.h:43
    +
    virtual double getFreeDecay(unsigned i, double D)
    Expected free Decay.
    Definition: simulablesequence.h:80
    +
    +
    + + + + diff --git a/doc/html/splitbar.png b/doc/html/splitbar.png new file mode 100644 index 0000000..fe895f2 Binary files /dev/null and b/doc/html/splitbar.png differ diff --git a/doc/html/subdivision_8h_source.html b/doc/html/subdivision_8h_source.html new file mode 100644 index 0000000..b322304 --- /dev/null +++ b/doc/html/subdivision_8h_source.html @@ -0,0 +1,109 @@ + + + + + + + +MCDC_simulator: src/subdivision.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    subdivision.h
    +
    +
    +
    1 
    12 #ifndef SUBDIVISION_H
    13 #define SUBDIVISION_H
    14 
    15 #include "Eigen/Core"
    16 
    18 {
    19 public:
    20 
    21 
    25  Subdivision();
    26 
    27 
    31  Subdivision(Eigen::Vector3f&,Eigen::Vector3f&);
    32 
    33  Eigen::Vector3f min_limits;
    35  Eigen::Vector3f max_limits;
    37  int density;
    47  bool isInside(Eigen::Vector3d &pos);
    48 };
    49 
    50 #endif // SUBDIVISION_H
    Auxiliary Subdivision Class =============================================================/.
    Definition: subdivision.h:17
    +
    bool isInside(Eigen::Vector3d &pos)
    Auxiliary function to check if a 3d position is inside a "subdivision" i.e. defined cube...
    Definition: subdivision.cpp:17
    +
    Eigen::Vector3f min_limits
    Definition: subdivision.h:33
    +
    Subdivision()
    Naive constructor.
    Definition: subdivision.cpp:3
    +
    Eigen::Vector3f max_limits
    Definition: subdivision.h:35
    +
    int density
    Definition: subdivision.h:37
    +
    int density_extra
    Definition: subdivision.h:41
    +
    int density_intra
    Definition: subdivision.h:39
    +
    +
    + + + + diff --git a/doc/html/sync_off.png b/doc/html/sync_off.png new file mode 100644 index 0000000..3b443fc Binary files /dev/null and b/doc/html/sync_off.png differ diff --git a/doc/html/sync_on.png b/doc/html/sync_on.png new file mode 100644 index 0000000..e08320f Binary files /dev/null and b/doc/html/sync_on.png differ diff --git a/doc/html/tab_a.png b/doc/html/tab_a.png new file mode 100644 index 0000000..3b725c4 Binary files /dev/null and b/doc/html/tab_a.png differ diff --git a/doc/html/tab_b.png b/doc/html/tab_b.png new file mode 100644 index 0000000..e2b4a86 Binary files /dev/null and b/doc/html/tab_b.png differ diff --git a/doc/html/tab_h.png b/doc/html/tab_h.png new file mode 100644 index 0000000..fd5cb70 Binary files /dev/null and b/doc/html/tab_h.png differ diff --git a/doc/html/tab_s.png b/doc/html/tab_s.png new file mode 100644 index 0000000..ab478c9 Binary files /dev/null and b/doc/html/tab_s.png differ diff --git a/doc/html/tabs.css b/doc/html/tabs.css new file mode 100644 index 0000000..bbde11e --- /dev/null +++ b/doc/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:transparent}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/doc/html/trajectory_8h_source.html b/doc/html/trajectory_8h_source.html new file mode 100644 index 0000000..18bb104 --- /dev/null +++ b/doc/html/trajectory_8h_source.html @@ -0,0 +1,119 @@ + + + + + + + +MCDC_simulator: src/trajectory.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    trajectory.h
    +
    +
    +
    1 
    7 #ifndef TRAJECTORY_H
    8 #define TRAJECTORY_H
    9 
    10 #include <string>
    11 #include <iostream>
    12 #include <stdio.h>
    13 #include <fstream>
    14 #include <Eigen/Sparse>
    15 #include <parameters.h>
    16 
    17 
    18 class Trajectory {
    19 public:
    20  std::string trajfile;
    21  std::string headerfile;
    22  FILE* in, *in_header;
    25  std::ofstream bout,tout,bheaderout,theaderout;
    26 
    27 
    28  unsigned N,T;
    29  //dynamic duration.
    30  double dyn_duration;
    31  std::string io_flag;
    32 
    33  std::vector<unsigned> pos_times;
    35  bool isBigEndian;
    36  bool write_traj;
    37  bool write_txt;
    38  bool write_bin;
    39  bool steps_subset;
    44  Trajectory();
    45 
    49  Trajectory(const char* traj_file,bool isBigEndian_ = true, std::string io_flag_= "rb");
    50 
    54  ~Trajectory();
    55 
    59  void initTrajectory(Parameters params);
    60 
    64  void setTrajFile(std::string);
    65 
    67 
    68  void closeTrajReaderFile();
    69  void openTrajReaderFile();
    70  void initTrajReaderFile();
    71  void readTrajectoryHeader() ;
    72  void readCurrentWalkersTrajectory(Eigen::Matrix3Xd&);
    74 
    76 
    77  void initTrajWriter();
    78  void initTrajWriterBinary();
    79  void initTrajWriterText();
    80 
    81  void writeTrajectoryHeaderBinary();
    82  void writeTrajectoryHeaderText();
    83 
    84  void reWriteHeaderFile(unsigned num_walkers);
    85 
    86  void writePosition(Eigen::Vector3d&);
    87  void writePositionText(Eigen::Vector3d&);
    88  void writePositionBinary(Eigen::Vector3d&);
    89 
    90  void writePosition(Eigen::Matrix3Xd&);
    91  void writePositionText(Eigen::Matrix3Xd&);
    92  void writePositionBinary(Eigen::Matrix3Xd&);
    94 
    95 private:
    96  void swapBE2SE2(void *source, int size);
    97 };
    98 
    99 #endif // TRAJECTORY_H
    void initTrajWriter()
    Definition: trajectory.cpp:56
    +
    void closeTrajReaderFile()
    Definition: trajectory.cpp:310
    +
    Definition: parameters.h:22
    +
    FILE * in_header
    Definition: trajectory.h:22
    +
    bool steps_subset
    Definition: trajectory.h:39
    +
    void setTrajFile(std::string)
    Setd the traj file operations.
    Definition: trajectory.cpp:319
    +
    bool isBigEndian
    Definition: trajectory.h:35
    +
    ~Trajectory()
    Destructor, close files and fstreams.
    Definition: trajectory.cpp:32
    +
    bool write_txt
    Definition: trajectory.h:37
    +
    std::string headerfile
    Definition: trajectory.h:21
    +
    std::vector< unsigned > pos_times
    Definition: trajectory.h:33
    +
    Trajectory()
    Main constructor, Initialice everythin to default.
    Definition: trajectory.cpp:11
    +
    void initTrajectory(Parameters params)
    Initialice the output files if any.
    Definition: trajectory.cpp:37
    +
    bool write_traj
    Definition: trajectory.h:36
    +
    std::string trajfile
    Definition: trajectory.h:20
    +
    bool write_bin
    Definition: trajectory.h:38
    +
    unsigned T
    Definition: trajectory.h:28
    +
    Auxiliary class. Handles i/o operation of walker trayectories. ============================/.
    Definition: trajectory.h:18
    +
    +
    + + + + diff --git a/doc/html/triangle_8h_source.html b/doc/html/triangle_8h_source.html new file mode 100644 index 0000000..da15309 --- /dev/null +++ b/doc/html/triangle_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +MCDC_simulator: src/triangle.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    triangle.h
    +
    +
    +
    1 
    8 #ifndef TRIANGLE_H
    9 #define TRIANGLE_H
    10 
    11 #include "vertex.h"
    12 #include "collision.h"
    13 #include "walker.h"
    14 #include "Eigen/Core"
    15 
    16 class Triangle{
    17 public:
    18  unsigned index;
    19  Vertex *vertices;
    20  Eigen::Array3i indexes;
    21  Eigen::Vector3d normal;
    22 
    23  //Collision sphere
    24  Eigen::Vector3d center;
    25  double radius;
    26 
    27  Triangle();
    28  Triangle(Vertex* vertices, unsigned index);
    29 
    30  void getVertex(const unsigned i, Eigen::Vector3d &v);
    31  void getNormal(Eigen::Vector3d &normal);
    32  void saveNormalAndAuxInfo();
    33  bool rayIntersects(const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, double &t);
    34  void stepIntersects_MT(Walker& walker,const Eigen::Vector3d &step, const double &max_length, Collision &colision);
    35  void stepIntersects_MT_limits(const Eigen::Vector3d &ray_origin,const Eigen::Vector3d &step, const double &max_length, Collision &colision,
    36  const Eigen::Vector3d &limits_mod, double limit_x,double limit_y,double limit_z);
    37 
    38  bool rayIntersects_MT(const Eigen::Vector3d & ray_origin, const Eigen::Vector3d &step, double &u, double &v, double &t);
    39 
    40  //Returns the minimum distance from the point p to the triangle
    41  double minDistance(const Eigen::Vector3d p);
    42  //double minDistancePrecise(const Eigen::Vector3d p);
    43 
    44 };
    45 
    46 #endif // TRIANGLE_H
    Auxiliary class. Implements basic vertices. ====================================/.
    Definition: vertex.h:15
    +
    Auxiliary class. Implements trangular barriers. ===================================/.
    Definition: triangle.h:16
    +
    Collision Final class =====================================================================/.
    Definition: collision.h:19
    +
    Spin Final class =============================================================/.
    Definition: walker.h:23
    +
    +
    + + + + diff --git a/doc/html/vertex_8h_source.html b/doc/html/vertex_8h_source.html new file mode 100644 index 0000000..9abde47 --- /dev/null +++ b/doc/html/vertex_8h_source.html @@ -0,0 +1,102 @@ + + + + + + + +MCDC_simulator: src/vertex.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    vertex.h
    +
    +
    +
    1 
    9 #ifndef VERTEX_H
    10 #define VERTEX_H
    11 
    15 class Vertex{
    16 public:
    17  Vertex();
    18  Vertex(const double& x,const double& y,const double& z);
    19  unsigned index;
    20  double points[3];
    21  double operator ()(unsigned i){ return points[i];}
    22 };
    23 
    24 
    25 
    26 #endif // VERTEX_H
    Auxiliary class. Implements basic vertices. ====================================/.
    Definition: vertex.h:15
    +
    +
    + + + + diff --git a/doc/html/voxel_8h_source.html b/doc/html/voxel_8h_source.html new file mode 100644 index 0000000..05ebffc --- /dev/null +++ b/doc/html/voxel_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +MCDC_simulator: src/voxel.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    voxel.h
    +
    +
    +
    1 
    10 #ifndef VOXEL_H
    11 #define VOXEL_H
    12 #include <Eigen/Core>
    13 #include <collision.h>
    14 #include "walker.h"
    15 
    19 class Plane{
    20 public:
    21  //Enough to save the parametric representation
    22  Eigen::Vector3d normal, plane_center;
    23  double d;
    24 
    25  //X-Y plane in the origin
    26  Plane(){
    27  normal = {0,0,1};
    28  plane_center = {0,0,0};
    29  d = 0;
    30  }
    31 
    32  Plane(Eigen::Vector3d normal_, Eigen::Vector3d plane_center_, double d_);
    33 
    34  Plane(Eigen::Vector3d &a, Eigen::Vector3d &b, Eigen::Vector3d &c, Eigen::Vector3d &d);
    35 
    36  bool CheckCollision(Walker& walker, Eigen::Vector3d &step, double tmax, Collision &colision);
    37 };
    38 
    44 class Voxel
    45 {
    46 public:
    47  Eigen::Vector3d min_limits, max_limits;
    48 
    49  Voxel();
    50 
    51  Voxel(Eigen::Vector3d min_limits_,Eigen::Vector3d max_limits_);
    52 
    53  Plane walls[6];
    54 
    55  bool CheckCollision(Walker& walker, Eigen::Vector3d &step, double &tmax, Collision& colision);
    56 };
    57 
    58 
    59 
    60 #endif // VOXEL_H
    //! Main class. Implements basic voxel limits and operations. Class to handle and manage the voxels i...
    Definition: voxel.h:44
    +
    Main class. Implements basic voxel limits and operations. ===========================================...
    Definition: voxel.h:19
    +
    Collision Final class =====================================================================/.
    Definition: collision.h:19
    +
    Spin Final class =============================================================/.
    Definition: walker.h:23
    +
    +
    + + + + diff --git a/doc/html/walker_8h_source.html b/doc/html/walker_8h_source.html new file mode 100644 index 0000000..2696a6d --- /dev/null +++ b/doc/html/walker_8h_source.html @@ -0,0 +1,130 @@ + + + + + + + +MCDC_simulator: src/walker.h Source File + + + + + + + + + + + + + + +
    +
    + + + + + + + +
    +
    MCDC_simulator +  1.42.14_wf +
    +
    Monte Carlo Diffusion and Collision Simulator
    +
    +
    + + + + + + + +
    +
    + +
    +
    +
    + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    walker.h
    +
    +
    +
    1 
    10 #ifndef WALKER_H
    11 #define WALKER_H
    12 
    13 #include "Eigen/Core"
    14 #include <vector>
    15 #include <deque>
    16 #include "collisionsphere.h"
    17 #include <iostream>
    18 
    23 class Walker {
    24 public:
    26 
    29  enum state {on_object, on_edge, on_vertex, on_voxel, free, bouncing};
    30 
    32 
    35  enum RelativeLocation{unknown,intra,extra};
    36 
    37  Eigen::Vector3d pos_r;
    39  Eigen::Vector3d pos_v;
    41  Eigen::Vector3d last_pos_r;
    43  Eigen::Vector3d last_pos_v;
    45  Eigen::Vector3d ini_pos;
    47  Eigen::Vector3d next_direction;
    49  Eigen::Matrix3Xd pos_r_log;
    51  Eigen::Matrix3Xd pos_v_log;
    61  Eigen::Vector3d initial_sphere_pos_v;
    63  unsigned steps_count;
    67  RelativeLocation initial_location, location;
    71  unsigned intra_coll_count;
    73  unsigned extra_coll_count;
    75  unsigned int index;
    77  unsigned int rejection_count;
    81 
    83  Walker();
    84 
    87 
    89  ~Walker() {}
    90 
    92 
    99  Walker(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax);
    100 
    101  // Get methods
    102  void getRealPosition(double &, double &, double &) const;
    103  void getRealPosition(Eigen::Vector3d&) const;
    104  void getVoxelPosition(double &, double &, double &) const;
    105  void getVoxelPosition(Eigen::Vector3d&) const;
    106  void getInitialPosition(double &, double &, double &) const;
    107  void getInitialPosition(Eigen::Vector3d&) const;
    108  void getNextDirection(Eigen::Vector3d&) const;
    109  unsigned int getIndex() const;
    110 
    111  // Set methods
    112  void setRealPosition(const double &, const double &,const double &);
    113  void setRealPosition(const Eigen::Vector3d&);
    114  void setVoxelPosition(const double &, const double &,const double &);
    115  void setVoxelPosition(const Eigen::Vector3d&);
    116  void setInitialPosition(const double &, const double &, const double &);
    117  void setInitialPosition(const Eigen::Vector3d &);
    118  void setNextDirection(Eigen::Vector3d &);
    119  void setRandomInitialPosition(const Eigen::Vector3d &min, const Eigen::Vector3d &max);
    120  void setIndex(unsigned int&);
    121 
    122  void setRealPosLog(const Eigen::Vector3d &pos,unsigned t);
    123  void setRealPosLog(double x, double y, double z, unsigned t);
    124  void setVoxPosLog(const Eigen::Vector3d &pos,unsigned t);
    125  void setVoxPosLog(double x, double y, double z, unsigned t);
    126 
    127 
    128  void setNumberOfSteps(unsigned T);
    129 
    130 };
    131 
    132 
    133 #endif // WALKER_H
    Eigen::Vector3d initial_sphere_pos_v
    Definition: walker.h:61
    +
    PLYCollisionSphere collision_sphere_ply
    Definition: walker.h:59
    +
    Walker()
    Default constructor.
    Definition: walker.cpp:10
    +
    Class to save the cylinderical obstacles that a can collide to a walker.
    Definition: collisionsphere.h:38
    +
    Eigen::Vector3d pos_v
    Definition: walker.h:39
    +
    unsigned int index
    Definition: walker.h:75
    +
    Eigen::Vector3d last_pos_r
    Definition: walker.h:41
    +
    CylinderCollisionSphere collision_sphere_cylinders
    Definition: walker.h:57
    +
    Eigen::Vector3d ini_pos
    Definition: walker.h:45
    +
    int in_obj_index
    Definition: walker.h:53
    +
    int in_ply_index
    Definition: walker.h:55
    +
    unsigned extra_coll_count
    Definition: walker.h:73
    +
    RelativeLocation
    An enum.
    Definition: walker.h:35
    +
    RelativeLocation location
    Definition: walker.h:67
    +
    Eigen::Matrix3Xd pos_v_log
    Definition: walker.h:51
    +
    Definition: collisionsphere.h:98
    +
    unsigned int rejection_count
    Definition: walker.h:77
    +
    ~Walker()
    Definition: walker.h:89
    +
    Eigen::Vector3d pos_r
    Definition: walker.h:37
    +
    unsigned intra_coll_count
    Definition: walker.h:71
    +
    state
    An enum.
    Definition: walker.h:29
    +
    unsigned steps_count
    Definition: walker.h:63
    +
    float steps_per_second
    Definition: walker.h:79
    +
    int intra_extra_consensus
    Definition: walker.h:69
    +
    Eigen::Vector3d next_direction
    Definition: walker.h:47
    +
    Eigen::Matrix3Xd pos_r_log
    Definition: walker.h:49
    +
    Eigen::Vector3d last_pos_v
    Definition: walker.h:43
    +
    Spin Final class =============================================================/.
    Definition: walker.h:23
    +
    state status
    Definition: walker.h:65
    +
    +
    + + + + diff --git a/doc/latex/Makefile b/doc/latex/Makefile new file mode 100644 index 0000000..8cc3866 --- /dev/null +++ b/doc/latex/Makefile @@ -0,0 +1,21 @@ +all: refman.pdf + +pdf: refman.pdf + +refman.pdf: clean refman.tex + pdflatex refman + makeindex refman.idx + pdflatex refman + latex_count=8 ; \ + while egrep -s 'Rerun (LaTeX|to get cross-references right)' refman.log && [ $$latex_count -gt 0 ] ;\ + do \ + echo "Rerunning latex...." ;\ + pdflatex refman ;\ + latex_count=`expr $$latex_count - 1` ;\ + done + makeindex refman.idx + pdflatex refman + + +clean: + rm -f *.ps *.dvi *.aux *.toc *.idx *.ind *.ilg *.log *.out *.brf *.blg *.bbl refman.pdf diff --git a/doc/latex/annotated.tex b/doc/latex/annotated.tex new file mode 100644 index 0000000..f6a5898 --- /dev/null +++ b/doc/latex/annotated.tex @@ -0,0 +1,32 @@ +\section{Class List} +Here are the classes, structs, unions and interfaces with brief descriptions\+:\begin{DoxyCompactList} +\item\contentsline{section}{\hyperlink{class_collision}{Collision} \\*\hyperlink{class_collision}{Collision} Final class =====================================================================/ }{\pageref{class_collision}}{} +\item\contentsline{section}{\hyperlink{class_collisionsphere}{Collisionsphere} }{\pageref{class_collisionsphere}}{} +\item\contentsline{section}{\hyperlink{class_collisionspheren}{Collisionspheren} \\*\hyperlink{class_collision}{Collision} Final class ============================================================================/ }{\pageref{class_collisionspheren}}{} +\item\contentsline{section}{\hyperlink{class_cylinder}{Cylinder} \\*\hyperlink{class_cylinder}{Cylinder} \hyperlink{class_obstacle}{Obstacle} Derived Class =============================================================/ }{\pageref{class_cylinder}}{} +\item\contentsline{section}{\hyperlink{class_cylinder_collision_sphere}{Cylinder\+Collision\+Sphere} \\*Class to save the cylinderical obstacles that a can collide to a walker }{\pageref{class_cylinder_collision_sphere}}{} +\item\contentsline{section}{\hyperlink{class_cylinder_gamma_distribution}{Cylinder\+Gamma\+Distribution} \\*\hyperlink{class_cylinder_gamma_distribution}{Cylinder\+Gamma\+Distribution} Class =============================================================/ }{\pageref{class_cylinder_gamma_distribution}}{} +\item\contentsline{section}{\hyperlink{class_dynamics_simulation}{Dynamics\+Simulation} \\*Dynamic simulation main class =============================================================/ }{\pageref{class_dynamics_simulation}}{} +\item\contentsline{section}{\hyperlink{class_gradient_waveform}{Gradient\+Waveform} \\*Gradient Wavefroms =============================================================/ }{\pageref{class_gradient_waveform}}{} +\item\contentsline{section}{\hyperlink{class_m_c_simulation}{M\+C\+Simulation} \\*Aplication Main Class ======================================================================================/ }{\pageref{class_m_c_simulation}}{} +\item\contentsline{section}{\hyperlink{class_obstacle}{Obstacle} \\*\hyperlink{class_obstacle}{Obstacle} Base Class ==============================================================================/ }{\pageref{class_obstacle}}{} +\item\contentsline{section}{\hyperlink{class_parallel_m_c_simulation}{Parallel\+M\+C\+Simulation} \\*Class to handle multiprocessor paralellisation. This class basicly controls and syncronize several initializations of Monte\+Carlo simulations and add up the results. It\textquotesingle{}s a way of soft paralelization }{\pageref{class_parallel_m_c_simulation}}{} +\item\contentsline{section}{\hyperlink{class_parameter}{Parameter} \\*Basic class to store simulation parameters =============================================================/ }{\pageref{class_parameter}}{} +\item\contentsline{section}{\hyperlink{class_parameters}{Parameters} }{\pageref{class_parameters}}{} +\item\contentsline{section}{\hyperlink{class_p_g_s_e_sequence}{P\+G\+S\+E\+Sequence} }{\pageref{class_p_g_s_e_sequence}}{} +\item\contentsline{section}{\hyperlink{class_plane}{Plane} \\*Main class. Implements basic voxel limits and operations. =================================================/ }{\pageref{class_plane}}{} +\item\contentsline{section}{\hyperlink{class_p_l_y_collision_sphere}{P\+L\+Y\+Collision\+Sphere} }{\pageref{class_p_l_y_collision_sphere}}{} +\item\contentsline{section}{\hyperlink{class_p_l_y_obstacle}{P\+L\+Y\+Obstacle} \\*Ply\+Obstacle Derived Class ====================================================================/ }{\pageref{class_p_l_y_obstacle}}{} +\item\contentsline{section}{\hyperlink{class_propagator}{Propagator} }{\pageref{class_propagator}}{} +\item\contentsline{section}{\hyperlink{class_scheme}{Scheme} \\*Auxiliary class to save scheme\+\_\+files values =============================================================/ }{\pageref{class_scheme}}{} +\item\contentsline{section}{\hyperlink{classsentinels_1_1_sentinel}{sentinels\+::\+Sentinel} }{\pageref{classsentinels_1_1_sentinel}}{} +\item\contentsline{section}{\hyperlink{class_sentinels}{Sentinels} \\*\hyperlink{class_collision}{Collision} Final class ====================================================================/ }{\pageref{class_sentinels}}{} +\item\contentsline{section}{\hyperlink{class_sim_errno}{Sim\+Errno} \\*Simulation Input and parameter errors handling class =================================================/ }{\pageref{class_sim_errno}}{} +\item\contentsline{section}{\hyperlink{class_simulable_sequence}{Simulable\+Sequence} \\*MR Sequence Primary Class =============================================================/ }{\pageref{class_simulable_sequence}}{} +\item\contentsline{section}{\hyperlink{class_subdivision}{Subdivision} \\*Auxiliary \hyperlink{class_subdivision}{Subdivision} Class =============================================================/ }{\pageref{class_subdivision}}{} +\item\contentsline{section}{\hyperlink{class_trajectory}{Trajectory} \\*Auxiliary class. Handles i/o operation of walker trayectories. ============================/ }{\pageref{class_trajectory}}{} +\item\contentsline{section}{\hyperlink{class_triangle}{Triangle} \\*Auxiliary class. Implements trangular barriers. ===================================/ }{\pageref{class_triangle}}{} +\item\contentsline{section}{\hyperlink{class_vertex}{Vertex} \\*Auxiliary class. Implements basic vertices. ====================================/ }{\pageref{class_vertex}}{} +\item\contentsline{section}{\hyperlink{class_voxel}{Voxel} \\*//! Main class. Implements basic voxel limits and operations. Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done }{\pageref{class_voxel}}{} +\item\contentsline{section}{\hyperlink{class_walker}{Walker} \\*Spin Final class =============================================================/ }{\pageref{class_walker}}{} +\end{DoxyCompactList} diff --git a/doc/latex/class_collision.tex b/doc/latex/class_collision.tex new file mode 100644 index 0000000..bcd4673 --- /dev/null +++ b/doc/latex/class_collision.tex @@ -0,0 +1,187 @@ +\hypertarget{class_collision}{}\section{Collision Class Reference} +\label{class_collision}\index{Collision@{Collision}} + + +\hyperlink{class_collision}{Collision} Final class =====================================================================/. + + + + +{\ttfamily \#include $<$collision.\+h$>$} + +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \hyperlink{class_collision_aa7f309840b693689b164c7e4b4d643e5}{collision\+\_\+type} \{ \newline +{\bfseries hit}, +{\bfseries near}, +{\bfseries null}, +{\bfseries boundary}, +\newline +{\bfseries degenerate} + \} +\item +enum \hyperlink{class_collision_aad433eb4e51dbfd7ab9bbe188fbe47ab}{collision\+\_\+location} \{ \newline +{\bfseries inside}, +{\bfseries on\+\_\+edge}, +{\bfseries on\+\_\+vertex}, +{\bfseries voxel}, +\newline +{\bfseries outside}, +{\bfseries unknown} + \} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_collision_a4cd23239c1de38dcc082345934a34441}\label{class_collision_a4cd23239c1de38dcc082345934a34441}} +{\bfseries Collision} (double u\+\_\+, double v\+\_\+, double t\+\_\+) +\item +\mbox{\Hypertarget{class_collision_a19ae49bcb3b16f4622443a34a171590c}\label{class_collision_a19ae49bcb3b16f4622443a34a171590c}} +\hyperlink{class_collision_a19ae49bcb3b16f4622443a34a171590c}{$\sim$\+Collision} () +\begin{DoxyCompactList}\small\item\em Does nothing. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_collision_aedabfa9b114e4201343963df5698f7ef}\label{class_collision_aedabfa9b114e4201343963df5698f7ef}} +bool \hyperlink{class_collision_aedabfa9b114e4201343963df5698f7ef}{do\+I\+Have\+More\+Piority\+Than} (\hyperlink{class_collision}{Collision} \&coll) +\begin{DoxyCompactList}\small\item\em Compares a second collision to determine which one has more priority. The comparison is based on the type of collision and distance. \end{DoxyCompactList}\item +void \hyperlink{class_collision_aa7ec5170357d8913c390defd844686e1}{compute\+Collision\+Location} () +\begin{DoxyCompactList}\small\item\em Computes, based on the the coordinates u,v,t of the collision, the location relative to the triangle. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\hyperlink{class_collision_aa7f309840b693689b164c7e4b4d643e5}{collision\+\_\+type} \hyperlink{class_collision_a384809577e353e0905047beac856015b}{type} +\item +\hyperlink{class_collision_aad433eb4e51dbfd7ab9bbe188fbe47ab}{collision\+\_\+location} \hyperlink{class_collision_ae35c71ff91ffc9c253a345f0b4e2fbba}{col\+\_\+location} +\item +Eigen\+::\+Vector3d \hyperlink{class_collision_a00d821761200316e1d54eace02c725b4}{colision\+\_\+point} +\item +Eigen\+::\+Vector3d \hyperlink{class_collision_aee20b80597eeea9b0c5a3ff0a5d0c81c}{bounced\+\_\+direction} +\item +double \hyperlink{class_collision_a95898b1296dfa87b78e8a1197f0f5ea2}{rn} +\item +double \hyperlink{class_collision_a6d79ffbca0e7f67fdc9af809f13f7f8a}{u} +\item +double \hyperlink{class_collision_ade5759fea1e6b41812d2499f1dc06c02}{v} +\item +double \hyperlink{class_collision_a195d201b0843d9f7190ac3a27761b4e7}{t} +\item +int \hyperlink{class_collision_a50dfece7495474875117cfbb3c4f524d}{triangle\+\_\+ind} +\item +int \hyperlink{class_collision_ad1f81d05e175689b7e31bf36121d1589}{obstacle\+\_\+ind} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\hyperlink{class_collision}{Collision} Final class =====================================================================/. + +Class to save and handle collisions between walkers and objects. \begin{DoxyAuthor}{Author} +Jonathan Rafael \subsection*{November 2016 } +\end{DoxyAuthor} + + +Class to save and handle collisions between walkers and objects. + +This class should handle all the cases where a collision can happened as well as all the operation between collision. + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{class_collision_aad433eb4e51dbfd7ab9bbe188fbe47ab}\label{class_collision_aad433eb4e51dbfd7ab9bbe188fbe47ab}} +\index{Collision@{Collision}!collision\+\_\+location@{collision\+\_\+location}} +\index{collision\+\_\+location@{collision\+\_\+location}!Collision@{Collision}} +\subsubsection{\texorpdfstring{collision\+\_\+location}{collision\_location}} +{\footnotesize\ttfamily enum \hyperlink{class_collision_aad433eb4e51dbfd7ab9bbe188fbe47ab}{Collision\+::collision\+\_\+location}} + + + + + +Only in case of collision (or a very close ending position) this are the cases where the collision can happened. \mbox{\Hypertarget{class_collision_aa7f309840b693689b164c7e4b4d643e5}\label{class_collision_aa7f309840b693689b164c7e4b4d643e5}} +\index{Collision@{Collision}!collision\+\_\+type@{collision\+\_\+type}} +\index{collision\+\_\+type@{collision\+\_\+type}!Collision@{Collision}} +\subsubsection{\texorpdfstring{collision\+\_\+type}{collision\_type}} +{\footnotesize\ttfamily enum \hyperlink{class_collision_aa7f309840b693689b164c7e4b4d643e5}{Collision\+::collision\+\_\+type}} + + + + + +All the possibles cases or situations where a step can end. The next step is performed according to this state + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_collision_aa7ec5170357d8913c390defd844686e1}\label{class_collision_aa7ec5170357d8913c390defd844686e1}} +\index{Collision@{Collision}!compute\+Collision\+Location@{compute\+Collision\+Location}} +\index{compute\+Collision\+Location@{compute\+Collision\+Location}!Collision@{Collision}} +\subsubsection{\texorpdfstring{compute\+Collision\+Location()}{computeCollisionLocation()}} +{\footnotesize\ttfamily Collision\+::compute\+Collision\+Location (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Computes, based on the the coordinates u,v,t of the collision, the location relative to the triangle. + +Auxiliar function for Triangular barriers + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_collision_aee20b80597eeea9b0c5a3ff0a5d0c81c}\label{class_collision_aee20b80597eeea9b0c5a3ff0a5d0c81c}} +\index{Collision@{Collision}!bounced\+\_\+direction@{bounced\+\_\+direction}} +\index{bounced\+\_\+direction@{bounced\+\_\+direction}!Collision@{Collision}} +\subsubsection{\texorpdfstring{bounced\+\_\+direction}{bounced\_direction}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Collision\+::bounced\+\_\+direction} + +Save the bounced direction for a given obstacle \mbox{\Hypertarget{class_collision_ae35c71ff91ffc9c253a345f0b4e2fbba}\label{class_collision_ae35c71ff91ffc9c253a345f0b4e2fbba}} +\index{Collision@{Collision}!col\+\_\+location@{col\+\_\+location}} +\index{col\+\_\+location@{col\+\_\+location}!Collision@{Collision}} +\subsubsection{\texorpdfstring{col\+\_\+location}{col\_location}} +{\footnotesize\ttfamily \hyperlink{class_collision_aad433eb4e51dbfd7ab9bbe188fbe47ab}{collision\+\_\+location} Collision\+::col\+\_\+location} + +Save the colocation of the collision over the object \mbox{\Hypertarget{class_collision_a00d821761200316e1d54eace02c725b4}\label{class_collision_a00d821761200316e1d54eace02c725b4}} +\index{Collision@{Collision}!colision\+\_\+point@{colision\+\_\+point}} +\index{colision\+\_\+point@{colision\+\_\+point}!Collision@{Collision}} +\subsubsection{\texorpdfstring{colision\+\_\+point}{colision\_point}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Collision\+::colision\+\_\+point} + +Saves the position of colision \mbox{\Hypertarget{class_collision_ad1f81d05e175689b7e31bf36121d1589}\label{class_collision_ad1f81d05e175689b7e31bf36121d1589}} +\index{Collision@{Collision}!obstacle\+\_\+ind@{obstacle\+\_\+ind}} +\index{obstacle\+\_\+ind@{obstacle\+\_\+ind}!Collision@{Collision}} +\subsubsection{\texorpdfstring{obstacle\+\_\+ind}{obstacle\_ind}} +{\footnotesize\ttfamily int Collision\+::obstacle\+\_\+ind} + +In case of a generic obstacle saves the obstacle index. \mbox{\Hypertarget{class_collision_a95898b1296dfa87b78e8a1197f0f5ea2}\label{class_collision_a95898b1296dfa87b78e8a1197f0f5ea2}} +\index{Collision@{Collision}!rn@{rn}} +\index{rn@{rn}!Collision@{Collision}} +\subsubsection{\texorpdfstring{rn}{rn}} +{\footnotesize\ttfamily double Collision\+::rn} + +saves the local orietnation between the wall and the particle \mbox{\Hypertarget{class_collision_a195d201b0843d9f7190ac3a27761b4e7}\label{class_collision_a195d201b0843d9f7190ac3a27761b4e7}} +\index{Collision@{Collision}!t@{t}} +\index{t@{t}!Collision@{Collision}} +\subsubsection{\texorpdfstring{t}{t}} +{\footnotesize\ttfamily double Collision\+::t} + +signed, collision distance \mbox{\Hypertarget{class_collision_a50dfece7495474875117cfbb3c4f524d}\label{class_collision_a50dfece7495474875117cfbb3c4f524d}} +\index{Collision@{Collision}!triangle\+\_\+ind@{triangle\+\_\+ind}} +\index{triangle\+\_\+ind@{triangle\+\_\+ind}!Collision@{Collision}} +\subsubsection{\texorpdfstring{triangle\+\_\+ind}{triangle\_ind}} +{\footnotesize\ttfamily int Collision\+::triangle\+\_\+ind} + +In case of a P\+LY obstacle saves the triangle index. t collison distance \mbox{\Hypertarget{class_collision_a384809577e353e0905047beac856015b}\label{class_collision_a384809577e353e0905047beac856015b}} +\index{Collision@{Collision}!type@{type}} +\index{type@{type}!Collision@{Collision}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily \hyperlink{class_collision_aa7f309840b693689b164c7e4b4d643e5}{collision\+\_\+type} Collision\+::type} + +Saves the type of collsion (if any) \mbox{\Hypertarget{class_collision_a6d79ffbca0e7f67fdc9af809f13f7f8a}\label{class_collision_a6d79ffbca0e7f67fdc9af809f13f7f8a}} +\index{Collision@{Collision}!u@{u}} +\index{u@{u}!Collision@{Collision}} +\subsubsection{\texorpdfstring{u}{u}} +{\footnotesize\ttfamily double Collision\+::u} + +u position in baricentric coordinates \mbox{\Hypertarget{class_collision_ade5759fea1e6b41812d2499f1dc06c02}\label{class_collision_ade5759fea1e6b41812d2499f1dc06c02}} +\index{Collision@{Collision}!v@{v}} +\index{v@{v}!Collision@{Collision}} +\subsubsection{\texorpdfstring{v}{v}} +{\footnotesize\ttfamily double Collision\+::v} + +v position in baricentric coordinates + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/collision.\+h\item +src/collision.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_collisionsphere.tex b/doc/latex/class_collisionsphere.tex new file mode 100644 index 0000000..5560236 --- /dev/null +++ b/doc/latex/class_collisionsphere.tex @@ -0,0 +1,42 @@ +\hypertarget{class_collisionsphere}{}\section{Collisionsphere Class Reference} +\label{class_collisionsphere}\index{Collisionsphere@{Collisionsphere}} + + +Inheritance diagram for Collisionsphere\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=324pt]{class_collisionsphere__inherit__graph} +\end{center} +\end{figure} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +float \hyperlink{class_collisionsphere_a4b791781efcb1af5198b22ea0b542cfb}{big\+\_\+sphere\+\_\+distance} +\item +float \hyperlink{class_collisionsphere_ae5430c092ea0436edfe0adeb79402ff2}{small\+\_\+sphere\+\_\+distance} +\item +\mbox{\Hypertarget{class_collisionsphere_abf63a29c825cdd63ecb86d1dc430a0d4}\label{class_collisionsphere_abf63a29c825cdd63ecb86d1dc430a0d4}} +unsigned {\bfseries list\+\_\+size} +\end{DoxyCompactItemize} + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_collisionsphere_a4b791781efcb1af5198b22ea0b542cfb}\label{class_collisionsphere_a4b791781efcb1af5198b22ea0b542cfb}} +\index{Collisionsphere@{Collisionsphere}!big\+\_\+sphere\+\_\+distance@{big\+\_\+sphere\+\_\+distance}} +\index{big\+\_\+sphere\+\_\+distance@{big\+\_\+sphere\+\_\+distance}!Collisionsphere@{Collisionsphere}} +\subsubsection{\texorpdfstring{big\+\_\+sphere\+\_\+distance}{big\_sphere\_distance}} +{\footnotesize\ttfamily float Collisionsphere\+::big\+\_\+sphere\+\_\+distance} + +Size of the big (outer) collision sphere \mbox{\Hypertarget{class_collisionsphere_ae5430c092ea0436edfe0adeb79402ff2}\label{class_collisionsphere_ae5430c092ea0436edfe0adeb79402ff2}} +\index{Collisionsphere@{Collisionsphere}!small\+\_\+sphere\+\_\+distance@{small\+\_\+sphere\+\_\+distance}} +\index{small\+\_\+sphere\+\_\+distance@{small\+\_\+sphere\+\_\+distance}!Collisionsphere@{Collisionsphere}} +\subsubsection{\texorpdfstring{small\+\_\+sphere\+\_\+distance}{small\_sphere\_distance}} +{\footnotesize\ttfamily float Collisionsphere\+::small\+\_\+sphere\+\_\+distance} + +Size of the small (inner) collision sphere + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +src/collisionsphere.\+h\end{DoxyCompactItemize} diff --git a/doc/latex/class_collisionsphere__inherit__graph.md5 b/doc/latex/class_collisionsphere__inherit__graph.md5 new file mode 100644 index 0000000..d80eea1 --- /dev/null +++ b/doc/latex/class_collisionsphere__inherit__graph.md5 @@ -0,0 +1 @@ +54990123dbb9dd3361eee3b58832b440 \ No newline at end of file diff --git a/doc/latex/class_collisionsphere__inherit__graph.pdf b/doc/latex/class_collisionsphere__inherit__graph.pdf new file mode 100644 index 0000000..4d6204e Binary files /dev/null and b/doc/latex/class_collisionsphere__inherit__graph.pdf differ diff --git a/doc/latex/class_collisionspheren.tex b/doc/latex/class_collisionspheren.tex new file mode 100644 index 0000000..133ad32 --- /dev/null +++ b/doc/latex/class_collisionspheren.tex @@ -0,0 +1,26 @@ +\hypertarget{class_collisionspheren}{}\section{Collisionspheren Class Reference} +\label{class_collisionspheren}\index{Collisionspheren@{Collisionspheren}} + + +\hyperlink{class_collision}{Collision} Final class ============================================================================/. + + + + +{\ttfamily \#include $<$collisionsphere.\+h$>$} + + + +\subsection{Detailed Description} +\hyperlink{class_collision}{Collision} Final class ============================================================================/. + +Class to implement spherical bounding boxes for the W\+A\+L\+K\+ER mean diffusion. This class provides methods in order to create and update spherical bounding boxes used to compute the collisions. \begin{DoxyAuthor}{Author} +Jonathan Rafael \subsection*{February 2017 } +\end{DoxyAuthor} + + +Father class. this class provides methods in order to create and update spherical bounding box used to compute the collisions. The implementation is based on two collision spheres. The inner one (small) and the (outer). The fist saves the objects where th particle M\+AY collide in a given time, While the second saves the full set of obstacles where the particle can possibly collide, i.\+e. that are physically achievable for the walker to collide. + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +src/collisionsphere.\+h\end{DoxyCompactItemize} diff --git a/doc/latex/class_cylinder.tex b/doc/latex/class_cylinder.tex new file mode 100644 index 0000000..917f594 --- /dev/null +++ b/doc/latex/class_cylinder.tex @@ -0,0 +1,191 @@ +\hypertarget{class_cylinder}{}\section{Cylinder Class Reference} +\label{class_cylinder}\index{Cylinder@{Cylinder}} + + +\hyperlink{class_cylinder}{Cylinder} \hyperlink{class_obstacle}{Obstacle} Derived Class =============================================================/. + + + + +{\ttfamily \#include $<$cylinder.\+h$>$} + + + +Inheritance diagram for Cylinder\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=136pt]{class_cylinder__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for Cylinder\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=136pt]{class_cylinder__coll__graph} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_cylinder_a01dc978cb576f834b9545e43d4dad2a2}\label{class_cylinder_a01dc978cb576f834b9545e43d4dad2a2}} +\hyperlink{class_cylinder_a01dc978cb576f834b9545e43d4dad2a2}{Cylinder} () +\begin{DoxyCompactList}\small\item\em Default constructor. Does nothing. \end{DoxyCompactList}\item +\hyperlink{class_cylinder_a0a5f7aa0a0c5c5e17c783784fd99fa1a}{Cylinder} (Eigen\+::\+Vector3d P\+\_\+, Eigen\+::\+Vector3d Q\+\_\+, double radius\+\_\+, double scale=1) +\begin{DoxyCompactList}\small\item\em Initialize everything. \end{DoxyCompactList}\item +\hyperlink{class_cylinder_ab5389301aa05bdee0c066e0b8026611f}{Cylinder} (\hyperlink{class_cylinder}{Cylinder} const \&cyl) +\begin{DoxyCompactList}\small\item\em Initialize everything. \end{DoxyCompactList}\item +bool \hyperlink{class_cylinder_a43350a6331f8656dd0774a4a3b68724f}{check\+Collision} (\hyperlink{class_walker}{Walker} \&walker, Eigen\+::\+Vector3d \&step, double \&step\+\_\+lenght, \hyperlink{class_collision}{Collision} \&colision) +\begin{DoxyCompactList}\small\item\em Basic collision function. Returns the if there was any collision on against the obstacle. \end{DoxyCompactList}\item +double \hyperlink{class_cylinder_a6eb639d12a7fc0aec50895151fb91b1f}{min\+Distance} (\hyperlink{class_walker}{Walker} \&w) +\begin{DoxyCompactList}\small\item\em Returns the minimum distance from the walker to the cylinder. Used to set the reachable cylinders that a given walker can reach. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_cylinder_ae9823df86b6b76bc86172d84d798494f}\label{class_cylinder_ae9823df86b6b76bc86172d84d798494f}} +Eigen\+::\+Vector3d {\bfseries P} +\item +Eigen\+::\+Vector3d \hyperlink{class_cylinder_a9f367beb008c847b97bb0ce043601769}{Q} +\item +Eigen\+::\+Vector3d \hyperlink{class_cylinder_a2e7f0d4e406cc50daf30f3e3b0be1609}{D} +\item +double \hyperlink{class_cylinder_a8a825799285bcf60b49b8aef0459b498}{radius} +\end{DoxyCompactItemize} +\subsection*{Static Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_cylinder_af276a253b655ded13f5dfd5afbff81d1}\label{class_cylinder_af276a253b655ded13f5dfd5afbff81d1}} +static int {\bfseries count} = 0 +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\hyperlink{class_cylinder}{Cylinder} \hyperlink{class_obstacle}{Obstacle} Derived Class =============================================================/. + +\hyperlink{class_cylinder}{Cylinder} class derived from an \hyperlink{class_obstacle}{Obstacle}. Defines infinite long cylinders in the direction set by P,Q. \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +November 2016 \subsection*{1.\+42 } +\end{DoxyDate} + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_cylinder_a0a5f7aa0a0c5c5e17c783784fd99fa1a}\label{class_cylinder_a0a5f7aa0a0c5c5e17c783784fd99fa1a}} +\index{Cylinder@{Cylinder}!Cylinder@{Cylinder}} +\index{Cylinder@{Cylinder}!Cylinder@{Cylinder}} +\subsubsection{\texorpdfstring{Cylinder()}{Cylinder()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily Cylinder\+::\+Cylinder (\begin{DoxyParamCaption}\item[{Eigen\+::\+Vector3d}]{P\+\_\+, }\item[{Eigen\+::\+Vector3d}]{Q\+\_\+, }\item[{double}]{radius\+\_\+, }\item[{double}]{scale = {\ttfamily 1} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + + + +Initialize everything. + + +\begin{DoxyParams}{Parameters} +{\em P\+\_\+} & \hyperlink{class_cylinder}{Cylinder} origin \\ +\hline +{\em Q\+\_\+} & cylinder direction. \\ +\hline +{\em radius\+\_\+} & cylinder\textquotesingle{}s radius \\ +\hline +{\em scale} & scale factor for the values passed. Useful when reading a file. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_cylinder_ab5389301aa05bdee0c066e0b8026611f}\label{class_cylinder_ab5389301aa05bdee0c066e0b8026611f}} +\index{Cylinder@{Cylinder}!Cylinder@{Cylinder}} +\index{Cylinder@{Cylinder}!Cylinder@{Cylinder}} +\subsubsection{\texorpdfstring{Cylinder()}{Cylinder()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily Cylinder\+::\+Cylinder (\begin{DoxyParamCaption}\item[{\hyperlink{class_cylinder}{Cylinder} const \&}]{cyl }\end{DoxyParamCaption})} + + + +Initialize everything. + + +\begin{DoxyParams}{Parameters} +{\em P\+\_\+} & \hyperlink{class_cylinder}{Cylinder} origin \\ +\hline +{\em Q\+\_\+} & cylinder direction. \\ +\hline +{\em radius\+\_\+} & cylinder\textquotesingle{}s radius \\ +\hline +{\em scale} & scale factor for the values passed. Useful when reading a file. \\ +\hline +\end{DoxyParams} + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_cylinder_a43350a6331f8656dd0774a4a3b68724f}\label{class_cylinder_a43350a6331f8656dd0774a4a3b68724f}} +\index{Cylinder@{Cylinder}!check\+Collision@{check\+Collision}} +\index{check\+Collision@{check\+Collision}!Cylinder@{Cylinder}} +\subsubsection{\texorpdfstring{check\+Collision()}{checkCollision()}} +{\footnotesize\ttfamily Cylinder\+::check\+Collision (\begin{DoxyParamCaption}\item[{\hyperlink{class_walker}{Walker} \&}]{walker, }\item[{Eigen\+::\+Vector3d \&}]{step, }\item[{double \&}]{step\+\_\+lenght, }\item[{\hyperlink{class_collision}{Collision} \&}]{colision }\end{DoxyParamCaption})} + + + +Basic collision function. Returns the if there was any collision on against the obstacle. + + +\begin{DoxyParams}{Parameters} +{\em walker,\hyperlink{class_walker}{Walker}} & instance in the simulation. \\ +\hline +{\em 3d} & step. Is assumed to be normalized. \\ +\hline +{\em step\+\_\+length,length} & used as the maximum step collision distance. \\ +\hline +{\em collision,\hyperlink{class_collision}{Collision}} & instance to save the collision (if any) details. \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +true only if there was a Collision\+::hit status. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\hyperlink{class_collision}{Collision}. +\end{DoxySeeAlso} +\mbox{\Hypertarget{class_cylinder_a6eb639d12a7fc0aec50895151fb91b1f}\label{class_cylinder_a6eb639d12a7fc0aec50895151fb91b1f}} +\index{Cylinder@{Cylinder}!min\+Distance@{min\+Distance}} +\index{min\+Distance@{min\+Distance}!Cylinder@{Cylinder}} +\subsubsection{\texorpdfstring{min\+Distance()}{minDistance()}} +{\footnotesize\ttfamily Cylinder\+::min\+Distance (\begin{DoxyParamCaption}\item[{\hyperlink{class_walker}{Walker} \&}]{w }\end{DoxyParamCaption})} + + + +Returns the minimum distance from the walker to the cylinder. Used to set the reachable cylinders that a given walker can reach. + + +\begin{DoxyParams}{Parameters} +{\em walker,\hyperlink{class_walker}{Walker}} & instance in the simulation. \\ +\hline +\end{DoxyParams} + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_cylinder_a2e7f0d4e406cc50daf30f3e3b0be1609}\label{class_cylinder_a2e7f0d4e406cc50daf30f3e3b0be1609}} +\index{Cylinder@{Cylinder}!D@{D}} +\index{D@{D}!Cylinder@{Cylinder}} +\subsubsection{\texorpdfstring{D}{D}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Cylinder\+::D} + +Pre-\/computed and normalized P -\/ Q vector \mbox{\Hypertarget{class_cylinder_a9f367beb008c847b97bb0ce043601769}\label{class_cylinder_a9f367beb008c847b97bb0ce043601769}} +\index{Cylinder@{Cylinder}!Q@{Q}} +\index{Q@{Q}!Cylinder@{Cylinder}} +\subsubsection{\texorpdfstring{Q}{Q}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Cylinder\+::Q} + +Cilinder Axis reference Points, P should be the \char`\"{}center\char`\"{} \mbox{\Hypertarget{class_cylinder_a8a825799285bcf60b49b8aef0459b498}\label{class_cylinder_a8a825799285bcf60b49b8aef0459b498}} +\index{Cylinder@{Cylinder}!radius@{radius}} +\index{radius@{radius}!Cylinder@{Cylinder}} +\subsubsection{\texorpdfstring{radius}{radius}} +{\footnotesize\ttfamily double Cylinder\+::radius} + +Radius of the cylinder + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/cylinder.\+h\item +src/cylinder.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_cylinder__coll__graph.md5 b/doc/latex/class_cylinder__coll__graph.md5 new file mode 100644 index 0000000..ccbfea2 --- /dev/null +++ b/doc/latex/class_cylinder__coll__graph.md5 @@ -0,0 +1 @@ +1a6a65aaa00dd2d2933a1b5fba998b1f \ No newline at end of file diff --git a/doc/latex/class_cylinder__coll__graph.pdf b/doc/latex/class_cylinder__coll__graph.pdf new file mode 100644 index 0000000..3bc2555 Binary files /dev/null and b/doc/latex/class_cylinder__coll__graph.pdf differ diff --git a/doc/latex/class_cylinder__inherit__graph.md5 b/doc/latex/class_cylinder__inherit__graph.md5 new file mode 100644 index 0000000..de573e5 --- /dev/null +++ b/doc/latex/class_cylinder__inherit__graph.md5 @@ -0,0 +1 @@ +f5073b5bcdfff15bc6814168582c3148 \ No newline at end of file diff --git a/doc/latex/class_cylinder__inherit__graph.pdf b/doc/latex/class_cylinder__inherit__graph.pdf new file mode 100644 index 0000000..3bc2555 Binary files /dev/null and b/doc/latex/class_cylinder__inherit__graph.pdf differ diff --git a/doc/latex/class_cylinder_collision_sphere.tex b/doc/latex/class_cylinder_collision_sphere.tex new file mode 100644 index 0000000..87cf48a --- /dev/null +++ b/doc/latex/class_cylinder_collision_sphere.tex @@ -0,0 +1,135 @@ +\hypertarget{class_cylinder_collision_sphere}{}\section{Cylinder\+Collision\+Sphere Class Reference} +\label{class_cylinder_collision_sphere}\index{Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}} + + +Class to save the cylinderical obstacles that a can collide to a walker. + + + + +{\ttfamily \#include $<$collisionsphere.\+h$>$} + + + +Inheritance diagram for Cylinder\+Collision\+Sphere\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=201pt]{class_cylinder_collision_sphere__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for Cylinder\+Collision\+Sphere\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=201pt]{class_cylinder_collision_sphere__coll__graph} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{class_cylinder_collision_sphere_ac4f58e8792fdcdfe475b9556dc804553}{Cylinder\+Collision\+Sphere} () +\item +\mbox{\Hypertarget{class_cylinder_collision_sphere_ad4cfd86c6ab7035b9ba67277792c132f}\label{class_cylinder_collision_sphere_ad4cfd86c6ab7035b9ba67277792c132f}} +void \hyperlink{class_cylinder_collision_sphere_ad4cfd86c6ab7035b9ba67277792c132f}{pop\+From\+Small\+Sphere} (unsigned i) +\begin{DoxyCompactList}\small\item\em This function receives a index from the collision list and moves the value to the last position of the list. then decrease the inner sphere end index. This way this index is no longer considered inner collision list. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_cylinder_collision_sphere_aa369aaa1ce839382c915ac4f32ac82ca}\label{class_cylinder_collision_sphere_aa369aaa1ce839382c915ac4f32ac82ca}} +void \hyperlink{class_cylinder_collision_sphere_aa369aaa1ce839382c915ac4f32ac82ca}{push\+To\+Small\+Sphere} (unsigned i) +\begin{DoxyCompactList}\small\item\em This function receives a index from the collision list and moves the value to the last position of the list. then increase the inner sphere end index. This way this index is now included in the inner collision list. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_cylinder_collision_sphere_a06a8f75674ef0bcc44a820e948624f60}\label{class_cylinder_collision_sphere_a06a8f75674ef0bcc44a820e948624f60}} +void \hyperlink{class_cylinder_collision_sphere_a06a8f75674ef0bcc44a820e948624f60}{pop\+From\+Big\+Sphere} (unsigned i) +\begin{DoxyCompactList}\small\item\em This function receives a index from the collision list and moves the value to the last position of the list. Then decrease the inner sphere end index. This way this index is now excluded in the outer collision list. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_cylinder_collision_sphere_a8742564f85c9fede195ee716a3b16042}\label{class_cylinder_collision_sphere_a8742564f85c9fede195ee716a3b16042}} +void \hyperlink{class_cylinder_collision_sphere_a8742564f85c9fede195ee716a3b16042}{push\+To\+Big\+Sphere} (unsigned i) +\begin{DoxyCompactList}\small\item\em This function receives a index from the collision list and moves the value to the last position of the list. Then increase the inner sphere end index. This way this index is now included in the outer collision list. \end{DoxyCompactList}\item +void \hyperlink{class_cylinder_collision_sphere_a3fe165c817a66074e737985efd87128b}{set\+Big\+Sphere\+Size} (float size) +\item +void \hyperlink{class_cylinder_collision_sphere_a6e7f5ff8f4e5c076edb5f1cbee433a34}{set\+Small\+Sphere\+Size} (float size) +\item +void \hyperlink{class_cylinder_collision_sphere_af2977e3da60e7a4c1e4ae4fccf03ed09}{push\+\_\+index} (unsigned int element) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +unsigned \hyperlink{class_cylinder_collision_sphere_a89e3bdfa12042aa94c20949587c513d5}{small\+\_\+sphere\+\_\+list\+\_\+end} +\item +unsigned \hyperlink{class_cylinder_collision_sphere_a303b3843a9c8ab9ae3e6f4cce85ae8e0}{big\+\_\+sphere\+\_\+list\+\_\+end} +\item +\mbox{\Hypertarget{class_cylinder_collision_sphere_a2c925c436410847d2f6079cd5331eada}\label{class_cylinder_collision_sphere_a2c925c436410847d2f6079cd5331eada}} +std\+::vector$<$ unsigned $>$ $\ast$ {\bfseries collision\+\_\+list} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Class to save the cylinderical obstacles that a can collide to a walker. + +Class to save the P\+LY mehses and the subset of triangles that a can collide to a walker. + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_cylinder_collision_sphere_ac4f58e8792fdcdfe475b9556dc804553}\label{class_cylinder_collision_sphere_ac4f58e8792fdcdfe475b9556dc804553}} +\index{Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}!Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}} +\index{Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}!Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{Cylinder\+Collision\+Sphere()}{CylinderCollisionSphere()}} +{\footnotesize\ttfamily Cylinder\+Collision\+Sphere\+::\+Cylinder\+Collision\+Sphere (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +$<$Pointer to List with the cylinders indexes. The indexes are permuted in its position. + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_cylinder_collision_sphere_af2977e3da60e7a4c1e4ae4fccf03ed09}\label{class_cylinder_collision_sphere_af2977e3da60e7a4c1e4ae4fccf03ed09}} +\index{Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}!push\+\_\+index@{push\+\_\+index}} +\index{push\+\_\+index@{push\+\_\+index}!Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{push\+\_\+index()}{push\_index()}} +{\footnotesize\ttfamily void Cylinder\+Collision\+Sphere\+::push\+\_\+index (\begin{DoxyParamCaption}\item[{unsigned int}]{element }\end{DoxyParamCaption})} + + +\begin{DoxyParams}{Parameters} +{\em element} & value to be added to the obstacle list \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_cylinder_collision_sphere_a3fe165c817a66074e737985efd87128b}\label{class_cylinder_collision_sphere_a3fe165c817a66074e737985efd87128b}} +\index{Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}!set\+Big\+Sphere\+Size@{set\+Big\+Sphere\+Size}} +\index{set\+Big\+Sphere\+Size@{set\+Big\+Sphere\+Size}!Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{set\+Big\+Sphere\+Size()}{setBigSphereSize()}} +{\footnotesize\ttfamily void Cylinder\+Collision\+Sphere\+::set\+Big\+Sphere\+Size (\begin{DoxyParamCaption}\item[{float}]{size }\end{DoxyParamCaption})} + + +\begin{DoxyParams}{Parameters} +{\em size} & of the list \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_cylinder_collision_sphere_a6e7f5ff8f4e5c076edb5f1cbee433a34}\label{class_cylinder_collision_sphere_a6e7f5ff8f4e5c076edb5f1cbee433a34}} +\index{Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}!set\+Small\+Sphere\+Size@{set\+Small\+Sphere\+Size}} +\index{set\+Small\+Sphere\+Size@{set\+Small\+Sphere\+Size}!Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{set\+Small\+Sphere\+Size()}{setSmallSphereSize()}} +{\footnotesize\ttfamily void Cylinder\+Collision\+Sphere\+::set\+Small\+Sphere\+Size (\begin{DoxyParamCaption}\item[{float}]{size }\end{DoxyParamCaption})} + + +\begin{DoxyParams}{Parameters} +{\em size} & of the list \\ +\hline +\end{DoxyParams} + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_cylinder_collision_sphere_a303b3843a9c8ab9ae3e6f4cce85ae8e0}\label{class_cylinder_collision_sphere_a303b3843a9c8ab9ae3e6f4cce85ae8e0}} +\index{Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}!big\+\_\+sphere\+\_\+list\+\_\+end@{big\+\_\+sphere\+\_\+list\+\_\+end}} +\index{big\+\_\+sphere\+\_\+list\+\_\+end@{big\+\_\+sphere\+\_\+list\+\_\+end}!Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{big\+\_\+sphere\+\_\+list\+\_\+end}{big\_sphere\_list\_end}} +{\footnotesize\ttfamily unsigned Cylinder\+Collision\+Sphere\+::big\+\_\+sphere\+\_\+list\+\_\+end} + +Index of the L\+A\+ST element on the list for the big collision sphere \mbox{\Hypertarget{class_cylinder_collision_sphere_a89e3bdfa12042aa94c20949587c513d5}\label{class_cylinder_collision_sphere_a89e3bdfa12042aa94c20949587c513d5}} +\index{Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}!small\+\_\+sphere\+\_\+list\+\_\+end@{small\+\_\+sphere\+\_\+list\+\_\+end}} +\index{small\+\_\+sphere\+\_\+list\+\_\+end@{small\+\_\+sphere\+\_\+list\+\_\+end}!Cylinder\+Collision\+Sphere@{Cylinder\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{small\+\_\+sphere\+\_\+list\+\_\+end}{small\_sphere\_list\_end}} +{\footnotesize\ttfamily unsigned Cylinder\+Collision\+Sphere\+::small\+\_\+sphere\+\_\+list\+\_\+end} + +Index of the L\+A\+ST element on the list for the small collision sphere + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/collisionsphere.\+h\item +src/collisionsphere.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_cylinder_collision_sphere__coll__graph.md5 b/doc/latex/class_cylinder_collision_sphere__coll__graph.md5 new file mode 100644 index 0000000..284a50e --- /dev/null +++ b/doc/latex/class_cylinder_collision_sphere__coll__graph.md5 @@ -0,0 +1 @@ +7a158e41c8daa86a5bf9d28fe408c520 \ No newline at end of file diff --git a/doc/latex/class_cylinder_collision_sphere__coll__graph.pdf b/doc/latex/class_cylinder_collision_sphere__coll__graph.pdf new file mode 100644 index 0000000..ffac5f0 Binary files /dev/null and b/doc/latex/class_cylinder_collision_sphere__coll__graph.pdf differ diff --git a/doc/latex/class_cylinder_collision_sphere__inherit__graph.md5 b/doc/latex/class_cylinder_collision_sphere__inherit__graph.md5 new file mode 100644 index 0000000..2a2bae8 --- /dev/null +++ b/doc/latex/class_cylinder_collision_sphere__inherit__graph.md5 @@ -0,0 +1 @@ +bfe9a9f2de629c2045f69bf4c95b5608 \ No newline at end of file diff --git a/doc/latex/class_cylinder_collision_sphere__inherit__graph.pdf b/doc/latex/class_cylinder_collision_sphere__inherit__graph.pdf new file mode 100644 index 0000000..ffac5f0 Binary files /dev/null and b/doc/latex/class_cylinder_collision_sphere__inherit__graph.pdf differ diff --git a/doc/latex/class_cylinder_gamma_distribution.tex b/doc/latex/class_cylinder_gamma_distribution.tex new file mode 100644 index 0000000..9d41ee8 --- /dev/null +++ b/doc/latex/class_cylinder_gamma_distribution.tex @@ -0,0 +1,153 @@ +\hypertarget{class_cylinder_gamma_distribution}{}\section{Cylinder\+Gamma\+Distribution Class Reference} +\label{class_cylinder_gamma_distribution}\index{Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}} + + +\hyperlink{class_cylinder_gamma_distribution}{Cylinder\+Gamma\+Distribution} Class =============================================================/. + + + + +{\ttfamily \#include $<$cylindergammadistribution.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{class_cylinder_gamma_distribution_a7578f5f0fb11398ec5bf5007047f4b81}{Cylinder\+Gamma\+Distribution} (unsigned, double, double, double, Eigen\+::\+Vector3d \&, Eigen\+::\+Vector3d \&, float \hyperlink{class_cylinder_gamma_distribution_aece7d3ec40d3dbb3a2ecd1bd88c5a694}{min\+\_\+radius}) +\begin{DoxyCompactList}\small\item\em Initialize everything. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_cylinder_gamma_distribution_a3408ed30966550c10810a0a6cbbfd3c2}\label{class_cylinder_gamma_distribution_a3408ed30966550c10810a0a6cbbfd3c2}} +void \hyperlink{class_cylinder_gamma_distribution_a3408ed30966550c10810a0a6cbbfd3c2}{display\+Gamma\+Distribution} () +\begin{DoxyCompactList}\small\item\em Shows a small histogram of the gamma distribution. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_cylinder_gamma_distribution_ad93e569b24e3c6b1266ecf79bd18dec9}\label{class_cylinder_gamma_distribution_ad93e569b24e3c6b1266ecf79bd18dec9}} +void \hyperlink{class_cylinder_gamma_distribution_ad93e569b24e3c6b1266ecf79bd18dec9}{create\+Gamma\+Substrate} () +\begin{DoxyCompactList}\small\item\em Samples and constructs a Gamma distribution. \end{DoxyCompactList}\item +void \hyperlink{class_cylinder_gamma_distribution_a2345c03be0b0c934efe02e4234c65fd1}{print\+Substrate} (std\+::ostream \&out) +\begin{DoxyCompactList}\small\item\em Prints the cylinders positions in a file or output stream. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +unsigned \hyperlink{class_cylinder_gamma_distribution_af74583662a4f33ba1565f2c71e6bbc5a}{num\+\_\+cylinders} +\item +double \hyperlink{class_cylinder_gamma_distribution_a8cae528f51692ed05049e4ea06c63722}{alpha} +\item +double \hyperlink{class_cylinder_gamma_distribution_a601a42ef7bacbf9696229efbd703f61e}{beta} +\item +double \hyperlink{class_cylinder_gamma_distribution_a31f82c4608b7cd2b022805e30a4db983}{icvf} +\item +float \hyperlink{class_cylinder_gamma_distribution_aece7d3ec40d3dbb3a2ecd1bd88c5a694}{min\+\_\+radius} +\item +Eigen\+::\+Vector3d \hyperlink{class_cylinder_gamma_distribution_ac77a9d794f2f2000066c4a26f19a9097}{min\+\_\+limits} +\item +Eigen\+::\+Vector3d \hyperlink{class_cylinder_gamma_distribution_aa7094851c2ccf05fc5ff7a99707aa786}{max\+\_\+limits} +\item +std\+::vector$<$ \hyperlink{class_cylinder}{Cylinder} $>$ \hyperlink{class_cylinder_gamma_distribution_a3e8265a7ddb15d895112e02bd66fbf67}{cylinders} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\hyperlink{class_cylinder_gamma_distribution}{Cylinder\+Gamma\+Distribution} Class =============================================================/. + +Class to construct a substrate taken from a Gamma distribution of radiis placed in a single voxel structure. \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +february 2017 \subsection*{0.\+2 } +\end{DoxyDate} + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_cylinder_gamma_distribution_a7578f5f0fb11398ec5bf5007047f4b81}\label{class_cylinder_gamma_distribution_a7578f5f0fb11398ec5bf5007047f4b81}} +\index{Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}!Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}} +\index{Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}!Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}} +\subsubsection{\texorpdfstring{Cylinder\+Gamma\+Distribution()}{CylinderGammaDistribution()}} +{\footnotesize\ttfamily Cylinder\+Gamma\+Distribution\+::\+Cylinder\+Gamma\+Distribution (\begin{DoxyParamCaption}\item[{unsigned}]{num\+\_\+cyl, }\item[{double}]{a, }\item[{double}]{b, }\item[{double}]{icvf\+\_\+, }\item[{Eigen\+::\+Vector3d \&}]{min\+\_\+l, }\item[{Eigen\+::\+Vector3d \&}]{max\+\_\+l, }\item[{float}]{min\+\_\+radius = {\ttfamily 0.01} }\end{DoxyParamCaption})} + + + +Initialize everything. + + +\begin{DoxyParams}{Parameters} +{\em P\+\_\+} & \hyperlink{class_cylinder}{Cylinder} origin \\ +\hline +{\em Q\+\_\+} & cylinder direction. \\ +\hline +{\em radius\+\_\+} & cylinder\textquotesingle{}s radius \\ +\hline +{\em scale} & scale factor for the values passed. Useful when reading a file. \\ +\hline +\end{DoxyParams} + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_cylinder_gamma_distribution_a2345c03be0b0c934efe02e4234c65fd1}\label{class_cylinder_gamma_distribution_a2345c03be0b0c934efe02e4234c65fd1}} +\index{Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}!print\+Substrate@{print\+Substrate}} +\index{print\+Substrate@{print\+Substrate}!Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}} +\subsubsection{\texorpdfstring{print\+Substrate()}{printSubstrate()}} +{\footnotesize\ttfamily void Cylinder\+Gamma\+Distribution\+::print\+Substrate (\begin{DoxyParamCaption}\item[{std\+::ostream \&}]{out }\end{DoxyParamCaption})} + + + +Prints the cylinders positions in a file or output stream. + + +\begin{DoxyParams}{Parameters} +{\em out} & ostream where to write the info. \\ +\hline +\end{DoxyParams} + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_cylinder_gamma_distribution_a8cae528f51692ed05049e4ea06c63722}\label{class_cylinder_gamma_distribution_a8cae528f51692ed05049e4ea06c63722}} +\index{Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}!alpha@{alpha}} +\index{alpha@{alpha}!Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}} +\subsubsection{\texorpdfstring{alpha}{alpha}} +{\footnotesize\ttfamily double Cylinder\+Gamma\+Distribution\+::alpha} + +alpha coefficient of the Gamma distribution \mbox{\Hypertarget{class_cylinder_gamma_distribution_a601a42ef7bacbf9696229efbd703f61e}\label{class_cylinder_gamma_distribution_a601a42ef7bacbf9696229efbd703f61e}} +\index{Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}!beta@{beta}} +\index{beta@{beta}!Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}} +\subsubsection{\texorpdfstring{beta}{beta}} +{\footnotesize\ttfamily double Cylinder\+Gamma\+Distribution\+::beta} + +beta coefficient of the gamma distribution \mbox{\Hypertarget{class_cylinder_gamma_distribution_a3e8265a7ddb15d895112e02bd66fbf67}\label{class_cylinder_gamma_distribution_a3e8265a7ddb15d895112e02bd66fbf67}} +\index{Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}!cylinders@{cylinders}} +\index{cylinders@{cylinders}!Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}} +\subsubsection{\texorpdfstring{cylinders}{cylinders}} +{\footnotesize\ttfamily std\+::vector$<$\hyperlink{class_cylinder}{Cylinder}$>$ Cylinder\+Gamma\+Distribution\+::cylinders} + +\hyperlink{class_cylinder}{Cylinder} vector \mbox{\Hypertarget{class_cylinder_gamma_distribution_a31f82c4608b7cd2b022805e30a4db983}\label{class_cylinder_gamma_distribution_a31f82c4608b7cd2b022805e30a4db983}} +\index{Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}!icvf@{icvf}} +\index{icvf@{icvf}!Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}} +\subsubsection{\texorpdfstring{icvf}{icvf}} +{\footnotesize\ttfamily double Cylinder\+Gamma\+Distribution\+::icvf} + +Achieved intra-\/celular volum fraction in the substrate \mbox{\Hypertarget{class_cylinder_gamma_distribution_aa7094851c2ccf05fc5ff7a99707aa786}\label{class_cylinder_gamma_distribution_aa7094851c2ccf05fc5ff7a99707aa786}} +\index{Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}!max\+\_\+limits@{max\+\_\+limits}} +\index{max\+\_\+limits@{max\+\_\+limits}!Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}} +\subsubsection{\texorpdfstring{max\+\_\+limits}{max\_limits}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Cylinder\+Gamma\+Distribution\+::max\+\_\+limits} + +voxel max limits (if any) \mbox{\Hypertarget{class_cylinder_gamma_distribution_ac77a9d794f2f2000066c4a26f19a9097}\label{class_cylinder_gamma_distribution_ac77a9d794f2f2000066c4a26f19a9097}} +\index{Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}!min\+\_\+limits@{min\+\_\+limits}} +\index{min\+\_\+limits@{min\+\_\+limits}!Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}} +\subsubsection{\texorpdfstring{min\+\_\+limits}{min\_limits}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Cylinder\+Gamma\+Distribution\+::min\+\_\+limits} + +voxel min limits (if any) (bottom left corner) \mbox{\Hypertarget{class_cylinder_gamma_distribution_aece7d3ec40d3dbb3a2ecd1bd88c5a694}\label{class_cylinder_gamma_distribution_aece7d3ec40d3dbb3a2ecd1bd88c5a694}} +\index{Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}!min\+\_\+radius@{min\+\_\+radius}} +\index{min\+\_\+radius@{min\+\_\+radius}!Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}} +\subsubsection{\texorpdfstring{min\+\_\+radius}{min\_radius}} +{\footnotesize\ttfamily float Cylinder\+Gamma\+Distribution\+::min\+\_\+radius} + +Minimum radius to be sampled from the gamma distribution \mbox{\Hypertarget{class_cylinder_gamma_distribution_af74583662a4f33ba1565f2c71e6bbc5a}\label{class_cylinder_gamma_distribution_af74583662a4f33ba1565f2c71e6bbc5a}} +\index{Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}!num\+\_\+cylinders@{num\+\_\+cylinders}} +\index{num\+\_\+cylinders@{num\+\_\+cylinders}!Cylinder\+Gamma\+Distribution@{Cylinder\+Gamma\+Distribution}} +\subsubsection{\texorpdfstring{num\+\_\+cylinders}{num\_cylinders}} +{\footnotesize\ttfamily unsigned Cylinder\+Gamma\+Distribution\+::num\+\_\+cylinders} + +number of cylnders fit inside the substrate + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/cylindergammadistribution.\+h\item +src/cylindergammadistribution.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_dynamics_simulation.tex b/doc/latex/class_dynamics_simulation.tex new file mode 100644 index 0000000..5eefd0f --- /dev/null +++ b/doc/latex/class_dynamics_simulation.tex @@ -0,0 +1,408 @@ +\hypertarget{class_dynamics_simulation}{}\section{Dynamics\+Simulation Class Reference} +\label{class_dynamics_simulation}\index{Dynamics\+Simulation@{Dynamics\+Simulation}} + + +Dynamic simulation main class =============================================================/. + + + + +{\ttfamily \#include $<$dynamics\+Simulation.\+h$>$} + + + +Collaboration diagram for Dynamics\+Simulation\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{class_dynamics_simulation__coll__graph} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{class_dynamics_simulation_ad9a3e1f235466c3827cb49c67d3a6147}{Dynamics\+Simulation} () +\begin{DoxyCompactList}\small\item\em Default constructor. Initialize everything with 0\textquotesingle{}s and N\+U\+LL states, object indexes are set to -\/1. \end{DoxyCompactList}\item +\hyperlink{class_dynamics_simulation_aa603b5ba682b1b37cc96dd8be113cb52}{Dynamics\+Simulation} (std\+::string conf\+\_\+file) +\item +\hyperlink{class_dynamics_simulation_a8fd2ec6f3640bff79e4b1ad960bbda5b}{Dynamics\+Simulation} (\hyperlink{class_parameters}{Parameters} \¶ms\+\_\+) +\item +\mbox{\Hypertarget{class_dynamics_simulation_a15a1f18a99d606ef2ca939e718ca996f}\label{class_dynamics_simulation_a15a1f18a99d606ef2ca939e718ca996f}} +\hyperlink{class_dynamics_simulation_a15a1f18a99d606ef2ca939e718ca996f}{$\sim$\+Dynamics\+Simulation} () +\begin{DoxyCompactList}\small\item\em Does nothing. \end{DoxyCompactList}\item +void \hyperlink{class_dynamics_simulation_a00cf4a6cbde1ef708fdbd58e8d8a7727}{start\+Simulation} (\hyperlink{class_simulable_sequence}{Simulable\+Sequence} $\ast$data\+Synth=nullptr) +\begin{DoxyCompactList}\small\item\em Starts the dynamics simulation and, if a P\+G\+SE sequence is given, computes the DW signal. \end{DoxyCompactList}\item +void \hyperlink{class_dynamics_simulation_a67adab75eba635447c1b1b2b26d1e0ab}{read\+Configuration\+File} (std\+::string conf\+\_\+file\+\_\+path) +\begin{DoxyCompactList}\small\item\em Reads all the parameters listed in the param conf\+\_\+file and stores them in the /t params object. \end{DoxyCompactList}\item +void \hyperlink{class_dynamics_simulation_a9148a30590bef5c766fd2366bbd16eb8}{set\+Duration} (const double \&duration) +\begin{DoxyCompactList}\small\item\em Sets the simulation duration in milliseconds, this should be synchronized w/r the Time Echo. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_dynamics_simulation_a25b78b4ef659a448a806b995a19cf8b1}\label{class_dynamics_simulation_a25b78b4ef659a448a806b995a19cf8b1}} +void {\bfseries set\+Walkers\+Num} (const unsigned \&N) +\item +\mbox{\Hypertarget{class_dynamics_simulation_a45248ef6170eaf8a3a62b43f3ce77e02}\label{class_dynamics_simulation_a45248ef6170eaf8a3a62b43f3ce77e02}} +void {\bfseries set\+Steps\+Num} (const unsigned \&T) +\item +bool \hyperlink{class_dynamics_simulation_ae7aa76c335aceb658a4ffc683898077c}{is\+In\+Intra} (Eigen\+::\+Vector3d \&position, int \&cyl\+\_\+id, int \&ply\+\_\+id, double distance\+\_\+to\+\_\+be\+\_\+intra\+\_\+ply=1e-\/6) +\begin{DoxyCompactList}\small\item\em return true if the position is inside any of the obstacles. Only obstacles with a defined \char`\"{}inside region\char`\"{} can be considered. \hyperlink{class_voxel}{Voxel} periodicity is not considered \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_dynamics_simulation_aeae993217cebb5c23f68cb3e04cf8e49}\label{class_dynamics_simulation_aeae993217cebb5c23f68cb3e04cf8e49}} +void \hyperlink{class_dynamics_simulation_aeae993217cebb5c23f68cb3e04cf8e49}{write\+Propagator} (std\+::string path) +\begin{DoxyCompactList}\small\item\em Writes to disk the final propagator matrix. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_dynamics_simulation_a6c69cd2599f088e7631be0721d5815f1}\label{class_dynamics_simulation_a6c69cd2599f088e7631be0721d5815f1}} +bool {\bfseries is\+Inside\+Cylinders} (Eigen\+::\+Vector3d \&position, int \&cyl\+\_\+id, double distance\+\_\+to\+\_\+be\+\_\+inside=1e-\/6) +\item +\mbox{\Hypertarget{class_dynamics_simulation_a4064621288ca5066ed5b76cc71a81e25}\label{class_dynamics_simulation_a4064621288ca5066ed5b76cc71a81e25}} +bool {\bfseries is\+Inside\+P\+LY} (Eigen\+::\+Vector3d \&position, int \&ply\+\_\+id, double distance\+\_\+to\+\_\+be\+\_\+inside=1e-\/6) +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_dynamics_simulation_abe4af37db2602b6341b2d7732e43951e}\label{class_dynamics_simulation_abe4af37db2602b6341b2d7732e43951e}} +static std\+::string {\bfseries seconds\+To\+Minutes} (double) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\hyperlink{class_parameters}{Parameters} \hyperlink{class_dynamics_simulation_a67cd4cd9a2e7cd2339c98dae60e66dde}{params} +\item +\hyperlink{class_walker}{Walker} \hyperlink{class_dynamics_simulation_a9a5d2596527abdcdd185430c97dea9ad}{walker} +\item +\hyperlink{class_trajectory}{Trajectory} \hyperlink{class_dynamics_simulation_ab69fedf7129784621eec440ba873218d}{trajectory} +\item +std\+::mt19937 \hyperlink{class_dynamics_simulation_a03ba104f00ae772e9b8fb55e7878c793}{mt} +\item +double \hyperlink{class_dynamics_simulation_ad6dddce1d5bc30d3e61dceb69652c893}{step\+\_\+lenght} +\item +double \hyperlink{class_dynamics_simulation_a46187e70aad2b130249ba3d1dd6a3c75}{second\+\_\+passed} +\item +double \hyperlink{class_dynamics_simulation_a337972272af798cb8606796116145d11}{max\+\_\+simulation\+\_\+time} +\item +double \hyperlink{class_dynamics_simulation_a6a210fb28fe2f996c226614742a25214}{completed} +\item +std\+::string \hyperlink{class_dynamics_simulation_a4fb0e535753c48b4a2647502379aebaf}{ini\+\_\+pos\+\_\+file} +\item +unsigned \hyperlink{class_dynamics_simulation_a8e20cd71b55dda041844cfc305851dbe}{ini\+\_\+pos\+\_\+file\+\_\+ini\+\_\+index} +\item +int \hyperlink{class_dynamics_simulation_aa178498c8be8af1a515a8c0a02187600}{id} +\item +\hyperlink{classsentinels_1_1_sentinel}{sentinels\+::\+Sentinel} \hyperlink{class_dynamics_simulation_aed384434dc469e766301268dcf1ec4ab}{sentinela} +\item +std\+::vector$<$ \hyperlink{class_p_l_y_obstacle}{P\+L\+Y\+Obstacle} $>$ $\ast$ \hyperlink{class_dynamics_simulation_a830b3e0aa0ce95720ea0a8180e2cffec}{ply\+Obstacles\+\_\+list} +\item +std\+::vector$<$ \hyperlink{class_cylinder}{Cylinder} $>$ $\ast$ \hyperlink{class_dynamics_simulation_a938c4df48ca1cabcadefb974093d4a57}{cylinders\+\_\+list} +\item +std\+::vector$<$ unsigned $>$ \hyperlink{class_dynamics_simulation_a927a79875ff2f035d929229cf4471756}{cylinders\+\_\+deque} +\item +std\+::vector$<$ std\+::vector$<$ unsigned $>$ $>$ \hyperlink{class_dynamics_simulation_ad920a07f2c8c85fab7a1aec983c15b20}{ply\+\_\+deque} +\item +std\+::vector$<$ \hyperlink{class_voxel}{Voxel} $>$ \hyperlink{class_dynamics_simulation_ab68d71822661c3608bde4553392c9bd1}{voxels\+\_\+list} +\item +\hyperlink{class_propagator}{Propagator} \hyperlink{class_dynamics_simulation_a62f78ae3e723206d16f1528e344ab1e9}{propagator} +\item +double \hyperlink{class_dynamics_simulation_ac4161cbca21d20fde85817a21b99bd07}{icvf} +\item +\mbox{\Hypertarget{class_dynamics_simulation_ab2eef9ff5ee32531cdf743327cf41455}\label{class_dynamics_simulation_ab2eef9ff5ee32531cdf743327cf41455}} +unsigned {\bfseries intra\+\_\+tries} +\item +unsigned \hyperlink{class_dynamics_simulation_abb056d8cde70aab8b6fa81ee8cdb231e}{total\+\_\+tries} +\item +\mbox{\Hypertarget{class_dynamics_simulation_af7ff1563912461e63693087d7aaf616b}\label{class_dynamics_simulation_af7ff1563912461e63693087d7aaf616b}} +Eigen\+::\+Vector3d {\bfseries step} +\item +\mbox{\Hypertarget{class_dynamics_simulation_a854c987e8b1806d74205eb916836befa}\label{class_dynamics_simulation_a854c987e8b1806d74205eb916836befa}} +double {\bfseries time\+\_\+step} +\item +\mbox{\Hypertarget{class_dynamics_simulation_ae79118cbf5ce497cc82c6471353d5045}\label{class_dynamics_simulation_ae79118cbf5ce497cc82c6471353d5045}} +double {\bfseries time\+\_\+dt} +\item +double \hyperlink{class_dynamics_simulation_aa73be02bc4cb5027a1bc4a0b6b91b4b2}{last\+\_\+time\+\_\+dt} +\item +\mbox{\Hypertarget{class_dynamics_simulation_a5d736b0d739d22d6a2d9371fbcdd8775}\label{class_dynamics_simulation_a5d736b0d739d22d6a2d9371fbcdd8775}} +std\+::ifstream {\bfseries ini\+Pos} +\item +\mbox{\Hypertarget{class_dynamics_simulation_a6fc87bbfea509599236624fda517c901}\label{class_dynamics_simulation_a6fc87bbfea509599236624fda517c901}} +time\+\_\+t {\bfseries start} +\item +time\+\_\+t \hyperlink{class_dynamics_simulation_a4e14e7f5efc039772219b00b02381db1}{now} +\item +bool \hyperlink{class_dynamics_simulation_a8742da6be78261e71b9b8cd4de0df488}{print\+\_\+expected\+\_\+time} +\item +unsigned \hyperlink{class_dynamics_simulation_a8772d8683d6089eef368212ee99d12d5}{num\+\_\+simulated\+\_\+walkers} +\item +\mbox{\Hypertarget{class_dynamics_simulation_a09d2b3a3b998c85d98a5b87509a1e13a}\label{class_dynamics_simulation_a09d2b3a3b998c85d98a5b87509a1e13a}} +unsigned {\bfseries aux\+\_\+walker\+\_\+index} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Dynamic simulation main class =============================================================/. + +Main implementation of the particles dynamics. Handles collisions and bouncing \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +November 2016 \subsection*{1.\+42 } +\end{DoxyDate} + + +Main class, implements the particles dynamics. Handles collisions and bouncing. + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_dynamics_simulation_ad9a3e1f235466c3827cb49c67d3a6147}\label{class_dynamics_simulation_ad9a3e1f235466c3827cb49c67d3a6147}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{Dynamics\+Simulation()}{DynamicsSimulation()}\hspace{0.1cm}{\footnotesize\ttfamily [1/3]}} +{\footnotesize\ttfamily Dynamics\+Simulation\+::\+Dynamics\+Simulation (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Default constructor. Initialize everything with 0\textquotesingle{}s and N\+U\+LL states, object indexes are set to -\/1. + +\hyperlink{class_dynamics_simulation}{Dynamics\+Simulation} implementation \mbox{\Hypertarget{class_dynamics_simulation_aa603b5ba682b1b37cc96dd8be113cb52}\label{class_dynamics_simulation_aa603b5ba682b1b37cc96dd8be113cb52}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{Dynamics\+Simulation()}{DynamicsSimulation()}\hspace{0.1cm}{\footnotesize\ttfamily [2/3]}} +{\footnotesize\ttfamily Dynamics\+Simulation\+::\+Dynamics\+Simulation (\begin{DoxyParamCaption}\item[{std\+::string}]{conf\+\_\+file }\end{DoxyParamCaption})} + + +\begin{DoxyParams}{Parameters} +{\em configuration} & file \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_dynamics_simulation_a8fd2ec6f3640bff79e4b1ad960bbda5b}\label{class_dynamics_simulation_a8fd2ec6f3640bff79e4b1ad960bbda5b}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{Dynamics\+Simulation()}{DynamicsSimulation()}\hspace{0.1cm}{\footnotesize\ttfamily [3/3]}} +{\footnotesize\ttfamily Dynamics\+Simulation\+::\+Dynamics\+Simulation (\begin{DoxyParamCaption}\item[{\hyperlink{class_parameters}{Parameters} \&}]{params\+\_\+ }\end{DoxyParamCaption})} + + +\begin{DoxyParams}{Parameters} +{\em \hyperlink{class_parameter}{Parameter}} & instance \\ +\hline +\end{DoxyParams} + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_dynamics_simulation_ae7aa76c335aceb658a4ffc683898077c}\label{class_dynamics_simulation_ae7aa76c335aceb658a4ffc683898077c}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!is\+In\+Intra@{is\+In\+Intra}} +\index{is\+In\+Intra@{is\+In\+Intra}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{is\+In\+Intra()}{isInIntra()}} +{\footnotesize\ttfamily Dynamics\+Simulation\+::is\+In\+Intra (\begin{DoxyParamCaption}\item[{Eigen\+::\+Vector3d \&}]{position, }\item[{int \&}]{cyl\+\_\+id, }\item[{int \&}]{ply\+\_\+id, }\item[{double}]{distance\+\_\+to\+\_\+be\+\_\+intra\+\_\+ply = {\ttfamily 1e-\/6} }\end{DoxyParamCaption})} + + + +return true if the position is inside any of the obstacles. Only obstacles with a defined \char`\"{}inside region\char`\"{} can be considered. \hyperlink{class_voxel}{Voxel} periodicity is not considered + + +\begin{DoxyParams}{Parameters} +{\em position} & 3d position on space. \\ +\hline +{\em error} & minimum distance to be considered \char`\"{}outside\char`\"{} de obstacle (barrier thickness) \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_dynamics_simulation_a67adab75eba635447c1b1b2b26d1e0ab}\label{class_dynamics_simulation_a67adab75eba635447c1b1b2b26d1e0ab}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!read\+Configuration\+File@{read\+Configuration\+File}} +\index{read\+Configuration\+File@{read\+Configuration\+File}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{read\+Configuration\+File()}{readConfigurationFile()}} +{\footnotesize\ttfamily Dynamics\+Simulation\+::read\+Configuration\+File (\begin{DoxyParamCaption}\item[{std\+::string}]{conf\+\_\+file\+\_\+path }\end{DoxyParamCaption})} + + + +Reads all the parameters listed in the param conf\+\_\+file and stores them in the /t params object. + + +\begin{DoxyParams}{Parameters} +{\em conf\+\_\+file\+\_\+path} & \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +void +\end{DoxyReturn} + +\begin{DoxyParams}{Parameters} +{\em conf\+\_\+file\+\_\+path} & paremeters file path. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_dynamics_simulation_a9148a30590bef5c766fd2366bbd16eb8}\label{class_dynamics_simulation_a9148a30590bef5c766fd2366bbd16eb8}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!set\+Duration@{set\+Duration}} +\index{set\+Duration@{set\+Duration}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{set\+Duration()}{setDuration()}} +{\footnotesize\ttfamily Dynamics\+Simulation\+::set\+Duration (\begin{DoxyParamCaption}\item[{const double \&}]{duration }\end{DoxyParamCaption})} + + + +Sets the simulation duration in milliseconds, this should be synchronized w/r the Time Echo. + + +\begin{DoxyParams}{Parameters} +{\em duration} & simulation duration. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_dynamics_simulation_a00cf4a6cbde1ef708fdbd58e8d8a7727}\label{class_dynamics_simulation_a00cf4a6cbde1ef708fdbd58e8d8a7727}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!start\+Simulation@{start\+Simulation}} +\index{start\+Simulation@{start\+Simulation}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{start\+Simulation()}{startSimulation()}} +{\footnotesize\ttfamily Dynamics\+Simulation\+::start\+Simulation (\begin{DoxyParamCaption}\item[{\hyperlink{class_simulable_sequence}{Simulable\+Sequence} $\ast$}]{data\+Synth = {\ttfamily nullptr} }\end{DoxyParamCaption})} + + + +Starts the dynamics simulation and, if a P\+G\+SE sequence is given, computes the DW signal. + + +\begin{DoxyParams}{Parameters} +{\em data\+Synth} & optional paramter. If this parameter is not given, no signal is computed. \\ +\hline +\end{DoxyParams} + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_dynamics_simulation_a6a210fb28fe2f996c226614742a25214}\label{class_dynamics_simulation_a6a210fb28fe2f996c226614742a25214}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!completed@{completed}} +\index{completed@{completed}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{completed}{completed}} +{\footnotesize\ttfamily double Dynamics\+Simulation\+::completed} + +Auxiliar variable to save the milestone of percentage of completed walkers \mbox{\Hypertarget{class_dynamics_simulation_a927a79875ff2f035d929229cf4471756}\label{class_dynamics_simulation_a927a79875ff2f035d929229cf4471756}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!cylinders\+\_\+deque@{cylinders\+\_\+deque}} +\index{cylinders\+\_\+deque@{cylinders\+\_\+deque}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{cylinders\+\_\+deque}{cylinders\_deque}} +{\footnotesize\ttfamily std\+::vector$<$unsigned$>$ Dynamics\+Simulation\+::cylinders\+\_\+deque} + +deque with the indexes of the cylinders (used for optmization) \mbox{\Hypertarget{class_dynamics_simulation_a938c4df48ca1cabcadefb974093d4a57}\label{class_dynamics_simulation_a938c4df48ca1cabcadefb974093d4a57}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!cylinders\+\_\+list@{cylinders\+\_\+list}} +\index{cylinders\+\_\+list@{cylinders\+\_\+list}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{cylinders\+\_\+list}{cylinders\_list}} +{\footnotesize\ttfamily std\+::vector$<$\hyperlink{class_cylinder}{Cylinder}$>$$\ast$ Dynamics\+Simulation\+::cylinders\+\_\+list} + +vector with all the isntances of \char`\"{}\+Cylider\char`\"{} obstacles \mbox{\Hypertarget{class_dynamics_simulation_ac4161cbca21d20fde85817a21b99bd07}\label{class_dynamics_simulation_ac4161cbca21d20fde85817a21b99bd07}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!icvf@{icvf}} +\index{icvf@{icvf}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{icvf}{icvf}} +{\footnotesize\ttfamily double Dynamics\+Simulation\+::icvf} + +Stores the I\+C\+VF (1 -\/ Intra-\/\+Extra) if needed \mbox{\Hypertarget{class_dynamics_simulation_aa178498c8be8af1a515a8c0a02187600}\label{class_dynamics_simulation_aa178498c8be8af1a515a8c0a02187600}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!id@{id}} +\index{id@{id}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{id}{id}} +{\footnotesize\ttfamily int Dynamics\+Simulation\+::id} + +Unique id for the dynamic simulation \mbox{\Hypertarget{class_dynamics_simulation_a4fb0e535753c48b4a2647502379aebaf}\label{class_dynamics_simulation_a4fb0e535753c48b4a2647502379aebaf}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!ini\+\_\+pos\+\_\+file@{ini\+\_\+pos\+\_\+file}} +\index{ini\+\_\+pos\+\_\+file@{ini\+\_\+pos\+\_\+file}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{ini\+\_\+pos\+\_\+file}{ini\_pos\_file}} +{\footnotesize\ttfamily std\+::string Dynamics\+Simulation\+::ini\+\_\+pos\+\_\+file} + +walkers intitial position file \mbox{\Hypertarget{class_dynamics_simulation_a8e20cd71b55dda041844cfc305851dbe}\label{class_dynamics_simulation_a8e20cd71b55dda041844cfc305851dbe}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!ini\+\_\+pos\+\_\+file\+\_\+ini\+\_\+index@{ini\+\_\+pos\+\_\+file\+\_\+ini\+\_\+index}} +\index{ini\+\_\+pos\+\_\+file\+\_\+ini\+\_\+index@{ini\+\_\+pos\+\_\+file\+\_\+ini\+\_\+index}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{ini\+\_\+pos\+\_\+file\+\_\+ini\+\_\+index}{ini\_pos\_file\_ini\_index}} +{\footnotesize\ttfamily unsigned Dynamics\+Simulation\+::ini\+\_\+pos\+\_\+file\+\_\+ini\+\_\+index} + +starting position in the ini walker position file (multicore support) \mbox{\Hypertarget{class_dynamics_simulation_aa73be02bc4cb5027a1bc4a0b6b91b4b2}\label{class_dynamics_simulation_aa73be02bc4cb5027a1bc4a0b6b91b4b2}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!last\+\_\+time\+\_\+dt@{last\+\_\+time\+\_\+dt}} +\index{last\+\_\+time\+\_\+dt@{last\+\_\+time\+\_\+dt}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{last\+\_\+time\+\_\+dt}{last\_time\_dt}} +{\footnotesize\ttfamily double Dynamics\+Simulation\+::last\+\_\+time\+\_\+dt} + +simulation time steps auxiliar values \mbox{\Hypertarget{class_dynamics_simulation_a337972272af798cb8606796116145d11}\label{class_dynamics_simulation_a337972272af798cb8606796116145d11}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!max\+\_\+simulation\+\_\+time@{max\+\_\+simulation\+\_\+time}} +\index{max\+\_\+simulation\+\_\+time@{max\+\_\+simulation\+\_\+time}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{max\+\_\+simulation\+\_\+time}{max\_simulation\_time}} +{\footnotesize\ttfamily double Dynamics\+Simulation\+::max\+\_\+simulation\+\_\+time} + +Maximum simulation time if not passed we carry all the particles \mbox{\Hypertarget{class_dynamics_simulation_a03ba104f00ae772e9b8fb55e7878c793}\label{class_dynamics_simulation_a03ba104f00ae772e9b8fb55e7878c793}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!mt@{mt}} +\index{mt@{mt}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{mt}{mt}} +{\footnotesize\ttfamily std\+::mt19937 Dynamics\+Simulation\+::mt} + +rnd, random generator instance \mbox{\Hypertarget{class_dynamics_simulation_a4e14e7f5efc039772219b00b02381db1}\label{class_dynamics_simulation_a4e14e7f5efc039772219b00b02381db1}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!now@{now}} +\index{now@{now}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{now}{now}} +{\footnotesize\ttfamily time\+\_\+t Dynamics\+Simulation\+::now} + +Auxiliar Variable for time recording and estimation for time. \mbox{\Hypertarget{class_dynamics_simulation_a8772d8683d6089eef368212ee99d12d5}\label{class_dynamics_simulation_a8772d8683d6089eef368212ee99d12d5}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!num\+\_\+simulated\+\_\+walkers@{num\+\_\+simulated\+\_\+walkers}} +\index{num\+\_\+simulated\+\_\+walkers@{num\+\_\+simulated\+\_\+walkers}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{num\+\_\+simulated\+\_\+walkers}{num\_simulated\_walkers}} +{\footnotesize\ttfamily unsigned Dynamics\+Simulation\+::num\+\_\+simulated\+\_\+walkers} + +Saves the final number of simulated walkers (time limit) \mbox{\Hypertarget{class_dynamics_simulation_a67cd4cd9a2e7cd2339c98dae60e66dde}\label{class_dynamics_simulation_a67cd4cd9a2e7cd2339c98dae60e66dde}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!params@{params}} +\index{params@{params}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{params}{params}} +{\footnotesize\ttfamily \hyperlink{class_parameters}{Parameters} Dynamics\+Simulation\+::params} + +\hyperlink{class_parameters}{Parameters} handler instance \mbox{\Hypertarget{class_dynamics_simulation_ad920a07f2c8c85fab7a1aec983c15b20}\label{class_dynamics_simulation_ad920a07f2c8c85fab7a1aec983c15b20}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!ply\+\_\+deque@{ply\+\_\+deque}} +\index{ply\+\_\+deque@{ply\+\_\+deque}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{ply\+\_\+deque}{ply\_deque}} +{\footnotesize\ttfamily std\+::vector$<$std\+::vector$<$unsigned$>$ $>$ Dynamics\+Simulation\+::ply\+\_\+deque} + +deque with the indexes of the triangles of all ply\textquotesingle{}s (used for opt) \mbox{\Hypertarget{class_dynamics_simulation_a830b3e0aa0ce95720ea0a8180e2cffec}\label{class_dynamics_simulation_a830b3e0aa0ce95720ea0a8180e2cffec}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!ply\+Obstacles\+\_\+list@{ply\+Obstacles\+\_\+list}} +\index{ply\+Obstacles\+\_\+list@{ply\+Obstacles\+\_\+list}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{ply\+Obstacles\+\_\+list}{plyObstacles\_list}} +{\footnotesize\ttfamily std\+::vector$<$\hyperlink{class_p_l_y_obstacle}{P\+L\+Y\+Obstacle}$>$$\ast$ Dynamics\+Simulation\+::ply\+Obstacles\+\_\+list} + +pointer to a vector with all the instances of P\+L\+Y\+Obstacles \mbox{\Hypertarget{class_dynamics_simulation_a8742da6be78261e71b9b8cd4de0df488}\label{class_dynamics_simulation_a8742da6be78261e71b9b8cd4de0df488}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!print\+\_\+expected\+\_\+time@{print\+\_\+expected\+\_\+time}} +\index{print\+\_\+expected\+\_\+time@{print\+\_\+expected\+\_\+time}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{print\+\_\+expected\+\_\+time}{print\_expected\_time}} +{\footnotesize\ttfamily bool Dynamics\+Simulation\+::print\+\_\+expected\+\_\+time} + +Auxiliar flag for time recording and stimation for time. \mbox{\Hypertarget{class_dynamics_simulation_a62f78ae3e723206d16f1528e344ab1e9}\label{class_dynamics_simulation_a62f78ae3e723206d16f1528e344ab1e9}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!propagator@{propagator}} +\index{propagator@{propagator}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{propagator}{propagator}} +{\footnotesize\ttfamily \hyperlink{class_propagator}{Propagator} Dynamics\+Simulation\+::propagator} + +\hyperlink{class_propagator}{Propagator} object to compute and save the particles M\+SD \mbox{\Hypertarget{class_dynamics_simulation_a46187e70aad2b130249ba3d1dd6a3c75}\label{class_dynamics_simulation_a46187e70aad2b130249ba3d1dd6a3c75}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!second\+\_\+passed@{second\+\_\+passed}} +\index{second\+\_\+passed@{second\+\_\+passed}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{second\+\_\+passed}{second\_passed}} +{\footnotesize\ttfamily double Dynamics\+Simulation\+::second\+\_\+passed} + +Simulation total time in seconds \mbox{\Hypertarget{class_dynamics_simulation_aed384434dc469e766301268dcf1ec4ab}\label{class_dynamics_simulation_aed384434dc469e766301268dcf1ec4ab}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!sentinela@{sentinela}} +\index{sentinela@{sentinela}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{sentinela}{sentinela}} +{\footnotesize\ttfamily \hyperlink{classsentinels_1_1_sentinel}{sentinels\+::\+Sentinel} Dynamics\+Simulation\+::sentinela} + +Sentinel initialization to encoutner error in the simulation \mbox{\Hypertarget{class_dynamics_simulation_ad6dddce1d5bc30d3e61dceb69652c893}\label{class_dynamics_simulation_ad6dddce1d5bc30d3e61dceb69652c893}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!step\+\_\+lenght@{step\+\_\+lenght}} +\index{step\+\_\+lenght@{step\+\_\+lenght}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{step\+\_\+lenght}{step\_lenght}} +{\footnotesize\ttfamily double Dynamics\+Simulation\+::step\+\_\+lenght} + +l, step length \mbox{\Hypertarget{class_dynamics_simulation_abb056d8cde70aab8b6fa81ee8cdb231e}\label{class_dynamics_simulation_abb056d8cde70aab8b6fa81ee8cdb231e}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!total\+\_\+tries@{total\+\_\+tries}} +\index{total\+\_\+tries@{total\+\_\+tries}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{total\+\_\+tries}{total\_tries}} +{\footnotesize\ttfamily unsigned Dynamics\+Simulation\+::total\+\_\+tries} + +Helper variables to compute the estimated I\+C\+VF \mbox{\Hypertarget{class_dynamics_simulation_ab69fedf7129784621eec440ba873218d}\label{class_dynamics_simulation_ab69fedf7129784621eec440ba873218d}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!trajectory@{trajectory}} +\index{trajectory@{trajectory}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{trajectory}{trajectory}} +{\footnotesize\ttfamily \hyperlink{class_trajectory}{Trajectory} Dynamics\+Simulation\+::trajectory} + +\hyperlink{class_trajectory}{Trajectory} instance. Handles i/o operations \mbox{\Hypertarget{class_dynamics_simulation_ab68d71822661c3608bde4553392c9bd1}\label{class_dynamics_simulation_ab68d71822661c3608bde4553392c9bd1}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!voxels\+\_\+list@{voxels\+\_\+list}} +\index{voxels\+\_\+list@{voxels\+\_\+list}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{voxels\+\_\+list}{voxels\_list}} +{\footnotesize\ttfamily std\+::vector$<$\hyperlink{class_voxel}{Voxel}$>$ Dynamics\+Simulation\+::voxels\+\_\+list} + +vector with all the voxels to be simulated (if any) \mbox{\Hypertarget{class_dynamics_simulation_a9a5d2596527abdcdd185430c97dea9ad}\label{class_dynamics_simulation_a9a5d2596527abdcdd185430c97dea9ad}} +\index{Dynamics\+Simulation@{Dynamics\+Simulation}!walker@{walker}} +\index{walker@{walker}!Dynamics\+Simulation@{Dynamics\+Simulation}} +\subsubsection{\texorpdfstring{walker}{walker}} +{\footnotesize\ttfamily \hyperlink{class_walker}{Walker} Dynamics\+Simulation\+::walker} + +Single walker to diffuse + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/dynamics\+Simulation.\+h\item +src/dynamics\+Simulation.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_dynamics_simulation__coll__graph.md5 b/doc/latex/class_dynamics_simulation__coll__graph.md5 new file mode 100644 index 0000000..71a5d0f --- /dev/null +++ b/doc/latex/class_dynamics_simulation__coll__graph.md5 @@ -0,0 +1 @@ +4028e171ff644684a37459388737503b \ No newline at end of file diff --git a/doc/latex/class_dynamics_simulation__coll__graph.pdf b/doc/latex/class_dynamics_simulation__coll__graph.pdf new file mode 100644 index 0000000..ead0c51 Binary files /dev/null and b/doc/latex/class_dynamics_simulation__coll__graph.pdf differ diff --git a/doc/latex/class_gradient_waveform.tex b/doc/latex/class_gradient_waveform.tex new file mode 100644 index 0000000..03e80b6 --- /dev/null +++ b/doc/latex/class_gradient_waveform.tex @@ -0,0 +1,226 @@ +\hypertarget{class_gradient_waveform}{}\section{Gradient\+Waveform Class Reference} +\label{class_gradient_waveform}\index{Gradient\+Waveform@{Gradient\+Waveform}} + + +Gradient Wavefroms =============================================================/. + + + + +{\ttfamily \#include $<$gradientwaveform.\+h$>$} + + + +Inheritance diagram for Gradient\+Waveform\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=183pt]{class_gradient_waveform__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for Gradient\+Waveform\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=262pt]{class_gradient_waveform__coll__graph} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_gradient_waveform_acf951c9a86f95d002db4858ee4c78582}\label{class_gradient_waveform_acf951c9a86f95d002db4858ee4c78582}} +\hyperlink{class_gradient_waveform_acf951c9a86f95d002db4858ee4c78582}{Gradient\+Waveform} () +\begin{DoxyCompactList}\small\item\em Default constructor, set default N\+U\+LL values. Not to be used. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_gradient_waveform_aad3922dbe19647ed0fcbba175fb9a5ff}\label{class_gradient_waveform_aad3922dbe19647ed0fcbba175fb9a5ff}} +\hyperlink{class_gradient_waveform_aad3922dbe19647ed0fcbba175fb9a5ff}{Gradient\+Waveform} (\hyperlink{class_scheme}{Scheme} \&scheme) +\begin{DoxyCompactList}\small\item\em Main constructor. Takes a pre-\/loaded \hyperlink{class_scheme}{Scheme} file. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_gradient_waveform_a4780653a03ac1f576aeb6102b910ccde}\label{class_gradient_waveform_a4780653a03ac1f576aeb6102b910ccde}} +\hyperlink{class_gradient_waveform_a4780653a03ac1f576aeb6102b910ccde}{Gradient\+Waveform} (\hyperlink{class_scheme}{Scheme} \&scheme\+\_\+, const char $\ast$traj\+\_\+file\+\_\+name) +\begin{DoxyCompactList}\small\item\em Main constructor. Takes a pre-\/loaded \hyperlink{class_scheme}{Scheme} file and a traj file name. if this argument is passed a traj file is should be written. \end{DoxyCompactList}\item +double \hyperlink{class_gradient_waveform_a5f55e43b3057509b0f98812d2a72db9a}{get\+Numericalb\+Value} (unsigned) +\item +\mbox{\Hypertarget{class_gradient_waveform_a52971b5f773c8c0b7c43bcd5fc50197a}\label{class_gradient_waveform_a52971b5f773c8c0b7c43bcd5fc50197a}} +void \hyperlink{class_gradient_waveform_a52971b5f773c8c0b7c43bcd5fc50197a}{get\+D\+W\+I\+Signal} () +\begin{DoxyCompactList}\small\item\em Computes de DW signal from a trajfile. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_gradient_waveform_a82da8e7b3bffe4557e6e38191b7f8d81}\label{class_gradient_waveform_a82da8e7b3bffe4557e6e38191b7f8d81}} +void \hyperlink{class_gradient_waveform_a82da8e7b3bffe4557e6e38191b7f8d81}{read\+Scheme\+File} () +\begin{DoxyCompactList}\small\item\em reads the waveform \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_gradient_waveform_a2f1449c026649e4601f773086d1346ce}\label{class_gradient_waveform_a2f1449c026649e4601f773086d1346ce}} +void \hyperlink{class_gradient_waveform_a2f1449c026649e4601f773086d1346ce}{get\+Interpolated\+Grad\+Impulse} (uint rep\+\_\+index, double dt\+\_\+sim, double t\+\_\+sim\+\_\+last, Eigen\+::\+Vector3d \&Gdt) +\begin{DoxyCompactList}\small\item\em For using with the adt array. \end{DoxyCompactList}\item +void \hyperlink{class_gradient_waveform_a2c606400c648cebd85827efa8d22b6bc}{update\+\_\+phase\+\_\+shift} (double time\+\_\+step, Eigen\+::\+Matrix3\+Xd \hyperlink{class_gradient_waveform_a83a7c844f86acee3b7ab12e7e70202af}{trajectory}) +\item +void \hyperlink{class_gradient_waveform_a7421301b24b6c98e28ef9430287cdf8e}{update\+\_\+phase\+\_\+shift} (double \hyperlink{class_gradient_waveform_a3eacca54a58dc574384f07899a9a6da3}{dt}, double dt\+\_\+last, \hyperlink{class_walker}{Walker} walker) +\item +\mbox{\Hypertarget{class_gradient_waveform_af4291596da9c45247b0748d945bd9b54}\label{class_gradient_waveform_af4291596da9c45247b0748d945bd9b54}} +void \hyperlink{class_gradient_waveform_af4291596da9c45247b0748d945bd9b54}{update\+\_\+\+D\+W\+I\+\_\+signal} (\hyperlink{class_walker}{Walker} \&walker) +\begin{DoxyCompactList}\small\item\em Updates the D\+WI signal using the cumulated phase shift. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_gradient_waveform_a040d4a70dc7951c235010791e1c581d1}\label{class_gradient_waveform_a040d4a70dc7951c235010791e1c581d1}} +void \hyperlink{class_gradient_waveform_a040d4a70dc7951c235010791e1c581d1}{set\+Number\+Of\+Steps} (unsigned \hyperlink{class_gradient_waveform_af2f45ff237ba41afe3ff5cedb7c1c966}{T}) +\begin{DoxyCompactList}\small\item\em Set the number of time steps if they are known. \end{DoxyCompactList}\item +void \hyperlink{class_gradient_waveform_a80dd810cb4e5a11dec311ac87e55ea18}{get\+Grad\+Impulse} (int i, double t, double t\+Last, Eigen\+::\+Vector3d \&Gdt) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +double \hyperlink{class_gradient_waveform_a4e0c0163e36cc017f5b147e9ca3022e0}{TE} +\item +uint \hyperlink{class_gradient_waveform_af2f45ff237ba41afe3ff5cedb7c1c966}{T} +\item +double \hyperlink{class_gradient_waveform_a8608216ab7e5f002dcf6af4f869c5d27}{dyn\+\_\+duration} +\item +int \hyperlink{class_gradient_waveform_ac2287a6ef99e35f0c1f97fc3ffb37d7b}{wave\+\_\+bins} +\item +double \hyperlink{class_gradient_waveform_a02d695fa36713bd28d3c85d2bb7a877b}{wave\+\_\+duration} +\item +double \hyperlink{class_gradient_waveform_a3eacca54a58dc574384f07899a9a6da3}{dt} +\item +bool \hyperlink{class_gradient_waveform_a712eedb2165b3f889e27244fc9d91ebd}{scale\+\_\+from\+\_\+stu} +\item +std\+::vector$<$ std\+::vector$<$ float $>$ $>$ \hyperlink{class_gradient_waveform_a565fce08abb28fe26664194c04faeaea}{waveform} +\item +\hyperlink{class_trajectory}{Trajectory} \hyperlink{class_gradient_waveform_a83a7c844f86acee3b7ab12e7e70202af}{trajectory} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Gradient Wavefroms =============================================================/. + +Implementation of the the General Wavefroms. + +Main implementation of the gradient waveforms protocol \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +November 2017 \subsection*{1.\+42 } +\end{DoxyDate} + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_gradient_waveform_a80dd810cb4e5a11dec311ac87e55ea18}\label{class_gradient_waveform_a80dd810cb4e5a11dec311ac87e55ea18}} +\index{Gradient\+Waveform@{Gradient\+Waveform}!get\+Grad\+Impulse@{get\+Grad\+Impulse}} +\index{get\+Grad\+Impulse@{get\+Grad\+Impulse}!Gradient\+Waveform@{Gradient\+Waveform}} +\subsubsection{\texorpdfstring{get\+Grad\+Impulse()}{getGradImpulse()}} +{\footnotesize\ttfamily void Gradient\+Waveform\+::get\+Grad\+Impulse (\begin{DoxyParamCaption}\item[{int}]{i, }\item[{double}]{t, }\item[{double}]{t\+Last, }\item[{Eigen\+::\+Vector3d \&}]{Gdt }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + + +\begin{DoxyParams}{Parameters} +{\em i} & \hyperlink{class_walker}{Walker} index \\ +\hline +{\em t} & current time step (in milisenconds) \\ +\hline +{\em t\+Last} & last time step (in milisenconds) \\ +\hline +{\em Gdt} & vector to compute de G$\ast$dt impulse \\ +\hline +\end{DoxyParams} + + +Implements \hyperlink{class_simulable_sequence_a03a417776f5404b06c761ab9109e3e1d}{Simulable\+Sequence}. + +\mbox{\Hypertarget{class_gradient_waveform_a5f55e43b3057509b0f98812d2a72db9a}\label{class_gradient_waveform_a5f55e43b3057509b0f98812d2a72db9a}} +\index{Gradient\+Waveform@{Gradient\+Waveform}!get\+Numericalb\+Value@{get\+Numericalb\+Value}} +\index{get\+Numericalb\+Value@{get\+Numericalb\+Value}!Gradient\+Waveform@{Gradient\+Waveform}} +\subsubsection{\texorpdfstring{get\+Numericalb\+Value()}{getNumericalbValue()}} +{\footnotesize\ttfamily double Gradient\+Waveform\+::get\+Numericalb\+Value (\begin{DoxyParamCaption}\item[{unsigned}]{ }\end{DoxyParamCaption})} + +\begin{DoxyWarning}{Warning} +not implemented yet. +\end{DoxyWarning} +\mbox{\Hypertarget{class_gradient_waveform_a2c606400c648cebd85827efa8d22b6bc}\label{class_gradient_waveform_a2c606400c648cebd85827efa8d22b6bc}} +\index{Gradient\+Waveform@{Gradient\+Waveform}!update\+\_\+phase\+\_\+shift@{update\+\_\+phase\+\_\+shift}} +\index{update\+\_\+phase\+\_\+shift@{update\+\_\+phase\+\_\+shift}!Gradient\+Waveform@{Gradient\+Waveform}} +\subsubsection{\texorpdfstring{update\+\_\+phase\+\_\+shift()}{update\_phase\_shift()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily void Gradient\+Waveform\+::update\+\_\+phase\+\_\+shift (\begin{DoxyParamCaption}\item[{double}]{time\+\_\+step, }\item[{Eigen\+::\+Matrix3\+Xd}]{trajectory }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + + +\begin{DoxyParams}{Parameters} +{\em i} & updated the phase shift over a whole trajectory \\ +\hline +\end{DoxyParams} + + +Implements \hyperlink{class_simulable_sequence_a175197d165ee7852094bc70cadc59589}{Simulable\+Sequence}. + +\mbox{\Hypertarget{class_gradient_waveform_a7421301b24b6c98e28ef9430287cdf8e}\label{class_gradient_waveform_a7421301b24b6c98e28ef9430287cdf8e}} +\index{Gradient\+Waveform@{Gradient\+Waveform}!update\+\_\+phase\+\_\+shift@{update\+\_\+phase\+\_\+shift}} +\index{update\+\_\+phase\+\_\+shift@{update\+\_\+phase\+\_\+shift}!Gradient\+Waveform@{Gradient\+Waveform}} +\subsubsection{\texorpdfstring{update\+\_\+phase\+\_\+shift()}{update\_phase\_shift()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily void Gradient\+Waveform\+::update\+\_\+phase\+\_\+shift (\begin{DoxyParamCaption}\item[{double}]{dt, }\item[{double}]{dt\+\_\+last, }\item[{\hyperlink{class_walker}{Walker}}]{walker }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + + +\begin{DoxyParams}{Parameters} +{\em i} & updated walker \\ +\hline +\end{DoxyParams} + + +Implements \hyperlink{class_simulable_sequence_ad7b2a30f563343aa65489aa553d4df63}{Simulable\+Sequence}. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_gradient_waveform_a3eacca54a58dc574384f07899a9a6da3}\label{class_gradient_waveform_a3eacca54a58dc574384f07899a9a6da3}} +\index{Gradient\+Waveform@{Gradient\+Waveform}!dt@{dt}} +\index{dt@{dt}!Gradient\+Waveform@{Gradient\+Waveform}} +\subsubsection{\texorpdfstring{dt}{dt}} +{\footnotesize\ttfamily double Gradient\+Waveform\+::dt} + +individual time steps (miliseconds) of the wave \mbox{\Hypertarget{class_gradient_waveform_a8608216ab7e5f002dcf6af4f869c5d27}\label{class_gradient_waveform_a8608216ab7e5f002dcf6af4f869c5d27}} +\index{Gradient\+Waveform@{Gradient\+Waveform}!dyn\+\_\+duration@{dyn\+\_\+duration}} +\index{dyn\+\_\+duration@{dyn\+\_\+duration}!Gradient\+Waveform@{Gradient\+Waveform}} +\subsubsection{\texorpdfstring{dyn\+\_\+duration}{dyn\_duration}} +{\footnotesize\ttfamily double Gradient\+Waveform\+::dyn\+\_\+duration} + +simulation duration (miliseconds) \mbox{\Hypertarget{class_gradient_waveform_a712eedb2165b3f889e27244fc9d91ebd}\label{class_gradient_waveform_a712eedb2165b3f889e27244fc9d91ebd}} +\index{Gradient\+Waveform@{Gradient\+Waveform}!scale\+\_\+from\+\_\+stu@{scale\+\_\+from\+\_\+stu}} +\index{scale\+\_\+from\+\_\+stu@{scale\+\_\+from\+\_\+stu}!Gradient\+Waveform@{Gradient\+Waveform}} +\subsubsection{\texorpdfstring{scale\+\_\+from\+\_\+stu}{scale\_from\_stu}} +{\footnotesize\ttfamily bool Gradient\+Waveform\+::scale\+\_\+from\+\_\+stu} + +True if the input is in standar units \mbox{\Hypertarget{class_gradient_waveform_af2f45ff237ba41afe3ff5cedb7c1c966}\label{class_gradient_waveform_af2f45ff237ba41afe3ff5cedb7c1c966}} +\index{Gradient\+Waveform@{Gradient\+Waveform}!T@{T}} +\index{T@{T}!Gradient\+Waveform@{Gradient\+Waveform}} +\subsubsection{\texorpdfstring{T}{T}} +{\footnotesize\ttfamily uint Gradient\+Waveform\+::T} + +num bins (time steps) \mbox{\Hypertarget{class_gradient_waveform_a4e0c0163e36cc017f5b147e9ca3022e0}\label{class_gradient_waveform_a4e0c0163e36cc017f5b147e9ca3022e0}} +\index{Gradient\+Waveform@{Gradient\+Waveform}!TE@{TE}} +\index{TE@{TE}!Gradient\+Waveform@{Gradient\+Waveform}} +\subsubsection{\texorpdfstring{TE}{TE}} +{\footnotesize\ttfamily double Gradient\+Waveform\+::\+TE} + +Time Echo. \mbox{\Hypertarget{class_gradient_waveform_a83a7c844f86acee3b7ab12e7e70202af}\label{class_gradient_waveform_a83a7c844f86acee3b7ab12e7e70202af}} +\index{Gradient\+Waveform@{Gradient\+Waveform}!trajectory@{trajectory}} +\index{trajectory@{trajectory}!Gradient\+Waveform@{Gradient\+Waveform}} +\subsubsection{\texorpdfstring{trajectory}{trajectory}} +{\footnotesize\ttfamily \hyperlink{class_trajectory}{Trajectory} Gradient\+Waveform\+::trajectory} + +If the signal is computed from a .trajfile \mbox{\Hypertarget{class_gradient_waveform_ac2287a6ef99e35f0c1f97fc3ffb37d7b}\label{class_gradient_waveform_ac2287a6ef99e35f0c1f97fc3ffb37d7b}} +\index{Gradient\+Waveform@{Gradient\+Waveform}!wave\+\_\+bins@{wave\+\_\+bins}} +\index{wave\+\_\+bins@{wave\+\_\+bins}!Gradient\+Waveform@{Gradient\+Waveform}} +\subsubsection{\texorpdfstring{wave\+\_\+bins}{wave\_bins}} +{\footnotesize\ttfamily int Gradient\+Waveform\+::wave\+\_\+bins} + +Wave discretization \mbox{\Hypertarget{class_gradient_waveform_a02d695fa36713bd28d3c85d2bb7a877b}\label{class_gradient_waveform_a02d695fa36713bd28d3c85d2bb7a877b}} +\index{Gradient\+Waveform@{Gradient\+Waveform}!wave\+\_\+duration@{wave\+\_\+duration}} +\index{wave\+\_\+duration@{wave\+\_\+duration}!Gradient\+Waveform@{Gradient\+Waveform}} +\subsubsection{\texorpdfstring{wave\+\_\+duration}{wave\_duration}} +{\footnotesize\ttfamily double Gradient\+Waveform\+::wave\+\_\+duration} + +Wave duration (should be less qeual than dyn\+\_\+dur.) \mbox{\Hypertarget{class_gradient_waveform_a565fce08abb28fe26664194c04faeaea}\label{class_gradient_waveform_a565fce08abb28fe26664194c04faeaea}} +\index{Gradient\+Waveform@{Gradient\+Waveform}!waveform@{waveform}} +\index{waveform@{waveform}!Gradient\+Waveform@{Gradient\+Waveform}} +\subsubsection{\texorpdfstring{waveform}{waveform}} +{\footnotesize\ttfamily std\+::vector$<$ std\+::vector$<$float$>$ $>$ Gradient\+Waveform\+::waveform} + +Defined waveforms + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/gradientwaveform.\+h\item +src/gradientwaveform.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_gradient_waveform__coll__graph.md5 b/doc/latex/class_gradient_waveform__coll__graph.md5 new file mode 100644 index 0000000..6e3cba8 --- /dev/null +++ b/doc/latex/class_gradient_waveform__coll__graph.md5 @@ -0,0 +1 @@ +d2086461c6720ea838c551d5408b05ad \ No newline at end of file diff --git a/doc/latex/class_gradient_waveform__coll__graph.pdf b/doc/latex/class_gradient_waveform__coll__graph.pdf new file mode 100644 index 0000000..8490434 Binary files /dev/null and b/doc/latex/class_gradient_waveform__coll__graph.pdf differ diff --git a/doc/latex/class_gradient_waveform__inherit__graph.md5 b/doc/latex/class_gradient_waveform__inherit__graph.md5 new file mode 100644 index 0000000..fa4444c --- /dev/null +++ b/doc/latex/class_gradient_waveform__inherit__graph.md5 @@ -0,0 +1 @@ +44a24d5068b83b8d63ddac304e42bb29 \ No newline at end of file diff --git a/doc/latex/class_gradient_waveform__inherit__graph.pdf b/doc/latex/class_gradient_waveform__inherit__graph.pdf new file mode 100644 index 0000000..9cff53e Binary files /dev/null and b/doc/latex/class_gradient_waveform__inherit__graph.pdf differ diff --git a/doc/latex/class_m_c_simulation.tex b/doc/latex/class_m_c_simulation.tex new file mode 100644 index 0000000..5cddae6 --- /dev/null +++ b/doc/latex/class_m_c_simulation.tex @@ -0,0 +1,191 @@ +\hypertarget{class_m_c_simulation}{}\section{M\+C\+Simulation Class Reference} +\label{class_m_c_simulation}\index{M\+C\+Simulation@{M\+C\+Simulation}} + + +Aplication Main Class ======================================================================================/. + + + + +{\ttfamily \#include $<$mcsimulation.\+h$>$} + + + +Collaboration diagram for M\+C\+Simulation\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{class_m_c_simulation__coll__graph} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{class_m_c_simulation_a89f56682a13f0bcb2c53d191ca336e35}{M\+C\+Simulation} () +\begin{DoxyCompactList}\small\item\em Default constructor. Intialize everything with 0\textquotesingle{}s and N\+U\+LL states, object indexes are set to -\/1. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_m_c_simulation_a5b2bdb95de31810a0d2ee54174e83f98}\label{class_m_c_simulation_a5b2bdb95de31810a0d2ee54174e83f98}} +{\bfseries M\+C\+Simulation} (std\+::string config\+\_\+file) +\item +\mbox{\Hypertarget{class_m_c_simulation_a76ac3d50d345d249cacc913273b2bd34}\label{class_m_c_simulation_a76ac3d50d345d249cacc913273b2bd34}} +{\bfseries M\+C\+Simulation} (\hyperlink{class_parameters}{Parameters} \¶ms\+\_\+) +\item +\mbox{\Hypertarget{class_m_c_simulation_a859c6ddce0e3c07db0159b2e4906b7ca}\label{class_m_c_simulation_a859c6ddce0e3c07db0159b2e4906b7ca}} +\hyperlink{class_m_c_simulation_a859c6ddce0e3c07db0159b2e4906b7ca}{$\sim$\+M\+C\+Simulation} () +\begin{DoxyCompactList}\small\item\em Main destructor. Frees dynamicly allocated memory instances. \end{DoxyCompactList}\item +void \hyperlink{class_m_c_simulation_aa305f18bd48dd26f916cc9c006a8dec8}{start\+Simulation} () +\begin{DoxyCompactList}\small\item\em Warp function. Calls the dynamic\+Engine\textquotesingle{}s native \hyperlink{class_dynamics_simulation_a00cf4a6cbde1ef708fdbd58e8d8a7727}{Dynamics\+Simulation\+::start\+Simulation} function. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_m_c_simulation_aff302334b2743a583b5d6f642d841f2f}\label{class_m_c_simulation_aff302334b2743a583b5d6f642d841f2f}} +double {\bfseries get\+Expected\+Freee\+Decay} (unsigned i) +\item +void \hyperlink{class_m_c_simulation_aa60234e3f6d2a100c8b03e4f304b07f4}{ini\+Obstacles} () +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +int \hyperlink{class_m_c_simulation_aff828a83a905ae188146d3ffaa12a1bc}{id} +\item +\hyperlink{class_dynamics_simulation}{Dynamics\+Simulation} $\ast$ \hyperlink{class_m_c_simulation_ac453455b2dfb994b7b1a4b7823bd3dc9}{dynamics\+Engine} +\item +\hyperlink{class_scheme}{Scheme} \hyperlink{class_m_c_simulation_a87ba6332f1f49024a442981b477360c4}{scheme} +\item +\hyperlink{class_parameters}{Parameters} \hyperlink{class_m_c_simulation_aecb8470cb31fa67e38c5d5acd5a80bef}{params} +\item +\hyperlink{class_simulable_sequence}{Simulable\+Sequence} $\ast$ \hyperlink{class_m_c_simulation_a7e2496127af6436d64bca7f52bc40c82}{data\+Synth} +\item +std\+::vector$<$ std\+::vector$<$ float $>$ $>$ \hyperlink{class_m_c_simulation_af53387a4edc7627a77ff03a562f8befa}{ini\+\_\+walker\+\_\+positions} +\item +std\+::vector$<$ \hyperlink{class_p_l_y_obstacle}{P\+L\+Y\+Obstacle} $>$ $\ast$ \hyperlink{class_m_c_simulation_a8c21d28d54c9c947f6c5465657019ed4}{ply\+Obstacles\+\_\+list} +\item +std\+::vector$<$ \hyperlink{class_cylinder}{Cylinder} $>$ $\ast$ \hyperlink{class_m_c_simulation_a36909899f67439feed1a980037ea8c03}{cylinders\+\_\+list} +\end{DoxyCompactItemize} +\subsection*{Static Public Attributes} +\begin{DoxyCompactItemize} +\item +static int \hyperlink{class_m_c_simulation_aa3853b6cec83b055593cbf58def0c164}{count} =0 +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Aplication Main Class ======================================================================================/. + +Main implementation class. Incorporates the particle\textquotesingle{}s dynamics and the data synthesis. \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +November 2016 \subsection*{1.\+44.\+00 } +\end{DoxyDate} + + +Main implementation class. Incorporates the particle\textquotesingle{}s dynamics and the data synthesis. + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_m_c_simulation_a89f56682a13f0bcb2c53d191ca336e35}\label{class_m_c_simulation_a89f56682a13f0bcb2c53d191ca336e35}} +\index{M\+C\+Simulation@{M\+C\+Simulation}!M\+C\+Simulation@{M\+C\+Simulation}} +\index{M\+C\+Simulation@{M\+C\+Simulation}!M\+C\+Simulation@{M\+C\+Simulation}} +\subsubsection{\texorpdfstring{M\+C\+Simulation()}{MCSimulation()}} +{\footnotesize\ttfamily M\+C\+Simulation\+::\+M\+C\+Simulation (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Default constructor. Intialize everything with 0\textquotesingle{}s and N\+U\+LL states, object indexes are set to -\/1. + +Secondary constructor. + +Main constructor. + + +\begin{DoxyParams}{Parameters} +{\em config\+\_\+file} & .conf file name with the full set of experiments parameters.\\ +\hline +{\em params\+\_\+} & preloaded simulation parameters. \\ +\hline +\end{DoxyParams} + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_m_c_simulation_aa60234e3f6d2a100c8b03e4f304b07f4}\label{class_m_c_simulation_aa60234e3f6d2a100c8b03e4f304b07f4}} +\index{M\+C\+Simulation@{M\+C\+Simulation}!ini\+Obstacles@{ini\+Obstacles}} +\index{ini\+Obstacles@{ini\+Obstacles}!M\+C\+Simulation@{M\+C\+Simulation}} +\subsubsection{\texorpdfstring{ini\+Obstacles()}{iniObstacles()}} +{\footnotesize\ttfamily void M\+C\+Simulation\+::ini\+Obstacles (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +Adds all the obstacles defined in the confiuration files. \mbox{\Hypertarget{class_m_c_simulation_aa305f18bd48dd26f916cc9c006a8dec8}\label{class_m_c_simulation_aa305f18bd48dd26f916cc9c006a8dec8}} +\index{M\+C\+Simulation@{M\+C\+Simulation}!start\+Simulation@{start\+Simulation}} +\index{start\+Simulation@{start\+Simulation}!M\+C\+Simulation@{M\+C\+Simulation}} +\subsubsection{\texorpdfstring{start\+Simulation()}{startSimulation()}} +{\footnotesize\ttfamily M\+C\+Simulation\+::start\+Simulation (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Warp function. Calls the dynamic\+Engine\textquotesingle{}s native \hyperlink{class_dynamics_simulation_a00cf4a6cbde1ef708fdbd58e8d8a7727}{Dynamics\+Simulation\+::start\+Simulation} function. + +\begin{DoxySeeAlso}{See also} +\+:\hyperlink{class_dynamics_simulation}{Dynamics\+Simulation}\+:. +\end{DoxySeeAlso} + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_m_c_simulation_aa3853b6cec83b055593cbf58def0c164}\label{class_m_c_simulation_aa3853b6cec83b055593cbf58def0c164}} +\index{M\+C\+Simulation@{M\+C\+Simulation}!count@{count}} +\index{count@{count}!M\+C\+Simulation@{M\+C\+Simulation}} +\subsubsection{\texorpdfstring{count}{count}} +{\footnotesize\ttfamily int M\+C\+Simulation\+::count =0\hspace{0.3cm}{\ttfamily [static]}} + +count of \mbox{\Hypertarget{class_m_c_simulation_a36909899f67439feed1a980037ea8c03}\label{class_m_c_simulation_a36909899f67439feed1a980037ea8c03}} +\index{M\+C\+Simulation@{M\+C\+Simulation}!cylinders\+\_\+list@{cylinders\+\_\+list}} +\index{cylinders\+\_\+list@{cylinders\+\_\+list}!M\+C\+Simulation@{M\+C\+Simulation}} +\subsubsection{\texorpdfstring{cylinders\+\_\+list}{cylinders\_list}} +{\footnotesize\ttfamily std\+::vector$<$\hyperlink{class_cylinder}{Cylinder}$>$$\ast$ M\+C\+Simulation\+::cylinders\+\_\+list} + +pointer to a vector with all the instances of Cylinders \mbox{\Hypertarget{class_m_c_simulation_a7e2496127af6436d64bca7f52bc40c82}\label{class_m_c_simulation_a7e2496127af6436d64bca7f52bc40c82}} +\index{M\+C\+Simulation@{M\+C\+Simulation}!data\+Synth@{data\+Synth}} +\index{data\+Synth@{data\+Synth}!M\+C\+Simulation@{M\+C\+Simulation}} +\subsubsection{\texorpdfstring{data\+Synth}{dataSynth}} +{\footnotesize\ttfamily \hyperlink{class_simulable_sequence}{Simulable\+Sequence}$\ast$ M\+C\+Simulation\+::data\+Synth} + +Simuleable sequence instance, P\+G\+SE and General Wavefroms only \mbox{\Hypertarget{class_m_c_simulation_ac453455b2dfb994b7b1a4b7823bd3dc9}\label{class_m_c_simulation_ac453455b2dfb994b7b1a4b7823bd3dc9}} +\index{M\+C\+Simulation@{M\+C\+Simulation}!dynamics\+Engine@{dynamics\+Engine}} +\index{dynamics\+Engine@{dynamics\+Engine}!M\+C\+Simulation@{M\+C\+Simulation}} +\subsubsection{\texorpdfstring{dynamics\+Engine}{dynamicsEngine}} +{\footnotesize\ttfamily \hyperlink{class_dynamics_simulation}{Dynamics\+Simulation}$\ast$ M\+C\+Simulation\+::dynamics\+Engine} + +Instance for the particle dynamics \mbox{\Hypertarget{class_m_c_simulation_aff828a83a905ae188146d3ffaa12a1bc}\label{class_m_c_simulation_aff828a83a905ae188146d3ffaa12a1bc}} +\index{M\+C\+Simulation@{M\+C\+Simulation}!id@{id}} +\index{id@{id}!M\+C\+Simulation@{M\+C\+Simulation}} +\subsubsection{\texorpdfstring{id}{id}} +{\footnotesize\ttfamily int M\+C\+Simulation\+::id} + +Unique id of the simulation \mbox{\Hypertarget{class_m_c_simulation_af53387a4edc7627a77ff03a562f8befa}\label{class_m_c_simulation_af53387a4edc7627a77ff03a562f8befa}} +\index{M\+C\+Simulation@{M\+C\+Simulation}!ini\+\_\+walker\+\_\+positions@{ini\+\_\+walker\+\_\+positions}} +\index{ini\+\_\+walker\+\_\+positions@{ini\+\_\+walker\+\_\+positions}!M\+C\+Simulation@{M\+C\+Simulation}} +\subsubsection{\texorpdfstring{ini\+\_\+walker\+\_\+positions}{ini\_walker\_positions}} +{\footnotesize\ttfamily std\+::vector$<$std\+::vector$<$float$>$ $>$ M\+C\+Simulation\+::ini\+\_\+walker\+\_\+positions} + +patch for regular sampling in a subdivision \mbox{\Hypertarget{class_m_c_simulation_aecb8470cb31fa67e38c5d5acd5a80bef}\label{class_m_c_simulation_aecb8470cb31fa67e38c5d5acd5a80bef}} +\index{M\+C\+Simulation@{M\+C\+Simulation}!params@{params}} +\index{params@{params}!M\+C\+Simulation@{M\+C\+Simulation}} +\subsubsection{\texorpdfstring{params}{params}} +{\footnotesize\ttfamily \hyperlink{class_parameters}{Parameters} M\+C\+Simulation\+::params} + +\hyperlink{class_parameters}{Parameters} instance1 \begin{DoxySeeAlso}{See also} +\+:\hyperlink{class_parameters}{Parameters}\+: +\end{DoxySeeAlso} +\mbox{\Hypertarget{class_m_c_simulation_a8c21d28d54c9c947f6c5465657019ed4}\label{class_m_c_simulation_a8c21d28d54c9c947f6c5465657019ed4}} +\index{M\+C\+Simulation@{M\+C\+Simulation}!ply\+Obstacles\+\_\+list@{ply\+Obstacles\+\_\+list}} +\index{ply\+Obstacles\+\_\+list@{ply\+Obstacles\+\_\+list}!M\+C\+Simulation@{M\+C\+Simulation}} +\subsubsection{\texorpdfstring{ply\+Obstacles\+\_\+list}{plyObstacles\_list}} +{\footnotesize\ttfamily std\+::vector$<$\hyperlink{class_p_l_y_obstacle}{P\+L\+Y\+Obstacle}$>$$\ast$ M\+C\+Simulation\+::ply\+Obstacles\+\_\+list} + +pointer to a vector with all the instances of P\+L\+Y\+Obstacles \mbox{\Hypertarget{class_m_c_simulation_a87ba6332f1f49024a442981b477360c4}\label{class_m_c_simulation_a87ba6332f1f49024a442981b477360c4}} +\index{M\+C\+Simulation@{M\+C\+Simulation}!scheme@{scheme}} +\index{scheme@{scheme}!M\+C\+Simulation@{M\+C\+Simulation}} +\subsubsection{\texorpdfstring{scheme}{scheme}} +{\footnotesize\ttfamily \hyperlink{class_scheme}{Scheme} M\+C\+Simulation\+::scheme} + +\hyperlink{class_scheme}{Scheme} file, only P\+G\+SE in camino format is supported in 0.\+2 + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/mcsimulation.\+h\item +src/mcsimulation.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_m_c_simulation__coll__graph.md5 b/doc/latex/class_m_c_simulation__coll__graph.md5 new file mode 100644 index 0000000..2c46c3a --- /dev/null +++ b/doc/latex/class_m_c_simulation__coll__graph.md5 @@ -0,0 +1 @@ +630912b20011a79676b588cfa73b3fe9 \ No newline at end of file diff --git a/doc/latex/class_m_c_simulation__coll__graph.pdf b/doc/latex/class_m_c_simulation__coll__graph.pdf new file mode 100644 index 0000000..fcc1df1 Binary files /dev/null and b/doc/latex/class_m_c_simulation__coll__graph.pdf differ diff --git a/doc/latex/class_obstacle.tex b/doc/latex/class_obstacle.tex new file mode 100644 index 0000000..6f95b84 --- /dev/null +++ b/doc/latex/class_obstacle.tex @@ -0,0 +1,134 @@ +\hypertarget{class_obstacle}{}\section{Obstacle Class Reference} +\label{class_obstacle}\index{Obstacle@{Obstacle}} + + +\hyperlink{class_obstacle}{Obstacle} Base Class ==============================================================================/. + + + + +{\ttfamily \#include $<$obstacle.\+h$>$} + + + +Inheritance diagram for Obstacle\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=226pt]{class_obstacle__inherit__graph} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_obstacle_a8f734072321fa06a7b7dae2d5f50f352}\label{class_obstacle_a8f734072321fa06a7b7dae2d5f50f352}} +\hyperlink{class_obstacle_a8f734072321fa06a7b7dae2d5f50f352}{Obstacle} () +\begin{DoxyCompactList}\small\item\em Default constructor. Does nothing. \end{DoxyCompactList}\item +bool \hyperlink{class_obstacle_af11af63f11595304ff6d5c1785c03da5}{check\+Collision} (\hyperlink{class_walker}{Walker} \&walker, Eigen\+::\+Array3d \&step, const double \&step\+\_\+lenght, \hyperlink{class_collision}{Collision} \&colision) +\begin{DoxyCompactList}\small\item\em Basic collision function. Returns the if there was any collision on against the obstacle. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_obstacle_a5316aabce6765c943d131aa3d5018f8d}\label{class_obstacle_a5316aabce6765c943d131aa3d5018f8d}} +void {\bfseries elastic\+Bounce\+Agains\+Plane} (Eigen\+::\+Vector3d \&ray\+\_\+origin, Eigen\+::\+Vector3d \&normal, double \&t, Eigen\+::\+Vector3d \&step) +\item +double \hyperlink{class_obstacle_a742e9d6ea940b33545cef4f1f2d58566}{min\+Distance} (\hyperlink{class_walker}{Walker} \&w) +\begin{DoxyCompactList}\small\item\em Returns the minimum distance of collision. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +int \hyperlink{class_obstacle_a02e049a3395138a0dc6194af0112e2b0}{id} +\item +int \hyperlink{class_obstacle_aaa096d441fd095c7bbe924d1a78a8e23}{count\+\_\+perc\+\_\+crossings} +\item +double \hyperlink{class_obstacle_a7afe63ee05b482c526591c981b22cf54}{percolation} +\item +double \hyperlink{class_obstacle_a374f9b4486f63abce9696f5fe3a13e8e}{T2} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +\hyperlink{class_obstacle}{Obstacle} Base Class ==============================================================================/. + +Father class to define the base of any other obstacle (wall or substrate) \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +November 2016 \subsection*{1.\+42 } +\end{DoxyDate} + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_obstacle_af11af63f11595304ff6d5c1785c03da5}\label{class_obstacle_af11af63f11595304ff6d5c1785c03da5}} +\index{Obstacle@{Obstacle}!check\+Collision@{check\+Collision}} +\index{check\+Collision@{check\+Collision}!Obstacle@{Obstacle}} +\subsubsection{\texorpdfstring{check\+Collision()}{checkCollision()}} +{\footnotesize\ttfamily Obstacle\+::check\+Collision (\begin{DoxyParamCaption}\item[{\hyperlink{class_walker}{Walker} \&}]{walker, }\item[{Eigen\+::\+Array3d \&}]{step, }\item[{const double \&}]{step\+\_\+lenght, }\item[{\hyperlink{class_collision}{Collision} \&}]{colision }\end{DoxyParamCaption})} + + + +Basic collision function. Returns the if there was any collision on against the obstacle. + + +\begin{DoxyParams}{Parameters} +{\em walker,\hyperlink{class_walker}{Walker}} & instance in the simulation. \\ +\hline +{\em 3d} & step. Is assumed to be normalized. \\ +\hline +{\em step\+\_\+lenght,length} & used as the maximum step collision distance. \\ +\hline +{\em colilsion,\hyperlink{class_collision}{Collision}} & instance to save the collision (if any) details. \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +true only if there was a Collision\+::hit status. +\end{DoxyReturn} +\begin{DoxySeeAlso}{See also} +\hyperlink{class_collision}{Collision}. +\end{DoxySeeAlso} +\mbox{\Hypertarget{class_obstacle_a742e9d6ea940b33545cef4f1f2d58566}\label{class_obstacle_a742e9d6ea940b33545cef4f1f2d58566}} +\index{Obstacle@{Obstacle}!min\+Distance@{min\+Distance}} +\index{min\+Distance@{min\+Distance}!Obstacle@{Obstacle}} +\subsubsection{\texorpdfstring{min\+Distance()}{minDistance()}} +{\footnotesize\ttfamily double Obstacle\+::min\+Distance (\begin{DoxyParamCaption}\item[{\hyperlink{class_walker}{Walker} \&}]{w }\end{DoxyParamCaption})} + + + +Returns the minimum distance of collision. + + +\begin{DoxyParams}{Parameters} +{\em walker} & to find the (closest) distance. \\ +\hline +\end{DoxyParams} + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_obstacle_aaa096d441fd095c7bbe924d1a78a8e23}\label{class_obstacle_aaa096d441fd095c7bbe924d1a78a8e23}} +\index{Obstacle@{Obstacle}!count\+\_\+perc\+\_\+crossings@{count\+\_\+perc\+\_\+crossings}} +\index{count\+\_\+perc\+\_\+crossings@{count\+\_\+perc\+\_\+crossings}!Obstacle@{Obstacle}} +\subsubsection{\texorpdfstring{count\+\_\+perc\+\_\+crossings}{count\_perc\_crossings}} +{\footnotesize\ttfamily int Obstacle\+::count\+\_\+perc\+\_\+crossings} + +Auxiliar value to count the number of percolatin crossings in a simulation \mbox{\Hypertarget{class_obstacle_a02e049a3395138a0dc6194af0112e2b0}\label{class_obstacle_a02e049a3395138a0dc6194af0112e2b0}} +\index{Obstacle@{Obstacle}!id@{id}} +\index{id@{id}!Obstacle@{Obstacle}} +\subsubsection{\texorpdfstring{id}{id}} +{\footnotesize\ttfamily int Obstacle\+::id} + +Unique id of the simulation \mbox{\Hypertarget{class_obstacle_a7afe63ee05b482c526591c981b22cf54}\label{class_obstacle_a7afe63ee05b482c526591c981b22cf54}} +\index{Obstacle@{Obstacle}!percolation@{percolation}} +\index{percolation@{percolation}!Obstacle@{Obstacle}} +\subsubsection{\texorpdfstring{percolation}{percolation}} +{\footnotesize\ttfamily double Obstacle\+::percolation} + +Percolation value between 0 and 1. \mbox{\Hypertarget{class_obstacle_a374f9b4486f63abce9696f5fe3a13e8e}\label{class_obstacle_a374f9b4486f63abce9696f5fe3a13e8e}} +\index{Obstacle@{Obstacle}!T2@{T2}} +\index{T2@{T2}!Obstacle@{Obstacle}} +\subsubsection{\texorpdfstring{T2}{T2}} +{\footnotesize\ttfamily double Obstacle\+::\+T2} + +T2 decay, not used by default + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/obstacle.\+h\item +src/obstacle.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_obstacle__inherit__graph.md5 b/doc/latex/class_obstacle__inherit__graph.md5 new file mode 100644 index 0000000..9bd8ad2 --- /dev/null +++ b/doc/latex/class_obstacle__inherit__graph.md5 @@ -0,0 +1 @@ +0c238ea9873fdf0139daf8f68bce7d5b \ No newline at end of file diff --git a/doc/latex/class_obstacle__inherit__graph.pdf b/doc/latex/class_obstacle__inherit__graph.pdf new file mode 100644 index 0000000..4551c9f Binary files /dev/null and b/doc/latex/class_obstacle__inherit__graph.pdf differ diff --git a/doc/latex/class_p_g_s_e_sequence.tex b/doc/latex/class_p_g_s_e_sequence.tex new file mode 100644 index 0000000..78f9d49 --- /dev/null +++ b/doc/latex/class_p_g_s_e_sequence.tex @@ -0,0 +1,162 @@ +\hypertarget{class_p_g_s_e_sequence}{}\section{P\+G\+S\+E\+Sequence Class Reference} +\label{class_p_g_s_e_sequence}\index{P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}} + + +Inheritance diagram for P\+G\+S\+E\+Sequence\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=183pt]{class_p_g_s_e_sequence__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for P\+G\+S\+E\+Sequence\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=262pt]{class_p_g_s_e_sequence__coll__graph} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_a29db64fbd60c54c191e8197e1818dce0}\label{class_p_g_s_e_sequence_a29db64fbd60c54c191e8197e1818dce0}} +\hyperlink{class_p_g_s_e_sequence_a29db64fbd60c54c191e8197e1818dce0}{P\+G\+S\+E\+Sequence} () +\begin{DoxyCompactList}\small\item\em Default constructor, set default N\+U\+LL values. Not to be used. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_a31bcb2e91e27823bbe71904e180f7de9}\label{class_p_g_s_e_sequence_a31bcb2e91e27823bbe71904e180f7de9}} +\hyperlink{class_p_g_s_e_sequence_a31bcb2e91e27823bbe71904e180f7de9}{P\+G\+S\+E\+Sequence} (\hyperlink{class_scheme}{Scheme} scheme\+\_\+) +\begin{DoxyCompactList}\small\item\em Main constructor. Takes a pre-\/loaded \hyperlink{class_scheme}{Scheme} file. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_ab278a413c31a67f82712590897a556cb}\label{class_p_g_s_e_sequence_ab278a413c31a67f82712590897a556cb}} +\hyperlink{class_p_g_s_e_sequence_ab278a413c31a67f82712590897a556cb}{P\+G\+S\+E\+Sequence} (\hyperlink{class_scheme}{Scheme} scheme\+\_\+, const char $\ast$traj\+\_\+file\+\_\+name) +\begin{DoxyCompactList}\small\item\em Main constructor. Takes a pre-\/loaded \hyperlink{class_scheme}{Scheme} file and a traj file name. if this argument is passed a traj file is should be written. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_a262f1156c51983fba9b9a6b666dd2e07}\label{class_p_g_s_e_sequence_a262f1156c51983fba9b9a6b666dd2e07}} +\hyperlink{class_p_g_s_e_sequence_a262f1156c51983fba9b9a6b666dd2e07}{P\+G\+S\+E\+Sequence} (const char $\ast$scheme\+\_\+file\+\_\+name) +\begin{DoxyCompactList}\small\item\em Constructor. Takes a the scheme file name to be loaded. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_a1eb4e53eb0769b16eb9bb2156c769644}\label{class_p_g_s_e_sequence_a1eb4e53eb0769b16eb9bb2156c769644}} +\hyperlink{class_p_g_s_e_sequence_a1eb4e53eb0769b16eb9bb2156c769644}{P\+G\+S\+E\+Sequence} (const char $\ast$scheme\+\_\+file\+\_\+name, const char $\ast$traj\+\_\+file\+\_\+name) +\begin{DoxyCompactList}\small\item\em Constructor. Takes a scheme file name to be loaded and atraj file name. if this argument is passed a traj file is should be written. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_a7e5815e4ae0b3a6d42c45322fc69fdd6}\label{class_p_g_s_e_sequence_a7e5815e4ae0b3a6d42c45322fc69fdd6}} +\hyperlink{class_p_g_s_e_sequence_a7e5815e4ae0b3a6d42c45322fc69fdd6}{$\sim$\+P\+G\+S\+E\+Sequence} () +\begin{DoxyCompactList}\small\item\em Destuctor. Does nothing. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_a3f2a705b7d3312944630f3d7f639e8e4}\label{class_p_g_s_e_sequence_a3f2a705b7d3312944630f3d7f639e8e4}} +void \hyperlink{class_p_g_s_e_sequence_a3f2a705b7d3312944630f3d7f639e8e4}{get\+Grad\+Impulse} (int i, double t, double t\+Last, Eigen\+::\+Vector3d \&Gdt) +\begin{DoxyCompactList}\small\item\em For using w/o the adt array. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_a9985ead781333f782d1dee54482eb0d2}\label{class_p_g_s_e_sequence_a9985ead781333f782d1dee54482eb0d2}} +void \hyperlink{class_p_g_s_e_sequence_a9985ead781333f782d1dee54482eb0d2}{get\+Grad\+Impuse} (int i, double t, Eigen\+::\+Vector3d Gdt) +\begin{DoxyCompactList}\small\item\em For using with the adt array. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_a8b0671a505f79a601d3d4d2d9b7f36cc}\label{class_p_g_s_e_sequence_a8b0671a505f79a601d3d4d2d9b7f36cc}} +double \hyperlink{class_p_g_s_e_sequence_a8b0671a505f79a601d3d4d2d9b7f36cc}{getb\+Value} (unsigned) +\begin{DoxyCompactList}\small\item\em Analytical defined b-\/value. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_a375c8a943f4857a323ffc404394b5d8a}\label{class_p_g_s_e_sequence_a375c8a943f4857a323ffc404394b5d8a}} +double \hyperlink{class_p_g_s_e_sequence_a375c8a943f4857a323ffc404394b5d8a}{get\+Free\+Decay} (unsigned i, double D) +\begin{DoxyCompactList}\small\item\em Expected free Decay. \end{DoxyCompactList}\item +double \hyperlink{class_p_g_s_e_sequence_a1373f02bffedb1e934818ae8d4fb8939}{get\+Numericalb\+Value} (unsigned) +\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_aec05e76b5c7b3361bd3e68301b262a0a}\label{class_p_g_s_e_sequence_aec05e76b5c7b3361bd3e68301b262a0a}} +void \hyperlink{class_p_g_s_e_sequence_aec05e76b5c7b3361bd3e68301b262a0a}{get\+D\+W\+I\+Signal} () +\begin{DoxyCompactList}\small\item\em Computes de DW signal from a trajfile. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_a22005e67e3513690f9e46b1d531481b0}\label{class_p_g_s_e_sequence_a22005e67e3513690f9e46b1d531481b0}} +void \hyperlink{class_p_g_s_e_sequence_a22005e67e3513690f9e46b1d531481b0}{read\+Scheme\+File} () +\begin{DoxyCompactList}\small\item\em reads the scheme files \end{DoxyCompactList}\item +virtual void \hyperlink{class_p_g_s_e_sequence_a6914efd208eab28a1ee6a3f28ca65478}{update\+\_\+phase\+\_\+shift} (double dt, double dt\+\_\+last, \hyperlink{class_walker}{Walker} walker) +\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_a850a2f22cdf8b420888cfa906e03e078}\label{class_p_g_s_e_sequence_a850a2f22cdf8b420888cfa906e03e078}} +virtual void \hyperlink{class_p_g_s_e_sequence_a850a2f22cdf8b420888cfa906e03e078}{update\+\_\+phase\+\_\+shift} (double time\+\_\+step, Eigen\+::\+Matrix3\+Xd \hyperlink{class_p_g_s_e_sequence_a0fd0fb458384bfb65070fdab5165dde5}{trajectory}) +\begin{DoxyCompactList}\small\item\em Updates the phase shift using the full stored trajectory. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_ae2b79f12ccd2f2446a498cb51f45e88d}\label{class_p_g_s_e_sequence_ae2b79f12ccd2f2446a498cb51f45e88d}} +virtual void \hyperlink{class_p_g_s_e_sequence_ae2b79f12ccd2f2446a498cb51f45e88d}{update\+\_\+\+D\+W\+I\+\_\+signal} (\hyperlink{class_walker}{Walker} \&walker) +\begin{DoxyCompactList}\small\item\em Updates the D\+WI signal using the cumulated phase shift. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_a885a0415519683a7fbfa1883f7f3d807}\label{class_p_g_s_e_sequence_a885a0415519683a7fbfa1883f7f3d807}} +double \hyperlink{class_p_g_s_e_sequence_a885a0415519683a7fbfa1883f7f3d807}{get\+\_\+adt} (int grad\+\_\+index, double t, double t\+Last) +\begin{DoxyCompactList}\small\item\em computes de signal value and sign in a certain time step. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_afa9e363ef76474d5e2495407034a10d4}\label{class_p_g_s_e_sequence_afa9e363ef76474d5e2495407034a10d4}} +double \hyperlink{class_p_g_s_e_sequence_afa9e363ef76474d5e2495407034a10d4}{print\+\_\+adt\+\_\+and\+\_\+dt} (int grad\+\_\+index, double t, double t\+Last) +\begin{DoxyCompactList}\small\item\em prints the array adt in the format (). \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_a89f9bf116876b04403058a240a91efa3}\label{class_p_g_s_e_sequence_a89f9bf116876b04403058a240a91efa3}} +virtual void \hyperlink{class_p_g_s_e_sequence_a89f9bf116876b04403058a240a91efa3}{set\+Number\+Of\+Steps} (unsigned \hyperlink{class_p_g_s_e_sequence_a07e27e6e8a8506521386a291d62e8423}{T}) +\begin{DoxyCompactList}\small\item\em Set the number of time steps if they are known. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_g_s_e_sequence_ac115d93aabb283f19568f55493d57ded}\label{class_p_g_s_e_sequence_ac115d93aabb283f19568f55493d57ded}} +virtual void \hyperlink{class_p_g_s_e_sequence_ac115d93aabb283f19568f55493d57ded}{compute\+Dynamic\+Time\+Steps} () +\begin{DoxyCompactList}\small\item\em Compute the time for all the steps when they are not constant. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +double \hyperlink{class_p_g_s_e_sequence_a06df939859fd2ed6104bfee584f893a1}{TE} +\item +int \hyperlink{class_p_g_s_e_sequence_a07e27e6e8a8506521386a291d62e8423}{T} +\item +double \hyperlink{class_p_g_s_e_sequence_a0c7e884c3b71cbcc04d6cb2d5f2a5eb9}{dyn\+\_\+duration} +\item +std\+::vector$<$ std\+::vector$<$ double $>$ $>$ \hyperlink{class_p_g_s_e_sequence_a7349d86720a34e75eaf578fdfd3caeeb}{scheme} +\item +\hyperlink{class_trajectory}{Trajectory} \hyperlink{class_p_g_s_e_sequence_a0fd0fb458384bfb65070fdab5165dde5}{trajectory} +\end{DoxyCompactItemize} + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_p_g_s_e_sequence_a1373f02bffedb1e934818ae8d4fb8939}\label{class_p_g_s_e_sequence_a1373f02bffedb1e934818ae8d4fb8939}} +\index{P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}!get\+Numericalb\+Value@{get\+Numericalb\+Value}} +\index{get\+Numericalb\+Value@{get\+Numericalb\+Value}!P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}} +\subsubsection{\texorpdfstring{get\+Numericalb\+Value()}{getNumericalbValue()}} +{\footnotesize\ttfamily double P\+G\+S\+E\+Sequence\+::get\+Numericalb\+Value (\begin{DoxyParamCaption}\item[{unsigned}]{i }\end{DoxyParamCaption})} + +\begin{DoxyWarning}{Warning} +not implemented yet. +\end{DoxyWarning} +\mbox{\Hypertarget{class_p_g_s_e_sequence_a6914efd208eab28a1ee6a3f28ca65478}\label{class_p_g_s_e_sequence_a6914efd208eab28a1ee6a3f28ca65478}} +\index{P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}!update\+\_\+phase\+\_\+shift@{update\+\_\+phase\+\_\+shift}} +\index{update\+\_\+phase\+\_\+shift@{update\+\_\+phase\+\_\+shift}!P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}} +\subsubsection{\texorpdfstring{update\+\_\+phase\+\_\+shift()}{update\_phase\_shift()}} +{\footnotesize\ttfamily void P\+G\+S\+E\+Sequence\+::update\+\_\+phase\+\_\+shift (\begin{DoxyParamCaption}\item[{double}]{dt, }\item[{double}]{dt\+\_\+last, }\item[{\hyperlink{class_walker}{Walker}}]{walker }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [virtual]}} + + +\begin{DoxyParams}{Parameters} +{\em i} & updated walker \\ +\hline +\end{DoxyParams} + + +Implements \hyperlink{class_simulable_sequence_ad7b2a30f563343aa65489aa553d4df63}{Simulable\+Sequence}. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_p_g_s_e_sequence_a0c7e884c3b71cbcc04d6cb2d5f2a5eb9}\label{class_p_g_s_e_sequence_a0c7e884c3b71cbcc04d6cb2d5f2a5eb9}} +\index{P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}!dyn\+\_\+duration@{dyn\+\_\+duration}} +\index{dyn\+\_\+duration@{dyn\+\_\+duration}!P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}} +\subsubsection{\texorpdfstring{dyn\+\_\+duration}{dyn\_duration}} +{\footnotesize\ttfamily double P\+G\+S\+E\+Sequence\+::dyn\+\_\+duration} + +simulation duration (miliseconds) \mbox{\Hypertarget{class_p_g_s_e_sequence_a7349d86720a34e75eaf578fdfd3caeeb}\label{class_p_g_s_e_sequence_a7349d86720a34e75eaf578fdfd3caeeb}} +\index{P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}!scheme@{scheme}} +\index{scheme@{scheme}!P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}} +\subsubsection{\texorpdfstring{scheme}{scheme}} +{\footnotesize\ttfamily std\+::vector$<$ std\+::vector$<$double$>$ $>$ P\+G\+S\+E\+Sequence\+::scheme} + +\hyperlink{class_scheme}{Scheme} file values \mbox{\Hypertarget{class_p_g_s_e_sequence_a07e27e6e8a8506521386a291d62e8423}\label{class_p_g_s_e_sequence_a07e27e6e8a8506521386a291d62e8423}} +\index{P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}!T@{T}} +\index{T@{T}!P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}} +\subsubsection{\texorpdfstring{T}{T}} +{\footnotesize\ttfamily int P\+G\+S\+E\+Sequence\+::T} + +num bins (time steps) \mbox{\Hypertarget{class_p_g_s_e_sequence_a06df939859fd2ed6104bfee584f893a1}\label{class_p_g_s_e_sequence_a06df939859fd2ed6104bfee584f893a1}} +\index{P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}!TE@{TE}} +\index{TE@{TE}!P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}} +\subsubsection{\texorpdfstring{TE}{TE}} +{\footnotesize\ttfamily double P\+G\+S\+E\+Sequence\+::\+TE} + +Time Echo. \mbox{\Hypertarget{class_p_g_s_e_sequence_a0fd0fb458384bfb65070fdab5165dde5}\label{class_p_g_s_e_sequence_a0fd0fb458384bfb65070fdab5165dde5}} +\index{P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}!trajectory@{trajectory}} +\index{trajectory@{trajectory}!P\+G\+S\+E\+Sequence@{P\+G\+S\+E\+Sequence}} +\subsubsection{\texorpdfstring{trajectory}{trajectory}} +{\footnotesize\ttfamily \hyperlink{class_trajectory}{Trajectory} P\+G\+S\+E\+Sequence\+::trajectory} + +If the signal is computed from a .trajfile + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/pgsesequence.\+h\item +src/pgsesequence.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_p_g_s_e_sequence__coll__graph.md5 b/doc/latex/class_p_g_s_e_sequence__coll__graph.md5 new file mode 100644 index 0000000..fd609c9 --- /dev/null +++ b/doc/latex/class_p_g_s_e_sequence__coll__graph.md5 @@ -0,0 +1 @@ +43eca09d54463c8abd757ba721130a3e \ No newline at end of file diff --git a/doc/latex/class_p_g_s_e_sequence__coll__graph.pdf b/doc/latex/class_p_g_s_e_sequence__coll__graph.pdf new file mode 100644 index 0000000..ae8d706 Binary files /dev/null and b/doc/latex/class_p_g_s_e_sequence__coll__graph.pdf differ diff --git a/doc/latex/class_p_g_s_e_sequence__inherit__graph.md5 b/doc/latex/class_p_g_s_e_sequence__inherit__graph.md5 new file mode 100644 index 0000000..1719431 --- /dev/null +++ b/doc/latex/class_p_g_s_e_sequence__inherit__graph.md5 @@ -0,0 +1 @@ +8d197dc193eb679850857e932d273ab8 \ No newline at end of file diff --git a/doc/latex/class_p_g_s_e_sequence__inherit__graph.pdf b/doc/latex/class_p_g_s_e_sequence__inherit__graph.pdf new file mode 100644 index 0000000..01335f4 Binary files /dev/null and b/doc/latex/class_p_g_s_e_sequence__inherit__graph.pdf differ diff --git a/doc/latex/class_p_l_y_collision_sphere.tex b/doc/latex/class_p_l_y_collision_sphere.tex new file mode 100644 index 0000000..d192bde --- /dev/null +++ b/doc/latex/class_p_l_y_collision_sphere.tex @@ -0,0 +1,133 @@ +\hypertarget{class_p_l_y_collision_sphere}{}\section{P\+L\+Y\+Collision\+Sphere Class Reference} +\label{class_p_l_y_collision_sphere}\index{P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}} + + +Inheritance diagram for P\+L\+Y\+Collision\+Sphere\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=184pt]{class_p_l_y_collision_sphere__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for P\+L\+Y\+Collision\+Sphere\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=184pt]{class_p_l_y_collision_sphere__coll__graph} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +void \hyperlink{class_p_l_y_collision_sphere_adc8f318a913935cdd31d81f1c96192eb}{pop\+From\+Small\+Sphere} (unsigned i, unsigned t) +\begin{DoxyCompactList}\small\item\em This function receives a index from the collision list and moves the value to the last position of the list. then decrease the inner sphere end index. This way this index is no longer considered inner collision list. \end{DoxyCompactList}\item +void \hyperlink{class_p_l_y_collision_sphere_a546ea2c6fe80908502fba0350c4f9726}{push\+To\+Small\+Sphere} (unsigned i, unsigned t) +\begin{DoxyCompactList}\small\item\em This function receives a index from the collision list and moves the value to the last position of the list. then increse the inner sphere end index. This way this index is now included in the inner collision list. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_l_y_collision_sphere_ac9cf3838088310db3dc8f0d282c3c383}\label{class_p_l_y_collision_sphere_ac9cf3838088310db3dc8f0d282c3c383}} +void \hyperlink{class_p_l_y_collision_sphere_ac9cf3838088310db3dc8f0d282c3c383}{pop\+From\+Big\+Sphere} (unsigned i, unsigned t) +\begin{DoxyCompactList}\small\item\em This function receives a index from the collision list and moves the value to the last position of the list. Then decrease the inner sphere end index. This way this index is now excluded in the outer collision list. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_p_l_y_collision_sphere_aa1fe5971687051f0de78a12ee4b31574}\label{class_p_l_y_collision_sphere_aa1fe5971687051f0de78a12ee4b31574}} +void \hyperlink{class_p_l_y_collision_sphere_aa1fe5971687051f0de78a12ee4b31574}{push\+To\+Big\+Sphere} (unsigned i, unsigned t) +\begin{DoxyCompactList}\small\item\em This function receives a index from the collision list and moves the value to the last position of the list. Then increase the inner sphere end index. This way this index is now included in the outer collision list. \end{DoxyCompactList}\item +void \hyperlink{class_p_l_y_collision_sphere_acf52aecaf0bf676087035151e6c662c9}{set\+Big\+Sphere\+Size} (float size) +\item +void \hyperlink{class_p_l_y_collision_sphere_af9ba1a8616bb5703e58f392f45c6c069}{set\+Small\+Sphere\+Size} (float size) +\item +void \hyperlink{class_p_l_y_collision_sphere_a10e46dea74b839faf34872028eafae46}{push\+\_\+ply} (std\+::vector$<$ unsigned $>$ list) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +std\+::vector$<$ unsigned $>$ \hyperlink{class_p_l_y_collision_sphere_a7fd18a4a8a9dbb2f7104f9b9a5dd6766}{small\+\_\+sphere\+\_\+list\+\_\+end} +\item +std\+::vector$<$ unsigned $>$ \hyperlink{class_p_l_y_collision_sphere_aadf7b345b8c91791fa96e00862bc8cbb}{big\+\_\+sphere\+\_\+list\+\_\+end} +\item +std\+::vector$<$ std\+::vector$<$ unsigned $>$ $>$ $\ast$ \hyperlink{class_p_l_y_collision_sphere_a6ef04af98385142ed0b41a2e35f423b9}{collision\+\_\+list} +\end{DoxyCompactItemize} + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_p_l_y_collision_sphere_adc8f318a913935cdd31d81f1c96192eb}\label{class_p_l_y_collision_sphere_adc8f318a913935cdd31d81f1c96192eb}} +\index{P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}!pop\+From\+Small\+Sphere@{pop\+From\+Small\+Sphere}} +\index{pop\+From\+Small\+Sphere@{pop\+From\+Small\+Sphere}!P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{pop\+From\+Small\+Sphere()}{popFromSmallSphere()}} +{\footnotesize\ttfamily void P\+L\+Y\+Collision\+Sphere\+::pop\+From\+Small\+Sphere (\begin{DoxyParamCaption}\item[{unsigned}]{i, }\item[{unsigned}]{t }\end{DoxyParamCaption})} + + + +This function receives a index from the collision list and moves the value to the last position of the list. then decrease the inner sphere end index. This way this index is no longer considered inner collision list. + +Removes one index from the list by moving it to the end of the list and decreading the index. \mbox{\Hypertarget{class_p_l_y_collision_sphere_a10e46dea74b839faf34872028eafae46}\label{class_p_l_y_collision_sphere_a10e46dea74b839faf34872028eafae46}} +\index{P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}!push\+\_\+ply@{push\+\_\+ply}} +\index{push\+\_\+ply@{push\+\_\+ply}!P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{push\+\_\+ply()}{push\_ply()}} +{\footnotesize\ttfamily void P\+L\+Y\+Collision\+Sphere\+::push\+\_\+ply (\begin{DoxyParamCaption}\item[{std\+::vector$<$ unsigned $>$}]{list }\end{DoxyParamCaption})} + + +\begin{DoxyParams}{Parameters} +{\em element} & value to be added to the obstacle list \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_p_l_y_collision_sphere_a546ea2c6fe80908502fba0350c4f9726}\label{class_p_l_y_collision_sphere_a546ea2c6fe80908502fba0350c4f9726}} +\index{P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}!push\+To\+Small\+Sphere@{push\+To\+Small\+Sphere}} +\index{push\+To\+Small\+Sphere@{push\+To\+Small\+Sphere}!P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{push\+To\+Small\+Sphere()}{pushToSmallSphere()}} +{\footnotesize\ttfamily void P\+L\+Y\+Collision\+Sphere\+::push\+To\+Small\+Sphere (\begin{DoxyParamCaption}\item[{unsigned}]{i, }\item[{unsigned}]{t }\end{DoxyParamCaption})} + + + +This function receives a index from the collision list and moves the value to the last position of the list. then increse the inner sphere end index. This way this index is now included in the inner collision list. + +Adds one element to the list by moving it in front of the current index and increasing the index. \mbox{\Hypertarget{class_p_l_y_collision_sphere_acf52aecaf0bf676087035151e6c662c9}\label{class_p_l_y_collision_sphere_acf52aecaf0bf676087035151e6c662c9}} +\index{P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}!set\+Big\+Sphere\+Size@{set\+Big\+Sphere\+Size}} +\index{set\+Big\+Sphere\+Size@{set\+Big\+Sphere\+Size}!P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{set\+Big\+Sphere\+Size()}{setBigSphereSize()}} +{\footnotesize\ttfamily void P\+L\+Y\+Collision\+Sphere\+::set\+Big\+Sphere\+Size (\begin{DoxyParamCaption}\item[{float}]{size }\end{DoxyParamCaption})} + + +\begin{DoxyParams}{Parameters} +{\em size} & of the list \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_p_l_y_collision_sphere_af9ba1a8616bb5703e58f392f45c6c069}\label{class_p_l_y_collision_sphere_af9ba1a8616bb5703e58f392f45c6c069}} +\index{P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}!set\+Small\+Sphere\+Size@{set\+Small\+Sphere\+Size}} +\index{set\+Small\+Sphere\+Size@{set\+Small\+Sphere\+Size}!P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{set\+Small\+Sphere\+Size()}{setSmallSphereSize()}} +{\footnotesize\ttfamily void P\+L\+Y\+Collision\+Sphere\+::set\+Small\+Sphere\+Size (\begin{DoxyParamCaption}\item[{float}]{size }\end{DoxyParamCaption})} + + +\begin{DoxyParams}{Parameters} +{\em size} & of the list \\ +\hline +\end{DoxyParams} + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_p_l_y_collision_sphere_aadf7b345b8c91791fa96e00862bc8cbb}\label{class_p_l_y_collision_sphere_aadf7b345b8c91791fa96e00862bc8cbb}} +\index{P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}!big\+\_\+sphere\+\_\+list\+\_\+end@{big\+\_\+sphere\+\_\+list\+\_\+end}} +\index{big\+\_\+sphere\+\_\+list\+\_\+end@{big\+\_\+sphere\+\_\+list\+\_\+end}!P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{big\+\_\+sphere\+\_\+list\+\_\+end}{big\_sphere\_list\_end}} +{\footnotesize\ttfamily std\+::vector$<$unsigned$>$ P\+L\+Y\+Collision\+Sphere\+::big\+\_\+sphere\+\_\+list\+\_\+end} + +Index vecotr of the L\+A\+ST element on the list for the big collision sphere \mbox{\Hypertarget{class_p_l_y_collision_sphere_a6ef04af98385142ed0b41a2e35f423b9}\label{class_p_l_y_collision_sphere_a6ef04af98385142ed0b41a2e35f423b9}} +\index{P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}!collision\+\_\+list@{collision\+\_\+list}} +\index{collision\+\_\+list@{collision\+\_\+list}!P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{collision\+\_\+list}{collision\_list}} +{\footnotesize\ttfamily std\+::vector$<$std\+::vector$<$unsigned$>$ $>$$\ast$ P\+L\+Y\+Collision\+Sphere\+::collision\+\_\+list} + +Pointer to the list with the triangle indexes for each P\+LY. The indexes are permuted in its position. \mbox{\Hypertarget{class_p_l_y_collision_sphere_a7fd18a4a8a9dbb2f7104f9b9a5dd6766}\label{class_p_l_y_collision_sphere_a7fd18a4a8a9dbb2f7104f9b9a5dd6766}} +\index{P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}!small\+\_\+sphere\+\_\+list\+\_\+end@{small\+\_\+sphere\+\_\+list\+\_\+end}} +\index{small\+\_\+sphere\+\_\+list\+\_\+end@{small\+\_\+sphere\+\_\+list\+\_\+end}!P\+L\+Y\+Collision\+Sphere@{P\+L\+Y\+Collision\+Sphere}} +\subsubsection{\texorpdfstring{small\+\_\+sphere\+\_\+list\+\_\+end}{small\_sphere\_list\_end}} +{\footnotesize\ttfamily std\+::vector$<$unsigned$>$ P\+L\+Y\+Collision\+Sphere\+::small\+\_\+sphere\+\_\+list\+\_\+end} + +Index vector of the L\+A\+ST element on the list for the small collision sphere + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/collisionsphere.\+h\item +src/collisionsphere.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_p_l_y_collision_sphere__coll__graph.md5 b/doc/latex/class_p_l_y_collision_sphere__coll__graph.md5 new file mode 100644 index 0000000..87a1bf3 --- /dev/null +++ b/doc/latex/class_p_l_y_collision_sphere__coll__graph.md5 @@ -0,0 +1 @@ +b44c27db7d385343719d23981ec171b4 \ No newline at end of file diff --git a/doc/latex/class_p_l_y_collision_sphere__coll__graph.pdf b/doc/latex/class_p_l_y_collision_sphere__coll__graph.pdf new file mode 100644 index 0000000..1e3a8f7 Binary files /dev/null and b/doc/latex/class_p_l_y_collision_sphere__coll__graph.pdf differ diff --git a/doc/latex/class_p_l_y_collision_sphere__inherit__graph.md5 b/doc/latex/class_p_l_y_collision_sphere__inherit__graph.md5 new file mode 100644 index 0000000..5065192 --- /dev/null +++ b/doc/latex/class_p_l_y_collision_sphere__inherit__graph.md5 @@ -0,0 +1 @@ +23c7c444909a10c3459a6a4c75f355ce \ No newline at end of file diff --git a/doc/latex/class_p_l_y_collision_sphere__inherit__graph.pdf b/doc/latex/class_p_l_y_collision_sphere__inherit__graph.pdf new file mode 100644 index 0000000..1e3a8f7 Binary files /dev/null and b/doc/latex/class_p_l_y_collision_sphere__inherit__graph.pdf differ diff --git a/doc/latex/class_p_l_y_obstacle.tex b/doc/latex/class_p_l_y_obstacle.tex new file mode 100644 index 0000000..4cf14ad --- /dev/null +++ b/doc/latex/class_p_l_y_obstacle.tex @@ -0,0 +1,104 @@ +\hypertarget{class_p_l_y_obstacle}{}\section{P\+L\+Y\+Obstacle Class Reference} +\label{class_p_l_y_obstacle}\index{P\+L\+Y\+Obstacle@{P\+L\+Y\+Obstacle}} + + +Ply\+Obstacle Derived Class ====================================================================/. + + + + +{\ttfamily \#include $<$plyobstacle.\+h$>$} + + + +Inheritance diagram for P\+L\+Y\+Obstacle\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=154pt]{class_p_l_y_obstacle__inherit__graph} +\end{center} +\end{figure} + + +Collaboration diagram for P\+L\+Y\+Obstacle\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=280pt]{class_p_l_y_obstacle__coll__graph} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_a8995508a44982787e9aa44bc8d47f669}\label{class_p_l_y_obstacle_a8995508a44982787e9aa44bc8d47f669}} +{\bfseries P\+L\+Y\+Obstacle} (std\+::string path, double scale\+\_\+factor\+\_\+=1) +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_a52649eb1362242e7681e75f7409ee940}\label{class_p_l_y_obstacle_a52649eb1362242e7681e75f7409ee940}} +{\bfseries P\+L\+Y\+Obstacle} (std\+::string path, std\+::vector$<$ Eigen\+::\+Vector3d $>$ \¢ers, double max\+\_\+distance=I\+N\+F\+I\+N\+I\+TY, double scale\+\_\+factor\+\_\+=1) +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_a4e409be3ded2cb3fe2f3cae97fafd266}\label{class_p_l_y_obstacle_a4e409be3ded2cb3fe2f3cae97fafd266}} +void {\bfseries read\+P\+L\+Y\+\_\+\+A\+S\+C\+I\+I\+\_\+triangle\+Fan} (std\+::string ply\+\_\+file) +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_af5db9263d9555682f8345cef2d116eb4}\label{class_p_l_y_obstacle_af5db9263d9555682f8345cef2d116eb4}} +void {\bfseries read\+P\+L\+Y\+\_\+\+A\+S\+C\+I\+I\+\_\+triangles} (std\+::string ply\+\_\+file) +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_a428018f72231740be297c9cd24752bbd}\label{class_p_l_y_obstacle_a428018f72231740be297c9cd24752bbd}} +void {\bfseries read\+P\+L\+Y\+\_\+\+A\+S\+C\+I\+I\+\_\+triangles\+Subdivition\+Distance} (std\+::string ply\+\_\+file, std\+::vector$<$ Eigen\+::\+Vector3d $>$ \¢ers, double max\+\_\+distance) +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_ad0ce0257b8250a5e325da3f0d58e90de}\label{class_p_l_y_obstacle_ad0ce0257b8250a5e325da3f0d58e90de}} +void {\bfseries set\+Scale\+Factor} (double scale) +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_aa43eb5a352acb2305b0ad5d4f3535dd1}\label{class_p_l_y_obstacle_aa43eb5a352acb2305b0ad5d4f3535dd1}} +bool {\bfseries check\+Collision} (\hyperlink{class_walker}{Walker} \&walker, Eigen\+::\+Vector3d \&step, double \&step\+\_\+lenght, \hyperlink{class_collision}{Collision} \&colision) +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_ada5a479826a277b78f7531693809e69c}\label{class_p_l_y_obstacle_ada5a479826a277b78f7531693809e69c}} +bool {\bfseries check\+Collision} (\hyperlink{class_walker}{Walker} \&walker, Eigen\+::\+Vector3d \&step, double \&step\+\_\+lenght, \hyperlink{class_collision}{Collision} \&colision, std\+::vector$<$ unsigned $>$ \&triangle\+\_\+list, unsigned list\+\_\+end) +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_aef64d5d9c5ea9d16c0efb75b89dc7ba0}\label{class_p_l_y_obstacle_aef64d5d9c5ea9d16c0efb75b89dc7ba0}} +double {\bfseries min\+Distance} (\hyperlink{class_walker}{Walker} \&w, unsigned t) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_a5e14e62690601a6273147aca53751569}\label{class_p_l_y_obstacle_a5e14e62690601a6273147aca53751569}} +unsigned {\bfseries vert\+\_\+number} +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_a9664285e5921c10b8d05954849f23e8d}\label{class_p_l_y_obstacle_a9664285e5921c10b8d05954849f23e8d}} +unsigned {\bfseries face\+\_\+number} +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_ab384ad44fb6165d7d7277157e774ba40}\label{class_p_l_y_obstacle_ab384ad44fb6165d7d7277157e774ba40}} +std\+::string {\bfseries file\+\_\+path} +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_a59d10b1c902e053caaf905e81bb618a6}\label{class_p_l_y_obstacle_a59d10b1c902e053caaf905e81bb618a6}} +\hyperlink{class_vertex}{Vertex} $\ast$ {\bfseries vertices} +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_acd5752df4a98fbe92382184d732ddbc9}\label{class_p_l_y_obstacle_acd5752df4a98fbe92382184d732ddbc9}} +\hyperlink{class_triangle}{Triangle} $\ast$ {\bfseries faces} +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_a3ddffa50af76259975a4b8d13c1019da}\label{class_p_l_y_obstacle_a3ddffa50af76259975a4b8d13c1019da}} +double {\bfseries scale\+\_\+factor} +\item +\mbox{\Hypertarget{class_p_l_y_obstacle_acf5a992f0da5e81dddf32484e24956ac}\label{class_p_l_y_obstacle_acf5a992f0da5e81dddf32484e24956ac}} +int {\bfseries id} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Ply\+Obstacle Derived Class ====================================================================/. + +\hyperlink{class_p_l_y_obstacle}{P\+L\+Y\+Obstacle} derived class. Implements obstacles loaded from pre-\/defined PY meshes. \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +November 2016 \subsection*{0.\+2 } +\end{DoxyDate} + + +Implements obstacles loaded from pre-\/constructed P\+LY meshes. The P\+LY format should be without any other experiment. + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/plyobstacle.\+h\item +src/plyobstacle.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_p_l_y_obstacle__coll__graph.md5 b/doc/latex/class_p_l_y_obstacle__coll__graph.md5 new file mode 100644 index 0000000..93feef2 --- /dev/null +++ b/doc/latex/class_p_l_y_obstacle__coll__graph.md5 @@ -0,0 +1 @@ +71d4d021643645c964aeac430624f67a \ No newline at end of file diff --git a/doc/latex/class_p_l_y_obstacle__coll__graph.pdf b/doc/latex/class_p_l_y_obstacle__coll__graph.pdf new file mode 100644 index 0000000..74a9e2d Binary files /dev/null and b/doc/latex/class_p_l_y_obstacle__coll__graph.pdf differ diff --git a/doc/latex/class_p_l_y_obstacle__inherit__graph.md5 b/doc/latex/class_p_l_y_obstacle__inherit__graph.md5 new file mode 100644 index 0000000..9c14708 --- /dev/null +++ b/doc/latex/class_p_l_y_obstacle__inherit__graph.md5 @@ -0,0 +1 @@ +701c1ff5e573b3e40b83437ea6849a9b \ No newline at end of file diff --git a/doc/latex/class_p_l_y_obstacle__inherit__graph.pdf b/doc/latex/class_p_l_y_obstacle__inherit__graph.pdf new file mode 100644 index 0000000..15a2cb7 Binary files /dev/null and b/doc/latex/class_p_l_y_obstacle__inherit__graph.pdf differ diff --git a/doc/latex/class_parallel_m_c_simulation.tex b/doc/latex/class_parallel_m_c_simulation.tex new file mode 100644 index 0000000..5c99c37 --- /dev/null +++ b/doc/latex/class_parallel_m_c_simulation.tex @@ -0,0 +1,207 @@ +\hypertarget{class_parallel_m_c_simulation}{}\section{Parallel\+M\+C\+Simulation Class Reference} +\label{class_parallel_m_c_simulation}\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} + + +Class to handle multiprocessor paralellisation. This class basicly controls and syncronize several initializations of Monte\+Carlo simulations and add up the results. It\textquotesingle{}s a way of soft paralelization. + + + + +{\ttfamily \#include $<$parallelmcsimulation.\+h$>$} + + + +Collaboration diagram for Parallel\+M\+C\+Simulation\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=190pt]{class_parallel_m_c_simulation__coll__graph} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{class_parallel_m_c_simulation_ac85dc215688a1462b770d20c2ff10b3f}{Parallel\+M\+C\+Simulation} (std\+::string config\+\_\+file) +\begin{DoxyCompactList}\small\item\em Main constructor. \end{DoxyCompactList}\item +\hyperlink{class_parallel_m_c_simulation_a32ee405791787a1ea9d03895fdd810f4}{Parallel\+M\+C\+Simulation} (\hyperlink{class_parameters}{Parameters} \&\hyperlink{class_parallel_m_c_simulation_a83f856aaa88a403c657c7b8234deee7a}{params}) +\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item +void \hyperlink{class_parallel_m_c_simulation_a7d9420ac20b19cb1c74f81bdbad94196}{start\+Simulation} () +\begin{DoxyCompactList}\small\item\em Warp function. Calls the \hyperlink{class_m_c_simulation}{M\+C\+Simulation}\textquotesingle{}s native function for all the instances. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\hyperlink{class_parameters}{Parameters} \hyperlink{class_parallel_m_c_simulation_a83f856aaa88a403c657c7b8234deee7a}{params} +\item +double \hyperlink{class_parallel_m_c_simulation_ad122df5454bb26a56e89c9077560a33d}{mean\+\_\+second\+\_\+passed} +\item +unsigned \hyperlink{class_parallel_m_c_simulation_a18326e05c32fac82264d7351d78a7433}{total\+\_\+sim\+\_\+particles} +\item +unsigned \hyperlink{class_parallel_m_c_simulation_a6ee1dfd6e695ec5ec7d4c2ed94f233cf}{stuck\+\_\+count} +\item +unsigned \hyperlink{class_parallel_m_c_simulation_ae667ec358689a3a7b42876b401a5fce5}{illegal\+\_\+count} +\item +double \hyperlink{class_parallel_m_c_simulation_a871e3fdace01984a533792dd49bebd1b}{icvf} +\item +double \hyperlink{class_parallel_m_c_simulation_aa51edc0c79c6ae66ddd0046d21b871d4}{aprox\+\_\+volumen} +\item +std\+::vector$<$ \hyperlink{class_m_c_simulation}{M\+C\+Simulation} $\ast$ $>$ \hyperlink{class_parallel_m_c_simulation_af16d292f007b8391122a035022422ed5}{simulations} +\item +std\+::vector$<$ std\+::thread $>$ \hyperlink{class_parallel_m_c_simulation_a2a0f1cc2812c1a35e5e38d9d9ddde78b}{sim\+\_\+threads} +\item +std\+::vector$<$ \hyperlink{class_p_l_y_obstacle}{P\+L\+Y\+Obstacle} $>$ \hyperlink{class_parallel_m_c_simulation_aa90f4d989bc868b6d225c0c5b9fe832a}{ply\+Obstacles\+\_\+list} +\item +std\+::vector$<$ \hyperlink{class_cylinder}{Cylinder} $>$ \hyperlink{class_parallel_m_c_simulation_a4c36ff5327e9f19258fed5d64d48fdb8}{cylinders\+\_\+list} +\item +std\+::vector$<$ Eigen\+::\+Vector3f $>$ \hyperlink{class_parallel_m_c_simulation_a5efe5faa45e57e6ff3827e9ec9e52a64}{total\+\_\+ini\+\_\+walker\+\_\+pos} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Class to handle multiprocessor paralellisation. This class basicly controls and syncronize several initializations of Monte\+Carlo simulations and add up the results. It\textquotesingle{}s a way of soft paralelization. + +Implementation of the P\+G\+SE protocol. + +==============================================================================/ + +Class to handle multiprocessor paralellisation \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +November 2016 + + +\end{DoxyDate} + + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_parallel_m_c_simulation_ac85dc215688a1462b770d20c2ff10b3f}\label{class_parallel_m_c_simulation_ac85dc215688a1462b770d20c2ff10b3f}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{Parallel\+M\+C\+Simulation()}{ParallelMCSimulation()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily Parallel\+M\+C\+Simulation\+::\+Parallel\+M\+C\+Simulation (\begin{DoxyParamCaption}\item[{std\+::string}]{config\+\_\+file }\end{DoxyParamCaption})} + + + +Main constructor. + + +\begin{DoxyParams}{Parameters} +{\em config\+\_\+file} & .conf file name with the full set of experiments parameters. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_parallel_m_c_simulation_a32ee405791787a1ea9d03895fdd810f4}\label{class_parallel_m_c_simulation_a32ee405791787a1ea9d03895fdd810f4}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{Parallel\+M\+C\+Simulation()}{ParallelMCSimulation()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily Parallel\+M\+C\+Simulation\+::\+Parallel\+M\+C\+Simulation (\begin{DoxyParamCaption}\item[{\hyperlink{class_parameters}{Parameters} \&}]{params }\end{DoxyParamCaption})} + + + +Constructor. + + +\begin{DoxyParams}{Parameters} +{\em parameters} & of the simulation. Read form a conf file or given by the user. \\ +\hline +\end{DoxyParams} + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_parallel_m_c_simulation_a7d9420ac20b19cb1c74f81bdbad94196}\label{class_parallel_m_c_simulation_a7d9420ac20b19cb1c74f81bdbad94196}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!start\+Simulation@{start\+Simulation}} +\index{start\+Simulation@{start\+Simulation}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{start\+Simulation()}{startSimulation()}} +{\footnotesize\ttfamily Parallel\+M\+C\+Simulation\+::start\+Simulation (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Warp function. Calls the \hyperlink{class_m_c_simulation}{M\+C\+Simulation}\textquotesingle{}s native function for all the instances. + +\begin{DoxySeeAlso}{See also} +\+:\hyperlink{class_m_c_simulation}{M\+C\+Simulation}\+:. +\end{DoxySeeAlso} + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_parallel_m_c_simulation_aa51edc0c79c6ae66ddd0046d21b871d4}\label{class_parallel_m_c_simulation_aa51edc0c79c6ae66ddd0046d21b871d4}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!aprox\+\_\+volumen@{aprox\+\_\+volumen}} +\index{aprox\+\_\+volumen@{aprox\+\_\+volumen}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{aprox\+\_\+volumen}{aprox\_volumen}} +{\footnotesize\ttfamily double Parallel\+M\+C\+Simulation\+::aprox\+\_\+volumen} + +Stores the volumen based on I\+C\+VF and the voxel size \mbox{\Hypertarget{class_parallel_m_c_simulation_a4c36ff5327e9f19258fed5d64d48fdb8}\label{class_parallel_m_c_simulation_a4c36ff5327e9f19258fed5d64d48fdb8}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!cylinders\+\_\+list@{cylinders\+\_\+list}} +\index{cylinders\+\_\+list@{cylinders\+\_\+list}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{cylinders\+\_\+list}{cylinders\_list}} +{\footnotesize\ttfamily std\+::vector$<$\hyperlink{class_cylinder}{Cylinder}$>$ Parallel\+M\+C\+Simulation\+::cylinders\+\_\+list} + +vector with all the instances of cylinders \mbox{\Hypertarget{class_parallel_m_c_simulation_a871e3fdace01984a533792dd49bebd1b}\label{class_parallel_m_c_simulation_a871e3fdace01984a533792dd49bebd1b}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!icvf@{icvf}} +\index{icvf@{icvf}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{icvf}{icvf}} +{\footnotesize\ttfamily double Parallel\+M\+C\+Simulation\+::icvf} + +Stores the I\+C\+VF based on the particles sampling \mbox{\Hypertarget{class_parallel_m_c_simulation_ae667ec358689a3a7b42876b401a5fce5}\label{class_parallel_m_c_simulation_ae667ec358689a3a7b42876b401a5fce5}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!illegal\+\_\+count@{illegal\+\_\+count}} +\index{illegal\+\_\+count@{illegal\+\_\+count}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{illegal\+\_\+count}{illegal\_count}} +{\footnotesize\ttfamily unsigned Parallel\+M\+C\+Simulation\+::illegal\+\_\+count} + +Counts the number of particles that attempt to cross \mbox{\Hypertarget{class_parallel_m_c_simulation_ad122df5454bb26a56e89c9077560a33d}\label{class_parallel_m_c_simulation_ad122df5454bb26a56e89c9077560a33d}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!mean\+\_\+second\+\_\+passed@{mean\+\_\+second\+\_\+passed}} +\index{mean\+\_\+second\+\_\+passed@{mean\+\_\+second\+\_\+passed}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{mean\+\_\+second\+\_\+passed}{mean\_second\_passed}} +{\footnotesize\ttfamily double Parallel\+M\+C\+Simulation\+::mean\+\_\+second\+\_\+passed} + +Simualation total time in seconds \mbox{\Hypertarget{class_parallel_m_c_simulation_a83f856aaa88a403c657c7b8234deee7a}\label{class_parallel_m_c_simulation_a83f856aaa88a403c657c7b8234deee7a}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!params@{params}} +\index{params@{params}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{params}{params}} +{\footnotesize\ttfamily \hyperlink{class_parameters}{Parameters} Parallel\+M\+C\+Simulation\+::params} + +\hyperlink{class_parameters}{Parameters} instance \begin{DoxySeeAlso}{See also} +\+:\hyperlink{class_parameters}{Parameters}\+: +\end{DoxySeeAlso} +\mbox{\Hypertarget{class_parallel_m_c_simulation_aa90f4d989bc868b6d225c0c5b9fe832a}\label{class_parallel_m_c_simulation_aa90f4d989bc868b6d225c0c5b9fe832a}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!ply\+Obstacles\+\_\+list@{ply\+Obstacles\+\_\+list}} +\index{ply\+Obstacles\+\_\+list@{ply\+Obstacles\+\_\+list}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{ply\+Obstacles\+\_\+list}{plyObstacles\_list}} +{\footnotesize\ttfamily std\+::vector$<$\hyperlink{class_p_l_y_obstacle}{P\+L\+Y\+Obstacle}$>$ Parallel\+M\+C\+Simulation\+::ply\+Obstacles\+\_\+list} + +vector with all the instances of P\+L\+Y\+Obstacles \mbox{\Hypertarget{class_parallel_m_c_simulation_a2a0f1cc2812c1a35e5e38d9d9ddde78b}\label{class_parallel_m_c_simulation_a2a0f1cc2812c1a35e5e38d9d9ddde78b}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!sim\+\_\+threads@{sim\+\_\+threads}} +\index{sim\+\_\+threads@{sim\+\_\+threads}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{sim\+\_\+threads}{sim\_threads}} +{\footnotesize\ttfamily std\+::vector$<$std\+::thread$>$ Parallel\+M\+C\+Simulation\+::sim\+\_\+threads} + +Number of threads (instances and processors) to be used \mbox{\Hypertarget{class_parallel_m_c_simulation_af16d292f007b8391122a035022422ed5}\label{class_parallel_m_c_simulation_af16d292f007b8391122a035022422ed5}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!simulations@{simulations}} +\index{simulations@{simulations}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{simulations}{simulations}} +{\footnotesize\ttfamily std\+::vector$<$\hyperlink{class_m_c_simulation}{M\+C\+Simulation}$\ast$$>$ Parallel\+M\+C\+Simulation\+::simulations} + +vector of pointers to \hyperlink{class_m_c_simulation}{M\+C\+Simulation} instances \mbox{\Hypertarget{class_parallel_m_c_simulation_a6ee1dfd6e695ec5ec7d4c2ed94f233cf}\label{class_parallel_m_c_simulation_a6ee1dfd6e695ec5ec7d4c2ed94f233cf}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!stuck\+\_\+count@{stuck\+\_\+count}} +\index{stuck\+\_\+count@{stuck\+\_\+count}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{stuck\+\_\+count}{stuck\_count}} +{\footnotesize\ttfamily unsigned Parallel\+M\+C\+Simulation\+::stuck\+\_\+count} + +Counts the number of particles stuck in the simulations \mbox{\Hypertarget{class_parallel_m_c_simulation_a5efe5faa45e57e6ff3827e9ec9e52a64}\label{class_parallel_m_c_simulation_a5efe5faa45e57e6ff3827e9ec9e52a64}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!total\+\_\+ini\+\_\+walker\+\_\+pos@{total\+\_\+ini\+\_\+walker\+\_\+pos}} +\index{total\+\_\+ini\+\_\+walker\+\_\+pos@{total\+\_\+ini\+\_\+walker\+\_\+pos}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{total\+\_\+ini\+\_\+walker\+\_\+pos}{total\_ini\_walker\_pos}} +{\footnotesize\ttfamily std\+::vector$<$Eigen\+::\+Vector3f$>$ Parallel\+M\+C\+Simulation\+::total\+\_\+ini\+\_\+walker\+\_\+pos} + +Number of threads (instances and processors) to be used \mbox{\Hypertarget{class_parallel_m_c_simulation_a18326e05c32fac82264d7351d78a7433}\label{class_parallel_m_c_simulation_a18326e05c32fac82264d7351d78a7433}} +\index{Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}!total\+\_\+sim\+\_\+particles@{total\+\_\+sim\+\_\+particles}} +\index{total\+\_\+sim\+\_\+particles@{total\+\_\+sim\+\_\+particles}!Parallel\+M\+C\+Simulation@{Parallel\+M\+C\+Simulation}} +\subsubsection{\texorpdfstring{total\+\_\+sim\+\_\+particles}{total\_sim\_particles}} +{\footnotesize\ttfamily unsigned Parallel\+M\+C\+Simulation\+::total\+\_\+sim\+\_\+particles} + +Total number of simulated particles + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/parallelmcsimulation.\+h\item +src/parallelmcsimulation.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_parallel_m_c_simulation__coll__graph.md5 b/doc/latex/class_parallel_m_c_simulation__coll__graph.md5 new file mode 100644 index 0000000..2eaba93 --- /dev/null +++ b/doc/latex/class_parallel_m_c_simulation__coll__graph.md5 @@ -0,0 +1 @@ +9f818f5e46726568443c0a986628bdcf \ No newline at end of file diff --git a/doc/latex/class_parallel_m_c_simulation__coll__graph.pdf b/doc/latex/class_parallel_m_c_simulation__coll__graph.pdf new file mode 100644 index 0000000..77b1696 Binary files /dev/null and b/doc/latex/class_parallel_m_c_simulation__coll__graph.pdf differ diff --git a/doc/latex/class_parameter.tex b/doc/latex/class_parameter.tex new file mode 100644 index 0000000..e2a18c6 --- /dev/null +++ b/doc/latex/class_parameter.tex @@ -0,0 +1,29 @@ +\hypertarget{class_parameter}{}\section{Parameter Class Reference} +\label{class_parameter}\index{Parameter@{Parameter}} + + +Basic class to store simulation parameters =============================================================/. + + + + +{\ttfamily \#include $<$parameters.\+h$>$} + + + +\subsection{Detailed Description} +Basic class to store simulation parameters =============================================================/. + +Basic class to store and handle all the possible simulation parameters. \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +November 2016 \subsection*{1.\+43 } +\end{DoxyDate} + + +Class used to hold and operate all the user and simulation parameters. This is the main class to comunicate between instances of the simulations and derived classes. So, in a way, it\textquotesingle{}s an interface for the comunication between component classes in the simulation. + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +src/parameters.\+h\end{DoxyCompactItemize} diff --git a/doc/latex/class_parameters.tex b/doc/latex/class_parameters.tex new file mode 100644 index 0000000..864cc78 --- /dev/null +++ b/doc/latex/class_parameters.tex @@ -0,0 +1,760 @@ +\hypertarget{class_parameters}{}\section{Parameters Class Reference} +\label{class_parameters}\index{Parameters@{Parameters}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_parameters_af4d94ee360ac0157d9065f78797fe9a1}\label{class_parameters_af4d94ee360ac0157d9065f78797fe9a1}} +\hyperlink{class_parameters_af4d94ee360ac0157d9065f78797fe9a1}{Parameters} () +\begin{DoxyCompactList}\small\item\em Default constructor. Sets all the parameters to default and N\+U\+LL values. \end{DoxyCompactList}\item +void \hyperlink{class_parameters_afa8dd9d59fa727c3c2b2fe366efb2c14}{read\+Scheme\+File} (std\+::string conf\+\_\+file) +\begin{DoxyCompactList}\small\item\em Reads all the parameters from a scheme file in the correct format the function scales them if necessary. The parameters are passed by listing, first, the parameter name, followed by the value. The supported parameters are\+: number of walkers (N), number of steps (T), duration (duration), P\+G\+SE scheme file (scheme\+\_\+file), min voxles limits (min limits), max voxel limits (max\+\_\+limits), diffusivity (diffusivity), index name for the trajectory and output values (out\+\_\+traj\+\_\+file\+\_\+index), initial walker position file (ini\+\_\+walkers\+\_\+file), write a txt traj flag and header (write\+\_\+text), write binary traj file and header, write\+\_\+bin, flag to scale the values from estandar unit (scale\+\_\+from\+\_\+stu), random seed (seed). \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_parameters_a666f753268b273d35f9623f0754e67ce}\label{class_parameters_a666f753268b273d35f9623f0754e67ce}} +void {\bfseries set\+Num\+Walkers} (unsigned N) +\item +void \hyperlink{class_parameters_af61156929c1abed67da0a1c9920ca508}{set\+Num\+Steps} (unsigned T) +\begin{DoxyCompactList}\small\item\em set the number of steps in the simulation. \end{DoxyCompactList}\item +void \hyperlink{class_parameters_a7af2bd289f8c8de738d643bb8e05ac62}{set\+Diffusivity} (double Diff) +\begin{DoxyCompactList}\small\item\em set the simulation diffusivity. \end{DoxyCompactList}\item +void \hyperlink{class_parameters_a934a87940878dc78b75ae4c230132f75}{set\+Sim\+Duration} (double duration) +\begin{DoxyCompactList}\small\item\em sets the simulation duration. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_parameters_a632988a9dc0d04fdff35c6f72739ed83}\label{class_parameters_a632988a9dc0d04fdff35c6f72739ed83}} +void {\bfseries set\+Write\+Traj\+Flag} (bool \hyperlink{class_parameters_a4c98120687d1ba332d0c6cd5a14c59fb}{write\+\_\+bin}) +\item +\mbox{\Hypertarget{class_parameters_ac785bd73c771f6a46109fba421fbc059}\label{class_parameters_ac785bd73c771f6a46109fba421fbc059}} +void {\bfseries set\+Write\+Text\+Flag} (bool write\+\_\+txt\+\_\+) +\item +void \hyperlink{class_parameters_a73a4f685a35f8f7012609effb30a17d8}{set\+Min\+Limits} (Eigen\+::\+Vector3d min\+\_\+limits\+\_\+) +\begin{DoxyCompactList}\small\item\em set the bottom left corner of the voxel to be simulated. \end{DoxyCompactList}\item +void \hyperlink{class_parameters_a96764612c6ee5aeb684e1348e47b2308}{set\+Max\+Limits} (Eigen\+::\+Vector3d max\+\_\+limits\+\_\+) +\begin{DoxyCompactList}\small\item\em set the bottom left corner of the voxel to be simulated. \end{DoxyCompactList}\item +void \hyperlink{class_parameters_ac07671c27ff8f0ec9f5d8bdc656e7ffb}{set\+Traj\+File\+Name} (std\+::string traj\+\_\+file\+\_\+) +\begin{DoxyCompactList}\small\item\em Set the prefix of the name for the traj file (txt and .traj) \end{DoxyCompactList}\item +void \hyperlink{class_parameters_aec6b8dc2c119405ab2cdc4e6622ac616}{set\+Output\+Base\+File\+Name} (std\+::string output\+\_\+base\+\_\+name\+\_\+) +\begin{DoxyCompactList}\small\item\em Set the prefix of the name for all the outputs in the simulation. \end{DoxyCompactList}\item +void \hyperlink{class_parameters_a73d64bb093a93c2b806883f5504d8fb5}{ini\+Walkers\+File\+Name} (std\+::string ini\+\_\+walkers\+\_\+file\+\_\+) +\item +void \hyperlink{class_parameters_a95ca6c28a5c87363460ca48eed5f065f}{set\+Scheme\+File\+Name} (std\+::string scheme\+\_\+file\+\_\+) +\begin{DoxyCompactList}\small\item\em Sets the scheme file name to be used for the data synthesis. \end{DoxyCompactList}\item +unsigned \hyperlink{class_parameters_adb8599bc60f977f684f32a83bbe28fc1}{get\+Num\+Walkers} () +\item +unsigned \hyperlink{class_parameters_aa5aaf80e0189c63090e8f04cf485800f}{get\+Num\+Steps} () +\item +double \hyperlink{class_parameters_ac429071159941e3957eb7c030280a30f}{get\+Diffusivity} () +\item +bool \hyperlink{class_parameters_a21817e9a0207da2adf32611bcaf889ef}{get\+Write\+Traj\+Flag} () +\item +bool \hyperlink{class_parameters_adb6064f329732640c226608d6e1ddb60}{get\+Write\+Text\+Flag} () +\item +Eigen\+::\+Vector3d \hyperlink{class_parameters_abda8b91e5ac40e67c79184d7071c353a}{get\+Min\+Limits} () +\item +Eigen\+::\+Vector3d \hyperlink{class_parameters_ad4f8b826db4c1b665891740469e41086}{get\+Max\+Limits} () +\item +std\+::string \hyperlink{class_parameters_a38057c2ae3d11b578c8f199d73683ee1}{get\+Traj\+File\+Name} () +\item +std\+::string \hyperlink{class_parameters_a794fd941bf5ff311f61f2e6b4f19e64d}{get\+Output\+Base\+File\+Name} () +\item +\mbox{\Hypertarget{class_parameters_af734dc58d8d5898049226614c2dd38a3}\label{class_parameters_af734dc58d8d5898049226614c2dd38a3}} +std\+::string {\bfseries get\+Ini\+Walkers\+File\+Name} () +\item +std\+::string \hyperlink{class_parameters_a7291b970983c021569cd2e3a0573592c}{get\+Scheme\+File\+Name} () +\item +\mbox{\Hypertarget{class_parameters_ae5fa10ca3ccc20d9b51a2bc549daf1c3}\label{class_parameters_ae5fa10ca3ccc20d9b51a2bc549daf1c3}} +void {\bfseries add\+Subdivisions} () +\end{DoxyCompactItemize} +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_parameters_a150b4fdab4890be21905186d4c8422f2}\label{class_parameters_a150b4fdab4890be21905186d4c8422f2}} +static int {\bfseries str\+\_\+dist} (std\+::string s, std\+::string t) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +unsigned \hyperlink{class_parameters_a35329cc60a28986ee4020457d46921fb}{num\+\_\+walkers} +\item +unsigned \hyperlink{class_parameters_a3475e7efae778bc7720fe6c17274eef0}{num\+\_\+steps} +\item +double \hyperlink{class_parameters_add48efa1d9fe056fdb21fe2d2d92533d}{diffusivity} +\item +double \hyperlink{class_parameters_acbe36f055786ddcf8480a49d2c34c914}{sim\+\_\+duration} +\item +bool \hyperlink{class_parameters_ac9408092b6254b4ccfecc85decbb1944}{write\+\_\+traj} +\item +bool \hyperlink{class_parameters_a15446bf0727ebfe03f119821c7d8ed0f}{write\+\_\+txt} +\item +bool \hyperlink{class_parameters_a4c98120687d1ba332d0c6cd5a14c59fb}{write\+\_\+bin} +\item +bool \hyperlink{class_parameters_a3c37f738b7700bdc22845bc725d51e6f}{scale\+\_\+from\+\_\+stu} +\item +bool \hyperlink{class_parameters_ab737ef40d88faa6ee8a701013d9d2984}{save\+\_\+phase\+\_\+shift} +\item +long \hyperlink{class_parameters_afa076397ed9cbdc4c88215e29b850e3c}{seed} +\item +bool \hyperlink{class_parameters_aabce43eb8376a94a8e765da99b58d003}{verbatim} +\item +std\+::string \hyperlink{class_parameters_a75346dc3b7a41548a2f9e0560343df24}{traj\+\_\+file} +\item +std\+::string \hyperlink{class_parameters_a2662ccc98a7a2b9f0c81f223a8f0748f}{output\+\_\+base\+\_\+name} +\item +std\+::string \hyperlink{class_parameters_a84db69d29321fccb7cc7ea724a74df50}{ini\+\_\+walkers\+\_\+file} +\item +unsigned \hyperlink{class_parameters_ae01ac4f7d6d3b9eea6799f5c929ddf00}{ini\+\_\+walkers\+\_\+file\+\_\+count} +\item +std\+::string \hyperlink{class_parameters_a87cb2db5b45bf9cb36e74903fecfaa6e}{ini\+\_\+walker\+\_\+flag} +\item +std\+::string \hyperlink{class_parameters_afbb7caab773abb16753263a0b04c8a2c}{scheme\+\_\+file} +\item +Eigen\+::\+Vector3d \hyperlink{class_parameters_aa9d387477810c2bb574b83ecd1fbf8f0}{min\+\_\+limits} +\item +Eigen\+::\+Vector3d \hyperlink{class_parameters_a879b4c717e0f59c9bbc4b7810b8fdde3}{max\+\_\+limits} +\item +std\+::vector$<$ std\+::string $>$ \hyperlink{class_parameters_abdef3b0fe62c5fdca7d417d01edd7422}{cylinders\+\_\+files} +\item +std\+::vector$<$ std\+::string $>$ \hyperlink{class_parameters_a76984fe140c1c6c8a047dd622561200d}{P\+L\+Y\+\_\+files} +\item +std\+::vector$<$ double $>$ \hyperlink{class_parameters_a97ed7a4d1b6c6ea8f6507a6a0fc04698}{P\+L\+Y\+\_\+scales} +\item +std\+::vector$<$ double $>$ \hyperlink{class_parameters_a67f6e450517ee21255d72d41bc9f0ce7}{P\+L\+Y\+\_\+percolation} +\item +std\+::vector$<$ float $>$ \hyperlink{class_parameters_aea1568fbc8a92bd90303ea8afc9e8c63}{ini\+\_\+delta\+\_\+pos} +\item +unsigned \hyperlink{class_parameters_aab0de21efc3f85e5c44205ed5ebf9d4d}{num\+\_\+proc} +\item +std\+::vector$<$ std\+::pair$<$ Eigen\+::\+Vector3d, Eigen\+::\+Vector3d $>$ $>$ \hyperlink{class_parameters_aefbd07d8501ebb9311bbb1ea7c37be26}{voxels\+\_\+list} +\item +std\+::vector$<$ Eigen\+::\+Vector3f $>$ \hyperlink{class_parameters_a4bbfed0148cec6e10d0e90d85437a37a}{prop\+\_\+dirs} +\item +std\+::vector$<$ unsigned $>$ \hyperlink{class_parameters_a4f884a7effd3a8816c78084ff3c2b202}{record\+\_\+pos\+\_\+times} +\item +std\+::vector$<$ unsigned $>$ \hyperlink{class_parameters_a559e66b65a2cb4391d1099bf0db6ec44}{record\+\_\+phase\+\_\+times} +\item +std\+::vector$<$ unsigned $>$ \hyperlink{class_parameters_af47bd2eada81c6c581aaa8c70d04c8d6}{record\+\_\+prop\+\_\+times} +\item +bool \hyperlink{class_parameters_aad79d8e720492fd880ee021c6320dfe0}{hex\+\_\+packing} +\item +double \hyperlink{class_parameters_a3c49b55dc2a2af1c5ddfc3426e2a7936}{hex\+\_\+packing\+\_\+radius} +\item +double \hyperlink{class_parameters_a480338071cedf966fdb79b37d9ebe656}{hex\+\_\+packing\+\_\+separation} +\item +bool \hyperlink{class_parameters_aaef8b4218392fb19de2c5c886f5f7fa0}{gamma\+\_\+packing} +\item +\mbox{\Hypertarget{class_parameters_ae7568296f688ccea271336e882162e7e}\label{class_parameters_ae7568296f688ccea271336e882162e7e}} +bool {\bfseries gamma\+\_\+output\+\_\+conf} +\item +\mbox{\Hypertarget{class_parameters_a29d423618cf9acb2bbfe071fac98ec29}\label{class_parameters_a29d423618cf9acb2bbfe071fac98ec29}} +double {\bfseries gamma\+\_\+packing\+\_\+alpha} +\item +\mbox{\Hypertarget{class_parameters_a2b10c9b8191ca74923f07d74b8f7e30a}\label{class_parameters_a2b10c9b8191ca74923f07d74b8f7e30a}} +double {\bfseries gamma\+\_\+packing\+\_\+beta} +\item +\mbox{\Hypertarget{class_parameters_a97df7bda4427bbdd7b7e0aa2cd23e858}\label{class_parameters_a97df7bda4427bbdd7b7e0aa2cd23e858}} +double {\bfseries gamma\+\_\+icvf} +\item +\mbox{\Hypertarget{class_parameters_a484419e6ab0c0661ff7825fbe6d5a963}\label{class_parameters_a484419e6ab0c0661ff7825fbe6d5a963}} +double {\bfseries gamma\+\_\+output\+\_\+configuration} +\item +\mbox{\Hypertarget{class_parameters_a6e8dfd894eef31a43bd7bb0de5f02f37}\label{class_parameters_a6e8dfd894eef31a43bd7bb0de5f02f37}} +unsigned {\bfseries gamma\+\_\+num\+\_\+cylinders} +\item +float \hyperlink{class_parameters_a0b44e239201caecaebdb7e956ead1e0c}{min\+\_\+cyl\+\_\+radii} +\item +bool \hyperlink{class_parameters_a43362cb6e3ea49cc9db9e52c3ebc7140}{subdivision\+\_\+flag} = false +\item +unsigned \hyperlink{class_parameters_a0d15fd8f1f5c332174864c3acbaf5e10}{number\+\_\+subdivisions} = 0 +\item +std\+::string \hyperlink{class_parameters_a1733bfcb8391c494b7b1a317dfda5e44}{subdivisions\+\_\+file} = \char`\"{}\char`\"{} +\item +std\+::vector$<$ \hyperlink{class_subdivision}{Subdivision} $>$ \hyperlink{class_parameters_a3c05ff7a30f151c384b83ce3adca26fa}{subdivisions} +\item +double \hyperlink{class_parameters_a2e5fa275543b4a52599e694e64546e13}{obstacle\+\_\+permeability} = 0 +\item +double \hyperlink{class_parameters_abe008f02a49ef7f7a6f041f79cc81fbb}{collision\+\_\+sphere\+\_\+distance} = 0 +\item +double \hyperlink{class_parameters_a66ad8359ef1cc76e8d5581a402cc86b5}{max\+\_\+simulation\+\_\+time} = 0 +\item +bool \hyperlink{class_parameters_a947e4b1fef66466119ea7b2e8e2bc0e4}{log\+\_\+phase\+\_\+shift} = false +\item +bool \hyperlink{class_parameters_ae30abbd794dee7f5aaf5d3d51152acef}{log\+\_\+opp} = false +\item +bool \hyperlink{class_parameters_ab1815ac94d73ca8b56a9f12fca04cb89}{discard\+\_\+stucks} = true +\item +bool \hyperlink{class_parameters_ac1a5fa4c00eaaf1b40789f329ae20e9a}{discard\+\_\+illegals} = true +\item +bool \hyperlink{class_parameters_a1f5a62a35d6521994a623d0fd0a98a24}{log\+\_\+propagator} = false +\item +Eigen\+::\+Vector3d \hyperlink{class_parameters_a8b7e1481e63d5ac9a36eed8ab310d315}{min\+\_\+sampling\+\_\+area} +\item +Eigen\+::\+Vector3d \hyperlink{class_parameters_a2bf25423e72a562d5812ed0df3e06e2d}{max\+\_\+sampling\+\_\+area} +\item +bool \hyperlink{class_parameters_af023e7efce57b9da0837731db6a85c87}{custom\+\_\+sampling\+\_\+area} +\item +bool \hyperlink{class_parameters_a669c92fe7864a00da04bba0c2af93a16}{compute\+Volume} +\item +bool \hyperlink{class_parameters_adacb13afed18c07dfd269fae76f828b3}{separate\+\_\+signals} +\item +bool \hyperlink{class_parameters_a1dd221193dd0ad7e34a6b4f7c496d899}{img\+\_\+signal} +\end{DoxyCompactItemize} + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_parameters_ac429071159941e3957eb7c030280a30f}\label{class_parameters_ac429071159941e3957eb7c030280a30f}} +\index{Parameters@{Parameters}!get\+Diffusivity@{get\+Diffusivity}} +\index{get\+Diffusivity@{get\+Diffusivity}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{get\+Diffusivity()}{getDiffusivity()}} +{\footnotesize\ttfamily Parameters\+::get\+Diffusivity (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\begin{DoxyReturn}{Returns} +Diffusivity +\end{DoxyReturn} +\mbox{\Hypertarget{class_parameters_ad4f8b826db4c1b665891740469e41086}\label{class_parameters_ad4f8b826db4c1b665891740469e41086}} +\index{Parameters@{Parameters}!get\+Max\+Limits@{get\+Max\+Limits}} +\index{get\+Max\+Limits@{get\+Max\+Limits}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{get\+Max\+Limits()}{getMaxLimits()}} +{\footnotesize\ttfamily Parameters\+::get\+Max\+Limits (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\begin{DoxyReturn}{Returns} +voxel max limits (right top corner) +\end{DoxyReturn} +\mbox{\Hypertarget{class_parameters_abda8b91e5ac40e67c79184d7071c353a}\label{class_parameters_abda8b91e5ac40e67c79184d7071c353a}} +\index{Parameters@{Parameters}!get\+Min\+Limits@{get\+Min\+Limits}} +\index{get\+Min\+Limits@{get\+Min\+Limits}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{get\+Min\+Limits()}{getMinLimits()}} +{\footnotesize\ttfamily Parameters\+::get\+Min\+Limits (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\begin{DoxyReturn}{Returns} +voxel min limits (left bottom corner) +\end{DoxyReturn} +\mbox{\Hypertarget{class_parameters_aa5aaf80e0189c63090e8f04cf485800f}\label{class_parameters_aa5aaf80e0189c63090e8f04cf485800f}} +\index{Parameters@{Parameters}!get\+Num\+Steps@{get\+Num\+Steps}} +\index{get\+Num\+Steps@{get\+Num\+Steps}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{get\+Num\+Steps()}{getNumSteps()}} +{\footnotesize\ttfamily Parameters\+::get\+Num\+Steps (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\begin{DoxyReturn}{Returns} +Number of Steps +\end{DoxyReturn} +\mbox{\Hypertarget{class_parameters_adb8599bc60f977f684f32a83bbe28fc1}\label{class_parameters_adb8599bc60f977f684f32a83bbe28fc1}} +\index{Parameters@{Parameters}!get\+Num\+Walkers@{get\+Num\+Walkers}} +\index{get\+Num\+Walkers@{get\+Num\+Walkers}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{get\+Num\+Walkers()}{getNumWalkers()}} +{\footnotesize\ttfamily Parameters\+::get\+Num\+Walkers (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\begin{DoxyReturn}{Returns} +Number of walkers N +\end{DoxyReturn} +\mbox{\Hypertarget{class_parameters_a794fd941bf5ff311f61f2e6b4f19e64d}\label{class_parameters_a794fd941bf5ff311f61f2e6b4f19e64d}} +\index{Parameters@{Parameters}!get\+Output\+Base\+File\+Name@{get\+Output\+Base\+File\+Name}} +\index{get\+Output\+Base\+File\+Name@{get\+Output\+Base\+File\+Name}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{get\+Output\+Base\+File\+Name()}{getOutputBaseFileName()}} +{\footnotesize\ttfamily Parameters\+::get\+Output\+Base\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\begin{DoxyReturn}{Returns} +Output prefix +\end{DoxyReturn} +\mbox{\Hypertarget{class_parameters_a7291b970983c021569cd2e3a0573592c}\label{class_parameters_a7291b970983c021569cd2e3a0573592c}} +\index{Parameters@{Parameters}!get\+Scheme\+File\+Name@{get\+Scheme\+File\+Name}} +\index{get\+Scheme\+File\+Name@{get\+Scheme\+File\+Name}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{get\+Scheme\+File\+Name()}{getSchemeFileName()}} +{\footnotesize\ttfamily Parameters\+::get\+Scheme\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\begin{DoxyReturn}{Returns} +name of the scheme file name used (P\+G\+SE) +\end{DoxyReturn} +\mbox{\Hypertarget{class_parameters_a38057c2ae3d11b578c8f199d73683ee1}\label{class_parameters_a38057c2ae3d11b578c8f199d73683ee1}} +\index{Parameters@{Parameters}!get\+Traj\+File\+Name@{get\+Traj\+File\+Name}} +\index{get\+Traj\+File\+Name@{get\+Traj\+File\+Name}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{get\+Traj\+File\+Name()}{getTrajFileName()}} +{\footnotesize\ttfamily Parameters\+::get\+Traj\+File\+Name (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\begin{DoxyReturn}{Returns} +trajectory prefix +\end{DoxyReturn} +\mbox{\Hypertarget{class_parameters_adb6064f329732640c226608d6e1ddb60}\label{class_parameters_adb6064f329732640c226608d6e1ddb60}} +\index{Parameters@{Parameters}!get\+Write\+Text\+Flag@{get\+Write\+Text\+Flag}} +\index{get\+Write\+Text\+Flag@{get\+Write\+Text\+Flag}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{get\+Write\+Text\+Flag()}{getWriteTextFlag()}} +{\footnotesize\ttfamily Parameters\+::get\+Write\+Text\+Flag (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\begin{DoxyReturn}{Returns} +flag of the text write traj +\end{DoxyReturn} +\mbox{\Hypertarget{class_parameters_a21817e9a0207da2adf32611bcaf889ef}\label{class_parameters_a21817e9a0207da2adf32611bcaf889ef}} +\index{Parameters@{Parameters}!get\+Write\+Traj\+Flag@{get\+Write\+Traj\+Flag}} +\index{get\+Write\+Traj\+Flag@{get\+Write\+Traj\+Flag}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{get\+Write\+Traj\+Flag()}{getWriteTrajFlag()}} +{\footnotesize\ttfamily Parameters\+::get\+Write\+Traj\+Flag (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +\begin{DoxyReturn}{Returns} +flag of the binary traj file writer +\end{DoxyReturn} +\mbox{\Hypertarget{class_parameters_a73d64bb093a93c2b806883f5504d8fb5}\label{class_parameters_a73d64bb093a93c2b806883f5504d8fb5}} +\index{Parameters@{Parameters}!ini\+Walkers\+File\+Name@{ini\+Walkers\+File\+Name}} +\index{ini\+Walkers\+File\+Name@{ini\+Walkers\+File\+Name}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{ini\+Walkers\+File\+Name()}{iniWalkersFileName()}} +{\footnotesize\ttfamily Parameters\+::ini\+Walkers\+File\+Name (\begin{DoxyParamCaption}\item[{std\+::string}]{ini\+\_\+walkers\+\_\+file\+\_\+ }\end{DoxyParamCaption})} + +\begin{DoxyReturn}{Returns} +initial position walkers file name +\end{DoxyReturn} +\mbox{\Hypertarget{class_parameters_afa8dd9d59fa727c3c2b2fe366efb2c14}\label{class_parameters_afa8dd9d59fa727c3c2b2fe366efb2c14}} +\index{Parameters@{Parameters}!read\+Scheme\+File@{read\+Scheme\+File}} +\index{read\+Scheme\+File@{read\+Scheme\+File}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{read\+Scheme\+File()}{readSchemeFile()}} +{\footnotesize\ttfamily Parameters\+::read\+Scheme\+File (\begin{DoxyParamCaption}\item[{std\+::string}]{conf\+\_\+file }\end{DoxyParamCaption})} + + + +Reads all the parameters from a scheme file in the correct format the function scales them if necessary. The parameters are passed by listing, first, the parameter name, followed by the value. The supported parameters are\+: number of walkers (N), number of steps (T), duration (duration), P\+G\+SE scheme file (scheme\+\_\+file), min voxles limits (min limits), max voxel limits (max\+\_\+limits), diffusivity (diffusivity), index name for the trajectory and output values (out\+\_\+traj\+\_\+file\+\_\+index), initial walker position file (ini\+\_\+walkers\+\_\+file), write a txt traj flag and header (write\+\_\+text), write binary traj file and header, write\+\_\+bin, flag to scale the values from estandar unit (scale\+\_\+from\+\_\+stu), random seed (seed). + + +\begin{DoxyParams}{Parameters} +{\em conf\+\_\+file} & \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_parameters_a7af2bd289f8c8de738d643bb8e05ac62}\label{class_parameters_a7af2bd289f8c8de738d643bb8e05ac62}} +\index{Parameters@{Parameters}!set\+Diffusivity@{set\+Diffusivity}} +\index{set\+Diffusivity@{set\+Diffusivity}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{set\+Diffusivity()}{setDiffusivity()}} +{\footnotesize\ttfamily Parameters\+::set\+Diffusivity (\begin{DoxyParamCaption}\item[{double}]{Diff }\end{DoxyParamCaption})} + + + +set the simulation diffusivity. + + +\begin{DoxyParams}{Parameters} +{\em Diff} & diffusivity value. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_parameters_a96764612c6ee5aeb684e1348e47b2308}\label{class_parameters_a96764612c6ee5aeb684e1348e47b2308}} +\index{Parameters@{Parameters}!set\+Max\+Limits@{set\+Max\+Limits}} +\index{set\+Max\+Limits@{set\+Max\+Limits}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{set\+Max\+Limits()}{setMaxLimits()}} +{\footnotesize\ttfamily Parameters\+::set\+Max\+Limits (\begin{DoxyParamCaption}\item[{Eigen\+::\+Vector3d}]{max\+\_\+limits\+\_\+ }\end{DoxyParamCaption})} + + + +set the bottom left corner of the voxel to be simulated. + + +\begin{DoxyParams}{Parameters} +{\em max\+\_\+limits\+\_\+} & vector with the maximum voxel limits (bottom right corner). \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_parameters_a73a4f685a35f8f7012609effb30a17d8}\label{class_parameters_a73a4f685a35f8f7012609effb30a17d8}} +\index{Parameters@{Parameters}!set\+Min\+Limits@{set\+Min\+Limits}} +\index{set\+Min\+Limits@{set\+Min\+Limits}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{set\+Min\+Limits()}{setMinLimits()}} +{\footnotesize\ttfamily Parameters\+::set\+Min\+Limits (\begin{DoxyParamCaption}\item[{Eigen\+::\+Vector3d}]{min\+\_\+limits\+\_\+ }\end{DoxyParamCaption})} + + + +set the bottom left corner of the voxel to be simulated. + + +\begin{DoxyParams}{Parameters} +{\em min\+\_\+limits\+\_\+} & vector with the minimum voxel limits (bottom left corner). \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_parameters_af61156929c1abed67da0a1c9920ca508}\label{class_parameters_af61156929c1abed67da0a1c9920ca508}} +\index{Parameters@{Parameters}!set\+Num\+Steps@{set\+Num\+Steps}} +\index{set\+Num\+Steps@{set\+Num\+Steps}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{set\+Num\+Steps()}{setNumSteps()}} +{\footnotesize\ttfamily Parameters\+::set\+Num\+Steps (\begin{DoxyParamCaption}\item[{unsigned}]{T }\end{DoxyParamCaption})} + + + +set the number of steps in the simulation. + + +\begin{DoxyParams}{Parameters} +{\em T} & number of steps \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_parameters_aec6b8dc2c119405ab2cdc4e6622ac616}\label{class_parameters_aec6b8dc2c119405ab2cdc4e6622ac616}} +\index{Parameters@{Parameters}!set\+Output\+Base\+File\+Name@{set\+Output\+Base\+File\+Name}} +\index{set\+Output\+Base\+File\+Name@{set\+Output\+Base\+File\+Name}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{set\+Output\+Base\+File\+Name()}{setOutputBaseFileName()}} +{\footnotesize\ttfamily Parameters\+::set\+Output\+Base\+File\+Name (\begin{DoxyParamCaption}\item[{std\+::string}]{output\+\_\+base\+\_\+name\+\_\+ }\end{DoxyParamCaption})} + + + +Set the prefix of the name for all the outputs in the simulation. + + +\begin{DoxyParams}{Parameters} +{\em output\+\_\+base\+\_\+name} & prefix for the outputs \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_parameters_a95ca6c28a5c87363460ca48eed5f065f}\label{class_parameters_a95ca6c28a5c87363460ca48eed5f065f}} +\index{Parameters@{Parameters}!set\+Scheme\+File\+Name@{set\+Scheme\+File\+Name}} +\index{set\+Scheme\+File\+Name@{set\+Scheme\+File\+Name}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{set\+Scheme\+File\+Name()}{setSchemeFileName()}} +{\footnotesize\ttfamily Parameters\+::set\+Scheme\+File\+Name (\begin{DoxyParamCaption}\item[{std\+::string}]{scheme\+\_\+file\+\_\+ }\end{DoxyParamCaption})} + + + +Sets the scheme file name to be used for the data synthesis. + + +\begin{DoxyParams}{Parameters} +{\em scheme\+\_\+file\+\_\+} & scheme (P\+G\+SE )file name. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_parameters_a934a87940878dc78b75ae4c230132f75}\label{class_parameters_a934a87940878dc78b75ae4c230132f75}} +\index{Parameters@{Parameters}!set\+Sim\+Duration@{set\+Sim\+Duration}} +\index{set\+Sim\+Duration@{set\+Sim\+Duration}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{set\+Sim\+Duration()}{setSimDuration()}} +{\footnotesize\ttfamily Parameters\+::set\+Sim\+Duration (\begin{DoxyParamCaption}\item[{double}]{duration }\end{DoxyParamCaption})} + + + +sets the simulation duration. + + +\begin{DoxyParams}{Parameters} +{\em duration} & simulation duration. \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_parameters_ac07671c27ff8f0ec9f5d8bdc656e7ffb}\label{class_parameters_ac07671c27ff8f0ec9f5d8bdc656e7ffb}} +\index{Parameters@{Parameters}!set\+Traj\+File\+Name@{set\+Traj\+File\+Name}} +\index{set\+Traj\+File\+Name@{set\+Traj\+File\+Name}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{set\+Traj\+File\+Name()}{setTrajFileName()}} +{\footnotesize\ttfamily Parameters\+::set\+Traj\+File\+Name (\begin{DoxyParamCaption}\item[{std\+::string}]{traj\+\_\+file\+\_\+ }\end{DoxyParamCaption})} + + + +Set the prefix of the name for the traj file (txt and .traj) + + +\begin{DoxyParams}{Parameters} +{\em traj\+\_\+file\+\_\+} & prefix of the traj file. \\ +\hline +\end{DoxyParams} + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_parameters_abe008f02a49ef7f7a6f041f79cc81fbb}\label{class_parameters_abe008f02a49ef7f7a6f041f79cc81fbb}} +\index{Parameters@{Parameters}!collision\+\_\+sphere\+\_\+distance@{collision\+\_\+sphere\+\_\+distance}} +\index{collision\+\_\+sphere\+\_\+distance@{collision\+\_\+sphere\+\_\+distance}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{collision\+\_\+sphere\+\_\+distance}{collision\_sphere\_distance}} +{\footnotesize\ttfamily double Parameters\+::collision\+\_\+sphere\+\_\+distance = 0} + +Custiom size for the collision sphere \mbox{\Hypertarget{class_parameters_a669c92fe7864a00da04bba0c2af93a16}\label{class_parameters_a669c92fe7864a00da04bba0c2af93a16}} +\index{Parameters@{Parameters}!compute\+Volume@{compute\+Volume}} +\index{compute\+Volume@{compute\+Volume}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{compute\+Volume}{computeVolume}} +{\footnotesize\ttfamily bool Parameters\+::compute\+Volume} + +Forces the volumen computation (slower) even without custom sampling \mbox{\Hypertarget{class_parameters_af023e7efce57b9da0837731db6a85c87}\label{class_parameters_af023e7efce57b9da0837731db6a85c87}} +\index{Parameters@{Parameters}!custom\+\_\+sampling\+\_\+area@{custom\+\_\+sampling\+\_\+area}} +\index{custom\+\_\+sampling\+\_\+area@{custom\+\_\+sampling\+\_\+area}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{custom\+\_\+sampling\+\_\+area}{custom\_sampling\_area}} +{\footnotesize\ttfamily bool Parameters\+::custom\+\_\+sampling\+\_\+area} + +True if a custom sampling area is defined (voxel for default) \mbox{\Hypertarget{class_parameters_abdef3b0fe62c5fdca7d417d01edd7422}\label{class_parameters_abdef3b0fe62c5fdca7d417d01edd7422}} +\index{Parameters@{Parameters}!cylinders\+\_\+files@{cylinders\+\_\+files}} +\index{cylinders\+\_\+files@{cylinders\+\_\+files}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{cylinders\+\_\+files}{cylinders\_files}} +{\footnotesize\ttfamily std\+::vector$<$std\+::string$>$ Parameters\+::cylinders\+\_\+files} + +file paths with a list of cilinders obstacles \mbox{\Hypertarget{class_parameters_add48efa1d9fe056fdb21fe2d2d92533d}\label{class_parameters_add48efa1d9fe056fdb21fe2d2d92533d}} +\index{Parameters@{Parameters}!diffusivity@{diffusivity}} +\index{diffusivity@{diffusivity}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{diffusivity}{diffusivity}} +{\footnotesize\ttfamily double Parameters\+::diffusivity} + +D, diffusivity constant \mbox{\Hypertarget{class_parameters_ac1a5fa4c00eaaf1b40789f329ae20e9a}\label{class_parameters_ac1a5fa4c00eaaf1b40789f329ae20e9a}} +\index{Parameters@{Parameters}!discard\+\_\+illegals@{discard\+\_\+illegals}} +\index{discard\+\_\+illegals@{discard\+\_\+illegals}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{discard\+\_\+illegals}{discard\_illegals}} +{\footnotesize\ttfamily bool Parameters\+::discard\+\_\+illegals = true} + +flag, true to discard possible illegal crossings, Trump by default. \mbox{\Hypertarget{class_parameters_ab1815ac94d73ca8b56a9f12fca04cb89}\label{class_parameters_ab1815ac94d73ca8b56a9f12fca04cb89}} +\index{Parameters@{Parameters}!discard\+\_\+stucks@{discard\+\_\+stucks}} +\index{discard\+\_\+stucks@{discard\+\_\+stucks}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{discard\+\_\+stucks}{discard\_stucks}} +{\footnotesize\ttfamily bool Parameters\+::discard\+\_\+stucks = true} + +flag, true to discard posible stuck particles (max bouncing reached) \mbox{\Hypertarget{class_parameters_aaef8b4218392fb19de2c5c886f5f7fa0}\label{class_parameters_aaef8b4218392fb19de2c5c886f5f7fa0}} +\index{Parameters@{Parameters}!gamma\+\_\+packing@{gamma\+\_\+packing}} +\index{gamma\+\_\+packing@{gamma\+\_\+packing}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{gamma\+\_\+packing}{gamma\_packing}} +{\footnotesize\ttfamily bool Parameters\+::gamma\+\_\+packing} + +flag, true if a gamma distribution of cylinders will be initialized \mbox{\Hypertarget{class_parameters_aad79d8e720492fd880ee021c6320dfe0}\label{class_parameters_aad79d8e720492fd880ee021c6320dfe0}} +\index{Parameters@{Parameters}!hex\+\_\+packing@{hex\+\_\+packing}} +\index{hex\+\_\+packing@{hex\+\_\+packing}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{hex\+\_\+packing}{hex\_packing}} +{\footnotesize\ttfamily bool Parameters\+::hex\+\_\+packing} + +flag, true if an haxagonal packing should be used \mbox{\Hypertarget{class_parameters_a3c49b55dc2a2af1c5ddfc3426e2a7936}\label{class_parameters_a3c49b55dc2a2af1c5ddfc3426e2a7936}} +\index{Parameters@{Parameters}!hex\+\_\+packing\+\_\+radius@{hex\+\_\+packing\+\_\+radius}} +\index{hex\+\_\+packing\+\_\+radius@{hex\+\_\+packing\+\_\+radius}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{hex\+\_\+packing\+\_\+radius}{hex\_packing\_radius}} +{\footnotesize\ttfamily double Parameters\+::hex\+\_\+packing\+\_\+radius} + +float, constant radius for the cylinders \mbox{\Hypertarget{class_parameters_a480338071cedf966fdb79b37d9ebe656}\label{class_parameters_a480338071cedf966fdb79b37d9ebe656}} +\index{Parameters@{Parameters}!hex\+\_\+packing\+\_\+separation@{hex\+\_\+packing\+\_\+separation}} +\index{hex\+\_\+packing\+\_\+separation@{hex\+\_\+packing\+\_\+separation}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{hex\+\_\+packing\+\_\+separation}{hex\_packing\_separation}} +{\footnotesize\ttfamily double Parameters\+::hex\+\_\+packing\+\_\+separation} + +float, separation distance betwen cylinders (separation $>$ 2$\ast$radius) \mbox{\Hypertarget{class_parameters_a1dd221193dd0ad7e34a6b4f7c496d899}\label{class_parameters_a1dd221193dd0ad7e34a6b4f7c496d899}} +\index{Parameters@{Parameters}!img\+\_\+signal@{img\+\_\+signal}} +\index{img\+\_\+signal@{img\+\_\+signal}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{img\+\_\+signal}{img\_signal}} +{\footnotesize\ttfamily bool Parameters\+::img\+\_\+signal} + +True to save the img part of the dwi signal (false by default) \mbox{\Hypertarget{class_parameters_aea1568fbc8a92bd90303ea8afc9e8c63}\label{class_parameters_aea1568fbc8a92bd90303ea8afc9e8c63}} +\index{Parameters@{Parameters}!ini\+\_\+delta\+\_\+pos@{ini\+\_\+delta\+\_\+pos}} +\index{ini\+\_\+delta\+\_\+pos@{ini\+\_\+delta\+\_\+pos}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{ini\+\_\+delta\+\_\+pos}{ini\_delta\_pos}} +{\footnotesize\ttfamily std\+::vector$<$float$>$ Parameters\+::ini\+\_\+delta\+\_\+pos} + +Delta position for the walkers \mbox{\Hypertarget{class_parameters_a87cb2db5b45bf9cb36e74903fecfaa6e}\label{class_parameters_a87cb2db5b45bf9cb36e74903fecfaa6e}} +\index{Parameters@{Parameters}!ini\+\_\+walker\+\_\+flag@{ini\+\_\+walker\+\_\+flag}} +\index{ini\+\_\+walker\+\_\+flag@{ini\+\_\+walker\+\_\+flag}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{ini\+\_\+walker\+\_\+flag}{ini\_walker\_flag}} +{\footnotesize\ttfamily std\+::string Parameters\+::ini\+\_\+walker\+\_\+flag} + +where to initialize the walkers \mbox{\Hypertarget{class_parameters_a84db69d29321fccb7cc7ea724a74df50}\label{class_parameters_a84db69d29321fccb7cc7ea724a74df50}} +\index{Parameters@{Parameters}!ini\+\_\+walkers\+\_\+file@{ini\+\_\+walkers\+\_\+file}} +\index{ini\+\_\+walkers\+\_\+file@{ini\+\_\+walkers\+\_\+file}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{ini\+\_\+walkers\+\_\+file}{ini\_walkers\_file}} +{\footnotesize\ttfamily std\+::string Parameters\+::ini\+\_\+walkers\+\_\+file} + +initial walker position file (if any) \mbox{\Hypertarget{class_parameters_ae01ac4f7d6d3b9eea6799f5c929ddf00}\label{class_parameters_ae01ac4f7d6d3b9eea6799f5c929ddf00}} +\index{Parameters@{Parameters}!ini\+\_\+walkers\+\_\+file\+\_\+count@{ini\+\_\+walkers\+\_\+file\+\_\+count}} +\index{ini\+\_\+walkers\+\_\+file\+\_\+count@{ini\+\_\+walkers\+\_\+file\+\_\+count}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{ini\+\_\+walkers\+\_\+file\+\_\+count}{ini\_walkers\_file\_count}} +{\footnotesize\ttfamily unsigned Parameters\+::ini\+\_\+walkers\+\_\+file\+\_\+count} + +number of walker positions initialize in the configuration file \mbox{\Hypertarget{class_parameters_ae30abbd794dee7f5aaf5d3d51152acef}\label{class_parameters_ae30abbd794dee7f5aaf5d3d51152acef}} +\index{Parameters@{Parameters}!log\+\_\+opp@{log\+\_\+opp}} +\index{log\+\_\+opp@{log\+\_\+opp}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{log\+\_\+opp}{log\_opp}} +{\footnotesize\ttfamily bool Parameters\+::log\+\_\+opp = false} + +flag, true to save one per process output \mbox{\Hypertarget{class_parameters_a947e4b1fef66466119ea7b2e8e2bc0e4}\label{class_parameters_a947e4b1fef66466119ea7b2e8e2bc0e4}} +\index{Parameters@{Parameters}!log\+\_\+phase\+\_\+shift@{log\+\_\+phase\+\_\+shift}} +\index{log\+\_\+phase\+\_\+shift@{log\+\_\+phase\+\_\+shift}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{log\+\_\+phase\+\_\+shift}{log\_phase\_shift}} +{\footnotesize\ttfamily bool Parameters\+::log\+\_\+phase\+\_\+shift = false} + +flag, true to save the final phase shift distribution \mbox{\Hypertarget{class_parameters_a1f5a62a35d6521994a623d0fd0a98a24}\label{class_parameters_a1f5a62a35d6521994a623d0fd0a98a24}} +\index{Parameters@{Parameters}!log\+\_\+propagator@{log\+\_\+propagator}} +\index{log\+\_\+propagator@{log\+\_\+propagator}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{log\+\_\+propagator}{log\_propagator}} +{\footnotesize\ttfamily bool Parameters\+::log\+\_\+propagator = false} + +flag, true saves the propagator for a given set of directions and times \mbox{\Hypertarget{class_parameters_a879b4c717e0f59c9bbc4b7810b8fdde3}\label{class_parameters_a879b4c717e0f59c9bbc4b7810b8fdde3}} +\index{Parameters@{Parameters}!max\+\_\+limits@{max\+\_\+limits}} +\index{max\+\_\+limits@{max\+\_\+limits}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{max\+\_\+limits}{max\_limits}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Parameters\+::max\+\_\+limits} + +voxel max limits (if any) \mbox{\Hypertarget{class_parameters_a2bf25423e72a562d5812ed0df3e06e2d}\label{class_parameters_a2bf25423e72a562d5812ed0df3e06e2d}} +\index{Parameters@{Parameters}!max\+\_\+sampling\+\_\+area@{max\+\_\+sampling\+\_\+area}} +\index{max\+\_\+sampling\+\_\+area@{max\+\_\+sampling\+\_\+area}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{max\+\_\+sampling\+\_\+area}{max\_sampling\_area}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Parameters\+::max\+\_\+sampling\+\_\+area} + +Max defining point to delimiter the uniform sampling of walkers \mbox{\Hypertarget{class_parameters_a66ad8359ef1cc76e8d5581a402cc86b5}\label{class_parameters_a66ad8359ef1cc76e8d5581a402cc86b5}} +\index{Parameters@{Parameters}!max\+\_\+simulation\+\_\+time@{max\+\_\+simulation\+\_\+time}} +\index{max\+\_\+simulation\+\_\+time@{max\+\_\+simulation\+\_\+time}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{max\+\_\+simulation\+\_\+time}{max\_simulation\_time}} +{\footnotesize\ttfamily double Parameters\+::max\+\_\+simulation\+\_\+time = 0} + +Maximum simulation time for the D\+Y\+N\+A\+M\+IC S\+I\+M\+U\+L\+A\+T\+I\+ON \mbox{\Hypertarget{class_parameters_a0b44e239201caecaebdb7e956ead1e0c}\label{class_parameters_a0b44e239201caecaebdb7e956ead1e0c}} +\index{Parameters@{Parameters}!min\+\_\+cyl\+\_\+radii@{min\+\_\+cyl\+\_\+radii}} +\index{min\+\_\+cyl\+\_\+radii@{min\+\_\+cyl\+\_\+radii}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{min\+\_\+cyl\+\_\+radii}{min\_cyl\_radii}} +{\footnotesize\ttfamily float Parameters\+::min\+\_\+cyl\+\_\+radii} + +Minimum radii (in um) to be sampled \mbox{\Hypertarget{class_parameters_aa9d387477810c2bb574b83ecd1fbf8f0}\label{class_parameters_aa9d387477810c2bb574b83ecd1fbf8f0}} +\index{Parameters@{Parameters}!min\+\_\+limits@{min\+\_\+limits}} +\index{min\+\_\+limits@{min\+\_\+limits}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{min\+\_\+limits}{min\_limits}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Parameters\+::min\+\_\+limits} + +voxel min limits (if any) (bottom left corner) \mbox{\Hypertarget{class_parameters_a8b7e1481e63d5ac9a36eed8ab310d315}\label{class_parameters_a8b7e1481e63d5ac9a36eed8ab310d315}} +\index{Parameters@{Parameters}!min\+\_\+sampling\+\_\+area@{min\+\_\+sampling\+\_\+area}} +\index{min\+\_\+sampling\+\_\+area@{min\+\_\+sampling\+\_\+area}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{min\+\_\+sampling\+\_\+area}{min\_sampling\_area}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Parameters\+::min\+\_\+sampling\+\_\+area} + +Min defining point to delimiter the uniform sampling of walkers \mbox{\Hypertarget{class_parameters_aab0de21efc3f85e5c44205ed5ebf9d4d}\label{class_parameters_aab0de21efc3f85e5c44205ed5ebf9d4d}} +\index{Parameters@{Parameters}!num\+\_\+proc@{num\+\_\+proc}} +\index{num\+\_\+proc@{num\+\_\+proc}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{num\+\_\+proc}{num\_proc}} +{\footnotesize\ttfamily unsigned Parameters\+::num\+\_\+proc} + +Number of precessors/process to launch in parallel \mbox{\Hypertarget{class_parameters_a3475e7efae778bc7720fe6c17274eef0}\label{class_parameters_a3475e7efae778bc7720fe6c17274eef0}} +\index{Parameters@{Parameters}!num\+\_\+steps@{num\+\_\+steps}} +\index{num\+\_\+steps@{num\+\_\+steps}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{num\+\_\+steps}{num\_steps}} +{\footnotesize\ttfamily unsigned Parameters\+::num\+\_\+steps} + +T, number of steps \mbox{\Hypertarget{class_parameters_a35329cc60a28986ee4020457d46921fb}\label{class_parameters_a35329cc60a28986ee4020457d46921fb}} +\index{Parameters@{Parameters}!num\+\_\+walkers@{num\+\_\+walkers}} +\index{num\+\_\+walkers@{num\+\_\+walkers}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{num\+\_\+walkers}{num\_walkers}} +{\footnotesize\ttfamily unsigned Parameters\+::num\+\_\+walkers} + +N, number of walkers \mbox{\Hypertarget{class_parameters_a0d15fd8f1f5c332174864c3acbaf5e10}\label{class_parameters_a0d15fd8f1f5c332174864c3acbaf5e10}} +\index{Parameters@{Parameters}!number\+\_\+subdivisions@{number\+\_\+subdivisions}} +\index{number\+\_\+subdivisions@{number\+\_\+subdivisions}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{number\+\_\+subdivisions}{number\_subdivisions}} +{\footnotesize\ttfamily unsigned Parameters\+::number\+\_\+subdivisions = 0} + +saves the number of subdivisions for an initialzied voxel (needed) \mbox{\Hypertarget{class_parameters_a2e5fa275543b4a52599e694e64546e13}\label{class_parameters_a2e5fa275543b4a52599e694e64546e13}} +\index{Parameters@{Parameters}!obstacle\+\_\+permeability@{obstacle\+\_\+permeability}} +\index{obstacle\+\_\+permeability@{obstacle\+\_\+permeability}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{obstacle\+\_\+permeability}{obstacle\_permeability}} +{\footnotesize\ttfamily double Parameters\+::obstacle\+\_\+permeability = 0} + +Obstacles permeability \mbox{\Hypertarget{class_parameters_a2662ccc98a7a2b9f0c81f223a8f0748f}\label{class_parameters_a2662ccc98a7a2b9f0c81f223a8f0748f}} +\index{Parameters@{Parameters}!output\+\_\+base\+\_\+name@{output\+\_\+base\+\_\+name}} +\index{output\+\_\+base\+\_\+name@{output\+\_\+base\+\_\+name}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{output\+\_\+base\+\_\+name}{output\_base\_name}} +{\footnotesize\ttfamily std\+::string Parameters\+::output\+\_\+base\+\_\+name} + +output files base name (path + sufix) \mbox{\Hypertarget{class_parameters_a76984fe140c1c6c8a047dd622561200d}\label{class_parameters_a76984fe140c1c6c8a047dd622561200d}} +\index{Parameters@{Parameters}!P\+L\+Y\+\_\+files@{P\+L\+Y\+\_\+files}} +\index{P\+L\+Y\+\_\+files@{P\+L\+Y\+\_\+files}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{P\+L\+Y\+\_\+files}{PLY\_files}} +{\footnotesize\ttfamily std\+::vector$<$std\+::string$>$ Parameters\+::\+P\+L\+Y\+\_\+files} + +file paths with P\+LY obstacle files \mbox{\Hypertarget{class_parameters_a67f6e450517ee21255d72d41bc9f0ce7}\label{class_parameters_a67f6e450517ee21255d72d41bc9f0ce7}} +\index{Parameters@{Parameters}!P\+L\+Y\+\_\+percolation@{P\+L\+Y\+\_\+percolation}} +\index{P\+L\+Y\+\_\+percolation@{P\+L\+Y\+\_\+percolation}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{P\+L\+Y\+\_\+percolation}{PLY\_percolation}} +{\footnotesize\ttfamily std\+::vector$<$double$>$ Parameters\+::\+P\+L\+Y\+\_\+percolation} + +Auxiliary vector to save P\+LY percolation \mbox{\Hypertarget{class_parameters_a97ed7a4d1b6c6ea8f6507a6a0fc04698}\label{class_parameters_a97ed7a4d1b6c6ea8f6507a6a0fc04698}} +\index{Parameters@{Parameters}!P\+L\+Y\+\_\+scales@{P\+L\+Y\+\_\+scales}} +\index{P\+L\+Y\+\_\+scales@{P\+L\+Y\+\_\+scales}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{P\+L\+Y\+\_\+scales}{PLY\_scales}} +{\footnotesize\ttfamily std\+::vector$<$double$>$ Parameters\+::\+P\+L\+Y\+\_\+scales} + +Auxiliary vector to save P\+LY file scales \mbox{\Hypertarget{class_parameters_a4bbfed0148cec6e10d0e90d85437a37a}\label{class_parameters_a4bbfed0148cec6e10d0e90d85437a37a}} +\index{Parameters@{Parameters}!prop\+\_\+dirs@{prop\+\_\+dirs}} +\index{prop\+\_\+dirs@{prop\+\_\+dirs}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{prop\+\_\+dirs}{prop\_dirs}} +{\footnotesize\ttfamily std\+::vector$<$Eigen\+::\+Vector3f$>$ Parameters\+::prop\+\_\+dirs} + +Saves the directions used to compute the propagator \mbox{\Hypertarget{class_parameters_a559e66b65a2cb4391d1099bf0db6ec44}\label{class_parameters_a559e66b65a2cb4391d1099bf0db6ec44}} +\index{Parameters@{Parameters}!record\+\_\+phase\+\_\+times@{record\+\_\+phase\+\_\+times}} +\index{record\+\_\+phase\+\_\+times@{record\+\_\+phase\+\_\+times}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{record\+\_\+phase\+\_\+times}{record\_phase\_times}} +{\footnotesize\ttfamily std\+::vector$<$unsigned$>$ Parameters\+::record\+\_\+phase\+\_\+times} + +time indexes, used to save the phase shif of all walkers at certain time \mbox{\Hypertarget{class_parameters_a4f884a7effd3a8816c78084ff3c2b202}\label{class_parameters_a4f884a7effd3a8816c78084ff3c2b202}} +\index{Parameters@{Parameters}!record\+\_\+pos\+\_\+times@{record\+\_\+pos\+\_\+times}} +\index{record\+\_\+pos\+\_\+times@{record\+\_\+pos\+\_\+times}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{record\+\_\+pos\+\_\+times}{record\_pos\_times}} +{\footnotesize\ttfamily std\+::vector$<$unsigned$>$ Parameters\+::record\+\_\+pos\+\_\+times} + +time indexes, used to save the position of all walkers at certain time \mbox{\Hypertarget{class_parameters_af47bd2eada81c6c581aaa8c70d04c8d6}\label{class_parameters_af47bd2eada81c6c581aaa8c70d04c8d6}} +\index{Parameters@{Parameters}!record\+\_\+prop\+\_\+times@{record\+\_\+prop\+\_\+times}} +\index{record\+\_\+prop\+\_\+times@{record\+\_\+prop\+\_\+times}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{record\+\_\+prop\+\_\+times}{record\_prop\_times}} +{\footnotesize\ttfamily std\+::vector$<$unsigned$>$ Parameters\+::record\+\_\+prop\+\_\+times} + +time indexes, used to save the mean propagator of the walkers at c. times \mbox{\Hypertarget{class_parameters_ab737ef40d88faa6ee8a701013d9d2984}\label{class_parameters_ab737ef40d88faa6ee8a701013d9d2984}} +\index{Parameters@{Parameters}!save\+\_\+phase\+\_\+shift@{save\+\_\+phase\+\_\+shift}} +\index{save\+\_\+phase\+\_\+shift@{save\+\_\+phase\+\_\+shift}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{save\+\_\+phase\+\_\+shift}{save\_phase\_shift}} +{\footnotesize\ttfamily bool Parameters\+::save\+\_\+phase\+\_\+shift} + +flag, saves the phase shift distribution for all particles \mbox{\Hypertarget{class_parameters_a3c37f738b7700bdc22845bc725d51e6f}\label{class_parameters_a3c37f738b7700bdc22845bc725d51e6f}} +\index{Parameters@{Parameters}!scale\+\_\+from\+\_\+stu@{scale\+\_\+from\+\_\+stu}} +\index{scale\+\_\+from\+\_\+stu@{scale\+\_\+from\+\_\+stu}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{scale\+\_\+from\+\_\+stu}{scale\_from\_stu}} +{\footnotesize\ttfamily bool Parameters\+::scale\+\_\+from\+\_\+stu} + +flag, true if the scheme file is in standar units m,s \mbox{\Hypertarget{class_parameters_afbb7caab773abb16753263a0b04c8a2c}\label{class_parameters_afbb7caab773abb16753263a0b04c8a2c}} +\index{Parameters@{Parameters}!scheme\+\_\+file@{scheme\+\_\+file}} +\index{scheme\+\_\+file@{scheme\+\_\+file}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{scheme\+\_\+file}{scheme\_file}} +{\footnotesize\ttfamily std\+::string Parameters\+::scheme\+\_\+file} + +signal adquisition scheme file (if any) \mbox{\Hypertarget{class_parameters_afa076397ed9cbdc4c88215e29b850e3c}\label{class_parameters_afa076397ed9cbdc4c88215e29b850e3c}} +\index{Parameters@{Parameters}!seed@{seed}} +\index{seed@{seed}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{seed}{seed}} +{\footnotesize\ttfamily long Parameters\+::seed} + +Initial seed for the random generator \mbox{\Hypertarget{class_parameters_adacb13afed18c07dfd269fae76f828b3}\label{class_parameters_adacb13afed18c07dfd269fae76f828b3}} +\index{Parameters@{Parameters}!separate\+\_\+signals@{separate\+\_\+signals}} +\index{separate\+\_\+signals@{separate\+\_\+signals}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{separate\+\_\+signals}{separate\_signals}} +{\footnotesize\ttfamily bool Parameters\+::separate\+\_\+signals} + +Separate the signals into intra and extra (compute\+\_\+volume on) \mbox{\Hypertarget{class_parameters_acbe36f055786ddcf8480a49d2c34c914}\label{class_parameters_acbe36f055786ddcf8480a49d2c34c914}} +\index{Parameters@{Parameters}!sim\+\_\+duration@{sim\+\_\+duration}} +\index{sim\+\_\+duration@{sim\+\_\+duration}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{sim\+\_\+duration}{sim\_duration}} +{\footnotesize\ttfamily double Parameters\+::sim\+\_\+duration} + +simulation total time \mbox{\Hypertarget{class_parameters_a43362cb6e3ea49cc9db9e52c3ebc7140}\label{class_parameters_a43362cb6e3ea49cc9db9e52c3ebc7140}} +\index{Parameters@{Parameters}!subdivision\+\_\+flag@{subdivision\+\_\+flag}} +\index{subdivision\+\_\+flag@{subdivision\+\_\+flag}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{subdivision\+\_\+flag}{subdivision\_flag}} +{\footnotesize\ttfamily bool Parameters\+::subdivision\+\_\+flag = false} + +flag to check if we have several voxel subdivision to compute the signal \mbox{\Hypertarget{class_parameters_a3c05ff7a30f151c384b83ce3adca26fa}\label{class_parameters_a3c05ff7a30f151c384b83ce3adca26fa}} +\index{Parameters@{Parameters}!subdivisions@{subdivisions}} +\index{subdivisions@{subdivisions}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{subdivisions}{subdivisions}} +{\footnotesize\ttfamily std\+::vector$<$\hyperlink{class_subdivision}{Subdivision}$>$ Parameters\+::subdivisions} + +saves actual positions of the subdivision to compute the signal \mbox{\Hypertarget{class_parameters_a1733bfcb8391c494b7b1a317dfda5e44}\label{class_parameters_a1733bfcb8391c494b7b1a317dfda5e44}} +\index{Parameters@{Parameters}!subdivisions\+\_\+file@{subdivisions\+\_\+file}} +\index{subdivisions\+\_\+file@{subdivisions\+\_\+file}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{subdivisions\+\_\+file}{subdivisions\_file}} +{\footnotesize\ttfamily std\+::string Parameters\+::subdivisions\+\_\+file = \char`\"{}\char`\"{}} + +file with the list of subdivisions coordinates to compute the signal \mbox{\Hypertarget{class_parameters_a75346dc3b7a41548a2f9e0560343df24}\label{class_parameters_a75346dc3b7a41548a2f9e0560343df24}} +\index{Parameters@{Parameters}!traj\+\_\+file@{traj\+\_\+file}} +\index{traj\+\_\+file@{traj\+\_\+file}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{traj\+\_\+file}{traj\_file}} +{\footnotesize\ttfamily std\+::string Parameters\+::traj\+\_\+file} + +\hyperlink{class_trajectory}{Trajectory} file path \mbox{\Hypertarget{class_parameters_aabce43eb8376a94a8e765da99b58d003}\label{class_parameters_aabce43eb8376a94a8e765da99b58d003}} +\index{Parameters@{Parameters}!verbatim@{verbatim}} +\index{verbatim@{verbatim}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{verbatim}{verbatim}} +{\footnotesize\ttfamily bool Parameters\+::verbatim} + +False to omit displaying state and warnings \mbox{\Hypertarget{class_parameters_aefbd07d8501ebb9311bbb1ea7c37be26}\label{class_parameters_aefbd07d8501ebb9311bbb1ea7c37be26}} +\index{Parameters@{Parameters}!voxels\+\_\+list@{voxels\+\_\+list}} +\index{voxels\+\_\+list@{voxels\+\_\+list}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{voxels\+\_\+list}{voxels\_list}} +{\footnotesize\ttfamily std\+::vector$<$std\+::pair$<$Eigen\+::\+Vector3d,Eigen\+::\+Vector3d$>$ $>$ Parameters\+::voxels\+\_\+list} + +voxel min and max positions list (deprecated) \mbox{\Hypertarget{class_parameters_a4c98120687d1ba332d0c6cd5a14c59fb}\label{class_parameters_a4c98120687d1ba332d0c6cd5a14c59fb}} +\index{Parameters@{Parameters}!write\+\_\+bin@{write\+\_\+bin}} +\index{write\+\_\+bin@{write\+\_\+bin}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{write\+\_\+bin}{write\_bin}} +{\footnotesize\ttfamily bool Parameters\+::write\+\_\+bin} + +flag, writes the output signal in binary format (True by default) \mbox{\Hypertarget{class_parameters_ac9408092b6254b4ccfecc85decbb1944}\label{class_parameters_ac9408092b6254b4ccfecc85decbb1944}} +\index{Parameters@{Parameters}!write\+\_\+traj@{write\+\_\+traj}} +\index{write\+\_\+traj@{write\+\_\+traj}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{write\+\_\+traj}{write\_traj}} +{\footnotesize\ttfamily bool Parameters\+::write\+\_\+traj} + +flag, write a traj file or not, binary format only \mbox{\Hypertarget{class_parameters_a15446bf0727ebfe03f119821c7d8ed0f}\label{class_parameters_a15446bf0727ebfe03f119821c7d8ed0f}} +\index{Parameters@{Parameters}!write\+\_\+txt@{write\+\_\+txt}} +\index{write\+\_\+txt@{write\+\_\+txt}!Parameters@{Parameters}} +\subsubsection{\texorpdfstring{write\+\_\+txt}{write\_txt}} +{\footnotesize\ttfamily bool Parameters\+::write\+\_\+txt} + +flag, writes D\+WI output signals in .txt if True + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/parameters.\+h\item +src/parameters.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_plane.tex b/doc/latex/class_plane.tex new file mode 100644 index 0000000..76fa296 --- /dev/null +++ b/doc/latex/class_plane.tex @@ -0,0 +1,57 @@ +\hypertarget{class_plane}{}\section{Plane Class Reference} +\label{class_plane}\index{Plane@{Plane}} + + +Main class. Implements basic voxel limits and operations. =================================================/. + + + + +{\ttfamily \#include $<$voxel.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_plane_a8b1516b02b3ab4bdfe48234db82da168}\label{class_plane_a8b1516b02b3ab4bdfe48234db82da168}} +{\bfseries Plane} (Eigen\+::\+Vector3d normal\+\_\+, Eigen\+::\+Vector3d plane\+\_\+center\+\_\+, double d\+\_\+) +\item +\mbox{\Hypertarget{class_plane_a942208920a6e4762e3dc9aab76305667}\label{class_plane_a942208920a6e4762e3dc9aab76305667}} +{\bfseries Plane} (Eigen\+::\+Vector3d \&a, Eigen\+::\+Vector3d \&b, Eigen\+::\+Vector3d \&c, Eigen\+::\+Vector3d \&d) +\item +\mbox{\Hypertarget{class_plane_a1a4e24c5ca029ceb787f291a11adac8f}\label{class_plane_a1a4e24c5ca029ceb787f291a11adac8f}} +bool {\bfseries Check\+Collision} (\hyperlink{class_walker}{Walker} \&walker, Eigen\+::\+Vector3d \&step, double tmax, \hyperlink{class_collision}{Collision} \&colision) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_plane_a229ee65fd1663c7e7bd101309ddcf5e0}\label{class_plane_a229ee65fd1663c7e7bd101309ddcf5e0}} +Eigen\+::\+Vector3d {\bfseries normal} +\item +\mbox{\Hypertarget{class_plane_a20cfe0415a4f25f03d2d639ae9a647e9}\label{class_plane_a20cfe0415a4f25f03d2d639ae9a647e9}} +Eigen\+::\+Vector3d {\bfseries plane\+\_\+center} +\item +\mbox{\Hypertarget{class_plane_a13e69abc574bead3f8f450bbe2b43cf9}\label{class_plane_a13e69abc574bead3f8f450bbe2b43cf9}} +double {\bfseries d} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Main class. Implements basic voxel limits and operations. =================================================/. + +Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done. + +\begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +July 2016 +\end{DoxyDate} +\begin{DoxyVersion}{Version} +0.\+2 =============================================================================================================+ +\end{DoxyVersion} +Auxiliary class to implements plane\textquotesingle{}s interactions with particles. + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/voxel.\+h\item +src/voxel.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_propagator.tex b/doc/latex/class_propagator.tex new file mode 100644 index 0000000..0c2d5a5 --- /dev/null +++ b/doc/latex/class_propagator.tex @@ -0,0 +1,32 @@ +\hypertarget{class_propagator}{}\section{Propagator Class Reference} +\label{class_propagator}\index{Propagator@{Propagator}} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_propagator_aadc489a4d28c7a91e092fb7cef3b7a62}\label{class_propagator_aadc489a4d28c7a91e092fb7cef3b7a62}} +void {\bfseries init\+Propagator} () +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_propagator_a77f3732528ba16cef0092bc03a9d3020}\label{class_propagator_a77f3732528ba16cef0092bc03a9d3020}} +uint {\bfseries num\+\_\+dirs} =0 +\item +\mbox{\Hypertarget{class_propagator_ab2e3c09934290a84abd3726faadbadc3}\label{class_propagator_ab2e3c09934290a84abd3726faadbadc3}} +uint {\bfseries num\+\_\+times} = 0 +\item +\mbox{\Hypertarget{class_propagator_a2adc46036a2a2a8417ccdcd57e0c5f55}\label{class_propagator_a2adc46036a2a2a8417ccdcd57e0c5f55}} +Eigen\+::\+Matrix3\+Xf {\bfseries directions} +\item +\mbox{\Hypertarget{class_propagator_a9908ca97eaa8011f368510bc8ecc2343}\label{class_propagator_a9908ca97eaa8011f368510bc8ecc2343}} +std\+::vector$<$ unsigned $>$ {\bfseries log\+\_\+times} +\item +\mbox{\Hypertarget{class_propagator_aac52b49320c34b14b8bb8c5186f16bab}\label{class_propagator_aac52b49320c34b14b8bb8c5186f16bab}} +std\+::vector$<$ std\+::vector$<$ float $>$ $>$ {\bfseries propagator\+\_\+log} +\end{DoxyCompactItemize} + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/propagator.\+h\item +src/propagator.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_scheme.tex b/doc/latex/class_scheme.tex new file mode 100644 index 0000000..024ffbe --- /dev/null +++ b/doc/latex/class_scheme.tex @@ -0,0 +1,107 @@ +\hypertarget{class_scheme}{}\section{Scheme Class Reference} +\label{class_scheme}\index{Scheme@{Scheme}} + + +Auxiliary class to save scheme\+\_\+files values =============================================================/. + + + + +{\ttfamily \#include $<$scheme.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_scheme_a932eafa378988202a457037db3846aac}\label{class_scheme_a932eafa378988202a457037db3846aac}} +{\bfseries Scheme} (std\+::string scheme\+\_\+file\+\_\+) +\item +\mbox{\Hypertarget{class_scheme_a6c117cd4fa744d12abecb9184df30356}\label{class_scheme_a6c117cd4fa744d12abecb9184df30356}} +void {\bfseries read\+Scheme\+File} (std\+::string scheme\+\_\+file\+\_\+, bool \hyperlink{class_scheme_ac66ecb38621208f8dd1b5334919316cf}{scale\+\_\+from\+\_\+stu}=0) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +std\+::string \hyperlink{class_scheme_afa0549aa16f4f6c62d6c397909be3350}{scheme\+\_\+file} +\item +std\+::string \hyperlink{class_scheme_a276a907de6afa60b6826552f337e310b}{header} +\item +std\+::string \hyperlink{class_scheme_a3a767ed00f8859a04857812e370c6db5}{type} +\item +int \hyperlink{class_scheme_ae41c5ea2b3aab4492f95b2479945b729}{num\+\_\+rep} +\item +float \hyperlink{class_scheme_ae2b4a7f1d0f06f4bea2a7f2761cbe2a7}{duration} +\item +float \hyperlink{class_scheme_a9715a33d087d317724e96229572ebe0d}{T} +\item +bool \hyperlink{class_scheme_ac66ecb38621208f8dd1b5334919316cf}{scale\+\_\+from\+\_\+stu} +\item +std\+::vector$<$ std\+::vector$<$ double $>$ $>$ \hyperlink{class_scheme_aa0d26e624075fbac339a746ed10b2dc0}{scheme} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Auxiliary class to save scheme\+\_\+files values =============================================================/. + +Helper class to store, handle and read scheme files values . \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +November 2016 \subsection*{0.\+2 } +\end{DoxyDate} + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_scheme_ae2b4a7f1d0f06f4bea2a7f2761cbe2a7}\label{class_scheme_ae2b4a7f1d0f06f4bea2a7f2761cbe2a7}} +\index{Scheme@{Scheme}!duration@{duration}} +\index{duration@{duration}!Scheme@{Scheme}} +\subsubsection{\texorpdfstring{duration}{duration}} +{\footnotesize\ttfamily float Scheme\+::duration} + +time duration (wavefroms) \mbox{\Hypertarget{class_scheme_a276a907de6afa60b6826552f337e310b}\label{class_scheme_a276a907de6afa60b6826552f337e310b}} +\index{Scheme@{Scheme}!header@{header}} +\index{header@{header}!Scheme@{Scheme}} +\subsubsection{\texorpdfstring{header}{header}} +{\footnotesize\ttfamily std\+::string Scheme\+::header} + +Header on the scheme\+\_\+file \mbox{\Hypertarget{class_scheme_ae41c5ea2b3aab4492f95b2479945b729}\label{class_scheme_ae41c5ea2b3aab4492f95b2479945b729}} +\index{Scheme@{Scheme}!num\+\_\+rep@{num\+\_\+rep}} +\index{num\+\_\+rep@{num\+\_\+rep}!Scheme@{Scheme}} +\subsubsection{\texorpdfstring{num\+\_\+rep}{num\_rep}} +{\footnotesize\ttfamily int Scheme\+::num\+\_\+rep} + +Number of gradients \mbox{\Hypertarget{class_scheme_ac66ecb38621208f8dd1b5334919316cf}\label{class_scheme_ac66ecb38621208f8dd1b5334919316cf}} +\index{Scheme@{Scheme}!scale\+\_\+from\+\_\+stu@{scale\+\_\+from\+\_\+stu}} +\index{scale\+\_\+from\+\_\+stu@{scale\+\_\+from\+\_\+stu}!Scheme@{Scheme}} +\subsubsection{\texorpdfstring{scale\+\_\+from\+\_\+stu}{scale\_from\_stu}} +{\footnotesize\ttfamily bool Scheme\+::scale\+\_\+from\+\_\+stu} + +True if the input is in standar units \mbox{\Hypertarget{class_scheme_aa0d26e624075fbac339a746ed10b2dc0}\label{class_scheme_aa0d26e624075fbac339a746ed10b2dc0}} +\index{Scheme@{Scheme}!scheme@{scheme}} +\index{scheme@{scheme}!Scheme@{Scheme}} +\subsubsection{\texorpdfstring{scheme}{scheme}} +{\footnotesize\ttfamily std\+::vector$<$ std\+::vector$<$double$>$ $>$ Scheme\+::scheme} + +\hyperlink{class_scheme}{Scheme} values \mbox{\Hypertarget{class_scheme_afa0549aa16f4f6c62d6c397909be3350}\label{class_scheme_afa0549aa16f4f6c62d6c397909be3350}} +\index{Scheme@{Scheme}!scheme\+\_\+file@{scheme\+\_\+file}} +\index{scheme\+\_\+file@{scheme\+\_\+file}!Scheme@{Scheme}} +\subsubsection{\texorpdfstring{scheme\+\_\+file}{scheme\_file}} +{\footnotesize\ttfamily std\+::string Scheme\+::scheme\+\_\+file} + +\hyperlink{class_scheme}{Scheme} file path \mbox{\Hypertarget{class_scheme_a9715a33d087d317724e96229572ebe0d}\label{class_scheme_a9715a33d087d317724e96229572ebe0d}} +\index{Scheme@{Scheme}!T@{T}} +\index{T@{T}!Scheme@{Scheme}} +\subsubsection{\texorpdfstring{T}{T}} +{\footnotesize\ttfamily float Scheme\+::T} + +number of time steps (wavefroms) \mbox{\Hypertarget{class_scheme_a3a767ed00f8859a04857812e370c6db5}\label{class_scheme_a3a767ed00f8859a04857812e370c6db5}} +\index{Scheme@{Scheme}!type@{type}} +\index{type@{type}!Scheme@{Scheme}} +\subsubsection{\texorpdfstring{type}{type}} +{\footnotesize\ttfamily std\+::string Scheme\+::type} + +Sequence type (P\+G\+SE only so far) + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/scheme.\+h\item +src/scheme.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_sentinels.tex b/doc/latex/class_sentinels.tex new file mode 100644 index 0000000..16c2a90 --- /dev/null +++ b/doc/latex/class_sentinels.tex @@ -0,0 +1,29 @@ +\hypertarget{class_sentinels}{}\section{Sentinels Class Reference} +\label{class_sentinels}\index{Sentinels@{Sentinels}} + + +\hyperlink{class_collision}{Collision} Final class ====================================================================/. + + + + +{\ttfamily \#include $<$sentinel.\+h$>$} + + + +\subsection{Detailed Description} +\hyperlink{class_collision}{Collision} Final class ====================================================================/. + +Auxiliar class to check error and misbehaviours during the particle dynamics. \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +Junes 2017 + + +\end{DoxyDate} +Class used to check the possible numerical errors or un-\/handed cases inside the dynamic simulation. + +The documentation for this class was generated from the following file\+:\begin{DoxyCompactItemize} +\item +src/sentinel.\+h\end{DoxyCompactItemize} diff --git a/doc/latex/class_sim_errno.tex b/doc/latex/class_sim_errno.tex new file mode 100644 index 0000000..80a66c8 --- /dev/null +++ b/doc/latex/class_sim_errno.tex @@ -0,0 +1,341 @@ +\hypertarget{class_sim_errno}{}\section{Sim\+Errno Class Reference} +\label{class_sim_errno}\index{Sim\+Errno@{Sim\+Errno}} + + +Simulation Input and parameter errors handling class =================================================/. + + + + +{\ttfamily \#include $<$simerrno.\+h$>$} + +\subsection*{Static Public Member Functions} +\begin{DoxyCompactItemize} +\item +static bool \hyperlink{class_sim_errno_a8786cb077da0c41a32cd5d96f03fde35}{check\+File\+Exist} (const std\+::string name) +\begin{DoxyCompactList}\small\item\em Return true if the file does exist, false otherwise. \end{DoxyCompactList}\item +static bool \hyperlink{class_sim_errno_aabc7284492cb5f8ef38fce7d4501abbd}{check\+Simulation\+Parameters} (\hyperlink{class_parameters}{Parameters} \¶ms) +\begin{DoxyCompactList}\small\item\em Return false if any of the parameters are inconsistent or bugged. In may assert the program. \end{DoxyCompactList}\item +static bool \hyperlink{class_sim_errno_ad5048e2a5f5630118ec614afdd4fd197}{check\+Scheme\+File} (\hyperlink{class_parameters}{Parameters} \¶ms) +\begin{DoxyCompactList}\small\item\em Return false if any of the parameters are inconsistent or bugged. In may assert the program. \end{DoxyCompactList}\item +static bool \hyperlink{class_sim_errno_a3a4c60541ecf163e50f70f8b9795be29}{check\+P\+L\+Y\+Files} (\hyperlink{class_parameters}{Parameters} \¶ms) +\begin{DoxyCompactList}\small\item\em Return false if any of the P\+LY files are inconsistent or bugged. In may assert the program. \end{DoxyCompactList}\item +static bool \hyperlink{class_sim_errno_a077a20f0886022c924911e24fbc91b52}{check\+Cylinders\+List\+File} (\hyperlink{class_parameters}{Parameters} \¶ms) +\begin{DoxyCompactList}\small\item\em Return false if any of the cylinder list files are inconsistent or bugged. In may assert the program. \end{DoxyCompactList}\item +static bool \hyperlink{class_sim_errno_a21ed929e9b81e9059d4da3ca03c9d80c}{check\+Init\+Walker\+File} (\hyperlink{class_parameters}{Parameters} \¶ms) +\begin{DoxyCompactList}\small\item\em Return false if the initial position file is inconsistent or bugged. In may assert the program. \end{DoxyCompactList}\item +static bool \hyperlink{class_sim_errno_a9b9712b12322cdd0667d6fc4ee7aceaf}{check\+Voxel\+Limits} (\hyperlink{class_parameters}{Parameters} \¶ms) +\begin{DoxyCompactList}\small\item\em Return false if the voxel instances are inconsistent or bugged. In may assert the program. \end{DoxyCompactList}\item +static bool \hyperlink{class_sim_errno_a4b59c263ba564ebc9edbd40fe9ec3bc8}{check\+Configuration\+File} (const char $\ast$configuration\+\_\+file) +\begin{DoxyCompactList}\small\item\em Return false if the scheme file does not exist or there are inconsistent or bugs. In may assert the program. \end{DoxyCompactList}\item +static void \hyperlink{class_sim_errno_a87782efbd7825d733d3f0c760cf47222}{print\+Simulatin\+Info} (\hyperlink{class_parameters}{Parameters} \¶ms, std\+::ostream \&, bool color=1) +\item +static void \hyperlink{class_sim_errno_a195d934b873f7b10be5f57cf6f77e80f}{check\+Ouput\+Prefix\+And\+Write\+Info} (\hyperlink{class_parameters}{Parameters} \¶ms) +\begin{DoxyCompactList}\small\item\em Return false if the output location and prefix are inconsistence or bugged. \end{DoxyCompactList}\item +static bool \hyperlink{class_sim_errno_aa997e9bec44280eec04ce320f8d75031}{check\+Gamma\+Distribution\+Paramaters} (\hyperlink{class_parameters}{Parameters} \¶ms) +\begin{DoxyCompactList}\small\item\em Return false if the there are errors or inconsistencies in the gamma distr. parameters. \end{DoxyCompactList}\item +static void \hyperlink{class_sim_errno_acd92c1f938453f86e5f6d6967ed09754}{warning} (std\+::string message, std\+::ostream \&, bool color=1) +\item +static void \hyperlink{class_sim_errno_aef262fffecd567fe6ebcf57aed23e8dd}{info} (std\+::string message, std\+::ostream \&, bool color=1) +\item +static void \hyperlink{class_sim_errno_aafbfe0b71883701a1c8882135c54cfe4}{info\+Menu} (std\+::string message, std\+::string value, std\+::ostream \&, bool color=1, int space=0) +\item +static void \hyperlink{class_sim_errno_a1d49dc3d396b355aee645c6d35436aa9}{error} (std\+::string message, std\+::ostream \&, bool color=1) +\item +static void \hyperlink{class_sim_errno_a786ea76043026ad10aec48bc81137144}{expected\+Time} (std\+::string completed, std\+::string time, std\+::ostream \&, bool color=1, std\+::string steps\+\_\+second=\char`\"{}\char`\"{}, std\+::string endl\+\_\+str=\char`\"{}\char`\"{}) +\item +\mbox{\Hypertarget{class_sim_errno_a5f21f4c97adee0132d4d64b30b89fecd}\label{class_sim_errno_a5f21f4c97adee0132d4d64b30b89fecd}} +static std\+::string {\bfseries current\+Date\+Time} () +\item +static bool \hyperlink{class_sim_errno_a71e44ab51c81191171464b1371887844}{check\+Subdivisions\+File} (\hyperlink{class_parameters}{Parameters} \¶ms) +\begin{DoxyCompactList}\small\item\em Return false if any of the elements in the file are miss configured. \end{DoxyCompactList}\item +static void \hyperlink{class_sim_errno_a3dfc14a69998cff0ee82f8bb6ef2ddc4}{append\+Repetition\+Label} (\hyperlink{class_parameters}{Parameters} \¶ms) +\begin{DoxyCompactList}\small\item\em Appends a repetition label on the prefix command so no results are overwritten, helpful if you are running batch of simulation inside a server. \end{DoxyCompactList}\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Simulation Input and parameter errors handling class =================================================/. + +Class ot handle the errors in the parameters, logical and on the syntaxis. \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +March 2016 + + +\end{DoxyDate} +Class to handle the errors in the parameters, logical and on the syntax + +This class contains a set of static methods to check that the configuration files exist and that the parameters are correctly set. This may cause asserts E\+R\+R\+O\+RS or W\+A\+R\+N\+I\+N\+GS. + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_sim_errno_a3dfc14a69998cff0ee82f8bb6ef2ddc4}\label{class_sim_errno_a3dfc14a69998cff0ee82f8bb6ef2ddc4}} +\index{Sim\+Errno@{Sim\+Errno}!append\+Repetition\+Label@{append\+Repetition\+Label}} +\index{append\+Repetition\+Label@{append\+Repetition\+Label}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{append\+Repetition\+Label()}{appendRepetitionLabel()}} +{\footnotesize\ttfamily void Sim\+Errno\+::append\+Repetition\+Label (\begin{DoxyParamCaption}\item[{\hyperlink{class_parameters}{Parameters} \&}]{params }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Appends a repetition label on the prefix command so no results are overwritten, helpful if you are running batch of simulation inside a server. + + +\begin{DoxyParams}{Parameters} +{\em parameter} & instance \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_a4b59c263ba564ebc9edbd40fe9ec3bc8}\label{class_sim_errno_a4b59c263ba564ebc9edbd40fe9ec3bc8}} +\index{Sim\+Errno@{Sim\+Errno}!check\+Configuration\+File@{check\+Configuration\+File}} +\index{check\+Configuration\+File@{check\+Configuration\+File}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{check\+Configuration\+File()}{checkConfigurationFile()}} +{\footnotesize\ttfamily bool Sim\+Errno\+::check\+Configuration\+File (\begin{DoxyParamCaption}\item[{const char $\ast$}]{configuration\+\_\+file }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Return false if the scheme file does not exist or there are inconsistent or bugs. In may assert the program. + + +\begin{DoxyParams}{Parameters} +{\em parameter} & instance \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_a077a20f0886022c924911e24fbc91b52}\label{class_sim_errno_a077a20f0886022c924911e24fbc91b52}} +\index{Sim\+Errno@{Sim\+Errno}!check\+Cylinders\+List\+File@{check\+Cylinders\+List\+File}} +\index{check\+Cylinders\+List\+File@{check\+Cylinders\+List\+File}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{check\+Cylinders\+List\+File()}{checkCylindersListFile()}} +{\footnotesize\ttfamily bool Sim\+Errno\+::check\+Cylinders\+List\+File (\begin{DoxyParamCaption}\item[{\hyperlink{class_parameters}{Parameters} \&}]{params }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Return false if any of the cylinder list files are inconsistent or bugged. In may assert the program. + + +\begin{DoxyParams}{Parameters} +{\em parameter} & instance \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_a8786cb077da0c41a32cd5d96f03fde35}\label{class_sim_errno_a8786cb077da0c41a32cd5d96f03fde35}} +\index{Sim\+Errno@{Sim\+Errno}!check\+File\+Exist@{check\+File\+Exist}} +\index{check\+File\+Exist@{check\+File\+Exist}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{check\+File\+Exist()}{checkFileExist()}} +{\footnotesize\ttfamily static bool Sim\+Errno\+::check\+File\+Exist (\begin{DoxyParamCaption}\item[{const std\+::string}]{name }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [static]}} + + + +Return true if the file does exist, false otherwise. + + +\begin{DoxyParams}{Parameters} +{\em name} & file path \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_aa997e9bec44280eec04ce320f8d75031}\label{class_sim_errno_aa997e9bec44280eec04ce320f8d75031}} +\index{Sim\+Errno@{Sim\+Errno}!check\+Gamma\+Distribution\+Paramaters@{check\+Gamma\+Distribution\+Paramaters}} +\index{check\+Gamma\+Distribution\+Paramaters@{check\+Gamma\+Distribution\+Paramaters}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{check\+Gamma\+Distribution\+Paramaters()}{checkGammaDistributionParamaters()}} +{\footnotesize\ttfamily bool Sim\+Errno\+::check\+Gamma\+Distribution\+Paramaters (\begin{DoxyParamCaption}\item[{\hyperlink{class_parameters}{Parameters} \&}]{params }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Return false if the there are errors or inconsistencies in the gamma distr. parameters. + + +\begin{DoxyParams}{Parameters} +{\em parameter} & instance \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_a21ed929e9b81e9059d4da3ca03c9d80c}\label{class_sim_errno_a21ed929e9b81e9059d4da3ca03c9d80c}} +\index{Sim\+Errno@{Sim\+Errno}!check\+Init\+Walker\+File@{check\+Init\+Walker\+File}} +\index{check\+Init\+Walker\+File@{check\+Init\+Walker\+File}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{check\+Init\+Walker\+File()}{checkInitWalkerFile()}} +{\footnotesize\ttfamily bool Sim\+Errno\+::check\+Init\+Walker\+File (\begin{DoxyParamCaption}\item[{\hyperlink{class_parameters}{Parameters} \&}]{params }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Return false if the initial position file is inconsistent or bugged. In may assert the program. + + +\begin{DoxyParams}{Parameters} +{\em parameter} & instance \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_a195d934b873f7b10be5f57cf6f77e80f}\label{class_sim_errno_a195d934b873f7b10be5f57cf6f77e80f}} +\index{Sim\+Errno@{Sim\+Errno}!check\+Ouput\+Prefix\+And\+Write\+Info@{check\+Ouput\+Prefix\+And\+Write\+Info}} +\index{check\+Ouput\+Prefix\+And\+Write\+Info@{check\+Ouput\+Prefix\+And\+Write\+Info}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{check\+Ouput\+Prefix\+And\+Write\+Info()}{checkOuputPrefixAndWriteInfo()}} +{\footnotesize\ttfamily void Sim\+Errno\+::check\+Ouput\+Prefix\+And\+Write\+Info (\begin{DoxyParamCaption}\item[{\hyperlink{class_parameters}{Parameters} \&}]{params }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Return false if the output location and prefix are inconsistence or bugged. + + +\begin{DoxyParams}{Parameters} +{\em parameter} & instance \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_a3a4c60541ecf163e50f70f8b9795be29}\label{class_sim_errno_a3a4c60541ecf163e50f70f8b9795be29}} +\index{Sim\+Errno@{Sim\+Errno}!check\+P\+L\+Y\+Files@{check\+P\+L\+Y\+Files}} +\index{check\+P\+L\+Y\+Files@{check\+P\+L\+Y\+Files}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{check\+P\+L\+Y\+Files()}{checkPLYFiles()}} +{\footnotesize\ttfamily bool Sim\+Errno\+::check\+P\+L\+Y\+Files (\begin{DoxyParamCaption}\item[{\hyperlink{class_parameters}{Parameters} \&}]{params }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Return false if any of the P\+LY files are inconsistent or bugged. In may assert the program. + + +\begin{DoxyParams}{Parameters} +{\em parameter} & instance \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_ad5048e2a5f5630118ec614afdd4fd197}\label{class_sim_errno_ad5048e2a5f5630118ec614afdd4fd197}} +\index{Sim\+Errno@{Sim\+Errno}!check\+Scheme\+File@{check\+Scheme\+File}} +\index{check\+Scheme\+File@{check\+Scheme\+File}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{check\+Scheme\+File()}{checkSchemeFile()}} +{\footnotesize\ttfamily bool Sim\+Errno\+::check\+Scheme\+File (\begin{DoxyParamCaption}\item[{\hyperlink{class_parameters}{Parameters} \&}]{params }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Return false if any of the parameters are inconsistent or bugged. In may assert the program. + + +\begin{DoxyParams}{Parameters} +{\em parameter} & instance \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_aabc7284492cb5f8ef38fce7d4501abbd}\label{class_sim_errno_aabc7284492cb5f8ef38fce7d4501abbd}} +\index{Sim\+Errno@{Sim\+Errno}!check\+Simulation\+Parameters@{check\+Simulation\+Parameters}} +\index{check\+Simulation\+Parameters@{check\+Simulation\+Parameters}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{check\+Simulation\+Parameters()}{checkSimulationParameters()}} +{\footnotesize\ttfamily bool Sim\+Errno\+::check\+Simulation\+Parameters (\begin{DoxyParamCaption}\item[{\hyperlink{class_parameters}{Parameters} \&}]{params }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Return false if any of the parameters are inconsistent or bugged. In may assert the program. + + +\begin{DoxyParams}{Parameters} +{\em parameter} & instance \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_a71e44ab51c81191171464b1371887844}\label{class_sim_errno_a71e44ab51c81191171464b1371887844}} +\index{Sim\+Errno@{Sim\+Errno}!check\+Subdivisions\+File@{check\+Subdivisions\+File}} +\index{check\+Subdivisions\+File@{check\+Subdivisions\+File}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{check\+Subdivisions\+File()}{checkSubdivisionsFile()}} +{\footnotesize\ttfamily bool Sim\+Errno\+::check\+Subdivisions\+File (\begin{DoxyParamCaption}\item[{\hyperlink{class_parameters}{Parameters} \&}]{params }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Return false if any of the elements in the file are miss configured. + + +\begin{DoxyParams}{Parameters} +{\em parameter} & instance \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_a9b9712b12322cdd0667d6fc4ee7aceaf}\label{class_sim_errno_a9b9712b12322cdd0667d6fc4ee7aceaf}} +\index{Sim\+Errno@{Sim\+Errno}!check\+Voxel\+Limits@{check\+Voxel\+Limits}} +\index{check\+Voxel\+Limits@{check\+Voxel\+Limits}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{check\+Voxel\+Limits()}{checkVoxelLimits()}} +{\footnotesize\ttfamily bool Sim\+Errno\+::check\+Voxel\+Limits (\begin{DoxyParamCaption}\item[{\hyperlink{class_parameters}{Parameters} \&}]{params }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + + +Return false if the voxel instances are inconsistent or bugged. In may assert the program. + + +\begin{DoxyParams}{Parameters} +{\em parameter} & instance \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_a1d49dc3d396b355aee645c6d35436aa9}\label{class_sim_errno_a1d49dc3d396b355aee645c6d35436aa9}} +\index{Sim\+Errno@{Sim\+Errno}!error@{error}} +\index{error@{error}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{error()}{error()}} +{\footnotesize\ttfamily void Sim\+Errno\+::error (\begin{DoxyParamCaption}\item[{std\+::string}]{message, }\item[{std\+::ostream \&}]{, }\item[{bool}]{color = {\ttfamily 1} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + +\begin{DoxyParams}{Parameters} +{\em iostream} & where to print ! \\ +\hline +{\em colour} & flag, false if no colour should be display or written \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_a786ea76043026ad10aec48bc81137144}\label{class_sim_errno_a786ea76043026ad10aec48bc81137144}} +\index{Sim\+Errno@{Sim\+Errno}!expected\+Time@{expected\+Time}} +\index{expected\+Time@{expected\+Time}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{expected\+Time()}{expectedTime()}} +{\footnotesize\ttfamily void Sim\+Errno\+::expected\+Time (\begin{DoxyParamCaption}\item[{std\+::string}]{completed, }\item[{std\+::string}]{time, }\item[{std\+::ostream \&}]{, }\item[{bool}]{color = {\ttfamily 1}, }\item[{std\+::string}]{steps\+\_\+second = {\ttfamily \char`\"{}\char`\"{}}, }\item[{std\+::string}]{endl\+\_\+str = {\ttfamily \char`\"{}\char`\"{}} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + +\begin{DoxyParams}{Parameters} +{\em iostream} & where to print ! \\ +\hline +{\em colour} & flag, false if no colour should be display or written ! \\ +\hline +{\em end} & flag, false if no end of line string should be printing \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_aef262fffecd567fe6ebcf57aed23e8dd}\label{class_sim_errno_aef262fffecd567fe6ebcf57aed23e8dd}} +\index{Sim\+Errno@{Sim\+Errno}!info@{info}} +\index{info@{info}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{info()}{info()}} +{\footnotesize\ttfamily void Sim\+Errno\+::info (\begin{DoxyParamCaption}\item[{std\+::string}]{message, }\item[{std\+::ostream \&}]{, }\item[{bool}]{color = {\ttfamily 1} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + +\begin{DoxyParams}{Parameters} +{\em iostream} & where to print \\ +\hline +{\em colour} & flag, false if no colour should be display or written \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_aafbfe0b71883701a1c8882135c54cfe4}\label{class_sim_errno_aafbfe0b71883701a1c8882135c54cfe4}} +\index{Sim\+Errno@{Sim\+Errno}!info\+Menu@{info\+Menu}} +\index{info\+Menu@{info\+Menu}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{info\+Menu()}{infoMenu()}} +{\footnotesize\ttfamily void Sim\+Errno\+::info\+Menu (\begin{DoxyParamCaption}\item[{std\+::string}]{message, }\item[{std\+::string}]{value, }\item[{std\+::ostream \&}]{, }\item[{bool}]{color = {\ttfamily 1}, }\item[{int}]{space = {\ttfamily 0} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + +\begin{DoxyParams}{Parameters} +{\em iostream} & where to print ! \\ +\hline +{\em colour} & flag, false if no colour should be display or written ! \\ +\hline +{\em spacing} & at the end of the message \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_a87782efbd7825d733d3f0c760cf47222}\label{class_sim_errno_a87782efbd7825d733d3f0c760cf47222}} +\index{Sim\+Errno@{Sim\+Errno}!print\+Simulatin\+Info@{print\+Simulatin\+Info}} +\index{print\+Simulatin\+Info@{print\+Simulatin\+Info}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{print\+Simulatin\+Info()}{printSimulatinInfo()}} +{\footnotesize\ttfamily void Sim\+Errno\+::print\+Simulatin\+Info (\begin{DoxyParamCaption}\item[{\hyperlink{class_parameters}{Parameters} \&}]{params, }\item[{std\+::ostream \&}]{, }\item[{bool}]{color = {\ttfamily 1} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + +\begin{DoxyParams}{Parameters} +{\em parameter} & instance \\ +\hline +{\em iostream} & to print to \\ +\hline +{\em color} & flag, false if no colour should be display or written \\ +\hline +\end{DoxyParams} +\mbox{\Hypertarget{class_sim_errno_acd92c1f938453f86e5f6d6967ed09754}\label{class_sim_errno_acd92c1f938453f86e5f6d6967ed09754}} +\index{Sim\+Errno@{Sim\+Errno}!warning@{warning}} +\index{warning@{warning}!Sim\+Errno@{Sim\+Errno}} +\subsubsection{\texorpdfstring{warning()}{warning()}} +{\footnotesize\ttfamily void Sim\+Errno\+::warning (\begin{DoxyParamCaption}\item[{std\+::string}]{message, }\item[{std\+::ostream \&}]{, }\item[{bool}]{color = {\ttfamily 1} }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [static]}} + + +\begin{DoxyParams}{Parameters} +{\em iostream} & where to print \\ +\hline +{\em colour} & flag, false if no colour should be display or written \\ +\hline +\end{DoxyParams} + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/simerrno.\+h\item +src/simerrno.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_simulable_sequence.tex b/doc/latex/class_simulable_sequence.tex new file mode 100644 index 0000000..bedf9ce --- /dev/null +++ b/doc/latex/class_simulable_sequence.tex @@ -0,0 +1,313 @@ +\hypertarget{class_simulable_sequence}{}\section{Simulable\+Sequence Class Reference} +\label{class_simulable_sequence}\index{Simulable\+Sequence@{Simulable\+Sequence}} + + +MR Sequence Primary Class =============================================================/. + + + + +{\ttfamily \#include $<$simulablesequence.\+h$>$} + + + +Inheritance diagram for Simulable\+Sequence\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=284pt]{class_simulable_sequence__inherit__graph} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +virtual void \hyperlink{class_simulable_sequence_a03a417776f5404b06c761ab9109e3e1d}{get\+Grad\+Impulse} (int i, double t, double t\+Last, Eigen\+::\+Vector3d \&Gdt)=0 +\item +virtual double \hyperlink{class_simulable_sequence_a85cdcf5f7bd5bed804a816e3c18840b7}{getb\+Value} (unsigned i) +\item +\mbox{\Hypertarget{class_simulable_sequence_a31a328cc716e039a53f9b12122050b83}\label{class_simulable_sequence_a31a328cc716e039a53f9b12122050b83}} +virtual double \hyperlink{class_simulable_sequence_a31a328cc716e039a53f9b12122050b83}{get\+Free\+Decay} (unsigned i, double D) +\begin{DoxyCompactList}\small\item\em Expected free Decay. \end{DoxyCompactList}\item +virtual void \hyperlink{class_simulable_sequence_ad7b2a30f563343aa65489aa553d4df63}{update\+\_\+phase\+\_\+shift} (double dt, double dt\+\_\+last, \hyperlink{class_walker}{Walker} walker)=0 +\item +virtual void \hyperlink{class_simulable_sequence_a175197d165ee7852094bc70cadc59589}{update\+\_\+phase\+\_\+shift} (double time\+\_\+step, Eigen\+::\+Matrix3\+Xd trajectory)=0 +\item +\mbox{\Hypertarget{class_simulable_sequence_af5621196178ee78b27e740dfe360815e}\label{class_simulable_sequence_af5621196178ee78b27e740dfe360815e}} +virtual void \hyperlink{class_simulable_sequence_af5621196178ee78b27e740dfe360815e}{update\+\_\+\+D\+W\+I\+\_\+signal} (\hyperlink{class_walker}{Walker} \&walker)=0 +\begin{DoxyCompactList}\small\item\em Updates the D\+WI signal using the cumulated phase shift. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_simulable_sequence_a2e16c0b0dcf1b90ad0afc53ab14e9250}\label{class_simulable_sequence_a2e16c0b0dcf1b90ad0afc53ab14e9250}} +virtual void \hyperlink{class_simulable_sequence_a2e16c0b0dcf1b90ad0afc53ab14e9250}{set\+Number\+Of\+Steps} (unsigned T)=0 +\begin{DoxyCompactList}\small\item\em Set the number of time steps if they are known. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_simulable_sequence_a3c5285531564cdb204894e6c6fc9204e}\label{class_simulable_sequence_a3c5285531564cdb204894e6c6fc9204e}} +virtual void \hyperlink{class_simulable_sequence_a3c5285531564cdb204894e6c6fc9204e}{compute\+Dynamic\+Time\+Steps} () +\begin{DoxyCompactList}\small\item\em Compute the time for all the steps when they are not constant. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_simulable_sequence_aa2434c3b2ef59d1cd8b822b8e3a2920c}\label{class_simulable_sequence_aa2434c3b2ef59d1cd8b822b8e3a2920c}} +virtual void \hyperlink{class_simulable_sequence_aa2434c3b2ef59d1cd8b822b8e3a2920c}{initialize\+Subdivision\+Signals} () +\begin{DoxyCompactList}\small\item\em Initialize the D\+WI signals for each subdivision. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_simulable_sequence_a3fad0e115a2ec07a8b1202608eba698e}\label{class_simulable_sequence_a3fad0e115a2ec07a8b1202608eba698e}} +virtual void \hyperlink{class_simulable_sequence_a3fad0e115a2ec07a8b1202608eba698e}{initialize\+Intra\+Extra\+Signals} () +\begin{DoxyCompactList}\small\item\em Initialize the D\+WI signals for each compartment (intra extra) \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_simulable_sequence_a372f6d9f448c537afde10e30b68428aa}\label{class_simulable_sequence_a372f6d9f448c537afde10e30b68428aa}} +virtual void {\bfseries write\+Resulting\+Data} (std\+::string output\+\_\+base\+\_\+name) +\item +\mbox{\Hypertarget{class_simulable_sequence_aa6c72a9d84fda0fe15551f84a28d427d}\label{class_simulable_sequence_aa6c72a9d84fda0fe15551f84a28d427d}} +virtual void {\bfseries write\+Phase\+Shift\+Distribution} (std\+::string output\+\_\+base\+\_\+name) +\item +\mbox{\Hypertarget{class_simulable_sequence_a49a95a0735a939b65495be51ce0fb1be}\label{class_simulable_sequence_a49a95a0735a939b65495be51ce0fb1be}} +virtual void {\bfseries clean\+Phase\+Shift} () +\item +\mbox{\Hypertarget{class_simulable_sequence_af8396d72ccbb4ad1e8a403e554b8e8e1}\label{class_simulable_sequence_af8396d72ccbb4ad1e8a403e554b8e8e1}} +virtual void {\bfseries clean\+D\+W\+I\+Signal} () +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +std\+::string \hyperlink{class_simulable_sequence_a9898335af9d8f639f65b73eeac8efb53}{scheme\+\_\+file} +\item +std\+::vector$<$ double $>$ \hyperlink{class_simulable_sequence_a083961d839ed1433206ccbc481996409}{D\+WI} +\item +std\+::vector$<$ double $>$ \hyperlink{class_simulable_sequence_ac64fb8110b769e180283365567bd4158}{D\+W\+I\+\_\+intra} +\item +std\+::vector$<$ double $>$ \hyperlink{class_simulable_sequence_a49a24269e364bcd02000ba575acc85ed}{D\+W\+I\+\_\+extra} +\item +std\+::vector$<$ double $>$ \hyperlink{class_simulable_sequence_a3708afa1322d72b59d3be20b740d107c}{D\+W\+Ii} +\item +std\+::vector$<$ double $>$ \hyperlink{class_simulable_sequence_a8691c0451c305869064862e30986c34c}{phase\+\_\+shift} +\item +int \hyperlink{class_simulable_sequence_aa524c45db6c27dd21acacf97d7951ac2}{num\+\_\+rep} +\item +bool \hyperlink{class_simulable_sequence_aa29f58ae224d92dd467a0845bd207324}{save\+\_\+phase\+\_\+shift} +\item +bool \hyperlink{class_simulable_sequence_a1de2d00a939f550af1947ae25acc4b97}{dynamic} +\item +double \hyperlink{class_simulable_sequence_a43e046af3bf6c498a5ad232058de8a90}{percent\+\_\+steps\+\_\+in} +\item +std\+::vector$<$ double $>$ \hyperlink{class_simulable_sequence_a7e7e1a0de6045046061ffccaba4fa5ee}{time\+\_\+steps} +\item +Eigen\+::\+Array\+X\+Xf \hyperlink{class_simulable_sequence_a4e45e2d935a05a7375b04718a49c9af7}{phase\+\_\+shift\+\_\+distribution} +\item +std\+::vector$<$ std\+::vector$<$ double $>$ $>$ \hyperlink{class_simulable_sequence_a2686ccfa89396eeadd0a0d4f7842623c}{sub\+\_\+\+D\+WI} +\item +std\+::vector$<$ std\+::vector$<$ double $>$ $>$ \hyperlink{class_simulable_sequence_a20a947108c3bb80ed45dd8851e777511}{sub\+\_\+\+D\+W\+I\+\_\+intra} +\item +std\+::vector$<$ std\+::vector$<$ double $>$ $>$ \hyperlink{class_simulable_sequence_ad7157eed5b79cf74c45b4185a2465eb6}{sub\+\_\+\+D\+W\+I\+\_\+extra} +\item +std\+::vector$<$ std\+::vector$<$ double $>$ $>$ \hyperlink{class_simulable_sequence_a1e958cc7d15337fa3ae0e58c8330f212}{sub\+\_\+\+D\+W\+Ii} +\item +bool \hyperlink{class_simulable_sequence_ae9e6e581ba16bbf81b693c0e4943bbf9}{subdivision\+\_\+flag} = false +\item +bool \hyperlink{class_simulable_sequence_a3278d9b5b22b0bfbdd0ce4bef0e1cc85}{separate\+\_\+signal} = false +\item +bool \hyperlink{class_simulable_sequence_a7603177060550acd31ece2c87fcdd2a9}{img\+\_\+signal} = false +\item +std\+::vector$<$ \hyperlink{class_subdivision}{Subdivision} $>$ \hyperlink{class_simulable_sequence_a77c721d4650578fdc3f44adfa91c030e}{subdivisions} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +MR Sequence Primary Class =============================================================/. + +Elemental base clase. Abstract class to synthesise the M\+RI signal + +\subsection*{Jonathan Rafael } + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_simulable_sequence_a85cdcf5f7bd5bed804a816e3c18840b7}\label{class_simulable_sequence_a85cdcf5f7bd5bed804a816e3c18840b7}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!getb\+Value@{getb\+Value}} +\index{getb\+Value@{getb\+Value}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{getb\+Value()}{getbValue()}} +{\footnotesize\ttfamily virtual double Simulable\+Sequence\+::getb\+Value (\begin{DoxyParamCaption}\item[{unsigned}]{i }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}, {\ttfamily [virtual]}} + + +\begin{DoxyParams}{Parameters} +{\em i} & index of the gradient in the scheme\+\_\+file (0,N-\/1) \\ +\hline +\end{DoxyParams} +\begin{DoxyReturn}{Returns} +b-\/value +\end{DoxyReturn} + + +Reimplemented in \hyperlink{class_p_g_s_e_sequence_a8b0671a505f79a601d3d4d2d9b7f36cc}{P\+G\+S\+E\+Sequence}. + +\mbox{\Hypertarget{class_simulable_sequence_a03a417776f5404b06c761ab9109e3e1d}\label{class_simulable_sequence_a03a417776f5404b06c761ab9109e3e1d}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!get\+Grad\+Impulse@{get\+Grad\+Impulse}} +\index{get\+Grad\+Impulse@{get\+Grad\+Impulse}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{get\+Grad\+Impulse()}{getGradImpulse()}} +{\footnotesize\ttfamily virtual void Simulable\+Sequence\+::get\+Grad\+Impulse (\begin{DoxyParamCaption}\item[{int}]{i, }\item[{double}]{t, }\item[{double}]{t\+Last, }\item[{Eigen\+::\+Vector3d \&}]{Gdt }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + +\begin{DoxyParams}{Parameters} +{\em i} & \hyperlink{class_walker}{Walker} index \\ +\hline +{\em t} & current time step (in milisenconds) \\ +\hline +{\em t\+Last} & last time step (in milisenconds) \\ +\hline +{\em Gdt} & vector to compute de G$\ast$dt impulse \\ +\hline +\end{DoxyParams} + + +Implemented in \hyperlink{class_gradient_waveform_a80dd810cb4e5a11dec311ac87e55ea18}{Gradient\+Waveform}, and \hyperlink{class_p_g_s_e_sequence_a3f2a705b7d3312944630f3d7f639e8e4}{P\+G\+S\+E\+Sequence}. + +\mbox{\Hypertarget{class_simulable_sequence_ad7b2a30f563343aa65489aa553d4df63}\label{class_simulable_sequence_ad7b2a30f563343aa65489aa553d4df63}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!update\+\_\+phase\+\_\+shift@{update\+\_\+phase\+\_\+shift}} +\index{update\+\_\+phase\+\_\+shift@{update\+\_\+phase\+\_\+shift}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{update\+\_\+phase\+\_\+shift()}{update\_phase\_shift()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily virtual void Simulable\+Sequence\+::update\+\_\+phase\+\_\+shift (\begin{DoxyParamCaption}\item[{double}]{dt, }\item[{double}]{dt\+\_\+last, }\item[{\hyperlink{class_walker}{Walker}}]{walker }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + +\begin{DoxyParams}{Parameters} +{\em i} & updated walker \\ +\hline +\end{DoxyParams} + + +Implemented in \hyperlink{class_p_g_s_e_sequence_a6914efd208eab28a1ee6a3f28ca65478}{P\+G\+S\+E\+Sequence}, and \hyperlink{class_gradient_waveform_a7421301b24b6c98e28ef9430287cdf8e}{Gradient\+Waveform}. + +\mbox{\Hypertarget{class_simulable_sequence_a175197d165ee7852094bc70cadc59589}\label{class_simulable_sequence_a175197d165ee7852094bc70cadc59589}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!update\+\_\+phase\+\_\+shift@{update\+\_\+phase\+\_\+shift}} +\index{update\+\_\+phase\+\_\+shift@{update\+\_\+phase\+\_\+shift}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{update\+\_\+phase\+\_\+shift()}{update\_phase\_shift()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily virtual void Simulable\+Sequence\+::update\+\_\+phase\+\_\+shift (\begin{DoxyParamCaption}\item[{double}]{time\+\_\+step, }\item[{Eigen\+::\+Matrix3\+Xd}]{trajectory }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [pure virtual]}} + + +\begin{DoxyParams}{Parameters} +{\em i} & updated the phase shift over a whole trajectory \\ +\hline +\end{DoxyParams} + + +Implemented in \hyperlink{class_p_g_s_e_sequence_a850a2f22cdf8b420888cfa906e03e078}{P\+G\+S\+E\+Sequence}, and \hyperlink{class_gradient_waveform_a2c606400c648cebd85827efa8d22b6bc}{Gradient\+Waveform}. + + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_simulable_sequence_a083961d839ed1433206ccbc481996409}\label{class_simulable_sequence_a083961d839ed1433206ccbc481996409}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!D\+WI@{D\+WI}} +\index{D\+WI@{D\+WI}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{D\+WI}{DWI}} +{\footnotesize\ttfamily std\+::vector$<$double$>$ Simulable\+Sequence\+::\+D\+WI} + +Real part of the D\+WI signal \mbox{\Hypertarget{class_simulable_sequence_a49a24269e364bcd02000ba575acc85ed}\label{class_simulable_sequence_a49a24269e364bcd02000ba575acc85ed}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!D\+W\+I\+\_\+extra@{D\+W\+I\+\_\+extra}} +\index{D\+W\+I\+\_\+extra@{D\+W\+I\+\_\+extra}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{D\+W\+I\+\_\+extra}{DWI\_extra}} +{\footnotesize\ttfamily std\+::vector$<$double$>$ Simulable\+Sequence\+::\+D\+W\+I\+\_\+extra} + +Real part of the D\+WI signal extra axonal only (if needed) \mbox{\Hypertarget{class_simulable_sequence_ac64fb8110b769e180283365567bd4158}\label{class_simulable_sequence_ac64fb8110b769e180283365567bd4158}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!D\+W\+I\+\_\+intra@{D\+W\+I\+\_\+intra}} +\index{D\+W\+I\+\_\+intra@{D\+W\+I\+\_\+intra}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{D\+W\+I\+\_\+intra}{DWI\_intra}} +{\footnotesize\ttfamily std\+::vector$<$double$>$ Simulable\+Sequence\+::\+D\+W\+I\+\_\+intra} + +Real part of the D\+WI signal intra axonal olny (if needed) \mbox{\Hypertarget{class_simulable_sequence_a3708afa1322d72b59d3be20b740d107c}\label{class_simulable_sequence_a3708afa1322d72b59d3be20b740d107c}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!D\+W\+Ii@{D\+W\+Ii}} +\index{D\+W\+Ii@{D\+W\+Ii}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{D\+W\+Ii}{DWIi}} +{\footnotesize\ttfamily std\+::vector$<$double$>$ Simulable\+Sequence\+::\+D\+W\+Ii} + +imaginary part of the D\+WI signal \mbox{\Hypertarget{class_simulable_sequence_a1de2d00a939f550af1947ae25acc4b97}\label{class_simulable_sequence_a1de2d00a939f550af1947ae25acc4b97}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!dynamic@{dynamic}} +\index{dynamic@{dynamic}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{dynamic}{dynamic}} +{\footnotesize\ttfamily bool Simulable\+Sequence\+::dynamic} + +Flag to indicate if the time steps are non-\/uniform \mbox{\Hypertarget{class_simulable_sequence_a7603177060550acd31ece2c87fcdd2a9}\label{class_simulable_sequence_a7603177060550acd31ece2c87fcdd2a9}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!img\+\_\+signal@{img\+\_\+signal}} +\index{img\+\_\+signal@{img\+\_\+signal}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{img\+\_\+signal}{img\_signal}} +{\footnotesize\ttfamily bool Simulable\+Sequence\+::img\+\_\+signal = false} + +flag to check if the img part will be computed or not (false default \mbox{\Hypertarget{class_simulable_sequence_aa524c45db6c27dd21acacf97d7951ac2}\label{class_simulable_sequence_aa524c45db6c27dd21acacf97d7951ac2}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!num\+\_\+rep@{num\+\_\+rep}} +\index{num\+\_\+rep@{num\+\_\+rep}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{num\+\_\+rep}{num\_rep}} +{\footnotesize\ttfamily int Simulable\+Sequence\+::num\+\_\+rep} + +number of repetitions . \mbox{\Hypertarget{class_simulable_sequence_a43e046af3bf6c498a5ad232058de8a90}\label{class_simulable_sequence_a43e046af3bf6c498a5ad232058de8a90}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!percent\+\_\+steps\+\_\+in@{percent\+\_\+steps\+\_\+in}} +\index{percent\+\_\+steps\+\_\+in@{percent\+\_\+steps\+\_\+in}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{percent\+\_\+steps\+\_\+in}{percent\_steps\_in}} +{\footnotesize\ttfamily double Simulable\+Sequence\+::percent\+\_\+steps\+\_\+in} + +percentage of steps that should be inside the gradient times \mbox{\Hypertarget{class_simulable_sequence_a8691c0451c305869064862e30986c34c}\label{class_simulable_sequence_a8691c0451c305869064862e30986c34c}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!phase\+\_\+shift@{phase\+\_\+shift}} +\index{phase\+\_\+shift@{phase\+\_\+shift}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{phase\+\_\+shift}{phase\_shift}} +{\footnotesize\ttfamily std\+::vector$<$double$>$ Simulable\+Sequence\+::phase\+\_\+shift} + +auxiliar phase shift for signal computations. \mbox{\Hypertarget{class_simulable_sequence_a4e45e2d935a05a7375b04718a49c9af7}\label{class_simulable_sequence_a4e45e2d935a05a7375b04718a49c9af7}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!phase\+\_\+shift\+\_\+distribution@{phase\+\_\+shift\+\_\+distribution}} +\index{phase\+\_\+shift\+\_\+distribution@{phase\+\_\+shift\+\_\+distribution}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{phase\+\_\+shift\+\_\+distribution}{phase\_shift\_distribution}} +{\footnotesize\ttfamily Eigen\+::\+Array\+X\+Xf Simulable\+Sequence\+::phase\+\_\+shift\+\_\+distribution} + +Matrix to save the phase shif distribution \mbox{\Hypertarget{class_simulable_sequence_aa29f58ae224d92dd467a0845bd207324}\label{class_simulable_sequence_aa29f58ae224d92dd467a0845bd207324}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!save\+\_\+phase\+\_\+shift@{save\+\_\+phase\+\_\+shift}} +\index{save\+\_\+phase\+\_\+shift@{save\+\_\+phase\+\_\+shift}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{save\+\_\+phase\+\_\+shift}{save\_phase\_shift}} +{\footnotesize\ttfamily bool Simulable\+Sequence\+::save\+\_\+phase\+\_\+shift} + +flag, if true, saves the pahse shift distribution. \mbox{\Hypertarget{class_simulable_sequence_a9898335af9d8f639f65b73eeac8efb53}\label{class_simulable_sequence_a9898335af9d8f639f65b73eeac8efb53}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!scheme\+\_\+file@{scheme\+\_\+file}} +\index{scheme\+\_\+file@{scheme\+\_\+file}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{scheme\+\_\+file}{scheme\_file}} +{\footnotesize\ttfamily std\+::string Simulable\+Sequence\+::scheme\+\_\+file} + +\hyperlink{class_scheme}{Scheme} file path \mbox{\Hypertarget{class_simulable_sequence_a3278d9b5b22b0bfbdd0ce4bef0e1cc85}\label{class_simulable_sequence_a3278d9b5b22b0bfbdd0ce4bef0e1cc85}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!separate\+\_\+signal@{separate\+\_\+signal}} +\index{separate\+\_\+signal@{separate\+\_\+signal}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{separate\+\_\+signal}{separate\_signal}} +{\footnotesize\ttfamily bool Simulable\+Sequence\+::separate\+\_\+signal = false} + +flag to check if we will separate the signal in intra and extra \mbox{\Hypertarget{class_simulable_sequence_a2686ccfa89396eeadd0a0d4f7842623c}\label{class_simulable_sequence_a2686ccfa89396eeadd0a0d4f7842623c}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!sub\+\_\+\+D\+WI@{sub\+\_\+\+D\+WI}} +\index{sub\+\_\+\+D\+WI@{sub\+\_\+\+D\+WI}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{sub\+\_\+\+D\+WI}{sub\_DWI}} +{\footnotesize\ttfamily std\+::vector$<$std\+::vector$<$double$>$ $>$ Simulable\+Sequence\+::sub\+\_\+\+D\+WI} + +Real part of the D\+WI signal for each sub\+Division \mbox{\Hypertarget{class_simulable_sequence_ad7157eed5b79cf74c45b4185a2465eb6}\label{class_simulable_sequence_ad7157eed5b79cf74c45b4185a2465eb6}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!sub\+\_\+\+D\+W\+I\+\_\+extra@{sub\+\_\+\+D\+W\+I\+\_\+extra}} +\index{sub\+\_\+\+D\+W\+I\+\_\+extra@{sub\+\_\+\+D\+W\+I\+\_\+extra}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{sub\+\_\+\+D\+W\+I\+\_\+extra}{sub\_DWI\_extra}} +{\footnotesize\ttfamily std\+::vector$<$std\+::vector$<$double$>$ $>$ Simulable\+Sequence\+::sub\+\_\+\+D\+W\+I\+\_\+extra} + +Real part of the D\+WI extra signal for each sub\+Division \mbox{\Hypertarget{class_simulable_sequence_a20a947108c3bb80ed45dd8851e777511}\label{class_simulable_sequence_a20a947108c3bb80ed45dd8851e777511}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!sub\+\_\+\+D\+W\+I\+\_\+intra@{sub\+\_\+\+D\+W\+I\+\_\+intra}} +\index{sub\+\_\+\+D\+W\+I\+\_\+intra@{sub\+\_\+\+D\+W\+I\+\_\+intra}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{sub\+\_\+\+D\+W\+I\+\_\+intra}{sub\_DWI\_intra}} +{\footnotesize\ttfamily std\+::vector$<$std\+::vector$<$double$>$ $>$ Simulable\+Sequence\+::sub\+\_\+\+D\+W\+I\+\_\+intra} + +Real part of the D\+WI intra signal for each sub\+Division \mbox{\Hypertarget{class_simulable_sequence_a1e958cc7d15337fa3ae0e58c8330f212}\label{class_simulable_sequence_a1e958cc7d15337fa3ae0e58c8330f212}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!sub\+\_\+\+D\+W\+Ii@{sub\+\_\+\+D\+W\+Ii}} +\index{sub\+\_\+\+D\+W\+Ii@{sub\+\_\+\+D\+W\+Ii}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{sub\+\_\+\+D\+W\+Ii}{sub\_DWIi}} +{\footnotesize\ttfamily std\+::vector$<$std\+::vector$<$double$>$ $>$ Simulable\+Sequence\+::sub\+\_\+\+D\+W\+Ii} + +Imaginary part of the D\+WI signal for each subdivision \mbox{\Hypertarget{class_simulable_sequence_ae9e6e581ba16bbf81b693c0e4943bbf9}\label{class_simulable_sequence_ae9e6e581ba16bbf81b693c0e4943bbf9}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!subdivision\+\_\+flag@{subdivision\+\_\+flag}} +\index{subdivision\+\_\+flag@{subdivision\+\_\+flag}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{subdivision\+\_\+flag}{subdivision\_flag}} +{\footnotesize\ttfamily bool Simulable\+Sequence\+::subdivision\+\_\+flag = false} + +flag to check if we have several voxel subdivision to compute the signal \mbox{\Hypertarget{class_simulable_sequence_a77c721d4650578fdc3f44adfa91c030e}\label{class_simulable_sequence_a77c721d4650578fdc3f44adfa91c030e}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!subdivisions@{subdivisions}} +\index{subdivisions@{subdivisions}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{subdivisions}{subdivisions}} +{\footnotesize\ttfamily std\+::vector$<$\hyperlink{class_subdivision}{Subdivision}$>$ Simulable\+Sequence\+::subdivisions} + +saves the actual positions of the subdivision to compute the signal \mbox{\Hypertarget{class_simulable_sequence_a7e7e1a0de6045046061ffccaba4fa5ee}\label{class_simulable_sequence_a7e7e1a0de6045046061ffccaba4fa5ee}} +\index{Simulable\+Sequence@{Simulable\+Sequence}!time\+\_\+steps@{time\+\_\+steps}} +\index{time\+\_\+steps@{time\+\_\+steps}!Simulable\+Sequence@{Simulable\+Sequence}} +\subsubsection{\texorpdfstring{time\+\_\+steps}{time\_steps}} +{\footnotesize\ttfamily std\+::vector$<$double$>$ Simulable\+Sequence\+::time\+\_\+steps} + +Auxiliary array to save the time steps + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/simulablesequence.\+h\item +src/simulablesequence.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_simulable_sequence__inherit__graph.md5 b/doc/latex/class_simulable_sequence__inherit__graph.md5 new file mode 100644 index 0000000..3f66482 --- /dev/null +++ b/doc/latex/class_simulable_sequence__inherit__graph.md5 @@ -0,0 +1 @@ +459e08f6a050e6fc4a80647fc4b0640e \ No newline at end of file diff --git a/doc/latex/class_simulable_sequence__inherit__graph.pdf b/doc/latex/class_simulable_sequence__inherit__graph.pdf new file mode 100644 index 0000000..ee863ff Binary files /dev/null and b/doc/latex/class_simulable_sequence__inherit__graph.pdf differ diff --git a/doc/latex/class_subdivision.tex b/doc/latex/class_subdivision.tex new file mode 100644 index 0000000..387ce61 --- /dev/null +++ b/doc/latex/class_subdivision.tex @@ -0,0 +1,105 @@ +\hypertarget{class_subdivision}{}\section{Subdivision Class Reference} +\label{class_subdivision}\index{Subdivision@{Subdivision}} + + +Auxiliary \hyperlink{class_subdivision}{Subdivision} Class =============================================================/. + + + + +{\ttfamily \#include $<$subdivision.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_subdivision_ac51db3c00b0e4f7543c34859ad846871}\label{class_subdivision_ac51db3c00b0e4f7543c34859ad846871}} +\hyperlink{class_subdivision_ac51db3c00b0e4f7543c34859ad846871}{Subdivision} () +\begin{DoxyCompactList}\small\item\em Naive constructor. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_subdivision_a96a55a5e9c88a2ee0640a904bb30141c}\label{class_subdivision_a96a55a5e9c88a2ee0640a904bb30141c}} +\hyperlink{class_subdivision_a96a55a5e9c88a2ee0640a904bb30141c}{Subdivision} (Eigen\+::\+Vector3f \&, Eigen\+::\+Vector3f \&) +\begin{DoxyCompactList}\small\item\em Constructor for a defined list of min and max positions. \end{DoxyCompactList}\item +bool \hyperlink{class_subdivision_adb91e1cc1e6959d13220454ddfc7ba28}{is\+Inside} (Eigen\+::\+Vector3d \&pos) +\begin{DoxyCompactList}\small\item\em Auxiliary function to check if a 3d position is inside a \char`\"{}subdivision\char`\"{} i.\+e. defined cube. \end{DoxyCompactList}\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +Eigen\+::\+Vector3f \hyperlink{class_subdivision_ac8d84e208bb294b78379a05da4ccfc37}{min\+\_\+limits} +\item +Eigen\+::\+Vector3f \hyperlink{class_subdivision_a96ca3e7e744026fef809ade08d861985}{max\+\_\+limits} +\item +int \hyperlink{class_subdivision_a6135c9e9b9a16f2f316d28071dee16c6}{density} +\item +int \hyperlink{class_subdivision_a2944862a3bafcacaf45a935f266f0cf0}{density\+\_\+intra} +\item +int \hyperlink{class_subdivision_aa9d564a68a0785998db3e129c6698c0f}{density\+\_\+extra} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Auxiliary \hyperlink{class_subdivision}{Subdivision} Class =============================================================/. + +Auxiliary Class. Implementation of the subdivision of a voxel into separate adquisitions + +\begin{DoxyDate}{Date} +September 2017 +\end{DoxyDate} +\begin{DoxyAuthor}{Author} +Jonathan Rafael \subsection*{0.\+1.\+0 } +\end{DoxyAuthor} + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_subdivision_adb91e1cc1e6959d13220454ddfc7ba28}\label{class_subdivision_adb91e1cc1e6959d13220454ddfc7ba28}} +\index{Subdivision@{Subdivision}!is\+Inside@{is\+Inside}} +\index{is\+Inside@{is\+Inside}!Subdivision@{Subdivision}} +\subsubsection{\texorpdfstring{is\+Inside()}{isInside()}} +{\footnotesize\ttfamily bool Subdivision\+::is\+Inside (\begin{DoxyParamCaption}\item[{Eigen\+::\+Vector3d \&}]{pos }\end{DoxyParamCaption})} + + + +Auxiliary function to check if a 3d position is inside a \char`\"{}subdivision\char`\"{} i.\+e. defined cube. + + +\begin{DoxyParams}{Parameters} +{\em pos} & 3d position \\ +\hline +\end{DoxyParams} + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_subdivision_a6135c9e9b9a16f2f316d28071dee16c6}\label{class_subdivision_a6135c9e9b9a16f2f316d28071dee16c6}} +\index{Subdivision@{Subdivision}!density@{density}} +\index{density@{density}!Subdivision@{Subdivision}} +\subsubsection{\texorpdfstring{density}{density}} +{\footnotesize\ttfamily int Subdivision\+::density} + +Counter to save the number of particles inside that region \mbox{\Hypertarget{class_subdivision_aa9d564a68a0785998db3e129c6698c0f}\label{class_subdivision_aa9d564a68a0785998db3e129c6698c0f}} +\index{Subdivision@{Subdivision}!density\+\_\+extra@{density\+\_\+extra}} +\index{density\+\_\+extra@{density\+\_\+extra}!Subdivision@{Subdivision}} +\subsubsection{\texorpdfstring{density\+\_\+extra}{density\_extra}} +{\footnotesize\ttfamily int Subdivision\+::density\+\_\+extra} + +Counter to save the number of particles labeled as Extra in that region \mbox{\Hypertarget{class_subdivision_a2944862a3bafcacaf45a935f266f0cf0}\label{class_subdivision_a2944862a3bafcacaf45a935f266f0cf0}} +\index{Subdivision@{Subdivision}!density\+\_\+intra@{density\+\_\+intra}} +\index{density\+\_\+intra@{density\+\_\+intra}!Subdivision@{Subdivision}} +\subsubsection{\texorpdfstring{density\+\_\+intra}{density\_intra}} +{\footnotesize\ttfamily int Subdivision\+::density\+\_\+intra} + +Counter to save the number of particles labeled as Intra in that region \mbox{\Hypertarget{class_subdivision_a96ca3e7e744026fef809ade08d861985}\label{class_subdivision_a96ca3e7e744026fef809ade08d861985}} +\index{Subdivision@{Subdivision}!max\+\_\+limits@{max\+\_\+limits}} +\index{max\+\_\+limits@{max\+\_\+limits}!Subdivision@{Subdivision}} +\subsubsection{\texorpdfstring{max\+\_\+limits}{max\_limits}} +{\footnotesize\ttfamily Eigen\+::\+Vector3f Subdivision\+::max\+\_\+limits} + +Vector with the list of max limits points of each subdivisions \mbox{\Hypertarget{class_subdivision_ac8d84e208bb294b78379a05da4ccfc37}\label{class_subdivision_ac8d84e208bb294b78379a05da4ccfc37}} +\index{Subdivision@{Subdivision}!min\+\_\+limits@{min\+\_\+limits}} +\index{min\+\_\+limits@{min\+\_\+limits}!Subdivision@{Subdivision}} +\subsubsection{\texorpdfstring{min\+\_\+limits}{min\_limits}} +{\footnotesize\ttfamily Eigen\+::\+Vector3f Subdivision\+::min\+\_\+limits} + +Vector with the list of min limits points of each subdivisions + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/subdivision.\+h\item +src/subdivision.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_trajectory.tex b/doc/latex/class_trajectory.tex new file mode 100644 index 0000000..1eef0e0 --- /dev/null +++ b/doc/latex/class_trajectory.tex @@ -0,0 +1,228 @@ +\hypertarget{class_trajectory}{}\section{Trajectory Class Reference} +\label{class_trajectory}\index{Trajectory@{Trajectory}} + + +Auxiliary class. Handles i/o operation of walker trayectories. ============================/. + + + + +{\ttfamily \#include $<$trajectory.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_trajectory_aa340ba80f1f4d1aa39f19f069d5d8089}\label{class_trajectory_aa340ba80f1f4d1aa39f19f069d5d8089}} +\hyperlink{class_trajectory_aa340ba80f1f4d1aa39f19f069d5d8089}{Trajectory} () +\begin{DoxyCompactList}\small\item\em Main constructor, Initialice everythin to default. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_trajectory_a4879a4d0944eb04246e21deac940b90d}\label{class_trajectory_a4879a4d0944eb04246e21deac940b90d}} +\hyperlink{class_trajectory_a4879a4d0944eb04246e21deac940b90d}{Trajectory} (const char $\ast$traj\+\_\+file, bool is\+Big\+Endian\+\_\+=true, std\+::string io\+\_\+flag\+\_\+=\char`\"{}rb\char`\"{}) +\begin{DoxyCompactList}\small\item\em Contructor , Initialice everythin by parameters. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_trajectory_ac673c37025ca5353ad99ab41c936e75d}\label{class_trajectory_ac673c37025ca5353ad99ab41c936e75d}} +\hyperlink{class_trajectory_ac673c37025ca5353ad99ab41c936e75d}{$\sim$\+Trajectory} () +\begin{DoxyCompactList}\small\item\em Destructor, close files and fstreams. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_trajectory_aaeda8b05ad61298fbd2aba2a3192486e}\label{class_trajectory_aaeda8b05ad61298fbd2aba2a3192486e}} +void \hyperlink{class_trajectory_aaeda8b05ad61298fbd2aba2a3192486e}{init\+Trajectory} (\hyperlink{class_parameters}{Parameters} params) +\begin{DoxyCompactList}\small\item\em Initialice the output files if any. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_trajectory_a00a28c1782a0a661b40ad9dfefc0d3f4}\label{class_trajectory_a00a28c1782a0a661b40ad9dfefc0d3f4}} +void \hyperlink{class_trajectory_a00a28c1782a0a661b40ad9dfefc0d3f4}{set\+Traj\+File} (std\+::string) +\begin{DoxyCompactList}\small\item\em Setd the traj file operations. \end{DoxyCompactList}\end{DoxyCompactItemize} +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +void \hyperlink{class_trajectory_a9aedf2530dca72ca629741585717c64a}{close\+Traj\+Reader\+File} () +\item +\mbox{\Hypertarget{class_trajectory_a9239f7d5d05f02ce58b6ad2e7be231d7}\label{class_trajectory_a9239f7d5d05f02ce58b6ad2e7be231d7}} +void {\bfseries open\+Traj\+Reader\+File} () +\item +\mbox{\Hypertarget{class_trajectory_a727883a1c29c9bdb8d4cdb01888023da}\label{class_trajectory_a727883a1c29c9bdb8d4cdb01888023da}} +void {\bfseries init\+Traj\+Reader\+File} () +\item +\mbox{\Hypertarget{class_trajectory_ad436905c5614d4ac3a52acb6d2211b61}\label{class_trajectory_ad436905c5614d4ac3a52acb6d2211b61}} +void {\bfseries read\+Trajectory\+Header} () +\item +\mbox{\Hypertarget{class_trajectory_a5f96383db2d95b41a46dc752b00f70e6}\label{class_trajectory_a5f96383db2d95b41a46dc752b00f70e6}} +void {\bfseries read\+Current\+Walkers\+Trajectory} (Eigen\+::\+Matrix3\+Xd \&) +\end{DoxyCompactItemize} + +\textbf{ }\par +\begin{DoxyCompactItemize} +\item +void \hyperlink{class_trajectory_aec9f75fa04452af2199888c47652c7e4}{init\+Traj\+Writer} () +\item +\mbox{\Hypertarget{class_trajectory_a661b8c4070a55fd2e6abe703d23c95df}\label{class_trajectory_a661b8c4070a55fd2e6abe703d23c95df}} +void {\bfseries init\+Traj\+Writer\+Binary} () +\item +\mbox{\Hypertarget{class_trajectory_a7b6926793185fc0ebebb09a7abba8b7a}\label{class_trajectory_a7b6926793185fc0ebebb09a7abba8b7a}} +void {\bfseries init\+Traj\+Writer\+Text} () +\item +\mbox{\Hypertarget{class_trajectory_a0cf9e0365b4d075d2da7c800fef83858}\label{class_trajectory_a0cf9e0365b4d075d2da7c800fef83858}} +void {\bfseries write\+Trajectory\+Header\+Binary} () +\item +\mbox{\Hypertarget{class_trajectory_ae84e1c1573c8f42bd68c09dff3909f6f}\label{class_trajectory_ae84e1c1573c8f42bd68c09dff3909f6f}} +void {\bfseries write\+Trajectory\+Header\+Text} () +\item +\mbox{\Hypertarget{class_trajectory_a82540862cb8c200b1a6979b5f919681d}\label{class_trajectory_a82540862cb8c200b1a6979b5f919681d}} +void {\bfseries re\+Write\+Header\+File} (unsigned num\+\_\+walkers) +\item +\mbox{\Hypertarget{class_trajectory_ada4c4918a46c69508e6e847e4ef54f56}\label{class_trajectory_ada4c4918a46c69508e6e847e4ef54f56}} +void {\bfseries write\+Position} (Eigen\+::\+Vector3d \&) +\item +\mbox{\Hypertarget{class_trajectory_ad35ef554146d54b4ea0a3bdce1f6246d}\label{class_trajectory_ad35ef554146d54b4ea0a3bdce1f6246d}} +void {\bfseries write\+Position\+Text} (Eigen\+::\+Vector3d \&) +\item +\mbox{\Hypertarget{class_trajectory_a8ab6682b6a6c9cdc78fb6cef56129c91}\label{class_trajectory_a8ab6682b6a6c9cdc78fb6cef56129c91}} +void {\bfseries write\+Position\+Binary} (Eigen\+::\+Vector3d \&) +\item +\mbox{\Hypertarget{class_trajectory_a5392bbab8cb315fcb99d30c90ca746b1}\label{class_trajectory_a5392bbab8cb315fcb99d30c90ca746b1}} +void {\bfseries write\+Position} (Eigen\+::\+Matrix3\+Xd \&) +\item +\mbox{\Hypertarget{class_trajectory_a85776d999a5eacdbbef9008f96da007b}\label{class_trajectory_a85776d999a5eacdbbef9008f96da007b}} +void {\bfseries write\+Position\+Text} (Eigen\+::\+Matrix3\+Xd \&) +\item +\mbox{\Hypertarget{class_trajectory_a0c8e6a22d330cfdb6419813ffd43ccba}\label{class_trajectory_a0c8e6a22d330cfdb6419813ffd43ccba}} +void {\bfseries write\+Position\+Binary} (Eigen\+::\+Matrix3\+Xd \&) +\end{DoxyCompactItemize} + +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +std\+::string \hyperlink{class_trajectory_aee056cca538c4430eacff9534e43bc8e}{trajfile} +\item +std\+::string \hyperlink{class_trajectory_a6bb5d5e4ad4fb36a65d6cffdc6ab05af}{headerfile} +\item +\mbox{\Hypertarget{class_trajectory_aa6725e54b483f0eaaae88710707e58fe}\label{class_trajectory_aa6725e54b483f0eaaae88710707e58fe}} +F\+I\+LE $\ast$ {\bfseries in} +\item +F\+I\+LE $\ast$ \hyperlink{class_trajectory_a6a7484c5282331583841b038997d597b}{in\+\_\+header} +\item +\mbox{\Hypertarget{class_trajectory_a41053c7c21f625933b4dd290da958b7c}\label{class_trajectory_a41053c7c21f625933b4dd290da958b7c}} +std\+::ofstream {\bfseries bout} +\item +\mbox{\Hypertarget{class_trajectory_a2373f0055623b904e6051c0681d13472}\label{class_trajectory_a2373f0055623b904e6051c0681d13472}} +std\+::ofstream {\bfseries tout} +\item +\mbox{\Hypertarget{class_trajectory_abf8e0a2b50a2e873c261720e295687ac}\label{class_trajectory_abf8e0a2b50a2e873c261720e295687ac}} +std\+::ofstream {\bfseries bheaderout} +\item +\mbox{\Hypertarget{class_trajectory_a90e41427f7c6ce7b5b549e072fd9f59d}\label{class_trajectory_a90e41427f7c6ce7b5b549e072fd9f59d}} +std\+::ofstream {\bfseries theaderout} +\item +\mbox{\Hypertarget{class_trajectory_a849e3a9c92a6eea27073c4e533412a67}\label{class_trajectory_a849e3a9c92a6eea27073c4e533412a67}} +unsigned {\bfseries N} +\item +unsigned \hyperlink{class_trajectory_ad9cbff5cf9f84ca1e2378d1d6105c5e3}{T} +\item +\mbox{\Hypertarget{class_trajectory_ada15a7d6836e4cee2f35f788df0d844f}\label{class_trajectory_ada15a7d6836e4cee2f35f788df0d844f}} +double {\bfseries dyn\+\_\+duration} +\item +\mbox{\Hypertarget{class_trajectory_abc9b9bb15f5723a208f0ff22cd740eda}\label{class_trajectory_abc9b9bb15f5723a208f0ff22cd740eda}} +std\+::string {\bfseries io\+\_\+flag} +\item +std\+::vector$<$ unsigned $>$ \hyperlink{class_trajectory_a4b6369fb83108e27a774f50c06169817}{pos\+\_\+times} +\item +bool \hyperlink{class_trajectory_a66dfa9e8d1e60706b8e8bb1e91a34e29}{is\+Big\+Endian} +\item +bool \hyperlink{class_trajectory_a1194477068ed051401f99aba4a1056b1}{write\+\_\+traj} +\item +bool \hyperlink{class_trajectory_a94125474ee64fd3007091a3e88f59769}{write\+\_\+txt} +\item +bool \hyperlink{class_trajectory_a7135e87575f429a7d6ad32477dc96e2c}{write\+\_\+bin} +\item +bool \hyperlink{class_trajectory_a973422e0d41afe4720fbbf62500a5035}{steps\+\_\+subset} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Auxiliary class. Handles i/o operation of walker trayectories. ============================/. + +\begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +July 2016 \subsection*{0.\+2 } +\end{DoxyDate} + + +\subsection{Member Function Documentation} +\mbox{\Hypertarget{class_trajectory_a9aedf2530dca72ca629741585717c64a}\label{class_trajectory_a9aedf2530dca72ca629741585717c64a}} +\index{Trajectory@{Trajectory}!close\+Traj\+Reader\+File@{close\+Traj\+Reader\+File}} +\index{close\+Traj\+Reader\+File@{close\+Traj\+Reader\+File}!Trajectory@{Trajectory}} +\subsubsection{\texorpdfstring{close\+Traj\+Reader\+File()}{closeTrajReaderFile()}} +{\footnotesize\ttfamily void Trajectory\+::close\+Traj\+Reader\+File (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +Read operations \mbox{\Hypertarget{class_trajectory_aec9f75fa04452af2199888c47652c7e4}\label{class_trajectory_aec9f75fa04452af2199888c47652c7e4}} +\index{Trajectory@{Trajectory}!init\+Traj\+Writer@{init\+Traj\+Writer}} +\index{init\+Traj\+Writer@{init\+Traj\+Writer}!Trajectory@{Trajectory}} +\subsubsection{\texorpdfstring{init\+Traj\+Writer()}{initTrajWriter()}} +{\footnotesize\ttfamily void Trajectory\+::init\+Traj\+Writer (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + +Write operations + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_trajectory_a6bb5d5e4ad4fb36a65d6cffdc6ab05af}\label{class_trajectory_a6bb5d5e4ad4fb36a65d6cffdc6ab05af}} +\index{Trajectory@{Trajectory}!headerfile@{headerfile}} +\index{headerfile@{headerfile}!Trajectory@{Trajectory}} +\subsubsection{\texorpdfstring{headerfile}{headerfile}} +{\footnotesize\ttfamily std\+::string Trajectory\+::headerfile} + +header name \mbox{\Hypertarget{class_trajectory_a6a7484c5282331583841b038997d597b}\label{class_trajectory_a6a7484c5282331583841b038997d597b}} +\index{Trajectory@{Trajectory}!in\+\_\+header@{in\+\_\+header}} +\index{in\+\_\+header@{in\+\_\+header}!Trajectory@{Trajectory}} +\subsubsection{\texorpdfstring{in\+\_\+header}{in\_header}} +{\footnotesize\ttfamily F\+I\+LE $\ast$ Trajectory\+::in\+\_\+header} + +Files to be written using the previous names binary out, text out, binary header, text header \mbox{\Hypertarget{class_trajectory_a66dfa9e8d1e60706b8e8bb1e91a34e29}\label{class_trajectory_a66dfa9e8d1e60706b8e8bb1e91a34e29}} +\index{Trajectory@{Trajectory}!is\+Big\+Endian@{is\+Big\+Endian}} +\index{is\+Big\+Endian@{is\+Big\+Endian}!Trajectory@{Trajectory}} +\subsubsection{\texorpdfstring{is\+Big\+Endian}{isBigEndian}} +{\footnotesize\ttfamily bool Trajectory\+::is\+Big\+Endian} + +flag if the format is big endian \mbox{\Hypertarget{class_trajectory_a4b6369fb83108e27a774f50c06169817}\label{class_trajectory_a4b6369fb83108e27a774f50c06169817}} +\index{Trajectory@{Trajectory}!pos\+\_\+times@{pos\+\_\+times}} +\index{pos\+\_\+times@{pos\+\_\+times}!Trajectory@{Trajectory}} +\subsubsection{\texorpdfstring{pos\+\_\+times}{pos\_times}} +{\footnotesize\ttfamily std\+::vector$<$unsigned$>$ Trajectory\+::pos\+\_\+times} + +Times indexes when to save the particle positions. \mbox{\Hypertarget{class_trajectory_a973422e0d41afe4720fbbf62500a5035}\label{class_trajectory_a973422e0d41afe4720fbbf62500a5035}} +\index{Trajectory@{Trajectory}!steps\+\_\+subset@{steps\+\_\+subset}} +\index{steps\+\_\+subset@{steps\+\_\+subset}!Trajectory@{Trajectory}} +\subsubsection{\texorpdfstring{steps\+\_\+subset}{steps\_subset}} +{\footnotesize\ttfamily bool Trajectory\+::steps\+\_\+subset} + +true if the steps are no uniform \mbox{\Hypertarget{class_trajectory_ad9cbff5cf9f84ca1e2378d1d6105c5e3}\label{class_trajectory_ad9cbff5cf9f84ca1e2378d1d6105c5e3}} +\index{Trajectory@{Trajectory}!T@{T}} +\index{T@{T}!Trajectory@{Trajectory}} +\subsubsection{\texorpdfstring{T}{T}} +{\footnotesize\ttfamily unsigned Trajectory\+::T} + +number of walkers, total time; \mbox{\Hypertarget{class_trajectory_aee056cca538c4430eacff9534e43bc8e}\label{class_trajectory_aee056cca538c4430eacff9534e43bc8e}} +\index{Trajectory@{Trajectory}!trajfile@{trajfile}} +\index{trajfile@{trajfile}!Trajectory@{Trajectory}} +\subsubsection{\texorpdfstring{trajfile}{trajfile}} +{\footnotesize\ttfamily std\+::string Trajectory\+::trajfile} + +trajfile name \mbox{\Hypertarget{class_trajectory_a7135e87575f429a7d6ad32477dc96e2c}\label{class_trajectory_a7135e87575f429a7d6ad32477dc96e2c}} +\index{Trajectory@{Trajectory}!write\+\_\+bin@{write\+\_\+bin}} +\index{write\+\_\+bin@{write\+\_\+bin}!Trajectory@{Trajectory}} +\subsubsection{\texorpdfstring{write\+\_\+bin}{write\_bin}} +{\footnotesize\ttfamily bool Trajectory\+::write\+\_\+bin} + +flag if we want to write a binary traj file \mbox{\Hypertarget{class_trajectory_a1194477068ed051401f99aba4a1056b1}\label{class_trajectory_a1194477068ed051401f99aba4a1056b1}} +\index{Trajectory@{Trajectory}!write\+\_\+traj@{write\+\_\+traj}} +\index{write\+\_\+traj@{write\+\_\+traj}!Trajectory@{Trajectory}} +\subsubsection{\texorpdfstring{write\+\_\+traj}{write\_traj}} +{\footnotesize\ttfamily bool Trajectory\+::write\+\_\+traj} + +flag if we want to write a traj file \mbox{\Hypertarget{class_trajectory_a94125474ee64fd3007091a3e88f59769}\label{class_trajectory_a94125474ee64fd3007091a3e88f59769}} +\index{Trajectory@{Trajectory}!write\+\_\+txt@{write\+\_\+txt}} +\index{write\+\_\+txt@{write\+\_\+txt}!Trajectory@{Trajectory}} +\subsubsection{\texorpdfstring{write\+\_\+txt}{write\_txt}} +{\footnotesize\ttfamily bool Trajectory\+::write\+\_\+txt} + +flag if we want to write a text traj file + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/trajectory.\+h\item +src/trajectory.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_triangle.tex b/doc/latex/class_triangle.tex new file mode 100644 index 0000000..4c8ab83 --- /dev/null +++ b/doc/latex/class_triangle.tex @@ -0,0 +1,89 @@ +\hypertarget{class_triangle}{}\section{Triangle Class Reference} +\label{class_triangle}\index{Triangle@{Triangle}} + + +Auxiliary class. Implements trangular barriers. ===================================/. + + + + +{\ttfamily \#include $<$triangle.\+h$>$} + + + +Collaboration diagram for Triangle\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=144pt]{class_triangle__coll__graph} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_triangle_a420f50ce640dca2aca127ceb68de2e0f}\label{class_triangle_a420f50ce640dca2aca127ceb68de2e0f}} +{\bfseries Triangle} (\hyperlink{class_vertex}{Vertex} $\ast$vertices, unsigned index) +\item +\mbox{\Hypertarget{class_triangle_a31d9c90daae516c82e03dcbb492a1fe5}\label{class_triangle_a31d9c90daae516c82e03dcbb492a1fe5}} +void {\bfseries get\+Vertex} (const unsigned i, Eigen\+::\+Vector3d \&v) +\item +\mbox{\Hypertarget{class_triangle_ac134db353d4bd34eae298e6220bd0254}\label{class_triangle_ac134db353d4bd34eae298e6220bd0254}} +void {\bfseries get\+Normal} (Eigen\+::\+Vector3d \&normal) +\item +\mbox{\Hypertarget{class_triangle_acb81455a547203d7b61b6d178578620a}\label{class_triangle_acb81455a547203d7b61b6d178578620a}} +void {\bfseries save\+Normal\+And\+Aux\+Info} () +\item +\mbox{\Hypertarget{class_triangle_a087e0b0bfb2c49ed4854d8b0e939e7d2}\label{class_triangle_a087e0b0bfb2c49ed4854d8b0e939e7d2}} +bool {\bfseries ray\+Intersects} (const Eigen\+::\+Vector3d \&ray\+\_\+origin, const Eigen\+::\+Vector3d \&step, double \&t) +\item +\mbox{\Hypertarget{class_triangle_ac1197111887bcba4098f20a71108105c}\label{class_triangle_ac1197111887bcba4098f20a71108105c}} +void {\bfseries step\+Intersects\+\_\+\+MT} (\hyperlink{class_walker}{Walker} \&walker, const Eigen\+::\+Vector3d \&step, const double \&max\+\_\+length, \hyperlink{class_collision}{Collision} \&colision) +\item +\mbox{\Hypertarget{class_triangle_a01e5c101c7455d7030080594628533bf}\label{class_triangle_a01e5c101c7455d7030080594628533bf}} +void {\bfseries step\+Intersects\+\_\+\+M\+T\+\_\+limits} (const Eigen\+::\+Vector3d \&ray\+\_\+origin, const Eigen\+::\+Vector3d \&step, const double \&max\+\_\+length, \hyperlink{class_collision}{Collision} \&colision, const Eigen\+::\+Vector3d \&limits\+\_\+mod, double limit\+\_\+x, double limit\+\_\+y, double limit\+\_\+z) +\item +\mbox{\Hypertarget{class_triangle_a733c94320a1effcee36b7382e92be1e6}\label{class_triangle_a733c94320a1effcee36b7382e92be1e6}} +bool {\bfseries ray\+Intersects\+\_\+\+MT} (const Eigen\+::\+Vector3d \&ray\+\_\+origin, const Eigen\+::\+Vector3d \&step, double \&u, double \&v, double \&t) +\item +\mbox{\Hypertarget{class_triangle_afd80e0b45910181568098c04e5a2046d}\label{class_triangle_afd80e0b45910181568098c04e5a2046d}} +double {\bfseries min\+Distance} (const Eigen\+::\+Vector3d p) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_triangle_a0f6509666826b8e916e8c884e6d92fdf}\label{class_triangle_a0f6509666826b8e916e8c884e6d92fdf}} +unsigned {\bfseries index} +\item +\mbox{\Hypertarget{class_triangle_a1f17e61561dadac3966d2450dcdb001d}\label{class_triangle_a1f17e61561dadac3966d2450dcdb001d}} +\hyperlink{class_vertex}{Vertex} $\ast$ {\bfseries vertices} +\item +\mbox{\Hypertarget{class_triangle_a60f4999d8220f2e9f5361dfc2d3fa7d2}\label{class_triangle_a60f4999d8220f2e9f5361dfc2d3fa7d2}} +Eigen\+::\+Array3i {\bfseries indexes} +\item +\mbox{\Hypertarget{class_triangle_a90c44b094ed4f5f663b3198f254b015a}\label{class_triangle_a90c44b094ed4f5f663b3198f254b015a}} +Eigen\+::\+Vector3d {\bfseries normal} +\item +\mbox{\Hypertarget{class_triangle_af85e52d2beb9feb49a4ded02061c056a}\label{class_triangle_af85e52d2beb9feb49a4ded02061c056a}} +Eigen\+::\+Vector3d {\bfseries center} +\item +\mbox{\Hypertarget{class_triangle_aca1dd750b3a5e13fd86947f318e9176a}\label{class_triangle_aca1dd750b3a5e13fd86947f318e9176a}} +double {\bfseries radius} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Auxiliary class. Implements trangular barriers. ===================================/. + +Helper class to strore and handle trangular barriers. \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +July 2016 \subsection*{0.\+2 } +\end{DoxyDate} + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/triangle.\+h\item +src/triangle.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_triangle__coll__graph.md5 b/doc/latex/class_triangle__coll__graph.md5 new file mode 100644 index 0000000..70271c6 --- /dev/null +++ b/doc/latex/class_triangle__coll__graph.md5 @@ -0,0 +1 @@ +2b3cdc47b296667bff14bbee13a45aff \ No newline at end of file diff --git a/doc/latex/class_triangle__coll__graph.pdf b/doc/latex/class_triangle__coll__graph.pdf new file mode 100644 index 0000000..3cb33c8 Binary files /dev/null and b/doc/latex/class_triangle__coll__graph.pdf differ diff --git a/doc/latex/class_vertex.tex b/doc/latex/class_vertex.tex new file mode 100644 index 0000000..0c8f50f --- /dev/null +++ b/doc/latex/class_vertex.tex @@ -0,0 +1,48 @@ +\hypertarget{class_vertex}{}\section{Vertex Class Reference} +\label{class_vertex}\index{Vertex@{Vertex}} + + +Auxiliary class. Implements basic vertices. ====================================/. + + + + +{\ttfamily \#include $<$vertex.\+h$>$} + +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_vertex_abd9cebad3eacc656ea6a9027c1d96b8d}\label{class_vertex_abd9cebad3eacc656ea6a9027c1d96b8d}} +{\bfseries Vertex} (const double \&x, const double \&y, const double \&z) +\item +\mbox{\Hypertarget{class_vertex_a43d933c801f9d4deff63b0ebefa57dd6}\label{class_vertex_a43d933c801f9d4deff63b0ebefa57dd6}} +double {\bfseries operator()} (unsigned i) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_vertex_a0370aebecc487a440882a2a8b44d0501}\label{class_vertex_a0370aebecc487a440882a2a8b44d0501}} +unsigned {\bfseries index} +\item +\mbox{\Hypertarget{class_vertex_a3df67e6d67e5fd518b9ea215722b187f}\label{class_vertex_a3df67e6d67e5fd518b9ea215722b187f}} +double {\bfseries points} \mbox{[}3\mbox{]} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Auxiliary class. Implements basic vertices. ====================================/. + +Helper class to strore and handle vertices. \begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +July 2016 \subsection*{0.\+2 } +\end{DoxyDate} + + +\hyperlink{class_vertex}{Vertex} of a 3d poly + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/vertex.\+h\item +src/vertex.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_voxel.tex b/doc/latex/class_voxel.tex new file mode 100644 index 0000000..80fe4f9 --- /dev/null +++ b/doc/latex/class_voxel.tex @@ -0,0 +1,51 @@ +\hypertarget{class_voxel}{}\section{Voxel Class Reference} +\label{class_voxel}\index{Voxel@{Voxel}} + + +//! Main class. Implements basic voxel limits and operations. Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done. + + + + +{\ttfamily \#include $<$voxel.\+h$>$} + + + +Collaboration diagram for Voxel\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=127pt]{class_voxel__coll__graph} +\end{center} +\end{figure} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_voxel_acbb05a2f277a8ae7c59119eb3adf7e8c}\label{class_voxel_acbb05a2f277a8ae7c59119eb3adf7e8c}} +{\bfseries Voxel} (Eigen\+::\+Vector3d min\+\_\+limits\+\_\+, Eigen\+::\+Vector3d max\+\_\+limits\+\_\+) +\item +\mbox{\Hypertarget{class_voxel_af52a1ec58a5244591c56963b28192748}\label{class_voxel_af52a1ec58a5244591c56963b28192748}} +bool {\bfseries Check\+Collision} (\hyperlink{class_walker}{Walker} \&walker, Eigen\+::\+Vector3d \&step, double \&tmax, \hyperlink{class_collision}{Collision} \&colision) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{class_voxel_a8f82e23dc4dd9b0a3df065b876525fb4}\label{class_voxel_a8f82e23dc4dd9b0a3df065b876525fb4}} +Eigen\+::\+Vector3d {\bfseries min\+\_\+limits} +\item +\mbox{\Hypertarget{class_voxel_a5ffa055c53543ad2dd0944c0667b0787}\label{class_voxel_a5ffa055c53543ad2dd0944c0667b0787}} +Eigen\+::\+Vector3d {\bfseries max\+\_\+limits} +\item +\mbox{\Hypertarget{class_voxel_a9cce047be8fe658b21dbaef698b8b5ae}\label{class_voxel_a9cce047be8fe658b21dbaef698b8b5ae}} +\hyperlink{class_plane}{Plane} {\bfseries walls} \mbox{[}6\mbox{]} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +//! Main class. Implements basic voxel limits and operations. Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done. + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/voxel.\+h\item +src/voxel.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_voxel__coll__graph.md5 b/doc/latex/class_voxel__coll__graph.md5 new file mode 100644 index 0000000..3c6861e --- /dev/null +++ b/doc/latex/class_voxel__coll__graph.md5 @@ -0,0 +1 @@ +efbba54af47d1948971d5e30456380a7 \ No newline at end of file diff --git a/doc/latex/class_voxel__coll__graph.pdf b/doc/latex/class_voxel__coll__graph.pdf new file mode 100644 index 0000000..d294c91 Binary files /dev/null and b/doc/latex/class_voxel__coll__graph.pdf differ diff --git a/doc/latex/class_walker.tex b/doc/latex/class_walker.tex new file mode 100644 index 0000000..2c52ffb --- /dev/null +++ b/doc/latex/class_walker.tex @@ -0,0 +1,387 @@ +\hypertarget{class_walker}{}\section{Walker Class Reference} +\label{class_walker}\index{Walker@{Walker}} + + +Spin Final class =============================================================/. + + + + +{\ttfamily \#include $<$walker.\+h$>$} + + + +Collaboration diagram for Walker\+: +\nopagebreak +\begin{figure}[H] +\begin{center} +\leavevmode +\includegraphics[width=350pt]{class_walker__coll__graph} +\end{center} +\end{figure} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +enum \hyperlink{class_walker_afcad3f5c11d0bd045de22fb0347dc44c}{state} \{ \newline +{\bfseries on\+\_\+object}, +{\bfseries on\+\_\+edge}, +{\bfseries on\+\_\+vertex}, +{\bfseries on\+\_\+voxel}, +\newline +{\bfseries free}, +{\bfseries bouncing} + \}\begin{DoxyCompactList}\small\item\em An enum. \end{DoxyCompactList} +\item +enum \hyperlink{class_walker_a24246136a10754791b05cb570dbb8417}{Relative\+Location} \{ {\bfseries unknown}, +{\bfseries intra}, +{\bfseries extra} + \}\begin{DoxyCompactList}\small\item\em An enum. \end{DoxyCompactList} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\hyperlink{class_walker_acc0931305bedcf81ff621c31cdf2a92c}{Walker} () +\begin{DoxyCompactList}\small\item\em Default constructor. \end{DoxyCompactList}\item +\hyperlink{class_walker_a562c14b600628c18ac689464bd0f7e35}{$\sim$\+Walker} () +\item +\hyperlink{class_walker_ada366966172eec6916690c01ac8f01db}{Walker} (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) +\begin{DoxyCompactList}\small\item\em Constructor. \end{DoxyCompactList}\item +\mbox{\Hypertarget{class_walker_a682ea5a26950ba7a563ebbf1d1cfe62e}\label{class_walker_a682ea5a26950ba7a563ebbf1d1cfe62e}} +void {\bfseries get\+Real\+Position} (double \&, double \&, double \&) const +\item +\mbox{\Hypertarget{class_walker_a85bf9ae51ffcfa9c797ac863bb0ed58a}\label{class_walker_a85bf9ae51ffcfa9c797ac863bb0ed58a}} +void {\bfseries get\+Real\+Position} (Eigen\+::\+Vector3d \&) const +\item +\mbox{\Hypertarget{class_walker_a01b46473c4c9126531f86084644be87b}\label{class_walker_a01b46473c4c9126531f86084644be87b}} +void {\bfseries get\+Voxel\+Position} (double \&, double \&, double \&) const +\item +\mbox{\Hypertarget{class_walker_aae6ee54e7ca18144ebc63ae30184ac57}\label{class_walker_aae6ee54e7ca18144ebc63ae30184ac57}} +void {\bfseries get\+Voxel\+Position} (Eigen\+::\+Vector3d \&) const +\item +\mbox{\Hypertarget{class_walker_a0341476db76d217c0eec89b5f786dc87}\label{class_walker_a0341476db76d217c0eec89b5f786dc87}} +void {\bfseries get\+Initial\+Position} (double \&, double \&, double \&) const +\item +\mbox{\Hypertarget{class_walker_a3aa5f7410325a5fc1096684e215e4e3f}\label{class_walker_a3aa5f7410325a5fc1096684e215e4e3f}} +void {\bfseries get\+Initial\+Position} (Eigen\+::\+Vector3d \&) const +\item +\mbox{\Hypertarget{class_walker_adf89d9d3c6cd537d2587e51775f9b6ad}\label{class_walker_adf89d9d3c6cd537d2587e51775f9b6ad}} +void {\bfseries get\+Next\+Direction} (Eigen\+::\+Vector3d \&) const +\item +\mbox{\Hypertarget{class_walker_a37969cac5ade61c75fb7407b56b535da}\label{class_walker_a37969cac5ade61c75fb7407b56b535da}} +unsigned int {\bfseries get\+Index} () const +\item +\mbox{\Hypertarget{class_walker_a47cb165188d588ea04f090648b091654}\label{class_walker_a47cb165188d588ea04f090648b091654}} +void {\bfseries set\+Real\+Position} (const double \&, const double \&, const double \&) +\item +\mbox{\Hypertarget{class_walker_ad25cfee48c03072212d9034069002819}\label{class_walker_ad25cfee48c03072212d9034069002819}} +void {\bfseries set\+Real\+Position} (const Eigen\+::\+Vector3d \&) +\item +\mbox{\Hypertarget{class_walker_a4d87112b21f490f19e7b942ca94aae20}\label{class_walker_a4d87112b21f490f19e7b942ca94aae20}} +void {\bfseries set\+Voxel\+Position} (const double \&, const double \&, const double \&) +\item +\mbox{\Hypertarget{class_walker_aba1f54b57de786fe550ebfcf9f4a7e31}\label{class_walker_aba1f54b57de786fe550ebfcf9f4a7e31}} +void {\bfseries set\+Voxel\+Position} (const Eigen\+::\+Vector3d \&) +\item +\mbox{\Hypertarget{class_walker_a06a696a95f7678cb76be214e90e64337}\label{class_walker_a06a696a95f7678cb76be214e90e64337}} +void {\bfseries set\+Initial\+Position} (const double \&, const double \&, const double \&) +\item +\mbox{\Hypertarget{class_walker_aafa361803280bc080049ea153867b61d}\label{class_walker_aafa361803280bc080049ea153867b61d}} +void {\bfseries set\+Initial\+Position} (const Eigen\+::\+Vector3d \&) +\item +\mbox{\Hypertarget{class_walker_abdeb613b765c45fdabe2891accdbdfb6}\label{class_walker_abdeb613b765c45fdabe2891accdbdfb6}} +void {\bfseries set\+Next\+Direction} (Eigen\+::\+Vector3d \&) +\item +\mbox{\Hypertarget{class_walker_aefd71f5bc3303af7e7748bcac5b6ce92}\label{class_walker_aefd71f5bc3303af7e7748bcac5b6ce92}} +void {\bfseries set\+Random\+Initial\+Position} (const Eigen\+::\+Vector3d \&min, const Eigen\+::\+Vector3d \&max) +\item +\mbox{\Hypertarget{class_walker_aa6643451a4e13c1d7e121fe710a3bade}\label{class_walker_aa6643451a4e13c1d7e121fe710a3bade}} +void {\bfseries set\+Index} (unsigned int \&) +\item +\mbox{\Hypertarget{class_walker_a1fff7bf0f8dde00b9909891f060ac009}\label{class_walker_a1fff7bf0f8dde00b9909891f060ac009}} +void {\bfseries set\+Real\+Pos\+Log} (const Eigen\+::\+Vector3d \&pos, unsigned t) +\item +\mbox{\Hypertarget{class_walker_a00a41d2b11cfeffae9ea66f4ea80a568}\label{class_walker_a00a41d2b11cfeffae9ea66f4ea80a568}} +void {\bfseries set\+Real\+Pos\+Log} (double x, double y, double z, unsigned t) +\item +\mbox{\Hypertarget{class_walker_adc7b7500ea403ce7dba872ef729c2c40}\label{class_walker_adc7b7500ea403ce7dba872ef729c2c40}} +void {\bfseries set\+Vox\+Pos\+Log} (const Eigen\+::\+Vector3d \&pos, unsigned t) +\item +\mbox{\Hypertarget{class_walker_adb197a756c457adc604b6605111e9b92}\label{class_walker_adb197a756c457adc604b6605111e9b92}} +void {\bfseries set\+Vox\+Pos\+Log} (double x, double y, double z, unsigned t) +\item +\mbox{\Hypertarget{class_walker_a288f810ee9e4de79a7fe9224de7438b3}\label{class_walker_a288f810ee9e4de79a7fe9224de7438b3}} +void {\bfseries set\+Number\+Of\+Steps} (unsigned T) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +Eigen\+::\+Vector3d \hyperlink{class_walker_a1008a95833c1f74b53f02e57e84417b7}{pos\+\_\+r} +\item +Eigen\+::\+Vector3d \hyperlink{class_walker_a2c1bf5a8da9e8f3a230a22ab4ae0e373}{pos\+\_\+v} +\item +Eigen\+::\+Vector3d \hyperlink{class_walker_a8c78216899e04e9439a991cbad9df36f}{last\+\_\+pos\+\_\+r} +\item +Eigen\+::\+Vector3d \hyperlink{class_walker_a2d50601346a754183b38890c18e7a6e7}{last\+\_\+pos\+\_\+v} +\item +Eigen\+::\+Vector3d \hyperlink{class_walker_a98116f0e5d65e1cf65449d80a2d87617}{ini\+\_\+pos} +\item +Eigen\+::\+Vector3d \hyperlink{class_walker_ad1629485a13c80367a563ed7b88149eb}{next\+\_\+direction} +\item +Eigen\+::\+Matrix3\+Xd \hyperlink{class_walker_a1ba5a46fddf62eb3eeaabc7c868afe07}{pos\+\_\+r\+\_\+log} +\item +Eigen\+::\+Matrix3\+Xd \hyperlink{class_walker_a62d99cc92226681123be94e64fb2bf7b}{pos\+\_\+v\+\_\+log} +\item +int \hyperlink{class_walker_adf221f7a635c09cfaafc0dab5aa38106}{in\+\_\+obj\+\_\+index} +\item +int \hyperlink{class_walker_a48d0fe08f2297d9ad56cfaec9ee1926c}{in\+\_\+ply\+\_\+index} +\item +\hyperlink{class_cylinder_collision_sphere}{Cylinder\+Collision\+Sphere} \hyperlink{class_walker_a28d139085430c9a11e0a70be2c3083af}{collision\+\_\+sphere\+\_\+cylinders} +\item +\hyperlink{class_p_l_y_collision_sphere}{P\+L\+Y\+Collision\+Sphere} \hyperlink{class_walker_a8aecfb76c9007eb6da99b024bc5e425d}{collision\+\_\+sphere\+\_\+ply} +\item +Eigen\+::\+Vector3d \hyperlink{class_walker_a8a27ead68d3dc7140afbec2710fb3176}{initial\+\_\+sphere\+\_\+pos\+\_\+v} +\item +unsigned \hyperlink{class_walker_a83536011f160b42f6c39f121ee550731}{steps\+\_\+count} +\item +\hyperlink{class_walker_afcad3f5c11d0bd045de22fb0347dc44c}{state} \hyperlink{class_walker_afa37629b74387435a0bb02e0c061a718}{status} +\item +\mbox{\Hypertarget{class_walker_aa80fe894bc14568bdc296083ca5e5492}\label{class_walker_aa80fe894bc14568bdc296083ca5e5492}} +\hyperlink{class_walker_a24246136a10754791b05cb570dbb8417}{Relative\+Location} {\bfseries initial\+\_\+location} +\item +\hyperlink{class_walker_a24246136a10754791b05cb570dbb8417}{Relative\+Location} \hyperlink{class_walker_a77f5c801c38158bb8568f75a22baed20}{location} +\item +int \hyperlink{class_walker_aa211ac1f9a396b1bf3b565e0f8ed098a}{intra\+\_\+extra\+\_\+consensus} +\item +unsigned \hyperlink{class_walker_a8ca6c90f124e46869ea752920565e2c2}{intra\+\_\+coll\+\_\+count} +\item +unsigned \hyperlink{class_walker_a28c595f6f6b4c32bed6afb177c0a6608}{extra\+\_\+coll\+\_\+count} +\item +unsigned int \hyperlink{class_walker_a58e2d14d760748687138b7582cd04365}{index} +\item +unsigned int \hyperlink{class_walker_a38669698192d39146c77011b69b1e372}{rejection\+\_\+count} +\item +float \hyperlink{class_walker_a7f33d06b7aa5fabf2a2ac15d119bbcc7}{steps\+\_\+per\+\_\+second} +\end{DoxyCompactItemize} + + +\subsection{Detailed Description} +Spin Final class =============================================================/. + +Basic unit of the diffusion process. + +\begin{DoxyAuthor}{Author} +Jonathan Rafael +\end{DoxyAuthor} +\begin{DoxyDate}{Date} +November 2016 \subsection*{0.\+2 } +\end{DoxyDate} + + +Alias for a particle. Basic unit on the simulation process. Saves all the necessary information to perform the particles dynamics. + +\subsection{Member Enumeration Documentation} +\mbox{\Hypertarget{class_walker_a24246136a10754791b05cb570dbb8417}\label{class_walker_a24246136a10754791b05cb570dbb8417}} +\index{Walker@{Walker}!Relative\+Location@{Relative\+Location}} +\index{Relative\+Location@{Relative\+Location}!Walker@{Walker}} +\subsubsection{\texorpdfstring{Relative\+Location}{RelativeLocation}} +{\footnotesize\ttfamily enum \hyperlink{class_walker_a24246136a10754791b05cb570dbb8417}{Walker\+::\+Relative\+Location}} + + + +An enum. + +Possible location of the walker inside the voxel. Checks illegal crossings of the barrier (border, lol) \mbox{\Hypertarget{class_walker_afcad3f5c11d0bd045de22fb0347dc44c}\label{class_walker_afcad3f5c11d0bd045de22fb0347dc44c}} +\index{Walker@{Walker}!state@{state}} +\index{state@{state}!Walker@{Walker}} +\subsubsection{\texorpdfstring{state}{state}} +{\footnotesize\ttfamily enum \hyperlink{class_walker_afcad3f5c11d0bd045de22fb0347dc44c}{Walker\+::state}} + + + +An enum. + +All the possibles states that a walker can be in a given step. The next step is perform according to this state + +\subsection{Constructor \& Destructor Documentation} +\mbox{\Hypertarget{class_walker_acc0931305bedcf81ff621c31cdf2a92c}\label{class_walker_acc0931305bedcf81ff621c31cdf2a92c}} +\index{Walker@{Walker}!Walker@{Walker}} +\index{Walker@{Walker}!Walker@{Walker}} +\subsubsection{\texorpdfstring{Walker()}{Walker()}\hspace{0.1cm}{\footnotesize\ttfamily [1/2]}} +{\footnotesize\ttfamily Walker\+::\+Walker (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})} + + + +Default constructor. + +Set all variables to cero. + +Based class \hyperlink{class_walker}{Walker}. \mbox{\Hypertarget{class_walker_a562c14b600628c18ac689464bd0f7e35}\label{class_walker_a562c14b600628c18ac689464bd0f7e35}} +\index{Walker@{Walker}!````~Walker@{$\sim$\+Walker}} +\index{````~Walker@{$\sim$\+Walker}!Walker@{Walker}} +\subsubsection{\texorpdfstring{$\sim$\+Walker()}{~Walker()}} +{\footnotesize\ttfamily Walker\+::$\sim$\+Walker (\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})\hspace{0.3cm}{\ttfamily [inline]}} + +Default destructor. + +Does nothing \mbox{\Hypertarget{class_walker_ada366966172eec6916690c01ac8f01db}\label{class_walker_ada366966172eec6916690c01ac8f01db}} +\index{Walker@{Walker}!Walker@{Walker}} +\index{Walker@{Walker}!Walker@{Walker}} +\subsubsection{\texorpdfstring{Walker()}{Walker()}\hspace{0.1cm}{\footnotesize\ttfamily [2/2]}} +{\footnotesize\ttfamily Walker\+::\+Walker (\begin{DoxyParamCaption}\item[{double}]{xmin, }\item[{double}]{xmax, }\item[{double}]{ymin, }\item[{double}]{ymax, }\item[{double}]{zmin, }\item[{double}]{zmax }\end{DoxyParamCaption})} + + + +Constructor. + +Initialize the walker position in a random position inside the boundaries defined by the limits. +\begin{DoxyParams}{Parameters} +{\em xmin} & lower x threshold \\ +\hline +{\em xmax} & upper x threshold \\ +\hline +{\em ymin} & lower y threshold \\ +\hline +{\em ymax} & upper y threshold \\ +\hline +\end{DoxyParams} + + +\subsection{Member Data Documentation} +\mbox{\Hypertarget{class_walker_a28d139085430c9a11e0a70be2c3083af}\label{class_walker_a28d139085430c9a11e0a70be2c3083af}} +\index{Walker@{Walker}!collision\+\_\+sphere\+\_\+cylinders@{collision\+\_\+sphere\+\_\+cylinders}} +\index{collision\+\_\+sphere\+\_\+cylinders@{collision\+\_\+sphere\+\_\+cylinders}!Walker@{Walker}} +\subsubsection{\texorpdfstring{collision\+\_\+sphere\+\_\+cylinders}{collision\_sphere\_cylinders}} +{\footnotesize\ttfamily \hyperlink{class_cylinder_collision_sphere}{Cylinder\+Collision\+Sphere} Walker\+::collision\+\_\+sphere\+\_\+cylinders} + +\hyperlink{class_collision}{Collision} sphere for collition against cylidners \mbox{\Hypertarget{class_walker_a8aecfb76c9007eb6da99b024bc5e425d}\label{class_walker_a8aecfb76c9007eb6da99b024bc5e425d}} +\index{Walker@{Walker}!collision\+\_\+sphere\+\_\+ply@{collision\+\_\+sphere\+\_\+ply}} +\index{collision\+\_\+sphere\+\_\+ply@{collision\+\_\+sphere\+\_\+ply}!Walker@{Walker}} +\subsubsection{\texorpdfstring{collision\+\_\+sphere\+\_\+ply}{collision\_sphere\_ply}} +{\footnotesize\ttfamily \hyperlink{class_p_l_y_collision_sphere}{P\+L\+Y\+Collision\+Sphere} Walker\+::collision\+\_\+sphere\+\_\+ply} + +\hyperlink{class_collision}{Collision} sphere for collition against P\+LY meshes \mbox{\Hypertarget{class_walker_a28c595f6f6b4c32bed6afb177c0a6608}\label{class_walker_a28c595f6f6b4c32bed6afb177c0a6608}} +\index{Walker@{Walker}!extra\+\_\+coll\+\_\+count@{extra\+\_\+coll\+\_\+count}} +\index{extra\+\_\+coll\+\_\+count@{extra\+\_\+coll\+\_\+count}!Walker@{Walker}} +\subsubsection{\texorpdfstring{extra\+\_\+coll\+\_\+count}{extra\_coll\_count}} +{\footnotesize\ttfamily unsigned Walker\+::extra\+\_\+coll\+\_\+count} + +counter of collision in the extra-\/side w/r the normal \mbox{\Hypertarget{class_walker_adf221f7a635c09cfaafc0dab5aa38106}\label{class_walker_adf221f7a635c09cfaafc0dab5aa38106}} +\index{Walker@{Walker}!in\+\_\+obj\+\_\+index@{in\+\_\+obj\+\_\+index}} +\index{in\+\_\+obj\+\_\+index@{in\+\_\+obj\+\_\+index}!Walker@{Walker}} +\subsubsection{\texorpdfstring{in\+\_\+obj\+\_\+index}{in\_obj\_index}} +{\footnotesize\ttfamily int Walker\+::in\+\_\+obj\+\_\+index} + +Auxiliar index to save if the walker was inside a convex object \mbox{\Hypertarget{class_walker_a48d0fe08f2297d9ad56cfaec9ee1926c}\label{class_walker_a48d0fe08f2297d9ad56cfaec9ee1926c}} +\index{Walker@{Walker}!in\+\_\+ply\+\_\+index@{in\+\_\+ply\+\_\+index}} +\index{in\+\_\+ply\+\_\+index@{in\+\_\+ply\+\_\+index}!Walker@{Walker}} +\subsubsection{\texorpdfstring{in\+\_\+ply\+\_\+index}{in\_ply\_index}} +{\footnotesize\ttfamily int Walker\+::in\+\_\+ply\+\_\+index} + +Auxiliar index to save if the walker was inside a convex ply object \mbox{\Hypertarget{class_walker_a58e2d14d760748687138b7582cd04365}\label{class_walker_a58e2d14d760748687138b7582cd04365}} +\index{Walker@{Walker}!index@{index}} +\index{index@{index}!Walker@{Walker}} +\subsubsection{\texorpdfstring{index}{index}} +{\footnotesize\ttfamily unsigned int Walker\+::index} + +\hyperlink{class_walker}{Walker} identifier (id) \mbox{\Hypertarget{class_walker_a98116f0e5d65e1cf65449d80a2d87617}\label{class_walker_a98116f0e5d65e1cf65449d80a2d87617}} +\index{Walker@{Walker}!ini\+\_\+pos@{ini\+\_\+pos}} +\index{ini\+\_\+pos@{ini\+\_\+pos}!Walker@{Walker}} +\subsubsection{\texorpdfstring{ini\+\_\+pos}{ini\_pos}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Walker\+::ini\+\_\+pos} + +\hyperlink{class_walker}{Walker} intital position \mbox{\Hypertarget{class_walker_a8a27ead68d3dc7140afbec2710fb3176}\label{class_walker_a8a27ead68d3dc7140afbec2710fb3176}} +\index{Walker@{Walker}!initial\+\_\+sphere\+\_\+pos\+\_\+v@{initial\+\_\+sphere\+\_\+pos\+\_\+v}} +\index{initial\+\_\+sphere\+\_\+pos\+\_\+v@{initial\+\_\+sphere\+\_\+pos\+\_\+v}!Walker@{Walker}} +\subsubsection{\texorpdfstring{initial\+\_\+sphere\+\_\+pos\+\_\+v}{initial\_sphere\_pos\_v}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Walker\+::initial\+\_\+sphere\+\_\+pos\+\_\+v} + +Saves the intial positioon of the walker inside the collition sphere \mbox{\Hypertarget{class_walker_a8ca6c90f124e46869ea752920565e2c2}\label{class_walker_a8ca6c90f124e46869ea752920565e2c2}} +\index{Walker@{Walker}!intra\+\_\+coll\+\_\+count@{intra\+\_\+coll\+\_\+count}} +\index{intra\+\_\+coll\+\_\+count@{intra\+\_\+coll\+\_\+count}!Walker@{Walker}} +\subsubsection{\texorpdfstring{intra\+\_\+coll\+\_\+count}{intra\_coll\_count}} +{\footnotesize\ttfamily unsigned Walker\+::intra\+\_\+coll\+\_\+count} + +counter of collision in the ïntra-\/side w/r the normal \mbox{\Hypertarget{class_walker_aa211ac1f9a396b1bf3b565e0f8ed098a}\label{class_walker_aa211ac1f9a396b1bf3b565e0f8ed098a}} +\index{Walker@{Walker}!intra\+\_\+extra\+\_\+consensus@{intra\+\_\+extra\+\_\+consensus}} +\index{intra\+\_\+extra\+\_\+consensus@{intra\+\_\+extra\+\_\+consensus}!Walker@{Walker}} +\subsubsection{\texorpdfstring{intra\+\_\+extra\+\_\+consensus}{intra\_extra\_consensus}} +{\footnotesize\ttfamily int Walker\+::intra\+\_\+extra\+\_\+consensus} + +intra o extra position by face collision consensus w/r the normal \mbox{\Hypertarget{class_walker_a8c78216899e04e9439a991cbad9df36f}\label{class_walker_a8c78216899e04e9439a991cbad9df36f}} +\index{Walker@{Walker}!last\+\_\+pos\+\_\+r@{last\+\_\+pos\+\_\+r}} +\index{last\+\_\+pos\+\_\+r@{last\+\_\+pos\+\_\+r}!Walker@{Walker}} +\subsubsection{\texorpdfstring{last\+\_\+pos\+\_\+r}{last\_pos\_r}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Walker\+::last\+\_\+pos\+\_\+r} + +\hyperlink{class_walker}{Walker} voxel last position \mbox{\Hypertarget{class_walker_a2d50601346a754183b38890c18e7a6e7}\label{class_walker_a2d50601346a754183b38890c18e7a6e7}} +\index{Walker@{Walker}!last\+\_\+pos\+\_\+v@{last\+\_\+pos\+\_\+v}} +\index{last\+\_\+pos\+\_\+v@{last\+\_\+pos\+\_\+v}!Walker@{Walker}} +\subsubsection{\texorpdfstring{last\+\_\+pos\+\_\+v}{last\_pos\_v}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Walker\+::last\+\_\+pos\+\_\+v} + +\hyperlink{class_walker}{Walker} real last position \mbox{\Hypertarget{class_walker_a77f5c801c38158bb8568f75a22baed20}\label{class_walker_a77f5c801c38158bb8568f75a22baed20}} +\index{Walker@{Walker}!location@{location}} +\index{location@{location}!Walker@{Walker}} +\subsubsection{\texorpdfstring{location}{location}} +{\footnotesize\ttfamily \hyperlink{class_walker_a24246136a10754791b05cb570dbb8417}{Relative\+Location} Walker\+::location} + +location on the substrate (if known) \mbox{\Hypertarget{class_walker_ad1629485a13c80367a563ed7b88149eb}\label{class_walker_ad1629485a13c80367a563ed7b88149eb}} +\index{Walker@{Walker}!next\+\_\+direction@{next\+\_\+direction}} +\index{next\+\_\+direction@{next\+\_\+direction}!Walker@{Walker}} +\subsubsection{\texorpdfstring{next\+\_\+direction}{next\_direction}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Walker\+::next\+\_\+direction} + +Auxiliar vector for special states cases, decides the next direction \mbox{\Hypertarget{class_walker_a1008a95833c1f74b53f02e57e84417b7}\label{class_walker_a1008a95833c1f74b53f02e57e84417b7}} +\index{Walker@{Walker}!pos\+\_\+r@{pos\+\_\+r}} +\index{pos\+\_\+r@{pos\+\_\+r}!Walker@{Walker}} +\subsubsection{\texorpdfstring{pos\+\_\+r}{pos\_r}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Walker\+::pos\+\_\+r} + +Real walker position for collision, r stands for real \mbox{\Hypertarget{class_walker_a1ba5a46fddf62eb3eeaabc7c868afe07}\label{class_walker_a1ba5a46fddf62eb3eeaabc7c868afe07}} +\index{Walker@{Walker}!pos\+\_\+r\+\_\+log@{pos\+\_\+r\+\_\+log}} +\index{pos\+\_\+r\+\_\+log@{pos\+\_\+r\+\_\+log}!Walker@{Walker}} +\subsubsection{\texorpdfstring{pos\+\_\+r\+\_\+log}{pos\_r\_log}} +{\footnotesize\ttfamily Eigen\+::\+Matrix3\+Xd Walker\+::pos\+\_\+r\+\_\+log} + +log of the real spin position, used to compute the phase shift \mbox{\Hypertarget{class_walker_a2c1bf5a8da9e8f3a230a22ab4ae0e373}\label{class_walker_a2c1bf5a8da9e8f3a230a22ab4ae0e373}} +\index{Walker@{Walker}!pos\+\_\+v@{pos\+\_\+v}} +\index{pos\+\_\+v@{pos\+\_\+v}!Walker@{Walker}} +\subsubsection{\texorpdfstring{pos\+\_\+v}{pos\_v}} +{\footnotesize\ttfamily Eigen\+::\+Vector3d Walker\+::pos\+\_\+v} + +\hyperlink{class_walker}{Walker} current position \mbox{\Hypertarget{class_walker_a62d99cc92226681123be94e64fb2bf7b}\label{class_walker_a62d99cc92226681123be94e64fb2bf7b}} +\index{Walker@{Walker}!pos\+\_\+v\+\_\+log@{pos\+\_\+v\+\_\+log}} +\index{pos\+\_\+v\+\_\+log@{pos\+\_\+v\+\_\+log}!Walker@{Walker}} +\subsubsection{\texorpdfstring{pos\+\_\+v\+\_\+log}{pos\_v\_log}} +{\footnotesize\ttfamily Eigen\+::\+Matrix3\+Xd Walker\+::pos\+\_\+v\+\_\+log} + +log of the voxel position, used for collision location and bouncing \mbox{\Hypertarget{class_walker_a38669698192d39146c77011b69b1e372}\label{class_walker_a38669698192d39146c77011b69b1e372}} +\index{Walker@{Walker}!rejection\+\_\+count@{rejection\+\_\+count}} +\index{rejection\+\_\+count@{rejection\+\_\+count}!Walker@{Walker}} +\subsubsection{\texorpdfstring{rejection\+\_\+count}{rejection\_count}} +{\footnotesize\ttfamily unsigned int Walker\+::rejection\+\_\+count} + +counter of the rejected directions in a single time-\/step \mbox{\Hypertarget{class_walker_afa37629b74387435a0bb02e0c061a718}\label{class_walker_afa37629b74387435a0bb02e0c061a718}} +\index{Walker@{Walker}!status@{status}} +\index{status@{status}!Walker@{Walker}} +\subsubsection{\texorpdfstring{status}{status}} +{\footnotesize\ttfamily \hyperlink{class_walker_afcad3f5c11d0bd045de22fb0347dc44c}{state} Walker\+::status} + +state memeber \mbox{\Hypertarget{class_walker_a83536011f160b42f6c39f121ee550731}\label{class_walker_a83536011f160b42f6c39f121ee550731}} +\index{Walker@{Walker}!steps\+\_\+count@{steps\+\_\+count}} +\index{steps\+\_\+count@{steps\+\_\+count}!Walker@{Walker}} +\subsubsection{\texorpdfstring{steps\+\_\+count}{steps\_count}} +{\footnotesize\ttfamily unsigned Walker\+::steps\+\_\+count} + +Counts the number of steps (including bouncings) made. \mbox{\Hypertarget{class_walker_a7f33d06b7aa5fabf2a2ac15d119bbcc7}\label{class_walker_a7f33d06b7aa5fabf2a2ac15d119bbcc7}} +\index{Walker@{Walker}!steps\+\_\+per\+\_\+second@{steps\+\_\+per\+\_\+second}} +\index{steps\+\_\+per\+\_\+second@{steps\+\_\+per\+\_\+second}!Walker@{Walker}} +\subsubsection{\texorpdfstring{steps\+\_\+per\+\_\+second}{steps\_per\_second}} +{\footnotesize\ttfamily float Walker\+::steps\+\_\+per\+\_\+second} + +Particles steps per second speeed. + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/walker.\+h\item +src/walker.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/class_walker__coll__graph.md5 b/doc/latex/class_walker__coll__graph.md5 new file mode 100644 index 0000000..a11ff28 --- /dev/null +++ b/doc/latex/class_walker__coll__graph.md5 @@ -0,0 +1 @@ +858ccf37ad4601141c201f9681e18e5c \ No newline at end of file diff --git a/doc/latex/class_walker__coll__graph.pdf b/doc/latex/class_walker__coll__graph.pdf new file mode 100644 index 0000000..56423e7 Binary files /dev/null and b/doc/latex/class_walker__coll__graph.pdf differ diff --git a/doc/latex/classsentinels_1_1_sentinel.tex b/doc/latex/classsentinels_1_1_sentinel.tex new file mode 100644 index 0000000..9a8b644 --- /dev/null +++ b/doc/latex/classsentinels_1_1_sentinel.tex @@ -0,0 +1,72 @@ +\hypertarget{classsentinels_1_1_sentinel}{}\section{sentinels\+:\+:Sentinel Class Reference} +\label{classsentinels_1_1_sentinel}\index{sentinels\+::\+Sentinel@{sentinels\+::\+Sentinel}} +\subsection*{Public Types} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_a82dc9b174c5d4c23b747b083f6ba7dbd}\label{classsentinels_1_1_sentinel_a82dc9b174c5d4c23b747b083f6ba7dbd}} +enum {\bfseries Error\+Cases} \{ \newline +{\bfseries none}, +{\bfseries stuck}, +{\bfseries crossed}, +{\bfseries rejected}, +\newline +{\bfseries rejected\+\_\+initial\+\_\+pos} + \} +\end{DoxyCompactItemize} +\subsection*{Public Member Functions} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_ad292b3700a6f7172e31aba2c3c57d800}\label{classsentinels_1_1_sentinel_ad292b3700a6f7172e31aba2c3c57d800}} +void {\bfseries clear} () +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_a88cb42ad4144fcd6079117fe71e762ed}\label{classsentinels_1_1_sentinel_a88cb42ad4144fcd6079117fe71e762ed}} +void {\bfseries set\+Bouncing\+Error} (unsigned bouncings) +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_a19710e1e2a694442d64772c63307c110}\label{classsentinels_1_1_sentinel_a19710e1e2a694442d64772c63307c110}} +void {\bfseries set\+Crossing\+Error} (unsigned) +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_a75fbb7413866ebf130fd6d28fa4a77b9}\label{classsentinels_1_1_sentinel_a75fbb7413866ebf130fd6d28fa4a77b9}} +void {\bfseries set\+Rejected\+Error} () +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_a43d8a814622b8c3ad0290d7cc2c7202e}\label{classsentinels_1_1_sentinel_a43d8a814622b8c3ad0290d7cc2c7202e}} +bool {\bfseries check\+Errors} (\hyperlink{class_walker}{Walker} \&w, const \hyperlink{class_parameters}{Parameters} \¶ms, bool no\+P\+LY, unsigned \&bouncing\+\_\+count) +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_aabce46b0d258a94d0401d80904e3b1f4}\label{classsentinels_1_1_sentinel_aabce46b0d258a94d0401d80904e3b1f4}} +void {\bfseries deportation\+Process} (\hyperlink{class_walker}{Walker} \&walker, unsigned \&w, unsigned \&t, bool \&back\+\_\+tracking, \hyperlink{class_parameters}{Parameters} \¶ms, int id) +\end{DoxyCompactItemize} +\subsection*{Public Attributes} +\begin{DoxyCompactItemize} +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_a7c588d3516d0576ccd319cfffa2ba1ee}\label{classsentinels_1_1_sentinel_a7c588d3516d0576ccd319cfffa2ba1ee}} +unsigned {\bfseries stuck\+\_\+count} +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_ae63b02f83c9738eb01a85268279ebb52}\label{classsentinels_1_1_sentinel_ae63b02f83c9738eb01a85268279ebb52}} +unsigned {\bfseries illegal\+\_\+count} +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_a117da1c60b611dcf0780f21b9b4bcfff}\label{classsentinels_1_1_sentinel_a117da1c60b611dcf0780f21b9b4bcfff}} +unsigned {\bfseries bouncings} +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_a934aa2e258cfed479b293bd6fa546b4d}\label{classsentinels_1_1_sentinel_a934aa2e258cfed479b293bd6fa546b4d}} +unsigned {\bfseries obstacle\+\_\+id} +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_aa1711693186810c3b3db9d6d25d43373}\label{classsentinels_1_1_sentinel_aa1711693186810c3b3db9d6d25d43373}} +unsigned {\bfseries rejected\+\_\+count} +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_abf75c99c36d1155320b934ae2f9a8f82}\label{classsentinels_1_1_sentinel_abf75c99c36d1155320b934ae2f9a8f82}} +bool {\bfseries rejected\+\_\+step} +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_af1f6fc70d0048859742b3df027b1e775}\label{classsentinels_1_1_sentinel_af1f6fc70d0048859742b3df027b1e775}} +bool {\bfseries deport\+\_\+illegals} +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_ae542b64ba62eabadab040447ae23f960}\label{classsentinels_1_1_sentinel_ae542b64ba62eabadab040447ae23f960}} +bool {\bfseries discard\+\_\+stucks} +\item +\mbox{\Hypertarget{classsentinels_1_1_sentinel_a1c163213e6a40e1d935d5eb6333b5b62}\label{classsentinels_1_1_sentinel_a1c163213e6a40e1d935d5eb6333b5b62}} +Error\+Cases {\bfseries error} +\end{DoxyCompactItemize} + + +The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize} +\item +src/sentinel.\+h\item +src/sentinel.\+cpp\end{DoxyCompactItemize} diff --git a/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex b/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex new file mode 100644 index 0000000..beea426 --- /dev/null +++ b/doc/latex/dir_68267d1309a1af8e8297ef4c3efbcdba.tex @@ -0,0 +1,2 @@ +\hypertarget{dir_68267d1309a1af8e8297ef4c3efbcdba}{}\section{src Directory Reference} +\label{dir_68267d1309a1af8e8297ef4c3efbcdba}\index{src Directory Reference@{src Directory Reference}} diff --git a/doc/latex/doxygen.sty b/doc/latex/doxygen.sty new file mode 100644 index 0000000..e457acc --- /dev/null +++ b/doc/latex/doxygen.sty @@ -0,0 +1,503 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{doxygen} + +% Packages used by this style file +\RequirePackage{alltt} +\RequirePackage{array} +\RequirePackage{calc} +\RequirePackage{float} +\RequirePackage{ifthen} +\RequirePackage{verbatim} +\RequirePackage[table]{xcolor} +\RequirePackage{longtable} +\RequirePackage{tabu} +\RequirePackage{tabularx} +\RequirePackage{multirow} + +%---------- Internal commands used in this style file ---------------- + +\newcommand{\ensurespace}[1]{% + \begingroup% + \setlength{\dimen@}{#1}% + \vskip\z@\@plus\dimen@% + \penalty -100\vskip\z@\@plus -\dimen@% + \vskip\dimen@% + \penalty 9999% + \vskip -\dimen@% + \vskip\z@skip% hide the previous |\vskip| from |\addvspace| + \endgroup% +} + +\newcommand{\DoxyLabelFont}{} +\newcommand{\entrylabel}[1]{% + {% + \parbox[b]{\labelwidth-4pt}{% + \makebox[0pt][l]{\DoxyLabelFont#1}% + \vspace{1.5\baselineskip}% + }% + }% +} + +\newenvironment{DoxyDesc}[1]{% + \ensurespace{4\baselineskip}% + \begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +\newsavebox{\xrefbox} +\newlength{\xreflength} +\newcommand{\xreflabel}[1]{% + \sbox{\xrefbox}{#1}% + \setlength{\xreflength}{\wd\xrefbox}% + \ifthenelse{\xreflength>\labelwidth}{% + \begin{minipage}{\textwidth}% + \setlength{\parindent}{0pt}% + \hangindent=15pt\bfseries #1\vspace{1.2\itemsep}% + \end{minipage}% + }{% + \parbox[b]{\labelwidth}{\makebox[0pt][l]{\textbf{#1}}}% + }% +} + +%---------- Commands used by doxygen LaTeX output generator ---------- + +% Used by
     ... 
    +\newenvironment{DoxyPre}{% + \small% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} + +% Used by @code ... @endcode +\newenvironment{DoxyCode}{% + \par% + \scriptsize% + \begin{alltt}% +}{% + \end{alltt}% + \normalsize% +} + +% Used by @example, @include, @includelineno and @dontinclude +\newenvironment{DoxyCodeInclude}{% + \DoxyCode% +}{% + \endDoxyCode% +} + +% Used by @verbatim ... @endverbatim +\newenvironment{DoxyVerb}{% + \footnotesize% + \verbatim% +}{% + \endverbatim% + \normalsize% +} + +% Used by @verbinclude +\newenvironment{DoxyVerbInclude}{% + \DoxyVerb% +}{% + \endDoxyVerb% +} + +% Used by numbered lists (using '-#' or
      ...
    ) +\newenvironment{DoxyEnumerate}{% + \enumerate% +}{% + \endenumerate% +} + +% Used by bullet lists (using '-', @li, @arg, or
      ...
    ) +\newenvironment{DoxyItemize}{% + \itemize% +}{% + \enditemize% +} + +% Used by description lists (using
    ...
    ) +\newenvironment{DoxyDescription}{% + \description% +}{% + \enddescription% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if caption is specified) +\newenvironment{DoxyImage}{% + \begin{figure}[H]% + \begin{center}% +}{% + \end{center}% + \end{figure}% +} + +% Used by @image, @dotfile, @dot ... @enddot, and @msc ... @endmsc +% (only if no caption is specified) +\newenvironment{DoxyImageNoCaption}{% + \begin{center}% +}{% + \end{center}% +} + +% Used by @attention +\newenvironment{DoxyAttention}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @author and @authors +\newenvironment{DoxyAuthor}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @date +\newenvironment{DoxyDate}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @invariant +\newenvironment{DoxyInvariant}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @note +\newenvironment{DoxyNote}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @post +\newenvironment{DoxyPostcond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @pre +\newenvironment{DoxyPrecond}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @copyright +\newenvironment{DoxyCopyright}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @remark +\newenvironment{DoxyRemark}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @return and @returns +\newenvironment{DoxyReturn}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @since +\newenvironment{DoxySince}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @see +\newenvironment{DoxySeeAlso}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @version +\newenvironment{DoxyVersion}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @warning +\newenvironment{DoxyWarning}[1]{% + \begin{DoxyDesc}{#1}% +}{% + \end{DoxyDesc}% +} + +% Used by @internal +\newenvironment{DoxyInternal}[1]{% + \paragraph*{#1}% +}{% +} + +% Used by @par and @paragraph +\newenvironment{DoxyParagraph}[1]{% + \begin{list}{}{% + \settowidth{\labelwidth}{40pt}% + \setlength{\leftmargin}{\labelwidth}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{-4pt}% + \renewcommand{\makelabel}{\entrylabel}% + }% + \item[#1]% +}{% + \end{list}% +} + +% Used by parameter lists +\newenvironment{DoxyParams}[2][]{% + \tabulinesep=1mm% + \par% + \ifthenelse{\equal{#1}{}}% + {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|}}% name + description + {\ifthenelse{\equal{#1}{1}}% + {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + name + desc + {\begin{longtabu} spread 0pt [l]{|X[-1,l]|X[-1,l]|X[-1,l]|X[-1,l]|}}% in/out + type + name + desc + } + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #2}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used for fields of simple structs +\newenvironment{DoxyFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|X[-1,l]|}% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{3}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used for fields simple class style enums +\newenvironment{DoxyEnumFields}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used for parameters within a detailed function description +\newenvironment{DoxyParamCaption}{% + \renewcommand{\item}[2][]{\\ \hspace*{2.0cm} ##1 {\em ##2}}% +}{% +} + +% Used by return value lists +\newenvironment{DoxyRetVals}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used by exception lists +\newenvironment{DoxyExceptions}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used by template parameter lists +\newenvironment{DoxyTemplParams}[1]{% + \tabulinesep=1mm% + \par% + \begin{longtabu} spread 0pt [l]{|X[-1,r]|X[-1,l]|}% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endfirsthead% + \multicolumn{2}{l}{\hspace{-6pt}\bfseries\fontseries{bc}\selectfont\color{darkgray} #1}\\[1ex]% + \hline% + \endhead% +}{% + \end{longtabu}% + \vspace{6pt}% +} + +% Used for member lists +\newenvironment{DoxyCompactItemize}{% + \begin{itemize}% + \setlength{\itemsep}{-3pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \setlength{\partopsep}{0pt}% +}{% + \end{itemize}% +} + +% Used for member descriptions +\newenvironment{DoxyCompactList}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + \setlength{\itemsep}{0pt}% + \setlength{\parsep}{0pt}% + \setlength{\topsep}{0pt}% + \renewcommand{\makelabel}{\hfill}% + }% +}{% + \end{list}% +} + +% Used for reference lists (@bug, @deprecated, @todo, etc.) +\newenvironment{DoxyRefList}{% + \begin{list}{}{% + \setlength{\labelwidth}{10pt}% + \setlength{\leftmargin}{\labelwidth}% + \addtolength{\leftmargin}{\labelsep}% + \renewcommand{\makelabel}{\xreflabel}% + }% +}{% + \end{list}% +} + +% Used by @bug, @deprecated, @todo, etc. +\newenvironment{DoxyRefDesc}[1]{% + \begin{list}{}{% + \renewcommand\makelabel[1]{\textbf{##1}}% + \settowidth\labelwidth{\makelabel{#1}}% + \setlength\leftmargin{\labelwidth+\labelsep}% + }% +}{% + \end{list}% +} + +% Used by parameter lists and simple sections +\newenvironment{Desc} +{\begin{list}{}{% + \settowidth{\labelwidth}{20pt}% + \setlength{\parsep}{0pt}% + \setlength{\itemsep}{0pt}% + \setlength{\leftmargin}{\labelwidth+\labelsep}% + \renewcommand{\makelabel}{\entrylabel}% + } +}{% + \end{list}% +} + +% Used by tables +\newcommand{\PBS}[1]{\let\temp=\\#1\let\\=\temp}% +\newenvironment{TabularC}[1]% +{\tabulinesep=1mm +\begin{longtabu} spread 0pt [c]{*#1{|X[-1]}|}}% +{\end{longtabu}\par}% + +\newenvironment{TabularNC}[1]% +{\begin{tabu} spread 0pt [l]{*#1{|X[-1]}|}}% +{\end{tabu}\par}% + +% Used for member group headers +\newenvironment{Indent}{% + \begin{list}{}{% + \setlength{\leftmargin}{0.5cm}% + }% + \item[]\ignorespaces% +}{% + \unskip% + \end{list}% +} + +% Used when hyperlinks are turned off +\newcommand{\doxyref}[3]{% + \textbf{#1} (\textnormal{#2}\,\pageref{#3})% +} + +% Used to link to a table when hyperlinks are turned on +\newcommand{\doxytablelink}[2]{% + \ref{#1}% +} + +% Used to link to a table when hyperlinks are turned off +\newcommand{\doxytableref}[3]{% + \ref{#3}% +} + +% Used by @addindex +\newcommand{\lcurly}{\{} +\newcommand{\rcurly}{\}} + +% Colors used for syntax highlighting +\definecolor{comment}{rgb}{0.5,0.0,0.0} +\definecolor{keyword}{rgb}{0.0,0.5,0.0} +\definecolor{keywordtype}{rgb}{0.38,0.25,0.125} +\definecolor{keywordflow}{rgb}{0.88,0.5,0.0} +\definecolor{preprocessor}{rgb}{0.5,0.38,0.125} +\definecolor{stringliteral}{rgb}{0.0,0.125,0.25} +\definecolor{charliteral}{rgb}{0.0,0.5,0.5} +\definecolor{vhdldigit}{rgb}{1.0,0.0,1.0} +\definecolor{vhdlkeyword}{rgb}{0.43,0.0,0.43} +\definecolor{vhdllogic}{rgb}{1.0,0.0,0.0} +\definecolor{vhdlchar}{rgb}{0.0,0.0,0.0} + +% Color used for table heading +\newcommand{\tableheadbgcolor}{lightgray}% + +% Version of hypertarget with correct landing location +\newcommand{\Hypertarget}[1]{\Hy@raisedlink{\hypertarget{#1}{}}} + +% Define caption that is also suitable in a table +\makeatletter +\def\doxyfigcaption{% +\refstepcounter{figure}% +\@dblarg{\@caption{figure}}} +\makeatother diff --git a/doc/latex/hierarchy.tex b/doc/latex/hierarchy.tex new file mode 100644 index 0000000..a4d04cc --- /dev/null +++ b/doc/latex/hierarchy.tex @@ -0,0 +1,38 @@ +\section{Class Hierarchy} +This inheritance list is sorted roughly, but not completely, alphabetically\+:\begin{DoxyCompactList} +\item \contentsline{section}{Collision}{\pageref{class_collision}}{} +\item \contentsline{section}{Collisionsphere}{\pageref{class_collisionsphere}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{Cylinder\+Collision\+Sphere}{\pageref{class_cylinder_collision_sphere}}{} +\item \contentsline{section}{P\+L\+Y\+Collision\+Sphere}{\pageref{class_p_l_y_collision_sphere}}{} +\end{DoxyCompactList} +\item \contentsline{section}{Collisionspheren}{\pageref{class_collisionspheren}}{} +\item \contentsline{section}{Cylinder\+Gamma\+Distribution}{\pageref{class_cylinder_gamma_distribution}}{} +\item \contentsline{section}{Dynamics\+Simulation}{\pageref{class_dynamics_simulation}}{} +\item \contentsline{section}{M\+C\+Simulation}{\pageref{class_m_c_simulation}}{} +\item \contentsline{section}{Obstacle}{\pageref{class_obstacle}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{Cylinder}{\pageref{class_cylinder}}{} +\item \contentsline{section}{P\+L\+Y\+Obstacle}{\pageref{class_p_l_y_obstacle}}{} +\end{DoxyCompactList} +\item \contentsline{section}{Parallel\+M\+C\+Simulation}{\pageref{class_parallel_m_c_simulation}}{} +\item \contentsline{section}{Parameter}{\pageref{class_parameter}}{} +\item \contentsline{section}{Parameters}{\pageref{class_parameters}}{} +\item \contentsline{section}{Plane}{\pageref{class_plane}}{} +\item \contentsline{section}{Propagator}{\pageref{class_propagator}}{} +\item \contentsline{section}{Scheme}{\pageref{class_scheme}}{} +\item \contentsline{section}{sentinels\+:\+:Sentinel}{\pageref{classsentinels_1_1_sentinel}}{} +\item \contentsline{section}{Sentinels}{\pageref{class_sentinels}}{} +\item \contentsline{section}{Sim\+Errno}{\pageref{class_sim_errno}}{} +\item \contentsline{section}{Simulable\+Sequence}{\pageref{class_simulable_sequence}}{} +\begin{DoxyCompactList} +\item \contentsline{section}{Gradient\+Waveform}{\pageref{class_gradient_waveform}}{} +\item \contentsline{section}{P\+G\+S\+E\+Sequence}{\pageref{class_p_g_s_e_sequence}}{} +\end{DoxyCompactList} +\item \contentsline{section}{Subdivision}{\pageref{class_subdivision}}{} +\item \contentsline{section}{Trajectory}{\pageref{class_trajectory}}{} +\item \contentsline{section}{Triangle}{\pageref{class_triangle}}{} +\item \contentsline{section}{Vertex}{\pageref{class_vertex}}{} +\item \contentsline{section}{Voxel}{\pageref{class_voxel}}{} +\item \contentsline{section}{Walker}{\pageref{class_walker}}{} +\end{DoxyCompactList} diff --git a/doc/latex/md_src__r_e_a_d_m_e.tex b/doc/latex/md_src__r_e_a_d_m_e.tex new file mode 100644 index 0000000..2a1294b --- /dev/null +++ b/doc/latex/md_src__r_e_a_d_m_e.tex @@ -0,0 +1,9 @@ +\section*{Static building from sources\+:} + +\paragraph*{Assuming a bin folder\+:} + +Cretes a folder {\ttfamily mkdir bin} + +Compiles all the magic (statically, slowly, but without messy .o) + +{\ttfamily g++ -\/\+O3 -\/std=c++11 -\/lpthread -\/std=c++0x -\/pthread -\/I. main.\+cpp simulablesequence.\+cpp vertex.\+cpp obstacle.\+cpp collision.\+cpp scheme.\+cpp voxel.\+cpp cylinder.\+cpp walker.\+cpp mcsimulation.\+cpp parallelmcsimulation.\+cpp trajectory.\+cpp triangle.\+cpp parameters.\+cpp plyobstacle.\+cpp pgsesequence.\+cpp dynamics\+Simulation.\+cpp simerrno.\+cpp collisionsphere.\+cpp cylindergammadistribution.\+cpp sentinel.\+cpp subdivision.\+cpp gradientwaveform.\+cpp propagator.\+cpp -\/o bin/\+M\+C-\/\+D\+C\+\_\+\+Simulator} \ No newline at end of file diff --git a/doc/latex/refman.tex b/doc/latex/refman.tex new file mode 100644 index 0000000..e0ed676 --- /dev/null +++ b/doc/latex/refman.tex @@ -0,0 +1,189 @@ +\documentclass[twoside]{book} + +% Packages required by doxygen +\usepackage{fixltx2e} +\usepackage{calc} +\usepackage{doxygen} +\usepackage[export]{adjustbox} % also loads graphicx +\usepackage{graphicx} +\usepackage[utf8]{inputenc} +\usepackage{makeidx} +\usepackage{multicol} +\usepackage{multirow} +\PassOptionsToPackage{warn}{textcomp} +\usepackage{textcomp} +\usepackage[nointegrals]{wasysym} +\usepackage[table]{xcolor} + +% Font selection +\usepackage[T1]{fontenc} +\usepackage[scaled=.90]{helvet} +\usepackage{courier} +\usepackage{amssymb} +\usepackage{sectsty} +\renewcommand{\familydefault}{\sfdefault} +\allsectionsfont{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\renewcommand{\DoxyLabelFont}{% + \fontseries{bc}\selectfont% + \color{darkgray}% +} +\newcommand{\+}{\discretionary{\mbox{\scriptsize$\hookleftarrow$}}{}{}} + +% Page & text layout +\usepackage{geometry} +\geometry{% + a4paper,% + top=2.5cm,% + bottom=2.5cm,% + left=2.5cm,% + right=2.5cm% +} +\tolerance=750 +\hfuzz=15pt +\hbadness=750 +\setlength{\emergencystretch}{15pt} +\setlength{\parindent}{0cm} +\setlength{\parskip}{3ex plus 2ex minus 2ex} +\makeatletter +\renewcommand{\paragraph}{% + \@startsection{paragraph}{4}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@parafont% + }% +} +\renewcommand{\subparagraph}{% + \@startsection{subparagraph}{5}{0ex}{-1.0ex}{1.0ex}{% + \normalfont\normalsize\bfseries\SS@subparafont% + }% +} +\makeatother + +% Headers & footers +\usepackage{fancyhdr} +\pagestyle{fancyplain} +\fancyhead[LE]{\fancyplain{}{\bfseries\thepage}} +\fancyhead[CE]{\fancyplain{}{}} +\fancyhead[RE]{\fancyplain{}{\bfseries\leftmark}} +\fancyhead[LO]{\fancyplain{}{\bfseries\rightmark}} +\fancyhead[CO]{\fancyplain{}{}} +\fancyhead[RO]{\fancyplain{}{\bfseries\thepage}} +\fancyfoot[LE]{\fancyplain{}{}} +\fancyfoot[CE]{\fancyplain{}{}} +\fancyfoot[RE]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} +\fancyfoot[LO]{\fancyplain{}{\bfseries\scriptsize Generated by Doxygen }} +\fancyfoot[CO]{\fancyplain{}{}} +\fancyfoot[RO]{\fancyplain{}{}} +\renewcommand{\footrulewidth}{0.4pt} +\renewcommand{\chaptermark}[1]{% + \markboth{#1}{}% +} +\renewcommand{\sectionmark}[1]{% + \markright{\thesection\ #1}% +} + +% Indices & bibliography +\usepackage{natbib} +\usepackage[titles]{tocloft} +\setcounter{tocdepth}{3} +\setcounter{secnumdepth}{5} +\makeindex + +% Hyperlinks (required, but should be loaded last) +\usepackage{ifpdf} +\ifpdf + \usepackage[pdftex,pagebackref=true]{hyperref} +\else + \usepackage[ps2pdf,pagebackref=true]{hyperref} +\fi +\hypersetup{% + colorlinks=true,% + linkcolor=blue,% + citecolor=blue,% + unicode% +} + +% Custom commands +\newcommand{\clearemptydoublepage}{% + \newpage{\pagestyle{empty}\cleardoublepage}% +} + +\usepackage{caption} +\captionsetup{labelsep=space,justification=centering,font={bf},singlelinecheck=off,skip=4pt,position=top} + +%===== C O N T E N T S ===== + +\begin{document} + +% Titlepage & ToC +\hypersetup{pageanchor=false, + bookmarksnumbered=true, + pdfencoding=unicode + } +\pagenumbering{alph} +\begin{titlepage} +\vspace*{7cm} +\begin{center}% +{\Large M\+C\+D\+C\+\_\+simulator \\[1ex]\large 1.\+42.\+14\+\_\+wf }\\ +\vspace*{1cm} +{\large Generated by Doxygen 1.8.13}\\ +\end{center} +\end{titlepage} +\clearemptydoublepage +\pagenumbering{roman} +\tableofcontents +\clearemptydoublepage +\pagenumbering{arabic} +\hypersetup{pageanchor=true} + +%--- Begin generated contents --- +\chapter{Monte Carlo Diffusion and Collision Simulator} +\label{md_src__r_e_a_d_m_e} +\Hypertarget{md_src__r_e_a_d_m_e} +\input{md_src__r_e_a_d_m_e} +\chapter{Hierarchical Index} +\input{hierarchy} +\chapter{Class Index} +\input{annotated} +\chapter{Class Documentation} +\input{class_collision} +\input{class_collisionsphere} +\input{class_collisionspheren} +\input{class_cylinder} +\input{class_cylinder_collision_sphere} +\input{class_cylinder_gamma_distribution} +\input{class_dynamics_simulation} +\input{class_gradient_waveform} +\input{class_m_c_simulation} +\input{class_obstacle} +\input{class_parallel_m_c_simulation} +\input{class_parameter} +\input{class_parameters} +\input{class_p_g_s_e_sequence} +\input{class_plane} +\input{class_p_l_y_collision_sphere} +\input{class_p_l_y_obstacle} +\input{class_propagator} +\input{class_scheme} +\input{classsentinels_1_1_sentinel} +\input{class_sentinels} +\input{class_sim_errno} +\input{class_simulable_sequence} +\input{class_subdivision} +\input{class_trajectory} +\input{class_triangle} +\input{class_vertex} +\input{class_voxel} +\input{class_walker} +%--- End generated contents --- + +% Index +\backmatter +\newpage +\phantomsection +\clearemptydoublepage +\addcontentsline{toc}{chapter}{Index} +\printindex + +\end{document} diff --git a/doc/man/man3/Collision.3 b/doc/man/man3/Collision.3 new file mode 100644 index 0000000..6b909e7 --- /dev/null +++ b/doc/man/man3/Collision.3 @@ -0,0 +1,133 @@ +.TH "Collision" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Collision \- \fBCollision\fP Final class =====================================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "enum \fBcollision_type\fP { \fBhit\fP, \fBnear\fP, \fBnull\fP, \fBboundary\fP, \fBdegenerate\fP }" +.br +.ti -1c +.RI "enum \fBcollision_location\fP { \fBinside\fP, \fBon_edge\fP, \fBon_vertex\fP, \fBvoxel\fP, \fBoutside\fP, \fBunknown\fP }" +.br +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBCollision\fP (double u_, double v_, double t_)" +.br +.ti -1c +.RI "\fB~Collision\fP ()" +.br +.RI "Does nothing\&. " +.ti -1c +.RI "bool \fBdoIHaveMorePiorityThan\fP (\fBCollision\fP &coll)" +.br +.RI "Compares a second collision to determine which one has more priority\&. The comparison is based on the type of collision and distance\&. " +.ti -1c +.RI "void \fBcomputeCollisionLocation\fP ()" +.br +.RI "Computes, based on the the coordinates u,v,t of the collision, the location relative to the triangle\&. " +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBcollision_type\fP \fBtype\fP" +.br +.ti -1c +.RI "\fBcollision_location\fP \fBcol_location\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBcolision_point\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBbounced_direction\fP" +.br +.ti -1c +.RI "double \fBrn\fP" +.br +.ti -1c +.RI "double \fBu\fP" +.br +.ti -1c +.RI "double \fBv\fP" +.br +.ti -1c +.RI "double \fBt\fP" +.br +.ti -1c +.RI "int \fBtriangle_ind\fP" +.br +.ti -1c +.RI "int \fBobstacle_ind\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +\fBCollision\fP Final class =====================================================================/\&. + +Class to save and handle collisions between walkers and objects\&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.SH "November 2016 " +.PP +.RE +.PP +.PP +Class to save and handle collisions between walkers and objects\&. +.PP +This class should handle all the cases where a collision can happened as well as all the operation between collision\&. +.SH "Member Enumeration Documentation" +.PP +.SS "enum \fBCollision::collision_location\fP" + +.PP +Only in case of collision (or a very close ending position) this are the cases where the collision can happened\&. +.SS "enum \fBCollision::collision_type\fP" + +.PP +All the possibles cases or situations where a step can end\&. The next step is performed according to this state +.SH "Member Function Documentation" +.PP +.SS "Collision::computeCollisionLocation ()" + +.PP +Computes, based on the the coordinates u,v,t of the collision, the location relative to the triangle\&. Auxiliar function for Triangular barriers +.SH "Member Data Documentation" +.PP +.SS "Eigen::Vector3d Collision::bounced_direction" +Save the bounced direction for a given obstacle +.SS "\fBcollision_location\fP Collision::col_location" +Save the colocation of the collision over the object +.SS "Eigen::Vector3d Collision::colision_point" +Saves the position of colision +.SS "int Collision::obstacle_ind" +In case of a generic obstacle saves the obstacle index\&. +.SS "double Collision::rn" +saves the local orietnation between the wall and the particle +.SS "double Collision::t" +signed, collision distance +.SS "int Collision::triangle_ind" +In case of a PLY obstacle saves the triangle index\&. t collison distance +.SS "\fBcollision_type\fP Collision::type" +Saves the type of collsion (if any) +.SS "double Collision::u" +u position in baricentric coordinates +.SS "double Collision::v" +v position in baricentric coordinates + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Collisionsphere.3 b/doc/man/man3/Collisionsphere.3 new file mode 100644 index 0000000..df2cec0 --- /dev/null +++ b/doc/man/man3/Collisionsphere.3 @@ -0,0 +1,33 @@ +.TH "Collisionsphere" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Collisionsphere +.SH SYNOPSIS +.br +.PP +.PP +Inherited by \fBCylinderCollisionSphere\fP, and \fBPLYCollisionSphere\fP\&. +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "float \fBbig_sphere_distance\fP" +.br +.ti -1c +.RI "float \fBsmall_sphere_distance\fP" +.br +.ti -1c +.RI "unsigned \fBlist_size\fP" +.br +.in -1c +.SH "Member Data Documentation" +.PP +.SS "float Collisionsphere::big_sphere_distance" +Size of the big (outer) collision sphere +.SS "float Collisionsphere::small_sphere_distance" +Size of the small (inner) collision sphere + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Collisionspheren.3 b/doc/man/man3/Collisionspheren.3 new file mode 100644 index 0000000..35062b5 --- /dev/null +++ b/doc/man/man3/Collisionspheren.3 @@ -0,0 +1,30 @@ +.TH "Collisionspheren" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Collisionspheren \- \fBCollision\fP Final class ============================================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SH "Detailed Description" +.PP +\fBCollision\fP Final class ============================================================================/\&. + +Class to implement spherical bounding boxes for the WALKER mean diffusion\&. This class provides methods in order to create and update spherical bounding boxes used to compute the collisions\&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.SH "February 2017 " +.PP +.RE +.PP +.PP +Father class\&. this class provides methods in order to create and update spherical bounding box used to compute the collisions\&. The implementation is based on two collision spheres\&. The inner one (small) and the (outer)\&. The fist saves the objects where th particle MAY collide in a given time, While the second saves the full set of obstacles where the particle can possibly collide, i\&.e\&. that are physically achievable for the walker to collide\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Cylinder.3 b/doc/man/man3/Cylinder.3 new file mode 100644 index 0000000..16e7da2 --- /dev/null +++ b/doc/man/man3/Cylinder.3 @@ -0,0 +1,167 @@ +.TH "Cylinder" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Cylinder \- \fBCylinder\fP \fBObstacle\fP Derived Class =============================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.PP +Inherits \fBObstacle\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBCylinder\fP ()" +.br +.RI "Default constructor\&. Does nothing\&. " +.ti -1c +.RI "\fBCylinder\fP (Eigen::Vector3d P_, Eigen::Vector3d Q_, double radius_, double scale=1)" +.br +.RI "Initialize everything\&. " +.ti -1c +.RI "\fBCylinder\fP (\fBCylinder\fP const &cyl)" +.br +.RI "Initialize everything\&. " +.ti -1c +.RI "bool \fBcheckCollision\fP (\fBWalker\fP &walker, Eigen::Vector3d &step, double &step_lenght, \fBCollision\fP &colision)" +.br +.RI "Basic collision function\&. Returns the if there was any collision on against the obstacle\&. " +.ti -1c +.RI "double \fBminDistance\fP (\fBWalker\fP &w)" +.br +.RI "Returns the minimum distance from the walker to the cylinder\&. Used to set the reachable cylinders that a given walker can reach\&. " +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "Eigen::Vector3d \fBP\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBQ\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBD\fP" +.br +.ti -1c +.RI "double \fBradius\fP" +.br +.in -1c +.SS "Static Public Attributes" + +.in +1c +.ti -1c +.RI "static int \fBcount\fP = 0" +.br +.in -1c +.SH "Detailed Description" +.PP +\fBCylinder\fP \fBObstacle\fP Derived Class =============================================================/\&. + +\fBCylinder\fP class derived from an \fBObstacle\fP\&. Defines infinite long cylinders in the direction set by P,Q\&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +November 2016 +.SH "1\&.42 " +.PP +.RE +.PP + +.SH "Constructor & Destructor Documentation" +.PP +.SS "Cylinder::Cylinder (Eigen::Vector3d P_, Eigen::Vector3d Q_, double radius_, double scale = \fC1\fP)\fC [inline]\fP" + +.PP +Initialize everything\&. +.PP +\fBParameters:\fP +.RS 4 +\fIP_\fP \fBCylinder\fP origin +.br +\fIQ_\fP cylinder direction\&. +.br +\fIradius_\fP cylinder's radius +.br +\fIscale\fP scale factor for the values passed\&. Useful when reading a file\&. +.RE +.PP + +.SS "Cylinder::Cylinder (\fBCylinder\fP const & cyl)" + +.PP +Initialize everything\&. +.PP +\fBParameters:\fP +.RS 4 +\fIP_\fP \fBCylinder\fP origin +.br +\fIQ_\fP cylinder direction\&. +.br +\fIradius_\fP cylinder's radius +.br +\fIscale\fP scale factor for the values passed\&. Useful when reading a file\&. +.RE +.PP + +.SH "Member Function Documentation" +.PP +.SS "Cylinder::checkCollision (\fBWalker\fP & walker, Eigen::Vector3d & step, double & step_lenght, \fBCollision\fP & colision)" + +.PP +Basic collision function\&. Returns the if there was any collision on against the obstacle\&. +.PP +\fBParameters:\fP +.RS 4 +\fIwalker,\fBWalker\fP\fP instance in the simulation\&. +.br +\fI3d\fP step\&. Is assumed to be normalized\&. +.br +\fIstep_length,length\fP used as the maximum step collision distance\&. +.br +\fIcollision,\fBCollision\fP\fP instance to save the collision (if any) details\&. +.RE +.PP +\fBReturns:\fP +.RS 4 +true only if there was a Collision::hit status\&. +.RE +.PP +\fBSee also:\fP +.RS 4 +\fBCollision\fP\&. +.RE +.PP + +.SS "Cylinder::minDistance (\fBWalker\fP & w)" + +.PP +Returns the minimum distance from the walker to the cylinder\&. Used to set the reachable cylinders that a given walker can reach\&. +.PP +\fBParameters:\fP +.RS 4 +\fIwalker,\fBWalker\fP\fP instance in the simulation\&. +.RE +.PP + +.SH "Member Data Documentation" +.PP +.SS "Eigen::Vector3d Cylinder::D" +Pre-computed and normalized P - Q vector +.SS "Eigen::Vector3d Cylinder::Q" +Cilinder Axis reference Points, P should be the 'center' +.SS "double Cylinder::radius" +Radius of the cylinder + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/CylinderCollisionSphere.3 b/doc/man/man3/CylinderCollisionSphere.3 new file mode 100644 index 0000000..b40de91 --- /dev/null +++ b/doc/man/man3/CylinderCollisionSphere.3 @@ -0,0 +1,106 @@ +.TH "CylinderCollisionSphere" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +CylinderCollisionSphere \- Class to save the cylinderical obstacles that a can collide to a walker\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.PP +Inherits \fBCollisionsphere\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBCylinderCollisionSphere\fP ()" +.br +.ti -1c +.RI "void \fBpopFromSmallSphere\fP (unsigned i)" +.br +.RI "This function receives a index from the collision list and moves the value to the last position of the list\&. then decrease the inner sphere end index\&. This way this index is no longer considered inner collision list\&. " +.ti -1c +.RI "void \fBpushToSmallSphere\fP (unsigned i)" +.br +.RI "This function receives a index from the collision list and moves the value to the last position of the list\&. then increase the inner sphere end index\&. This way this index is now included in the inner collision list\&. " +.ti -1c +.RI "void \fBpopFromBigSphere\fP (unsigned i)" +.br +.RI "This function receives a index from the collision list and moves the value to the last position of the list\&. Then decrease the inner sphere end index\&. This way this index is now excluded in the outer collision list\&. " +.ti -1c +.RI "void \fBpushToBigSphere\fP (unsigned i)" +.br +.RI "This function receives a index from the collision list and moves the value to the last position of the list\&. Then increase the inner sphere end index\&. This way this index is now included in the outer collision list\&. " +.ti -1c +.RI "void \fBsetBigSphereSize\fP (float size)" +.br +.ti -1c +.RI "void \fBsetSmallSphereSize\fP (float size)" +.br +.ti -1c +.RI "void \fBpush_index\fP (unsigned int element)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "unsigned \fBsmall_sphere_list_end\fP" +.br +.ti -1c +.RI "unsigned \fBbig_sphere_list_end\fP" +.br +.ti -1c +.RI "std::vector< unsigned > * \fBcollision_list\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Class to save the cylinderical obstacles that a can collide to a walker\&. + +Class to save the PLY mehses and the subset of triangles that a can collide to a walker\&. +.SH "Constructor & Destructor Documentation" +.PP +.SS "CylinderCollisionSphere::CylinderCollisionSphere ()" +\fP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBCylinderGammaDistribution\fP (unsigned, double, double, double, Eigen::Vector3d &, Eigen::Vector3d &, float \fBmin_radius\fP)" +.br +.RI "Initialize everything\&. " +.ti -1c +.RI "void \fBdisplayGammaDistribution\fP ()" +.br +.RI "Shows a small histogram of the gamma distribution\&. " +.ti -1c +.RI "void \fBcreateGammaSubstrate\fP ()" +.br +.RI "Samples and constructs a Gamma distribution\&. " +.ti -1c +.RI "void \fBprintSubstrate\fP (std::ostream &out)" +.br +.RI "Prints the cylinders positions in a file or output stream\&. " +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "unsigned \fBnum_cylinders\fP" +.br +.ti -1c +.RI "double \fBalpha\fP" +.br +.ti -1c +.RI "double \fBbeta\fP" +.br +.ti -1c +.RI "double \fBicvf\fP" +.br +.ti -1c +.RI "float \fBmin_radius\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBmin_limits\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBmax_limits\fP" +.br +.ti -1c +.RI "std::vector< \fBCylinder\fP > \fBcylinders\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +\fBCylinderGammaDistribution\fP Class =============================================================/\&. + +Class to construct a substrate taken from a Gamma distribution of radiis placed in a single voxel structure\&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +february 2017 +.SH "0\&.2 " +.PP +.RE +.PP + +.SH "Constructor & Destructor Documentation" +.PP +.SS "CylinderGammaDistribution::CylinderGammaDistribution (unsigned num_cyl, double a, double b, double icvf_, Eigen::Vector3d & min_l, Eigen::Vector3d & max_l, float min_radius = \fC0\&.01\fP)" + +.PP +Initialize everything\&. +.PP +\fBParameters:\fP +.RS 4 +\fIP_\fP \fBCylinder\fP origin +.br +\fIQ_\fP cylinder direction\&. +.br +\fIradius_\fP cylinder's radius +.br +\fIscale\fP scale factor for the values passed\&. Useful when reading a file\&. +.RE +.PP + +.SH "Member Function Documentation" +.PP +.SS "void CylinderGammaDistribution::printSubstrate (std::ostream & out)" + +.PP +Prints the cylinders positions in a file or output stream\&. +.PP +\fBParameters:\fP +.RS 4 +\fIout\fP ostream where to write the info\&. +.RE +.PP + +.SH "Member Data Documentation" +.PP +.SS "double CylinderGammaDistribution::alpha" +alpha coefficient of the Gamma distribution +.SS "double CylinderGammaDistribution::beta" +beta coefficient of the gamma distribution +.SS "std::vector<\fBCylinder\fP> CylinderGammaDistribution::cylinders" +\fBCylinder\fP vector +.SS "double CylinderGammaDistribution::icvf" +Achieved intra-celular volum fraction in the substrate +.SS "Eigen::Vector3d CylinderGammaDistribution::max_limits" +voxel max limits (if any) +.SS "Eigen::Vector3d CylinderGammaDistribution::min_limits" +voxel min limits (if any) (bottom left corner) +.SS "float CylinderGammaDistribution::min_radius" +Minimum radius to be sampled from the gamma distribution +.SS "unsigned CylinderGammaDistribution::num_cylinders" +number of cylnders fit inside the substrate + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/DynamicsSimulation.3 b/doc/man/man3/DynamicsSimulation.3 new file mode 100644 index 0000000..7215838 --- /dev/null +++ b/doc/man/man3/DynamicsSimulation.3 @@ -0,0 +1,321 @@ +.TH "DynamicsSimulation" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +DynamicsSimulation \- Dynamic simulation main class =============================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBDynamicsSimulation\fP ()" +.br +.RI "Default constructor\&. Initialize everything with 0's and NULL states, object indexes are set to -1\&. " +.ti -1c +.RI "\fBDynamicsSimulation\fP (std::string conf_file)" +.br +.ti -1c +.RI "\fBDynamicsSimulation\fP (\fBParameters\fP ¶ms_)" +.br +.ti -1c +.RI "\fB~DynamicsSimulation\fP ()" +.br +.RI "Does nothing\&. " +.ti -1c +.RI "void \fBstartSimulation\fP (\fBSimulableSequence\fP *dataSynth=nullptr)" +.br +.RI "Starts the dynamics simulation and, if a PGSE sequence is given, computes the DW signal\&. " +.ti -1c +.RI "void \fBreadConfigurationFile\fP (std::string conf_file_path)" +.br +.RI "Reads all the parameters listed in the param conf_file and stores them in the /t params object\&. " +.ti -1c +.RI "void \fBsetDuration\fP (const double &duration)" +.br +.RI "Sets the simulation duration in milliseconds, this should be synchronized w/r the Time Echo\&. " +.ti -1c +.RI "void \fBsetWalkersNum\fP (const unsigned &N)" +.br +.ti -1c +.RI "void \fBsetStepsNum\fP (const unsigned &T)" +.br +.ti -1c +.RI "bool \fBisInIntra\fP (Eigen::Vector3d &position, int &cyl_id, int &ply_id, double distance_to_be_intra_ply=1e\-6)" +.br +.RI "return true if the position is inside any of the obstacles\&. Only obstacles with a defined 'inside region' can be considered\&. \fBVoxel\fP periodicity is not considered " +.ti -1c +.RI "void \fBwritePropagator\fP (std::string path)" +.br +.RI "Writes to disk the final propagator matrix\&. " +.ti -1c +.RI "bool \fBisInsideCylinders\fP (Eigen::Vector3d &position, int &cyl_id, double distance_to_be_inside=1e\-6)" +.br +.ti -1c +.RI "bool \fBisInsidePLY\fP (Eigen::Vector3d &position, int &ply_id, double distance_to_be_inside=1e\-6)" +.br +.in -1c +.SS "Static Public Member Functions" + +.in +1c +.ti -1c +.RI "static std::string \fBsecondsToMinutes\fP (double)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBParameters\fP \fBparams\fP" +.br +.ti -1c +.RI "\fBWalker\fP \fBwalker\fP" +.br +.ti -1c +.RI "\fBTrajectory\fP \fBtrajectory\fP" +.br +.ti -1c +.RI "std::mt19937 \fBmt\fP" +.br +.ti -1c +.RI "double \fBstep_lenght\fP" +.br +.ti -1c +.RI "double \fBsecond_passed\fP" +.br +.ti -1c +.RI "double \fBmax_simulation_time\fP" +.br +.ti -1c +.RI "double \fBcompleted\fP" +.br +.ti -1c +.RI "std::string \fBini_pos_file\fP" +.br +.ti -1c +.RI "unsigned \fBini_pos_file_ini_index\fP" +.br +.ti -1c +.RI "int \fBid\fP" +.br +.ti -1c +.RI "\fBsentinels::Sentinel\fP \fBsentinela\fP" +.br +.ti -1c +.RI "std::vector< \fBPLYObstacle\fP > * \fBplyObstacles_list\fP" +.br +.ti -1c +.RI "std::vector< \fBCylinder\fP > * \fBcylinders_list\fP" +.br +.ti -1c +.RI "std::vector< unsigned > \fBcylinders_deque\fP" +.br +.ti -1c +.RI "std::vector< std::vector< unsigned > > \fBply_deque\fP" +.br +.ti -1c +.RI "std::vector< \fBVoxel\fP > \fBvoxels_list\fP" +.br +.ti -1c +.RI "\fBPropagator\fP \fBpropagator\fP" +.br +.ti -1c +.RI "double \fBicvf\fP" +.br +.ti -1c +.RI "unsigned \fBintra_tries\fP" +.br +.ti -1c +.RI "unsigned \fBtotal_tries\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBstep\fP" +.br +.ti -1c +.RI "double \fBtime_step\fP" +.br +.ti -1c +.RI "double \fBtime_dt\fP" +.br +.ti -1c +.RI "double \fBlast_time_dt\fP" +.br +.ti -1c +.RI "std::ifstream \fBiniPos\fP" +.br +.ti -1c +.RI "time_t \fBstart\fP" +.br +.ti -1c +.RI "time_t \fBnow\fP" +.br +.ti -1c +.RI "bool \fBprint_expected_time\fP" +.br +.ti -1c +.RI "unsigned \fBnum_simulated_walkers\fP" +.br +.ti -1c +.RI "unsigned \fBaux_walker_index\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Dynamic simulation main class =============================================================/\&. + +Main implementation of the particles dynamics\&. Handles collisions and bouncing +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +November 2016 +.SH "1\&.42 " +.PP +.RE +.PP +.PP +Main class, implements the particles dynamics\&. Handles collisions and bouncing\&. +.SH "Constructor & Destructor Documentation" +.PP +.SS "DynamicsSimulation::DynamicsSimulation ()" + +.PP +Default constructor\&. Initialize everything with 0's and NULL states, object indexes are set to -1\&. \fBDynamicsSimulation\fP implementation +.SS "DynamicsSimulation::DynamicsSimulation (std::string conf_file)" + +.PP +\fBParameters:\fP +.RS 4 +\fIconfiguration\fP file +.RE +.PP + +.SS "DynamicsSimulation::DynamicsSimulation (\fBParameters\fP & params_)" + +.PP +\fBParameters:\fP +.RS 4 +\fI\fBParameter\fP\fP instance +.RE +.PP + +.SH "Member Function Documentation" +.PP +.SS "DynamicsSimulation::isInIntra (Eigen::Vector3d & position, int & cyl_id, int & ply_id, double distance_to_be_intra_ply = \fC1e\-6\fP)" + +.PP +return true if the position is inside any of the obstacles\&. Only obstacles with a defined 'inside region' can be considered\&. \fBVoxel\fP periodicity is not considered +.PP +\fBParameters:\fP +.RS 4 +\fIposition\fP 3d position on space\&. +.br +\fIerror\fP minimum distance to be considered 'outside' de obstacle (barrier thickness) +.RE +.PP + +.SS "DynamicsSimulation::readConfigurationFile (std::string conf_file_path)" + +.PP +Reads all the parameters listed in the param conf_file and stores them in the /t params object\&. +.PP +\fBParameters:\fP +.RS 4 +\fIconf_file_path\fP +.RE +.PP +\fBReturns:\fP +.RS 4 +void +.RE +.PP +\fBParameters:\fP +.RS 4 +\fIconf_file_path\fP paremeters file path\&. +.RE +.PP + +.SS "DynamicsSimulation::setDuration (const double & duration)" + +.PP +Sets the simulation duration in milliseconds, this should be synchronized w/r the Time Echo\&. +.PP +\fBParameters:\fP +.RS 4 +\fIduration\fP simulation duration\&. +.RE +.PP + +.SS "DynamicsSimulation::startSimulation (\fBSimulableSequence\fP * dataSynth = \fCnullptr\fP)" + +.PP +Starts the dynamics simulation and, if a PGSE sequence is given, computes the DW signal\&. +.PP +\fBParameters:\fP +.RS 4 +\fIdataSynth\fP optional paramter\&. If this parameter is not given, no signal is computed\&. +.RE +.PP + +.SH "Member Data Documentation" +.PP +.SS "double DynamicsSimulation::completed" +Auxiliar variable to save the milestone of percentage of completed walkers +.SS "std::vector DynamicsSimulation::cylinders_deque" +deque with the indexes of the cylinders (used for optmization) +.SS "std::vector<\fBCylinder\fP>* DynamicsSimulation::cylinders_list" +vector with all the isntances of 'Cylider' obstacles +.SS "double DynamicsSimulation::icvf" +Stores the ICVF (1 - Intra-Extra) if needed +.SS "int DynamicsSimulation::id" +Unique id for the dynamic simulation +.SS "std::string DynamicsSimulation::ini_pos_file" +walkers intitial position file +.SS "unsigned DynamicsSimulation::ini_pos_file_ini_index" +starting position in the ini walker position file (multicore support) +.SS "double DynamicsSimulation::last_time_dt" +simulation time steps auxiliar values +.SS "double DynamicsSimulation::max_simulation_time" +Maximum simulation time if not passed we carry all the particles +.SS "std::mt19937 DynamicsSimulation::mt" +rnd, random generator instance +.SS "time_t DynamicsSimulation::now" +Auxiliar Variable for time recording and estimation for time\&. +.SS "unsigned DynamicsSimulation::num_simulated_walkers" +Saves the final number of simulated walkers (time limit) +.SS "\fBParameters\fP DynamicsSimulation::params" +\fBParameters\fP handler instance +.SS "std::vector > DynamicsSimulation::ply_deque" +deque with the indexes of the triangles of all ply's (used for opt) +.SS "std::vector<\fBPLYObstacle\fP>* DynamicsSimulation::plyObstacles_list" +pointer to a vector with all the instances of PLYObstacles +.SS "bool DynamicsSimulation::print_expected_time" +Auxiliar flag for time recording and stimation for time\&. +.SS "\fBPropagator\fP DynamicsSimulation::propagator" +\fBPropagator\fP object to compute and save the particles MSD +.SS "double DynamicsSimulation::second_passed" +Simulation total time in seconds +.SS "\fBsentinels::Sentinel\fP DynamicsSimulation::sentinela" +Sentinel initialization to encoutner error in the simulation +.SS "double DynamicsSimulation::step_lenght" +l, step length +.SS "unsigned DynamicsSimulation::total_tries" +Helper variables to compute the estimated ICVF +.SS "\fBTrajectory\fP DynamicsSimulation::trajectory" +\fBTrajectory\fP instance\&. Handles i/o operations +.SS "std::vector<\fBVoxel\fP> DynamicsSimulation::voxels_list" +vector with all the voxels to be simulated (if any) +.SS "\fBWalker\fP DynamicsSimulation::walker" +Single walker to diffuse + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/GradientWaveform.3 b/doc/man/man3/GradientWaveform.3 new file mode 100644 index 0000000..b35e48c --- /dev/null +++ b/doc/man/man3/GradientWaveform.3 @@ -0,0 +1,187 @@ +.TH "GradientWaveform" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +GradientWaveform \- Gradient Wavefroms =============================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.PP +Inherits \fBSimulableSequence\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBGradientWaveform\fP ()" +.br +.RI "Default constructor, set default NULL values\&. Not to be used\&. " +.ti -1c +.RI "\fBGradientWaveform\fP (\fBScheme\fP &scheme)" +.br +.RI "Main constructor\&. Takes a pre-loaded \fBScheme\fP file\&. " +.ti -1c +.RI "\fBGradientWaveform\fP (\fBScheme\fP &scheme_, const char *traj_file_name)" +.br +.RI "Main constructor\&. Takes a pre-loaded \fBScheme\fP file and a traj file name\&. if this argument is passed a traj file is should be written\&. " +.ti -1c +.RI "double \fBgetNumericalbValue\fP (unsigned)" +.br +.ti -1c +.RI "void \fBgetDWISignal\fP ()" +.br +.RI "Computes de DW signal from a trajfile\&. " +.ti -1c +.RI "void \fBreadSchemeFile\fP ()" +.br +.RI "reads the waveform " +.ti -1c +.RI "void \fBgetInterpolatedGradImpulse\fP (uint rep_index, double dt_sim, double t_sim_last, Eigen::Vector3d &Gdt)" +.br +.RI "For using with the adt array\&. " +.ti -1c +.RI "void \fBupdate_phase_shift\fP (double time_step, Eigen::Matrix3Xd \fBtrajectory\fP)" +.br +.ti -1c +.RI "void \fBupdate_phase_shift\fP (double \fBdt\fP, double dt_last, \fBWalker\fP walker)" +.br +.ti -1c +.RI "void \fBupdate_DWI_signal\fP (\fBWalker\fP &walker)" +.br +.RI "Updates the DWI signal using the cumulated phase shift\&. " +.ti -1c +.RI "void \fBsetNumberOfSteps\fP (unsigned \fBT\fP)" +.br +.RI "Set the number of time steps if they are known\&. " +.ti -1c +.RI "void \fBgetGradImpulse\fP (int i, double t, double tLast, Eigen::Vector3d &Gdt)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "double \fBTE\fP" +.br +.ti -1c +.RI "uint \fBT\fP" +.br +.ti -1c +.RI "double \fBdyn_duration\fP" +.br +.ti -1c +.RI "int \fBwave_bins\fP" +.br +.ti -1c +.RI "double \fBwave_duration\fP" +.br +.ti -1c +.RI "double \fBdt\fP" +.br +.ti -1c +.RI "bool \fBscale_from_stu\fP" +.br +.ti -1c +.RI "std::vector< std::vector< float > > \fBwaveform\fP" +.br +.ti -1c +.RI "\fBTrajectory\fP \fBtrajectory\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Gradient Wavefroms =============================================================/\&. + +Implementation of the the General Wavefroms\&. +.PP +Main implementation of the gradient waveforms protocol +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +November 2017 +.SH "1\&.42 " +.PP +.RE +.PP + +.SH "Member Function Documentation" +.PP +.SS "void GradientWaveform::getGradImpulse (int i, double t, double tLast, Eigen::Vector3d & Gdt)\fC [virtual]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIi\fP \fBWalker\fP index +.br +\fIt\fP current time step (in milisenconds) +.br +\fItLast\fP last time step (in milisenconds) +.br +\fIGdt\fP vector to compute de G*dt impulse +.RE +.PP + +.PP +Implements \fBSimulableSequence\fP\&. +.SS "double GradientWaveform::getNumericalbValue (unsigned)" + +.PP +\fBWarning:\fP +.RS 4 +not implemented yet\&. +.RE +.PP + +.SS "void GradientWaveform::update_phase_shift (double time_step, Eigen::Matrix3Xd trajectory)\fC [virtual]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIi\fP updated the phase shift over a whole trajectory +.RE +.PP + +.PP +Implements \fBSimulableSequence\fP\&. +.SS "void GradientWaveform::update_phase_shift (double dt, double dt_last, \fBWalker\fP walker)\fC [virtual]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIi\fP updated walker +.RE +.PP + +.PP +Implements \fBSimulableSequence\fP\&. +.SH "Member Data Documentation" +.PP +.SS "double GradientWaveform::dt" +individual time steps (miliseconds) of the wave +.SS "double GradientWaveform::dyn_duration" +simulation duration (miliseconds) +.SS "bool GradientWaveform::scale_from_stu" +True if the input is in standar units +.SS "uint GradientWaveform::T" +num bins (time steps) +.SS "double GradientWaveform::TE" +Time Echo\&. +.SS "\fBTrajectory\fP GradientWaveform::trajectory" +If the signal is computed from a \&.trajfile +.SS "int GradientWaveform::wave_bins" +Wave discretization +.SS "double GradientWaveform::wave_duration" +Wave duration (should be less qeual than dyn_dur\&.) +.SS "std::vector< std::vector > GradientWaveform::waveform" +Defined waveforms + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/MCSimulation.3 b/doc/man/man3/MCSimulation.3 new file mode 100644 index 0000000..1a01ab3 --- /dev/null +++ b/doc/man/man3/MCSimulation.3 @@ -0,0 +1,157 @@ +.TH "MCSimulation" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +MCSimulation \- Aplication Main Class ======================================================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBMCSimulation\fP ()" +.br +.RI "Default constructor\&. Intialize everything with 0's and NULL states, object indexes are set to -1\&. " +.ti -1c +.RI "\fBMCSimulation\fP (std::string config_file)" +.br +.ti -1c +.RI "\fBMCSimulation\fP (\fBParameters\fP ¶ms_)" +.br +.ti -1c +.RI "\fB~MCSimulation\fP ()" +.br +.RI "Main destructor\&. Frees dynamicly allocated memory instances\&. " +.ti -1c +.RI "void \fBstartSimulation\fP ()" +.br +.RI "Warp function\&. Calls the dynamicEngine's native \fBDynamicsSimulation::startSimulation\fP function\&. " +.ti -1c +.RI "double \fBgetExpectedFreeeDecay\fP (unsigned i)" +.br +.ti -1c +.RI "void \fBiniObstacles\fP ()" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "int \fBid\fP" +.br +.ti -1c +.RI "\fBDynamicsSimulation\fP * \fBdynamicsEngine\fP" +.br +.ti -1c +.RI "\fBScheme\fP \fBscheme\fP" +.br +.ti -1c +.RI "\fBParameters\fP \fBparams\fP" +.br +.ti -1c +.RI "\fBSimulableSequence\fP * \fBdataSynth\fP" +.br +.ti -1c +.RI "std::vector< std::vector< float > > \fBini_walker_positions\fP" +.br +.ti -1c +.RI "std::vector< \fBPLYObstacle\fP > * \fBplyObstacles_list\fP" +.br +.ti -1c +.RI "std::vector< \fBCylinder\fP > * \fBcylinders_list\fP" +.br +.in -1c +.SS "Static Public Attributes" + +.in +1c +.ti -1c +.RI "static int \fBcount\fP =0" +.br +.in -1c +.SH "Detailed Description" +.PP +Aplication Main Class ======================================================================================/\&. + +Main implementation class\&. Incorporates the particle's dynamics and the data synthesis\&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +November 2016 +.SH "1\&.44\&.00 " +.PP +.RE +.PP +.PP +Main implementation class\&. Incorporates the particle's dynamics and the data synthesis\&. +.SH "Constructor & Destructor Documentation" +.PP +.SS "MCSimulation::MCSimulation ()" + +.PP +Default constructor\&. Intialize everything with 0's and NULL states, object indexes are set to -1\&. Secondary constructor\&. +.PP +Main constructor\&. +.PP +\fBParameters:\fP +.RS 4 +\fIconfig_file\fP \&.conf file name with the full set of experiments parameters\&. +.br +\fIparams_\fP preloaded simulation parameters\&. +.RE +.PP + +.SH "Member Function Documentation" +.PP +.SS "void MCSimulation::iniObstacles ()" +Adds all the obstacles defined in the confiuration files\&. +.SS "MCSimulation::startSimulation ()" + +.PP +Warp function\&. Calls the dynamicEngine's native \fBDynamicsSimulation::startSimulation\fP function\&. +.PP +\fBSee also:\fP +.RS 4 +:\fBDynamicsSimulation\fP:\&. +.RE +.PP + +.SH "Member Data Documentation" +.PP +.SS "int MCSimulation::count =0\fC [static]\fP" +count of +.SS "std::vector<\fBCylinder\fP>* MCSimulation::cylinders_list" +pointer to a vector with all the instances of Cylinders +.SS "\fBSimulableSequence\fP* MCSimulation::dataSynth" +Simuleable sequence instance, PGSE and General Wavefroms only +.SS "\fBDynamicsSimulation\fP* MCSimulation::dynamicsEngine" +Instance for the particle dynamics +.SS "int MCSimulation::id" +Unique id of the simulation +.SS "std::vector > MCSimulation::ini_walker_positions" +patch for regular sampling in a subdivision +.SS "\fBParameters\fP MCSimulation::params" +\fBParameters\fP instance1 +.PP +\fBSee also:\fP +.RS 4 +:\fBParameters\fP: +.RE +.PP + +.SS "std::vector<\fBPLYObstacle\fP>* MCSimulation::plyObstacles_list" +pointer to a vector with all the instances of PLYObstacles +.SS "\fBScheme\fP MCSimulation::scheme" +\fBScheme\fP file, only PGSE in camino format is supported in 0\&.2 + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Obstacle.3 b/doc/man/man3/Obstacle.3 new file mode 100644 index 0000000..746c5b3 --- /dev/null +++ b/doc/man/man3/Obstacle.3 @@ -0,0 +1,121 @@ +.TH "Obstacle" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Obstacle \- \fBObstacle\fP Base Class ==============================================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.PP +Inherited by \fBCylinder\fP, and \fBPLYObstacle\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBObstacle\fP ()" +.br +.RI "Default constructor\&. Does nothing\&. " +.ti -1c +.RI "bool \fBcheckCollision\fP (\fBWalker\fP &walker, Eigen::Array3d &step, const double &step_lenght, \fBCollision\fP &colision)" +.br +.RI "Basic collision function\&. Returns the if there was any collision on against the obstacle\&. " +.ti -1c +.RI "void \fBelasticBounceAgainsPlane\fP (Eigen::Vector3d &ray_origin, Eigen::Vector3d &normal, double &t, Eigen::Vector3d &step)" +.br +.ti -1c +.RI "double \fBminDistance\fP (\fBWalker\fP &w)" +.br +.RI "Returns the minimum distance of collision\&. " +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "int \fBid\fP" +.br +.ti -1c +.RI "int \fBcount_perc_crossings\fP" +.br +.ti -1c +.RI "double \fBpercolation\fP" +.br +.ti -1c +.RI "double \fBT2\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +\fBObstacle\fP Base Class ==============================================================================/\&. + +Father class to define the base of any other obstacle (wall or substrate) +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +November 2016 +.SH "1\&.42 " +.PP +.RE +.PP + +.SH "Member Function Documentation" +.PP +.SS "Obstacle::checkCollision (\fBWalker\fP & walker, Eigen::Array3d & step, const double & step_lenght, \fBCollision\fP & colision)" + +.PP +Basic collision function\&. Returns the if there was any collision on against the obstacle\&. +.PP +\fBParameters:\fP +.RS 4 +\fIwalker,\fBWalker\fP\fP instance in the simulation\&. +.br +\fI3d\fP step\&. Is assumed to be normalized\&. +.br +\fIstep_lenght,length\fP used as the maximum step collision distance\&. +.br +\fIcolilsion,\fBCollision\fP\fP instance to save the collision (if any) details\&. +.RE +.PP +\fBReturns:\fP +.RS 4 +true only if there was a Collision::hit status\&. +.RE +.PP +\fBSee also:\fP +.RS 4 +\fBCollision\fP\&. +.RE +.PP + +.SS "double Obstacle::minDistance (\fBWalker\fP & w)" + +.PP +Returns the minimum distance of collision\&. +.PP +\fBParameters:\fP +.RS 4 +\fIwalker\fP to find the (closest) distance\&. +.RE +.PP + +.SH "Member Data Documentation" +.PP +.SS "int Obstacle::count_perc_crossings" +Auxiliar value to count the number of percolatin crossings in a simulation +.SS "int Obstacle::id" +Unique id of the simulation +.SS "double Obstacle::percolation" +Percolation value between 0 and 1\&. +.SS "double Obstacle::T2" +T2 decay, not used by default + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/PGSESequence.3 b/doc/man/man3/PGSESequence.3 new file mode 100644 index 0000000..a7424dd --- /dev/null +++ b/doc/man/man3/PGSESequence.3 @@ -0,0 +1,149 @@ +.TH "PGSESequence" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +PGSESequence +.SH SYNOPSIS +.br +.PP +.PP +Inherits \fBSimulableSequence\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBPGSESequence\fP ()" +.br +.RI "Default constructor, set default NULL values\&. Not to be used\&. " +.ti -1c +.RI "\fBPGSESequence\fP (\fBScheme\fP scheme_)" +.br +.RI "Main constructor\&. Takes a pre-loaded \fBScheme\fP file\&. " +.ti -1c +.RI "\fBPGSESequence\fP (\fBScheme\fP scheme_, const char *traj_file_name)" +.br +.RI "Main constructor\&. Takes a pre-loaded \fBScheme\fP file and a traj file name\&. if this argument is passed a traj file is should be written\&. " +.ti -1c +.RI "\fBPGSESequence\fP (const char *scheme_file_name)" +.br +.RI "Constructor\&. Takes a the scheme file name to be loaded\&. " +.ti -1c +.RI "\fBPGSESequence\fP (const char *scheme_file_name, const char *traj_file_name)" +.br +.RI "Constructor\&. Takes a scheme file name to be loaded and atraj file name\&. if this argument is passed a traj file is should be written\&. " +.ti -1c +.RI "\fB~PGSESequence\fP ()" +.br +.RI "Destuctor\&. Does nothing\&. " +.ti -1c +.RI "void \fBgetGradImpulse\fP (int i, double t, double tLast, Eigen::Vector3d &Gdt)" +.br +.RI "For using w/o the adt array\&. " +.ti -1c +.RI "void \fBgetGradImpuse\fP (int i, double t, Eigen::Vector3d Gdt)" +.br +.RI "For using with the adt array\&. " +.ti -1c +.RI "double \fBgetbValue\fP (unsigned)" +.br +.RI "Analytical defined b-value\&. " +.ti -1c +.RI "double \fBgetFreeDecay\fP (unsigned i, double D)" +.br +.RI "Expected free Decay\&. " +.ti -1c +.RI "double \fBgetNumericalbValue\fP (unsigned)" +.br +.ti -1c +.RI "void \fBgetDWISignal\fP ()" +.br +.RI "Computes de DW signal from a trajfile\&. " +.ti -1c +.RI "void \fBreadSchemeFile\fP ()" +.br +.RI "reads the scheme files " +.ti -1c +.RI "virtual void \fBupdate_phase_shift\fP (double dt, double dt_last, \fBWalker\fP walker)" +.br +.ti -1c +.RI "virtual void \fBupdate_phase_shift\fP (double time_step, Eigen::Matrix3Xd \fBtrajectory\fP)" +.br +.RI "Updates the phase shift using the full stored trajectory\&. " +.ti -1c +.RI "virtual void \fBupdate_DWI_signal\fP (\fBWalker\fP &walker)" +.br +.RI "Updates the DWI signal using the cumulated phase shift\&. " +.ti -1c +.RI "double \fBget_adt\fP (int grad_index, double t, double tLast)" +.br +.RI "computes de signal value and sign in a certain time step\&. " +.ti -1c +.RI "double \fBprint_adt_and_dt\fP (int grad_index, double t, double tLast)" +.br +.RI "prints the array adt in the format ()\&. " +.ti -1c +.RI "virtual void \fBsetNumberOfSteps\fP (unsigned \fBT\fP)" +.br +.RI "Set the number of time steps if they are known\&. " +.ti -1c +.RI "virtual void \fBcomputeDynamicTimeSteps\fP ()" +.br +.RI "Compute the time for all the steps when they are not constant\&. " +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "double \fBTE\fP" +.br +.ti -1c +.RI "int \fBT\fP" +.br +.ti -1c +.RI "double \fBdyn_duration\fP" +.br +.ti -1c +.RI "std::vector< std::vector< double > > \fBscheme\fP" +.br +.ti -1c +.RI "\fBTrajectory\fP \fBtrajectory\fP" +.br +.in -1c +.SH "Member Function Documentation" +.PP +.SS "double PGSESequence::getNumericalbValue (unsigned i)" + +.PP +\fBWarning:\fP +.RS 4 +not implemented yet\&. +.RE +.PP + +.SS "void PGSESequence::update_phase_shift (double dt, double dt_last, \fBWalker\fP walker)\fC [virtual]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIi\fP updated walker +.RE +.PP + +.PP +Implements \fBSimulableSequence\fP\&. +.SH "Member Data Documentation" +.PP +.SS "double PGSESequence::dyn_duration" +simulation duration (miliseconds) +.SS "std::vector< std::vector > PGSESequence::scheme" +\fBScheme\fP file values +.SS "int PGSESequence::T" +num bins (time steps) +.SS "double PGSESequence::TE" +Time Echo\&. +.SS "\fBTrajectory\fP PGSESequence::trajectory" +If the signal is computed from a \&.trajfile + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/PLYCollisionSphere.3 b/doc/man/man3/PLYCollisionSphere.3 new file mode 100644 index 0000000..e46d4a5 --- /dev/null +++ b/doc/man/man3/PLYCollisionSphere.3 @@ -0,0 +1,101 @@ +.TH "PLYCollisionSphere" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +PLYCollisionSphere +.SH SYNOPSIS +.br +.PP +.PP +Inherits \fBCollisionsphere\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBpopFromSmallSphere\fP (unsigned i, unsigned t)" +.br +.RI "This function receives a index from the collision list and moves the value to the last position of the list\&. then decrease the inner sphere end index\&. This way this index is no longer considered inner collision list\&. " +.ti -1c +.RI "void \fBpushToSmallSphere\fP (unsigned i, unsigned t)" +.br +.RI "This function receives a index from the collision list and moves the value to the last position of the list\&. then increse the inner sphere end index\&. This way this index is now included in the inner collision list\&. " +.ti -1c +.RI "void \fBpopFromBigSphere\fP (unsigned i, unsigned t)" +.br +.RI "This function receives a index from the collision list and moves the value to the last position of the list\&. Then decrease the inner sphere end index\&. This way this index is now excluded in the outer collision list\&. " +.ti -1c +.RI "void \fBpushToBigSphere\fP (unsigned i, unsigned t)" +.br +.RI "This function receives a index from the collision list and moves the value to the last position of the list\&. Then increase the inner sphere end index\&. This way this index is now included in the outer collision list\&. " +.ti -1c +.RI "void \fBsetBigSphereSize\fP (float size)" +.br +.ti -1c +.RI "void \fBsetSmallSphereSize\fP (float size)" +.br +.ti -1c +.RI "void \fBpush_ply\fP (std::vector< unsigned > list)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "std::vector< unsigned > \fBsmall_sphere_list_end\fP" +.br +.ti -1c +.RI "std::vector< unsigned > \fBbig_sphere_list_end\fP" +.br +.ti -1c +.RI "std::vector< std::vector< unsigned > > * \fBcollision_list\fP" +.br +.in -1c +.SH "Member Function Documentation" +.PP +.SS "void PLYCollisionSphere::popFromSmallSphere (unsigned i, unsigned t)" + +.PP +This function receives a index from the collision list and moves the value to the last position of the list\&. then decrease the inner sphere end index\&. This way this index is no longer considered inner collision list\&. Removes one index from the list by moving it to the end of the list and decreading the index\&. +.SS "void PLYCollisionSphere::push_ply (std::vector< unsigned > list)" + +.PP +\fBParameters:\fP +.RS 4 +\fIelement\fP value to be added to the obstacle list +.RE +.PP + +.SS "void PLYCollisionSphere::pushToSmallSphere (unsigned i, unsigned t)" + +.PP +This function receives a index from the collision list and moves the value to the last position of the list\&. then increse the inner sphere end index\&. This way this index is now included in the inner collision list\&. Adds one element to the list by moving it in front of the current index and increasing the index\&. +.SS "void PLYCollisionSphere::setBigSphereSize (float size)" + +.PP +\fBParameters:\fP +.RS 4 +\fIsize\fP of the list +.RE +.PP + +.SS "void PLYCollisionSphere::setSmallSphereSize (float size)" + +.PP +\fBParameters:\fP +.RS 4 +\fIsize\fP of the list +.RE +.PP + +.SH "Member Data Documentation" +.PP +.SS "std::vector PLYCollisionSphere::big_sphere_list_end" +Index vecotr of the LAST element on the list for the big collision sphere +.SS "std::vector >* PLYCollisionSphere::collision_list" +Pointer to the list with the triangle indexes for each PLY\&. The indexes are permuted in its position\&. +.SS "std::vector PLYCollisionSphere::small_sphere_list_end" +Index vector of the LAST element on the list for the small collision sphere + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/PLYObstacle.3 b/doc/man/man3/PLYObstacle.3 new file mode 100644 index 0000000..4c40d1f --- /dev/null +++ b/doc/man/man3/PLYObstacle.3 @@ -0,0 +1,93 @@ +.TH "PLYObstacle" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +PLYObstacle \- PlyObstacle Derived Class ====================================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.PP +Inherits \fBObstacle\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBPLYObstacle\fP (std::string path, double scale_factor_=1)" +.br +.ti -1c +.RI "\fBPLYObstacle\fP (std::string path, std::vector< Eigen::Vector3d > ¢ers, double max_distance=INFINITY, double scale_factor_=1)" +.br +.ti -1c +.RI "void \fBreadPLY_ASCII_triangleFan\fP (std::string ply_file)" +.br +.ti -1c +.RI "void \fBreadPLY_ASCII_triangles\fP (std::string ply_file)" +.br +.ti -1c +.RI "void \fBreadPLY_ASCII_trianglesSubdivitionDistance\fP (std::string ply_file, std::vector< Eigen::Vector3d > ¢ers, double max_distance)" +.br +.ti -1c +.RI "void \fBsetScaleFactor\fP (double scale)" +.br +.ti -1c +.RI "bool \fBcheckCollision\fP (\fBWalker\fP &walker, Eigen::Vector3d &step, double &step_lenght, \fBCollision\fP &colision)" +.br +.ti -1c +.RI "bool \fBcheckCollision\fP (\fBWalker\fP &walker, Eigen::Vector3d &step, double &step_lenght, \fBCollision\fP &colision, std::vector< unsigned > &triangle_list, unsigned list_end)" +.br +.ti -1c +.RI "double \fBminDistance\fP (\fBWalker\fP &w, unsigned t)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "unsigned \fBvert_number\fP" +.br +.ti -1c +.RI "unsigned \fBface_number\fP" +.br +.ti -1c +.RI "std::string \fBfile_path\fP" +.br +.ti -1c +.RI "\fBVertex\fP * \fBvertices\fP" +.br +.ti -1c +.RI "\fBTriangle\fP * \fBfaces\fP" +.br +.ti -1c +.RI "double \fBscale_factor\fP" +.br +.ti -1c +.RI "int \fBid\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +PlyObstacle Derived Class ====================================================================/\&. + +\fBPLYObstacle\fP derived class\&. Implements obstacles loaded from pre-defined PY meshes\&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +November 2016 +.SH "0\&.2 " +.PP +.RE +.PP +.PP +Implements obstacles loaded from pre-constructed PLY meshes\&. The PLY format should be without any other experiment\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/ParallelMCSimulation.3 b/doc/man/man3/ParallelMCSimulation.3 new file mode 100644 index 0000000..3cfc76b --- /dev/null +++ b/doc/man/man3/ParallelMCSimulation.3 @@ -0,0 +1,164 @@ +.TH "ParallelMCSimulation" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +ParallelMCSimulation \- Class to handle multiprocessor paralellisation\&. This class basicly controls and syncronize several initializations of MonteCarlo simulations and add up the results\&. It's a way of soft paralelization\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBParallelMCSimulation\fP (std::string config_file)" +.br +.RI "Main constructor\&. " +.ti -1c +.RI "\fBParallelMCSimulation\fP (\fBParameters\fP &\fBparams\fP)" +.br +.RI "Constructor\&. " +.ti -1c +.RI "void \fBstartSimulation\fP ()" +.br +.RI "Warp function\&. Calls the \fBMCSimulation\fP's native function for all the instances\&. " +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBParameters\fP \fBparams\fP" +.br +.ti -1c +.RI "double \fBmean_second_passed\fP" +.br +.ti -1c +.RI "unsigned \fBtotal_sim_particles\fP" +.br +.ti -1c +.RI "unsigned \fBstuck_count\fP" +.br +.ti -1c +.RI "unsigned \fBillegal_count\fP" +.br +.ti -1c +.RI "double \fBicvf\fP" +.br +.ti -1c +.RI "double \fBaprox_volumen\fP" +.br +.ti -1c +.RI "std::vector< \fBMCSimulation\fP * > \fBsimulations\fP" +.br +.ti -1c +.RI "std::vector< std::thread > \fBsim_threads\fP" +.br +.ti -1c +.RI "std::vector< \fBPLYObstacle\fP > \fBplyObstacles_list\fP" +.br +.ti -1c +.RI "std::vector< \fBCylinder\fP > \fBcylinders_list\fP" +.br +.ti -1c +.RI "std::vector< Eigen::Vector3f > \fBtotal_ini_walker_pos\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Class to handle multiprocessor paralellisation\&. This class basicly controls and syncronize several initializations of MonteCarlo simulations and add up the results\&. It's a way of soft paralelization\&. + +Implementation of the PGSE protocol\&. +.PP +==============================================================================/ +.PP +Class to handle multiprocessor paralellisation +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +November 2016 +.PP + +.RE +.PP + +.SH "Constructor & Destructor Documentation" +.PP +.SS "ParallelMCSimulation::ParallelMCSimulation (std::string config_file)" + +.PP +Main constructor\&. +.PP +\fBParameters:\fP +.RS 4 +\fIconfig_file\fP \&.conf file name with the full set of experiments parameters\&. +.RE +.PP + +.SS "ParallelMCSimulation::ParallelMCSimulation (\fBParameters\fP & params)" + +.PP +Constructor\&. +.PP +\fBParameters:\fP +.RS 4 +\fIparameters\fP of the simulation\&. Read form a conf file or given by the user\&. +.RE +.PP + +.SH "Member Function Documentation" +.PP +.SS "ParallelMCSimulation::startSimulation ()" + +.PP +Warp function\&. Calls the \fBMCSimulation\fP's native function for all the instances\&. +.PP +\fBSee also:\fP +.RS 4 +:\fBMCSimulation\fP:\&. +.RE +.PP + +.SH "Member Data Documentation" +.PP +.SS "double ParallelMCSimulation::aprox_volumen" +Stores the volumen based on ICVF and the voxel size +.SS "std::vector<\fBCylinder\fP> ParallelMCSimulation::cylinders_list" +vector with all the instances of cylinders +.SS "double ParallelMCSimulation::icvf" +Stores the ICVF based on the particles sampling +.SS "unsigned ParallelMCSimulation::illegal_count" +Counts the number of particles that attempt to cross +.SS "double ParallelMCSimulation::mean_second_passed" +Simualation total time in seconds +.SS "\fBParameters\fP ParallelMCSimulation::params" +\fBParameters\fP instance +.PP +\fBSee also:\fP +.RS 4 +:\fBParameters\fP: +.RE +.PP + +.SS "std::vector<\fBPLYObstacle\fP> ParallelMCSimulation::plyObstacles_list" +vector with all the instances of PLYObstacles +.SS "std::vector ParallelMCSimulation::sim_threads" +Number of threads (instances and processors) to be used +.SS "std::vector<\fBMCSimulation\fP*> ParallelMCSimulation::simulations" +vector of pointers to \fBMCSimulation\fP instances +.SS "unsigned ParallelMCSimulation::stuck_count" +Counts the number of particles stuck in the simulations +.SS "std::vector ParallelMCSimulation::total_ini_walker_pos" +Number of threads (instances and processors) to be used +.SS "unsigned ParallelMCSimulation::total_sim_particles" +Total number of simulated particles + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Parameter.3 b/doc/man/man3/Parameter.3 new file mode 100644 index 0000000..f7af6b4 --- /dev/null +++ b/doc/man/man3/Parameter.3 @@ -0,0 +1,35 @@ +.TH "Parameter" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Parameter \- Basic class to store simulation parameters =============================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SH "Detailed Description" +.PP +Basic class to store simulation parameters =============================================================/\&. + +Basic class to store and handle all the possible simulation parameters\&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +November 2016 +.SH "1\&.43 " +.PP +.RE +.PP +.PP +Class used to hold and operate all the user and simulation parameters\&. This is the main class to comunicate between instances of the simulations and derived classes\&. So, in a way, it's an interface for the comunication between component classes in the simulation\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Parameters.3 b/doc/man/man3/Parameters.3 new file mode 100644 index 0000000..a64a173 --- /dev/null +++ b/doc/man/man3/Parameters.3 @@ -0,0 +1,600 @@ +.TH "Parameters" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Parameters +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBParameters\fP ()" +.br +.RI "Default constructor\&. Sets all the parameters to default and NULL values\&. " +.ti -1c +.RI "void \fBreadSchemeFile\fP (std::string conf_file)" +.br +.RI "Reads all the parameters from a scheme file in the correct format the function scales them if necessary\&. The parameters are passed by listing, first, the parameter name, followed by the value\&. The supported parameters are: number of walkers (N), number of steps (T), duration (duration), PGSE scheme file (scheme_file), min voxles limits (min limits), max voxel limits (max_limits), diffusivity (diffusivity), index name for the trajectory and output values (out_traj_file_index), initial walker position file (ini_walkers_file), write a txt traj flag and header (write_text), write binary traj file and header, write_bin, flag to scale the values from estandar unit (scale_from_stu), random seed (seed)\&. " +.ti -1c +.RI "void \fBsetNumWalkers\fP (unsigned N)" +.br +.ti -1c +.RI "void \fBsetNumSteps\fP (unsigned T)" +.br +.RI "set the number of steps in the simulation\&. " +.ti -1c +.RI "void \fBsetDiffusivity\fP (double Diff)" +.br +.RI "set the simulation diffusivity\&. " +.ti -1c +.RI "void \fBsetSimDuration\fP (double duration)" +.br +.RI "sets the simulation duration\&. " +.ti -1c +.RI "void \fBsetWriteTrajFlag\fP (bool \fBwrite_bin\fP)" +.br +.ti -1c +.RI "void \fBsetWriteTextFlag\fP (bool write_txt_)" +.br +.ti -1c +.RI "void \fBsetMinLimits\fP (Eigen::Vector3d min_limits_)" +.br +.RI "set the bottom left corner of the voxel to be simulated\&. " +.ti -1c +.RI "void \fBsetMaxLimits\fP (Eigen::Vector3d max_limits_)" +.br +.RI "set the bottom left corner of the voxel to be simulated\&. " +.ti -1c +.RI "void \fBsetTrajFileName\fP (std::string traj_file_)" +.br +.RI "Set the prefix of the name for the traj file (txt and \&.traj) " +.ti -1c +.RI "void \fBsetOutputBaseFileName\fP (std::string output_base_name_)" +.br +.RI "Set the prefix of the name for all the outputs in the simulation\&. " +.ti -1c +.RI "void \fBiniWalkersFileName\fP (std::string ini_walkers_file_)" +.br +.ti -1c +.RI "void \fBsetSchemeFileName\fP (std::string scheme_file_)" +.br +.RI "Sets the scheme file name to be used for the data synthesis\&. " +.ti -1c +.RI "unsigned \fBgetNumWalkers\fP ()" +.br +.ti -1c +.RI "unsigned \fBgetNumSteps\fP ()" +.br +.ti -1c +.RI "double \fBgetDiffusivity\fP ()" +.br +.ti -1c +.RI "bool \fBgetWriteTrajFlag\fP ()" +.br +.ti -1c +.RI "bool \fBgetWriteTextFlag\fP ()" +.br +.ti -1c +.RI "Eigen::Vector3d \fBgetMinLimits\fP ()" +.br +.ti -1c +.RI "Eigen::Vector3d \fBgetMaxLimits\fP ()" +.br +.ti -1c +.RI "std::string \fBgetTrajFileName\fP ()" +.br +.ti -1c +.RI "std::string \fBgetOutputBaseFileName\fP ()" +.br +.ti -1c +.RI "std::string \fBgetIniWalkersFileName\fP ()" +.br +.ti -1c +.RI "std::string \fBgetSchemeFileName\fP ()" +.br +.ti -1c +.RI "void \fBaddSubdivisions\fP ()" +.br +.in -1c +.SS "Static Public Member Functions" + +.in +1c +.ti -1c +.RI "static int \fBstr_dist\fP (std::string s, std::string t)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "unsigned \fBnum_walkers\fP" +.br +.ti -1c +.RI "unsigned \fBnum_steps\fP" +.br +.ti -1c +.RI "double \fBdiffusivity\fP" +.br +.ti -1c +.RI "double \fBsim_duration\fP" +.br +.ti -1c +.RI "bool \fBwrite_traj\fP" +.br +.ti -1c +.RI "bool \fBwrite_txt\fP" +.br +.ti -1c +.RI "bool \fBwrite_bin\fP" +.br +.ti -1c +.RI "bool \fBscale_from_stu\fP" +.br +.ti -1c +.RI "bool \fBsave_phase_shift\fP" +.br +.ti -1c +.RI "long \fBseed\fP" +.br +.ti -1c +.RI "bool \fBverbatim\fP" +.br +.ti -1c +.RI "std::string \fBtraj_file\fP" +.br +.ti -1c +.RI "std::string \fBoutput_base_name\fP" +.br +.ti -1c +.RI "std::string \fBini_walkers_file\fP" +.br +.ti -1c +.RI "unsigned \fBini_walkers_file_count\fP" +.br +.ti -1c +.RI "std::string \fBini_walker_flag\fP" +.br +.ti -1c +.RI "std::string \fBscheme_file\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBmin_limits\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBmax_limits\fP" +.br +.ti -1c +.RI "std::vector< std::string > \fBcylinders_files\fP" +.br +.ti -1c +.RI "std::vector< std::string > \fBPLY_files\fP" +.br +.ti -1c +.RI "std::vector< double > \fBPLY_scales\fP" +.br +.ti -1c +.RI "std::vector< double > \fBPLY_percolation\fP" +.br +.ti -1c +.RI "std::vector< float > \fBini_delta_pos\fP" +.br +.ti -1c +.RI "unsigned \fBnum_proc\fP" +.br +.ti -1c +.RI "std::vector< std::pair< Eigen::Vector3d, Eigen::Vector3d > > \fBvoxels_list\fP" +.br +.ti -1c +.RI "std::vector< Eigen::Vector3f > \fBprop_dirs\fP" +.br +.ti -1c +.RI "std::vector< unsigned > \fBrecord_pos_times\fP" +.br +.ti -1c +.RI "std::vector< unsigned > \fBrecord_phase_times\fP" +.br +.ti -1c +.RI "std::vector< unsigned > \fBrecord_prop_times\fP" +.br +.ti -1c +.RI "bool \fBhex_packing\fP" +.br +.ti -1c +.RI "double \fBhex_packing_radius\fP" +.br +.ti -1c +.RI "double \fBhex_packing_separation\fP" +.br +.ti -1c +.RI "bool \fBgamma_packing\fP" +.br +.ti -1c +.RI "bool \fBgamma_output_conf\fP" +.br +.ti -1c +.RI "double \fBgamma_packing_alpha\fP" +.br +.ti -1c +.RI "double \fBgamma_packing_beta\fP" +.br +.ti -1c +.RI "double \fBgamma_icvf\fP" +.br +.ti -1c +.RI "double \fBgamma_output_configuration\fP" +.br +.ti -1c +.RI "unsigned \fBgamma_num_cylinders\fP" +.br +.ti -1c +.RI "float \fBmin_cyl_radii\fP" +.br +.ti -1c +.RI "bool \fBsubdivision_flag\fP = false" +.br +.ti -1c +.RI "unsigned \fBnumber_subdivisions\fP = 0" +.br +.ti -1c +.RI "std::string \fBsubdivisions_file\fP = ''" +.br +.ti -1c +.RI "std::vector< \fBSubdivision\fP > \fBsubdivisions\fP" +.br +.ti -1c +.RI "double \fBobstacle_permeability\fP = 0" +.br +.ti -1c +.RI "double \fBcollision_sphere_distance\fP = 0" +.br +.ti -1c +.RI "double \fBmax_simulation_time\fP = 0" +.br +.ti -1c +.RI "bool \fBlog_phase_shift\fP = false" +.br +.ti -1c +.RI "bool \fBlog_opp\fP = false" +.br +.ti -1c +.RI "bool \fBdiscard_stucks\fP = true" +.br +.ti -1c +.RI "bool \fBdiscard_illegals\fP = true" +.br +.ti -1c +.RI "bool \fBlog_propagator\fP = false" +.br +.ti -1c +.RI "Eigen::Vector3d \fBmin_sampling_area\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBmax_sampling_area\fP" +.br +.ti -1c +.RI "bool \fBcustom_sampling_area\fP" +.br +.ti -1c +.RI "bool \fBcomputeVolume\fP" +.br +.ti -1c +.RI "bool \fBseparate_signals\fP" +.br +.ti -1c +.RI "bool \fBimg_signal\fP" +.br +.in -1c +.SH "Member Function Documentation" +.PP +.SS "Parameters::getDiffusivity ()" + +.PP +\fBReturns:\fP +.RS 4 +Diffusivity +.RE +.PP + +.SS "Parameters::getMaxLimits ()" + +.PP +\fBReturns:\fP +.RS 4 +voxel max limits (right top corner) +.RE +.PP + +.SS "Parameters::getMinLimits ()" + +.PP +\fBReturns:\fP +.RS 4 +voxel min limits (left bottom corner) +.RE +.PP + +.SS "Parameters::getNumSteps ()" + +.PP +\fBReturns:\fP +.RS 4 +Number of Steps +.RE +.PP + +.SS "Parameters::getNumWalkers ()" + +.PP +\fBReturns:\fP +.RS 4 +Number of walkers N +.RE +.PP + +.SS "Parameters::getOutputBaseFileName ()" + +.PP +\fBReturns:\fP +.RS 4 +Output prefix +.RE +.PP + +.SS "Parameters::getSchemeFileName ()" + +.PP +\fBReturns:\fP +.RS 4 +name of the scheme file name used (PGSE) +.RE +.PP + +.SS "Parameters::getTrajFileName ()" + +.PP +\fBReturns:\fP +.RS 4 +trajectory prefix +.RE +.PP + +.SS "Parameters::getWriteTextFlag ()" + +.PP +\fBReturns:\fP +.RS 4 +flag of the text write traj +.RE +.PP + +.SS "Parameters::getWriteTrajFlag ()" + +.PP +\fBReturns:\fP +.RS 4 +flag of the binary traj file writer +.RE +.PP + +.SS "Parameters::iniWalkersFileName (std::string ini_walkers_file_)" + +.PP +\fBReturns:\fP +.RS 4 +initial position walkers file name +.RE +.PP + +.SS "Parameters::readSchemeFile (std::string conf_file)" + +.PP +Reads all the parameters from a scheme file in the correct format the function scales them if necessary\&. The parameters are passed by listing, first, the parameter name, followed by the value\&. The supported parameters are: number of walkers (N), number of steps (T), duration (duration), PGSE scheme file (scheme_file), min voxles limits (min limits), max voxel limits (max_limits), diffusivity (diffusivity), index name for the trajectory and output values (out_traj_file_index), initial walker position file (ini_walkers_file), write a txt traj flag and header (write_text), write binary traj file and header, write_bin, flag to scale the values from estandar unit (scale_from_stu), random seed (seed)\&. +.PP +\fBParameters:\fP +.RS 4 +\fIconf_file\fP +.RE +.PP + +.SS "Parameters::setDiffusivity (double Diff)" + +.PP +set the simulation diffusivity\&. +.PP +\fBParameters:\fP +.RS 4 +\fIDiff\fP diffusivity value\&. +.RE +.PP + +.SS "Parameters::setMaxLimits (Eigen::Vector3d max_limits_)" + +.PP +set the bottom left corner of the voxel to be simulated\&. +.PP +\fBParameters:\fP +.RS 4 +\fImax_limits_\fP vector with the maximum voxel limits (bottom right corner)\&. +.RE +.PP + +.SS "Parameters::setMinLimits (Eigen::Vector3d min_limits_)" + +.PP +set the bottom left corner of the voxel to be simulated\&. +.PP +\fBParameters:\fP +.RS 4 +\fImin_limits_\fP vector with the minimum voxel limits (bottom left corner)\&. +.RE +.PP + +.SS "Parameters::setNumSteps (unsigned T)" + +.PP +set the number of steps in the simulation\&. +.PP +\fBParameters:\fP +.RS 4 +\fIT\fP number of steps +.RE +.PP + +.SS "Parameters::setOutputBaseFileName (std::string output_base_name_)" + +.PP +Set the prefix of the name for all the outputs in the simulation\&. +.PP +\fBParameters:\fP +.RS 4 +\fIoutput_base_name\fP prefix for the outputs +.RE +.PP + +.SS "Parameters::setSchemeFileName (std::string scheme_file_)" + +.PP +Sets the scheme file name to be used for the data synthesis\&. +.PP +\fBParameters:\fP +.RS 4 +\fIscheme_file_\fP scheme (PGSE )file name\&. +.RE +.PP + +.SS "Parameters::setSimDuration (double duration)" + +.PP +sets the simulation duration\&. +.PP +\fBParameters:\fP +.RS 4 +\fIduration\fP simulation duration\&. +.RE +.PP + +.SS "Parameters::setTrajFileName (std::string traj_file_)" + +.PP +Set the prefix of the name for the traj file (txt and \&.traj) +.PP +\fBParameters:\fP +.RS 4 +\fItraj_file_\fP prefix of the traj file\&. +.RE +.PP + +.SH "Member Data Documentation" +.PP +.SS "double Parameters::collision_sphere_distance = 0" +Custiom size for the collision sphere +.SS "bool Parameters::computeVolume" +Forces the volumen computation (slower) even without custom sampling +.SS "bool Parameters::custom_sampling_area" +True if a custom sampling area is defined (voxel for default) +.SS "std::vector Parameters::cylinders_files" +file paths with a list of cilinders obstacles +.SS "double Parameters::diffusivity" +D, diffusivity constant +.SS "bool Parameters::discard_illegals = true" +flag, true to discard possible illegal crossings, Trump by default\&. +.SS "bool Parameters::discard_stucks = true" +flag, true to discard posible stuck particles (max bouncing reached) +.SS "bool Parameters::gamma_packing" +flag, true if a gamma distribution of cylinders will be initialized +.SS "bool Parameters::hex_packing" +flag, true if an haxagonal packing should be used +.SS "double Parameters::hex_packing_radius" +float, constant radius for the cylinders +.SS "double Parameters::hex_packing_separation" +float, separation distance betwen cylinders (separation > 2*radius) +.SS "bool Parameters::img_signal" +True to save the img part of the dwi signal (false by default) +.SS "std::vector Parameters::ini_delta_pos" +Delta position for the walkers +.SS "std::string Parameters::ini_walker_flag" +where to initialize the walkers +.SS "std::string Parameters::ini_walkers_file" +initial walker position file (if any) +.SS "unsigned Parameters::ini_walkers_file_count" +number of walker positions initialize in the configuration file +.SS "bool Parameters::log_opp = false" +flag, true to save one per process output +.SS "bool Parameters::log_phase_shift = false" +flag, true to save the final phase shift distribution +.SS "bool Parameters::log_propagator = false" +flag, true saves the propagator for a given set of directions and times +.SS "Eigen::Vector3d Parameters::max_limits" +voxel max limits (if any) +.SS "Eigen::Vector3d Parameters::max_sampling_area" +Max defining point to delimiter the uniform sampling of walkers +.SS "double Parameters::max_simulation_time = 0" +Maximum simulation time for the DYNAMIC SIMULATION +.SS "float Parameters::min_cyl_radii" +Minimum radii (in um) to be sampled +.SS "Eigen::Vector3d Parameters::min_limits" +voxel min limits (if any) (bottom left corner) +.SS "Eigen::Vector3d Parameters::min_sampling_area" +Min defining point to delimiter the uniform sampling of walkers +.SS "unsigned Parameters::num_proc" +Number of precessors/process to launch in parallel +.SS "unsigned Parameters::num_steps" +T, number of steps +.SS "unsigned Parameters::num_walkers" +N, number of walkers +.SS "unsigned Parameters::number_subdivisions = 0" +saves the number of subdivisions for an initialzied voxel (needed) +.SS "double Parameters::obstacle_permeability = 0" +Obstacles permeability +.SS "std::string Parameters::output_base_name" +output files base name (path + sufix) +.SS "std::vector Parameters::PLY_files" +file paths with PLY obstacle files +.SS "std::vector Parameters::PLY_percolation" +Auxiliary vector to save PLY percolation +.SS "std::vector Parameters::PLY_scales" +Auxiliary vector to save PLY file scales +.SS "std::vector Parameters::prop_dirs" +Saves the directions used to compute the propagator +.SS "std::vector Parameters::record_phase_times" +time indexes, used to save the phase shif of all walkers at certain time +.SS "std::vector Parameters::record_pos_times" +time indexes, used to save the position of all walkers at certain time +.SS "std::vector Parameters::record_prop_times" +time indexes, used to save the mean propagator of the walkers at c\&. times +.SS "bool Parameters::save_phase_shift" +flag, saves the phase shift distribution for all particles +.SS "bool Parameters::scale_from_stu" +flag, true if the scheme file is in standar units m,s +.SS "std::string Parameters::scheme_file" +signal adquisition scheme file (if any) +.SS "long Parameters::seed" +Initial seed for the random generator +.SS "bool Parameters::separate_signals" +Separate the signals into intra and extra (compute_volume on) +.SS "double Parameters::sim_duration" +simulation total time +.SS "bool Parameters::subdivision_flag = false" +flag to check if we have several voxel subdivision to compute the signal +.SS "std::vector<\fBSubdivision\fP> Parameters::subdivisions" +saves actual positions of the subdivision to compute the signal +.SS "std::string Parameters::subdivisions_file = ''" +file with the list of subdivisions coordinates to compute the signal +.SS "std::string Parameters::traj_file" +\fBTrajectory\fP file path +.SS "bool Parameters::verbatim" +False to omit displaying state and warnings +.SS "std::vector > Parameters::voxels_list" +voxel min and max positions list (deprecated) +.SS "bool Parameters::write_bin" +flag, writes the output signal in binary format (True by default) +.SS "bool Parameters::write_traj" +flag, write a traj file or not, binary format only +.SS "bool Parameters::write_txt" +flag, writes DWI output signals in \&.txt if True + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Plane.3 b/doc/man/man3/Plane.3 new file mode 100644 index 0000000..1221fba --- /dev/null +++ b/doc/man/man3/Plane.3 @@ -0,0 +1,63 @@ +.TH "Plane" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Plane \- Main class\&. Implements basic voxel limits and operations\&. =================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBPlane\fP (Eigen::Vector3d normal_, Eigen::Vector3d plane_center_, double d_)" +.br +.ti -1c +.RI "\fBPlane\fP (Eigen::Vector3d &a, Eigen::Vector3d &b, Eigen::Vector3d &c, Eigen::Vector3d &d)" +.br +.ti -1c +.RI "bool \fBCheckCollision\fP (\fBWalker\fP &walker, Eigen::Vector3d &step, double tmax, \fBCollision\fP &colision)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "Eigen::Vector3d \fBnormal\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBplane_center\fP" +.br +.ti -1c +.RI "double \fBd\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Main class\&. Implements basic voxel limits and operations\&. =================================================/\&. + +Class to handle and manage the voxels in the simulations\&. So far only one voxel at the time can be handled\&. To improve to several voxels, modifications shall be done\&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +July 2016 +.RE +.PP +\fBVersion:\fP +.RS 4 +0\&.2 =============================================================================================================+ +.RE +.PP +Auxiliary class to implements plane's interactions with particles\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Propagator.3 b/doc/man/man3/Propagator.3 new file mode 100644 index 0000000..632d687 --- /dev/null +++ b/doc/man/man3/Propagator.3 @@ -0,0 +1,38 @@ +.TH "Propagator" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Propagator +.SH SYNOPSIS +.br +.PP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBinitPropagator\fP ()" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "uint \fBnum_dirs\fP =0" +.br +.ti -1c +.RI "uint \fBnum_times\fP = 0" +.br +.ti -1c +.RI "Eigen::Matrix3Xf \fBdirections\fP" +.br +.ti -1c +.RI "std::vector< unsigned > \fBlog_times\fP" +.br +.ti -1c +.RI "std::vector< std::vector< float > > \fBpropagator_log\fP" +.br +.in -1c + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Scheme.3 b/doc/man/man3/Scheme.3 new file mode 100644 index 0000000..c96eb23 --- /dev/null +++ b/doc/man/man3/Scheme.3 @@ -0,0 +1,90 @@ +.TH "Scheme" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Scheme \- Auxiliary class to save scheme_files values =============================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBScheme\fP (std::string scheme_file_)" +.br +.ti -1c +.RI "void \fBreadSchemeFile\fP (std::string scheme_file_, bool \fBscale_from_stu\fP=0)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "std::string \fBscheme_file\fP" +.br +.ti -1c +.RI "std::string \fBheader\fP" +.br +.ti -1c +.RI "std::string \fBtype\fP" +.br +.ti -1c +.RI "int \fBnum_rep\fP" +.br +.ti -1c +.RI "float \fBduration\fP" +.br +.ti -1c +.RI "float \fBT\fP" +.br +.ti -1c +.RI "bool \fBscale_from_stu\fP" +.br +.ti -1c +.RI "std::vector< std::vector< double > > \fBscheme\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Auxiliary class to save scheme_files values =============================================================/\&. + +Helper class to store, handle and read scheme files values \&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +November 2016 +.SH "0\&.2 " +.PP +.RE +.PP + +.SH "Member Data Documentation" +.PP +.SS "float Scheme::duration" +time duration (wavefroms) +.SS "std::string Scheme::header" +Header on the scheme_file +.SS "int Scheme::num_rep" +Number of gradients +.SS "bool Scheme::scale_from_stu" +True if the input is in standar units +.SS "std::vector< std::vector > Scheme::scheme" +\fBScheme\fP values +.SS "std::string Scheme::scheme_file" +\fBScheme\fP file path +.SS "float Scheme::T" +number of time steps (wavefroms) +.SS "std::string Scheme::type" +Sequence type (PGSE only so far) + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Sentinels.3 b/doc/man/man3/Sentinels.3 new file mode 100644 index 0000000..9942c6d --- /dev/null +++ b/doc/man/man3/Sentinels.3 @@ -0,0 +1,33 @@ +.TH "Sentinels" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Sentinels \- \fBCollision\fP Final class ====================================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SH "Detailed Description" +.PP +\fBCollision\fP Final class ====================================================================/\&. + +Auxiliar class to check error and misbehaviours during the particle dynamics\&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +Junes 2017 +.PP +.RE +.PP +Class used to check the possible numerical errors or un-handed cases inside the dynamic simulation\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/SimErrno.3 b/doc/man/man3/SimErrno.3 new file mode 100644 index 0000000..dd19ec9 --- /dev/null +++ b/doc/man/man3/SimErrno.3 @@ -0,0 +1,314 @@ +.TH "SimErrno" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +SimErrno \- Simulation Input and parameter errors handling class =================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Static Public Member Functions" + +.in +1c +.ti -1c +.RI "static bool \fBcheckFileExist\fP (const std::string name)" +.br +.RI "Return true if the file does exist, false otherwise\&. " +.ti -1c +.RI "static bool \fBcheckSimulationParameters\fP (\fBParameters\fP ¶ms)" +.br +.RI "Return false if any of the parameters are inconsistent or bugged\&. In may assert the program\&. " +.ti -1c +.RI "static bool \fBcheckSchemeFile\fP (\fBParameters\fP ¶ms)" +.br +.RI "Return false if any of the parameters are inconsistent or bugged\&. In may assert the program\&. " +.ti -1c +.RI "static bool \fBcheckPLYFiles\fP (\fBParameters\fP ¶ms)" +.br +.RI "Return false if any of the PLY files are inconsistent or bugged\&. In may assert the program\&. " +.ti -1c +.RI "static bool \fBcheckCylindersListFile\fP (\fBParameters\fP ¶ms)" +.br +.RI "Return false if any of the cylinder list files are inconsistent or bugged\&. In may assert the program\&. " +.ti -1c +.RI "static bool \fBcheckInitWalkerFile\fP (\fBParameters\fP ¶ms)" +.br +.RI "Return false if the initial position file is inconsistent or bugged\&. In may assert the program\&. " +.ti -1c +.RI "static bool \fBcheckVoxelLimits\fP (\fBParameters\fP ¶ms)" +.br +.RI "Return false if the voxel instances are inconsistent or bugged\&. In may assert the program\&. " +.ti -1c +.RI "static bool \fBcheckConfigurationFile\fP (const char *configuration_file)" +.br +.RI "Return false if the scheme file does not exist or there are inconsistent or bugs\&. In may assert the program\&. " +.ti -1c +.RI "static void \fBprintSimulatinInfo\fP (\fBParameters\fP ¶ms, std::ostream &, bool color=1)" +.br +.ti -1c +.RI "static void \fBcheckOuputPrefixAndWriteInfo\fP (\fBParameters\fP ¶ms)" +.br +.RI "Return false if the output location and prefix are inconsistence or bugged\&. " +.ti -1c +.RI "static bool \fBcheckGammaDistributionParamaters\fP (\fBParameters\fP ¶ms)" +.br +.RI "Return false if the there are errors or inconsistencies in the gamma distr\&. parameters\&. " +.ti -1c +.RI "static void \fBwarning\fP (std::string message, std::ostream &, bool color=1)" +.br +.ti -1c +.RI "static void \fBinfo\fP (std::string message, std::ostream &, bool color=1)" +.br +.ti -1c +.RI "static void \fBinfoMenu\fP (std::string message, std::string value, std::ostream &, bool color=1, int space=0)" +.br +.ti -1c +.RI "static void \fBerror\fP (std::string message, std::ostream &, bool color=1)" +.br +.ti -1c +.RI "static void \fBexpectedTime\fP (std::string completed, std::string time, std::ostream &, bool color=1, std::string steps_second='', std::string endl_str='')" +.br +.ti -1c +.RI "static std::string \fBcurrentDateTime\fP ()" +.br +.ti -1c +.RI "static bool \fBcheckSubdivisionsFile\fP (\fBParameters\fP ¶ms)" +.br +.RI "Return false if any of the elements in the file are miss configured\&. " +.ti -1c +.RI "static void \fBappendRepetitionLabel\fP (\fBParameters\fP ¶ms)" +.br +.RI "Appends a repetition label on the prefix command so no results are overwritten, helpful if you are running batch of simulation inside a server\&. " +.in -1c +.SH "Detailed Description" +.PP +Simulation Input and parameter errors handling class =================================================/\&. + +Class ot handle the errors in the parameters, logical and on the syntaxis\&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +March 2016 +.PP +.RE +.PP +Class to handle the errors in the parameters, logical and on the syntax +.PP +This class contains a set of static methods to check that the configuration files exist and that the parameters are correctly set\&. This may cause asserts ERRORS or WARNINGS\&. +.SH "Member Function Documentation" +.PP +.SS "void SimErrno::appendRepetitionLabel (\fBParameters\fP & params)\fC [static]\fP" + +.PP +Appends a repetition label on the prefix command so no results are overwritten, helpful if you are running batch of simulation inside a server\&. +.PP +\fBParameters:\fP +.RS 4 +\fIparameter\fP instance +.RE +.PP + +.SS "bool SimErrno::checkConfigurationFile (const char * configuration_file)\fC [static]\fP" + +.PP +Return false if the scheme file does not exist or there are inconsistent or bugs\&. In may assert the program\&. +.PP +\fBParameters:\fP +.RS 4 +\fIparameter\fP instance +.RE +.PP + +.SS "bool SimErrno::checkCylindersListFile (\fBParameters\fP & params)\fC [static]\fP" + +.PP +Return false if any of the cylinder list files are inconsistent or bugged\&. In may assert the program\&. +.PP +\fBParameters:\fP +.RS 4 +\fIparameter\fP instance +.RE +.PP + +.SS "static bool SimErrno::checkFileExist (const std::string name)\fC [inline]\fP, \fC [static]\fP" + +.PP +Return true if the file does exist, false otherwise\&. +.PP +\fBParameters:\fP +.RS 4 +\fIname\fP file path +.RE +.PP + +.SS "bool SimErrno::checkGammaDistributionParamaters (\fBParameters\fP & params)\fC [static]\fP" + +.PP +Return false if the there are errors or inconsistencies in the gamma distr\&. parameters\&. +.PP +\fBParameters:\fP +.RS 4 +\fIparameter\fP instance +.RE +.PP + +.SS "bool SimErrno::checkInitWalkerFile (\fBParameters\fP & params)\fC [static]\fP" + +.PP +Return false if the initial position file is inconsistent or bugged\&. In may assert the program\&. +.PP +\fBParameters:\fP +.RS 4 +\fIparameter\fP instance +.RE +.PP + +.SS "void SimErrno::checkOuputPrefixAndWriteInfo (\fBParameters\fP & params)\fC [static]\fP" + +.PP +Return false if the output location and prefix are inconsistence or bugged\&. +.PP +\fBParameters:\fP +.RS 4 +\fIparameter\fP instance +.RE +.PP + +.SS "bool SimErrno::checkPLYFiles (\fBParameters\fP & params)\fC [static]\fP" + +.PP +Return false if any of the PLY files are inconsistent or bugged\&. In may assert the program\&. +.PP +\fBParameters:\fP +.RS 4 +\fIparameter\fP instance +.RE +.PP + +.SS "bool SimErrno::checkSchemeFile (\fBParameters\fP & params)\fC [static]\fP" + +.PP +Return false if any of the parameters are inconsistent or bugged\&. In may assert the program\&. +.PP +\fBParameters:\fP +.RS 4 +\fIparameter\fP instance +.RE +.PP + +.SS "bool SimErrno::checkSimulationParameters (\fBParameters\fP & params)\fC [static]\fP" + +.PP +Return false if any of the parameters are inconsistent or bugged\&. In may assert the program\&. +.PP +\fBParameters:\fP +.RS 4 +\fIparameter\fP instance +.RE +.PP + +.SS "bool SimErrno::checkSubdivisionsFile (\fBParameters\fP & params)\fC [static]\fP" + +.PP +Return false if any of the elements in the file are miss configured\&. +.PP +\fBParameters:\fP +.RS 4 +\fIparameter\fP instance +.RE +.PP + +.SS "bool SimErrno::checkVoxelLimits (\fBParameters\fP & params)\fC [static]\fP" + +.PP +Return false if the voxel instances are inconsistent or bugged\&. In may assert the program\&. +.PP +\fBParameters:\fP +.RS 4 +\fIparameter\fP instance +.RE +.PP + +.SS "void SimErrno::error (std::string message, std::ostream &, bool color = \fC1\fP)\fC [static]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIiostream\fP where to print ! +.br +\fIcolour\fP flag, false if no colour should be display or written +.RE +.PP + +.SS "void SimErrno::expectedTime (std::string completed, std::string time, std::ostream &, bool color = \fC1\fP, std::string steps_second = \fC''\fP, std::string endl_str = \fC''\fP)\fC [static]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIiostream\fP where to print ! +.br +\fIcolour\fP flag, false if no colour should be display or written ! +.br +\fIend\fP flag, false if no end of line string should be printing +.RE +.PP + +.SS "void SimErrno::info (std::string message, std::ostream &, bool color = \fC1\fP)\fC [static]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIiostream\fP where to print +.br +\fIcolour\fP flag, false if no colour should be display or written +.RE +.PP + +.SS "void SimErrno::infoMenu (std::string message, std::string value, std::ostream &, bool color = \fC1\fP, int space = \fC0\fP)\fC [static]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIiostream\fP where to print ! +.br +\fIcolour\fP flag, false if no colour should be display or written ! +.br +\fIspacing\fP at the end of the message +.RE +.PP + +.SS "void SimErrno::printSimulatinInfo (\fBParameters\fP & params, std::ostream &, bool color = \fC1\fP)\fC [static]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIparameter\fP instance +.br +\fIiostream\fP to print to +.br +\fIcolor\fP flag, false if no colour should be display or written +.RE +.PP + +.SS "void SimErrno::warning (std::string message, std::ostream &, bool color = \fC1\fP)\fC [static]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIiostream\fP where to print +.br +\fIcolour\fP flag, false if no colour should be display or written +.RE +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/SimulableSequence.3 b/doc/man/man3/SimulableSequence.3 new file mode 100644 index 0000000..1ff1dad --- /dev/null +++ b/doc/man/man3/SimulableSequence.3 @@ -0,0 +1,241 @@ +.TH "SimulableSequence" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +SimulableSequence \- MR Sequence Primary Class =============================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.PP +Inherited by \fBGradientWaveform\fP, and \fBPGSESequence\fP\&. +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "virtual void \fBgetGradImpulse\fP (int i, double t, double tLast, Eigen::Vector3d &Gdt)=0" +.br +.ti -1c +.RI "virtual double \fBgetbValue\fP (unsigned i)" +.br +.ti -1c +.RI "virtual double \fBgetFreeDecay\fP (unsigned i, double D)" +.br +.RI "Expected free Decay\&. " +.ti -1c +.RI "virtual void \fBupdate_phase_shift\fP (double dt, double dt_last, \fBWalker\fP walker)=0" +.br +.ti -1c +.RI "virtual void \fBupdate_phase_shift\fP (double time_step, Eigen::Matrix3Xd trajectory)=0" +.br +.ti -1c +.RI "virtual void \fBupdate_DWI_signal\fP (\fBWalker\fP &walker)=0" +.br +.RI "Updates the DWI signal using the cumulated phase shift\&. " +.ti -1c +.RI "virtual void \fBsetNumberOfSteps\fP (unsigned T)=0" +.br +.RI "Set the number of time steps if they are known\&. " +.ti -1c +.RI "virtual void \fBcomputeDynamicTimeSteps\fP ()" +.br +.RI "Compute the time for all the steps when they are not constant\&. " +.ti -1c +.RI "virtual void \fBinitializeSubdivisionSignals\fP ()" +.br +.RI "Initialize the DWI signals for each subdivision\&. " +.ti -1c +.RI "virtual void \fBinitializeIntraExtraSignals\fP ()" +.br +.RI "Initialize the DWI signals for each compartment (intra extra) " +.ti -1c +.RI "virtual void \fBwriteResultingData\fP (std::string output_base_name)" +.br +.ti -1c +.RI "virtual void \fBwritePhaseShiftDistribution\fP (std::string output_base_name)" +.br +.ti -1c +.RI "virtual void \fBcleanPhaseShift\fP ()" +.br +.ti -1c +.RI "virtual void \fBcleanDWISignal\fP ()" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "std::string \fBscheme_file\fP" +.br +.ti -1c +.RI "std::vector< double > \fBDWI\fP" +.br +.ti -1c +.RI "std::vector< double > \fBDWI_intra\fP" +.br +.ti -1c +.RI "std::vector< double > \fBDWI_extra\fP" +.br +.ti -1c +.RI "std::vector< double > \fBDWIi\fP" +.br +.ti -1c +.RI "std::vector< double > \fBphase_shift\fP" +.br +.ti -1c +.RI "int \fBnum_rep\fP" +.br +.ti -1c +.RI "bool \fBsave_phase_shift\fP" +.br +.ti -1c +.RI "bool \fBdynamic\fP" +.br +.ti -1c +.RI "double \fBpercent_steps_in\fP" +.br +.ti -1c +.RI "std::vector< double > \fBtime_steps\fP" +.br +.ti -1c +.RI "Eigen::ArrayXXf \fBphase_shift_distribution\fP" +.br +.ti -1c +.RI "std::vector< std::vector< double > > \fBsub_DWI\fP" +.br +.ti -1c +.RI "std::vector< std::vector< double > > \fBsub_DWI_intra\fP" +.br +.ti -1c +.RI "std::vector< std::vector< double > > \fBsub_DWI_extra\fP" +.br +.ti -1c +.RI "std::vector< std::vector< double > > \fBsub_DWIi\fP" +.br +.ti -1c +.RI "bool \fBsubdivision_flag\fP = false" +.br +.ti -1c +.RI "bool \fBseparate_signal\fP = false" +.br +.ti -1c +.RI "bool \fBimg_signal\fP = false" +.br +.ti -1c +.RI "std::vector< \fBSubdivision\fP > \fBsubdivisions\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +MR Sequence Primary Class =============================================================/\&. + +Elemental base clase\&. Abstract class to synthesise the MRI signal +.PP +.SH "Jonathan Rafael " +.PP + +.SH "Member Function Documentation" +.PP +.SS "virtual double SimulableSequence::getbValue (unsigned i)\fC [inline]\fP, \fC [virtual]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIi\fP index of the gradient in the scheme_file (0,N-1) +.RE +.PP +\fBReturns:\fP +.RS 4 +b-value +.RE +.PP + +.PP +Reimplemented in \fBPGSESequence\fP\&. +.SS "virtual void SimulableSequence::getGradImpulse (int i, double t, double tLast, Eigen::Vector3d & Gdt)\fC [pure virtual]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIi\fP \fBWalker\fP index +.br +\fIt\fP current time step (in milisenconds) +.br +\fItLast\fP last time step (in milisenconds) +.br +\fIGdt\fP vector to compute de G*dt impulse +.RE +.PP + +.PP +Implemented in \fBGradientWaveform\fP, and \fBPGSESequence\fP\&. +.SS "virtual void SimulableSequence::update_phase_shift (double dt, double dt_last, \fBWalker\fP walker)\fC [pure virtual]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIi\fP updated walker +.RE +.PP + +.PP +Implemented in \fBPGSESequence\fP, and \fBGradientWaveform\fP\&. +.SS "virtual void SimulableSequence::update_phase_shift (double time_step, Eigen::Matrix3Xd trajectory)\fC [pure virtual]\fP" + +.PP +\fBParameters:\fP +.RS 4 +\fIi\fP updated the phase shift over a whole trajectory +.RE +.PP + +.PP +Implemented in \fBPGSESequence\fP, and \fBGradientWaveform\fP\&. +.SH "Member Data Documentation" +.PP +.SS "std::vector SimulableSequence::DWI" +Real part of the DWI signal +.SS "std::vector SimulableSequence::DWI_extra" +Real part of the DWI signal extra axonal only (if needed) +.SS "std::vector SimulableSequence::DWI_intra" +Real part of the DWI signal intra axonal olny (if needed) +.SS "std::vector SimulableSequence::DWIi" +imaginary part of the DWI signal +.SS "bool SimulableSequence::dynamic" +Flag to indicate if the time steps are non-uniform +.SS "bool SimulableSequence::img_signal = false" +flag to check if the img part will be computed or not (false default +.SS "int SimulableSequence::num_rep" +number of repetitions \&. +.SS "double SimulableSequence::percent_steps_in" +percentage of steps that should be inside the gradient times +.SS "std::vector SimulableSequence::phase_shift" +auxiliar phase shift for signal computations\&. +.SS "Eigen::ArrayXXf SimulableSequence::phase_shift_distribution" +Matrix to save the phase shif distribution +.SS "bool SimulableSequence::save_phase_shift" +flag, if true, saves the pahse shift distribution\&. +.SS "std::string SimulableSequence::scheme_file" +\fBScheme\fP file path +.SS "bool SimulableSequence::separate_signal = false" +flag to check if we will separate the signal in intra and extra +.SS "std::vector > SimulableSequence::sub_DWI" +Real part of the DWI signal for each subDivision +.SS "std::vector > SimulableSequence::sub_DWI_extra" +Real part of the DWI extra signal for each subDivision +.SS "std::vector > SimulableSequence::sub_DWI_intra" +Real part of the DWI intra signal for each subDivision +.SS "std::vector > SimulableSequence::sub_DWIi" +Imaginary part of the DWI signal for each subdivision +.SS "bool SimulableSequence::subdivision_flag = false" +flag to check if we have several voxel subdivision to compute the signal +.SS "std::vector<\fBSubdivision\fP> SimulableSequence::subdivisions" +saves the actual positions of the subdivision to compute the signal +.SS "std::vector SimulableSequence::time_steps" +Auxiliary array to save the time steps + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Subdivision.3 b/doc/man/man3/Subdivision.3 new file mode 100644 index 0000000..ab668dd --- /dev/null +++ b/doc/man/man3/Subdivision.3 @@ -0,0 +1,94 @@ +.TH "Subdivision" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Subdivision \- Auxiliary \fBSubdivision\fP Class =============================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBSubdivision\fP ()" +.br +.RI "Naive constructor\&. " +.ti -1c +.RI "\fBSubdivision\fP (Eigen::Vector3f &, Eigen::Vector3f &)" +.br +.RI "Constructor for a defined list of min and max positions\&. " +.ti -1c +.RI "bool \fBisInside\fP (Eigen::Vector3d &pos)" +.br +.RI "Auxiliary function to check if a 3d position is inside a 'subdivision' i\&.e\&. defined cube\&. " +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "Eigen::Vector3f \fBmin_limits\fP" +.br +.ti -1c +.RI "Eigen::Vector3f \fBmax_limits\fP" +.br +.ti -1c +.RI "int \fBdensity\fP" +.br +.ti -1c +.RI "int \fBdensity_intra\fP" +.br +.ti -1c +.RI "int \fBdensity_extra\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Auxiliary \fBSubdivision\fP Class =============================================================/\&. + +Auxiliary Class\&. Implementation of the subdivision of a voxel into separate adquisitions +.PP +\fBDate:\fP +.RS 4 +September 2017 +.RE +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.SH "0\&.1\&.0 " +.PP +.RE +.PP + +.SH "Member Function Documentation" +.PP +.SS "bool Subdivision::isInside (Eigen::Vector3d & pos)" + +.PP +Auxiliary function to check if a 3d position is inside a 'subdivision' i\&.e\&. defined cube\&. +.PP +\fBParameters:\fP +.RS 4 +\fIpos\fP 3d position +.RE +.PP + +.SH "Member Data Documentation" +.PP +.SS "int Subdivision::density" +Counter to save the number of particles inside that region +.SS "int Subdivision::density_extra" +Counter to save the number of particles labeled as Extra in that region +.SS "int Subdivision::density_intra" +Counter to save the number of particles labeled as Intra in that region +.SS "Eigen::Vector3f Subdivision::max_limits" +Vector with the list of max limits points of each subdivisions +.SS "Eigen::Vector3f Subdivision::min_limits" +Vector with the list of min limits points of each subdivisions + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Trajectory.3 b/doc/man/man3/Trajectory.3 new file mode 100644 index 0000000..48121d4 --- /dev/null +++ b/doc/man/man3/Trajectory.3 @@ -0,0 +1,211 @@ +.TH "Trajectory" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Trajectory \- Auxiliary class\&. Handles i/o operation of walker trayectories\&. ============================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBTrajectory\fP ()" +.br +.RI "Main constructor, Initialice everythin to default\&. " +.ti -1c +.RI "\fBTrajectory\fP (const char *traj_file, bool isBigEndian_=true, std::string io_flag_='rb')" +.br +.RI "Contructor , Initialice everythin by parameters\&. " +.ti -1c +.RI "\fB~Trajectory\fP ()" +.br +.RI "Destructor, close files and fstreams\&. " +.ti -1c +.RI "void \fBinitTrajectory\fP (\fBParameters\fP params)" +.br +.RI "Initialice the output files if any\&. " +.ti -1c +.RI "void \fBsetTrajFile\fP (std::string)" +.br +.RI "Setd the traj file operations\&. " +.in -1c +.PP +.RI "\fB\fP" +.br + +.in +1c +.in +1c +.ti -1c +.RI "void \fBcloseTrajReaderFile\fP ()" +.br +.ti -1c +.RI "void \fBopenTrajReaderFile\fP ()" +.br +.ti -1c +.RI "void \fBinitTrajReaderFile\fP ()" +.br +.ti -1c +.RI "void \fBreadTrajectoryHeader\fP ()" +.br +.ti -1c +.RI "void \fBreadCurrentWalkersTrajectory\fP (Eigen::Matrix3Xd &)" +.br +.in -1c +.in -1c +.PP +.RI "\fB\fP" +.br + +.in +1c +.in +1c +.ti -1c +.RI "void \fBinitTrajWriter\fP ()" +.br +.ti -1c +.RI "void \fBinitTrajWriterBinary\fP ()" +.br +.ti -1c +.RI "void \fBinitTrajWriterText\fP ()" +.br +.ti -1c +.RI "void \fBwriteTrajectoryHeaderBinary\fP ()" +.br +.ti -1c +.RI "void \fBwriteTrajectoryHeaderText\fP ()" +.br +.ti -1c +.RI "void \fBreWriteHeaderFile\fP (unsigned num_walkers)" +.br +.ti -1c +.RI "void \fBwritePosition\fP (Eigen::Vector3d &)" +.br +.ti -1c +.RI "void \fBwritePositionText\fP (Eigen::Vector3d &)" +.br +.ti -1c +.RI "void \fBwritePositionBinary\fP (Eigen::Vector3d &)" +.br +.ti -1c +.RI "void \fBwritePosition\fP (Eigen::Matrix3Xd &)" +.br +.ti -1c +.RI "void \fBwritePositionText\fP (Eigen::Matrix3Xd &)" +.br +.ti -1c +.RI "void \fBwritePositionBinary\fP (Eigen::Matrix3Xd &)" +.br +.in -1c +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "std::string \fBtrajfile\fP" +.br +.ti -1c +.RI "std::string \fBheaderfile\fP" +.br +.ti -1c +.RI "FILE * \fBin\fP" +.br +.ti -1c +.RI "FILE * \fBin_header\fP" +.br +.ti -1c +.RI "std::ofstream \fBbout\fP" +.br +.ti -1c +.RI "std::ofstream \fBtout\fP" +.br +.ti -1c +.RI "std::ofstream \fBbheaderout\fP" +.br +.ti -1c +.RI "std::ofstream \fBtheaderout\fP" +.br +.ti -1c +.RI "unsigned \fBN\fP" +.br +.ti -1c +.RI "unsigned \fBT\fP" +.br +.ti -1c +.RI "double \fBdyn_duration\fP" +.br +.ti -1c +.RI "std::string \fBio_flag\fP" +.br +.ti -1c +.RI "std::vector< unsigned > \fBpos_times\fP" +.br +.ti -1c +.RI "bool \fBisBigEndian\fP" +.br +.ti -1c +.RI "bool \fBwrite_traj\fP" +.br +.ti -1c +.RI "bool \fBwrite_txt\fP" +.br +.ti -1c +.RI "bool \fBwrite_bin\fP" +.br +.ti -1c +.RI "bool \fBsteps_subset\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Auxiliary class\&. Handles i/o operation of walker trayectories\&. ============================/\&. + + +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +July 2016 +.SH "0\&.2 " +.PP +.RE +.PP + +.SH "Member Function Documentation" +.PP +.SS "void Trajectory::closeTrajReaderFile ()" +Read operations +.SS "void Trajectory::initTrajWriter ()" +Write operations +.SH "Member Data Documentation" +.PP +.SS "std::string Trajectory::headerfile" +header name +.SS "FILE * Trajectory::in_header" +Files to be written using the previous names binary out, text out, binary header, text header +.SS "bool Trajectory::isBigEndian" +flag if the format is big endian +.SS "std::vector Trajectory::pos_times" +Times indexes when to save the particle positions\&. +.SS "bool Trajectory::steps_subset" +true if the steps are no uniform +.SS "unsigned Trajectory::T" +number of walkers, total time; +.SS "std::string Trajectory::trajfile" +trajfile name +.SS "bool Trajectory::write_bin" +flag if we want to write a binary traj file +.SS "bool Trajectory::write_traj" +flag if we want to write a traj file +.SS "bool Trajectory::write_txt" +flag if we want to write a text traj file + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Triangle.3 b/doc/man/man3/Triangle.3 new file mode 100644 index 0000000..158d965 --- /dev/null +++ b/doc/man/man3/Triangle.3 @@ -0,0 +1,87 @@ +.TH "Triangle" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Triangle \- Auxiliary class\&. Implements trangular barriers\&. ===================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBTriangle\fP (\fBVertex\fP *vertices, unsigned index)" +.br +.ti -1c +.RI "void \fBgetVertex\fP (const unsigned i, Eigen::Vector3d &v)" +.br +.ti -1c +.RI "void \fBgetNormal\fP (Eigen::Vector3d &normal)" +.br +.ti -1c +.RI "void \fBsaveNormalAndAuxInfo\fP ()" +.br +.ti -1c +.RI "bool \fBrayIntersects\fP (const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, double &t)" +.br +.ti -1c +.RI "void \fBstepIntersects_MT\fP (\fBWalker\fP &walker, const Eigen::Vector3d &step, const double &max_length, \fBCollision\fP &colision)" +.br +.ti -1c +.RI "void \fBstepIntersects_MT_limits\fP (const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, const double &max_length, \fBCollision\fP &colision, const Eigen::Vector3d &limits_mod, double limit_x, double limit_y, double limit_z)" +.br +.ti -1c +.RI "bool \fBrayIntersects_MT\fP (const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, double &u, double &v, double &t)" +.br +.ti -1c +.RI "double \fBminDistance\fP (const Eigen::Vector3d p)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "unsigned \fBindex\fP" +.br +.ti -1c +.RI "\fBVertex\fP * \fBvertices\fP" +.br +.ti -1c +.RI "Eigen::Array3i \fBindexes\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBnormal\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBcenter\fP" +.br +.ti -1c +.RI "double \fBradius\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Auxiliary class\&. Implements trangular barriers\&. ===================================/\&. + +Helper class to strore and handle trangular barriers\&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +July 2016 +.SH "0\&.2 " +.PP +.RE +.PP + + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Vertex.3 b/doc/man/man3/Vertex.3 new file mode 100644 index 0000000..b37ae01 --- /dev/null +++ b/doc/man/man3/Vertex.3 @@ -0,0 +1,55 @@ +.TH "Vertex" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Vertex \- Auxiliary class\&. Implements basic vertices\&. ====================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBVertex\fP (const double &x, const double &y, const double &z)" +.br +.ti -1c +.RI "double \fBoperator()\fP (unsigned i)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "unsigned \fBindex\fP" +.br +.ti -1c +.RI "double \fBpoints\fP [3]" +.br +.in -1c +.SH "Detailed Description" +.PP +Auxiliary class\&. Implements basic vertices\&. ====================================/\&. + +Helper class to strore and handle vertices\&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +July 2016 +.SH "0\&.2 " +.PP +.RE +.PP +.PP +\fBVertex\fP of a 3d poly + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Voxel.3 b/doc/man/man3/Voxel.3 new file mode 100644 index 0000000..9c86ae3 --- /dev/null +++ b/doc/man/man3/Voxel.3 @@ -0,0 +1,41 @@ +.TH "Voxel" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Voxel \- //! Main class\&. Implements basic voxel limits and operations\&. Class to handle and manage the voxels in the simulations\&. So far only one voxel at the time can be handled\&. To improve to several voxels, modifications shall be done\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBVoxel\fP (Eigen::Vector3d min_limits_, Eigen::Vector3d max_limits_)" +.br +.ti -1c +.RI "bool \fBCheckCollision\fP (\fBWalker\fP &walker, Eigen::Vector3d &step, double &tmax, \fBCollision\fP &colision)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "Eigen::Vector3d \fBmin_limits\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBmax_limits\fP" +.br +.ti -1c +.RI "\fBPlane\fP \fBwalls\fP [6]" +.br +.in -1c +.SH "Detailed Description" +.PP +//! Main class\&. Implements basic voxel limits and operations\&. Class to handle and manage the voxels in the simulations\&. So far only one voxel at the time can be handled\&. To improve to several voxels, modifications shall be done\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/Walker.3 b/doc/man/man3/Walker.3 new file mode 100644 index 0000000..a98e1e9 --- /dev/null +++ b/doc/man/man3/Walker.3 @@ -0,0 +1,286 @@ +.TH "Walker" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +Walker \- Spin Final class =============================================================/\&. + +.SH SYNOPSIS +.br +.PP +.PP +\fC#include \fP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "enum \fBstate\fP { \fBon_object\fP, \fBon_edge\fP, \fBon_vertex\fP, \fBon_voxel\fP, \fBfree\fP, \fBbouncing\fP } +.RI "An enum\&. "" +.br +.ti -1c +.RI "enum \fBRelativeLocation\fP { \fBunknown\fP, \fBintra\fP, \fBextra\fP } +.RI "An enum\&. "" +.br +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "\fBWalker\fP ()" +.br +.RI "Default constructor\&. " +.ti -1c +.RI "\fB~Walker\fP ()" +.br +.ti -1c +.RI "\fBWalker\fP (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)" +.br +.RI "Constructor\&. " +.ti -1c +.RI "void \fBgetRealPosition\fP (double &, double &, double &) const" +.br +.ti -1c +.RI "void \fBgetRealPosition\fP (Eigen::Vector3d &) const" +.br +.ti -1c +.RI "void \fBgetVoxelPosition\fP (double &, double &, double &) const" +.br +.ti -1c +.RI "void \fBgetVoxelPosition\fP (Eigen::Vector3d &) const" +.br +.ti -1c +.RI "void \fBgetInitialPosition\fP (double &, double &, double &) const" +.br +.ti -1c +.RI "void \fBgetInitialPosition\fP (Eigen::Vector3d &) const" +.br +.ti -1c +.RI "void \fBgetNextDirection\fP (Eigen::Vector3d &) const" +.br +.ti -1c +.RI "unsigned int \fBgetIndex\fP () const" +.br +.ti -1c +.RI "void \fBsetRealPosition\fP (const double &, const double &, const double &)" +.br +.ti -1c +.RI "void \fBsetRealPosition\fP (const Eigen::Vector3d &)" +.br +.ti -1c +.RI "void \fBsetVoxelPosition\fP (const double &, const double &, const double &)" +.br +.ti -1c +.RI "void \fBsetVoxelPosition\fP (const Eigen::Vector3d &)" +.br +.ti -1c +.RI "void \fBsetInitialPosition\fP (const double &, const double &, const double &)" +.br +.ti -1c +.RI "void \fBsetInitialPosition\fP (const Eigen::Vector3d &)" +.br +.ti -1c +.RI "void \fBsetNextDirection\fP (Eigen::Vector3d &)" +.br +.ti -1c +.RI "void \fBsetRandomInitialPosition\fP (const Eigen::Vector3d &min, const Eigen::Vector3d &max)" +.br +.ti -1c +.RI "void \fBsetIndex\fP (unsigned int &)" +.br +.ti -1c +.RI "void \fBsetRealPosLog\fP (const Eigen::Vector3d &pos, unsigned t)" +.br +.ti -1c +.RI "void \fBsetRealPosLog\fP (double x, double y, double z, unsigned t)" +.br +.ti -1c +.RI "void \fBsetVoxPosLog\fP (const Eigen::Vector3d &pos, unsigned t)" +.br +.ti -1c +.RI "void \fBsetVoxPosLog\fP (double x, double y, double z, unsigned t)" +.br +.ti -1c +.RI "void \fBsetNumberOfSteps\fP (unsigned T)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "Eigen::Vector3d \fBpos_r\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBpos_v\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBlast_pos_r\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBlast_pos_v\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBini_pos\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBnext_direction\fP" +.br +.ti -1c +.RI "Eigen::Matrix3Xd \fBpos_r_log\fP" +.br +.ti -1c +.RI "Eigen::Matrix3Xd \fBpos_v_log\fP" +.br +.ti -1c +.RI "int \fBin_obj_index\fP" +.br +.ti -1c +.RI "int \fBin_ply_index\fP" +.br +.ti -1c +.RI "\fBCylinderCollisionSphere\fP \fBcollision_sphere_cylinders\fP" +.br +.ti -1c +.RI "\fBPLYCollisionSphere\fP \fBcollision_sphere_ply\fP" +.br +.ti -1c +.RI "Eigen::Vector3d \fBinitial_sphere_pos_v\fP" +.br +.ti -1c +.RI "unsigned \fBsteps_count\fP" +.br +.ti -1c +.RI "\fBstate\fP \fBstatus\fP" +.br +.ti -1c +.RI "\fBRelativeLocation\fP \fBinitial_location\fP" +.br +.ti -1c +.RI "\fBRelativeLocation\fP \fBlocation\fP" +.br +.ti -1c +.RI "int \fBintra_extra_consensus\fP" +.br +.ti -1c +.RI "unsigned \fBintra_coll_count\fP" +.br +.ti -1c +.RI "unsigned \fBextra_coll_count\fP" +.br +.ti -1c +.RI "unsigned int \fBindex\fP" +.br +.ti -1c +.RI "unsigned int \fBrejection_count\fP" +.br +.ti -1c +.RI "float \fBsteps_per_second\fP" +.br +.in -1c +.SH "Detailed Description" +.PP +Spin Final class =============================================================/\&. + +Basic unit of the diffusion process\&. +.PP +\fBAuthor:\fP +.RS 4 +Jonathan Rafael +.RE +.PP +\fBDate:\fP +.RS 4 +November 2016 +.SH "0\&.2 " +.PP +.RE +.PP +.PP +Alias for a particle\&. Basic unit on the simulation process\&. Saves all the necessary information to perform the particles dynamics\&. +.SH "Member Enumeration Documentation" +.PP +.SS "enum \fBWalker::RelativeLocation\fP" + +.PP +An enum\&. Possible location of the walker inside the voxel\&. Checks illegal crossings of the barrier (border, lol) +.SS "enum \fBWalker::state\fP" + +.PP +An enum\&. All the possibles states that a walker can be in a given step\&. The next step is perform according to this state +.SH "Constructor & Destructor Documentation" +.PP +.SS "Walker::Walker ()" + +.PP +Default constructor\&. Set all variables to cero\&. +.PP +Based class \fBWalker\fP\&. +.SS "Walker::~Walker ()\fC [inline]\fP" +Default destructor\&. +.PP +Does nothing +.SS "Walker::Walker (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)" + +.PP +Constructor\&. Initialize the walker position in a random position inside the boundaries defined by the limits\&. +.PP +\fBParameters:\fP +.RS 4 +\fIxmin\fP lower x threshold +.br +\fIxmax\fP upper x threshold +.br +\fIymin\fP lower y threshold +.br +\fIymax\fP upper y threshold +.RE +.PP + +.SH "Member Data Documentation" +.PP +.SS "\fBCylinderCollisionSphere\fP Walker::collision_sphere_cylinders" +\fBCollision\fP sphere for collition against cylidners +.SS "\fBPLYCollisionSphere\fP Walker::collision_sphere_ply" +\fBCollision\fP sphere for collition against PLY meshes +.SS "unsigned Walker::extra_coll_count" +counter of collision in the extra-side w/r the normal +.SS "int Walker::in_obj_index" +Auxiliar index to save if the walker was inside a convex object +.SS "int Walker::in_ply_index" +Auxiliar index to save if the walker was inside a convex ply object +.SS "unsigned int Walker::index" +\fBWalker\fP identifier (id) +.SS "Eigen::Vector3d Walker::ini_pos" +\fBWalker\fP intital position +.SS "Eigen::Vector3d Walker::initial_sphere_pos_v" +Saves the intial positioon of the walker inside the collition sphere +.SS "unsigned Walker::intra_coll_count" +counter of collision in the ïntra-side w/r the normal +.SS "int Walker::intra_extra_consensus" +intra o extra position by face collision consensus w/r the normal +.SS "Eigen::Vector3d Walker::last_pos_r" +\fBWalker\fP voxel last position +.SS "Eigen::Vector3d Walker::last_pos_v" +\fBWalker\fP real last position +.SS "\fBRelativeLocation\fP Walker::location" +location on the substrate (if known) +.SS "Eigen::Vector3d Walker::next_direction" +Auxiliar vector for special states cases, decides the next direction +.SS "Eigen::Vector3d Walker::pos_r" +Real walker position for collision, r stands for real +.SS "Eigen::Matrix3Xd Walker::pos_r_log" +log of the real spin position, used to compute the phase shift +.SS "Eigen::Vector3d Walker::pos_v" +\fBWalker\fP current position +.SS "Eigen::Matrix3Xd Walker::pos_v_log" +log of the voxel position, used for collision location and bouncing +.SS "unsigned int Walker::rejection_count" +counter of the rejected directions in a single time-step +.SS "\fBstate\fP Walker::status" +state memeber +.SS "unsigned Walker::steps_count" +Counts the number of steps (including bouncings) made\&. +.SS "float Walker::steps_per_second" +Particles steps per second speeed\&. + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/man/man3/_home_jonathan_Dropbox_Documents_EPFL_Main_Studies_Simulators_MCDC_Simulator_public_src_.3 b/doc/man/man3/_home_jonathan_Dropbox_Documents_EPFL_Main_Studies_Simulators_MCDC_Simulator_public_src_.3 new file mode 100644 index 0000000..d6e10b0 --- /dev/null +++ b/doc/man/man3/_home_jonathan_Dropbox_Documents_EPFL_Main_Studies_Simulators_MCDC_Simulator_public_src_.3 @@ -0,0 +1,9 @@ +.TH "src Directory Reference" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +src Directory Reference +.SH SYNOPSIS +.br +.PP + diff --git a/doc/man/man3/md_src__r_e_a_d_m_e.3 b/doc/man/man3/md_src__r_e_a_d_m_e.3 new file mode 100644 index 0000000..c72dc07 --- /dev/null +++ b/doc/man/man3/md_src__r_e_a_d_m_e.3 @@ -0,0 +1,16 @@ +.TH "md_src__r_e_a_d_m_e" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +md_src__r_e_a_d_m_eMonte Carlo Diffusion and \fBCollision\fP Simulator + \- +.SH "Static building from sources:" +.PP +.PP +.SS "Assuming a bin folder:" +.PP +Cretes a folder \fCmkdir bin\fP +.PP +Compiles all the magic (statically, slowly, but without messy \&.o) +.PP +\fCg++ -O3 -std=c++11 -lpthread -std=c++0x -pthread -I\&. main\&.cpp simulablesequence\&.cpp vertex\&.cpp obstacle\&.cpp collision\&.cpp scheme\&.cpp voxel\&.cpp cylinder\&.cpp walker\&.cpp mcsimulation\&.cpp parallelmcsimulation\&.cpp trajectory\&.cpp triangle\&.cpp parameters\&.cpp plyobstacle\&.cpp pgsesequence\&.cpp dynamicsSimulation\&.cpp simerrno\&.cpp collisionsphere\&.cpp cylindergammadistribution\&.cpp sentinel\&.cpp subdivision\&.cpp gradientwaveform\&.cpp propagator\&.cpp -o bin/MC-DC_Simulator\fP diff --git a/doc/man/man3/sentinels_Sentinel.3 b/doc/man/man3/sentinels_Sentinel.3 new file mode 100644 index 0000000..5934ad6 --- /dev/null +++ b/doc/man/man3/sentinels_Sentinel.3 @@ -0,0 +1,72 @@ +.TH "sentinels::Sentinel" 3 "Sun May 9 2021" "Version 1.42.14_wf" "MCDC_simulator" \" -*- nroff -*- +.ad l +.nh +.SH NAME +sentinels::Sentinel +.SH SYNOPSIS +.br +.PP +.SS "Public Types" + +.in +1c +.ti -1c +.RI "enum \fBErrorCases\fP { \fBnone\fP, \fBstuck\fP, \fBcrossed\fP, \fBrejected\fP, \fBrejected_initial_pos\fP }" +.br +.in -1c +.SS "Public Member Functions" + +.in +1c +.ti -1c +.RI "void \fBclear\fP ()" +.br +.ti -1c +.RI "void \fBsetBouncingError\fP (unsigned bouncings)" +.br +.ti -1c +.RI "void \fBsetCrossingError\fP (unsigned)" +.br +.ti -1c +.RI "void \fBsetRejectedError\fP ()" +.br +.ti -1c +.RI "bool \fBcheckErrors\fP (\fBWalker\fP &w, const \fBParameters\fP ¶ms, bool noPLY, unsigned &bouncing_count)" +.br +.ti -1c +.RI "void \fBdeportationProcess\fP (\fBWalker\fP &walker, unsigned &w, unsigned &t, bool &back_tracking, \fBParameters\fP ¶ms, int id)" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "unsigned \fBstuck_count\fP" +.br +.ti -1c +.RI "unsigned \fBillegal_count\fP" +.br +.ti -1c +.RI "unsigned \fBbouncings\fP" +.br +.ti -1c +.RI "unsigned \fBobstacle_id\fP" +.br +.ti -1c +.RI "unsigned \fBrejected_count\fP" +.br +.ti -1c +.RI "bool \fBrejected_step\fP" +.br +.ti -1c +.RI "bool \fBdeport_illegals\fP" +.br +.ti -1c +.RI "bool \fBdiscard_stucks\fP" +.br +.ti -1c +.RI "ErrorCases \fBerror\fP" +.br +.in -1c + +.SH "Author" +.PP +Generated automatically by Doxygen for MCDC_simulator from the source code\&. diff --git a/doc/rtf/class_collisionsphere__inherit__graph.md5 b/doc/rtf/class_collisionsphere__inherit__graph.md5 new file mode 100644 index 0000000..b6ddcb2 --- /dev/null +++ b/doc/rtf/class_collisionsphere__inherit__graph.md5 @@ -0,0 +1 @@ +fe2855d462463850d5e982af4f7799b9 \ No newline at end of file diff --git a/doc/rtf/class_collisionsphere__inherit__graph.png b/doc/rtf/class_collisionsphere__inherit__graph.png new file mode 100644 index 0000000..7c46f9b Binary files /dev/null and b/doc/rtf/class_collisionsphere__inherit__graph.png differ diff --git a/doc/rtf/class_cylinder__coll__graph.md5 b/doc/rtf/class_cylinder__coll__graph.md5 new file mode 100644 index 0000000..010c87a --- /dev/null +++ b/doc/rtf/class_cylinder__coll__graph.md5 @@ -0,0 +1 @@ +e2b7c1d0c119944237b25301a0a370b5 \ No newline at end of file diff --git a/doc/rtf/class_cylinder__coll__graph.png b/doc/rtf/class_cylinder__coll__graph.png new file mode 100644 index 0000000..722e285 Binary files /dev/null and b/doc/rtf/class_cylinder__coll__graph.png differ diff --git a/doc/rtf/class_cylinder__inherit__graph.md5 b/doc/rtf/class_cylinder__inherit__graph.md5 new file mode 100644 index 0000000..4f8dd30 --- /dev/null +++ b/doc/rtf/class_cylinder__inherit__graph.md5 @@ -0,0 +1 @@ +24d757a3e2e9fec14cfbd59ef7058099 \ No newline at end of file diff --git a/doc/rtf/class_cylinder__inherit__graph.png b/doc/rtf/class_cylinder__inherit__graph.png new file mode 100644 index 0000000..722e285 Binary files /dev/null and b/doc/rtf/class_cylinder__inherit__graph.png differ diff --git a/doc/rtf/class_cylinder_collision_sphere__coll__graph.md5 b/doc/rtf/class_cylinder_collision_sphere__coll__graph.md5 new file mode 100644 index 0000000..4d59a5e --- /dev/null +++ b/doc/rtf/class_cylinder_collision_sphere__coll__graph.md5 @@ -0,0 +1 @@ +496277fa734809904a0c4bad47346065 \ No newline at end of file diff --git a/doc/rtf/class_cylinder_collision_sphere__coll__graph.png b/doc/rtf/class_cylinder_collision_sphere__coll__graph.png new file mode 100644 index 0000000..f20cda5 Binary files /dev/null and b/doc/rtf/class_cylinder_collision_sphere__coll__graph.png differ diff --git a/doc/rtf/class_cylinder_collision_sphere__inherit__graph.md5 b/doc/rtf/class_cylinder_collision_sphere__inherit__graph.md5 new file mode 100644 index 0000000..13aff5b --- /dev/null +++ b/doc/rtf/class_cylinder_collision_sphere__inherit__graph.md5 @@ -0,0 +1 @@ +93feae2b5595384153c2d8691eb8ac0c \ No newline at end of file diff --git a/doc/rtf/class_cylinder_collision_sphere__inherit__graph.png b/doc/rtf/class_cylinder_collision_sphere__inherit__graph.png new file mode 100644 index 0000000..f20cda5 Binary files /dev/null and b/doc/rtf/class_cylinder_collision_sphere__inherit__graph.png differ diff --git a/doc/rtf/class_dynamics_simulation__coll__graph.md5 b/doc/rtf/class_dynamics_simulation__coll__graph.md5 new file mode 100644 index 0000000..72dec89 --- /dev/null +++ b/doc/rtf/class_dynamics_simulation__coll__graph.md5 @@ -0,0 +1 @@ +ffc822bf53fc7c603ad8a6a44e636ddf \ No newline at end of file diff --git a/doc/rtf/class_dynamics_simulation__coll__graph.png b/doc/rtf/class_dynamics_simulation__coll__graph.png new file mode 100644 index 0000000..2294bf4 Binary files /dev/null and b/doc/rtf/class_dynamics_simulation__coll__graph.png differ diff --git a/doc/rtf/class_gradient_waveform__coll__graph.md5 b/doc/rtf/class_gradient_waveform__coll__graph.md5 new file mode 100644 index 0000000..b309913 --- /dev/null +++ b/doc/rtf/class_gradient_waveform__coll__graph.md5 @@ -0,0 +1 @@ +2744f074bb8246dbb773c9ed05c4a331 \ No newline at end of file diff --git a/doc/rtf/class_gradient_waveform__coll__graph.png b/doc/rtf/class_gradient_waveform__coll__graph.png new file mode 100644 index 0000000..5f3528c Binary files /dev/null and b/doc/rtf/class_gradient_waveform__coll__graph.png differ diff --git a/doc/rtf/class_gradient_waveform__inherit__graph.md5 b/doc/rtf/class_gradient_waveform__inherit__graph.md5 new file mode 100644 index 0000000..42f05bf --- /dev/null +++ b/doc/rtf/class_gradient_waveform__inherit__graph.md5 @@ -0,0 +1 @@ +20ffaf6aabaff97f74f2be3dd77f6dde \ No newline at end of file diff --git a/doc/rtf/class_gradient_waveform__inherit__graph.png b/doc/rtf/class_gradient_waveform__inherit__graph.png new file mode 100644 index 0000000..06c9315 Binary files /dev/null and b/doc/rtf/class_gradient_waveform__inherit__graph.png differ diff --git a/doc/rtf/class_m_c_simulation__coll__graph.md5 b/doc/rtf/class_m_c_simulation__coll__graph.md5 new file mode 100644 index 0000000..568b5c1 --- /dev/null +++ b/doc/rtf/class_m_c_simulation__coll__graph.md5 @@ -0,0 +1 @@ +d370ada8b43e5717978ffa6e10b4c6e4 \ No newline at end of file diff --git a/doc/rtf/class_m_c_simulation__coll__graph.png b/doc/rtf/class_m_c_simulation__coll__graph.png new file mode 100644 index 0000000..ffbd8df Binary files /dev/null and b/doc/rtf/class_m_c_simulation__coll__graph.png differ diff --git a/doc/rtf/class_obstacle__inherit__graph.md5 b/doc/rtf/class_obstacle__inherit__graph.md5 new file mode 100644 index 0000000..22aef0e --- /dev/null +++ b/doc/rtf/class_obstacle__inherit__graph.md5 @@ -0,0 +1 @@ +97b355a4ea30f8df263e796c7e84a6ee \ No newline at end of file diff --git a/doc/rtf/class_obstacle__inherit__graph.png b/doc/rtf/class_obstacle__inherit__graph.png new file mode 100644 index 0000000..16b518e Binary files /dev/null and b/doc/rtf/class_obstacle__inherit__graph.png differ diff --git a/doc/rtf/class_p_g_s_e_sequence__coll__graph.md5 b/doc/rtf/class_p_g_s_e_sequence__coll__graph.md5 new file mode 100644 index 0000000..4db078f --- /dev/null +++ b/doc/rtf/class_p_g_s_e_sequence__coll__graph.md5 @@ -0,0 +1 @@ +e68ea10c4b80bbee92d64801b60ed111 \ No newline at end of file diff --git a/doc/rtf/class_p_g_s_e_sequence__coll__graph.png b/doc/rtf/class_p_g_s_e_sequence__coll__graph.png new file mode 100644 index 0000000..8d8f79e Binary files /dev/null and b/doc/rtf/class_p_g_s_e_sequence__coll__graph.png differ diff --git a/doc/rtf/class_p_g_s_e_sequence__inherit__graph.md5 b/doc/rtf/class_p_g_s_e_sequence__inherit__graph.md5 new file mode 100644 index 0000000..0b8ff20 --- /dev/null +++ b/doc/rtf/class_p_g_s_e_sequence__inherit__graph.md5 @@ -0,0 +1 @@ +8a2127287e71a616ae02fb4be0d7bc5e \ No newline at end of file diff --git a/doc/rtf/class_p_g_s_e_sequence__inherit__graph.png b/doc/rtf/class_p_g_s_e_sequence__inherit__graph.png new file mode 100644 index 0000000..f35eeb9 Binary files /dev/null and b/doc/rtf/class_p_g_s_e_sequence__inherit__graph.png differ diff --git a/doc/rtf/class_p_l_y_collision_sphere__coll__graph.md5 b/doc/rtf/class_p_l_y_collision_sphere__coll__graph.md5 new file mode 100644 index 0000000..4dab170 --- /dev/null +++ b/doc/rtf/class_p_l_y_collision_sphere__coll__graph.md5 @@ -0,0 +1 @@ +2634328decf33f31d8b1841b63a128bf \ No newline at end of file diff --git a/doc/rtf/class_p_l_y_collision_sphere__coll__graph.png b/doc/rtf/class_p_l_y_collision_sphere__coll__graph.png new file mode 100644 index 0000000..160c8d4 Binary files /dev/null and b/doc/rtf/class_p_l_y_collision_sphere__coll__graph.png differ diff --git a/doc/rtf/class_p_l_y_collision_sphere__inherit__graph.md5 b/doc/rtf/class_p_l_y_collision_sphere__inherit__graph.md5 new file mode 100644 index 0000000..d1ce697 --- /dev/null +++ b/doc/rtf/class_p_l_y_collision_sphere__inherit__graph.md5 @@ -0,0 +1 @@ +bb664e369f5fb3e0d2cbc12e5964cb0f \ No newline at end of file diff --git a/doc/rtf/class_p_l_y_collision_sphere__inherit__graph.png b/doc/rtf/class_p_l_y_collision_sphere__inherit__graph.png new file mode 100644 index 0000000..160c8d4 Binary files /dev/null and b/doc/rtf/class_p_l_y_collision_sphere__inherit__graph.png differ diff --git a/doc/rtf/class_p_l_y_obstacle__coll__graph.md5 b/doc/rtf/class_p_l_y_obstacle__coll__graph.md5 new file mode 100644 index 0000000..24bb239 --- /dev/null +++ b/doc/rtf/class_p_l_y_obstacle__coll__graph.md5 @@ -0,0 +1 @@ +78fed28d6b636b0f0bfec7b47337877e \ No newline at end of file diff --git a/doc/rtf/class_p_l_y_obstacle__coll__graph.png b/doc/rtf/class_p_l_y_obstacle__coll__graph.png new file mode 100644 index 0000000..46f8383 Binary files /dev/null and b/doc/rtf/class_p_l_y_obstacle__coll__graph.png differ diff --git a/doc/rtf/class_p_l_y_obstacle__inherit__graph.md5 b/doc/rtf/class_p_l_y_obstacle__inherit__graph.md5 new file mode 100644 index 0000000..5f6d262 --- /dev/null +++ b/doc/rtf/class_p_l_y_obstacle__inherit__graph.md5 @@ -0,0 +1 @@ +a1405afa75f022fbb0216564f1304bda \ No newline at end of file diff --git a/doc/rtf/class_p_l_y_obstacle__inherit__graph.png b/doc/rtf/class_p_l_y_obstacle__inherit__graph.png new file mode 100644 index 0000000..80a7077 Binary files /dev/null and b/doc/rtf/class_p_l_y_obstacle__inherit__graph.png differ diff --git a/doc/rtf/class_parallel_m_c_simulation__coll__graph.md5 b/doc/rtf/class_parallel_m_c_simulation__coll__graph.md5 new file mode 100644 index 0000000..0e87780 --- /dev/null +++ b/doc/rtf/class_parallel_m_c_simulation__coll__graph.md5 @@ -0,0 +1 @@ +9eb942d342e1688dd2c22d2b5a80dc1a \ No newline at end of file diff --git a/doc/rtf/class_parallel_m_c_simulation__coll__graph.png b/doc/rtf/class_parallel_m_c_simulation__coll__graph.png new file mode 100644 index 0000000..2166022 Binary files /dev/null and b/doc/rtf/class_parallel_m_c_simulation__coll__graph.png differ diff --git a/doc/rtf/class_simulable_sequence__inherit__graph.md5 b/doc/rtf/class_simulable_sequence__inherit__graph.md5 new file mode 100644 index 0000000..51f217a --- /dev/null +++ b/doc/rtf/class_simulable_sequence__inherit__graph.md5 @@ -0,0 +1 @@ +93166b1759999132a20819d25a356aa4 \ No newline at end of file diff --git a/doc/rtf/class_simulable_sequence__inherit__graph.png b/doc/rtf/class_simulable_sequence__inherit__graph.png new file mode 100644 index 0000000..ce9fbe7 Binary files /dev/null and b/doc/rtf/class_simulable_sequence__inherit__graph.png differ diff --git a/doc/rtf/class_triangle__coll__graph.md5 b/doc/rtf/class_triangle__coll__graph.md5 new file mode 100644 index 0000000..9de78b9 --- /dev/null +++ b/doc/rtf/class_triangle__coll__graph.md5 @@ -0,0 +1 @@ +754f08c326e2584f4df3b0de5f9ad1ab \ No newline at end of file diff --git a/doc/rtf/class_triangle__coll__graph.png b/doc/rtf/class_triangle__coll__graph.png new file mode 100644 index 0000000..a06cf8d Binary files /dev/null and b/doc/rtf/class_triangle__coll__graph.png differ diff --git a/doc/rtf/class_voxel__coll__graph.md5 b/doc/rtf/class_voxel__coll__graph.md5 new file mode 100644 index 0000000..157c12b --- /dev/null +++ b/doc/rtf/class_voxel__coll__graph.md5 @@ -0,0 +1 @@ +cb68d1a39d0a4fa857ea9165ba62d5a0 \ No newline at end of file diff --git a/doc/rtf/class_voxel__coll__graph.png b/doc/rtf/class_voxel__coll__graph.png new file mode 100644 index 0000000..2eb80aa Binary files /dev/null and b/doc/rtf/class_voxel__coll__graph.png differ diff --git a/doc/rtf/class_walker__coll__graph.md5 b/doc/rtf/class_walker__coll__graph.md5 new file mode 100644 index 0000000..f821a95 --- /dev/null +++ b/doc/rtf/class_walker__coll__graph.md5 @@ -0,0 +1 @@ +b6efca388db9c7ee2a403e6b8741b5a0 \ No newline at end of file diff --git a/doc/rtf/class_walker__coll__graph.png b/doc/rtf/class_walker__coll__graph.png new file mode 100644 index 0000000..895dd17 Binary files /dev/null and b/doc/rtf/class_walker__coll__graph.png differ diff --git a/doc/rtf/dir_68267d1309a1af8e8297ef4c3efbcdba.rtf b/doc/rtf/dir_68267d1309a1af8e8297ef4c3efbcdba.rtf new file mode 100644 index 0000000..c2724de --- /dev/null +++ b/doc/rtf/dir_68267d1309a1af8e8297ef4c3efbcdba.rtf @@ -0,0 +1,91 @@ +{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033 +{\fonttbl {\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} +{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;} +{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;} +} +{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;} +{\stylesheet +{\widctlpar\adjustright \fs20\cgrid \snext0 Normal;} +{\paperw11900\paperh16840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect} +{\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid \sbasedon0 \snext0 heading 1;} +{\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \sbasedon0 \snext0 heading 2;} +{\s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid \sbasedon0 \snext0 heading 3;} +{\s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \sbasedon0 \snext0 heading 4;}{\*\cs10 \additive Default Paragraph Font;} +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \sbasedon0 \snext0 heading 5;}{\*\cs10 \additive Default Paragraph Font;} +{\s15\qc\sb240\sa60\widctlpar\outlinelevel0\adjustright \b\f1\fs32\kerning28\cgrid \sbasedon0 \snext15 Title;} +{\s16\qc\sa60\widctlpar\outlinelevel1\adjustright \f1\cgrid \sbasedon0 \snext16 Subtitle;} +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \sbasedon0 \snext17 BodyText;} +{\s18\widctlpar\fs22\cgrid \sbasedon0 \snext18 DenseText;} +{\s28\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext28 header;} +{\s29\widctlpar\tqc\tx4320\tqr\tx8640\qr\adjustright \fs20\cgrid \sbasedon0 \snext29 footer;} +{\s30\li360\sa60\sb120\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \sbasedon0 \snext30 GroupHeader;} +{\s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext41 Code Example 0;} +{\s41\li360\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext42 Code Example 1;} +{\s42\li720\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext43 Code Example 2;} +{\s43\li1080\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext44 Code Example 3;} +{\s44\li1440\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext45 Code Example 4;} +{\s45\li1800\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext46 Code Example 5;} +{\s46\li2160\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext47 Code Example 6;} +{\s47\li2520\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext48 Code Example 7;} +{\s48\li2880\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext49 Code Example 8;} +{\s49\li3240\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext49 Code Example 9;} +{\s50\li0\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext51 List Continue 0;} +{\s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext52 List Continue 1;} +{\s52\li720\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext53 List Continue 2;} +{\s53\li1080\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext54 List Continue 3;} +{\s54\li1440\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext55 List Continue 4;} +{\s55\li1800\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext56 List Continue 5;} +{\s56\li2160\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext57 List Continue 6;} +{\s57\li2520\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext58 List Continue 7;} +{\s58\li2880\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext59 List Continue 8;} +{\s59\li3240\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext59 List Continue 9;} +{\s60\li0\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext61 DescContinue 0;} +{\s61\li360\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext62 DescContinue 1;} +{\s62\li720\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext63 DescContinue 2;} +{\s63\li1080\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext64 DescContinue 3;} +{\s64\li1440\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext65 DescContinue 4;} +{\s65\li1800\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext66 DescContinue 5;} +{\s66\li2160\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext67 DescContinue 6;} +{\s67\li2520\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext68 DescContinue 7;} +{\s68\li2880\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext69 DescContinue 8;} +{\s69\li3240\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext69 DescContinue 9;} +{\s70\li0\sa30\sb30\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext81 LatexTOC 0;} +{\s71\li360\sa27\sb27\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext82 LatexTOC 1;} +{\s72\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext83 LatexTOC 2;} +{\s73\li1080\sa21\sb21\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext84 LatexTOC 3;} +{\s74\li1440\sa18\sb18\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext85 LatexTOC 4;} +{\s75\li1800\sa15\sb15\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext86 LatexTOC 5;} +{\s76\li2160\sa12\sb12\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext87 LatexTOC 6;} +{\s77\li2520\sa9\sb9\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext88 LatexTOC 7;} +{\s78\li2880\sa6\sb6\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext89 LatexTOC 8;} +{\s79\li3240\sa3\sb3\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext89 LatexTOC 9;} +{\s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext81 \sautoupd List Bullet 0;} +{\s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid \sbasedon0 \snext82 \sautoupd List Bullet 1;} +{\s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid \sbasedon0 \snext83 \sautoupd List Bullet 2;} +{\s83\fi-360\li1440\widctlpar\jclisttab\tx1440{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec }\ls4\adjustright \fs20\cgrid \sbasedon0 \snext84 \sautoupd List Bullet 3;} +{\s84\fi-360\li1800\widctlpar\jclisttab\tx1800{\*\pn \pnlvlbody\ilvl0\ls5\pnrnot0\pndec }\ls5\adjustright \fs20\cgrid \sbasedon0 \snext85 \sautoupd List Bullet 4;} +{\s85\fi-360\li2160\widctlpar\jclisttab\tx2160{\*\pn \pnlvlbody\ilvl0\ls6\pnrnot0\pndec }\ls6\adjustright \fs20\cgrid \sbasedon0 \snext86 \sautoupd List Bullet 5;} +{\s86\fi-360\li2520\widctlpar\jclisttab\tx2520{\*\pn \pnlvlbody\ilvl0\ls7\pnrnot0\pndec }\ls7\adjustright \fs20\cgrid \sbasedon0 \snext87 \sautoupd List Bullet 6;} +{\s87\fi-360\li2880\widctlpar\jclisttab\tx2880{\*\pn \pnlvlbody\ilvl0\ls8\pnrnot0\pndec }\ls8\adjustright \fs20\cgrid \sbasedon0 \snext88 \sautoupd List Bullet 7;} +{\s88\fi-360\li3240\widctlpar\jclisttab\tx3240{\*\pn \pnlvlbody\ilvl0\ls9\pnrnot0\pndec }\ls9\adjustright \fs20\cgrid \sbasedon0 \snext89 \sautoupd List Bullet 8;} +{\s89\fi-360\li3600\widctlpar\jclisttab\tx3600{\*\pn \pnlvlbody\ilvl0\ls10\pnrnot0\pndec }\ls10\adjustright \fs20\cgrid \sbasedon0 \snext89 \sautoupd List Bullet 9;} +{\s90\fi-360\li360\widctlpar\fs20\cgrid \sbasedon0 \snext91 \sautoupd List Enum 0;} +{\s91\fi-360\li720\widctlpar\fs20\cgrid \sbasedon0 \snext92 \sautoupd List Enum 1;} +{\s92\fi-360\li1080\widctlpar\fs20\cgrid \sbasedon0 \snext93 \sautoupd List Enum 2;} +{\s93\fi-360\li1440\widctlpar\fs20\cgrid \sbasedon0 \snext94 \sautoupd List Enum 3;} +{\s94\fi-360\li1800\widctlpar\fs20\cgrid \sbasedon0 \snext95 \sautoupd List Enum 4;} +{\s95\fi-360\li2160\widctlpar\fs20\cgrid \sbasedon0 \snext96 \sautoupd List Enum 5;} +{\s96\fi-360\li2520\widctlpar\fs20\cgrid \sbasedon0 \snext96 \sautoupd List Enum 5;} +{\s97\fi-360\li2880\widctlpar\fs20\cgrid \sbasedon0 \snext98 \sautoupd List Enum 7;} +{\s98\fi-360\li3240\widctlpar\fs20\cgrid \sbasedon0 \snext99 \sautoupd List Enum 8;} +{\s99\fi-360\li3600\widctlpar\fs20\cgrid \sbasedon0 \snext99 \sautoupd List Enum 9;} +} +{\comment begin body} +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +src Directory Reference\par \pard\plain +{\tc\tcl2 \v src Directory Reference} +{\xe \v src Directory Reference} +{\bkmkstart AAAAAAAAUQ} +{\bkmkend AAAAAAAAUQ} +} \ No newline at end of file diff --git a/doc/rtf/refman.rtf b/doc/rtf/refman.rtf new file mode 100644 index 0000000..3ac3b3a --- /dev/null +++ b/doc/rtf/refman.rtf @@ -0,0 +1,8965 @@ +{\rtf1\ansi\ansicpg1252\uc1 \deff0\deflang1033\deflangfe1033 +{\fonttbl {\f0\froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\f1\fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} +{\f2\fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;} +{\f3\froman\fcharset2\fprq2{\*\panose 05050102010706020507}Symbol;} +} +{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0;\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;} +{\stylesheet +{\widctlpar\adjustright \fs20\cgrid \snext0 Normal;} +{\paperw11900\paperh16840\margl1800\margr1800\margt1440\margb1440\gutter0\ltrsect} +{\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid \sbasedon0 \snext0 heading 1;} +{\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid \sbasedon0 \snext0 heading 2;} +{\s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid \sbasedon0 \snext0 heading 3;} +{\s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \sbasedon0 \snext0 heading 4;}{\*\cs10 \additive Default Paragraph Font;} +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \sbasedon0 \snext0 heading 5;}{\*\cs10 \additive Default Paragraph Font;} +{\s15\qc\sb240\sa60\widctlpar\outlinelevel0\adjustright \b\f1\fs32\kerning28\cgrid \sbasedon0 \snext15 Title;} +{\s16\qc\sa60\widctlpar\outlinelevel1\adjustright \f1\cgrid \sbasedon0 \snext16 Subtitle;} +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid \sbasedon0 \snext17 BodyText;} +{\s18\widctlpar\fs22\cgrid \sbasedon0 \snext18 DenseText;} +{\s28\widctlpar\tqc\tx4320\tqr\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext28 header;} +{\s29\widctlpar\tqc\tx4320\tqr\tx8640\qr\adjustright \fs20\cgrid \sbasedon0 \snext29 footer;} +{\s30\li360\sa60\sb120\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \sbasedon0 \snext30 GroupHeader;} +{\s40\li0\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext41 Code Example 0;} +{\s41\li360\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext42 Code Example 1;} +{\s42\li720\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext43 Code Example 2;} +{\s43\li1080\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext44 Code Example 3;} +{\s44\li1440\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext45 Code Example 4;} +{\s45\li1800\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext46 Code Example 5;} +{\s46\li2160\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext47 Code Example 6;} +{\s47\li2520\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext48 Code Example 7;} +{\s48\li2880\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext49 Code Example 8;} +{\s49\li3240\widctlpar\adjustright \shading1000\cbpat8 \f2\fs16\cgrid \sbasedon0 \snext49 Code Example 9;} +{\s50\li0\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext51 List Continue 0;} +{\s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext52 List Continue 1;} +{\s52\li720\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext53 List Continue 2;} +{\s53\li1080\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext54 List Continue 3;} +{\s54\li1440\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext55 List Continue 4;} +{\s55\li1800\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext56 List Continue 5;} +{\s56\li2160\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext57 List Continue 6;} +{\s57\li2520\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext58 List Continue 7;} +{\s58\li2880\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext59 List Continue 8;} +{\s59\li3240\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \sbasedon0 \snext59 List Continue 9;} +{\s60\li0\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext61 DescContinue 0;} +{\s61\li360\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext62 DescContinue 1;} +{\s62\li720\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext63 DescContinue 2;} +{\s63\li1080\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext64 DescContinue 3;} +{\s64\li1440\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext65 DescContinue 4;} +{\s65\li1800\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext66 DescContinue 5;} +{\s66\li2160\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext67 DescContinue 6;} +{\s67\li2520\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext68 DescContinue 7;} +{\s68\li2880\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext69 DescContinue 8;} +{\s69\li3240\widctlpar\ql\adjustright \fs20\cgrid \sbasedon0 \snext69 DescContinue 9;} +{\s70\li0\sa30\sb30\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext81 LatexTOC 0;} +{\s71\li360\sa27\sb27\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext82 LatexTOC 1;} +{\s72\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext83 LatexTOC 2;} +{\s73\li1080\sa21\sb21\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext84 LatexTOC 3;} +{\s74\li1440\sa18\sb18\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext85 LatexTOC 4;} +{\s75\li1800\sa15\sb15\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext86 LatexTOC 5;} +{\s76\li2160\sa12\sb12\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext87 LatexTOC 6;} +{\s77\li2520\sa9\sb9\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext88 LatexTOC 7;} +{\s78\li2880\sa6\sb6\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext89 LatexTOC 8;} +{\s79\li3240\sa3\sb3\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid \sbasedon0 \snext89 LatexTOC 9;} +{\s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid \sbasedon0 \snext81 \sautoupd List Bullet 0;} +{\s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid \sbasedon0 \snext82 \sautoupd List Bullet 1;} +{\s82\fi-360\li1080\widctlpar\jclisttab\tx1080{\*\pn \pnlvlbody\ilvl0\ls3\pnrnot0\pndec }\ls3\adjustright \fs20\cgrid \sbasedon0 \snext83 \sautoupd List Bullet 2;} +{\s83\fi-360\li1440\widctlpar\jclisttab\tx1440{\*\pn \pnlvlbody\ilvl0\ls4\pnrnot0\pndec }\ls4\adjustright \fs20\cgrid \sbasedon0 \snext84 \sautoupd List Bullet 3;} +{\s84\fi-360\li1800\widctlpar\jclisttab\tx1800{\*\pn \pnlvlbody\ilvl0\ls5\pnrnot0\pndec }\ls5\adjustright \fs20\cgrid \sbasedon0 \snext85 \sautoupd List Bullet 4;} +{\s85\fi-360\li2160\widctlpar\jclisttab\tx2160{\*\pn \pnlvlbody\ilvl0\ls6\pnrnot0\pndec }\ls6\adjustright \fs20\cgrid \sbasedon0 \snext86 \sautoupd List Bullet 5;} +{\s86\fi-360\li2520\widctlpar\jclisttab\tx2520{\*\pn \pnlvlbody\ilvl0\ls7\pnrnot0\pndec }\ls7\adjustright \fs20\cgrid \sbasedon0 \snext87 \sautoupd List Bullet 6;} +{\s87\fi-360\li2880\widctlpar\jclisttab\tx2880{\*\pn \pnlvlbody\ilvl0\ls8\pnrnot0\pndec }\ls8\adjustright \fs20\cgrid \sbasedon0 \snext88 \sautoupd List Bullet 7;} +{\s88\fi-360\li3240\widctlpar\jclisttab\tx3240{\*\pn \pnlvlbody\ilvl0\ls9\pnrnot0\pndec }\ls9\adjustright \fs20\cgrid \sbasedon0 \snext89 \sautoupd List Bullet 8;} +{\s89\fi-360\li3600\widctlpar\jclisttab\tx3600{\*\pn \pnlvlbody\ilvl0\ls10\pnrnot0\pndec }\ls10\adjustright \fs20\cgrid \sbasedon0 \snext89 \sautoupd List Bullet 9;} +{\s90\fi-360\li360\widctlpar\fs20\cgrid \sbasedon0 \snext91 \sautoupd List Enum 0;} +{\s91\fi-360\li720\widctlpar\fs20\cgrid \sbasedon0 \snext92 \sautoupd List Enum 1;} +{\s92\fi-360\li1080\widctlpar\fs20\cgrid \sbasedon0 \snext93 \sautoupd List Enum 2;} +{\s93\fi-360\li1440\widctlpar\fs20\cgrid \sbasedon0 \snext94 \sautoupd List Enum 3;} +{\s94\fi-360\li1800\widctlpar\fs20\cgrid \sbasedon0 \snext95 \sautoupd List Enum 4;} +{\s95\fi-360\li2160\widctlpar\fs20\cgrid \sbasedon0 \snext96 \sautoupd List Enum 5;} +{\s96\fi-360\li2520\widctlpar\fs20\cgrid \sbasedon0 \snext96 \sautoupd List Enum 5;} +{\s97\fi-360\li2880\widctlpar\fs20\cgrid \sbasedon0 \snext98 \sautoupd List Enum 7;} +{\s98\fi-360\li3240\widctlpar\fs20\cgrid \sbasedon0 \snext99 \sautoupd List Enum 8;} +{\s99\fi-360\li3600\widctlpar\fs20\cgrid \sbasedon0 \snext99 \sautoupd List Enum 9;} +} +{\info +{\title {\comment MCDC_simulator {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +1.42.14_wf \par +}}MCDC_simulator} +{\comment Generated byDoxgyen. } +{\creatim \yr2021\mo5\dy9\hr5\min23\sec25} +}\pard\plain +\sectd\pgnlcrm +{\footer \s29\widctlpar\tqc\tx4320\tqr\tx8640\qr\adjustright \fs20\cgrid {\chpgn}} +\pard\plain \s16\qc\sa60\widctlpar\outlinelevel1\adjustright \f1\cgrid +\vertalc\qc\par\par\par\par\par\par\par +\pard\plain \s15\qc\sb240\sa60\widctlpar\outlinelevel0\adjustright \b\f1\fs32\kerning28\cgrid +{\field\fldedit {\*\fldinst TITLE \\*MERGEFORMAT}{\fldrslt MCDC_simulator}}\par +\pard\plain \s16\qc\sa60\widctlpar\outlinelevel1\adjustright \f1\cgrid +\par +\par\par\par\par\par\par\par\par\par\par\par\par +\pard\plain \s16\qc\sa60\widctlpar\outlinelevel1\adjustright \f1\cgrid +{\field\fldedit {\*\fldinst AUTHOR \\*MERGEFORMAT}{\fldrslt AUTHOR}}\par +Version 1.42.14_wf\par{\field\fldedit {\*\fldinst CREATEDATE \\*MERGEFORMAT}{\fldrslt Sun May 9 2021 }}\par +\page\page\vertalt +\pard\plain +\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid Table of Contents\par +\pard\plain \par +{\field\fldedit {\*\fldinst TOC \\f \\*MERGEFORMAT}{\fldrslt Table of contents}}\par +\pard\plain +\sect \sbkpage \pgndec \pgnrestart +\sect \sectd \sbknone +{\footer \s29\widctlpar\tqc\tx4320\tqr\tx8640\qr\adjustright \fs20\cgrid {\chpgn}} + +\pard\plain \sect\sbkpage +\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid +Monte Carlo Diffusion and Collision Simulator{\tc \v Monte Carlo Diffusion and Collision Simulator}\par \pard\plain +{\bkmkstart AAAAAAAAUR} +{\bkmkend AAAAAAAAUR} +\par \pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 Static building from sources:} \par} +{\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid {\tc\tcl4 Assuming a bin folder:} \par} +Cretes a folder {\f2 mkdir bin} \par +Compiles all the magic (statically, slowly, but without messy .o)\par +{\f2 g++ -O3 -std=c++11 -lpthread -std=c++0x -pthread -I. main.cpp simulablesequence.cpp vertex.cpp obstacle.cpp collision.cpp scheme.cpp voxel.cpp cylinder.cpp walker.cpp mcsimulation.cpp parallelmcsimulation.cpp trajectory.cpp triangle.cpp parameters.cpp plyobstacle.cpp pgsesequence.cpp dynamicsSimulation.cpp simerrno.cpp collisionsphere.cpp cylindergammadistribution.cpp sentinel.cpp subdivision.cpp gradientwaveform.cpp propagator.cpp -o bin/MC-DC_Simulator} \par +}} + +\pard\plain \sect\sbkpage +\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid +Hierarchical Index\par \pard\plain +{\tc \v Hierarchical Index} +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Class Hierarchy\par \pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid This inheritance list is sorted roughly, but not completely, alphabetically:} +{ +\par +\pard\plain \s71\li360\sa27\sb27\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid +Collision\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAA \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +Collisionsphere\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAR \\*MERGEFORMAT}{\fldrslt pagenum}} +{ +\par +\pard\plain \s72\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid +CylinderCollisionSphere\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABH \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +PLYCollisionSphere\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAALG \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +}\par +Collisionspheren\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAV \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +CylinderGammaDistribution\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABT \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +DynamicsSimulation\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAACG \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +MCSimulation\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEZ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +Obstacle\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAFQ \\*MERGEFORMAT}{\fldrslt pagenum}} +{ +\par +\pard\plain \s72\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid +Cylinder\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAW \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +PLYObstacle\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAALR \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +}\par +ParallelMCSimulation\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAFZ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +Parameter\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGP \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +Parameters\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGQ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +Plane\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKZ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +Propagator\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAMI \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +Scheme\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAMP \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +sentinels::Sentinel\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAATZ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +Sentinels\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAANA \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +SimErrno\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAANB \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +SimulableSequence\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAANV \\*MERGEFORMAT}{\fldrslt pagenum}} +{ +\par +\pard\plain \s72\li720\sa24\sb24\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid +GradientWaveform\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEA \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +PGSESequence\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJZ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +}\par +Subdivision\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAPB \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +Trajectory\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAPK \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +Triangle\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQZ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +Vertex\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAARP \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +Voxel\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAARU \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +Walker\tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAASA \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +} +\pard\plain \sect\sbkpage +\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid +Class Index\par \pard\plain +{\tc \v Class Index} +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Class List\par \pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid Here are the classes, structs, unions and interfaces with brief descriptions:} +{ +\par +\pard\plain \s71\li360\sa27\sb27\widctlpar\tqr\tldot\tx8640\adjustright \fs20\cgrid +{\b {\b Collision} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Collision} Final class =====================================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAA \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Collisionsphere} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAR \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Collisionspheren} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Collision} Final class ============================================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAV \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Cylinder} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Cylinder} {\b Obstacle} Derived Class =============================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAAW \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b CylinderCollisionSphere} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Class to save the cylinderical obstacles that a can collide to a walker })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABH \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b CylinderGammaDistribution} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b CylinderGammaDistribution} Class =============================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAABT \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b DynamicsSimulation} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Dynamic simulation main class =============================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAACG \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b GradientWaveform} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Gradient Wavefroms =============================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEA \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b MCSimulation} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Aplication Main Class ======================================================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEZ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Obstacle} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Obstacle} Base Class ==============================================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAFQ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b ParallelMCSimulation} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Class to handle multiprocessor paralellisation. This class basicly controls and syncronize several initializations of MonteCarlo simulations and add up the results. It's a way of soft paralelization })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAFZ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Parameter} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Basic class to store simulation parameters =============================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGP \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Parameters} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAGQ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b PGSESequence} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAJZ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Plane} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Main class. Implements basic voxel limits and operations. =================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKZ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b PLYCollisionSphere} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAALG \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b PLYObstacle} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +PlyObstacle Derived Class ====================================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAALR \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Propagator} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAMI \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Scheme} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary class to save scheme_files values =============================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAMP \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b sentinels::Sentinel} } \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAATZ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Sentinels} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Collision} Final class ====================================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAANA \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b SimErrno} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Simulation Input and parameter errors handling class =================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAANB \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b SimulableSequence} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +MR Sequence Primary Class =============================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAANV \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Subdivision} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary {\b Subdivision} Class =============================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAPB \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Trajectory} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary class. Handles i/o operation of walker trayectories. ============================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAPK \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Triangle} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary class. Implements trangular barriers. ===================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAAQZ \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Vertex} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary class. Implements basic vertices. ====================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAARP \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Voxel} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +//! Main class. Implements basic voxel limits and operations. Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAARU \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +{\b {\b Walker} ({\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Spin Final class =============================================================/ })} \tab {\field\fldedit {\*\fldinst PAGEREF AAAAAAAASA \\*MERGEFORMAT}{\fldrslt pagenum}} +\par +\par} +\pard\plain \sect\sbkpage +\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid +Class Documentation{\tc \v Class Documentation} +\par \pard\plain +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Collision Class Reference\par \pard\plain +{\tc\tcl2 \v Collision} +{\xe \v Collision} +{\bkmkstart AAAAAAAAAA} +{\bkmkend AAAAAAAAAA} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Collision} Final class =====================================================================/. }}\par +{ +{\f2 #include }}\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Types\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +enum {\b collision_type} \{ {\b hit}, +{\b near}, +{\b null}, +{\b boundary}, +{\b degenerate} + \}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +enum {\b collision_location} \{ {\b inside}, +{\b on_edge}, +{\b on_vertex}, +{\b voxel}, +{\b outside}, +{\b unknown} + \}\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Collision} (double u_, double v_, double t_){\bkmkstart AAAAAAAAAB} +{\bkmkend AAAAAAAAAB} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b ~Collision} (){\bkmkstart AAAAAAAAAC} +{\bkmkend AAAAAAAAAC} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Does nothing. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b doIHaveMorePiorityThan} ({\b Collision} &coll){\bkmkstart AAAAAAAAAD} +{\bkmkend AAAAAAAAAD} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Compares a second collision to determine which one has more priority. The comparison is based on the type of collision and distance. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b computeCollisionLocation} ()\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Computes, based on the the coordinates u,v,t of the collision, the location relative to the triangle. }{ +}\par +}} +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b collision_type} {\b type}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b collision_location} {\b col_location}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b colision_point}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b bounced_direction}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b rn}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b u}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b v}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b t}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b triangle_ind}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b obstacle_ind}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Collision} Final class =====================================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Class to save and handle collisions between walkers and objects. \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 November 2016 } \par} +}Class to save and handle collisions between walkers and objects.\par +This class should handle all the cases where a collision can happened as well as all the operation between collision. \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Enumeration Documentation\par +\pard\plain +{\xe \v collision_location\:Collision} +{\xe \v Collision\:collision_location} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +enum {\b Collision::collision_location}}} +\par +{\bkmkstart AAAAAAAAAE} +{\bkmkend AAAAAAAAAE} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +}}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Only in case of collision (or a very close ending position) this are the cases where the collision can happened. \par +}} +{\xe \v collision_type\:Collision} +{\xe \v Collision\:collision_type} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +enum {\b Collision::collision_type}}} +\par +{\bkmkstart AAAAAAAAAF} +{\bkmkend AAAAAAAAAF} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +}}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +All the possibles cases or situations where a step can end. The next step is performed according to this state \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v computeCollisionLocation\:Collision} +{\xe \v Collision\:computeCollisionLocation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Collision::computeCollisionLocation ()}} +\par +{\bkmkstart AAAAAAAAAG} +{\bkmkend AAAAAAAAAG} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Computes, based on the the coordinates u,v,t of the collision, the location relative to the triangle. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliar function for Triangular barriers \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v bounced_direction\:Collision} +{\xe \v Collision\:bounced_direction} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Collision::bounced_direction}} +\par +{\bkmkstart AAAAAAAAAH} +{\bkmkend AAAAAAAAAH} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Save the bounced direction for a given obstacle \par +}} +{\xe \v col_location\:Collision} +{\xe \v Collision\:col_location} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b collision_location} Collision::col_location}} +\par +{\bkmkstart AAAAAAAAAI} +{\bkmkend AAAAAAAAAI} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Save the colocation of the collision over the object \par +}} +{\xe \v colision_point\:Collision} +{\xe \v Collision\:colision_point} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Collision::colision_point}} +\par +{\bkmkstart AAAAAAAAAJ} +{\bkmkend AAAAAAAAAJ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Saves the position of colision \par +}} +{\xe \v obstacle_ind\:Collision} +{\xe \v Collision\:obstacle_ind} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int Collision::obstacle_ind}} +\par +{\bkmkstart AAAAAAAAAK} +{\bkmkend AAAAAAAAAK} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +In case of a generic obstacle saves the obstacle index. \par +}} +{\xe \v rn\:Collision} +{\xe \v Collision\:rn} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Collision::rn}} +\par +{\bkmkstart AAAAAAAAAL} +{\bkmkend AAAAAAAAAL} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +saves the local orietnation between the wall and the particle \par +}} +{\xe \v t\:Collision} +{\xe \v Collision\:t} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Collision::t}} +\par +{\bkmkstart AAAAAAAAAM} +{\bkmkend AAAAAAAAAM} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +signed, collision distance \par +}} +{\xe \v triangle_ind\:Collision} +{\xe \v Collision\:triangle_ind} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int Collision::triangle_ind}} +\par +{\bkmkstart AAAAAAAAAN} +{\bkmkend AAAAAAAAAN} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +In case of a PLY obstacle saves the triangle index. t collison distance \par +}} +{\xe \v type\:Collision} +{\xe \v Collision\:type} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b collision_type} Collision::type}} +\par +{\bkmkstart AAAAAAAAAO} +{\bkmkend AAAAAAAAAO} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Saves the type of collsion (if any) \par +}} +{\xe \v u\:Collision} +{\xe \v Collision\:u} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Collision::u}} +\par +{\bkmkstart AAAAAAAAAP} +{\bkmkend AAAAAAAAAP} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +u position in baricentric coordinates \par +}} +{\xe \v v\:Collision} +{\xe \v Collision\:v} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Collision::v}} +\par +{\bkmkstart AAAAAAAAAQ} +{\bkmkend AAAAAAAAAQ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +v position in baricentric coordinates \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/collision.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/collision.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Collisionsphere Class Reference\par \pard\plain +{\tc\tcl2 \v Collisionsphere} +{\xe \v Collisionsphere} +{\bkmkstart AAAAAAAAAR} +{\bkmkend AAAAAAAAAR} +Inheritance diagram for Collisionsphere:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_collisionsphere__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +float {\b big_sphere_distance}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +float {\b small_sphere_distance}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b list_size}{\bkmkstart AAAAAAAAAS} +{\bkmkend AAAAAAAAAS} +\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v big_sphere_distance\:Collisionsphere} +{\xe \v Collisionsphere\:big_sphere_distance} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +float Collisionsphere::big_sphere_distance}} +\par +{\bkmkstart AAAAAAAAAT} +{\bkmkend AAAAAAAAAT} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Size of the big (outer) collision sphere \par +}} +{\xe \v small_sphere_distance\:Collisionsphere} +{\xe \v Collisionsphere\:small_sphere_distance} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +float Collisionsphere::small_sphere_distance}} +\par +{\bkmkstart AAAAAAAAAU} +{\bkmkend AAAAAAAAAU} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Size of the small (inner) collision sphere \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following file:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/collisionsphere.h\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Collisionspheren Class Reference\par \pard\plain +{\tc\tcl2 \v Collisionspheren} +{\xe \v Collisionspheren} +{\bkmkstart AAAAAAAAAV} +{\bkmkend AAAAAAAAAV} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Collision} Final class ============================================================================/. }}\par +{ +{\f2 #include }}\par +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Collision} Final class ============================================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Class to implement spherical bounding boxes for the WALKER mean diffusion. This class provides methods in order to create and update spherical bounding boxes used to compute the collisions. \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 February 2017 } \par} +}Father class. this class provides methods in order to create and update spherical bounding box used to compute the collisions. The implementation is based on two collision spheres. The inner one (small) and the (outer). The fist saves the objects where th particle MAY collide in a given time, While the second saves the full set of obstacles where the particle can possibly collide, i.e. that are physically achievable for the walker to collide. \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following file:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/collisionsphere.h\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Cylinder Class Reference\par \pard\plain +{\tc\tcl2 \v Cylinder} +{\xe \v Cylinder} +{\bkmkstart AAAAAAAAAW} +{\bkmkend AAAAAAAAAW} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Cylinder} {\b Obstacle} Derived Class =============================================================/. }}\par +{ +{\f2 #include }}\par +Inheritance diagram for Cylinder:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_cylinder__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +Collaboration diagram for Cylinder:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_cylinder__coll__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Cylinder} (){\bkmkstart AAAAAAAAAX} +{\bkmkend AAAAAAAAAX} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Default constructor. Does nothing. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b Cylinder} (Eigen::Vector3d P_, Eigen::Vector3d Q_, double radius_, double scale=1)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Initialize everything. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b Cylinder} ({\b Cylinder} const &cyl)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Initialize everything. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b checkCollision} ({\b Walker} &walker, Eigen::Vector3d &step, double &step_lenght, {\b Collision} &colision)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Basic collision function. Returns the if there was any collision on against the obstacle. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b minDistance} ({\b Walker} &w)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Returns the minimum distance from the walker to the cylinder. Used to set the reachable cylinders that a given walker can reach. }{ +}\par +}} +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +Eigen::Vector3d {\b P}{\bkmkstart AAAAAAAAAY} +{\bkmkend AAAAAAAAAY} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b Q}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b D}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b radius}\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Static Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +static int {\b count} = 0{\bkmkstart AAAAAAAAAZ} +{\bkmkend AAAAAAAAAZ} +\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Cylinder} {\b Obstacle} Derived Class =============================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Cylinder} class derived from an {\b Obstacle}. Defines infinite long cylinders in the direction set by P,Q. \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid November 2016 {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 1.42 } \par} +}}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Constructor & Destructor Documentation\par +\pard\plain +{\xe \v Cylinder\:Cylinder} +{\xe \v Cylinder\:Cylinder} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Cylinder::Cylinder (Eigen::Vector3d {\i P_}, Eigen::Vector3d {\i Q_}, double {\i radius_}, double {\i scale} = {\f2 1}){\f2 [inline]}}} +\par +{\bkmkstart AAAAAAAABA} +{\bkmkend AAAAAAAABA} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Initialize everything. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i P_} \cell }{{\b Cylinder} origin \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i Q_} \cell }{cylinder direction. \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i radius_} \cell }{cylinder's radius \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i scale} \cell }{scale factor for the values passed. Useful when reading a file. \cell } +{\row } +} +}} +{\xe \v Cylinder\:Cylinder} +{\xe \v Cylinder\:Cylinder} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Cylinder::Cylinder ({\b Cylinder} const & {\i cyl})}} +\par +{\bkmkstart AAAAAAAABB} +{\bkmkend AAAAAAAABB} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Initialize everything. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i P_} \cell }{{\b Cylinder} origin \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i Q_} \cell }{cylinder direction. \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i radius_} \cell }{cylinder's radius \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i scale} \cell }{scale factor for the values passed. Useful when reading a file. \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v checkCollision\:Cylinder} +{\xe \v Cylinder\:checkCollision} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Cylinder::checkCollision ({\b Walker} & {\i walker}, Eigen::Vector3d & {\i step}, double & {\i step_lenght}, {\b Collision} & {\i colision})}} +\par +{\bkmkstart AAAAAAAABC} +{\bkmkend AAAAAAAABC} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Basic collision function. Returns the if there was any collision on against the obstacle. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i walker,{\b Walker}} \cell }{instance in the simulation. \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i 3d} \cell }{step. Is assumed to be normalized. \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i step_length,length} \cell }{used as the maximum step collision distance. \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i collision,{\b Collision}} \cell }{instance to save the collision (if any) details. \cell } +{\row } +} +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid true only if there was a Collision::hit status. \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Collision}. \par +}}} +{\xe \v minDistance\:Cylinder} +{\xe \v Cylinder\:minDistance} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Cylinder::minDistance ({\b Walker} & {\i w})}} +\par +{\bkmkstart AAAAAAAABD} +{\bkmkend AAAAAAAABD} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Returns the minimum distance from the walker to the cylinder. Used to set the reachable cylinders that a given walker can reach. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i walker,{\b Walker}} \cell }{instance in the simulation. \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v D\:Cylinder} +{\xe \v Cylinder\:D} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Cylinder::D}} +\par +{\bkmkstart AAAAAAAABE} +{\bkmkend AAAAAAAABE} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Pre-computed and normalized P - Q vector \par +}} +{\xe \v Q\:Cylinder} +{\xe \v Cylinder\:Q} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Cylinder::Q}} +\par +{\bkmkstart AAAAAAAABF} +{\bkmkend AAAAAAAABF} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Cilinder Axis reference Points, P should be the "center" \par +}} +{\xe \v radius\:Cylinder} +{\xe \v Cylinder\:radius} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Cylinder::radius}} +\par +{\bkmkstart AAAAAAAABG} +{\bkmkend AAAAAAAABG} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Radius of the cylinder \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/cylinder.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/cylinder.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +CylinderCollisionSphere Class Reference\par \pard\plain +{\tc\tcl2 \v CylinderCollisionSphere} +{\xe \v CylinderCollisionSphere} +{\bkmkstart AAAAAAAABH} +{\bkmkend AAAAAAAABH} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Class to save the cylinderical obstacles that a can collide to a walker. }}\par +{ +{\f2 #include }}\par +Inheritance diagram for CylinderCollisionSphere:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_cylinder_collision_sphere__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +Collaboration diagram for CylinderCollisionSphere:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_cylinder_collision_sphere__coll__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b CylinderCollisionSphere} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b popFromSmallSphere} (unsigned i){\bkmkstart AAAAAAAABI} +{\bkmkend AAAAAAAABI} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +This function receives a index from the collision list and moves the value to the last position of the list. then decrease the inner sphere end index. This way this index is no longer considered inner collision list. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b pushToSmallSphere} (unsigned i){\bkmkstart AAAAAAAABJ} +{\bkmkend AAAAAAAABJ} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +This function receives a index from the collision list and moves the value to the last position of the list. then increase the inner sphere end index. This way this index is now included in the inner collision list. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b popFromBigSphere} (unsigned i){\bkmkstart AAAAAAAABK} +{\bkmkend AAAAAAAABK} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +This function receives a index from the collision list and moves the value to the last position of the list. Then decrease the inner sphere end index. This way this index is now excluded in the outer collision list. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b pushToBigSphere} (unsigned i){\bkmkstart AAAAAAAABL} +{\bkmkend AAAAAAAABL} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +This function receives a index from the collision list and moves the value to the last position of the list. Then increase the inner sphere end index. This way this index is now included in the outer collision list. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b setBigSphereSize} (float size)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b setSmallSphereSize} (float size)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b push_index} (unsigned int element)\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b small_sphere_list_end}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b big_sphere_list_end}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +std::vector< unsigned > * {\b collision_list}{\bkmkstart AAAAAAAABM} +{\bkmkend AAAAAAAABM} +\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Class to save the cylinderical obstacles that a can collide to a walker. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Class to save the PLY mehses and the subset of triangles that a can collide to a walker. \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Constructor & Destructor Documentation\par +\pard\plain +{\xe \v CylinderCollisionSphere\:CylinderCollisionSphere} +{\xe \v CylinderCollisionSphere\:CylinderCollisionSphere} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +CylinderCollisionSphere::CylinderCollisionSphere ()}} +\par +{\bkmkstart AAAAAAAABN} +{\bkmkend AAAAAAAABN} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +}}\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b CylinderGammaDistribution} (unsigned, double, double, double, Eigen::Vector3d &, Eigen::Vector3d &, float {\b min_radius})\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Initialize everything. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b displayGammaDistribution} (){\bkmkstart AAAAAAAABU} +{\bkmkend AAAAAAAABU} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Shows a small histogram of the gamma distribution. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b createGammaSubstrate} (){\bkmkstart AAAAAAAABV} +{\bkmkend AAAAAAAABV} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Samples and constructs a Gamma distribution. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b printSubstrate} (std::ostream &out)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Prints the cylinders positions in a file or output stream. }{ +}\par +}} +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b num_cylinders}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b alpha}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b beta}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b icvf}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +float {\b min_radius}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b min_limits}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b max_limits}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< {\b Cylinder} > {\b cylinders}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b CylinderGammaDistribution} Class =============================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Class to construct a substrate taken from a Gamma distribution of radiis placed in a single voxel structure. \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid february 2017 {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 0.2 } \par} +}}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Constructor & Destructor Documentation\par +\pard\plain +{\xe \v CylinderGammaDistribution\:CylinderGammaDistribution} +{\xe \v CylinderGammaDistribution\:CylinderGammaDistribution} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +CylinderGammaDistribution::CylinderGammaDistribution (unsigned {\i num_cyl}, double {\i a}, double {\i b}, double {\i icvf_}, Eigen::Vector3d & {\i min_l}, Eigen::Vector3d & {\i max_l}, float {\i min_radius} = {\f2 0.01})}} +\par +{\bkmkstart AAAAAAAABW} +{\bkmkend AAAAAAAABW} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Initialize everything. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i P_} \cell }{{\b Cylinder} origin \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i Q_} \cell }{cylinder direction. \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i radius_} \cell }{cylinder's radius \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i scale} \cell }{scale factor for the values passed. Useful when reading a file. \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v printSubstrate\:CylinderGammaDistribution} +{\xe \v CylinderGammaDistribution\:printSubstrate} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void CylinderGammaDistribution::printSubstrate (std::ostream & {\i out})}} +\par +{\bkmkstart AAAAAAAABX} +{\bkmkend AAAAAAAABX} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Prints the cylinders positions in a file or output stream. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i out} \cell }{ostream where to write the info. \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v alpha\:CylinderGammaDistribution} +{\xe \v CylinderGammaDistribution\:alpha} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double CylinderGammaDistribution::alpha}} +\par +{\bkmkstart AAAAAAAABY} +{\bkmkend AAAAAAAABY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +alpha coefficient of the Gamma distribution \par +}} +{\xe \v beta\:CylinderGammaDistribution} +{\xe \v CylinderGammaDistribution\:beta} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double CylinderGammaDistribution::beta}} +\par +{\bkmkstart AAAAAAAABZ} +{\bkmkend AAAAAAAABZ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +beta coefficient of the gamma distribution \par +}} +{\xe \v cylinders\:CylinderGammaDistribution} +{\xe \v CylinderGammaDistribution\:cylinders} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector<{\b Cylinder}> CylinderGammaDistribution::cylinders}} +\par +{\bkmkstart AAAAAAAACA} +{\bkmkend AAAAAAAACA} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Cylinder} vector \par +}} +{\xe \v icvf\:CylinderGammaDistribution} +{\xe \v CylinderGammaDistribution\:icvf} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double CylinderGammaDistribution::icvf}} +\par +{\bkmkstart AAAAAAAACB} +{\bkmkend AAAAAAAACB} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Achieved intra-celular volum fraction in the substrate \par +}} +{\xe \v max_limits\:CylinderGammaDistribution} +{\xe \v CylinderGammaDistribution\:max_limits} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d CylinderGammaDistribution::max_limits}} +\par +{\bkmkstart AAAAAAAACC} +{\bkmkend AAAAAAAACC} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +voxel max limits (if any) \par +}} +{\xe \v min_limits\:CylinderGammaDistribution} +{\xe \v CylinderGammaDistribution\:min_limits} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d CylinderGammaDistribution::min_limits}} +\par +{\bkmkstart AAAAAAAACD} +{\bkmkend AAAAAAAACD} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +voxel min limits (if any) (bottom left corner) \par +}} +{\xe \v min_radius\:CylinderGammaDistribution} +{\xe \v CylinderGammaDistribution\:min_radius} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +float CylinderGammaDistribution::min_radius}} +\par +{\bkmkstart AAAAAAAACE} +{\bkmkend AAAAAAAACE} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Minimum radius to be sampled from the gamma distribution \par +}} +{\xe \v num_cylinders\:CylinderGammaDistribution} +{\xe \v CylinderGammaDistribution\:num_cylinders} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned CylinderGammaDistribution::num_cylinders}} +\par +{\bkmkstart AAAAAAAACF} +{\bkmkend AAAAAAAACF} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +number of cylnders fit inside the substrate \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/cylindergammadistribution.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/cylindergammadistribution.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +DynamicsSimulation Class Reference\par \pard\plain +{\tc\tcl2 \v DynamicsSimulation} +{\xe \v DynamicsSimulation} +{\bkmkstart AAAAAAAACG} +{\bkmkend AAAAAAAACG} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Dynamic simulation main class =============================================================/. }}\par +{ +{\f2 #include }}\par +Collaboration diagram for DynamicsSimulation:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_dynamics_simulation__coll__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b DynamicsSimulation} ()\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Default constructor. Initialize everything with 0's and NULL states, object indexes are set to -1. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b DynamicsSimulation} (std::string conf_file)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b DynamicsSimulation} ({\b Parameters} ¶ms_)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b ~DynamicsSimulation} (){\bkmkstart AAAAAAAACH} +{\bkmkend AAAAAAAACH} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Does nothing. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b startSimulation} ({\b SimulableSequence} *dataSynth=nullptr)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Starts the dynamics simulation and, if a PGSE sequence is given, computes the DW signal. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b readConfigurationFile} (std::string conf_file_path)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Reads all the parameters listed in the param conf_file and stores them in the /t params object. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b setDuration} (const double &duration)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Sets the simulation duration in milliseconds, this should be synchronized w/r the Time Echo. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setWalkersNum} (const unsigned &N){\bkmkstart AAAAAAAACI} +{\bkmkend AAAAAAAACI} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setStepsNum} (const unsigned &T){\bkmkstart AAAAAAAACJ} +{\bkmkend AAAAAAAACJ} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b isInIntra} (Eigen::Vector3d &position, int &cyl_id, int &ply_id, double distance_to_be_intra_ply=1e-6)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +return true if the position is inside any of the obstacles. Only obstacles with a defined "inside region" can be considered. {\b Voxel} periodicity is not considered }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b writePropagator} (std::string path){\bkmkstart AAAAAAAACK} +{\bkmkend AAAAAAAACK} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Writes to disk the final propagator matrix. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b isInsideCylinders} (Eigen::Vector3d &position, int &cyl_id, double distance_to_be_inside=1e-6){\bkmkstart AAAAAAAACL} +{\bkmkend AAAAAAAACL} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b isInsidePLY} (Eigen::Vector3d &position, int &ply_id, double distance_to_be_inside=1e-6){\bkmkstart AAAAAAAACM} +{\bkmkend AAAAAAAACM} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Static Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +static std::string {\b secondsToMinutes} (double){\bkmkstart AAAAAAAACN} +{\bkmkend AAAAAAAACN} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b Parameters} {\b params}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b Walker} {\b walker}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b Trajectory} {\b trajectory}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::mt19937 {\b mt}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b step_lenght}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b second_passed}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b max_simulation_time}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b completed}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b ini_pos_file}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b ini_pos_file_ini_index}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b id}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b sentinels::Sentinel} {\b sentinela}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< {\b PLYObstacle} > * {\b plyObstacles_list}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< {\b Cylinder} > * {\b cylinders_list}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< unsigned > {\b cylinders_deque}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::vector< unsigned > > {\b ply_deque}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< {\b Voxel} > {\b voxels_list}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b Propagator} {\b propagator}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b icvf}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b intra_tries}{\bkmkstart AAAAAAAACO} +{\bkmkend AAAAAAAACO} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b total_tries}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +Eigen::Vector3d {\b step}{\bkmkstart AAAAAAAACP} +{\bkmkend AAAAAAAACP} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b time_step}{\bkmkstart AAAAAAAACQ} +{\bkmkend AAAAAAAACQ} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b time_dt}{\bkmkstart AAAAAAAACR} +{\bkmkend AAAAAAAACR} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b last_time_dt}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +std::ifstream {\b iniPos}{\bkmkstart AAAAAAAACS} +{\bkmkend AAAAAAAACS} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +time_t {\b start}{\bkmkstart AAAAAAAACT} +{\bkmkend AAAAAAAACT} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +time_t {\b now}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b print_expected_time}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b num_simulated_walkers}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b aux_walker_index}{\bkmkstart AAAAAAAACU} +{\bkmkend AAAAAAAACU} +\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Dynamic simulation main class =============================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Main implementation of the particles dynamics. Handles collisions and bouncing \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid November 2016 {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 1.42 } \par} +}Main class, implements the particles dynamics. Handles collisions and bouncing. \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Constructor & Destructor Documentation\par +\pard\plain +{\xe \v DynamicsSimulation\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:DynamicsSimulation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +DynamicsSimulation::DynamicsSimulation ()}} +\par +{\bkmkstart AAAAAAAACV} +{\bkmkend AAAAAAAACV} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Default constructor. Initialize everything with 0's and NULL states, object indexes are set to -1. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b DynamicsSimulation} implementation \par +}} +{\xe \v DynamicsSimulation\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:DynamicsSimulation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +DynamicsSimulation::DynamicsSimulation (std::string {\i conf_file})}} +\par +{\bkmkstart AAAAAAAACW} +{\bkmkend AAAAAAAACW} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i configuration} \cell }{file \cell } +{\row } +} +}} +{\xe \v DynamicsSimulation\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:DynamicsSimulation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +DynamicsSimulation::DynamicsSimulation ({\b Parameters} & {\i params_})}} +\par +{\bkmkstart AAAAAAAACX} +{\bkmkend AAAAAAAACX} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i {\b Parameter}} \cell }{instance \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v isInIntra\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:isInIntra} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +DynamicsSimulation::isInIntra (Eigen::Vector3d & {\i position}, int & {\i cyl_id}, int & {\i ply_id}, double {\i distance_to_be_intra_ply} = {\f2 1e-6})}} +\par +{\bkmkstart AAAAAAAACY} +{\bkmkend AAAAAAAACY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +return true if the position is inside any of the obstacles. Only obstacles with a defined "inside region" can be considered. {\b Voxel} periodicity is not considered }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i position} \cell }{3d position on space. \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i error} \cell }{minimum distance to be considered "outside" de obstacle (barrier thickness) \cell } +{\row } +} +}} +{\xe \v readConfigurationFile\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:readConfigurationFile} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +DynamicsSimulation::readConfigurationFile (std::string {\i conf_file_path})}} +\par +{\bkmkstart AAAAAAAACZ} +{\bkmkend AAAAAAAACZ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Reads all the parameters listed in the param conf_file and stores them in the /t params object. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i conf_file_path} \cell }{\cell } +{\row } +} +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid void\par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i conf_file_path} \cell }{paremeters file path. \cell } +{\row } +} +}} +{\xe \v setDuration\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:setDuration} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +DynamicsSimulation::setDuration (const double & {\i duration})}} +\par +{\bkmkstart AAAAAAAADA} +{\bkmkend AAAAAAAADA} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Sets the simulation duration in milliseconds, this should be synchronized w/r the Time Echo. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i duration} \cell }{simulation duration. \cell } +{\row } +} +}} +{\xe \v startSimulation\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:startSimulation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +DynamicsSimulation::startSimulation ({\b SimulableSequence} * {\i dataSynth} = {\f2 nullptr})}} +\par +{\bkmkstart AAAAAAAADB} +{\bkmkend AAAAAAAADB} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Starts the dynamics simulation and, if a PGSE sequence is given, computes the DW signal. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i dataSynth} \cell }{optional paramter. If this parameter is not given, no signal is computed. \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v completed\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:completed} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double DynamicsSimulation::completed}} +\par +{\bkmkstart AAAAAAAADC} +{\bkmkend AAAAAAAADC} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliar variable to save the milestone of percentage of completed walkers \par +}} +{\xe \v cylinders_deque\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:cylinders_deque} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector DynamicsSimulation::cylinders_deque}} +\par +{\bkmkstart AAAAAAAADD} +{\bkmkend AAAAAAAADD} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +deque with the indexes of the cylinders (used for optmization) \par +}} +{\xe \v cylinders_list\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:cylinders_list} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector<{\b Cylinder}>* DynamicsSimulation::cylinders_list}} +\par +{\bkmkstart AAAAAAAADE} +{\bkmkend AAAAAAAADE} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +vector with all the isntances of "Cylider" obstacles \par +}} +{\xe \v icvf\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:icvf} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double DynamicsSimulation::icvf}} +\par +{\bkmkstart AAAAAAAADF} +{\bkmkend AAAAAAAADF} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Stores the ICVF (1 - Intra-Extra) if needed \par +}} +{\xe \v id\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:id} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int DynamicsSimulation::id}} +\par +{\bkmkstart AAAAAAAADG} +{\bkmkend AAAAAAAADG} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Unique id for the dynamic simulation \par +}} +{\xe \v ini_pos_file\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:ini_pos_file} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::string DynamicsSimulation::ini_pos_file}} +\par +{\bkmkstart AAAAAAAADH} +{\bkmkend AAAAAAAADH} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +walkers intitial position file \par +}} +{\xe \v ini_pos_file_ini_index\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:ini_pos_file_ini_index} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned DynamicsSimulation::ini_pos_file_ini_index}} +\par +{\bkmkstart AAAAAAAADI} +{\bkmkend AAAAAAAADI} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +starting position in the ini walker position file (multicore support) \par +}} +{\xe \v last_time_dt\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:last_time_dt} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double DynamicsSimulation::last_time_dt}} +\par +{\bkmkstart AAAAAAAADJ} +{\bkmkend AAAAAAAADJ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +simulation time steps auxiliar values \par +}} +{\xe \v max_simulation_time\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:max_simulation_time} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double DynamicsSimulation::max_simulation_time}} +\par +{\bkmkstart AAAAAAAADK} +{\bkmkend AAAAAAAADK} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Maximum simulation time if not passed we carry all the particles \par +}} +{\xe \v mt\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:mt} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::mt19937 DynamicsSimulation::mt}} +\par +{\bkmkstart AAAAAAAADL} +{\bkmkend AAAAAAAADL} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +rnd, random generator instance \par +}} +{\xe \v now\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:now} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +time_t DynamicsSimulation::now}} +\par +{\bkmkstart AAAAAAAADM} +{\bkmkend AAAAAAAADM} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliar Variable for time recording and estimation for time. \par +}} +{\xe \v num_simulated_walkers\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:num_simulated_walkers} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned DynamicsSimulation::num_simulated_walkers}} +\par +{\bkmkstart AAAAAAAADN} +{\bkmkend AAAAAAAADN} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Saves the final number of simulated walkers (time limit) \par +}} +{\xe \v params\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:params} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b Parameters} DynamicsSimulation::params}} +\par +{\bkmkstart AAAAAAAADO} +{\bkmkend AAAAAAAADO} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Parameters} handler instance \par +}} +{\xe \v ply_deque\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:ply_deque} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector > DynamicsSimulation::ply_deque}} +\par +{\bkmkstart AAAAAAAADP} +{\bkmkend AAAAAAAADP} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +deque with the indexes of the triangles of all ply's (used for opt) \par +}} +{\xe \v plyObstacles_list\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:plyObstacles_list} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector<{\b PLYObstacle}>* DynamicsSimulation::plyObstacles_list}} +\par +{\bkmkstart AAAAAAAADQ} +{\bkmkend AAAAAAAADQ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +pointer to a vector with all the instances of PLYObstacles \par +}} +{\xe \v print_expected_time\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:print_expected_time} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool DynamicsSimulation::print_expected_time}} +\par +{\bkmkstart AAAAAAAADR} +{\bkmkend AAAAAAAADR} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliar flag for time recording and stimation for time. \par +}} +{\xe \v propagator\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:propagator} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b Propagator} DynamicsSimulation::propagator}} +\par +{\bkmkstart AAAAAAAADS} +{\bkmkend AAAAAAAADS} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Propagator} object to compute and save the particles MSD \par +}} +{\xe \v second_passed\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:second_passed} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double DynamicsSimulation::second_passed}} +\par +{\bkmkstart AAAAAAAADT} +{\bkmkend AAAAAAAADT} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Simulation total time in seconds \par +}} +{\xe \v sentinela\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:sentinela} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b sentinels::Sentinel} DynamicsSimulation::sentinela}} +\par +{\bkmkstart AAAAAAAADU} +{\bkmkend AAAAAAAADU} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Sentinel initialization to encoutner error in the simulation \par +}} +{\xe \v step_lenght\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:step_lenght} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double DynamicsSimulation::step_lenght}} +\par +{\bkmkstart AAAAAAAADV} +{\bkmkend AAAAAAAADV} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +l, step length \par +}} +{\xe \v total_tries\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:total_tries} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned DynamicsSimulation::total_tries}} +\par +{\bkmkstart AAAAAAAADW} +{\bkmkend AAAAAAAADW} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Helper variables to compute the estimated ICVF \par +}} +{\xe \v trajectory\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:trajectory} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b Trajectory} DynamicsSimulation::trajectory}} +\par +{\bkmkstart AAAAAAAADX} +{\bkmkend AAAAAAAADX} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Trajectory} instance. Handles i/o operations \par +}} +{\xe \v voxels_list\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:voxels_list} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector<{\b Voxel}> DynamicsSimulation::voxels_list}} +\par +{\bkmkstart AAAAAAAADY} +{\bkmkend AAAAAAAADY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +vector with all the voxels to be simulated (if any) \par +}} +{\xe \v walker\:DynamicsSimulation} +{\xe \v DynamicsSimulation\:walker} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b Walker} DynamicsSimulation::walker}} +\par +{\bkmkstart AAAAAAAADZ} +{\bkmkend AAAAAAAADZ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Single walker to diffuse \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/dynamicsSimulation.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/dynamicsSimulation.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +GradientWaveform Class Reference\par \pard\plain +{\tc\tcl2 \v GradientWaveform} +{\xe \v GradientWaveform} +{\bkmkstart AAAAAAAAEA} +{\bkmkend AAAAAAAAEA} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Gradient Wavefroms =============================================================/. }}\par +{ +{\f2 #include }}\par +Inheritance diagram for GradientWaveform:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_gradient_waveform__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +Collaboration diagram for GradientWaveform:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_gradient_waveform__coll__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b GradientWaveform} (){\bkmkstart AAAAAAAAEB} +{\bkmkend AAAAAAAAEB} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Default constructor, set default NULL values. Not to be used. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b GradientWaveform} ({\b Scheme} &scheme){\bkmkstart AAAAAAAAEC} +{\bkmkend AAAAAAAAEC} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Main constructor. Takes a pre-loaded {\b Scheme} file. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b GradientWaveform} ({\b Scheme} &scheme_, const char *traj_file_name){\bkmkstart AAAAAAAAED} +{\bkmkend AAAAAAAAED} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Main constructor. Takes a pre-loaded {\b Scheme} file and a traj file name. if this argument is passed a traj file is should be written. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b getNumericalbValue} (unsigned)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getDWISignal} (){\bkmkstart AAAAAAAAEE} +{\bkmkend AAAAAAAAEE} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Computes de DW signal from a trajfile. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b readSchemeFile} (){\bkmkstart AAAAAAAAEF} +{\bkmkend AAAAAAAAEF} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +reads the waveform }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getInterpolatedGradImpulse} (uint rep_index, double dt_sim, double t_sim_last, Eigen::Vector3d &Gdt){\bkmkstart AAAAAAAAEG} +{\bkmkend AAAAAAAAEG} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +For using with the adt array. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b update_phase_shift} (double time_step, Eigen::Matrix3Xd {\b trajectory})\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b update_phase_shift} (double {\b dt}, double dt_last, {\b Walker} walker)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b update_DWI_signal} ({\b Walker} &walker){\bkmkstart AAAAAAAAEH} +{\bkmkend AAAAAAAAEH} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Updates the DWI signal using the cumulated phase shift. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setNumberOfSteps} (unsigned {\b T}){\bkmkstart AAAAAAAAEI} +{\bkmkend AAAAAAAAEI} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Set the number of time steps if they are known. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b getGradImpulse} (int i, double t, double tLast, Eigen::Vector3d &Gdt)\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b TE}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +uint {\b T}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b dyn_duration}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b wave_bins}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b wave_duration}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b dt}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b scale_from_stu}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::vector< float > > {\b waveform}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b Trajectory} {\b trajectory}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Gradient Wavefroms =============================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Implementation of the the General Wavefroms.\par +Main implementation of the gradient waveforms protocol \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid November 2017 {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 1.42 } \par} +}}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v getGradImpulse\:GradientWaveform} +{\xe \v GradientWaveform\:getGradImpulse} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void GradientWaveform::getGradImpulse (int {\i i}, double {\i t}, double {\i tLast}, Eigen::Vector3d & {\i Gdt}){\f2 [virtual]}}} +\par +{\bkmkstart AAAAAAAAEJ} +{\bkmkend AAAAAAAAEJ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i i} \cell }{{\b Walker} index \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i t} \cell }{current time step (in milisenconds) \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i tLast} \cell }{last time step (in milisenconds) \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i Gdt} \cell }{vector to compute de G*dt impulse \cell } +{\row } +} +}{ +Implements {\b SimulableSequence} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEK \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par +} +{\xe \v getNumericalbValue\:GradientWaveform} +{\xe \v GradientWaveform\:getNumericalbValue} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double GradientWaveform::getNumericalbValue (unsigned )}} +\par +{\bkmkstart AAAAAAAAEL} +{\bkmkend AAAAAAAAEL} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Warning:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid not implemented yet. \par +}}} +{\xe \v update_phase_shift\:GradientWaveform} +{\xe \v GradientWaveform\:update_phase_shift} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void GradientWaveform::update_phase_shift (double {\i time_step}, Eigen::Matrix3Xd {\i trajectory}){\f2 [virtual]}}} +\par +{\bkmkstart AAAAAAAAEM} +{\bkmkend AAAAAAAAEM} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i i} \cell }{updated the phase shift over a whole trajectory \cell } +{\row } +} +}{ +Implements {\b SimulableSequence} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEN \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par +} +{\xe \v update_phase_shift\:GradientWaveform} +{\xe \v GradientWaveform\:update_phase_shift} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void GradientWaveform::update_phase_shift (double {\i dt}, double {\i dt_last}, {\b Walker} {\i walker}){\f2 [virtual]}}} +\par +{\bkmkstart AAAAAAAAEO} +{\bkmkend AAAAAAAAEO} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i i} \cell }{updated walker \cell } +{\row } +} +}{ +Implements {\b SimulableSequence} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEP \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v dt\:GradientWaveform} +{\xe \v GradientWaveform\:dt} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double GradientWaveform::dt}} +\par +{\bkmkstart AAAAAAAAEQ} +{\bkmkend AAAAAAAAEQ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +individual time steps (miliseconds) of the wave \par +}} +{\xe \v dyn_duration\:GradientWaveform} +{\xe \v GradientWaveform\:dyn_duration} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double GradientWaveform::dyn_duration}} +\par +{\bkmkstart AAAAAAAAER} +{\bkmkend AAAAAAAAER} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +simulation duration (miliseconds) \par +}} +{\xe \v scale_from_stu\:GradientWaveform} +{\xe \v GradientWaveform\:scale_from_stu} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool GradientWaveform::scale_from_stu}} +\par +{\bkmkstart AAAAAAAAES} +{\bkmkend AAAAAAAAES} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +True if the input is in standar units \par +}} +{\xe \v T\:GradientWaveform} +{\xe \v GradientWaveform\:T} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +uint GradientWaveform::T}} +\par +{\bkmkstart AAAAAAAAET} +{\bkmkend AAAAAAAAET} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +num bins (time steps) \par +}} +{\xe \v TE\:GradientWaveform} +{\xe \v GradientWaveform\:TE} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double GradientWaveform::TE}} +\par +{\bkmkstart AAAAAAAAEU} +{\bkmkend AAAAAAAAEU} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Time Echo. \par +}} +{\xe \v trajectory\:GradientWaveform} +{\xe \v GradientWaveform\:trajectory} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b Trajectory} GradientWaveform::trajectory}} +\par +{\bkmkstart AAAAAAAAEV} +{\bkmkend AAAAAAAAEV} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +If the signal is computed from a .trajfile \par +}} +{\xe \v wave_bins\:GradientWaveform} +{\xe \v GradientWaveform\:wave_bins} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int GradientWaveform::wave_bins}} +\par +{\bkmkstart AAAAAAAAEW} +{\bkmkend AAAAAAAAEW} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Wave discretization \par +}} +{\xe \v wave_duration\:GradientWaveform} +{\xe \v GradientWaveform\:wave_duration} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double GradientWaveform::wave_duration}} +\par +{\bkmkstart AAAAAAAAEX} +{\bkmkend AAAAAAAAEX} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Wave duration (should be less qeual than dyn_dur.) \par +}} +{\xe \v waveform\:GradientWaveform} +{\xe \v GradientWaveform\:waveform} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector< std::vector > GradientWaveform::waveform}} +\par +{\bkmkstart AAAAAAAAEY} +{\bkmkend AAAAAAAAEY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Defined waveforms \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/gradientwaveform.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/gradientwaveform.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +MCSimulation Class Reference\par \pard\plain +{\tc\tcl2 \v MCSimulation} +{\xe \v MCSimulation} +{\bkmkstart AAAAAAAAEZ} +{\bkmkend AAAAAAAAEZ} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Aplication Main Class ======================================================================================/. }}\par +{ +{\f2 #include }}\par +Collaboration diagram for MCSimulation:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_m_c_simulation__coll__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b MCSimulation} ()\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Default constructor. Intialize everything with 0's and NULL states, object indexes are set to -1. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b MCSimulation} (std::string config_file){\bkmkstart AAAAAAAAFA} +{\bkmkend AAAAAAAAFA} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b MCSimulation} ({\b Parameters} ¶ms_){\bkmkstart AAAAAAAAFB} +{\bkmkend AAAAAAAAFB} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b ~MCSimulation} (){\bkmkstart AAAAAAAAFC} +{\bkmkend AAAAAAAAFC} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Main destructor. Frees dynamicly allocated memory instances. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b startSimulation} ()\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Warp function. Calls the dynamicEngine's native {\b DynamicsSimulation::startSimulation} function. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b getExpectedFreeeDecay} (unsigned i){\bkmkstart AAAAAAAAFD} +{\bkmkend AAAAAAAAFD} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b iniObstacles} ()\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b id}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b DynamicsSimulation} * {\b dynamicsEngine}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b Scheme} {\b scheme}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b Parameters} {\b params}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b SimulableSequence} * {\b dataSynth}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::vector< float > > {\b ini_walker_positions}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< {\b PLYObstacle} > * {\b plyObstacles_list}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< {\b Cylinder} > * {\b cylinders_list}\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Static Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static int {\b count} =0\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Aplication Main Class ======================================================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Main implementation class. Incorporates the particle's dynamics and the data synthesis. \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid November 2016 {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 1.44.00 } \par} +}Main implementation class. Incorporates the particle's dynamics and the data synthesis. \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Constructor & Destructor Documentation\par +\pard\plain +{\xe \v MCSimulation\:MCSimulation} +{\xe \v MCSimulation\:MCSimulation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +MCSimulation::MCSimulation ()}} +\par +{\bkmkstart AAAAAAAAFE} +{\bkmkend AAAAAAAAFE} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Default constructor. Intialize everything with 0's and NULL states, object indexes are set to -1. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Secondary constructor.\par +Main constructor.\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i config_file} \cell }{.conf file name with the full set of experiments parameters.\cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i params_} \cell }{preloaded simulation parameters. \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v iniObstacles\:MCSimulation} +{\xe \v MCSimulation\:iniObstacles} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void MCSimulation::iniObstacles ()}} +\par +{\bkmkstart AAAAAAAAFF} +{\bkmkend AAAAAAAAFF} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Adds all the obstacles defined in the confiuration files. \par +}} +{\xe \v startSimulation\:MCSimulation} +{\xe \v MCSimulation\:startSimulation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +MCSimulation::startSimulation ()}} +\par +{\bkmkstart AAAAAAAAFG} +{\bkmkend AAAAAAAAFG} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Warp function. Calls the dynamicEngine's native {\b DynamicsSimulation::startSimulation} function. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid :{\b DynamicsSimulation}:. \par +}}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v count\:MCSimulation} +{\xe \v MCSimulation\:count} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int MCSimulation::count =0{\f2 [static]}}} +\par +{\bkmkstart AAAAAAAAFH} +{\bkmkend AAAAAAAAFH} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +count of \par +}} +{\xe \v cylinders_list\:MCSimulation} +{\xe \v MCSimulation\:cylinders_list} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector<{\b Cylinder}>* MCSimulation::cylinders_list}} +\par +{\bkmkstart AAAAAAAAFI} +{\bkmkend AAAAAAAAFI} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +pointer to a vector with all the instances of Cylinders \par +}} +{\xe \v dataSynth\:MCSimulation} +{\xe \v MCSimulation\:dataSynth} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b SimulableSequence}* MCSimulation::dataSynth}} +\par +{\bkmkstart AAAAAAAAFJ} +{\bkmkend AAAAAAAAFJ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Simuleable sequence instance, PGSE and General Wavefroms only \par +}} +{\xe \v dynamicsEngine\:MCSimulation} +{\xe \v MCSimulation\:dynamicsEngine} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b DynamicsSimulation}* MCSimulation::dynamicsEngine}} +\par +{\bkmkstart AAAAAAAAFK} +{\bkmkend AAAAAAAAFK} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Instance for the particle dynamics \par +}} +{\xe \v id\:MCSimulation} +{\xe \v MCSimulation\:id} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int MCSimulation::id}} +\par +{\bkmkstart AAAAAAAAFL} +{\bkmkend AAAAAAAAFL} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Unique id of the simulation \par +}} +{\xe \v ini_walker_positions\:MCSimulation} +{\xe \v MCSimulation\:ini_walker_positions} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector > MCSimulation::ini_walker_positions}} +\par +{\bkmkstart AAAAAAAAFM} +{\bkmkend AAAAAAAAFM} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +patch for regular sampling in a subdivision \par +}} +{\xe \v params\:MCSimulation} +{\xe \v MCSimulation\:params} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b Parameters} MCSimulation::params}} +\par +{\bkmkstart AAAAAAAAFN} +{\bkmkend AAAAAAAAFN} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Parameters} instance1 \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid :{\b Parameters}: \par +}}} +{\xe \v plyObstacles_list\:MCSimulation} +{\xe \v MCSimulation\:plyObstacles_list} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector<{\b PLYObstacle}>* MCSimulation::plyObstacles_list}} +\par +{\bkmkstart AAAAAAAAFO} +{\bkmkend AAAAAAAAFO} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +pointer to a vector with all the instances of PLYObstacles \par +}} +{\xe \v scheme\:MCSimulation} +{\xe \v MCSimulation\:scheme} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b Scheme} MCSimulation::scheme}} +\par +{\bkmkstart AAAAAAAAFP} +{\bkmkend AAAAAAAAFP} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Scheme} file, only PGSE in camino format is supported in 0.2 \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/mcsimulation.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/mcsimulation.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Obstacle Class Reference\par \pard\plain +{\tc\tcl2 \v Obstacle} +{\xe \v Obstacle} +{\bkmkstart AAAAAAAAFQ} +{\bkmkend AAAAAAAAFQ} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Obstacle} Base Class ==============================================================================/. }}\par +{ +{\f2 #include }}\par +Inheritance diagram for Obstacle:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_obstacle__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Obstacle} (){\bkmkstart AAAAAAAAFR} +{\bkmkend AAAAAAAAFR} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Default constructor. Does nothing. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b checkCollision} ({\b Walker} &walker, Eigen::Array3d &step, const double &step_lenght, {\b Collision} &colision)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Basic collision function. Returns the if there was any collision on against the obstacle. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b elasticBounceAgainsPlane} (Eigen::Vector3d &ray_origin, Eigen::Vector3d &normal, double &t, Eigen::Vector3d &step){\bkmkstart AAAAAAAAFS} +{\bkmkend AAAAAAAAFS} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b minDistance} ({\b Walker} &w)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Returns the minimum distance of collision. }{ +}\par +}} +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b id}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b count_perc_crossings}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b percolation}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b T2}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Obstacle} Base Class ==============================================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Father class to define the base of any other obstacle (wall or substrate) \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid November 2016 {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 1.42 } \par} +}}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v checkCollision\:Obstacle} +{\xe \v Obstacle\:checkCollision} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Obstacle::checkCollision ({\b Walker} & {\i walker}, Eigen::Array3d & {\i step}, const double & {\i step_lenght}, {\b Collision} & {\i colision})}} +\par +{\bkmkstart AAAAAAAAFT} +{\bkmkend AAAAAAAAFT} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Basic collision function. Returns the if there was any collision on against the obstacle. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i walker,{\b Walker}} \cell }{instance in the simulation. \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i 3d} \cell }{step. Is assumed to be normalized. \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i step_lenght,length} \cell }{used as the maximum step collision distance. \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i colilsion,{\b Collision}} \cell }{instance to save the collision (if any) details. \cell } +{\row } +} +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid true only if there was a Collision::hit status. \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid {\b Collision}. \par +}}} +{\xe \v minDistance\:Obstacle} +{\xe \v Obstacle\:minDistance} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Obstacle::minDistance ({\b Walker} & {\i w})}} +\par +{\bkmkstart AAAAAAAAFU} +{\bkmkend AAAAAAAAFU} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Returns the minimum distance of collision. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i walker} \cell }{to find the (closest) distance. \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v count_perc_crossings\:Obstacle} +{\xe \v Obstacle\:count_perc_crossings} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int Obstacle::count_perc_crossings}} +\par +{\bkmkstart AAAAAAAAFV} +{\bkmkend AAAAAAAAFV} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliar value to count the number of percolatin crossings in a simulation \par +}} +{\xe \v id\:Obstacle} +{\xe \v Obstacle\:id} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int Obstacle::id}} +\par +{\bkmkstart AAAAAAAAFW} +{\bkmkend AAAAAAAAFW} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Unique id of the simulation \par +}} +{\xe \v percolation\:Obstacle} +{\xe \v Obstacle\:percolation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Obstacle::percolation}} +\par +{\bkmkstart AAAAAAAAFX} +{\bkmkend AAAAAAAAFX} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Percolation value between 0 and 1. \par +}} +{\xe \v T2\:Obstacle} +{\xe \v Obstacle\:T2} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Obstacle::T2}} +\par +{\bkmkstart AAAAAAAAFY} +{\bkmkend AAAAAAAAFY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +T2 decay, not used by default \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/obstacle.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/obstacle.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +ParallelMCSimulation Class Reference\par \pard\plain +{\tc\tcl2 \v ParallelMCSimulation} +{\xe \v ParallelMCSimulation} +{\bkmkstart AAAAAAAAFZ} +{\bkmkend AAAAAAAAFZ} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Class to handle multiprocessor paralellisation. This class basicly controls and syncronize several initializations of MonteCarlo simulations and add up the results. It's a way of soft paralelization. }}\par +{ +{\f2 #include }}\par +Collaboration diagram for ParallelMCSimulation:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_parallel_m_c_simulation__coll__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b ParallelMCSimulation} (std::string config_file)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Main constructor. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b ParallelMCSimulation} ({\b Parameters} &{\b params})\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Constructor. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b startSimulation} ()\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Warp function. Calls the {\b MCSimulation}'s native function for all the instances. }{ +}\par +}} +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b Parameters} {\b params}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b mean_second_passed}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b total_sim_particles}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b stuck_count}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b illegal_count}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b icvf}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b aprox_volumen}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< {\b MCSimulation} * > {\b simulations}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::thread > {\b sim_threads}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< {\b PLYObstacle} > {\b plyObstacles_list}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< {\b Cylinder} > {\b cylinders_list}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< Eigen::Vector3f > {\b total_ini_walker_pos}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Class to handle multiprocessor paralellisation. This class basicly controls and syncronize several initializations of MonteCarlo simulations and add up the results. It's a way of soft paralelization. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Implementation of the PGSE protocol.\par +==============================================================================/\par +Class to handle multiprocessor paralellisation \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid November 2016 {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} + \par +}}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Constructor & Destructor Documentation\par +\pard\plain +{\xe \v ParallelMCSimulation\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:ParallelMCSimulation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +ParallelMCSimulation::ParallelMCSimulation (std::string {\i config_file})}} +\par +{\bkmkstart AAAAAAAAGA} +{\bkmkend AAAAAAAAGA} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Main constructor. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i config_file} \cell }{.conf file name with the full set of experiments parameters. \cell } +{\row } +} +}} +{\xe \v ParallelMCSimulation\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:ParallelMCSimulation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +ParallelMCSimulation::ParallelMCSimulation ({\b Parameters} & {\i params})}} +\par +{\bkmkstart AAAAAAAAGB} +{\bkmkend AAAAAAAAGB} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Constructor. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i parameters} \cell }{of the simulation. Read form a conf file or given by the user. \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v startSimulation\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:startSimulation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +ParallelMCSimulation::startSimulation ()}} +\par +{\bkmkstart AAAAAAAAGC} +{\bkmkend AAAAAAAAGC} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Warp function. Calls the {\b MCSimulation}'s native function for all the instances. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid :{\b MCSimulation}:. \par +}}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v aprox_volumen\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:aprox_volumen} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double ParallelMCSimulation::aprox_volumen}} +\par +{\bkmkstart AAAAAAAAGD} +{\bkmkend AAAAAAAAGD} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Stores the volumen based on ICVF and the voxel size \par +}} +{\xe \v cylinders_list\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:cylinders_list} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector<{\b Cylinder}> ParallelMCSimulation::cylinders_list}} +\par +{\bkmkstart AAAAAAAAGE} +{\bkmkend AAAAAAAAGE} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +vector with all the instances of cylinders \par +}} +{\xe \v icvf\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:icvf} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double ParallelMCSimulation::icvf}} +\par +{\bkmkstart AAAAAAAAGF} +{\bkmkend AAAAAAAAGF} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Stores the ICVF based on the particles sampling \par +}} +{\xe \v illegal_count\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:illegal_count} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned ParallelMCSimulation::illegal_count}} +\par +{\bkmkstart AAAAAAAAGG} +{\bkmkend AAAAAAAAGG} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Counts the number of particles that attempt to cross \par +}} +{\xe \v mean_second_passed\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:mean_second_passed} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double ParallelMCSimulation::mean_second_passed}} +\par +{\bkmkstart AAAAAAAAGH} +{\bkmkend AAAAAAAAGH} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Simualation total time in seconds \par +}} +{\xe \v params\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:params} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b Parameters} ParallelMCSimulation::params}} +\par +{\bkmkstart AAAAAAAAGI} +{\bkmkend AAAAAAAAGI} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Parameters} instance \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +See also:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid :{\b Parameters}: \par +}}} +{\xe \v plyObstacles_list\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:plyObstacles_list} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector<{\b PLYObstacle}> ParallelMCSimulation::plyObstacles_list}} +\par +{\bkmkstart AAAAAAAAGJ} +{\bkmkend AAAAAAAAGJ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +vector with all the instances of PLYObstacles \par +}} +{\xe \v sim_threads\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:sim_threads} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector ParallelMCSimulation::sim_threads}} +\par +{\bkmkstart AAAAAAAAGK} +{\bkmkend AAAAAAAAGK} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Number of threads (instances and processors) to be used \par +}} +{\xe \v simulations\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:simulations} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector<{\b MCSimulation}*> ParallelMCSimulation::simulations}} +\par +{\bkmkstart AAAAAAAAGL} +{\bkmkend AAAAAAAAGL} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +vector of pointers to {\b MCSimulation} instances \par +}} +{\xe \v stuck_count\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:stuck_count} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned ParallelMCSimulation::stuck_count}} +\par +{\bkmkstart AAAAAAAAGM} +{\bkmkend AAAAAAAAGM} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Counts the number of particles stuck in the simulations \par +}} +{\xe \v total_ini_walker_pos\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:total_ini_walker_pos} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector ParallelMCSimulation::total_ini_walker_pos}} +\par +{\bkmkstart AAAAAAAAGN} +{\bkmkend AAAAAAAAGN} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Number of threads (instances and processors) to be used \par +}} +{\xe \v total_sim_particles\:ParallelMCSimulation} +{\xe \v ParallelMCSimulation\:total_sim_particles} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned ParallelMCSimulation::total_sim_particles}} +\par +{\bkmkstart AAAAAAAAGO} +{\bkmkend AAAAAAAAGO} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Total number of simulated particles \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/parallelmcsimulation.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/parallelmcsimulation.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Parameter Class Reference\par \pard\plain +{\tc\tcl2 \v Parameter} +{\xe \v Parameter} +{\bkmkstart AAAAAAAAGP} +{\bkmkend AAAAAAAAGP} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Basic class to store simulation parameters =============================================================/. }}\par +{ +{\f2 #include }}\par +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Basic class to store simulation parameters =============================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Basic class to store and handle all the possible simulation parameters. \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid November 2016 {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 1.43 } \par} +}Class used to hold and operate all the user and simulation parameters. This is the main class to comunicate between instances of the simulations and derived classes. So, in a way, it's an interface for the comunication between component classes in the simulation. \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following file:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/parameters.h\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Parameters Class Reference\par \pard\plain +{\tc\tcl2 \v Parameters} +{\xe \v Parameters} +{\bkmkstart AAAAAAAAGQ} +{\bkmkend AAAAAAAAGQ} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Parameters} (){\bkmkstart AAAAAAAAGR} +{\bkmkend AAAAAAAAGR} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Default constructor. Sets all the parameters to default and NULL values. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b readSchemeFile} (std::string conf_file)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Reads all the parameters from a scheme file in the correct format the function scales them if necessary. The parameters are passed by listing, first, the parameter name, followed by the value. The supported parameters are: number of walkers (N), number of steps (T), duration (duration), PGSE scheme file (scheme_file), min voxles limits (min limits), max voxel limits (max_limits), diffusivity (diffusivity), index name for the trajectory and output values (out_traj_file_index), initial walker position file (ini_walkers_file), write a txt traj flag and header (write_text), write binary traj file and header, write_bin, flag to scale the values from estandar unit (scale_from_stu), random seed (seed). }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setNumWalkers} (unsigned N){\bkmkstart AAAAAAAAGS} +{\bkmkend AAAAAAAAGS} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b setNumSteps} (unsigned T)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +set the number of steps in the simulation. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b setDiffusivity} (double Diff)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +set the simulation diffusivity. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b setSimDuration} (double duration)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +sets the simulation duration. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setWriteTrajFlag} (bool {\b write_bin}){\bkmkstart AAAAAAAAGT} +{\bkmkend AAAAAAAAGT} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setWriteTextFlag} (bool write_txt_){\bkmkstart AAAAAAAAGU} +{\bkmkend AAAAAAAAGU} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b setMinLimits} (Eigen::Vector3d min_limits_)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +set the bottom left corner of the voxel to be simulated. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b setMaxLimits} (Eigen::Vector3d max_limits_)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +set the bottom left corner of the voxel to be simulated. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b setTrajFileName} (std::string traj_file_)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Set the prefix of the name for the traj file (txt and .traj) }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b setOutputBaseFileName} (std::string output_base_name_)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Set the prefix of the name for all the outputs in the simulation. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b iniWalkersFileName} (std::string ini_walkers_file_)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b setSchemeFileName} (std::string scheme_file_)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Sets the scheme file name to be used for the data synthesis. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b getNumWalkers} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b getNumSteps} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b getDiffusivity} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b getWriteTrajFlag} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b getWriteTextFlag} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b getMinLimits} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b getMaxLimits} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b getTrajFileName} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b getOutputBaseFileName} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +std::string {\b getIniWalkersFileName} (){\bkmkstart AAAAAAAAGV} +{\bkmkend AAAAAAAAGV} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b getSchemeFileName} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b addSubdivisions} (){\bkmkstart AAAAAAAAGW} +{\bkmkend AAAAAAAAGW} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Static Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +static int {\b str_dist} (std::string s, std::string t){\bkmkstart AAAAAAAAGX} +{\bkmkend AAAAAAAAGX} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b num_walkers}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b num_steps}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b diffusivity}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b sim_duration}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b write_traj}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b write_txt}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b write_bin}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b scale_from_stu}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b save_phase_shift}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +long {\b seed}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b verbatim}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b traj_file}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b output_base_name}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b ini_walkers_file}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b ini_walkers_file_count}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b ini_walker_flag}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b scheme_file}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b min_limits}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b max_limits}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::string > {\b cylinders_files}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::string > {\b PLY_files}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< double > {\b PLY_scales}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< double > {\b PLY_percolation}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< float > {\b ini_delta_pos}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b num_proc}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::pair< Eigen::Vector3d, Eigen::Vector3d > > {\b voxels_list}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< Eigen::Vector3f > {\b prop_dirs}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< unsigned > {\b record_pos_times}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< unsigned > {\b record_phase_times}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< unsigned > {\b record_prop_times}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b hex_packing}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b hex_packing_radius}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b hex_packing_separation}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b gamma_packing}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b gamma_output_conf}{\bkmkstart AAAAAAAAGY} +{\bkmkend AAAAAAAAGY} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b gamma_packing_alpha}{\bkmkstart AAAAAAAAGZ} +{\bkmkend AAAAAAAAGZ} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b gamma_packing_beta}{\bkmkstart AAAAAAAAHA} +{\bkmkend AAAAAAAAHA} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b gamma_icvf}{\bkmkstart AAAAAAAAHB} +{\bkmkend AAAAAAAAHB} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b gamma_output_configuration}{\bkmkstart AAAAAAAAHC} +{\bkmkend AAAAAAAAHC} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b gamma_num_cylinders}{\bkmkstart AAAAAAAAHD} +{\bkmkend AAAAAAAAHD} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +float {\b min_cyl_radii}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b subdivision_flag} = false\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b number_subdivisions} = 0\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b subdivisions_file} = ""\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< {\b Subdivision} > {\b subdivisions}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b obstacle_permeability} = 0\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b collision_sphere_distance} = 0\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b max_simulation_time} = 0\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b log_phase_shift} = false\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b log_opp} = false\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b discard_stucks} = true\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b discard_illegals} = true\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b log_propagator} = false\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b min_sampling_area}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b max_sampling_area}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b custom_sampling_area}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b computeVolume}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b separate_signals}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b img_signal}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v getDiffusivity\:Parameters} +{\xe \v Parameters\:getDiffusivity} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::getDiffusivity ()}} +\par +{\bkmkstart AAAAAAAAHE} +{\bkmkend AAAAAAAAHE} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid Diffusivity \par +}}} +{\xe \v getMaxLimits\:Parameters} +{\xe \v Parameters\:getMaxLimits} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::getMaxLimits ()}} +\par +{\bkmkstart AAAAAAAAHF} +{\bkmkend AAAAAAAAHF} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid voxel max limits (right top corner) \par +}}} +{\xe \v getMinLimits\:Parameters} +{\xe \v Parameters\:getMinLimits} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::getMinLimits ()}} +\par +{\bkmkstart AAAAAAAAHG} +{\bkmkend AAAAAAAAHG} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid voxel min limits (left bottom corner) \par +}}} +{\xe \v getNumSteps\:Parameters} +{\xe \v Parameters\:getNumSteps} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::getNumSteps ()}} +\par +{\bkmkstart AAAAAAAAHH} +{\bkmkend AAAAAAAAHH} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid Number of Steps \par +}}} +{\xe \v getNumWalkers\:Parameters} +{\xe \v Parameters\:getNumWalkers} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::getNumWalkers ()}} +\par +{\bkmkstart AAAAAAAAHI} +{\bkmkend AAAAAAAAHI} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid Number of walkers N \par +}}} +{\xe \v getOutputBaseFileName\:Parameters} +{\xe \v Parameters\:getOutputBaseFileName} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::getOutputBaseFileName ()}} +\par +{\bkmkstart AAAAAAAAHJ} +{\bkmkend AAAAAAAAHJ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid Output prefix \par +}}} +{\xe \v getSchemeFileName\:Parameters} +{\xe \v Parameters\:getSchemeFileName} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::getSchemeFileName ()}} +\par +{\bkmkstart AAAAAAAAHK} +{\bkmkend AAAAAAAAHK} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid name of the scheme file name used (PGSE) \par +}}} +{\xe \v getTrajFileName\:Parameters} +{\xe \v Parameters\:getTrajFileName} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::getTrajFileName ()}} +\par +{\bkmkstart AAAAAAAAHL} +{\bkmkend AAAAAAAAHL} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid trajectory prefix \par +}}} +{\xe \v getWriteTextFlag\:Parameters} +{\xe \v Parameters\:getWriteTextFlag} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::getWriteTextFlag ()}} +\par +{\bkmkstart AAAAAAAAHM} +{\bkmkend AAAAAAAAHM} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid flag of the text write traj \par +}}} +{\xe \v getWriteTrajFlag\:Parameters} +{\xe \v Parameters\:getWriteTrajFlag} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::getWriteTrajFlag ()}} +\par +{\bkmkstart AAAAAAAAHN} +{\bkmkend AAAAAAAAHN} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid flag of the binary traj file writer \par +}}} +{\xe \v iniWalkersFileName\:Parameters} +{\xe \v Parameters\:iniWalkersFileName} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::iniWalkersFileName (std::string {\i ini_walkers_file_})}} +\par +{\bkmkstart AAAAAAAAHO} +{\bkmkend AAAAAAAAHO} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid initial position walkers file name \par +}}} +{\xe \v readSchemeFile\:Parameters} +{\xe \v Parameters\:readSchemeFile} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::readSchemeFile (std::string {\i conf_file})}} +\par +{\bkmkstart AAAAAAAAHP} +{\bkmkend AAAAAAAAHP} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Reads all the parameters from a scheme file in the correct format the function scales them if necessary. The parameters are passed by listing, first, the parameter name, followed by the value. The supported parameters are: number of walkers (N), number of steps (T), duration (duration), PGSE scheme file (scheme_file), min voxles limits (min limits), max voxel limits (max_limits), diffusivity (diffusivity), index name for the trajectory and output values (out_traj_file_index), initial walker position file (ini_walkers_file), write a txt traj flag and header (write_text), write binary traj file and header, write_bin, flag to scale the values from estandar unit (scale_from_stu), random seed (seed). }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i conf_file} \cell }{\cell } +{\row } +} +}} +{\xe \v setDiffusivity\:Parameters} +{\xe \v Parameters\:setDiffusivity} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::setDiffusivity (double {\i Diff})}} +\par +{\bkmkstart AAAAAAAAHQ} +{\bkmkend AAAAAAAAHQ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +set the simulation diffusivity. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i Diff} \cell }{diffusivity value. \cell } +{\row } +} +}} +{\xe \v setMaxLimits\:Parameters} +{\xe \v Parameters\:setMaxLimits} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::setMaxLimits (Eigen::Vector3d {\i max_limits_})}} +\par +{\bkmkstart AAAAAAAAHR} +{\bkmkend AAAAAAAAHR} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +set the bottom left corner of the voxel to be simulated. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i max_limits_} \cell }{vector with the maximum voxel limits (bottom right corner). \cell } +{\row } +} +}} +{\xe \v setMinLimits\:Parameters} +{\xe \v Parameters\:setMinLimits} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::setMinLimits (Eigen::Vector3d {\i min_limits_})}} +\par +{\bkmkstart AAAAAAAAHS} +{\bkmkend AAAAAAAAHS} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +set the bottom left corner of the voxel to be simulated. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i min_limits_} \cell }{vector with the minimum voxel limits (bottom left corner). \cell } +{\row } +} +}} +{\xe \v setNumSteps\:Parameters} +{\xe \v Parameters\:setNumSteps} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::setNumSteps (unsigned {\i T})}} +\par +{\bkmkstart AAAAAAAAHT} +{\bkmkend AAAAAAAAHT} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +set the number of steps in the simulation. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i T} \cell }{number of steps \cell } +{\row } +} +}} +{\xe \v setOutputBaseFileName\:Parameters} +{\xe \v Parameters\:setOutputBaseFileName} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::setOutputBaseFileName (std::string {\i output_base_name_})}} +\par +{\bkmkstart AAAAAAAAHU} +{\bkmkend AAAAAAAAHU} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Set the prefix of the name for all the outputs in the simulation. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i output_base_name} \cell }{prefix for the outputs \cell } +{\row } +} +}} +{\xe \v setSchemeFileName\:Parameters} +{\xe \v Parameters\:setSchemeFileName} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::setSchemeFileName (std::string {\i scheme_file_})}} +\par +{\bkmkstart AAAAAAAAHV} +{\bkmkend AAAAAAAAHV} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Sets the scheme file name to be used for the data synthesis. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i scheme_file_} \cell }{scheme (PGSE )file name. \cell } +{\row } +} +}} +{\xe \v setSimDuration\:Parameters} +{\xe \v Parameters\:setSimDuration} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::setSimDuration (double {\i duration})}} +\par +{\bkmkstart AAAAAAAAHW} +{\bkmkend AAAAAAAAHW} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +sets the simulation duration. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i duration} \cell }{simulation duration. \cell } +{\row } +} +}} +{\xe \v setTrajFileName\:Parameters} +{\xe \v Parameters\:setTrajFileName} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Parameters::setTrajFileName (std::string {\i traj_file_})}} +\par +{\bkmkstart AAAAAAAAHX} +{\bkmkend AAAAAAAAHX} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Set the prefix of the name for the traj file (txt and .traj) }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i traj_file_} \cell }{prefix of the traj file. \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v collision_sphere_distance\:Parameters} +{\xe \v Parameters\:collision_sphere_distance} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Parameters::collision_sphere_distance = 0}} +\par +{\bkmkstart AAAAAAAAHY} +{\bkmkend AAAAAAAAHY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Custiom size for the collision sphere \par +}} +{\xe \v computeVolume\:Parameters} +{\xe \v Parameters\:computeVolume} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::computeVolume}} +\par +{\bkmkstart AAAAAAAAHZ} +{\bkmkend AAAAAAAAHZ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Forces the volumen computation (slower) even without custom sampling \par +}} +{\xe \v custom_sampling_area\:Parameters} +{\xe \v Parameters\:custom_sampling_area} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::custom_sampling_area}} +\par +{\bkmkstart AAAAAAAAIA} +{\bkmkend AAAAAAAAIA} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +True if a custom sampling area is defined (voxel for default) \par +}} +{\xe \v cylinders_files\:Parameters} +{\xe \v Parameters\:cylinders_files} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector Parameters::cylinders_files}} +\par +{\bkmkstart AAAAAAAAIB} +{\bkmkend AAAAAAAAIB} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +file paths with a list of cilinders obstacles \par +}} +{\xe \v diffusivity\:Parameters} +{\xe \v Parameters\:diffusivity} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Parameters::diffusivity}} +\par +{\bkmkstart AAAAAAAAIC} +{\bkmkend AAAAAAAAIC} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +D, diffusivity constant \par +}} +{\xe \v discard_illegals\:Parameters} +{\xe \v Parameters\:discard_illegals} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::discard_illegals = true}} +\par +{\bkmkstart AAAAAAAAID} +{\bkmkend AAAAAAAAID} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag, true to discard possible illegal crossings, Trump by default. \par +}} +{\xe \v discard_stucks\:Parameters} +{\xe \v Parameters\:discard_stucks} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::discard_stucks = true}} +\par +{\bkmkstart AAAAAAAAIE} +{\bkmkend AAAAAAAAIE} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag, true to discard posible stuck particles (max bouncing reached) \par +}} +{\xe \v gamma_packing\:Parameters} +{\xe \v Parameters\:gamma_packing} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::gamma_packing}} +\par +{\bkmkstart AAAAAAAAIF} +{\bkmkend AAAAAAAAIF} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag, true if a gamma distribution of cylinders will be initialized \par +}} +{\xe \v hex_packing\:Parameters} +{\xe \v Parameters\:hex_packing} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::hex_packing}} +\par +{\bkmkstart AAAAAAAAIG} +{\bkmkend AAAAAAAAIG} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag, true if an haxagonal packing should be used \par +}} +{\xe \v hex_packing_radius\:Parameters} +{\xe \v Parameters\:hex_packing_radius} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Parameters::hex_packing_radius}} +\par +{\bkmkstart AAAAAAAAIH} +{\bkmkend AAAAAAAAIH} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +float, constant radius for the cylinders \par +}} +{\xe \v hex_packing_separation\:Parameters} +{\xe \v Parameters\:hex_packing_separation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Parameters::hex_packing_separation}} +\par +{\bkmkstart AAAAAAAAII} +{\bkmkend AAAAAAAAII} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +float, separation distance betwen cylinders (separation > 2*radius) \par +}} +{\xe \v img_signal\:Parameters} +{\xe \v Parameters\:img_signal} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::img_signal}} +\par +{\bkmkstart AAAAAAAAIJ} +{\bkmkend AAAAAAAAIJ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +True to save the img part of the dwi signal (false by default) \par +}} +{\xe \v ini_delta_pos\:Parameters} +{\xe \v Parameters\:ini_delta_pos} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector Parameters::ini_delta_pos}} +\par +{\bkmkstart AAAAAAAAIK} +{\bkmkend AAAAAAAAIK} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Delta position for the walkers \par +}} +{\xe \v ini_walker_flag\:Parameters} +{\xe \v Parameters\:ini_walker_flag} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::string Parameters::ini_walker_flag}} +\par +{\bkmkstart AAAAAAAAIL} +{\bkmkend AAAAAAAAIL} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +where to initialize the walkers \par +}} +{\xe \v ini_walkers_file\:Parameters} +{\xe \v Parameters\:ini_walkers_file} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::string Parameters::ini_walkers_file}} +\par +{\bkmkstart AAAAAAAAIM} +{\bkmkend AAAAAAAAIM} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +initial walker position file (if any) \par +}} +{\xe \v ini_walkers_file_count\:Parameters} +{\xe \v Parameters\:ini_walkers_file_count} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned Parameters::ini_walkers_file_count}} +\par +{\bkmkstart AAAAAAAAIN} +{\bkmkend AAAAAAAAIN} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +number of walker positions initialize in the configuration file \par +}} +{\xe \v log_opp\:Parameters} +{\xe \v Parameters\:log_opp} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::log_opp = false}} +\par +{\bkmkstart AAAAAAAAIO} +{\bkmkend AAAAAAAAIO} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag, true to save one per process output \par +}} +{\xe \v log_phase_shift\:Parameters} +{\xe \v Parameters\:log_phase_shift} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::log_phase_shift = false}} +\par +{\bkmkstart AAAAAAAAIP} +{\bkmkend AAAAAAAAIP} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag, true to save the final phase shift distribution \par +}} +{\xe \v log_propagator\:Parameters} +{\xe \v Parameters\:log_propagator} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::log_propagator = false}} +\par +{\bkmkstart AAAAAAAAIQ} +{\bkmkend AAAAAAAAIQ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag, true saves the propagator for a given set of directions and times \par +}} +{\xe \v max_limits\:Parameters} +{\xe \v Parameters\:max_limits} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Parameters::max_limits}} +\par +{\bkmkstart AAAAAAAAIR} +{\bkmkend AAAAAAAAIR} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +voxel max limits (if any) \par +}} +{\xe \v max_sampling_area\:Parameters} +{\xe \v Parameters\:max_sampling_area} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Parameters::max_sampling_area}} +\par +{\bkmkstart AAAAAAAAIS} +{\bkmkend AAAAAAAAIS} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Max defining point to delimiter the uniform sampling of walkers \par +}} +{\xe \v max_simulation_time\:Parameters} +{\xe \v Parameters\:max_simulation_time} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Parameters::max_simulation_time = 0}} +\par +{\bkmkstart AAAAAAAAIT} +{\bkmkend AAAAAAAAIT} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Maximum simulation time for the DYNAMIC SIMULATION \par +}} +{\xe \v min_cyl_radii\:Parameters} +{\xe \v Parameters\:min_cyl_radii} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +float Parameters::min_cyl_radii}} +\par +{\bkmkstart AAAAAAAAIU} +{\bkmkend AAAAAAAAIU} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Minimum radii (in um) to be sampled \par +}} +{\xe \v min_limits\:Parameters} +{\xe \v Parameters\:min_limits} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Parameters::min_limits}} +\par +{\bkmkstart AAAAAAAAIV} +{\bkmkend AAAAAAAAIV} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +voxel min limits (if any) (bottom left corner) \par +}} +{\xe \v min_sampling_area\:Parameters} +{\xe \v Parameters\:min_sampling_area} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Parameters::min_sampling_area}} +\par +{\bkmkstart AAAAAAAAIW} +{\bkmkend AAAAAAAAIW} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Min defining point to delimiter the uniform sampling of walkers \par +}} +{\xe \v num_proc\:Parameters} +{\xe \v Parameters\:num_proc} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned Parameters::num_proc}} +\par +{\bkmkstart AAAAAAAAIX} +{\bkmkend AAAAAAAAIX} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Number of precessors/process to launch in parallel \par +}} +{\xe \v num_steps\:Parameters} +{\xe \v Parameters\:num_steps} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned Parameters::num_steps}} +\par +{\bkmkstart AAAAAAAAIY} +{\bkmkend AAAAAAAAIY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +T, number of steps \par +}} +{\xe \v num_walkers\:Parameters} +{\xe \v Parameters\:num_walkers} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned Parameters::num_walkers}} +\par +{\bkmkstart AAAAAAAAIZ} +{\bkmkend AAAAAAAAIZ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +N, number of walkers \par +}} +{\xe \v number_subdivisions\:Parameters} +{\xe \v Parameters\:number_subdivisions} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned Parameters::number_subdivisions = 0}} +\par +{\bkmkstart AAAAAAAAJA} +{\bkmkend AAAAAAAAJA} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +saves the number of subdivisions for an initialzied voxel (needed) \par +}} +{\xe \v obstacle_permeability\:Parameters} +{\xe \v Parameters\:obstacle_permeability} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Parameters::obstacle_permeability = 0}} +\par +{\bkmkstart AAAAAAAAJB} +{\bkmkend AAAAAAAAJB} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Obstacles permeability \par +}} +{\xe \v output_base_name\:Parameters} +{\xe \v Parameters\:output_base_name} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::string Parameters::output_base_name}} +\par +{\bkmkstart AAAAAAAAJC} +{\bkmkend AAAAAAAAJC} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +output files base name (path + sufix) \par +}} +{\xe \v PLY_files\:Parameters} +{\xe \v Parameters\:PLY_files} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector Parameters::PLY_files}} +\par +{\bkmkstart AAAAAAAAJD} +{\bkmkend AAAAAAAAJD} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +file paths with PLY obstacle files \par +}} +{\xe \v PLY_percolation\:Parameters} +{\xe \v Parameters\:PLY_percolation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector Parameters::PLY_percolation}} +\par +{\bkmkstart AAAAAAAAJE} +{\bkmkend AAAAAAAAJE} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary vector to save PLY percolation \par +}} +{\xe \v PLY_scales\:Parameters} +{\xe \v Parameters\:PLY_scales} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector Parameters::PLY_scales}} +\par +{\bkmkstart AAAAAAAAJF} +{\bkmkend AAAAAAAAJF} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary vector to save PLY file scales \par +}} +{\xe \v prop_dirs\:Parameters} +{\xe \v Parameters\:prop_dirs} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector Parameters::prop_dirs}} +\par +{\bkmkstart AAAAAAAAJG} +{\bkmkend AAAAAAAAJG} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Saves the directions used to compute the propagator \par +}} +{\xe \v record_phase_times\:Parameters} +{\xe \v Parameters\:record_phase_times} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector Parameters::record_phase_times}} +\par +{\bkmkstart AAAAAAAAJH} +{\bkmkend AAAAAAAAJH} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +time indexes, used to save the phase shif of all walkers at certain time \par +}} +{\xe \v record_pos_times\:Parameters} +{\xe \v Parameters\:record_pos_times} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector Parameters::record_pos_times}} +\par +{\bkmkstart AAAAAAAAJI} +{\bkmkend AAAAAAAAJI} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +time indexes, used to save the position of all walkers at certain time \par +}} +{\xe \v record_prop_times\:Parameters} +{\xe \v Parameters\:record_prop_times} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector Parameters::record_prop_times}} +\par +{\bkmkstart AAAAAAAAJJ} +{\bkmkend AAAAAAAAJJ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +time indexes, used to save the mean propagator of the walkers at c. times \par +}} +{\xe \v save_phase_shift\:Parameters} +{\xe \v Parameters\:save_phase_shift} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::save_phase_shift}} +\par +{\bkmkstart AAAAAAAAJK} +{\bkmkend AAAAAAAAJK} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag, saves the phase shift distribution for all particles \par +}} +{\xe \v scale_from_stu\:Parameters} +{\xe \v Parameters\:scale_from_stu} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::scale_from_stu}} +\par +{\bkmkstart AAAAAAAAJL} +{\bkmkend AAAAAAAAJL} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag, true if the scheme file is in standar units m,s \par +}} +{\xe \v scheme_file\:Parameters} +{\xe \v Parameters\:scheme_file} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::string Parameters::scheme_file}} +\par +{\bkmkstart AAAAAAAAJM} +{\bkmkend AAAAAAAAJM} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +signal adquisition scheme file (if any) \par +}} +{\xe \v seed\:Parameters} +{\xe \v Parameters\:seed} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +long Parameters::seed}} +\par +{\bkmkstart AAAAAAAAJN} +{\bkmkend AAAAAAAAJN} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Initial seed for the random generator \par +}} +{\xe \v separate_signals\:Parameters} +{\xe \v Parameters\:separate_signals} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::separate_signals}} +\par +{\bkmkstart AAAAAAAAJO} +{\bkmkend AAAAAAAAJO} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Separate the signals into intra and extra (compute_volume on) \par +}} +{\xe \v sim_duration\:Parameters} +{\xe \v Parameters\:sim_duration} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double Parameters::sim_duration}} +\par +{\bkmkstart AAAAAAAAJP} +{\bkmkend AAAAAAAAJP} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +simulation total time \par +}} +{\xe \v subdivision_flag\:Parameters} +{\xe \v Parameters\:subdivision_flag} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::subdivision_flag = false}} +\par +{\bkmkstart AAAAAAAAJQ} +{\bkmkend AAAAAAAAJQ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag to check if we have several voxel subdivision to compute the signal \par +}} +{\xe \v subdivisions\:Parameters} +{\xe \v Parameters\:subdivisions} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector<{\b Subdivision}> Parameters::subdivisions}} +\par +{\bkmkstart AAAAAAAAJR} +{\bkmkend AAAAAAAAJR} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +saves actual positions of the subdivision to compute the signal \par +}} +{\xe \v subdivisions_file\:Parameters} +{\xe \v Parameters\:subdivisions_file} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::string Parameters::subdivisions_file = ""}} +\par +{\bkmkstart AAAAAAAAJS} +{\bkmkend AAAAAAAAJS} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +file with the list of subdivisions coordinates to compute the signal \par +}} +{\xe \v traj_file\:Parameters} +{\xe \v Parameters\:traj_file} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::string Parameters::traj_file}} +\par +{\bkmkstart AAAAAAAAJT} +{\bkmkend AAAAAAAAJT} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Trajectory} file path \par +}} +{\xe \v verbatim\:Parameters} +{\xe \v Parameters\:verbatim} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::verbatim}} +\par +{\bkmkstart AAAAAAAAJU} +{\bkmkend AAAAAAAAJU} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +False to omit displaying state and warnings \par +}} +{\xe \v voxels_list\:Parameters} +{\xe \v Parameters\:voxels_list} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector > Parameters::voxels_list}} +\par +{\bkmkstart AAAAAAAAJV} +{\bkmkend AAAAAAAAJV} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +voxel min and max positions list (deprecated) \par +}} +{\xe \v write_bin\:Parameters} +{\xe \v Parameters\:write_bin} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::write_bin}} +\par +{\bkmkstart AAAAAAAAJW} +{\bkmkend AAAAAAAAJW} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag, writes the output signal in binary format (True by default) \par +}} +{\xe \v write_traj\:Parameters} +{\xe \v Parameters\:write_traj} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::write_traj}} +\par +{\bkmkstart AAAAAAAAJX} +{\bkmkend AAAAAAAAJX} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag, write a traj file or not, binary format only \par +}} +{\xe \v write_txt\:Parameters} +{\xe \v Parameters\:write_txt} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Parameters::write_txt}} +\par +{\bkmkstart AAAAAAAAJY} +{\bkmkend AAAAAAAAJY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag, writes DWI output signals in .txt if True \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/parameters.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/parameters.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +PGSESequence Class Reference\par \pard\plain +{\tc\tcl2 \v PGSESequence} +{\xe \v PGSESequence} +{\bkmkstart AAAAAAAAJZ} +{\bkmkend AAAAAAAAJZ} +Inheritance diagram for PGSESequence:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_p_g_s_e_sequence__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +Collaboration diagram for PGSESequence:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_p_g_s_e_sequence__coll__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b PGSESequence} (){\bkmkstart AAAAAAAAKA} +{\bkmkend AAAAAAAAKA} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Default constructor, set default NULL values. Not to be used. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b PGSESequence} ({\b Scheme} scheme_){\bkmkstart AAAAAAAAKB} +{\bkmkend AAAAAAAAKB} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Main constructor. Takes a pre-loaded {\b Scheme} file. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b PGSESequence} ({\b Scheme} scheme_, const char *traj_file_name){\bkmkstart AAAAAAAAKC} +{\bkmkend AAAAAAAAKC} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Main constructor. Takes a pre-loaded {\b Scheme} file and a traj file name. if this argument is passed a traj file is should be written. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b PGSESequence} (const char *scheme_file_name){\bkmkstart AAAAAAAAKD} +{\bkmkend AAAAAAAAKD} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Constructor. Takes a the scheme file name to be loaded. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b PGSESequence} (const char *scheme_file_name, const char *traj_file_name){\bkmkstart AAAAAAAAKE} +{\bkmkend AAAAAAAAKE} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Constructor. Takes a scheme file name to be loaded and atraj file name. if this argument is passed a traj file is should be written. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b ~PGSESequence} (){\bkmkstart AAAAAAAAKF} +{\bkmkend AAAAAAAAKF} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Destuctor. Does nothing. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getGradImpulse} (int i, double t, double tLast, Eigen::Vector3d &Gdt){\bkmkstart AAAAAAAAKG} +{\bkmkend AAAAAAAAKG} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +For using w/o the adt array. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getGradImpuse} (int i, double t, Eigen::Vector3d Gdt){\bkmkstart AAAAAAAAKH} +{\bkmkend AAAAAAAAKH} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +For using with the adt array. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b getbValue} (unsigned){\bkmkstart AAAAAAAAKI} +{\bkmkend AAAAAAAAKI} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Analytical defined b-value. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b getFreeDecay} (unsigned i, double D){\bkmkstart AAAAAAAAKJ} +{\bkmkend AAAAAAAAKJ} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Expected free Decay. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b getNumericalbValue} (unsigned)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getDWISignal} (){\bkmkstart AAAAAAAAKK} +{\bkmkend AAAAAAAAKK} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Computes de DW signal from a trajfile. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b readSchemeFile} (){\bkmkstart AAAAAAAAKL} +{\bkmkend AAAAAAAAKL} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +reads the scheme files }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +virtual void {\b update_phase_shift} (double dt, double dt_last, {\b Walker} walker)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual void {\b update_phase_shift} (double time_step, Eigen::Matrix3Xd {\b trajectory}){\bkmkstart AAAAAAAAKM} +{\bkmkend AAAAAAAAKM} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Updates the phase shift using the full stored trajectory. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual void {\b update_DWI_signal} ({\b Walker} &walker){\bkmkstart AAAAAAAAKN} +{\bkmkend AAAAAAAAKN} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Updates the DWI signal using the cumulated phase shift. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b get_adt} (int grad_index, double t, double tLast){\bkmkstart AAAAAAAAKO} +{\bkmkend AAAAAAAAKO} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +computes de signal value and sign in a certain time step. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b print_adt_and_dt} (int grad_index, double t, double tLast){\bkmkstart AAAAAAAAKP} +{\bkmkend AAAAAAAAKP} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +prints the array adt in the format (). }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual void {\b setNumberOfSteps} (unsigned {\b T}){\bkmkstart AAAAAAAAKQ} +{\bkmkend AAAAAAAAKQ} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Set the number of time steps if they are known. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual void {\b computeDynamicTimeSteps} (){\bkmkstart AAAAAAAAKR} +{\bkmkend AAAAAAAAKR} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Compute the time for all the steps when they are not constant. }{ +}\par +}} +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b TE}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b T}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b dyn_duration}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::vector< double > > {\b scheme}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b Trajectory} {\b trajectory}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v getNumericalbValue\:PGSESequence} +{\xe \v PGSESequence\:getNumericalbValue} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double PGSESequence::getNumericalbValue (unsigned {\i i})}} +\par +{\bkmkstart AAAAAAAAKS} +{\bkmkend AAAAAAAAKS} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Warning:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid not implemented yet. \par +}}} +{\xe \v update_phase_shift\:PGSESequence} +{\xe \v PGSESequence\:update_phase_shift} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void PGSESequence::update_phase_shift (double {\i dt}, double {\i dt_last}, {\b Walker} {\i walker}){\f2 [virtual]}}} +\par +{\bkmkstart AAAAAAAAKT} +{\bkmkend AAAAAAAAKT} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i i} \cell }{updated walker \cell } +{\row } +} +}{ +Implements {\b SimulableSequence} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEP \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v dyn_duration\:PGSESequence} +{\xe \v PGSESequence\:dyn_duration} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double PGSESequence::dyn_duration}} +\par +{\bkmkstart AAAAAAAAKU} +{\bkmkend AAAAAAAAKU} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +simulation duration (miliseconds) \par +}} +{\xe \v scheme\:PGSESequence} +{\xe \v PGSESequence\:scheme} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector< std::vector > PGSESequence::scheme}} +\par +{\bkmkstart AAAAAAAAKV} +{\bkmkend AAAAAAAAKV} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Scheme} file values \par +}} +{\xe \v T\:PGSESequence} +{\xe \v PGSESequence\:T} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int PGSESequence::T}} +\par +{\bkmkstart AAAAAAAAKW} +{\bkmkend AAAAAAAAKW} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +num bins (time steps) \par +}} +{\xe \v TE\:PGSESequence} +{\xe \v PGSESequence\:TE} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double PGSESequence::TE}} +\par +{\bkmkstart AAAAAAAAKX} +{\bkmkend AAAAAAAAKX} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Time Echo. \par +}} +{\xe \v trajectory\:PGSESequence} +{\xe \v PGSESequence\:trajectory} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b Trajectory} PGSESequence::trajectory}} +\par +{\bkmkstart AAAAAAAAKY} +{\bkmkend AAAAAAAAKY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +If the signal is computed from a .trajfile \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/pgsesequence.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/pgsesequence.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Plane Class Reference\par \pard\plain +{\tc\tcl2 \v Plane} +{\xe \v Plane} +{\bkmkstart AAAAAAAAKZ} +{\bkmkend AAAAAAAAKZ} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Main class. Implements basic voxel limits and operations. =================================================/. }}\par +{ +{\f2 #include }}\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Plane} (Eigen::Vector3d normal_, Eigen::Vector3d plane_center_, double d_){\bkmkstart AAAAAAAALA} +{\bkmkend AAAAAAAALA} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Plane} (Eigen::Vector3d &a, Eigen::Vector3d &b, Eigen::Vector3d &c, Eigen::Vector3d &d){\bkmkstart AAAAAAAALB} +{\bkmkend AAAAAAAALB} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b CheckCollision} ({\b Walker} &walker, Eigen::Vector3d &step, double tmax, {\b Collision} &colision){\bkmkstart AAAAAAAALC} +{\bkmkend AAAAAAAALC} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +Eigen::Vector3d {\b normal}{\bkmkstart AAAAAAAALD} +{\bkmkend AAAAAAAALD} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +Eigen::Vector3d {\b plane_center}{\bkmkstart AAAAAAAALE} +{\bkmkend AAAAAAAALE} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b d}{\bkmkstart AAAAAAAALF} +{\bkmkend AAAAAAAALF} +\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Main class. Implements basic voxel limits and operations. =================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done.\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid July 2016 \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Version:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid 0.2 =============================================================================================================+\par +}Auxiliary class to implements plane's interactions with particles. \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/voxel.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/voxel.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +PLYCollisionSphere Class Reference\par \pard\plain +{\tc\tcl2 \v PLYCollisionSphere} +{\xe \v PLYCollisionSphere} +{\bkmkstart AAAAAAAALG} +{\bkmkend AAAAAAAALG} +Inheritance diagram for PLYCollisionSphere:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_p_l_y_collision_sphere__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +Collaboration diagram for PLYCollisionSphere:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_p_l_y_collision_sphere__coll__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b popFromSmallSphere} (unsigned i, unsigned t)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +This function receives a index from the collision list and moves the value to the last position of the list. then decrease the inner sphere end index. This way this index is no longer considered inner collision list. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b pushToSmallSphere} (unsigned i, unsigned t)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +This function receives a index from the collision list and moves the value to the last position of the list. then increse the inner sphere end index. This way this index is now included in the inner collision list. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b popFromBigSphere} (unsigned i, unsigned t){\bkmkstart AAAAAAAALH} +{\bkmkend AAAAAAAALH} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +This function receives a index from the collision list and moves the value to the last position of the list. Then decrease the inner sphere end index. This way this index is now excluded in the outer collision list. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b pushToBigSphere} (unsigned i, unsigned t){\bkmkstart AAAAAAAALI} +{\bkmkend AAAAAAAALI} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +This function receives a index from the collision list and moves the value to the last position of the list. Then increase the inner sphere end index. This way this index is now included in the outer collision list. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b setBigSphereSize} (float size)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b setSmallSphereSize} (float size)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b push_ply} (std::vector< unsigned > list)\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< unsigned > {\b small_sphere_list_end}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< unsigned > {\b big_sphere_list_end}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::vector< unsigned > > * {\b collision_list}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v popFromSmallSphere\:PLYCollisionSphere} +{\xe \v PLYCollisionSphere\:popFromSmallSphere} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void PLYCollisionSphere::popFromSmallSphere (unsigned {\i i}, unsigned {\i t})}} +\par +{\bkmkstart AAAAAAAALJ} +{\bkmkend AAAAAAAALJ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +This function receives a index from the collision list and moves the value to the last position of the list. then decrease the inner sphere end index. This way this index is no longer considered inner collision list. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Removes one index from the list by moving it to the end of the list and decreading the index. \par +}} +{\xe \v push_ply\:PLYCollisionSphere} +{\xe \v PLYCollisionSphere\:push_ply} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void PLYCollisionSphere::push_ply (std::vector< unsigned > {\i list})}} +\par +{\bkmkstart AAAAAAAALK} +{\bkmkend AAAAAAAALK} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i element} \cell }{value to be added to the obstacle list \cell } +{\row } +} +}} +{\xe \v pushToSmallSphere\:PLYCollisionSphere} +{\xe \v PLYCollisionSphere\:pushToSmallSphere} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void PLYCollisionSphere::pushToSmallSphere (unsigned {\i i}, unsigned {\i t})}} +\par +{\bkmkstart AAAAAAAALL} +{\bkmkend AAAAAAAALL} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +This function receives a index from the collision list and moves the value to the last position of the list. then increse the inner sphere end index. This way this index is now included in the inner collision list. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Adds one element to the list by moving it in front of the current index and increasing the index. \par +}} +{\xe \v setBigSphereSize\:PLYCollisionSphere} +{\xe \v PLYCollisionSphere\:setBigSphereSize} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void PLYCollisionSphere::setBigSphereSize (float {\i size})}} +\par +{\bkmkstart AAAAAAAALM} +{\bkmkend AAAAAAAALM} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i size} \cell }{of the list \cell } +{\row } +} +}} +{\xe \v setSmallSphereSize\:PLYCollisionSphere} +{\xe \v PLYCollisionSphere\:setSmallSphereSize} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void PLYCollisionSphere::setSmallSphereSize (float {\i size})}} +\par +{\bkmkstart AAAAAAAALN} +{\bkmkend AAAAAAAALN} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i size} \cell }{of the list \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v big_sphere_list_end\:PLYCollisionSphere} +{\xe \v PLYCollisionSphere\:big_sphere_list_end} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector PLYCollisionSphere::big_sphere_list_end}} +\par +{\bkmkstart AAAAAAAALO} +{\bkmkend AAAAAAAALO} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Index vecotr of the LAST element on the list for the big collision sphere \par +}} +{\xe \v collision_list\:PLYCollisionSphere} +{\xe \v PLYCollisionSphere\:collision_list} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector >* PLYCollisionSphere::collision_list}} +\par +{\bkmkstart AAAAAAAALP} +{\bkmkend AAAAAAAALP} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Pointer to the list with the triangle indexes for each PLY. The indexes are permuted in its position. \par +}} +{\xe \v small_sphere_list_end\:PLYCollisionSphere} +{\xe \v PLYCollisionSphere\:small_sphere_list_end} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector PLYCollisionSphere::small_sphere_list_end}} +\par +{\bkmkstart AAAAAAAALQ} +{\bkmkend AAAAAAAALQ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Index vector of the LAST element on the list for the small collision sphere \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/collisionsphere.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/collisionsphere.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +PLYObstacle Class Reference\par \pard\plain +{\tc\tcl2 \v PLYObstacle} +{\xe \v PLYObstacle} +{\bkmkstart AAAAAAAALR} +{\bkmkend AAAAAAAALR} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +PlyObstacle Derived Class ====================================================================/. }}\par +{ +{\f2 #include }}\par +Inheritance diagram for PLYObstacle:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_p_l_y_obstacle__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +Collaboration diagram for PLYObstacle:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_p_l_y_obstacle__coll__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b PLYObstacle} (std::string path, double scale_factor_=1){\bkmkstart AAAAAAAALS} +{\bkmkend AAAAAAAALS} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b PLYObstacle} (std::string path, std::vector< Eigen::Vector3d > ¢ers, double max_distance=INFINITY, double scale_factor_=1){\bkmkstart AAAAAAAALT} +{\bkmkend AAAAAAAALT} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b readPLY_ASCII_triangleFan} (std::string ply_file){\bkmkstart AAAAAAAALU} +{\bkmkend AAAAAAAALU} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b readPLY_ASCII_triangles} (std::string ply_file){\bkmkstart AAAAAAAALV} +{\bkmkend AAAAAAAALV} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b readPLY_ASCII_trianglesSubdivitionDistance} (std::string ply_file, std::vector< Eigen::Vector3d > ¢ers, double max_distance){\bkmkstart AAAAAAAALW} +{\bkmkend AAAAAAAALW} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setScaleFactor} (double scale){\bkmkstart AAAAAAAALX} +{\bkmkend AAAAAAAALX} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b checkCollision} ({\b Walker} &walker, Eigen::Vector3d &step, double &step_lenght, {\b Collision} &colision){\bkmkstart AAAAAAAALY} +{\bkmkend AAAAAAAALY} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b checkCollision} ({\b Walker} &walker, Eigen::Vector3d &step, double &step_lenght, {\b Collision} &colision, std::vector< unsigned > &triangle_list, unsigned list_end){\bkmkstart AAAAAAAALZ} +{\bkmkend AAAAAAAALZ} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b minDistance} ({\b Walker} &w, unsigned t){\bkmkstart AAAAAAAAMA} +{\bkmkend AAAAAAAAMA} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b vert_number}{\bkmkstart AAAAAAAAMB} +{\bkmkend AAAAAAAAMB} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b face_number}{\bkmkstart AAAAAAAAMC} +{\bkmkend AAAAAAAAMC} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +std::string {\b file_path}{\bkmkstart AAAAAAAAMD} +{\bkmkend AAAAAAAAMD} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Vertex} * {\b vertices}{\bkmkstart AAAAAAAAME} +{\bkmkend AAAAAAAAME} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Triangle} * {\b faces}{\bkmkstart AAAAAAAAMF} +{\bkmkend AAAAAAAAMF} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b scale_factor}{\bkmkstart AAAAAAAAMG} +{\bkmkend AAAAAAAAMG} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +int {\b id}{\bkmkstart AAAAAAAAMH} +{\bkmkend AAAAAAAAMH} +\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +PlyObstacle Derived Class ====================================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b PLYObstacle} derived class. Implements obstacles loaded from pre-defined PY meshes. \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid November 2016 {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 0.2 } \par} +}Implements obstacles loaded from pre-constructed PLY meshes. The PLY format should be without any other experiment. \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/plyobstacle.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/plyobstacle.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Propagator Class Reference\par \pard\plain +{\tc\tcl2 \v Propagator} +{\xe \v Propagator} +{\bkmkstart AAAAAAAAMI} +{\bkmkend AAAAAAAAMI} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b initPropagator} (){\bkmkstart AAAAAAAAMJ} +{\bkmkend AAAAAAAAMJ} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +uint {\b num_dirs} =0{\bkmkstart AAAAAAAAMK} +{\bkmkend AAAAAAAAMK} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +uint {\b num_times} = 0{\bkmkstart AAAAAAAAML} +{\bkmkend AAAAAAAAML} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +Eigen::Matrix3Xf {\b directions}{\bkmkstart AAAAAAAAMM} +{\bkmkend AAAAAAAAMM} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +std::vector< unsigned > {\b log_times}{\bkmkstart AAAAAAAAMN} +{\bkmkend AAAAAAAAMN} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +std::vector< std::vector< float > > {\b propagator_log}{\bkmkstart AAAAAAAAMO} +{\bkmkend AAAAAAAAMO} +\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/propagator.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/propagator.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Scheme Class Reference\par \pard\plain +{\tc\tcl2 \v Scheme} +{\xe \v Scheme} +{\bkmkstart AAAAAAAAMP} +{\bkmkend AAAAAAAAMP} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary class to save scheme_files values =============================================================/. }}\par +{ +{\f2 #include }}\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Scheme} (std::string scheme_file_){\bkmkstart AAAAAAAAMQ} +{\bkmkend AAAAAAAAMQ} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b readSchemeFile} (std::string scheme_file_, bool {\b scale_from_stu}=0){\bkmkstart AAAAAAAAMR} +{\bkmkend AAAAAAAAMR} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b scheme_file}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b header}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b type}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b num_rep}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +float {\b duration}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +float {\b T}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b scale_from_stu}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::vector< double > > {\b scheme}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary class to save scheme_files values =============================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Helper class to store, handle and read scheme files values . \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid November 2016 {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 0.2 } \par} +}}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v duration\:Scheme} +{\xe \v Scheme\:duration} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +float Scheme::duration}} +\par +{\bkmkstart AAAAAAAAMS} +{\bkmkend AAAAAAAAMS} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +time duration (wavefroms) \par +}} +{\xe \v header\:Scheme} +{\xe \v Scheme\:header} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::string Scheme::header}} +\par +{\bkmkstart AAAAAAAAMT} +{\bkmkend AAAAAAAAMT} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Header on the scheme_file \par +}} +{\xe \v num_rep\:Scheme} +{\xe \v Scheme\:num_rep} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int Scheme::num_rep}} +\par +{\bkmkstart AAAAAAAAMU} +{\bkmkend AAAAAAAAMU} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Number of gradients \par +}} +{\xe \v scale_from_stu\:Scheme} +{\xe \v Scheme\:scale_from_stu} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Scheme::scale_from_stu}} +\par +{\bkmkstart AAAAAAAAMV} +{\bkmkend AAAAAAAAMV} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +True if the input is in standar units \par +}} +{\xe \v scheme\:Scheme} +{\xe \v Scheme\:scheme} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector< std::vector > Scheme::scheme}} +\par +{\bkmkstart AAAAAAAAMW} +{\bkmkend AAAAAAAAMW} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Scheme} values \par +}} +{\xe \v scheme_file\:Scheme} +{\xe \v Scheme\:scheme_file} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::string Scheme::scheme_file}} +\par +{\bkmkstart AAAAAAAAMX} +{\bkmkend AAAAAAAAMX} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Scheme} file path \par +}} +{\xe \v T\:Scheme} +{\xe \v Scheme\:T} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +float Scheme::T}} +\par +{\bkmkstart AAAAAAAAMY} +{\bkmkend AAAAAAAAMY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +number of time steps (wavefroms) \par +}} +{\xe \v type\:Scheme} +{\xe \v Scheme\:type} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::string Scheme::type}} +\par +{\bkmkstart AAAAAAAAMZ} +{\bkmkend AAAAAAAAMZ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Sequence type (PGSE only so far) \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/scheme.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/scheme.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +sentinels::Sentinel Class Reference\par \pard\plain +{\tc\tcl2 \v sentinels::Sentinel} +{\xe \v sentinels::Sentinel} +{\bkmkstart AAAAAAAATZ} +{\bkmkend AAAAAAAATZ} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Types\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +enum {\b ErrorCases} \{ {\b none}, +{\b stuck}, +{\b crossed}, +{\b rejected}, +{\b rejected_initial_pos} + \}{\bkmkstart AAAAAAAAUA} +{\bkmkend AAAAAAAAUA} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b clear} (){\bkmkstart AAAAAAAAUB} +{\bkmkend AAAAAAAAUB} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setBouncingError} (unsigned bouncings){\bkmkstart AAAAAAAAUC} +{\bkmkend AAAAAAAAUC} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setCrossingError} (unsigned){\bkmkstart AAAAAAAAUD} +{\bkmkend AAAAAAAAUD} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setRejectedError} (){\bkmkstart AAAAAAAAUE} +{\bkmkend AAAAAAAAUE} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b checkErrors} ({\b Walker} &w, const {\b Parameters} ¶ms, bool noPLY, unsigned &bouncing_count){\bkmkstart AAAAAAAAUF} +{\bkmkend AAAAAAAAUF} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b deportationProcess} ({\b Walker} &walker, unsigned &w, unsigned &t, bool &back_tracking, {\b Parameters} ¶ms, int id){\bkmkstart AAAAAAAAUG} +{\bkmkend AAAAAAAAUG} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b stuck_count}{\bkmkstart AAAAAAAAUH} +{\bkmkend AAAAAAAAUH} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b illegal_count}{\bkmkstart AAAAAAAAUI} +{\bkmkend AAAAAAAAUI} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b bouncings}{\bkmkstart AAAAAAAAUJ} +{\bkmkend AAAAAAAAUJ} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b obstacle_id}{\bkmkstart AAAAAAAAUK} +{\bkmkend AAAAAAAAUK} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b rejected_count}{\bkmkstart AAAAAAAAUL} +{\bkmkend AAAAAAAAUL} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b rejected_step}{\bkmkstart AAAAAAAAUM} +{\bkmkend AAAAAAAAUM} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b deport_illegals}{\bkmkstart AAAAAAAAUN} +{\bkmkend AAAAAAAAUN} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b discard_stucks}{\bkmkstart AAAAAAAAUO} +{\bkmkend AAAAAAAAUO} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +ErrorCases {\b error}{\bkmkstart AAAAAAAAUP} +{\bkmkend AAAAAAAAUP} +\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/sentinel.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/sentinel.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Sentinels Class Reference\par \pard\plain +{\tc\tcl2 \v Sentinels} +{\xe \v Sentinels} +{\bkmkstart AAAAAAAANA} +{\bkmkend AAAAAAAANA} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Collision} Final class ====================================================================/. }}\par +{ +{\f2 #include }}\par +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Collision} Final class ====================================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliar class to check error and misbehaviours during the particle dynamics. \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Junes 2017 {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +}Class used to check the possible numerical errors or un-handed cases inside the dynamic simulation. \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following file:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/sentinel.h\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +SimErrno Class Reference\par \pard\plain +{\tc\tcl2 \v SimErrno} +{\xe \v SimErrno} +{\bkmkstart AAAAAAAANB} +{\bkmkend AAAAAAAANB} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Simulation Input and parameter errors handling class =================================================/. }}\par +{ +{\f2 #include }}\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Static Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static bool {\b checkFileExist} (const std::string name)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return true if the file does exist, false otherwise. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static bool {\b checkSimulationParameters} ({\b Parameters} ¶ms)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if any of the parameters are inconsistent or bugged. In may assert the program. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static bool {\b checkSchemeFile} ({\b Parameters} ¶ms)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if any of the parameters are inconsistent or bugged. In may assert the program. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static bool {\b checkPLYFiles} ({\b Parameters} ¶ms)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if any of the PLY files are inconsistent or bugged. In may assert the program. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static bool {\b checkCylindersListFile} ({\b Parameters} ¶ms)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if any of the cylinder list files are inconsistent or bugged. In may assert the program. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static bool {\b checkInitWalkerFile} ({\b Parameters} ¶ms)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if the initial position file is inconsistent or bugged. In may assert the program. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static bool {\b checkVoxelLimits} ({\b Parameters} ¶ms)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if the voxel instances are inconsistent or bugged. In may assert the program. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static bool {\b checkConfigurationFile} (const char *configuration_file)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if the scheme file does not exist or there are inconsistent or bugs. In may assert the program. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static void {\b printSimulatinInfo} ({\b Parameters} ¶ms, std::ostream &, bool color=1)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static void {\b checkOuputPrefixAndWriteInfo} ({\b Parameters} ¶ms)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if the output location and prefix are inconsistence or bugged. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static bool {\b checkGammaDistributionParamaters} ({\b Parameters} ¶ms)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if the there are errors or inconsistencies in the gamma distr. parameters. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static void {\b warning} (std::string message, std::ostream &, bool color=1)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static void {\b info} (std::string message, std::ostream &, bool color=1)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static void {\b infoMenu} (std::string message, std::string value, std::ostream &, bool color=1, int space=0)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static void {\b error} (std::string message, std::ostream &, bool color=1)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static void {\b expectedTime} (std::string completed, std::string time, std::ostream &, bool color=1, std::string steps_second="", std::string endl_str="")\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +static std::string {\b currentDateTime} (){\bkmkstart AAAAAAAANC} +{\bkmkend AAAAAAAANC} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static bool {\b checkSubdivisionsFile} ({\b Parameters} ¶ms)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if any of the elements in the file are miss configured. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +static void {\b appendRepetitionLabel} ({\b Parameters} ¶ms)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Appends a repetition label on the prefix command so no results are overwritten, helpful if you are running batch of simulation inside a server. }{ +}\par +}} +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Simulation Input and parameter errors handling class =================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Class ot handle the errors in the parameters, logical and on the syntaxis. \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid March 2016 {\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +}Class to handle the errors in the parameters, logical and on the syntax\par +This class contains a set of static methods to check that the configuration files exist and that the parameters are correctly set. This may cause asserts ERRORS or WARNINGS. \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v appendRepetitionLabel\:SimErrno} +{\xe \v SimErrno\:appendRepetitionLabel} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void SimErrno::appendRepetitionLabel ({\b Parameters} & {\i params}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAAND} +{\bkmkend AAAAAAAAND} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Appends a repetition label on the prefix command so no results are overwritten, helpful if you are running batch of simulation inside a server. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i parameter} \cell }{instance \cell } +{\row } +} +}} +{\xe \v checkConfigurationFile\:SimErrno} +{\xe \v SimErrno\:checkConfigurationFile} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimErrno::checkConfigurationFile (const char * {\i configuration_file}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANE} +{\bkmkend AAAAAAAANE} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if the scheme file does not exist or there are inconsistent or bugs. In may assert the program. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i parameter} \cell }{instance \cell } +{\row } +} +}} +{\xe \v checkCylindersListFile\:SimErrno} +{\xe \v SimErrno\:checkCylindersListFile} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimErrno::checkCylindersListFile ({\b Parameters} & {\i params}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANF} +{\bkmkend AAAAAAAANF} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if any of the cylinder list files are inconsistent or bugged. In may assert the program. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i parameter} \cell }{instance \cell } +{\row } +} +}} +{\xe \v checkFileExist\:SimErrno} +{\xe \v SimErrno\:checkFileExist} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +static bool SimErrno::checkFileExist (const std::string {\i name}){\f2 [inline]}, {\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANG} +{\bkmkend AAAAAAAANG} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return true if the file does exist, false otherwise. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i name} \cell }{file path \cell } +{\row } +} +}} +{\xe \v checkGammaDistributionParamaters\:SimErrno} +{\xe \v SimErrno\:checkGammaDistributionParamaters} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimErrno::checkGammaDistributionParamaters ({\b Parameters} & {\i params}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANH} +{\bkmkend AAAAAAAANH} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if the there are errors or inconsistencies in the gamma distr. parameters. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i parameter} \cell }{instance \cell } +{\row } +} +}} +{\xe \v checkInitWalkerFile\:SimErrno} +{\xe \v SimErrno\:checkInitWalkerFile} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimErrno::checkInitWalkerFile ({\b Parameters} & {\i params}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANI} +{\bkmkend AAAAAAAANI} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if the initial position file is inconsistent or bugged. In may assert the program. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i parameter} \cell }{instance \cell } +{\row } +} +}} +{\xe \v checkOuputPrefixAndWriteInfo\:SimErrno} +{\xe \v SimErrno\:checkOuputPrefixAndWriteInfo} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void SimErrno::checkOuputPrefixAndWriteInfo ({\b Parameters} & {\i params}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANJ} +{\bkmkend AAAAAAAANJ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if the output location and prefix are inconsistence or bugged. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i parameter} \cell }{instance \cell } +{\row } +} +}} +{\xe \v checkPLYFiles\:SimErrno} +{\xe \v SimErrno\:checkPLYFiles} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimErrno::checkPLYFiles ({\b Parameters} & {\i params}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANK} +{\bkmkend AAAAAAAANK} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if any of the PLY files are inconsistent or bugged. In may assert the program. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i parameter} \cell }{instance \cell } +{\row } +} +}} +{\xe \v checkSchemeFile\:SimErrno} +{\xe \v SimErrno\:checkSchemeFile} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimErrno::checkSchemeFile ({\b Parameters} & {\i params}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANL} +{\bkmkend AAAAAAAANL} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if any of the parameters are inconsistent or bugged. In may assert the program. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i parameter} \cell }{instance \cell } +{\row } +} +}} +{\xe \v checkSimulationParameters\:SimErrno} +{\xe \v SimErrno\:checkSimulationParameters} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimErrno::checkSimulationParameters ({\b Parameters} & {\i params}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANM} +{\bkmkend AAAAAAAANM} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if any of the parameters are inconsistent or bugged. In may assert the program. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i parameter} \cell }{instance \cell } +{\row } +} +}} +{\xe \v checkSubdivisionsFile\:SimErrno} +{\xe \v SimErrno\:checkSubdivisionsFile} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimErrno::checkSubdivisionsFile ({\b Parameters} & {\i params}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANN} +{\bkmkend AAAAAAAANN} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if any of the elements in the file are miss configured. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i parameter} \cell }{instance \cell } +{\row } +} +}} +{\xe \v checkVoxelLimits\:SimErrno} +{\xe \v SimErrno\:checkVoxelLimits} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimErrno::checkVoxelLimits ({\b Parameters} & {\i params}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANO} +{\bkmkend AAAAAAAANO} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Return false if the voxel instances are inconsistent or bugged. In may assert the program. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i parameter} \cell }{instance \cell } +{\row } +} +}} +{\xe \v error\:SimErrno} +{\xe \v SimErrno\:error} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void SimErrno::error (std::string {\i message}, std::ostream & , bool {\i color} = {\f2 1}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANP} +{\bkmkend AAAAAAAANP} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i iostream} \cell }{where to print ! \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i colour} \cell }{flag, false if no colour should be display or written \cell } +{\row } +} +}} +{\xe \v expectedTime\:SimErrno} +{\xe \v SimErrno\:expectedTime} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void SimErrno::expectedTime (std::string {\i completed}, std::string {\i time}, std::ostream & , bool {\i color} = {\f2 1}, std::string {\i steps_second} = {\f2 ""}, std::string {\i endl_str} = {\f2 ""}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANQ} +{\bkmkend AAAAAAAANQ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i iostream} \cell }{where to print ! \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i colour} \cell }{flag, false if no colour should be display or written ! \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i end} \cell }{flag, false if no end of line string should be printing \cell } +{\row } +} +}} +{\xe \v info\:SimErrno} +{\xe \v SimErrno\:info} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void SimErrno::info (std::string {\i message}, std::ostream & , bool {\i color} = {\f2 1}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANR} +{\bkmkend AAAAAAAANR} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i iostream} \cell }{where to print \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i colour} \cell }{flag, false if no colour should be display or written \cell } +{\row } +} +}} +{\xe \v infoMenu\:SimErrno} +{\xe \v SimErrno\:infoMenu} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void SimErrno::infoMenu (std::string {\i message}, std::string {\i value}, std::ostream & , bool {\i color} = {\f2 1}, int {\i space} = {\f2 0}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANS} +{\bkmkend AAAAAAAANS} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i iostream} \cell }{where to print ! \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i colour} \cell }{flag, false if no colour should be display or written ! \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i spacing} \cell }{at the end of the message \cell } +{\row } +} +}} +{\xe \v printSimulatinInfo\:SimErrno} +{\xe \v SimErrno\:printSimulatinInfo} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void SimErrno::printSimulatinInfo ({\b Parameters} & {\i params}, std::ostream & , bool {\i color} = {\f2 1}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANT} +{\bkmkend AAAAAAAANT} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i parameter} \cell }{instance \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i iostream} \cell }{to print to \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i color} \cell }{flag, false if no colour should be display or written \cell } +{\row } +} +}} +{\xe \v warning\:SimErrno} +{\xe \v SimErrno\:warning} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void SimErrno::warning (std::string {\i message}, std::ostream & , bool {\i color} = {\f2 1}){\f2 [static]}}} +\par +{\bkmkstart AAAAAAAANU} +{\bkmkend AAAAAAAANU} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i iostream} \cell }{where to print \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i colour} \cell }{flag, false if no colour should be display or written \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/simerrno.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/simerrno.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +SimulableSequence Class Reference\par \pard\plain +{\tc\tcl2 \v SimulableSequence} +{\xe \v SimulableSequence} +{\bkmkstart AAAAAAAANV} +{\bkmkend AAAAAAAANV} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +MR Sequence Primary Class =============================================================/. }}\par +{ +{\f2 #include }}\par +Inheritance diagram for SimulableSequence:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_simulable_sequence__inherit__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +virtual void {\b getGradImpulse} (int i, double t, double tLast, Eigen::Vector3d &Gdt)=0\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +virtual double {\b getbValue} (unsigned i)\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual double {\b getFreeDecay} (unsigned i, double D){\bkmkstart AAAAAAAANW} +{\bkmkend AAAAAAAANW} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Expected free Decay. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +virtual void {\b update_phase_shift} (double dt, double dt_last, {\b Walker} walker)=0\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +virtual void {\b update_phase_shift} (double time_step, Eigen::Matrix3Xd trajectory)=0\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual void {\b update_DWI_signal} ({\b Walker} &walker)=0{\bkmkstart AAAAAAAANX} +{\bkmkend AAAAAAAANX} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Updates the DWI signal using the cumulated phase shift. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual void {\b setNumberOfSteps} (unsigned T)=0{\bkmkstart AAAAAAAANY} +{\bkmkend AAAAAAAANY} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Set the number of time steps if they are known. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual void {\b computeDynamicTimeSteps} (){\bkmkstart AAAAAAAANZ} +{\bkmkend AAAAAAAANZ} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Compute the time for all the steps when they are not constant. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual void {\b initializeSubdivisionSignals} (){\bkmkstart AAAAAAAAOA} +{\bkmkend AAAAAAAAOA} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Initialize the DWI signals for each subdivision. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual void {\b initializeIntraExtraSignals} (){\bkmkstart AAAAAAAAOB} +{\bkmkend AAAAAAAAOB} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Initialize the DWI signals for each compartment (intra extra) }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual void {\b writeResultingData} (std::string output_base_name){\bkmkstart AAAAAAAAOC} +{\bkmkend AAAAAAAAOC} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual void {\b writePhaseShiftDistribution} (std::string output_base_name){\bkmkstart AAAAAAAAOD} +{\bkmkend AAAAAAAAOD} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual void {\b cleanPhaseShift} (){\bkmkstart AAAAAAAAOE} +{\bkmkend AAAAAAAAOE} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +virtual void {\b cleanDWISignal} (){\bkmkstart AAAAAAAAOF} +{\bkmkend AAAAAAAAOF} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b scheme_file}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< double > {\b DWI}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< double > {\b DWI_intra}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< double > {\b DWI_extra}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< double > {\b DWIi}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< double > {\b phase_shift}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b num_rep}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b save_phase_shift}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b dynamic}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +double {\b percent_steps_in}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< double > {\b time_steps}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::ArrayXXf {\b phase_shift_distribution}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::vector< double > > {\b sub_DWI}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::vector< double > > {\b sub_DWI_intra}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::vector< double > > {\b sub_DWI_extra}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< std::vector< double > > {\b sub_DWIi}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b subdivision_flag} = false\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b separate_signal} = false\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b img_signal} = false\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< {\b Subdivision} > {\b subdivisions}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +MR Sequence Primary Class =============================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Elemental base clase. Abstract class to synthesise the MRI signal\par +{\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 Jonathan Rafael } \par} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v getbValue\:SimulableSequence} +{\xe \v SimulableSequence\:getbValue} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +virtual double SimulableSequence::getbValue (unsigned {\i i}){\f2 [inline]}, {\f2 [virtual]}}} +\par +{\bkmkstart AAAAAAAAOG} +{\bkmkend AAAAAAAAOG} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i i} \cell }{index of the gradient in the scheme_file (0,N-1) \cell } +{\row } +} +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Returns:\par}\pard\plain \s62\li720\widctlpar\ql\adjustright \fs20\cgrid b-value \par +}}{ +Reimplemented in {\b PGSESequence} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKI \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par +} +{\xe \v getGradImpulse\:SimulableSequence} +{\xe \v SimulableSequence\:getGradImpulse} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +virtual void SimulableSequence::getGradImpulse (int {\i i}, double {\i t}, double {\i tLast}, Eigen::Vector3d & {\i Gdt}){\f2 [pure virtual]}}} +\par +{\bkmkstart AAAAAAAAEK} +{\bkmkend AAAAAAAAEK} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i i} \cell }{{\b Walker} index \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i t} \cell }{current time step (in milisenconds) \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i tLast} \cell }{last time step (in milisenconds) \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i Gdt} \cell }{vector to compute de G*dt impulse \cell } +{\row } +} +}{ +Implemented in {\b GradientWaveform} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEJ \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b PGSESequence} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKG \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par +} +{\xe \v update_phase_shift\:SimulableSequence} +{\xe \v SimulableSequence\:update_phase_shift} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +virtual void SimulableSequence::update_phase_shift (double {\i dt}, double {\i dt_last}, {\b Walker} {\i walker}){\f2 [pure virtual]}}} +\par +{\bkmkstart AAAAAAAAEP} +{\bkmkend AAAAAAAAEP} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i i} \cell }{updated walker \cell } +{\row } +} +}{ +Implemented in {\b PGSESequence} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKT \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b GradientWaveform} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEO \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par +} +{\xe \v update_phase_shift\:SimulableSequence} +{\xe \v SimulableSequence\:update_phase_shift} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +virtual void SimulableSequence::update_phase_shift (double {\i time_step}, Eigen::Matrix3Xd {\i trajectory}){\f2 [pure virtual]}}} +\par +{\bkmkstart AAAAAAAAEN} +{\bkmkend AAAAAAAAEN} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i i} \cell }{updated the phase shift over a whole trajectory \cell } +{\row } +} +}{ +Implemented in {\b PGSESequence} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAKM \\*MERGEFORMAT}{\fldrslt pagenum}}}), and {\b GradientWaveform} ({\i p.{\field\fldedit {\*\fldinst PAGEREF AAAAAAAAEM \\*MERGEFORMAT}{\fldrslt pagenum}}}).}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v DWI\:SimulableSequence} +{\xe \v SimulableSequence\:DWI} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector SimulableSequence::DWI}} +\par +{\bkmkstart AAAAAAAAOH} +{\bkmkend AAAAAAAAOH} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Real part of the DWI signal \par +}} +{\xe \v DWI_extra\:SimulableSequence} +{\xe \v SimulableSequence\:DWI_extra} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector SimulableSequence::DWI_extra}} +\par +{\bkmkstart AAAAAAAAOI} +{\bkmkend AAAAAAAAOI} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Real part of the DWI signal extra axonal only (if needed) \par +}} +{\xe \v DWI_intra\:SimulableSequence} +{\xe \v SimulableSequence\:DWI_intra} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector SimulableSequence::DWI_intra}} +\par +{\bkmkstart AAAAAAAAOJ} +{\bkmkend AAAAAAAAOJ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Real part of the DWI signal intra axonal olny (if needed) \par +}} +{\xe \v DWIi\:SimulableSequence} +{\xe \v SimulableSequence\:DWIi} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector SimulableSequence::DWIi}} +\par +{\bkmkstart AAAAAAAAOK} +{\bkmkend AAAAAAAAOK} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +imaginary part of the DWI signal \par +}} +{\xe \v dynamic\:SimulableSequence} +{\xe \v SimulableSequence\:dynamic} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimulableSequence::dynamic}} +\par +{\bkmkstart AAAAAAAAOL} +{\bkmkend AAAAAAAAOL} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Flag to indicate if the time steps are non-uniform \par +}} +{\xe \v img_signal\:SimulableSequence} +{\xe \v SimulableSequence\:img_signal} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimulableSequence::img_signal = false}} +\par +{\bkmkstart AAAAAAAAOM} +{\bkmkend AAAAAAAAOM} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag to check if the img part will be computed or not (false default \par +}} +{\xe \v num_rep\:SimulableSequence} +{\xe \v SimulableSequence\:num_rep} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int SimulableSequence::num_rep}} +\par +{\bkmkstart AAAAAAAAON} +{\bkmkend AAAAAAAAON} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +number of repetitions . \par +}} +{\xe \v percent_steps_in\:SimulableSequence} +{\xe \v SimulableSequence\:percent_steps_in} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +double SimulableSequence::percent_steps_in}} +\par +{\bkmkstart AAAAAAAAOO} +{\bkmkend AAAAAAAAOO} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +percentage of steps that should be inside the gradient times \par +}} +{\xe \v phase_shift\:SimulableSequence} +{\xe \v SimulableSequence\:phase_shift} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector SimulableSequence::phase_shift}} +\par +{\bkmkstart AAAAAAAAOP} +{\bkmkend AAAAAAAAOP} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +auxiliar phase shift for signal computations. \par +}} +{\xe \v phase_shift_distribution\:SimulableSequence} +{\xe \v SimulableSequence\:phase_shift_distribution} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::ArrayXXf SimulableSequence::phase_shift_distribution}} +\par +{\bkmkstart AAAAAAAAOQ} +{\bkmkend AAAAAAAAOQ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Matrix to save the phase shif distribution \par +}} +{\xe \v save_phase_shift\:SimulableSequence} +{\xe \v SimulableSequence\:save_phase_shift} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimulableSequence::save_phase_shift}} +\par +{\bkmkstart AAAAAAAAOR} +{\bkmkend AAAAAAAAOR} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag, if true, saves the pahse shift distribution. \par +}} +{\xe \v scheme_file\:SimulableSequence} +{\xe \v SimulableSequence\:scheme_file} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::string SimulableSequence::scheme_file}} +\par +{\bkmkstart AAAAAAAAOS} +{\bkmkend AAAAAAAAOS} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Scheme} file path \par +}} +{\xe \v separate_signal\:SimulableSequence} +{\xe \v SimulableSequence\:separate_signal} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimulableSequence::separate_signal = false}} +\par +{\bkmkstart AAAAAAAAOT} +{\bkmkend AAAAAAAAOT} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag to check if we will separate the signal in intra and extra \par +}} +{\xe \v sub_DWI\:SimulableSequence} +{\xe \v SimulableSequence\:sub_DWI} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector > SimulableSequence::sub_DWI}} +\par +{\bkmkstart AAAAAAAAOU} +{\bkmkend AAAAAAAAOU} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Real part of the DWI signal for each subDivision \par +}} +{\xe \v sub_DWI_extra\:SimulableSequence} +{\xe \v SimulableSequence\:sub_DWI_extra} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector > SimulableSequence::sub_DWI_extra}} +\par +{\bkmkstart AAAAAAAAOV} +{\bkmkend AAAAAAAAOV} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Real part of the DWI extra signal for each subDivision \par +}} +{\xe \v sub_DWI_intra\:SimulableSequence} +{\xe \v SimulableSequence\:sub_DWI_intra} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector > SimulableSequence::sub_DWI_intra}} +\par +{\bkmkstart AAAAAAAAOW} +{\bkmkend AAAAAAAAOW} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Real part of the DWI intra signal for each subDivision \par +}} +{\xe \v sub_DWIi\:SimulableSequence} +{\xe \v SimulableSequence\:sub_DWIi} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector > SimulableSequence::sub_DWIi}} +\par +{\bkmkstart AAAAAAAAOX} +{\bkmkend AAAAAAAAOX} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Imaginary part of the DWI signal for each subdivision \par +}} +{\xe \v subdivision_flag\:SimulableSequence} +{\xe \v SimulableSequence\:subdivision_flag} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool SimulableSequence::subdivision_flag = false}} +\par +{\bkmkstart AAAAAAAAOY} +{\bkmkend AAAAAAAAOY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag to check if we have several voxel subdivision to compute the signal \par +}} +{\xe \v subdivisions\:SimulableSequence} +{\xe \v SimulableSequence\:subdivisions} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector<{\b Subdivision}> SimulableSequence::subdivisions}} +\par +{\bkmkstart AAAAAAAAOZ} +{\bkmkend AAAAAAAAOZ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +saves the actual positions of the subdivision to compute the signal \par +}} +{\xe \v time_steps\:SimulableSequence} +{\xe \v SimulableSequence\:time_steps} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector SimulableSequence::time_steps}} +\par +{\bkmkstart AAAAAAAAPA} +{\bkmkend AAAAAAAAPA} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary array to save the time steps \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/simulablesequence.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/simulablesequence.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Subdivision Class Reference\par \pard\plain +{\tc\tcl2 \v Subdivision} +{\xe \v Subdivision} +{\bkmkstart AAAAAAAAPB} +{\bkmkend AAAAAAAAPB} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary {\b Subdivision} Class =============================================================/. }}\par +{ +{\f2 #include }}\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Subdivision} (){\bkmkstart AAAAAAAAPC} +{\bkmkend AAAAAAAAPC} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Naive constructor. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Subdivision} (Eigen::Vector3f &, Eigen::Vector3f &){\bkmkstart AAAAAAAAPD} +{\bkmkend AAAAAAAAPD} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Constructor for a defined list of min and max positions. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b isInside} (Eigen::Vector3d &pos)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary function to check if a 3d position is inside a "subdivision" i.e. defined cube. }{ +}\par +}} +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3f {\b min_limits}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3f {\b max_limits}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b density}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b density_intra}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b density_extra}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary {\b Subdivision} Class =============================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary Class. Implementation of the subdivision of a voxel into separate adquisitions\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid September 2017 \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 0.1.0 } \par} +}}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v isInside\:Subdivision} +{\xe \v Subdivision\:isInside} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Subdivision::isInside (Eigen::Vector3d & {\i pos})}} +\par +{\bkmkstart AAAAAAAAPE} +{\bkmkend AAAAAAAAPE} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary function to check if a 3d position is inside a "subdivision" i.e. defined cube. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i pos} \cell }{3d position \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v density\:Subdivision} +{\xe \v Subdivision\:density} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int Subdivision::density}} +\par +{\bkmkstart AAAAAAAAPF} +{\bkmkend AAAAAAAAPF} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Counter to save the number of particles inside that region \par +}} +{\xe \v density_extra\:Subdivision} +{\xe \v Subdivision\:density_extra} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int Subdivision::density_extra}} +\par +{\bkmkstart AAAAAAAAPG} +{\bkmkend AAAAAAAAPG} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Counter to save the number of particles labeled as Extra in that region \par +}} +{\xe \v density_intra\:Subdivision} +{\xe \v Subdivision\:density_intra} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int Subdivision::density_intra}} +\par +{\bkmkstart AAAAAAAAPH} +{\bkmkend AAAAAAAAPH} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Counter to save the number of particles labeled as Intra in that region \par +}} +{\xe \v max_limits\:Subdivision} +{\xe \v Subdivision\:max_limits} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3f Subdivision::max_limits}} +\par +{\bkmkstart AAAAAAAAPI} +{\bkmkend AAAAAAAAPI} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Vector with the list of max limits points of each subdivisions \par +}} +{\xe \v min_limits\:Subdivision} +{\xe \v Subdivision\:min_limits} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3f Subdivision::min_limits}} +\par +{\bkmkstart AAAAAAAAPJ} +{\bkmkend AAAAAAAAPJ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Vector with the list of min limits points of each subdivisions \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/subdivision.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/subdivision.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Trajectory Class Reference\par \pard\plain +{\tc\tcl2 \v Trajectory} +{\xe \v Trajectory} +{\bkmkstart AAAAAAAAPK} +{\bkmkend AAAAAAAAPK} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary class. Handles i/o operation of walker trayectories. ============================/. }}\par +{ +{\f2 #include }}\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Trajectory} (){\bkmkstart AAAAAAAAPL} +{\bkmkend AAAAAAAAPL} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Main constructor, Initialice everythin to default. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Trajectory} (const char *traj_file, bool isBigEndian_=true, std::string io_flag_="rb"){\bkmkstart AAAAAAAAPM} +{\bkmkend AAAAAAAAPM} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Contructor , Initialice everythin by parameters. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b ~Trajectory} (){\bkmkstart AAAAAAAAPN} +{\bkmkend AAAAAAAAPN} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Destructor, close files and fstreams. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b initTrajectory} ({\b Parameters} params){\bkmkstart AAAAAAAAPO} +{\bkmkend AAAAAAAAPO} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Initialice the output files if any. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setTrajFile} (std::string){\bkmkstart AAAAAAAAPP} +{\bkmkend AAAAAAAAPP} +\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Setd the traj file operations. }{ +}\par +}} +} +{ +\pard\plain \s30\li360\sa60\sb120\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \par +\pard\plain \s50\li0\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b closeTrajReaderFile} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b openTrajReaderFile} (){\bkmkstart AAAAAAAAPQ} +{\bkmkend AAAAAAAAPQ} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b initTrajReaderFile} (){\bkmkstart AAAAAAAAPR} +{\bkmkend AAAAAAAAPR} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b readTrajectoryHeader} (){\bkmkstart AAAAAAAAPS} +{\bkmkend AAAAAAAAPS} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b readCurrentWalkersTrajectory} (Eigen::Matrix3Xd &){\bkmkstart AAAAAAAAPT} +{\bkmkend AAAAAAAAPT} +\par +} +}{ +\pard\plain \s30\li360\sa60\sb120\keepn\widctlpar\adjustright \b\f1\fs20\cgrid \par +\pard\plain \s50\li0\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid \pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +void {\b initTrajWriter} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b initTrajWriterBinary} (){\bkmkstart AAAAAAAAPU} +{\bkmkend AAAAAAAAPU} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b initTrajWriterText} (){\bkmkstart AAAAAAAAPV} +{\bkmkend AAAAAAAAPV} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b writeTrajectoryHeaderBinary} (){\bkmkstart AAAAAAAAPW} +{\bkmkend AAAAAAAAPW} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b writeTrajectoryHeaderText} (){\bkmkstart AAAAAAAAPX} +{\bkmkend AAAAAAAAPX} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b reWriteHeaderFile} (unsigned num_walkers){\bkmkstart AAAAAAAAPY} +{\bkmkend AAAAAAAAPY} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b writePosition} (Eigen::Vector3d &){\bkmkstart AAAAAAAAPZ} +{\bkmkend AAAAAAAAPZ} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b writePositionText} (Eigen::Vector3d &){\bkmkstart AAAAAAAAQA} +{\bkmkend AAAAAAAAQA} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b writePositionBinary} (Eigen::Vector3d &){\bkmkstart AAAAAAAAQB} +{\bkmkend AAAAAAAAQB} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b writePosition} (Eigen::Matrix3Xd &){\bkmkstart AAAAAAAAQC} +{\bkmkend AAAAAAAAQC} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b writePositionText} (Eigen::Matrix3Xd &){\bkmkstart AAAAAAAAQD} +{\bkmkend AAAAAAAAQD} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b writePositionBinary} (Eigen::Matrix3Xd &){\bkmkstart AAAAAAAAQE} +{\bkmkend AAAAAAAAQE} +\par +} +}\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b trajfile}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::string {\b headerfile}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +FILE * {\b in}{\bkmkstart AAAAAAAAQF} +{\bkmkend AAAAAAAAQF} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +FILE * {\b in_header}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +std::ofstream {\b bout}{\bkmkstart AAAAAAAAQG} +{\bkmkend AAAAAAAAQG} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +std::ofstream {\b tout}{\bkmkstart AAAAAAAAQH} +{\bkmkend AAAAAAAAQH} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +std::ofstream {\b bheaderout}{\bkmkstart AAAAAAAAQI} +{\bkmkend AAAAAAAAQI} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +std::ofstream {\b theaderout}{\bkmkstart AAAAAAAAQJ} +{\bkmkend AAAAAAAAQJ} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b N}{\bkmkstart AAAAAAAAQK} +{\bkmkend AAAAAAAAQK} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b T}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b dyn_duration}{\bkmkstart AAAAAAAAQL} +{\bkmkend AAAAAAAAQL} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +std::string {\b io_flag}{\bkmkstart AAAAAAAAQM} +{\bkmkend AAAAAAAAQM} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +std::vector< unsigned > {\b pos_times}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b isBigEndian}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b write_traj}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b write_txt}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b write_bin}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +bool {\b steps_subset}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary class. Handles i/o operation of walker trayectories. ============================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid July 2016 {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 0.2 } \par} +}}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Function Documentation\par +\pard\plain +{\xe \v closeTrajReaderFile\:Trajectory} +{\xe \v Trajectory\:closeTrajReaderFile} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void Trajectory::closeTrajReaderFile ()}} +\par +{\bkmkstart AAAAAAAAQN} +{\bkmkend AAAAAAAAQN} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Read operations \par +}} +{\xe \v initTrajWriter\:Trajectory} +{\xe \v Trajectory\:initTrajWriter} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +void Trajectory::initTrajWriter ()}} +\par +{\bkmkstart AAAAAAAAQO} +{\bkmkend AAAAAAAAQO} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Write operations \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v headerfile\:Trajectory} +{\xe \v Trajectory\:headerfile} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::string Trajectory::headerfile}} +\par +{\bkmkstart AAAAAAAAQP} +{\bkmkend AAAAAAAAQP} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +header name \par +}} +{\xe \v in_header\:Trajectory} +{\xe \v Trajectory\:in_header} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +FILE * Trajectory::in_header}} +\par +{\bkmkstart AAAAAAAAQQ} +{\bkmkend AAAAAAAAQQ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Files to be written using the previous names binary out, text out, binary header, text header \par +}} +{\xe \v isBigEndian\:Trajectory} +{\xe \v Trajectory\:isBigEndian} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Trajectory::isBigEndian}} +\par +{\bkmkstart AAAAAAAAQR} +{\bkmkend AAAAAAAAQR} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag if the format is big endian \par +}} +{\xe \v pos_times\:Trajectory} +{\xe \v Trajectory\:pos_times} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::vector Trajectory::pos_times}} +\par +{\bkmkstart AAAAAAAAQS} +{\bkmkend AAAAAAAAQS} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Times indexes when to save the particle positions. \par +}} +{\xe \v steps_subset\:Trajectory} +{\xe \v Trajectory\:steps_subset} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Trajectory::steps_subset}} +\par +{\bkmkstart AAAAAAAAQT} +{\bkmkend AAAAAAAAQT} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +true if the steps are no uniform \par +}} +{\xe \v T\:Trajectory} +{\xe \v Trajectory\:T} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned Trajectory::T}} +\par +{\bkmkstart AAAAAAAAQU} +{\bkmkend AAAAAAAAQU} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +number of walkers, total time; \par +}} +{\xe \v trajfile\:Trajectory} +{\xe \v Trajectory\:trajfile} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +std::string Trajectory::trajfile}} +\par +{\bkmkstart AAAAAAAAQV} +{\bkmkend AAAAAAAAQV} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +trajfile name \par +}} +{\xe \v write_bin\:Trajectory} +{\xe \v Trajectory\:write_bin} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Trajectory::write_bin}} +\par +{\bkmkstart AAAAAAAAQW} +{\bkmkend AAAAAAAAQW} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag if we want to write a binary traj file \par +}} +{\xe \v write_traj\:Trajectory} +{\xe \v Trajectory\:write_traj} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Trajectory::write_traj}} +\par +{\bkmkstart AAAAAAAAQX} +{\bkmkend AAAAAAAAQX} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag if we want to write a traj file \par +}} +{\xe \v write_txt\:Trajectory} +{\xe \v Trajectory\:write_txt} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +bool Trajectory::write_txt}} +\par +{\bkmkstart AAAAAAAAQY} +{\bkmkend AAAAAAAAQY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +flag if we want to write a text traj file \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/trajectory.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/trajectory.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Triangle Class Reference\par \pard\plain +{\tc\tcl2 \v Triangle} +{\xe \v Triangle} +{\bkmkstart AAAAAAAAQZ} +{\bkmkend AAAAAAAAQZ} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary class. Implements trangular barriers. ===================================/. }}\par +{ +{\f2 #include }}\par +Collaboration diagram for Triangle:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_triangle__coll__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Triangle} ({\b Vertex} *vertices, unsigned index){\bkmkstart AAAAAAAARA} +{\bkmkend AAAAAAAARA} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getVertex} (const unsigned i, Eigen::Vector3d &v){\bkmkstart AAAAAAAARB} +{\bkmkend AAAAAAAARB} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getNormal} (Eigen::Vector3d &normal){\bkmkstart AAAAAAAARC} +{\bkmkend AAAAAAAARC} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b saveNormalAndAuxInfo} (){\bkmkstart AAAAAAAARD} +{\bkmkend AAAAAAAARD} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b rayIntersects} (const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, double &t){\bkmkstart AAAAAAAARE} +{\bkmkend AAAAAAAARE} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b stepIntersects_MT} ({\b Walker} &walker, const Eigen::Vector3d &step, const double &max_length, {\b Collision} &colision){\bkmkstart AAAAAAAARF} +{\bkmkend AAAAAAAARF} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b stepIntersects_MT_limits} (const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, const double &max_length, {\b Collision} &colision, const Eigen::Vector3d &limits_mod, double limit_x, double limit_y, double limit_z){\bkmkstart AAAAAAAARG} +{\bkmkend AAAAAAAARG} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b rayIntersects_MT} (const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, double &u, double &v, double &t){\bkmkstart AAAAAAAARH} +{\bkmkend AAAAAAAARH} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b minDistance} (const Eigen::Vector3d p){\bkmkstart AAAAAAAARI} +{\bkmkend AAAAAAAARI} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b index}{\bkmkstart AAAAAAAARJ} +{\bkmkend AAAAAAAARJ} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Vertex} * {\b vertices}{\bkmkstart AAAAAAAARK} +{\bkmkend AAAAAAAARK} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +Eigen::Array3i {\b indexes}{\bkmkstart AAAAAAAARL} +{\bkmkend AAAAAAAARL} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +Eigen::Vector3d {\b normal}{\bkmkstart AAAAAAAARM} +{\bkmkend AAAAAAAARM} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +Eigen::Vector3d {\b center}{\bkmkstart AAAAAAAARN} +{\bkmkend AAAAAAAARN} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b radius}{\bkmkstart AAAAAAAARO} +{\bkmkend AAAAAAAARO} +\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary class. Implements trangular barriers. ===================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Helper class to strore and handle trangular barriers. \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid July 2016 {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 0.2 } \par} +}}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/triangle.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/triangle.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Vertex Class Reference\par \pard\plain +{\tc\tcl2 \v Vertex} +{\xe \v Vertex} +{\bkmkstart AAAAAAAARP} +{\bkmkend AAAAAAAARP} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary class. Implements basic vertices. ====================================/. }}\par +{ +{\f2 #include }}\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Vertex} (const double &x, const double &y, const double &z){\bkmkstart AAAAAAAARQ} +{\bkmkend AAAAAAAARQ} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b operator()} (unsigned i){\bkmkstart AAAAAAAARR} +{\bkmkend AAAAAAAARR} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned {\b index}{\bkmkstart AAAAAAAARS} +{\bkmkend AAAAAAAARS} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +double {\b points} [3]{\bkmkstart AAAAAAAART} +{\bkmkend AAAAAAAART} +\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliary class. Implements basic vertices. ====================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Helper class to strore and handle vertices. \par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid July 2016 {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 0.2 } \par} +}{\b Vertex} of a 3d poly \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/vertex.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/vertex.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Voxel Class Reference\par \pard\plain +{\tc\tcl2 \v Voxel} +{\xe \v Voxel} +{\bkmkstart AAAAAAAARU} +{\bkmkend AAAAAAAARU} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +//! Main class. Implements basic voxel limits and operations. Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done. }}\par +{ +{\f2 #include }}\par +Collaboration diagram for Voxel:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_voxel__coll__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Voxel} (Eigen::Vector3d min_limits_, Eigen::Vector3d max_limits_){\bkmkstart AAAAAAAARV} +{\bkmkend AAAAAAAARV} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +bool {\b CheckCollision} ({\b Walker} &walker, Eigen::Vector3d &step, double &tmax, {\b Collision} &colision){\bkmkstart AAAAAAAARW} +{\bkmkend AAAAAAAARW} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +Eigen::Vector3d {\b min_limits}{\bkmkstart AAAAAAAARX} +{\bkmkend AAAAAAAARX} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +Eigen::Vector3d {\b max_limits}{\bkmkstart AAAAAAAARY} +{\bkmkend AAAAAAAARY} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b Plane} {\b walls} [6]{\bkmkstart AAAAAAAARZ} +{\bkmkend AAAAAAAARZ} +\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +//! Main class. Implements basic voxel limits and operations. Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done. \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/voxel.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/voxel.cpp\par +}\par \pard\plain + +\pard\plain \sect\sbkpage +\s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +\pard\plain \s2\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs28\kerning28\cgrid +Walker Class Reference\par \pard\plain +{\tc\tcl2 \v Walker} +{\xe \v Walker} +{\bkmkstart AAAAAAAASA} +{\bkmkend AAAAAAAASA} +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Spin Final class =============================================================/. }}\par +{ +{\f2 #include }}\par +Collaboration diagram for Walker:{ +\pard\plain +\par\pard \qc {\field\flddirty {\*\fldinst INCLUDEPICTURE "class_walker__coll__graph.png" \\d \\*MERGEFORMAT}{\fldrslt IMAGE}}\par +} +\par +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Types\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +enum {\b state} \{ {\b on_object}, +{\b on_edge}, +{\b on_vertex}, +{\b on_voxel}, +{\b free}, +{\b bouncing} + \}{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +An enum. }}} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +enum {\b RelativeLocation} \{ {\b unknown}, +{\b intra}, +{\b extra} + \}{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +An enum. }}} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Member Functions\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b Walker} ()\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Default constructor. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b ~Walker} ()\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b Walker} (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax)\par +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid {\i {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Constructor. }{ +}\par +}} +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getRealPosition} (double &, double &, double &) const{\bkmkstart AAAAAAAASB} +{\bkmkend AAAAAAAASB} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getRealPosition} (Eigen::Vector3d &) const{\bkmkstart AAAAAAAASC} +{\bkmkend AAAAAAAASC} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getVoxelPosition} (double &, double &, double &) const{\bkmkstart AAAAAAAASD} +{\bkmkend AAAAAAAASD} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getVoxelPosition} (Eigen::Vector3d &) const{\bkmkstart AAAAAAAASE} +{\bkmkend AAAAAAAASE} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getInitialPosition} (double &, double &, double &) const{\bkmkstart AAAAAAAASF} +{\bkmkend AAAAAAAASF} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getInitialPosition} (Eigen::Vector3d &) const{\bkmkstart AAAAAAAASG} +{\bkmkend AAAAAAAASG} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b getNextDirection} (Eigen::Vector3d &) const{\bkmkstart AAAAAAAASH} +{\bkmkend AAAAAAAASH} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +unsigned int {\b getIndex} () const{\bkmkstart AAAAAAAASI} +{\bkmkend AAAAAAAASI} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setRealPosition} (const double &, const double &, const double &){\bkmkstart AAAAAAAASJ} +{\bkmkend AAAAAAAASJ} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setRealPosition} (const Eigen::Vector3d &){\bkmkstart AAAAAAAASK} +{\bkmkend AAAAAAAASK} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setVoxelPosition} (const double &, const double &, const double &){\bkmkstart AAAAAAAASL} +{\bkmkend AAAAAAAASL} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setVoxelPosition} (const Eigen::Vector3d &){\bkmkstart AAAAAAAASM} +{\bkmkend AAAAAAAASM} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setInitialPosition} (const double &, const double &, const double &){\bkmkstart AAAAAAAASN} +{\bkmkend AAAAAAAASN} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setInitialPosition} (const Eigen::Vector3d &){\bkmkstart AAAAAAAASO} +{\bkmkend AAAAAAAASO} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setNextDirection} (Eigen::Vector3d &){\bkmkstart AAAAAAAASP} +{\bkmkend AAAAAAAASP} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setRandomInitialPosition} (const Eigen::Vector3d &min, const Eigen::Vector3d &max){\bkmkstart AAAAAAAASQ} +{\bkmkend AAAAAAAASQ} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setIndex} (unsigned int &){\bkmkstart AAAAAAAASR} +{\bkmkend AAAAAAAASR} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setRealPosLog} (const Eigen::Vector3d &pos, unsigned t){\bkmkstart AAAAAAAASS} +{\bkmkend AAAAAAAASS} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setRealPosLog} (double x, double y, double z, unsigned t){\bkmkstart AAAAAAAAST} +{\bkmkend AAAAAAAAST} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setVoxPosLog} (const Eigen::Vector3d &pos, unsigned t){\bkmkstart AAAAAAAASU} +{\bkmkend AAAAAAAASU} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setVoxPosLog} (double x, double y, double z, unsigned t){\bkmkstart AAAAAAAASV} +{\bkmkend AAAAAAAASV} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +void {\b setNumberOfSteps} (unsigned T){\bkmkstart AAAAAAAASW} +{\bkmkend AAAAAAAASW} +\par +} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Public Attributes\par +\pard\plain + +{ +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b pos_r}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b pos_v}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b last_pos_r}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b last_pos_v}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b ini_pos}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b next_direction}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Matrix3Xd {\b pos_r_log}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Matrix3Xd {\b pos_v_log}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b in_obj_index}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b in_ply_index}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b CylinderCollisionSphere} {\b collision_sphere_cylinders}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b PLYCollisionSphere} {\b collision_sphere_ply}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +Eigen::Vector3d {\b initial_sphere_pos_v}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b steps_count}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b state} {\b status}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid + +{\b RelativeLocation} {\b initial_location}{\bkmkstart AAAAAAAASX} +{\bkmkend AAAAAAAASX} +\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +{\b RelativeLocation} {\b location}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +int {\b intra_extra_consensus}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b intra_coll_count}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned {\b extra_coll_count}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned int {\b index}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +unsigned int {\b rejection_count}\par +\pard\plain \s80\fi-360\li360\widctlpar\jclisttab\tx360{\*\pn \pnlvlbody\ilvl0\ls1\pnrnot0\pndec }\ls1\adjustright \fs20\cgrid +float {\b steps_per_second}\par +} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Detailed Description\par +\pard\plain +{ +\pard\plain \s17\sa60\sb30\widctlpar\qj \fs22\cgrid {\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Spin Final class =============================================================/. \par +} + +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Basic unit of the diffusion process.\par +{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Author:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid Jonathan Rafael \par +}{{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Date:\par}\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid November 2016 {\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid {\tc\tcl3 0.2 } \par} +}Alias for a particle. Basic unit on the simulation process. Saves all the necessary information to perform the particles dynamics. \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Enumeration Documentation\par +\pard\plain +{\xe \v RelativeLocation\:Walker} +{\xe \v Walker\:RelativeLocation} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +enum {\b Walker::RelativeLocation}}} +\par +{\bkmkstart AAAAAAAASY} +{\bkmkend AAAAAAAASY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +An enum. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Possible location of the walker inside the voxel. Checks illegal crossings of the barrier (border, lol) \par +}} +{\xe \v state\:Walker} +{\xe \v Walker\:state} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +enum {\b Walker::state}}} +\par +{\bkmkstart AAAAAAAASZ} +{\bkmkend AAAAAAAASZ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +An enum. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +All the possibles states that a walker can be in a given step. The next step is perform according to this state \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Constructor & Destructor Documentation\par +\pard\plain +{\xe \v Walker\:Walker} +{\xe \v Walker\:Walker} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Walker::Walker ()}} +\par +{\bkmkstart AAAAAAAATA} +{\bkmkend AAAAAAAATA} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Default constructor. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Set all variables to cero.\par +Based class {\b Walker}. \par +}} +{\xe \v ~Walker\:Walker} +{\xe \v Walker\:~Walker} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Walker::~Walker (){\f2 [inline]}}} +\par +{\bkmkstart AAAAAAAATB} +{\bkmkend AAAAAAAATB} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Default destructor.\par +Does nothing \par +}} +{\xe \v Walker\:Walker} +{\xe \v Walker\:Walker} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Walker::Walker (double {\i xmin}, double {\i xmax}, double {\i ymin}, double {\i ymax}, double {\i zmin}, double {\i zmax})}} +\par +{\bkmkstart AAAAAAAATC} +{\bkmkend AAAAAAAATC} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +\par +{ +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Constructor. }}\par +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Initialize the walker position in a random position inside the boundaries defined by the limits. {\par +{\s5\sb90\sa30\keepn\widctlpar\adjustright \b\f1\fs20\cgrid +Parameters:\par} +\pard\plain \s61\li360\widctlpar\ql\adjustright \fs20\cgrid \trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i xmin} \cell }{lower x threshold \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i xmax} \cell }{upper x threshold \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i ymin} \cell }{lower y threshold \cell } +{\row } +\trowd \trgaph108\trleft426\tblind426\trbrdrt\brdrs\brdrw10\brdrcf15 \trbrdrl\brdrs\brdrw10\brdrcf15 \trbrdrb\brdrs\brdrw10\brdrcf15 \trbrdrr\brdrs\brdrw10\brdrcf15 \trbrdrh\brdrs\brdrw10\brdrcf15 \trbrdrv\brdrs\brdrw10\brdrcf15 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx2187 +\clvertalt\clbrdrt\brdrs\brdrw10\brdrcf15 \clbrdrl\brdrs\brdrw10\brdrcf15 \clbrdrb\brdrs\brdrw10\brdrcf15 \clbrdrr \brdrs\brdrw10\brdrcf15 \cltxlrtb \cellx8748 +\pard \widctlpar\intbl\adjustright +{{\i ymax} \cell }{upper y threshold \cell } +{\row } +} +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +\pard\plain \s3\sb240\sa60\keepn\widctlpar\adjustright \b\f1\cgrid +Member Data Documentation\par +\pard\plain +{\xe \v collision_sphere_cylinders\:Walker} +{\xe \v Walker\:collision_sphere_cylinders} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b CylinderCollisionSphere} Walker::collision_sphere_cylinders}} +\par +{\bkmkstart AAAAAAAATD} +{\bkmkend AAAAAAAATD} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Collision} sphere for collition against cylidners \par +}} +{\xe \v collision_sphere_ply\:Walker} +{\xe \v Walker\:collision_sphere_ply} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b PLYCollisionSphere} Walker::collision_sphere_ply}} +\par +{\bkmkstart AAAAAAAATE} +{\bkmkend AAAAAAAATE} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Collision} sphere for collition against PLY meshes \par +}} +{\xe \v extra_coll_count\:Walker} +{\xe \v Walker\:extra_coll_count} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned Walker::extra_coll_count}} +\par +{\bkmkstart AAAAAAAATF} +{\bkmkend AAAAAAAATF} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +counter of collision in the extra-side w/r the normal \par +}} +{\xe \v in_obj_index\:Walker} +{\xe \v Walker\:in_obj_index} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int Walker::in_obj_index}} +\par +{\bkmkstart AAAAAAAATG} +{\bkmkend AAAAAAAATG} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliar index to save if the walker was inside a convex object \par +}} +{\xe \v in_ply_index\:Walker} +{\xe \v Walker\:in_ply_index} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int Walker::in_ply_index}} +\par +{\bkmkstart AAAAAAAATH} +{\bkmkend AAAAAAAATH} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliar index to save if the walker was inside a convex ply object \par +}} +{\xe \v index\:Walker} +{\xe \v Walker\:index} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned int Walker::index}} +\par +{\bkmkstart AAAAAAAATI} +{\bkmkend AAAAAAAATI} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Walker} identifier (id) \par +}} +{\xe \v ini_pos\:Walker} +{\xe \v Walker\:ini_pos} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Walker::ini_pos}} +\par +{\bkmkstart AAAAAAAATJ} +{\bkmkend AAAAAAAATJ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Walker} intital position \par +}} +{\xe \v initial_sphere_pos_v\:Walker} +{\xe \v Walker\:initial_sphere_pos_v} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Walker::initial_sphere_pos_v}} +\par +{\bkmkstart AAAAAAAATK} +{\bkmkend AAAAAAAATK} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Saves the intial positioon of the walker inside the collition sphere \par +}} +{\xe \v intra_coll_count\:Walker} +{\xe \v Walker\:intra_coll_count} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned Walker::intra_coll_count}} +\par +{\bkmkstart AAAAAAAATL} +{\bkmkend AAAAAAAATL} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +counter of collision in the \'EFntra-side w/r the normal \par +}} +{\xe \v intra_extra_consensus\:Walker} +{\xe \v Walker\:intra_extra_consensus} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +int Walker::intra_extra_consensus}} +\par +{\bkmkstart AAAAAAAATM} +{\bkmkend AAAAAAAATM} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +intra o extra position by face collision consensus w/r the normal \par +}} +{\xe \v last_pos_r\:Walker} +{\xe \v Walker\:last_pos_r} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Walker::last_pos_r}} +\par +{\bkmkstart AAAAAAAATN} +{\bkmkend AAAAAAAATN} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Walker} voxel last position \par +}} +{\xe \v last_pos_v\:Walker} +{\xe \v Walker\:last_pos_v} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Walker::last_pos_v}} +\par +{\bkmkstart AAAAAAAATO} +{\bkmkend AAAAAAAATO} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Walker} real last position \par +}} +{\xe \v location\:Walker} +{\xe \v Walker\:location} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b RelativeLocation} Walker::location}} +\par +{\bkmkstart AAAAAAAATP} +{\bkmkend AAAAAAAATP} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +location on the substrate (if known) \par +}} +{\xe \v next_direction\:Walker} +{\xe \v Walker\:next_direction} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Walker::next_direction}} +\par +{\bkmkstart AAAAAAAATQ} +{\bkmkend AAAAAAAATQ} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Auxiliar vector for special states cases, decides the next direction \par +}} +{\xe \v pos_r\:Walker} +{\xe \v Walker\:pos_r} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Walker::pos_r}} +\par +{\bkmkstart AAAAAAAATR} +{\bkmkend AAAAAAAATR} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Real walker position for collision, r stands for real \par +}} +{\xe \v pos_r_log\:Walker} +{\xe \v Walker\:pos_r_log} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Matrix3Xd Walker::pos_r_log}} +\par +{\bkmkstart AAAAAAAATS} +{\bkmkend AAAAAAAATS} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +log of the real spin position, used to compute the phase shift \par +}} +{\xe \v pos_v\:Walker} +{\xe \v Walker\:pos_v} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Vector3d Walker::pos_v}} +\par +{\bkmkstart AAAAAAAATT} +{\bkmkend AAAAAAAATT} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +{\b Walker} current position \par +}} +{\xe \v pos_v_log\:Walker} +{\xe \v Walker\:pos_v_log} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +Eigen::Matrix3Xd Walker::pos_v_log}} +\par +{\bkmkstart AAAAAAAATU} +{\bkmkend AAAAAAAATU} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +log of the voxel position, used for collision location and bouncing \par +}} +{\xe \v rejection_count\:Walker} +{\xe \v Walker\:rejection_count} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned int Walker::rejection_count}} +\par +{\bkmkstart AAAAAAAATV} +{\bkmkend AAAAAAAATV} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +counter of the rejected directions in a single time-step \par +}} +{\xe \v status\:Walker} +{\xe \v Walker\:status} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +{\b state} Walker::status}} +\par +{\bkmkstart AAAAAAAATW} +{\bkmkend AAAAAAAATW} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +state memeber \par +}} +{\xe \v steps_count\:Walker} +{\xe \v Walker\:steps_count} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +unsigned Walker::steps_count}} +\par +{\bkmkstart AAAAAAAATX} +{\bkmkend AAAAAAAATX} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Counts the number of steps (including bouncings) made. \par +}} +{\xe \v steps_per_second\:Walker} +{\xe \v Walker\:steps_per_second} +\pard\plain \s4\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs20\cgrid { +{\b +float Walker::steps_per_second}} +\par +{\bkmkstart AAAAAAAATY} +{\bkmkend AAAAAAAATY} +{ +\pard\plain \s51\li360\sa60\sb30\qj\widctlpar\qj\adjustright \fs20\cgrid +{\s17\sa60\sb30\widctlpar\qj \fs22\cgrid +Particles steps per second speeed. \par +}} +{\pard\widctlpar\brdrb\brdrs\brdrw5\brsp20 \adjustright \par} +The documentation for this class was generated from the following files:{\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/walker.h\par +\pard\plain \s81\fi-360\li720\widctlpar\jclisttab\tx720{\*\pn \pnlvlbody\ilvl0\ls2\pnrnot0\pndec }\ls2\adjustright \fs20\cgrid +src/walker.cpp\par +} +\pard\plain \sect\sbkpage +\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid +\s1\sb240\sa60\keepn\widctlpar\adjustright \b\f1\fs36\kerning36\cgrid Index\par +\pard\plain +{\tc \v Index} +{\field\fldedit {\*\fldinst INDEX \\c2 \\*MERGEFORMAT}{\fldrslt INDEX}} +} \ No newline at end of file diff --git a/doc/xml/_r_e_a_d_m_e_8md.xml b/doc/xml/_r_e_a_d_m_e_8md.xml new file mode 100644 index 0000000..d6fa8fe --- /dev/null +++ b/doc/xml/_r_e_a_d_m_e_8md.xml @@ -0,0 +1,25 @@ + + + + README.md + + + + + +##MonteCarloDiffusionandCollisionSimulator + +#Staticbuildingfromsources: + +####Assumingabinfolder: + +Cretesafolder +`mkdirbin` + +Compilesallthemagic(statically,slowly,butwithoutmessy.o) + +`g++-O3-std=c++11-lpthread-std=c++0x-pthread-I.main.cppsimulablesequence.cppvertex.cppobstacle.cppcollision.cppscheme.cppvoxel.cppcylinder.cppwalker.cppmcsimulation.cppparallelmcsimulation.cpptrajectory.cpptriangle.cppparameters.cppplyobstacle.cpppgsesequence.cppdynamicsSimulation.cppsimerrno.cppcollisionsphere.cppcylindergammadistribution.cppsentinel.cppsubdivision.cppgradientwaveform.cpppropagator.cpp-obin/MC-DC_Simulator` + + + + diff --git a/doc/xml/class_collision.xml b/doc/xml/class_collision.xml new file mode 100644 index 0000000..4c0edec --- /dev/null +++ b/doc/xml/class_collision.xml @@ -0,0 +1,358 @@ + + + + Collision + collision.h + + + collision_type + + hit + + + + + + + near + + + + + + + null + + + + + + + boundary + + + + + + + degenerate + + + + + + + + +All the possibles cases or situations where a step can end. The next step is performed according to this state + + + + + + collision_location + + inside + + + + + + + on_edge + + + + + + + on_vertex + + + + + + + voxel + + + + + + + outside + + + + + + + unknown + + + + + + + + +Only in case of collision (or a very close ending position) this are the cases where the collision can happened. + + + + + + + + collision_type + collision_type Collision::type + + type + + + +Saves the type of collsion (if any) + + + + + + collision_location + collision_location Collision::col_location + + col_location + + + +Save the colocation of the collision over the object + + + + + + Eigen::Vector3d + Eigen::Vector3d Collision::colision_point + + colision_point + + + +Saves the position of colision + + + + + + Eigen::Vector3d + Eigen::Vector3d Collision::bounced_direction + + bounced_direction + + + +Save the bounced direction for a given obstacle + + + + + + double + double Collision::rn + + rn + + + +saves the local orietnation between the wall and the particle + + + + + + double + double Collision::u + + u + + + +u position in baricentric coordinates + + + + + + double + double Collision::v + + v + + + +v position in baricentric coordinates + + + + + + double + double Collision::t + + t + + + +signed, collision distance + + + + + + int + int Collision::triangle_ind + + triangle_ind + + + +In case of a PLY obstacle saves the triangle index. t collison distance + + + + + + int + int Collision::obstacle_ind + + obstacle_ind + + + +In case of a generic obstacle saves the obstacle index. + + + + + + + + + Collision::Collision + () + Collision + + + + + + + + + + + Collision::Collision + (double u_, double v_, double t_) + Collision + + double + u_ + + + double + v_ + + + double + t_ + + + + + + + + + + + + Collision::~Collision + () + ~Collision + +Does nothing. + + + + + + + + bool + bool Collision::doIHaveMorePiorityThan + (Collision &coll) + doIHaveMorePiorityThan + + Collision & + coll + + +Compares a second collision to determine which one has more priority. The comparison is based on the type of collision and distance. + + + + + + + + void + Collision::computeCollisionLocation + () + computeCollisionLocation + +Computes, based on the the coordinates u,v,t of the collision, the location relative to the triangle. + +Auxiliar function for Triangular barriers + + + + + + +Collision Final class =====================================================================/. + +Class to save and handle collisions between walkers and objects. Jonathan Rafael November 2016 + +Class to save and handle collisions between walkers and objects.This class should handle all the cases where a collision can happened as well as all the operation between collision. + + + Collisionbounced_direction + Collisionboundary + Collisioncol_location + Collisioncolision_point + CollisionCollision + CollisionCollision + Collisioncollision_location + Collisioncollision_type + CollisioncomputeCollisionLocation + Collisiondegenerate + CollisiondoIHaveMorePiorityThan + Collisionhit + Collisioninside + Collisionnear + Collisionnull + Collisionobstacle_ind + Collisionon_edge + Collisionon_vertex + Collisionoutside + Collisionrn + Collisiont + Collisiontriangle_ind + Collisiontype + Collisionu + Collisionunknown + Collisionv + Collisionvoxel + Collision~Collision + + + diff --git a/doc/xml/class_collisionsphere.xml b/doc/xml/class_collisionsphere.xml new file mode 100644 index 0000000..cd3d5c2 --- /dev/null +++ b/doc/xml/class_collisionsphere.xml @@ -0,0 +1,93 @@ + + + + Collisionsphere + CylinderCollisionSphere + PLYCollisionSphere + + + float + float Collisionsphere::big_sphere_distance + + big_sphere_distance + + + +Size of the big (outer) collision sphere + + + + + + float + float Collisionsphere::small_sphere_distance + + small_sphere_distance + + + +Size of the small (inner) collision sphere + + + + + + unsigned + unsigned Collisionsphere::list_size + + list_size + + + + + + + + + + + + + Collisionsphere::Collisionsphere + () + Collisionsphere + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collisionspherebig_sphere_distance + CollisionsphereCollisionsphere + Collisionspherelist_size + Collisionspheresmall_sphere_distance + + + diff --git a/doc/xml/class_collisionspheren.xml b/doc/xml/class_collisionspheren.xml new file mode 100644 index 0000000..ecf40dd --- /dev/null +++ b/doc/xml/class_collisionspheren.xml @@ -0,0 +1,16 @@ + + + + Collisionspheren + collisionsphere.h + +Collision Final class ============================================================================/. + +Class to implement spherical bounding boxes for the WALKER mean diffusion. This class provides methods in order to create and update spherical bounding boxes used to compute the collisions. Jonathan Rafael February 2017 + +Father class. this class provides methods in order to create and update spherical bounding box used to compute the collisions. The implementation is based on two collision spheres. The inner one (small) and the (outer). The fist saves the objects where th particle MAY collide in a given time, While the second saves the full set of obstacles where the particle can possibly collide, i.e. that are physically achievable for the walker to collide. + + + + + diff --git a/doc/xml/class_cylinder.xml b/doc/xml/class_cylinder.xml new file mode 100644 index 0000000..8a7c52c --- /dev/null +++ b/doc/xml/class_cylinder.xml @@ -0,0 +1,425 @@ + + + + Cylinder + Obstacle + cylinder.h + + + int + int Cylinder::count + + count + = 0 + + + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d Cylinder::P + + P + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d Cylinder::Q + + Q + + + +Cilinder Axis reference Points, P should be the "center" + + + + + + Eigen::Vector3d + Eigen::Vector3d Cylinder::D + + D + + + +Pre-computed and normalized P - Q vector + + + + + + double + double Cylinder::radius + + radius + + + +Radius of the cylinder + + + + + + + + + Cylinder::Cylinder + () + Cylinder + +Default constructor. Does nothing. + + + + + + + + + Cylinder::~Cylinder + () + ~Cylinder + + + + + + + + + + + Cylinder::Cylinder + (Eigen::Vector3d P_, Eigen::Vector3d Q_, double radius_, double scale=1) + Cylinder + + Eigen::Vector3d + P_ + + + Eigen::Vector3d + Q_ + + + double + radius_ + + + double + scale + 1 + + +Initialize everything. + + + +P_ + + +Cylinder origin + + + +Q_ + + +cylinder direction. + + + +radius_ + + +cylinder's radius + + + +scale + + +scale factor for the values passed. Useful when reading a file. + + + + + + + + + + Cylinder::Cylinder + (Cylinder const &cyl) + Cylinder + + Cylinder const & + cyl + + +Initialize everything. + + + +P_ + + +Cylinder origin + + + +Q_ + + +cylinder direction. + + + +radius_ + + +cylinder's radius + + + +scale + + +scale factor for the values passed. Useful when reading a file. + + + + + + + + + bool + Cylinder::checkCollision + (Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision) + checkCollision + + Walker & + walker + + + Eigen::Vector3d & + step + + + double & + step_lenght + + + Collision & + colision + + +Basic collision function. Returns the if there was any collision on against the obstacle. + + + +walker +Walker + + +instance in the simulation. + + + +3d + + +step. Is assumed to be normalized. + + + +step_length +length + + +used as the maximum step collision distance. + + + +collision +Collision + + +instance to save the collision (if any) details. + + +true only if there was a Collision::hit status. +Collision. + + + + + + + double + Cylinder::minDistance + (Walker &w) + minDistance + + Walker & + w + + +Returns the minimum distance from the walker to the cylinder. Used to set the reachable cylinders that a given walker can reach. + + + +walker +Walker + + +instance in the simulation. + + + + + + + + + + + bool + Cylinder::handleCollition + (Walker &walker, Collision &colision, Eigen::Vector3d &step, double &a, double &b, double &c, double &discr, double &step_length) + handleCollition + + Walker & + walker + + + Collision & + colision + + + Eigen::Vector3d & + step + + + double & + a + + + double & + b + + + double & + c + + + double & + discr + + + double & + step_length + + +Returns true if it was any analytical collision to the infinite plane. + + + +walker +Walker + + +instance in the simulation. + + + +collision +Collision + + +instance to save all the information. + + + +step +step + + +vector where to move. + + + + + + + + + +Cylinder Obstacle Derived Class =============================================================/. + +Cylinder class derived from an Obstacle. Defines infinite long cylinders in the direction set by P,Q. Jonathan Rafael +November 2016 1.42 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CylindercheckCollision + CylindercheckCollision + Cylindercount + Cylindercount_perc_crossings + CylinderCylinder + CylinderCylinder + CylinderCylinder + CylinderD + CylinderelasticBounceAgainsPlane + CylinderhandleCollition + Cylinderid + CylinderminDistance + CylinderObstacle + CylinderP + Cylinderpercolation + CylinderQ + Cylinderradius + CylinderT2 + Cylinder~Cylinder + + + diff --git a/doc/xml/class_cylinder_collision_sphere.xml b/doc/xml/class_cylinder_collision_sphere.xml new file mode 100644 index 0000000..bef0191 --- /dev/null +++ b/doc/xml/class_cylinder_collision_sphere.xml @@ -0,0 +1,253 @@ + + + + CylinderCollisionSphere + Collisionsphere + collisionsphere.h + + + unsigned + unsigned CylinderCollisionSphere::small_sphere_list_end + + small_sphere_list_end + + + +Index of the LAST element on the list for the small collision sphere + + + + + + unsigned + unsigned CylinderCollisionSphere::big_sphere_list_end + + big_sphere_list_end + + + +Index of the LAST element on the list for the big collision sphere + + + + + + std::vector< unsigned > * + std::vector<unsigned>* CylinderCollisionSphere::collision_list + + collision_list + + + + + + + + + + + + + CylinderCollisionSphere::CylinderCollisionSphere + () + CylinderCollisionSphere + + + +<Pointer to List with the cylinders indexes. The indexes are permuted in its position. + + + + + + void + void CylinderCollisionSphere::popFromSmallSphere + (unsigned i) + popFromSmallSphere + + unsigned + i + + +This function receives a index from the collision list and moves the value to the last position of the list. then decrease the inner sphere end index. This way this index is no longer considered inner collision list. + + + + + + + + void + void CylinderCollisionSphere::pushToSmallSphere + (unsigned i) + pushToSmallSphere + + unsigned + i + + +This function receives a index from the collision list and moves the value to the last position of the list. then increase the inner sphere end index. This way this index is now included in the inner collision list. + + + + + + + + void + void CylinderCollisionSphere::popFromBigSphere + (unsigned i) + popFromBigSphere + + unsigned + i + + +This function receives a index from the collision list and moves the value to the last position of the list. Then decrease the inner sphere end index. This way this index is now excluded in the outer collision list. + + + + + + + + void + void CylinderCollisionSphere::pushToBigSphere + (unsigned i) + pushToBigSphere + + unsigned + i + + +This function receives a index from the collision list and moves the value to the last position of the list. Then increase the inner sphere end index. This way this index is now included in the outer collision list. + + + + + + + + void + void CylinderCollisionSphere::setBigSphereSize + (float size) + setBigSphereSize + + float + size + + + + + + +size + + +of the list + + + + + + + + + void + void CylinderCollisionSphere::setSmallSphereSize + (float size) + setSmallSphereSize + + float + size + + + + + + +size + + +of the list + + + + + + + + + void + void CylinderCollisionSphere::push_index + (unsigned int element) + push_index + + unsigned int + element + + + + + + +element + + +value to be added to the obstacle list + + + + + + + + + +Class to save the cylinderical obstacles that a can collide to a walker. + +Class to save the PLY mehses and the subset of triangles that a can collide to a walker. + + + + + + + + + + + + + + + + + + + + + + + + + + + CylinderCollisionSpherebig_sphere_distance + CylinderCollisionSpherebig_sphere_list_end + CylinderCollisionSpherecollision_list + CylinderCollisionSphereCollisionsphere + CylinderCollisionSphereCylinderCollisionSphere + CylinderCollisionSpherelist_size + CylinderCollisionSpherepopFromBigSphere + CylinderCollisionSpherepopFromSmallSphere + CylinderCollisionSpherepush_index + CylinderCollisionSpherepushToBigSphere + CylinderCollisionSpherepushToSmallSphere + CylinderCollisionSpheresetBigSphereSize + CylinderCollisionSpheresetSmallSphereSize + CylinderCollisionSpheresmall_sphere_distance + CylinderCollisionSpheresmall_sphere_list_end + + + diff --git a/doc/xml/class_cylinder_gamma_distribution.xml b/doc/xml/class_cylinder_gamma_distribution.xml new file mode 100644 index 0000000..d2d27f2 --- /dev/null +++ b/doc/xml/class_cylinder_gamma_distribution.xml @@ -0,0 +1,467 @@ + + + + CylinderGammaDistribution + cylindergammadistribution.h + + + unsigned + unsigned CylinderGammaDistribution::num_cylinders + + num_cylinders + + + +number of cylnders fit inside the substrate + + + + + + double + double CylinderGammaDistribution::alpha + + alpha + + + +alpha coefficient of the Gamma distribution + + + + + + double + double CylinderGammaDistribution::beta + + beta + + + +beta coefficient of the gamma distribution + + + + + + double + double CylinderGammaDistribution::icvf + + icvf + + + +Achieved intra-celular volum fraction in the substrate + + + + + + float + float CylinderGammaDistribution::min_radius + + min_radius + + + +Minimum radius to be sampled from the gamma distribution + + + + + + Eigen::Vector3d + Eigen::Vector3d CylinderGammaDistribution::min_limits + + min_limits + + + +voxel min limits (if any) (bottom left corner) + + + + + + Eigen::Vector3d + Eigen::Vector3d CylinderGammaDistribution::max_limits + + max_limits + + + +voxel max limits (if any) + + + + + + std::vector< Cylinder > + std::vector<Cylinder> CylinderGammaDistribution::cylinders + + cylinders + + + +Cylinder vector + + + + + + + + + CylinderGammaDistribution::CylinderGammaDistribution + (unsigned, double, double, double, Eigen::Vector3d &, Eigen::Vector3d &, float min_radius) + CylinderGammaDistribution + + unsigned + num_cyl + + + double + a + + + double + b + + + double + icvf_ + + + Eigen::Vector3d & + min_l + + + Eigen::Vector3d & + max_l + + + float + min_radius + + +Initialize everything. + + + +P_ + + +Cylinder origin + + + +Q_ + + +cylinder direction. + + + +radius_ + + +cylinder's radius + + + +scale + + +scale factor for the values passed. Useful when reading a file. + + + + + + + + + void + void CylinderGammaDistribution::displayGammaDistribution + () + displayGammaDistribution + +Shows a small histogram of the gamma distribution. + + + + + + + + void + void CylinderGammaDistribution::createGammaSubstrate + () + createGammaSubstrate + +Samples and constructs a Gamma distribution. + + + + + + + + void + void CylinderGammaDistribution::printSubstrate + (std::ostream &out) + printSubstrate + + std::ostream & + out + + +Prints the cylinders positions in a file or output stream. + + + +out + + +ostream where to write the info. + + + + + + + + + + + bool + bool CylinderGammaDistribution::checkForCollition + (Cylinder cyl, Eigen::Vector3d min_limits, Eigen::Vector3d max_limits, std::vector< Cylinder > &cylinders_list, double &min_distance) + checkForCollition + + Cylinder + cyl + + + Eigen::Vector3d + min_limits + + + Eigen::Vector3d + max_limits + + + std::vector< Cylinder > & + cylinders_list + + + double & + min_distance + + +Checks for collision between inside a voxel (with periodic boundaries) + + + +cyl + + +cylinder to check collision with + + + +min_limits + + +Voxel min limits. + + + +max_limits + + +Voxel max limits. + + + +cylinders_list + + +cylinders already added. + + + +min_distance + + +that two cylinders can be close to. + + + + + + + + + void + void CylinderGammaDistribution::checkBoundaryConditions + (Cylinder cyl, std::vector< Cylinder > &cylinders_list, Eigen::Vector3d min_limits, Eigen::Vector3d max_limits) + checkBoundaryConditions + + Cylinder + cyl + + + std::vector< Cylinder > & + cylinders_list + + + Eigen::Vector3d + min_limits + + + Eigen::Vector3d + max_limits + + +Auxiliary function to check the BOundary collision. + + + +cyl + + +cylinder to check collision with. + + + +min_limits + + +Voxel min limits. + + + +max_limits + + +Voxel max limits. + + + +cylinders_list + + +cylinders already added. + + + + + + + + + double + double CylinderGammaDistribution::computeICVF + (std::vector< Cylinder > &cylinders, Eigen::Vector3d &min_limits, Eigen::Vector3d &max_limits, int &num_no_repeat) + computeICVF + + std::vector< Cylinder > & + cylinders + + + Eigen::Vector3d & + min_limits + + + Eigen::Vector3d & + max_limits + + + int & + num_no_repeat + + +Computes Intra Celular Volum Fraction given the voxel limits and the list of added cylinders. + + + +cylinders + + +List of included cylinders. + + + +min_limits + + +voxel min limits. + + + +max_limits + + +voxel max limits. + + + + + + + + + void + void CylinderGammaDistribution::computeMinimalSize + (std::vector< double > radiis, double icvf_, Eigen::Vector3d &l) + computeMinimalSize + + std::vector< double > + radiis + + + double + icvf_ + + + Eigen::Vector3d & + l + + + + + + + + + + + +CylinderGammaDistribution Class =============================================================/. + +Class to construct a substrate taken from a Gamma distribution of radiis placed in a single voxel structure. Jonathan Rafael +february 2017 0.2 + + + + + CylinderGammaDistributionalpha + CylinderGammaDistributionbeta + CylinderGammaDistributioncheckBoundaryConditions + CylinderGammaDistributioncheckForCollition + CylinderGammaDistributioncomputeICVF + CylinderGammaDistributioncomputeMinimalSize + CylinderGammaDistributioncreateGammaSubstrate + CylinderGammaDistributionCylinderGammaDistribution + CylinderGammaDistributioncylinders + CylinderGammaDistributiondisplayGammaDistribution + CylinderGammaDistributionicvf + CylinderGammaDistributionmax_limits + CylinderGammaDistributionmin_limits + CylinderGammaDistributionmin_radius + CylinderGammaDistributionnum_cylinders + CylinderGammaDistributionprintSubstrate + + + diff --git a/doc/xml/class_dynamics_simulation.xml b/doc/xml/class_dynamics_simulation.xml new file mode 100644 index 0000000..2950589 --- /dev/null +++ b/doc/xml/class_dynamics_simulation.xml @@ -0,0 +1,1539 @@ + + + + DynamicsSimulation + dynamicsSimulation.h + + + Parameters + Parameters DynamicsSimulation::params + + params + + + +Parameters handler instance + + + + + + Walker + Walker DynamicsSimulation::walker + + walker + + + +Single walker to diffuse + + + + + + Trajectory + Trajectory DynamicsSimulation::trajectory + + trajectory + + + +Trajectory instance. Handles i/o operations + + + + + + std::mt19937 + std::mt19937 DynamicsSimulation::mt + + mt + + + +rnd, random generator instance + + + + + + double + double DynamicsSimulation::step_lenght + + step_lenght + + + +l, step length + + + + + + double + double DynamicsSimulation::second_passed + + second_passed + + + +Simulation total time in seconds + + + + + + double + double DynamicsSimulation::max_simulation_time + + max_simulation_time + + + +Maximum simulation time if not passed we carry all the particles + + + + + + double + double DynamicsSimulation::completed + + completed + + + +Auxiliar variable to save the milestone of percentage of completed walkers + + + + + + std::string + std::string DynamicsSimulation::ini_pos_file + + ini_pos_file + + + +walkers intitial position file + + + + + + unsigned + unsigned DynamicsSimulation::ini_pos_file_ini_index + + ini_pos_file_ini_index + + + +starting position in the ini walker position file (multicore support) + + + + + + int + int DynamicsSimulation::id + + id + + + +Unique id for the dynamic simulation + + + + + + sentinels::Sentinel + sentinels::Sentinel DynamicsSimulation::sentinela + + sentinela + + + +Sentinel initialization to encoutner error in the simulation + + + + + + std::vector< PLYObstacle > * + std::vector<PLYObstacle>* DynamicsSimulation::plyObstacles_list + + plyObstacles_list + + + +pointer to a vector with all the instances of PLYObstacles + + + + + + std::vector< Cylinder > * + std::vector<Cylinder>* DynamicsSimulation::cylinders_list + + cylinders_list + + + +vector with all the isntances of "Cylider" obstacles + + + + + + std::vector< unsigned > + std::vector<unsigned> DynamicsSimulation::cylinders_deque + + cylinders_deque + + + +deque with the indexes of the cylinders (used for optmization) + + + + + + std::vector< std::vector< unsigned > > + std::vector<std::vector<unsigned> > DynamicsSimulation::ply_deque + + ply_deque + + + +deque with the indexes of the triangles of all ply's (used for opt) + + + + + + std::vector< Voxel > + std::vector<Voxel> DynamicsSimulation::voxels_list + + voxels_list + + + +vector with all the voxels to be simulated (if any) + + + + + + Propagator + Propagator DynamicsSimulation::propagator + + propagator + + + +Propagator object to compute and save the particles MSD + + + + + + double + double DynamicsSimulation::icvf + + icvf + + + +Stores the ICVF (1 - Intra-Extra) if needed + + + + + + unsigned + unsigned DynamicsSimulation::intra_tries + + intra_tries + + + + + + + + + + unsigned + unsigned DynamicsSimulation::total_tries + + total_tries + + + +Helper variables to compute the estimated ICVF + + + + + + Eigen::Vector3d + Eigen::Vector3d DynamicsSimulation::step + + step + + + + + + + + + + double + double DynamicsSimulation::time_step + + time_step + + + + + + + + + + double + double DynamicsSimulation::time_dt + + time_dt + + + + + + + + + + double + double DynamicsSimulation::last_time_dt + + last_time_dt + + + +simulation time steps auxiliar values + + + + + + std::ifstream + std::ifstream DynamicsSimulation::iniPos + + iniPos + + + + + + + + + + time_t + time_t DynamicsSimulation::start + + start + + + + + + + + + + time_t + time_t DynamicsSimulation::now + + now + + + +Auxiliar Variable for time recording and estimation for time. + + + + + + bool + bool DynamicsSimulation::print_expected_time + + print_expected_time + + + +Auxiliar flag for time recording and stimation for time. + + + + + + unsigned + unsigned DynamicsSimulation::num_simulated_walkers + + num_simulated_walkers + + + +Saves the final number of simulated walkers (time limit) + + + + + + unsigned + unsigned DynamicsSimulation::aux_walker_index + + aux_walker_index + + + + + + + + + + + + + DynamicsSimulation::DynamicsSimulation + () + DynamicsSimulation + +Default constructor. Initialize everything with 0's and NULL states, object indexes are set to -1. + +DynamicsSimulation implementation + + + + + + + DynamicsSimulation::DynamicsSimulation + (std::string conf_file) + DynamicsSimulation + + std::string + conf_file + + + + + + +configuration + + +file + + + + + + + + + + DynamicsSimulation::DynamicsSimulation + (Parameters &params_) + DynamicsSimulation + + Parameters & + params_ + + + + + + +Parameter + + +instance + + + + + + + + + + DynamicsSimulation::~DynamicsSimulation + () + ~DynamicsSimulation + +Does nothing. + + + + + + + + void + DynamicsSimulation::startSimulation + (SimulableSequence *dataSynth=nullptr) + startSimulation + + SimulableSequence * + dataSynth + nullptr + + +Starts the dynamics simulation and, if a PGSE sequence is given, computes the DW signal. + + + +dataSynth + + +optional paramter. If this parameter is not given, no signal is computed. + + + + + + + + + void + DynamicsSimulation::readConfigurationFile + (std::string conf_file_path) + readConfigurationFile + + std::string + conf_file_path + + +Reads all the parameters listed in the param conf_file and stores them in the /t params object. + + + +conf_file_path + + + + + +void + + +conf_file_path + + +paremeters file path. + + + + + + + + + void + DynamicsSimulation::setDuration + (const double &duration) + setDuration + + const double & + duration + + +Sets the simulation duration in milliseconds, this should be synchronized w/r the Time Echo. + + + +duration + + +simulation duration. + + + + + + + + + void + void DynamicsSimulation::setWalkersNum + (const unsigned &N) + setWalkersNum + + const unsigned & + N + + + + + + + + + + + void + void DynamicsSimulation::setStepsNum + (const unsigned &T) + setStepsNum + + const unsigned & + T + + + + + + + + + + + bool + DynamicsSimulation::isInIntra + (Eigen::Vector3d &position, int &cyl_id, int &ply_id, double distance_to_be_intra_ply=1e-6) + isInIntra + + Eigen::Vector3d & + position + + + int & + cyl_id + + + int & + ply_id + + + double + distance_to_be_intra_ply + 1e-6 + + +return true if the position is inside any of the obstacles. Only obstacles with a defined "inside region" can be considered. Voxel periodicity is not considered + + + +position + + +3d position on space. + + + +error + + +minimum distance to be considered "outside" de obstacle (barrier thickness) + + + + + + + + + void + void DynamicsSimulation::writePropagator + (std::string path) + writePropagator + + std::string + path + + +Writes to disk the final propagator matrix. + + + + + + + + bool + bool DynamicsSimulation::isInsideCylinders + (Eigen::Vector3d &position, int &cyl_id, double distance_to_be_inside=1e-6) + isInsideCylinders + + Eigen::Vector3d & + position + + + int & + cyl_id + + + double + distance_to_be_inside + 1e-6 + + + + + + + + + + + bool + bool DynamicsSimulation::isInsidePLY + (Eigen::Vector3d &position, int &ply_id, double distance_to_be_inside=1e-6) + isInsidePLY + + Eigen::Vector3d & + position + + + int & + ply_id + + + double + distance_to_be_inside + 1e-6 + + + + + + + + + + + + + std::string + string DynamicsSimulation::secondsToMinutes + (double) + secondsToMinutes + + double + t + + + + + + + + + + + + + void + DynamicsSimulation::generateStep + (Eigen::Vector3d &step, double l) + generateStep + + Eigen::Vector3d & + step + + + double + l + + +Computes a random generated orientation in the sphere with given norm. + +void + + +step + + +stores the computed step. + + + +l + + +step size. Can be used to change diffusivity in the medium. + + +TodoEnable the use of pre-computed steps. + + + + + + void + DynamicsSimulation::generateDirectedStep + (Eigen::Vector3d &new_step, Eigen::Vector3d &direction) + generateDirectedStep + + Eigen::Vector3d & + new_step + + + Eigen::Vector3d & + direction + + +Computes a random generated orientation and oriented it according to a given direction. + + + +new_step + + +stores the computed step. + + + +direction + + +the new step will be oriented toward this direction + + + + + + + + + bool + DynamicsSimulation::updateWalkerPosition + (Eigen::Vector3d &step) + updateWalkerPosition + + Eigen::Vector3d & + step + + +updates the walker position in a step iteration. The methods checks for collisions against all stored obstacles and voxels and updates the walker position(s) + +True if a bouncing in needed. + + +step + + +to be performed. + + +returns false if the was any problem. + + + + + + + bool + DynamicsSimulation::checkObstacleCollision + (Eigen::Vector3d &amended_step, double &tmax, Eigen::Vector3d &end_point, Collision &colision) + checkObstacleCollision + + Eigen::Vector3d & + amended_step + + + double & + tmax + + + Eigen::Vector3d & + end_point + + + Collision & + colision + + +Checks for collisions against any obstacle or voxels given a direction and a step size. Only the more the collision with the higher priority is saved /see Collision#. + + + +amended_step +step + + +to be "amended", this is corrected against bouncing and voxel limits + + + +tmax + + +maximum step size, this value is updated every time a bouncing is performed. + + + +end_points + + +final position where the walker lands. + + + +Collision +Collision + + +instance to store the walker collision (if any). + + +returns true if there was any collision. + + + + + + + bool + DynamicsSimulation::updateWalkerPositionAndHandleBouncing + (Eigen::Vector3d &amended_step, double &tmax, Collision &colision) + updateWalkerPositionAndHandleBouncing + + Eigen::Vector3d & + amended_step + + + double & + tmax + + + Collision & + colision + + +Function to follow a collision event. After a successful collision given by /a checkObstacleCollision this function will handle the collision and decide to ignore it (percolation), bouncing, or label it as a special case. + + + +amended_step +step + + +to be "amended", this is corrected against bouncing and voxel limits + + + +tmax + + +maximum step size, this value is updated every time a bouncing is performed. + + + +collision +Collision + + +instance to store the walker collision (if any). + + +returns true if the collision was a correct bouncing. + + + + + + + void + DynamicsSimulation::handleCollisions + (Collision &colision, Collision &colision_tmp, double &max_collision_distance, unsigned indx) + handleCollisions + + Collision & + colision + + + Collision & + colision_tmp + + + double & + max_collision_distance + + + unsigned + indx + + +Warping function to handle the priority between 2 collision in a single step. The method uses the inhered comparisson in the class. + + + +collision + + +A given collision with the highest priority so far. + + + +collision_temp + + +A second collision to compare with. + + + +max_collision_distance + + +maximum collision distance to be considered successful. + + + +ind + + +unique walker indx identifier. Not used in the version 0.2. + + +:Obstacle:. + + + + + + + void + void DynamicsSimulation::mapWalkerIntoVoxel + (Eigen::Vector3d &amended_step, Collision &colision, double barrier_thickness) + mapWalkerIntoVoxel + + Eigen::Vector3d & + amended_step + + + Collision & + colision + + + double + barrier_thickness + + + + + + + + + + + void + DynamicsSimulation::getTimeDt + (double &last_time_dt, double &time_dt, double &l, SimulableSequence *dataSynth, unsigned t, double time_step) + getTimeDt + + double & + last_time_dt + + + double & + time_dt + + + double & + l + + + SimulableSequence * + dataSynth + + + unsigned + t + + + double + time_step + + +Computes the step time. If the time steps are not dynamic this is just a constant sum. + + + +last_time_dt + + +saves the last time step; + + + +time_dt + + +actual time step; + + + +new + + +step size if the time was dynamic + + + +dataSynt + + +the PGSE sequence, if the steps are dynamic. + + + +t + + +number of step. + + + +time_step + + +size in milliseconds between steps. + + + + + + + + + void + DynamicsSimulation::initSimulation + () + initSimulation + +Initialize simulation variables and write (if needed) header files. + + + + + + + + bool + bool DynamicsSimulation::expectedTimeAndMaxTimeCheck + (unsigned w) + expectedTimeAndMaxTimeCheck + + unsigned + w + + + + + + + + + + + void + DynamicsSimulation::writeDWSignal + (SimulableSequence *dataSynth) + writeDWSignal + + SimulableSequence * + dataSynth + + +computes and writes the resulting diffusion signal for all the shells. + + + +dataSynth + + +Simuleable sequence used to the data Sythesis. NULL assumed to skip. + + + + + + + + + void + DynamicsSimulation::iniWalkerPosition + () + iniWalkerPosition + +initialize the first walker position depending if a file was passed, the voxel limits, ot any other flag (as it can be intra, extra, delta position (not implemented yet)). + +TodoAdd the flags " onlyIntra", "onlyExtra" and "singlePos". + + + + + + void + void DynamicsSimulation::updateWalkerObstacleIndexes + (unsigned t_) + updateWalkerObstacleIndexes + + unsigned + t_ + + +fill the list of indexes in walkers such that the obstacle is close enough for collision. + +TodoImplement the function minDistance for PLY's obstacles + + + + + + void + void DynamicsSimulation::initWalkerObstacleIndexes + () + initWalkerObstacleIndexes + +Initialize the list of obstacles indexes for the collision optimization. + +TodoTest the initialization for all the types of obstacles. + + + + + + void + void DynamicsSimulation::updateCollitionSphere + (unsigned t) + updateCollitionSphere + + unsigned + t + + +Updates the list of indexes inside the inner and outher collision spheres. + + + +t + + +number of steps in the simulation. Used to estimate the diffusion coeff. + + + + + + + + + void + void DynamicsSimulation::getAnIntraCellularPosition + (Eigen::Vector3d &intra_pos, int &cyl_ind, int &ply_ind) + getAnIntraCellularPosition + + Eigen::Vector3d & + intra_pos + + + int & + cyl_ind + + + int & + ply_ind + + +finds an intra celullar 3d position inside the voxel (needs a voxel initialized). + + + +intra_pos + + +vector to save the 3d position. + + + + + + + + + void + void DynamicsSimulation::getAnExtraCellularPosition + (Eigen::Vector3d &extra_pos) + getAnExtraCellularPosition + + Eigen::Vector3d & + extra_pos + + +finds an extra cellular 3d position inside the voxel (needs a voxel initialized). + + + +extra_pos + + +vector to save the 3d position. + + + + + + + + + bool + bool DynamicsSimulation::checkIfPosInsideVoxel + (Eigen::Vector3d &pos) + checkIfPosInsideVoxel + + Eigen::Vector3d & + pos + + +Auxiliary function to checks if a 3d position is still inside the voxel. + + + +pos + + +to check inside the voxel. + + + + + + + + + void + void DynamicsSimulation::initObstacleInformation + () + initObstacleInformation + +Auxiliary function to initialize the permeability as well as the list of obstacle's indexes for the collision optimization procedures. + + + + + + + + void + void DynamicsSimulation::updatePropagator + (Eigen::Matrix3Xd &log_pos_r) + updatePropagator + + Eigen::Matrix3Xd & + log_pos_r + + +Function to internally update the log of the propagator. + + + + + + + + void + void DynamicsSimulation::normalizePropagator + (float num_samples) + normalizePropagator + + float + num_samples + + +Function to internally normaliza the propagator using the final number of simualted signals. + + + + + + + + void + void DynamicsSimulation::computeICVF + () + computeICVF + + + + + + + + + + bool + bool DynamicsSimulation::finalPositionCheck + () + finalPositionCheck + + + + + + + + + + +Dynamic simulation main class =============================================================/. + +Main implementation of the particles dynamics. Handles collisions and bouncing Jonathan Rafael +November 2016 1.42 + +Main class, implements the particles dynamics. Handles collisions and bouncing. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sentinela + + + walker + + + trajectory + + + params + + + propagator + + + + + + + collision_sphere_ply + + + collision_sphere_cylinders + + + + + + DynamicsSimulationaux_walker_index + DynamicsSimulationcheckIfPosInsideVoxel + DynamicsSimulationcheckObstacleCollision + DynamicsSimulationcompleted + DynamicsSimulationcomputeICVF + DynamicsSimulationcylinders_deque + DynamicsSimulationcylinders_list + DynamicsSimulationDynamicsSimulation + DynamicsSimulationDynamicsSimulation + DynamicsSimulationDynamicsSimulation + DynamicsSimulationexpectedTimeAndMaxTimeCheck + DynamicsSimulationfinalPositionCheck + DynamicsSimulationgenerateDirectedStep + DynamicsSimulationgenerateStep + DynamicsSimulationgetAnExtraCellularPosition + DynamicsSimulationgetAnIntraCellularPosition + DynamicsSimulationgetTimeDt + DynamicsSimulationhandleCollisions + DynamicsSimulationicvf + DynamicsSimulationid + DynamicsSimulationini_pos_file + DynamicsSimulationini_pos_file_ini_index + DynamicsSimulationiniPos + DynamicsSimulationinitObstacleInformation + DynamicsSimulationinitSimulation + DynamicsSimulationinitWalkerObstacleIndexes + DynamicsSimulationiniWalkerPosition + DynamicsSimulationintra_tries + DynamicsSimulationisInIntra + DynamicsSimulationisInsideCylinders + DynamicsSimulationisInsidePLY + DynamicsSimulationlast_time_dt + DynamicsSimulationmapWalkerIntoVoxel + DynamicsSimulationmax_simulation_time + DynamicsSimulationmt + DynamicsSimulationnormalizePropagator + DynamicsSimulationnow + DynamicsSimulationnum_simulated_walkers + DynamicsSimulationparams + DynamicsSimulationply_deque + DynamicsSimulationplyObstacles_list + DynamicsSimulationprint_expected_time + DynamicsSimulationpropagator + DynamicsSimulationreadConfigurationFile + DynamicsSimulationsecond_passed + DynamicsSimulationsecondsToMinutes + DynamicsSimulationsentinela + DynamicsSimulationsetDuration + DynamicsSimulationsetStepsNum + DynamicsSimulationsetWalkersNum + DynamicsSimulationstart + DynamicsSimulationstartSimulation + DynamicsSimulationstep + DynamicsSimulationstep_lenght + DynamicsSimulationtime_dt + DynamicsSimulationtime_step + DynamicsSimulationtotal_tries + DynamicsSimulationtrajectory + DynamicsSimulationupdateCollitionSphere + DynamicsSimulationupdatePropagator + DynamicsSimulationupdateWalkerObstacleIndexes + DynamicsSimulationupdateWalkerPosition + DynamicsSimulationupdateWalkerPositionAndHandleBouncing + DynamicsSimulationvoxels_list + DynamicsSimulationwalker + DynamicsSimulationwriteDWSignal + DynamicsSimulationwritePropagator + DynamicsSimulation~DynamicsSimulation + + + diff --git a/doc/xml/class_gradient_waveform.xml b/doc/xml/class_gradient_waveform.xml new file mode 100644 index 0000000..97cac4a --- /dev/null +++ b/doc/xml/class_gradient_waveform.xml @@ -0,0 +1,524 @@ + + + + GradientWaveform + SimulableSequence + gradientwaveform.h + + + double + double GradientWaveform::TE + + TE + + + +Time Echo. + + + + + + uint + uint GradientWaveform::T + + T + + + +num bins (time steps) + + + + + + double + double GradientWaveform::dyn_duration + + dyn_duration + + + +simulation duration (miliseconds) + + + + + + int + int GradientWaveform::wave_bins + + wave_bins + + + +Wave discretization + + + + + + double + double GradientWaveform::wave_duration + + wave_duration + + + +Wave duration (should be less qeual than dyn_dur.) + + + + + + double + double GradientWaveform::dt + + dt + + + +individual time steps (miliseconds) of the wave + + + + + + bool + bool GradientWaveform::scale_from_stu + + scale_from_stu + + + +True if the input is in standar units + + + + + + std::vector< std::vector< float > > + std::vector< std::vector<float> > GradientWaveform::waveform + + waveform + + + +Defined waveforms + + + + + + Trajectory + Trajectory GradientWaveform::trajectory + + trajectory + + + +If the signal is computed from a .trajfile + + + + + + + + + GradientWaveform::GradientWaveform + () + GradientWaveform + +Default constructor, set default NULL values. Not to be used. + + + + + + + + + GradientWaveform::GradientWaveform + (Scheme &scheme) + GradientWaveform + + Scheme & + scheme + + +Main constructor. Takes a pre-loaded Scheme file. + + + + + + + + + GradientWaveform::GradientWaveform + (Scheme &scheme_, const char *traj_file_name) + GradientWaveform + + Scheme & + scheme_ + + + const char * + traj_file_name + + +Main constructor. Takes a pre-loaded Scheme file and a traj file name. if this argument is passed a traj file is should be written. + + + + + + + + double + double GradientWaveform::getNumericalbValue + (unsigned) + getNumericalbValue + + unsigned + + + + +not implemented yet. + + + + + + + void + void GradientWaveform::getDWISignal + () + getDWISignal + +Computes de DW signal from a trajfile. + + + + + + + + void + void GradientWaveform::readSchemeFile + () + readSchemeFile + +reads the waveform + + + + + + + + void + void GradientWaveform::getInterpolatedGradImpulse + (uint rep_index, double dt_sim, double t_sim_last, Eigen::Vector3d &Gdt) + getInterpolatedGradImpulse + + uint + rep_index + + + double + dt_sim + + + double + t_sim_last + + + Eigen::Vector3d & + Gdt + + +For using with the adt array. + + + + + + + + void + void GradientWaveform::update_phase_shift + (double time_step, Eigen::Matrix3Xd trajectory) + update_phase_shift + update_phase_shift + + double + time_step + + + Eigen::Matrix3Xd + trajectory + + + + + + +i + + +updated the phase shift over a whole trajectory + + + + + + + + + void + void GradientWaveform::update_phase_shift + (double dt, double dt_last, Walker walker) + update_phase_shift + update_phase_shift + + double + dt + + + double + dt_last + + + Walker + walker + + + + + + +i + + +updated walker + + + + + + + + + void + void GradientWaveform::update_DWI_signal + (Walker &walker) + update_DWI_signal + update_DWI_signal + + Walker & + walker + + +Updates the DWI signal using the cumulated phase shift. + + + + + + + + void + void GradientWaveform::setNumberOfSteps + (unsigned T) + setNumberOfSteps + setNumberOfSteps + + unsigned + T + + +Set the number of time steps if they are known. + + + + + + + + void + void GradientWaveform::getGradImpulse + (int i, double t, double tLast, Eigen::Vector3d &Gdt) + getGradImpulse + getGradImpulse + + int + i + + + double + t + + + double + tLast + + + Eigen::Vector3d & + Gdt + + + + + + +i + + +Walker index + + + +t + + +current time step (in milisenconds) + + + +tLast + + +last time step (in milisenconds) + + + +Gdt + + +vector to compute de G*dt impulse + + + + + + + + + + + void + void GradientWaveform::readSchemeParameters + (Scheme &scheme_) + readSchemeParameters + + Scheme & + scheme_ + + +reads the scheme file parameters + + + + + + + + +Gradient Wavefroms =============================================================/. + +Implementation of the the General Wavefroms.Main implementation of the gradient waveforms protocol Jonathan Rafael +November 2017 1.42 + + + + + + + + + + + + + + + + + + + + + + + + + + trajectory + + + + + + + + + + GradientWaveformcleanDWISignal + GradientWaveformcleanPhaseShift + GradientWaveformcomputeDynamicTimeSteps + GradientWaveformdt + GradientWaveformDWI + GradientWaveformDWI_extra + GradientWaveformDWI_intra + GradientWaveformDWIi + GradientWaveformdyn_duration + GradientWaveformdynamic + GradientWaveformgetbValue + GradientWaveformgetDWISignal + GradientWaveformgetFreeDecay + GradientWaveformgetGradImpulse + GradientWaveformgetInterpolatedGradImpulse + GradientWaveformgetNumericalbValue + GradientWaveformGradientWaveform + GradientWaveformGradientWaveform + GradientWaveformGradientWaveform + GradientWaveformimg_signal + GradientWaveforminitializeIntraExtraSignals + GradientWaveforminitializeSubdivisionSignals + GradientWaveformnum_rep + GradientWaveformpercent_steps_in + GradientWaveformphase_shift + GradientWaveformphase_shift_distribution + GradientWaveformreadSchemeFile + GradientWaveformreadSchemeParameters + GradientWaveformsave_phase_shift + GradientWaveformscale_from_stu + GradientWaveformscheme_file + GradientWaveformseparate_signal + GradientWaveformsetNumberOfSteps + GradientWaveformSimulableSequence + GradientWaveformsub_DWI + GradientWaveformsub_DWI_extra + GradientWaveformsub_DWI_intra + GradientWaveformsub_DWIi + GradientWaveformsubdivision_flag + GradientWaveformsubdivisions + GradientWaveformT + GradientWaveformTE + GradientWaveformtime_steps + GradientWaveformtrajectory + GradientWaveformupdate_DWI_signal + GradientWaveformupdate_phase_shift + GradientWaveformupdate_phase_shift + GradientWaveformwave_bins + GradientWaveformwave_duration + GradientWaveformwaveform + GradientWaveformwritePhaseShiftDistribution + GradientWaveformwriteResultingData + GradientWaveform~SimulableSequence + + + diff --git a/doc/xml/class_m_c_simulation.xml b/doc/xml/class_m_c_simulation.xml new file mode 100644 index 0000000..652284f --- /dev/null +++ b/doc/xml/class_m_c_simulation.xml @@ -0,0 +1,408 @@ + + + + MCSimulation + mcsimulation.h + + + int + int MCSimulation::count + + count + =0 + + + +count of + + + + + + + + int + int MCSimulation::id + + id + + + +Unique id of the simulation + + + + + + DynamicsSimulation * + DynamicsSimulation* MCSimulation::dynamicsEngine + + dynamicsEngine + + + +Instance for the particle dynamics + + + + + + Scheme + Scheme MCSimulation::scheme + + scheme + + + +Scheme file, only PGSE in camino format is supported in 0.2 + + + + + + Parameters + Parameters MCSimulation::params + + params + + + +Parameters instance1 :Parameters: + + + + + + + SimulableSequence * + SimulableSequence* MCSimulation::dataSynth + + dataSynth + + + +Simuleable sequence instance, PGSE and General Wavefroms only + + + + + + std::vector< std::vector< float > > + std::vector<std::vector<float> > MCSimulation::ini_walker_positions + + ini_walker_positions + + + +patch for regular sampling in a subdivision + + + + + + std::vector< PLYObstacle > * + std::vector<PLYObstacle>* MCSimulation::plyObstacles_list + + plyObstacles_list + + + +pointer to a vector with all the instances of PLYObstacles + + + + + + std::vector< Cylinder > * + std::vector<Cylinder>* MCSimulation::cylinders_list + + cylinders_list + + + +pointer to a vector with all the instances of Cylinders + + + + + + + + + MCSimulation::MCSimulation + () + MCSimulation + +Default constructor. Intialize everything with 0's and NULL states, object indexes are set to -1. + +Secondary constructor.Main constructor. + +config_file + + +.conf file name with the full set of experiments parameters. + + + +params_ + + +preloaded simulation parameters. + + + + + + + + + + MCSimulation::MCSimulation + (std::string config_file) + MCSimulation + + std::string + config_file + + + + + + + + + + + + MCSimulation::MCSimulation + (Parameters &params_) + MCSimulation + + Parameters & + params_ + + + + + + + + + + + + MCSimulation::~MCSimulation + () + ~MCSimulation + +Main destructor. Frees dynamicly allocated memory instances. + + + + + + + + void + MCSimulation::startSimulation + () + startSimulation + +Warp function. Calls the dynamicEngine's native DynamicsSimulation::startSimulation function. + +:DynamicsSimulation:. + + + + + + + double + double MCSimulation::getExpectedFreeeDecay + (unsigned i) + getExpectedFreeeDecay + + unsigned + i + + + + + + + + + + + void + void MCSimulation::iniObstacles + () + iniObstacles + + + +Adds all the obstacles defined in the confiuration files. + + + + + + + + void + void MCSimulation::addCylindersObstacles + () + addCylindersObstacles + + + + + + + + + + void + void MCSimulation::addPLYObstacles + () + addPLYObstacles + + + + + + + + + + void + void MCSimulation::addVoxels + () + addVoxels + + + + + + + + + + +Aplication Main Class ======================================================================================/. + +Main implementation class. Incorporates the particle's dynamics and the data synthesis. Jonathan Rafael +November 2016 1.44.00 + +Main implementation class. Incorporates the particle's dynamics and the data synthesis. + + + + + + + + + + + + + + dataSynth + + + scheme + + + params + + + dynamicsEngine + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sentinela + + + walker + + + trajectory + + + params + + + propagator + + + + + + + collision_sphere_ply + + + collision_sphere_cylinders + + + + + + MCSimulationaddCylindersObstacles + MCSimulationaddPLYObstacles + MCSimulationaddVoxels + MCSimulationcount + MCSimulationcylinders_list + MCSimulationdataSynth + MCSimulationdynamicsEngine + MCSimulationgetExpectedFreeeDecay + MCSimulationid + MCSimulationini_walker_positions + MCSimulationiniObstacles + MCSimulationMCSimulation + MCSimulationMCSimulation + MCSimulationMCSimulation + MCSimulationparams + MCSimulationplyObstacles_list + MCSimulationscheme + MCSimulationstartSimulation + MCSimulation~MCSimulation + + + diff --git a/doc/xml/class_obstacle.xml b/doc/xml/class_obstacle.xml new file mode 100644 index 0000000..475af2e --- /dev/null +++ b/doc/xml/class_obstacle.xml @@ -0,0 +1,231 @@ + + + + Obstacle + Cylinder + PLYObstacle + obstacle.h + + + int + int Obstacle::id + + id + + + +Unique id of the simulation + + + + + + int + int Obstacle::count_perc_crossings + + count_perc_crossings + + + +Auxiliar value to count the number of percolatin crossings in a simulation + + + + + + double + double Obstacle::percolation + + percolation + + + +Percolation value between 0 and 1. + + + + + + double + double Obstacle::T2 + + T2 + + + +T2 decay, not used by default + + + + + + + + + Obstacle::Obstacle + () + Obstacle + +Default constructor. Does nothing. + + + + + + + + bool + Obstacle::checkCollision + (Walker &walker, Eigen::Array3d &step, const double &step_lenght, Collision &colision) + checkCollision + + Walker & + walker + + + Eigen::Array3d & + step + + + const double & + step_lenght + + + Collision & + colision + + +Basic collision function. Returns the if there was any collision on against the obstacle. + + + +walker +Walker + + +instance in the simulation. + + + +3d + + +step. Is assumed to be normalized. + + + +step_lenght +length + + +used as the maximum step collision distance. + + + +colilsion +Collision + + +instance to save the collision (if any) details. + + +true only if there was a Collision::hit status. +Collision. + + + + + + + void + Obstacle::elasticBounceAgainsPlane + (Eigen::Vector3d &ray_origin, Eigen::Vector3d &normal, double &t, Eigen::Vector3d &step) + elasticBounceAgainsPlane + + Eigen::Vector3d & + ray_origin + + + Eigen::Vector3d & + normal + + + double & + t + + + Eigen::Vector3d & + step + + + + + + + + + + + double + double Obstacle::minDistance + (Walker &w) + minDistance + + Walker & + w + + +Returns the minimum distance of collision. + + + +walker + + +to find the (closest) distance. + + + + + + + + + +Obstacle Base Class ==============================================================================/. + +Father class to define the base of any other obstacle (wall or substrate) Jonathan Rafael +November 2016 1.42 + + + + + + + + + + + + + + + + + + + + + + + ObstaclecheckCollision + Obstaclecount_perc_crossings + ObstacleelasticBounceAgainsPlane + Obstacleid + ObstacleminDistance + ObstacleObstacle + Obstaclepercolation + ObstacleT2 + + + diff --git a/doc/xml/class_p_g_s_e_sequence.xml b/doc/xml/class_p_g_s_e_sequence.xml new file mode 100644 index 0000000..7746d84 --- /dev/null +++ b/doc/xml/class_p_g_s_e_sequence.xml @@ -0,0 +1,584 @@ + + + + PGSESequence + SimulableSequence + + + double + double PGSESequence::TE + + TE + + + +Time Echo. + + + + + + int + int PGSESequence::T + + T + + + +num bins (time steps) + + + + + + double + double PGSESequence::dyn_duration + + dyn_duration + + + +simulation duration (miliseconds) + + + + + + std::vector< std::vector< double > > + std::vector< std::vector<double> > PGSESequence::scheme + + scheme + + + +Scheme file values + + + + + + Trajectory + Trajectory PGSESequence::trajectory + + trajectory + + + +If the signal is computed from a .trajfile + + + + + + + + + PGSESequence::PGSESequence + () + PGSESequence + +Default constructor, set default NULL values. Not to be used. + + + + + + + + + PGSESequence::PGSESequence + (Scheme scheme_) + PGSESequence + + Scheme + scheme_ + + +Main constructor. Takes a pre-loaded Scheme file. + + + + + + + + + PGSESequence::PGSESequence + (Scheme scheme_, const char *traj_file_name) + PGSESequence + + Scheme + scheme_ + + + const char * + traj_file_name + + +Main constructor. Takes a pre-loaded Scheme file and a traj file name. if this argument is passed a traj file is should be written. + + + + + + + + + PGSESequence::PGSESequence + (const char *scheme_file_name) + PGSESequence + + const char * + scheme_file_name + + +Constructor. Takes a the scheme file name to be loaded. + + + + + + + + + PGSESequence::PGSESequence + (const char *scheme_file_name, const char *traj_file_name) + PGSESequence + + const char * + scheme_file_name + + + const char * + traj_file_name + + +Constructor. Takes a scheme file name to be loaded and atraj file name. if this argument is passed a traj file is should be written. + + + + + + + + + PGSESequence::~PGSESequence + () + ~PGSESequence + +Destuctor. Does nothing. + + + + + + + + void + void PGSESequence::getGradImpulse + (int i, double t, double tLast, Eigen::Vector3d &Gdt) + getGradImpulse + getGradImpulse + + int + i + + + double + t + + + double + tLast + + + Eigen::Vector3d & + Gdt + + +For using w/o the adt array. + + + + + + + + void + void PGSESequence::getGradImpuse + (int i, double t, Eigen::Vector3d Gdt) + getGradImpuse + + int + i + + + double + t + + + Eigen::Vector3d + Gdt + + +For using with the adt array. + + + + + + + + double + double PGSESequence::getbValue + (unsigned) + getbValue + getbValue + + unsigned + i + + +Analytical defined b-value. + + + + + + + + double + double PGSESequence::getFreeDecay + (unsigned i, double D) + getFreeDecay + getFreeDecay + + unsigned + i + + + double + D + + +Expected free Decay. + + + + + + + + double + double PGSESequence::getNumericalbValue + (unsigned) + getNumericalbValue + + unsigned + i + + + + +not implemented yet. + + + + + + + void + void PGSESequence::getDWISignal + () + getDWISignal + +Computes de DW signal from a trajfile. + + + + + + + + void + void PGSESequence::readSchemeFile + () + readSchemeFile + +reads the scheme files + + + + + + + + void + void PGSESequence::update_phase_shift + (double dt, double dt_last, Walker walker) + update_phase_shift + update_phase_shift + + double + dt + + + double + dt_last + + + Walker + walker + + + + + + +i + + +updated walker + + + + + + + + + void + void PGSESequence::update_phase_shift + (double time_step, Eigen::Matrix3Xd trajectory) + update_phase_shift + update_phase_shift + + double + time_step + + + Eigen::Matrix3Xd + trajectory + + +Updates the phase shift using the full stored trajectory. + + + + + + + + void + void PGSESequence::update_DWI_signal + (Walker &walker) + update_DWI_signal + update_DWI_signal + + Walker & + walker + + +Updates the DWI signal using the cumulated phase shift. + + + + + + + + double + double PGSESequence::get_adt + (int grad_index, double t, double tLast) + get_adt + + int + grad_index + + + double + t + + + double + tLast + + +computes de signal value and sign in a certain time step. + + + + + + + + double + double PGSESequence::print_adt_and_dt + (int grad_index, double t, double tLast) + print_adt_and_dt + + int + grad_index + + + double + t + + + double + tLast + + +prints the array adt in the format (). + + + + + + + + void + void PGSESequence::setNumberOfSteps + (unsigned T) + setNumberOfSteps + setNumberOfSteps + + unsigned + T + + +Set the number of time steps if they are known. + + + + + + + + void + void PGSESequence::computeDynamicTimeSteps + () + computeDynamicTimeSteps + computeDynamicTimeSteps + +Compute the time for all the steps when they are not constant. + + + + + + + + + + void + void PGSESequence::readSchemeParameters + (Scheme scheme_) + readSchemeParameters + + Scheme + scheme_ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + trajectory + + + + + + PGSESequencecleanDWISignal + PGSESequencecleanPhaseShift + PGSESequencecomputeDynamicTimeSteps + PGSESequenceDWI + PGSESequenceDWI_extra + PGSESequenceDWI_intra + PGSESequenceDWIi + PGSESequencedyn_duration + PGSESequencedynamic + PGSESequenceget_adt + PGSESequencegetbValue + PGSESequencegetDWISignal + PGSESequencegetFreeDecay + PGSESequencegetGradImpulse + PGSESequencegetGradImpuse + PGSESequencegetNumericalbValue + PGSESequenceimg_signal + PGSESequenceinitializeIntraExtraSignals + PGSESequenceinitializeSubdivisionSignals + PGSESequencenum_rep + PGSESequencepercent_steps_in + PGSESequencePGSESequence + PGSESequencePGSESequence + PGSESequencePGSESequence + PGSESequencePGSESequence + PGSESequencePGSESequence + PGSESequencephase_shift + PGSESequencephase_shift_distribution + PGSESequenceprint_adt_and_dt + PGSESequencereadSchemeFile + PGSESequencereadSchemeParameters + PGSESequencesave_phase_shift + PGSESequencescheme + PGSESequencescheme_file + PGSESequenceseparate_signal + PGSESequencesetNumberOfSteps + PGSESequenceSimulableSequence + PGSESequencesub_DWI + PGSESequencesub_DWI_extra + PGSESequencesub_DWI_intra + PGSESequencesub_DWIi + PGSESequencesubdivision_flag + PGSESequencesubdivisions + PGSESequenceT + PGSESequenceTE + PGSESequencetime_steps + PGSESequencetrajectory + PGSESequenceupdate_DWI_signal + PGSESequenceupdate_phase_shift + PGSESequenceupdate_phase_shift + PGSESequencewritePhaseShiftDistribution + PGSESequencewriteResultingData + PGSESequence~PGSESequence + PGSESequence~SimulableSequence + + + diff --git a/doc/xml/class_p_l_y_collision_sphere.xml b/doc/xml/class_p_l_y_collision_sphere.xml new file mode 100644 index 0000000..a312011 --- /dev/null +++ b/doc/xml/class_p_l_y_collision_sphere.xml @@ -0,0 +1,268 @@ + + + + PLYCollisionSphere + Collisionsphere + + + std::vector< unsigned > + std::vector<unsigned> PLYCollisionSphere::small_sphere_list_end + + small_sphere_list_end + + + +Index vector of the LAST element on the list for the small collision sphere + + + + + + std::vector< unsigned > + std::vector<unsigned> PLYCollisionSphere::big_sphere_list_end + + big_sphere_list_end + + + +Index vecotr of the LAST element on the list for the big collision sphere + + + + + + std::vector< std::vector< unsigned > > * + std::vector<std::vector<unsigned> >* PLYCollisionSphere::collision_list + + collision_list + + + +Pointer to the list with the triangle indexes for each PLY. The indexes are permuted in its position. + + + + + + + + + PLYCollisionSphere::PLYCollisionSphere + () + PLYCollisionSphere + + + + + + + + + + void + void PLYCollisionSphere::popFromSmallSphere + (unsigned i, unsigned t) + popFromSmallSphere + + unsigned + i + + + unsigned + t + + +This function receives a index from the collision list and moves the value to the last position of the list. then decrease the inner sphere end index. This way this index is no longer considered inner collision list. + +Removes one index from the list by moving it to the end of the list and decreading the index. + + + + + + void + void PLYCollisionSphere::pushToSmallSphere + (unsigned i, unsigned t) + pushToSmallSphere + + unsigned + i + + + unsigned + t + + +This function receives a index from the collision list and moves the value to the last position of the list. then increse the inner sphere end index. This way this index is now included in the inner collision list. + +Adds one element to the list by moving it in front of the current index and increasing the index. + + + + + + void + void PLYCollisionSphere::popFromBigSphere + (unsigned i, unsigned t) + popFromBigSphere + + unsigned + i + + + unsigned + t + + +This function receives a index from the collision list and moves the value to the last position of the list. Then decrease the inner sphere end index. This way this index is now excluded in the outer collision list. + + + + + + + + void + void PLYCollisionSphere::pushToBigSphere + (unsigned i, unsigned t) + pushToBigSphere + + unsigned + i + + + unsigned + t + + +This function receives a index from the collision list and moves the value to the last position of the list. Then increase the inner sphere end index. This way this index is now included in the outer collision list. + + + + + + + + void + void PLYCollisionSphere::setBigSphereSize + (float size) + setBigSphereSize + + float + size + + + + + + +size + + +of the list + + + + + + + + + void + void PLYCollisionSphere::setSmallSphereSize + (float size) + setSmallSphereSize + + float + size + + + + + + +size + + +of the list + + + + + + + + + void + void PLYCollisionSphere::push_ply + (std::vector< unsigned > list) + push_ply + + std::vector< unsigned > + list + + + + + + +element + + +value to be added to the obstacle list + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PLYCollisionSpherebig_sphere_distance + PLYCollisionSpherebig_sphere_list_end + PLYCollisionSpherecollision_list + PLYCollisionSphereCollisionsphere + PLYCollisionSpherelist_size + PLYCollisionSpherePLYCollisionSphere + PLYCollisionSpherepopFromBigSphere + PLYCollisionSpherepopFromSmallSphere + PLYCollisionSpherepush_ply + PLYCollisionSpherepushToBigSphere + PLYCollisionSpherepushToSmallSphere + PLYCollisionSpheresetBigSphereSize + PLYCollisionSpheresetSmallSphereSize + PLYCollisionSpheresmall_sphere_distance + PLYCollisionSpheresmall_sphere_list_end + + + diff --git a/doc/xml/class_p_l_y_obstacle.xml b/doc/xml/class_p_l_y_obstacle.xml new file mode 100644 index 0000000..2ce2289 --- /dev/null +++ b/doc/xml/class_p_l_y_obstacle.xml @@ -0,0 +1,499 @@ + + + + PLYObstacle + Obstacle + plyobstacle.h + + + unsigned + unsigned PLYObstacle::vert_number + + vert_number + + + + + + + + + + unsigned + unsigned PLYObstacle::face_number + + face_number + + + + + + + + + + std::string + std::string PLYObstacle::file_path + + file_path + + + + + + + + + + Vertex * + Vertex* PLYObstacle::vertices + + vertices + + + + + + + + + + Triangle * + Triangle* PLYObstacle::faces + + faces + + + + + + + + + + double + double PLYObstacle::scale_factor + + scale_factor + + + + + + + + + + int + int PLYObstacle::id + + id + + + + + + + + + + + + + PLYObstacle::PLYObstacle + () + PLYObstacle + + + + + + + + + + + PLYObstacle::PLYObstacle + (std::string path, double scale_factor_=1) + PLYObstacle + + std::string + path + + + double + scale_factor_ + 1 + + + + + + + + + + + + PLYObstacle::PLYObstacle + (std::string path, std::vector< Eigen::Vector3d > &centers, double max_distance=INFINITY, double scale_factor_=1) + PLYObstacle + + std::string + path + + + std::vector< Eigen::Vector3d > & + centers + + + double + max_distance + INFINITY + + + double + scale_factor_ + 1 + + + + + + + + + + + void + void PLYObstacle::readPLY_ASCII_triangleFan + (std::string ply_file) + readPLY_ASCII_triangleFan + + std::string + ply_file + + + + + + + + + + + void + void PLYObstacle::readPLY_ASCII_triangles + (std::string ply_file) + readPLY_ASCII_triangles + + std::string + ply_file + + + + + + + + + + + void + void PLYObstacle::readPLY_ASCII_trianglesSubdivitionDistance + (std::string ply_file, std::vector< Eigen::Vector3d > &centers, double max_distance) + readPLY_ASCII_trianglesSubdivitionDistance + + std::string + ply_file + + + std::vector< Eigen::Vector3d > & + centers + + + double + max_distance + + + + + + + + + + + void + void PLYObstacle::setScaleFactor + (double scale) + setScaleFactor + + double + scale + + + + + + + + + + + bool + bool PLYObstacle::checkCollision + (Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision) + checkCollision + + Walker & + walker + + + Eigen::Vector3d & + step + + + double & + step_lenght + + + Collision & + colision + + + + + + + + + + + bool + bool PLYObstacle::checkCollision + (Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision, std::vector< unsigned > &triangle_list, unsigned list_end) + checkCollision + + Walker & + walker + + + Eigen::Vector3d & + step + + + double & + step_lenght + + + Collision & + colision + + + std::vector< unsigned > & + triangle_list + + + unsigned + list_end + + + + + + + + + + + double + double PLYObstacle::minDistance + (Walker &w, unsigned t) + minDistance + + Walker & + w + + + unsigned + t + + + + + + + + + + + + + void + void PLYObstacle::handleCollisions + (Collision &colision_confirmed, Collision &colision_2, double &max_distance, Eigen::Vector3d &end_point, const unsigned triangle_indx) + handleCollisions + + Collision & + colision_confirmed + + + Collision & + colision_2 + + + double & + max_distance + + + Eigen::Vector3d & + end_point + + + const unsigned + triangle_indx + + + + + + + + + + + void + void PLYObstacle::checkIfItsNearToTriangle + (const Eigen::Vector3d end_point, const unsigned triangle_ind, Collision &colision) + checkIfItsNearToTriangle + + const Eigen::Vector3d + end_point + + + const unsigned + triangle_ind + + + Collision & + colision + + + + + + + + + + + bool + bool PLYObstacle::updateWalkerStatusAndHandleBouncing + (Walker &walker, Eigen::Vector3d &ray_origin, Eigen::Vector3d &step, Collision &colision) + updateWalkerStatusAndHandleBouncing + + Walker & + walker + + + Eigen::Vector3d & + ray_origin + + + Eigen::Vector3d & + step + + + Collision & + colision + + + + + + + + + + + +PlyObstacle Derived Class ====================================================================/. + +PLYObstacle derived class. Implements obstacles loaded from pre-defined PY meshes. Jonathan Rafael +November 2016 0.2 + +Implements obstacles loaded from pre-constructed PLY meshes. The PLY format should be without any other experiment. + + + + + + + + + + + + + + + + + + vertices + + + + + + + + + + + + + faces + + + vertices + + + + + + + + + + PLYObstaclecheckCollision + PLYObstaclecheckCollision + PLYObstaclecheckCollision + PLYObstaclecheckIfItsNearToTriangle + PLYObstaclecount_perc_crossings + PLYObstacleelasticBounceAgainsPlane + PLYObstacleface_number + PLYObstaclefaces + PLYObstaclefile_path + PLYObstaclehandleCollisions + PLYObstacleid + PLYObstacleminDistance + PLYObstacleminDistance + PLYObstacleObstacle + PLYObstaclepercolation + PLYObstaclePLYObstacle + PLYObstaclePLYObstacle + PLYObstaclePLYObstacle + PLYObstaclereadPLY_ASCII_triangleFan + PLYObstaclereadPLY_ASCII_triangles + PLYObstaclereadPLY_ASCII_trianglesSubdivitionDistance + PLYObstaclescale_factor + PLYObstaclesetScaleFactor + PLYObstacleT2 + PLYObstacleupdateWalkerStatusAndHandleBouncing + PLYObstaclevert_number + PLYObstaclevertices + + + diff --git a/doc/xml/class_parallel_m_c_simulation.xml b/doc/xml/class_parallel_m_c_simulation.xml new file mode 100644 index 0000000..376d50a --- /dev/null +++ b/doc/xml/class_parallel_m_c_simulation.xml @@ -0,0 +1,384 @@ + + + + ParallelMCSimulation + parallelmcsimulation.h + + + Parameters + Parameters ParallelMCSimulation::params + + params + + + +Parameters instance :Parameters: + + + + + + + double + double ParallelMCSimulation::mean_second_passed + + mean_second_passed + + + +Simualation total time in seconds + + + + + + unsigned + unsigned ParallelMCSimulation::total_sim_particles + + total_sim_particles + + + +Total number of simulated particles + + + + + + unsigned + unsigned ParallelMCSimulation::stuck_count + + stuck_count + + + +Counts the number of particles stuck in the simulations + + + + + + unsigned + unsigned ParallelMCSimulation::illegal_count + + illegal_count + + + +Counts the number of particles that attempt to cross + + + + + + double + double ParallelMCSimulation::icvf + + icvf + + + +Stores the ICVF based on the particles sampling + + + + + + double + double ParallelMCSimulation::aprox_volumen + + aprox_volumen + + + +Stores the volumen based on ICVF and the voxel size + + + + + + std::vector< MCSimulation * > + std::vector<MCSimulation*> ParallelMCSimulation::simulations + + simulations + + + +vector of pointers to MCSimulation instances + + + + + + std::vector< std::thread > + std::vector<std::thread> ParallelMCSimulation::sim_threads + + sim_threads + + + +Number of threads (instances and processors) to be used + + + + + + std::vector< PLYObstacle > + std::vector<PLYObstacle> ParallelMCSimulation::plyObstacles_list + + plyObstacles_list + + + +vector with all the instances of PLYObstacles + + + + + + std::vector< Cylinder > + std::vector<Cylinder> ParallelMCSimulation::cylinders_list + + cylinders_list + + + +vector with all the instances of cylinders + + + + + + std::vector< Eigen::Vector3f > + std::vector<Eigen::Vector3f> ParallelMCSimulation::total_ini_walker_pos + + total_ini_walker_pos + + + +Number of threads (instances and processors) to be used + + + + + + + + + ParallelMCSimulation::ParallelMCSimulation + (std::string config_file) + ParallelMCSimulation + + std::string + config_file + + +Main constructor. + + + +config_file + + +.conf file name with the full set of experiments parameters. + + + + + + + + + + ParallelMCSimulation::ParallelMCSimulation + (Parameters &params) + ParallelMCSimulation + + Parameters & + params + + +Constructor. + + + +parameters + + +of the simulation. Read form a conf file or given by the user. + + + + + + + + + + ParallelMCSimulation::ParallelMCSimulation + () + ParallelMCSimulation + + + + + + + + + + + ParallelMCSimulation::~ParallelMCSimulation + () + ~ParallelMCSimulation + + + + + + + + + + void + ParallelMCSimulation::startSimulation + () + startSimulation + +Warp function. Calls the MCSimulation's native function for all the instances. + +:MCSimulation:. + + + + + + + + + void + void ParallelMCSimulation::getNumberOfProcessors + () + getNumberOfProcessors + +return the number of processors in your machine + + + + + + + + void + void ParallelMCSimulation::initializeUnitSimulations + () + initializeUnitSimulations + +Initialize every individual MCSimulation. + + + + + + + + void + void ParallelMCSimulation::jointResults + () + jointResults + +Joints the ouputs in a single file. + + + + + + + + void + void ParallelMCSimulation::specialInitializations + () + specialInitializations + +Initialize anythin that needs to be sync between simulations. + + + + + + + + void + void ParallelMCSimulation::addCylindersObstaclesFromFiles + () + addCylindersObstaclesFromFiles + +Initialize all the Cylinders from a file. + + + + + + + + void + void ParallelMCSimulation::addCylindersConfigurations + () + addCylindersConfigurations + +Used to initialize the hexagonal packing. + + + + + + + + +Class to handle multiprocessor paralellisation. This class basicly controls and syncronize several initializations of MonteCarlo simulations and add up the results. It's a way of soft paralelization. + +Implementation of the PGSE protocol.==============================================================================/Class to handle multiprocessor paralellisation Jonathan Rafael +November 2016 + + + + + + + + + + + + params + + + + + + ParallelMCSimulationaddCylindersConfigurations + ParallelMCSimulationaddCylindersObstaclesFromFiles + ParallelMCSimulationaprox_volumen + ParallelMCSimulationcylinders_list + ParallelMCSimulationgetNumberOfProcessors + ParallelMCSimulationicvf + ParallelMCSimulationillegal_count + ParallelMCSimulationinitializeUnitSimulations + ParallelMCSimulationjointResults + ParallelMCSimulationmean_second_passed + ParallelMCSimulationParallelMCSimulation + ParallelMCSimulationParallelMCSimulation + ParallelMCSimulationParallelMCSimulation + ParallelMCSimulationparams + ParallelMCSimulationplyObstacles_list + ParallelMCSimulationsim_threads + ParallelMCSimulationsimulations + ParallelMCSimulationspecialInitializations + ParallelMCSimulationstartSimulation + ParallelMCSimulationstuck_count + ParallelMCSimulationtotal_ini_walker_pos + ParallelMCSimulationtotal_sim_particles + ParallelMCSimulation~ParallelMCSimulation + + + diff --git a/doc/xml/class_parameter.xml b/doc/xml/class_parameter.xml new file mode 100644 index 0000000..8a6870c --- /dev/null +++ b/doc/xml/class_parameter.xml @@ -0,0 +1,17 @@ + + + + Parameter + parameters.h + +Basic class to store simulation parameters =============================================================/. + +Basic class to store and handle all the possible simulation parameters. Jonathan Rafael +November 2016 1.43 + +Class used to hold and operate all the user and simulation parameters. This is the main class to comunicate between instances of the simulations and derived classes. So, in a way, it's an interface for the comunication between component classes in the simulation. + + + + + diff --git a/doc/xml/class_parameters.xml b/doc/xml/class_parameters.xml new file mode 100644 index 0000000..fa8a433 --- /dev/null +++ b/doc/xml/class_parameters.xml @@ -0,0 +1,1569 @@ + + + + Parameters + + + unsigned + unsigned Parameters::num_walkers + + num_walkers + + + +N, number of walkers + + + + + + unsigned + unsigned Parameters::num_steps + + num_steps + + + +T, number of steps + + + + + + double + double Parameters::diffusivity + + diffusivity + + + +D, diffusivity constant + + + + + + double + double Parameters::sim_duration + + sim_duration + + + +simulation total time + + + + + + bool + bool Parameters::write_traj + + write_traj + + + +flag, write a traj file or not, binary format only + + + + + + bool + bool Parameters::write_txt + + write_txt + + + +flag, writes DWI output signals in .txt if True + + + + + + bool + bool Parameters::write_bin + + write_bin + + + +flag, writes the output signal in binary format (True by default) + + + + + + bool + bool Parameters::scale_from_stu + + scale_from_stu + + + +flag, true if the scheme file is in standar units m,s + + + + + + bool + bool Parameters::save_phase_shift + + save_phase_shift + + + +flag, saves the phase shift distribution for all particles + + + + + + long + long Parameters::seed + + seed + + + +Initial seed for the random generator + + + + + + bool + bool Parameters::verbatim + + verbatim + + + +False to omit displaying state and warnings + + + + + + std::string + std::string Parameters::traj_file + + traj_file + + + +Trajectory file path + + + + + + std::string + std::string Parameters::output_base_name + + output_base_name + + + +output files base name (path + sufix) + + + + + + std::string + std::string Parameters::ini_walkers_file + + ini_walkers_file + + + +initial walker position file (if any) + + + + + + unsigned + unsigned Parameters::ini_walkers_file_count + + ini_walkers_file_count + + + +number of walker positions initialize in the configuration file + + + + + + std::string + std::string Parameters::ini_walker_flag + + ini_walker_flag + + + +where to initialize the walkers + + + + + + std::string + std::string Parameters::scheme_file + + scheme_file + + + +signal adquisition scheme file (if any) + + + + + + Eigen::Vector3d + Eigen::Vector3d Parameters::min_limits + + min_limits + + + +voxel min limits (if any) (bottom left corner) + + + + + + Eigen::Vector3d + Eigen::Vector3d Parameters::max_limits + + max_limits + + + +voxel max limits (if any) + + + + + + std::vector< std::string > + std::vector<std::string> Parameters::cylinders_files + + cylinders_files + + + +file paths with a list of cilinders obstacles + + + + + + std::vector< std::string > + std::vector<std::string> Parameters::PLY_files + + PLY_files + + + +file paths with PLY obstacle files + + + + + + std::vector< double > + std::vector<double> Parameters::PLY_scales + + PLY_scales + + + +Auxiliary vector to save PLY file scales + + + + + + std::vector< double > + std::vector<double> Parameters::PLY_percolation + + PLY_percolation + + + +Auxiliary vector to save PLY percolation + + + + + + std::vector< float > + std::vector<float> Parameters::ini_delta_pos + + ini_delta_pos + + + +Delta position for the walkers + + + + + + unsigned + unsigned Parameters::num_proc + + num_proc + + + +Number of precessors/process to launch in parallel + + + + + + std::vector< std::pair< Eigen::Vector3d, Eigen::Vector3d > > + std::vector<std::pair<Eigen::Vector3d,Eigen::Vector3d> > Parameters::voxels_list + + voxels_list + + + +voxel min and max positions list (deprecated) + + + + + + std::vector< Eigen::Vector3f > + std::vector<Eigen::Vector3f> Parameters::prop_dirs + + prop_dirs + + + +Saves the directions used to compute the propagator + + + + + + std::vector< unsigned > + std::vector<unsigned> Parameters::record_pos_times + + record_pos_times + + + +time indexes, used to save the position of all walkers at certain time + + + + + + std::vector< unsigned > + std::vector<unsigned> Parameters::record_phase_times + + record_phase_times + + + +time indexes, used to save the phase shif of all walkers at certain time + + + + + + std::vector< unsigned > + std::vector<unsigned> Parameters::record_prop_times + + record_prop_times + + + +time indexes, used to save the mean propagator of the walkers at c. times + + + + + + bool + bool Parameters::hex_packing + + hex_packing + + + +flag, true if an haxagonal packing should be used + + + + + + double + double Parameters::hex_packing_radius + + hex_packing_radius + + + +float, constant radius for the cylinders + + + + + + double + double Parameters::hex_packing_separation + + hex_packing_separation + + + +float, separation distance betwen cylinders (separation > 2*radius) + + + + + + bool + bool Parameters::gamma_packing + + gamma_packing + + + +flag, true if a gamma distribution of cylinders will be initialized + + + + + + bool + bool Parameters::gamma_output_conf + + gamma_output_conf + + + + + + + + + + double + double Parameters::gamma_packing_alpha + + gamma_packing_alpha + + + + + + + + + + double + double Parameters::gamma_packing_beta + + gamma_packing_beta + + + + + + + + + + double + double Parameters::gamma_icvf + + gamma_icvf + + + + + + + + + + double + double Parameters::gamma_output_configuration + + gamma_output_configuration + + + + + + + + + + unsigned + unsigned Parameters::gamma_num_cylinders + + gamma_num_cylinders + + + + + + + + + + float + float Parameters::min_cyl_radii + + min_cyl_radii + + + +Minimum radii (in um) to be sampled + + + + + + bool + bool Parameters::subdivision_flag + + subdivision_flag + = false + + + +flag to check if we have several voxel subdivision to compute the signal + + + + + + unsigned + unsigned Parameters::number_subdivisions + + number_subdivisions + = 0 + + + +saves the number of subdivisions for an initialzied voxel (needed) + + + + + + std::string + std::string Parameters::subdivisions_file + + subdivisions_file + = "" + + + +file with the list of subdivisions coordinates to compute the signal + + + + + + std::vector< Subdivision > + std::vector<Subdivision> Parameters::subdivisions + + subdivisions + + + +saves actual positions of the subdivision to compute the signal + + + + + + double + double Parameters::obstacle_permeability + + obstacle_permeability + = 0 + + + +Obstacles permeability + + + + + + double + double Parameters::collision_sphere_distance + + collision_sphere_distance + = 0 + + + +Custiom size for the collision sphere + + + + + + double + double Parameters::max_simulation_time + + max_simulation_time + = 0 + + + +Maximum simulation time for the DYNAMIC SIMULATION + + + + + + bool + bool Parameters::log_phase_shift + + log_phase_shift + = false + + + +flag, true to save the final phase shift distribution + + + + + + bool + bool Parameters::log_opp + + log_opp + = false + + + +flag, true to save one per process output + + + + + + bool + bool Parameters::discard_stucks + + discard_stucks + = true + + + +flag, true to discard posible stuck particles (max bouncing reached) + + + + + + bool + bool Parameters::discard_illegals + + discard_illegals + = true + + + +flag, true to discard possible illegal crossings, Trump by default. + + + + + + bool + bool Parameters::log_propagator + + log_propagator + = false + + + +flag, true saves the propagator for a given set of directions and times + + + + + + Eigen::Vector3d + Eigen::Vector3d Parameters::min_sampling_area + + min_sampling_area + + + +Min defining point to delimiter the uniform sampling of walkers + + + + + + Eigen::Vector3d + Eigen::Vector3d Parameters::max_sampling_area + + max_sampling_area + + + +Max defining point to delimiter the uniform sampling of walkers + + + + + + bool + bool Parameters::custom_sampling_area + + custom_sampling_area + + + +True if a custom sampling area is defined (voxel for default) + + + + + + bool + bool Parameters::computeVolume + + computeVolume + + + +Forces the volumen computation (slower) even without custom sampling + + + + + + bool + bool Parameters::separate_signals + + separate_signals + + + +Separate the signals into intra and extra (compute_volume on) + + + + + + bool + bool Parameters::img_signal + + img_signal + + + +True to save the img part of the dwi signal (false by default) + + + + + + + + + Parameters::Parameters + () + Parameters + +Default constructor. Sets all the parameters to default and NULL values. + + + + + + + + void + Parameters::readSchemeFile + (std::string conf_file) + readSchemeFile + + std::string + conf_file + + +Reads all the parameters from a scheme file in the correct format the function scales them if necessary. The parameters are passed by listing, first, the parameter name, followed by the value. The supported parameters are: number of walkers (N), number of steps (T), duration (duration), PGSE scheme file (scheme_file), min voxles limits (min limits), max voxel limits (max_limits), diffusivity (diffusivity), index name for the trajectory and output values (out_traj_file_index), initial walker position file (ini_walkers_file), write a txt traj flag and header (write_text), write binary traj file and header, write_bin, flag to scale the values from estandar unit (scale_from_stu), random seed (seed). + + + +conf_file + + + + + + + + + + + + void + void Parameters::setNumWalkers + (unsigned N) + setNumWalkers + + unsigned + N + + + + + + + + + + + void + Parameters::setNumSteps + (unsigned T) + setNumSteps + + unsigned + T + + +set the number of steps in the simulation. + + + +T + + +number of steps + + + + + + + + + void + Parameters::setDiffusivity + (double Diff) + setDiffusivity + + double + Diff + + +set the simulation diffusivity. + + + +Diff + + +diffusivity value. + + + + + + + + + void + Parameters::setSimDuration + (double duration) + setSimDuration + + double + duration + + +sets the simulation duration. + + + +duration + + +simulation duration. + + + + + + + + + void + void Parameters::setWriteTrajFlag + (bool write_bin) + setWriteTrajFlag + + bool + write_bin + + + + + + + + + + + void + void Parameters::setWriteTextFlag + (bool write_txt_) + setWriteTextFlag + + bool + write_txt_ + + + + + + + + + + + void + Parameters::setMinLimits + (Eigen::Vector3d min_limits_) + setMinLimits + + Eigen::Vector3d + min_limits_ + + +set the bottom left corner of the voxel to be simulated. + + + +min_limits_ + + +vector with the minimum voxel limits (bottom left corner). + + + + + + + + + void + Parameters::setMaxLimits + (Eigen::Vector3d max_limits_) + setMaxLimits + + Eigen::Vector3d + max_limits_ + + +set the bottom left corner of the voxel to be simulated. + + + +max_limits_ + + +vector with the maximum voxel limits (bottom right corner). + + + + + + + + + void + Parameters::setTrajFileName + (std::string traj_file_) + setTrajFileName + + std::string + traj_file_ + + +Set the prefix of the name for the traj file (txt and .traj) + + + +traj_file_ + + +prefix of the traj file. + + + + + + + + + void + Parameters::setOutputBaseFileName + (std::string output_base_name_) + setOutputBaseFileName + + std::string + output_base_name_ + + +Set the prefix of the name for all the outputs in the simulation. + + + +output_base_name + + +prefix for the outputs + + + + + + + + + void + Parameters::iniWalkersFileName + (std::string ini_walkers_file_) + iniWalkersFileName + + std::string + ini_walkers_file_ + + + + +initial position walkers file name + + + + + + + void + Parameters::setSchemeFileName + (std::string scheme_file_) + setSchemeFileName + + std::string + scheme_file_ + + +Sets the scheme file name to be used for the data synthesis. + + + +scheme_file_ + + +scheme (PGSE )file name. + + + + + + + + + unsigned + Parameters::getNumWalkers + () + getNumWalkers + + + +Number of walkers N + + + + + + + unsigned + Parameters::getNumSteps + () + getNumSteps + + + +Number of Steps + + + + + + + double + Parameters::getDiffusivity + () + getDiffusivity + + + +Diffusivity + + + + + + + bool + Parameters::getWriteTrajFlag + () + getWriteTrajFlag + + + +flag of the binary traj file writer + + + + + + + bool + Parameters::getWriteTextFlag + () + getWriteTextFlag + + + +flag of the text write traj + + + + + + + Eigen::Vector3d + Parameters::getMinLimits + () + getMinLimits + + + +voxel min limits (left bottom corner) + + + + + + + Eigen::Vector3d + Parameters::getMaxLimits + () + getMaxLimits + + + +voxel max limits (right top corner) + + + + + + + std::string + Parameters::getTrajFileName + () + getTrajFileName + + + +trajectory prefix + + + + + + + std::string + Parameters::getOutputBaseFileName + () + getOutputBaseFileName + + + +Output prefix + + + + + + + std::string + std::string Parameters::getIniWalkersFileName + () + getIniWalkersFileName + + + + + + + + + + std::string + Parameters::getSchemeFileName + () + getSchemeFileName + + + +name of the scheme file name used (PGSE) + + + + + + + void + void Parameters::addSubdivisions + () + addSubdivisions + + + + + + + + + + + + int + int Parameters::str_dist + (std::string s, std::string t) + str_dist + + std::string + s + + + std::string + t + + + + + + + + + + + + + void + Parameters::readObstacles + (std::ifstream &in) + readObstacles + + std::ifstream & + in + + +reads the full list of obstacles on the configuration file. + + + +file + + +input iostreams + + + + + + + + + void + Parameters::readVoxels + (std::ifstream &in) + readVoxels + + std::ifstream & + in + + +reads the full list of voxel on the configuration file. + + + +file + + +input iostreams + + + + + + + + + void + void Parameters::readInfoGatheringParams + (std::ifstream &in) + readInfoGatheringParams + + std::ifstream & + in + + + + + + + + + + + void + Parameters::readHexagonalParams + (std::ifstream &in) + readHexagonalParams + + std::ifstream & + in + + +reads the parameters needed to define an hexagonal packing of cylinders + +reads the subdivisions for computing the DW signal + +file + + +input iostreams + + + + + + + + + void + Parameters::readGammaParams + (std::ifstream &in) + readGammaParams + + std::ifstream & + in + + +reads the parameters needed to define an gamma distributed packing of cylinders + + + +file + + +input iostreams + + + + + + + + + void + void Parameters::readSubdivisionFile + () + readSubdivisionFile + + + + + + + + + + void + void Parameters::readPropagatorDirections + (std::string dir_path) + readPropagatorDirections + + std::string + dir_path + + + + + + + + + + + void + void Parameters::readPLYFileList + (std::string path) + readPLYFileList + + std::string + path + + + + + + + + + + + void + void Parameters::readPLYFileListScalePercolation + (std::string path) + readPLYFileListScalePercolation + + std::string + path + + + + + + + + + + + + + + + + + ParametersaddSubdivisions + Parameterscollision_sphere_distance + ParameterscomputeVolume + Parameterscustom_sampling_area + Parameterscylinders_files + Parametersdiffusivity + Parametersdiscard_illegals + Parametersdiscard_stucks + Parametersgamma_icvf + Parametersgamma_num_cylinders + Parametersgamma_output_conf + Parametersgamma_output_configuration + Parametersgamma_packing + Parametersgamma_packing_alpha + Parametersgamma_packing_beta + ParametersgetDiffusivity + ParametersgetIniWalkersFileName + ParametersgetMaxLimits + ParametersgetMinLimits + ParametersgetNumSteps + ParametersgetNumWalkers + ParametersgetOutputBaseFileName + ParametersgetSchemeFileName + ParametersgetTrajFileName + ParametersgetWriteTextFlag + ParametersgetWriteTrajFlag + Parametershex_packing + Parametershex_packing_radius + Parametershex_packing_separation + Parametersimg_signal + Parametersini_delta_pos + Parametersini_walker_flag + Parametersini_walkers_file + Parametersini_walkers_file_count + ParametersiniWalkersFileName + Parameterslog_opp + Parameterslog_phase_shift + Parameterslog_propagator + Parametersmax_limits + Parametersmax_sampling_area + Parametersmax_simulation_time + Parametersmin_cyl_radii + Parametersmin_limits + Parametersmin_sampling_area + Parametersnum_proc + Parametersnum_steps + Parametersnum_walkers + Parametersnumber_subdivisions + Parametersobstacle_permeability + Parametersoutput_base_name + ParametersParameters + ParametersPLY_files + ParametersPLY_percolation + ParametersPLY_scales + Parametersprop_dirs + ParametersreadGammaParams + ParametersreadHexagonalParams + ParametersreadInfoGatheringParams + ParametersreadObstacles + ParametersreadPLYFileList + ParametersreadPLYFileListScalePercolation + ParametersreadPropagatorDirections + ParametersreadSchemeFile + ParametersreadSubdivisionFile + ParametersreadVoxels + Parametersrecord_phase_times + Parametersrecord_pos_times + Parametersrecord_prop_times + Parameterssave_phase_shift + Parametersscale_from_stu + Parametersscheme_file + Parametersseed + Parametersseparate_signals + ParameterssetDiffusivity + ParameterssetMaxLimits + ParameterssetMinLimits + ParameterssetNumSteps + ParameterssetNumWalkers + ParameterssetOutputBaseFileName + ParameterssetSchemeFileName + ParameterssetSimDuration + ParameterssetTrajFileName + ParameterssetWriteTextFlag + ParameterssetWriteTrajFlag + Parameterssim_duration + Parametersstr_dist + Parameterssubdivision_flag + Parameterssubdivisions + Parameterssubdivisions_file + Parameterstraj_file + Parametersverbatim + Parametersvoxels_list + Parameterswrite_bin + Parameterswrite_traj + Parameterswrite_txt + + + diff --git a/doc/xml/class_plane.xml b/doc/xml/class_plane.xml new file mode 100644 index 0000000..94d8e9d --- /dev/null +++ b/doc/xml/class_plane.xml @@ -0,0 +1,163 @@ + + + + Plane + voxel.h + + + Eigen::Vector3d + Eigen::Vector3d Plane::normal + + normal + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d Plane::plane_center + + plane_center + + + + + + + + + + double + double Plane::d + + d + + + + + + + + + + + + + Plane::Plane + () + Plane + + + + + + + + + + + Plane::Plane + (Eigen::Vector3d normal_, Eigen::Vector3d plane_center_, double d_) + Plane + + Eigen::Vector3d + normal_ + + + Eigen::Vector3d + plane_center_ + + + double + d_ + + + + + + + + + + + + Plane::Plane + (Eigen::Vector3d &a, Eigen::Vector3d &b, Eigen::Vector3d &c, Eigen::Vector3d &d) + Plane + + Eigen::Vector3d & + a + + + Eigen::Vector3d & + b + + + Eigen::Vector3d & + c + + + Eigen::Vector3d & + d + + + + + + + + + + + bool + bool Plane::CheckCollision + (Walker &walker, Eigen::Vector3d &step, double tmax, Collision &colision) + CheckCollision + + Walker & + walker + + + Eigen::Vector3d & + step + + + double + tmax + + + Collision & + colision + + + + + + + + + + + +Main class. Implements basic voxel limits and operations. =================================================/. + +Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done.Jonathan Rafael +July 2016 +0.2 =============================================================================================================+ +Auxiliary class to implements plane's interactions with particles. + + + PlaneCheckCollision + Planed + Planenormal + PlanePlane + PlanePlane + PlanePlane + Planeplane_center + + + diff --git a/doc/xml/class_propagator.xml b/doc/xml/class_propagator.xml new file mode 100644 index 0000000..58e9295 --- /dev/null +++ b/doc/xml/class_propagator.xml @@ -0,0 +1,117 @@ + + + + Propagator + + + uint + uint Propagator::num_dirs + + num_dirs + =0 + + + + + + + + + + uint + uint Propagator::num_times + + num_times + = 0 + + + + + + + + + + Eigen::Matrix3Xf + Eigen::Matrix3Xf Propagator::directions + + directions + + + + + + + + + + std::vector< unsigned > + std::vector<unsigned> Propagator::log_times + + log_times + + + + + + + + + + std::vector< std::vector< float > > + std::vector<std::vector<float> > Propagator::propagator_log + + propagator_log + + + + + + + + + + + + + Propagator::Propagator + () + Propagator + + + + + + + + + + void + void Propagator::initPropagator + () + initPropagator + + + + + + + + + + + + + + + + Propagatordirections + PropagatorinitPropagator + Propagatorlog_times + Propagatornum_dirs + Propagatornum_times + PropagatorPropagator + Propagatorpropagator_log + + + diff --git a/doc/xml/class_scheme.xml b/doc/xml/class_scheme.xml new file mode 100644 index 0000000..a292d2e --- /dev/null +++ b/doc/xml/class_scheme.xml @@ -0,0 +1,270 @@ + + + + Scheme + scheme.h + + + std::string + std::string Scheme::scheme_file + + scheme_file + + + +Scheme file path + + + + + + std::string + std::string Scheme::header + + header + + + +Header on the scheme_file + + + + + + std::string + std::string Scheme::type + + type + + + +Sequence type (PGSE only so far) + + + + + + int + int Scheme::num_rep + + num_rep + + + +Number of gradients + + + + + + float + float Scheme::duration + + duration + + + +time duration (wavefroms) + + + + + + float + float Scheme::T + + T + + + +number of time steps (wavefroms) + + + + + + bool + bool Scheme::scale_from_stu + + scale_from_stu + + + +True if the input is in standar units + + + + + + std::vector< std::vector< double > > + std::vector< std::vector<double> > Scheme::scheme + + scheme + + + +Scheme values + + + + + + + + + Scheme::Scheme + () + Scheme + + + + + + + + + + + Scheme::Scheme + (std::string scheme_file_) + Scheme + + std::string + scheme_file_ + + + + + + + + + + + + Scheme::~Scheme + () + ~Scheme + + + + + + + + + + void + void Scheme::readSchemeFile + (std::string scheme_file_, bool scale_from_stu=0) + readSchemeFile + + std::string + scheme_file_ + + + bool + scale_from_stu + 0 + + + + + + + + + + + + + void + void Scheme::readPGSE + (std::ifstream &in, bool scale_from_stu) + readPGSE + + std::ifstream & + in + + + bool + scale_from_stu + + + + + + + + + + + void + void Scheme::readAPGSE + (std::ifstream &in, bool scale_from_stu) + readAPGSE + + std::ifstream & + in + + + bool + scale_from_stu + + + + + + + + + + + void + void Scheme::readWaveForm + (std::ifstream &in, bool scale_from_stu) + readWaveForm + + std::ifstream & + in + + + bool + scale_from_stu + + + + + + + + + + + +Auxiliary class to save scheme_files values =============================================================/. + +Helper class to store, handle and read scheme files values . Jonathan Rafael +November 2016 0.2 + + + + + Schemeduration + Schemeheader + Schemenum_rep + SchemereadAPGSE + SchemereadPGSE + SchemereadSchemeFile + SchemereadWaveForm + Schemescale_from_stu + Schemescheme + SchemeScheme + SchemeScheme + Schemescheme_file + SchemeT + Schemetype + Scheme~Scheme + + + diff --git a/doc/xml/class_sentinels.xml b/doc/xml/class_sentinels.xml new file mode 100644 index 0000000..33fda17 --- /dev/null +++ b/doc/xml/class_sentinels.xml @@ -0,0 +1,17 @@ + + + + Sentinels + sentinel.h + +Collision Final class ====================================================================/. + +Auxiliar class to check error and misbehaviours during the particle dynamics. Jonathan Rafael +Junes 2017 + +Class used to check the possible numerical errors or un-handed cases inside the dynamic simulation. + + + + + diff --git a/doc/xml/class_sim_errno.xml b/doc/xml/class_sim_errno.xml new file mode 100644 index 0000000..4cbf160 --- /dev/null +++ b/doc/xml/class_sim_errno.xml @@ -0,0 +1,651 @@ + + + + SimErrno + simerrno.h + + + + SimErrno::SimErrno + () + SimErrno + + + + + + + + + + + + bool + static bool SimErrno::checkFileExist + (const std::string name) + checkFileExist + + const std::string + name + + +Return true if the file does exist, false otherwise. + + + +name + + +file path + + + + + + + + + bool + bool SimErrno::checkSimulationParameters + (Parameters &params) + checkSimulationParameters + + Parameters & + params + + +Return false if any of the parameters are inconsistent or bugged. In may assert the program. + + + +parameter + + +instance + + + + + + + + + bool + bool SimErrno::checkSchemeFile + (Parameters &params) + checkSchemeFile + + Parameters & + params + + +Return false if any of the parameters are inconsistent or bugged. In may assert the program. + + + +parameter + + +instance + + + + + + + + + bool + bool SimErrno::checkPLYFiles + (Parameters &params) + checkPLYFiles + + Parameters & + params + + +Return false if any of the PLY files are inconsistent or bugged. In may assert the program. + + + +parameter + + +instance + + + + + + + + + bool + bool SimErrno::checkCylindersListFile + (Parameters &params) + checkCylindersListFile + + Parameters & + params + + +Return false if any of the cylinder list files are inconsistent or bugged. In may assert the program. + + + +parameter + + +instance + + + + + + + + + bool + bool SimErrno::checkInitWalkerFile + (Parameters &params) + checkInitWalkerFile + + Parameters & + params + + +Return false if the initial position file is inconsistent or bugged. In may assert the program. + + + +parameter + + +instance + + + + + + + + + bool + bool SimErrno::checkVoxelLimits + (Parameters &params) + checkVoxelLimits + + Parameters & + params + + +Return false if the voxel instances are inconsistent or bugged. In may assert the program. + + + +parameter + + +instance + + + + + + + + + bool + bool SimErrno::checkConfigurationFile + (const char *configuration_file) + checkConfigurationFile + + const char * + configuration_file + + +Return false if the scheme file does not exist or there are inconsistent or bugs. In may assert the program. + + + +parameter + + +instance + + + + + + + + + void + void SimErrno::printSimulatinInfo + (Parameters &params, std::ostream &, bool color=1) + printSimulatinInfo + + Parameters & + params + + + std::ostream & + + + bool + color + 1 + + + + + + +parameter + + +instance + + + +iostream + + +to print to + + + +color + + +flag, false if no colour should be display or written + + + + + + + + + void + void SimErrno::checkOuputPrefixAndWriteInfo + (Parameters &params) + checkOuputPrefixAndWriteInfo + + Parameters & + params + + +Return false if the output location and prefix are inconsistence or bugged. + + + +parameter + + +instance + + + + + + + + + bool + bool SimErrno::checkGammaDistributionParamaters + (Parameters &params) + checkGammaDistributionParamaters + + Parameters & + params + + +Return false if the there are errors or inconsistencies in the gamma distr. parameters. + + + +parameter + + +instance + + + + + + + + + void + void SimErrno::warning + (std::string message, std::ostream &, bool color=1) + warning + + std::string + message + + + std::ostream & + + + bool + color + 1 + + + + + + +iostream + + +where to print + + + +colour + + +flag, false if no colour should be display or written + + + + + + + + + void + void SimErrno::info + (std::string message, std::ostream &, bool color=1) + info + + std::string + message + + + std::ostream & + + + bool + color + 1 + + + + + + +iostream + + +where to print + + + +colour + + +flag, false if no colour should be display or written + + + + + + + + + void + void SimErrno::infoMenu + (std::string message, std::string value, std::ostream &, bool color=1, int space=0) + infoMenu + + std::string + message + + + std::string + value + + + std::ostream & + + + bool + color + 1 + + + int + space + 0 + + + + + + +iostream + + +where to print ! + + + +colour + + +flag, false if no colour should be display or written ! + + + +spacing + + +at the end of the message + + + + + + + + + void + void SimErrno::error + (std::string message, std::ostream &, bool color=1) + error + + std::string + message + + + std::ostream & + + + bool + color + 1 + + + + + + +iostream + + +where to print ! + + + +colour + + +flag, false if no colour should be display or written + + + + + + + + + void + void SimErrno::expectedTime + (std::string completed, std::string time, std::ostream &, bool color=1, std::string steps_second="", std::string endl_str="") + expectedTime + + std::string + completed + + + std::string + time + + + std::ostream & + + + bool + color + 1 + + + std::string + steps_second + "" + + + std::string + endl_str + "" + + + + + + +iostream + + +where to print ! + + + +colour + + +flag, false if no colour should be display or written ! + + + +end + + +flag, false if no end of line string should be printing + + + + + + + + + std::string + std::string SimErrno::currentDateTime + () + currentDateTime + + + + + + + + + + bool + bool SimErrno::checkSubdivisionsFile + (Parameters &params) + checkSubdivisionsFile + + Parameters & + params + + +Return false if any of the elements in the file are miss configured. + + + +parameter + + +instance + + + + + + + + + void + void SimErrno::appendRepetitionLabel + (Parameters &params) + appendRepetitionLabel + + Parameters & + params + + +Appends a repetition label on the prefix command so no results are overwritten, helpful if you are running batch of simulation inside a server. + + + +parameter + + +instance + + + + + + + + + +Simulation Input and parameter errors handling class =================================================/. + +Class ot handle the errors in the parameters, logical and on the syntaxis. Jonathan Rafael +March 2016 + +Class to handle the errors in the parameters, logical and on the syntaxThis class contains a set of static methods to check that the configuration files exist and that the parameters are correctly set. This may cause asserts ERRORS or WARNINGS. + + + SimErrnoappendRepetitionLabel + SimErrnocheckConfigurationFile + SimErrnocheckCylindersListFile + SimErrnocheckFileExist + SimErrnocheckGammaDistributionParamaters + SimErrnocheckInitWalkerFile + SimErrnocheckOuputPrefixAndWriteInfo + SimErrnocheckPLYFiles + SimErrnocheckSchemeFile + SimErrnocheckSimulationParameters + SimErrnocheckSubdivisionsFile + SimErrnocheckVoxelLimits + SimErrnocurrentDateTime + SimErrnoerror + SimErrnoexpectedTime + SimErrnoinfo + SimErrnoinfoMenu + SimErrnoprintSimulatinInfo + SimErrnoSimErrno + SimErrnowarning + + + diff --git a/doc/xml/class_simulable_sequence.xml b/doc/xml/class_simulable_sequence.xml new file mode 100644 index 0000000..2b6b569 --- /dev/null +++ b/doc/xml/class_simulable_sequence.xml @@ -0,0 +1,677 @@ + + + + SimulableSequence + GradientWaveform + PGSESequence + simulablesequence.h + + + std::string + std::string SimulableSequence::scheme_file + + scheme_file + + + +Scheme file path + + + + + + std::vector< double > + std::vector<double> SimulableSequence::DWI + + DWI + + + +Real part of the DWI signal + + + + + + std::vector< double > + std::vector<double> SimulableSequence::DWI_intra + + DWI_intra + + + +Real part of the DWI signal intra axonal olny (if needed) + + + + + + std::vector< double > + std::vector<double> SimulableSequence::DWI_extra + + DWI_extra + + + +Real part of the DWI signal extra axonal only (if needed) + + + + + + std::vector< double > + std::vector<double> SimulableSequence::DWIi + + DWIi + + + +imaginary part of the DWI signal + + + + + + std::vector< double > + std::vector<double> SimulableSequence::phase_shift + + phase_shift + + + +auxiliar phase shift for signal computations. + + + + + + int + int SimulableSequence::num_rep + + num_rep + + + +number of repetitions . + + + + + + bool + bool SimulableSequence::save_phase_shift + + save_phase_shift + + + +flag, if true, saves the pahse shift distribution. + + + + + + bool + bool SimulableSequence::dynamic + + dynamic + + + +Flag to indicate if the time steps are non-uniform + + + + + + double + double SimulableSequence::percent_steps_in + + percent_steps_in + + + +percentage of steps that should be inside the gradient times + + + + + + std::vector< double > + std::vector<double> SimulableSequence::time_steps + + time_steps + + + +Auxiliary array to save the time steps + + + + + + Eigen::ArrayXXf + Eigen::ArrayXXf SimulableSequence::phase_shift_distribution + + phase_shift_distribution + + + +Matrix to save the phase shif distribution + + + + + + std::vector< std::vector< double > > + std::vector<std::vector<double> > SimulableSequence::sub_DWI + + sub_DWI + + + +Real part of the DWI signal for each subDivision + + + + + + std::vector< std::vector< double > > + std::vector<std::vector<double> > SimulableSequence::sub_DWI_intra + + sub_DWI_intra + + + +Real part of the DWI intra signal for each subDivision + + + + + + std::vector< std::vector< double > > + std::vector<std::vector<double> > SimulableSequence::sub_DWI_extra + + sub_DWI_extra + + + +Real part of the DWI extra signal for each subDivision + + + + + + std::vector< std::vector< double > > + std::vector<std::vector<double> > SimulableSequence::sub_DWIi + + sub_DWIi + + + +Imaginary part of the DWI signal for each subdivision + + + + + + bool + bool SimulableSequence::subdivision_flag + + subdivision_flag + = false + + + +flag to check if we have several voxel subdivision to compute the signal + + + + + + bool + bool SimulableSequence::separate_signal + + separate_signal + = false + + + +flag to check if we will separate the signal in intra and extra + + + + + + bool + bool SimulableSequence::img_signal + + img_signal + = false + + + +flag to check if the img part will be computed or not (false default + + + + + + std::vector< Subdivision > + std::vector<Subdivision> SimulableSequence::subdivisions + + subdivisions + + + +saves the actual positions of the subdivision to compute the signal + + + + + + + + + SimulableSequence::SimulableSequence + () + SimulableSequence + + + + + + + + + + + virtual SimulableSequence::~SimulableSequence + () + ~SimulableSequence + + + + + + + + + + void + virtual void SimulableSequence::getGradImpulse + (int i, double t, double tLast, Eigen::Vector3d &Gdt)=0 + getGradImpulse + getGradImpulse + getGradImpulse + + int + i + + + double + t + + + double + tLast + + + Eigen::Vector3d & + Gdt + + + + + + +i + + +Walker index + + + +t + + +current time step (in milisenconds) + + + +tLast + + +last time step (in milisenconds) + + + +Gdt + + +vector to compute de G*dt impulse + + + + + + + + + double + virtual double SimulableSequence::getbValue + (unsigned i) + getbValue + getbValue + + unsigned + i + + + + + + +i + + +index of the gradient in the scheme_file (0,N-1) + + +b-value + + + + + + + double + virtual double SimulableSequence::getFreeDecay + (unsigned i, double D) + getFreeDecay + getFreeDecay + + unsigned + i + + + double + D + + +Expected free Decay. + + + + + + + + void + virtual void SimulableSequence::update_phase_shift + (double dt, double dt_last, Walker walker)=0 + update_phase_shift + update_phase_shift + update_phase_shift + + double + dt + + + double + dt_last + + + Walker + walker + + + + + + +i + + +updated walker + + + + + + + + + void + virtual void SimulableSequence::update_phase_shift + (double time_step, Eigen::Matrix3Xd trajectory)=0 + update_phase_shift + update_phase_shift + update_phase_shift + + double + time_step + + + Eigen::Matrix3Xd + trajectory + + + + + + +i + + +updated the phase shift over a whole trajectory + + + + + + + + + void + virtual void SimulableSequence::update_DWI_signal + (Walker &walker)=0 + update_DWI_signal + update_DWI_signal + update_DWI_signal + + Walker & + walker + + +Updates the DWI signal using the cumulated phase shift. + + + + + + + + void + virtual void SimulableSequence::setNumberOfSteps + (unsigned T)=0 + setNumberOfSteps + setNumberOfSteps + setNumberOfSteps + + unsigned + T + + +Set the number of time steps if they are known. + + + + + + + + void + virtual void SimulableSequence::computeDynamicTimeSteps + () + computeDynamicTimeSteps + computeDynamicTimeSteps + +Compute the time for all the steps when they are not constant. + + + + + + + + void + void SimulableSequence::initializeSubdivisionSignals + () + initializeSubdivisionSignals + +Initialize the DWI signals for each subdivision. + + + + + + + + void + void SimulableSequence::initializeIntraExtraSignals + () + initializeIntraExtraSignals + +Initialize the DWI signals for each compartment (intra extra) + + + + + + + + void + void SimulableSequence::writeResultingData + (std::string output_base_name) + writeResultingData + + std::string + output_base_name + + + + + + + + + + + void + void SimulableSequence::writePhaseShiftDistribution + (std::string output_base_name) + writePhaseShiftDistribution + + std::string + output_base_name + + + + + + + + + + + void + void SimulableSequence::cleanPhaseShift + () + cleanPhaseShift + + + + + + + + + + void + void SimulableSequence::cleanDWISignal + () + cleanDWISignal + + + + + + + + + + +MR Sequence Primary Class =============================================================/. + +Elemental base clase. Abstract class to synthesise the MRI signalJonathan Rafael + + + + + + + + + + + + + + + + + + + + + + SimulableSequencecleanDWISignal + SimulableSequencecleanPhaseShift + SimulableSequencecomputeDynamicTimeSteps + SimulableSequenceDWI + SimulableSequenceDWI_extra + SimulableSequenceDWI_intra + SimulableSequenceDWIi + SimulableSequencedynamic + SimulableSequencegetbValue + SimulableSequencegetFreeDecay + SimulableSequencegetGradImpulse + SimulableSequenceimg_signal + SimulableSequenceinitializeIntraExtraSignals + SimulableSequenceinitializeSubdivisionSignals + SimulableSequencenum_rep + SimulableSequencepercent_steps_in + SimulableSequencephase_shift + SimulableSequencephase_shift_distribution + SimulableSequencesave_phase_shift + SimulableSequencescheme_file + SimulableSequenceseparate_signal + SimulableSequencesetNumberOfSteps + SimulableSequenceSimulableSequence + SimulableSequencesub_DWI + SimulableSequencesub_DWI_extra + SimulableSequencesub_DWI_intra + SimulableSequencesub_DWIi + SimulableSequencesubdivision_flag + SimulableSequencesubdivisions + SimulableSequencetime_steps + SimulableSequenceupdate_DWI_signal + SimulableSequenceupdate_phase_shift + SimulableSequenceupdate_phase_shift + SimulableSequencewritePhaseShiftDistribution + SimulableSequencewriteResultingData + SimulableSequence~SimulableSequence + + + diff --git a/doc/xml/class_subdivision.xml b/doc/xml/class_subdivision.xml new file mode 100644 index 0000000..3832769 --- /dev/null +++ b/doc/xml/class_subdivision.xml @@ -0,0 +1,153 @@ + + + + Subdivision + subdivision.h + + + Eigen::Vector3f + Eigen::Vector3f Subdivision::min_limits + + min_limits + + + +Vector with the list of min limits points of each subdivisions + + + + + + Eigen::Vector3f + Eigen::Vector3f Subdivision::max_limits + + max_limits + + + +Vector with the list of max limits points of each subdivisions + + + + + + int + int Subdivision::density + + density + + + +Counter to save the number of particles inside that region + + + + + + int + int Subdivision::density_intra + + density_intra + + + +Counter to save the number of particles labeled as Intra in that region + + + + + + int + int Subdivision::density_extra + + density_extra + + + +Counter to save the number of particles labeled as Extra in that region + + + + + + + + + Subdivision::Subdivision + () + Subdivision + +Naive constructor. + + + + + + + + + Subdivision::Subdivision + (Eigen::Vector3f &, Eigen::Vector3f &) + Subdivision + + Eigen::Vector3f & + min_ + + + Eigen::Vector3f & + max_ + + +Constructor for a defined list of min and max positions. + + + + + + + + bool + bool Subdivision::isInside + (Eigen::Vector3d &pos) + isInside + + Eigen::Vector3d & + pos + + +Auxiliary function to check if a 3d position is inside a "subdivision" i.e. defined cube. + + + +pos + + +3d position + + + + + + + + + +Auxiliary Subdivision Class =============================================================/. + +Auxiliary Class. Implementation of the subdivision of a voxel into separate adquisitionsSeptember 2017 +Jonathan Rafael 0.1.0 + + + + + Subdivisiondensity + Subdivisiondensity_extra + Subdivisiondensity_intra + SubdivisionisInside + Subdivisionmax_limits + Subdivisionmin_limits + SubdivisionSubdivision + SubdivisionSubdivision + + + diff --git a/doc/xml/class_trajectory.xml b/doc/xml/class_trajectory.xml new file mode 100644 index 0000000..0c1620f --- /dev/null +++ b/doc/xml/class_trajectory.xml @@ -0,0 +1,663 @@ + + + + Trajectory + trajectory.h + + + void + void Trajectory::closeTrajReaderFile + () + closeTrajReaderFile + + + +Read operations + + + + + + void + void Trajectory::openTrajReaderFile + () + openTrajReaderFile + + + + + + + + + + void + void Trajectory::initTrajReaderFile + () + initTrajReaderFile + + + + + + + + + + void + void Trajectory::readTrajectoryHeader + () + readTrajectoryHeader + + + + + + + + + + void + void Trajectory::readCurrentWalkersTrajectory + (Eigen::Matrix3Xd &) + readCurrentWalkersTrajectory + + Eigen::Matrix3Xd & + steps_log + + + + + + + + + + + + + void + void Trajectory::initTrajWriter + () + initTrajWriter + + + +Write operations + + + + + + void + void Trajectory::initTrajWriterBinary + () + initTrajWriterBinary + + + + + + + + + + void + void Trajectory::initTrajWriterText + () + initTrajWriterText + + + + + + + + + + void + void Trajectory::writeTrajectoryHeaderBinary + () + writeTrajectoryHeaderBinary + + + + + + + + + + void + void Trajectory::writeTrajectoryHeaderText + () + writeTrajectoryHeaderText + + + + + + + + + + void + void Trajectory::reWriteHeaderFile + (unsigned num_walkers) + reWriteHeaderFile + + unsigned + num_walkers + + + + + + + + + + + void + void Trajectory::writePosition + (Eigen::Vector3d &) + writePosition + + Eigen::Vector3d & + pos + + + + + + + + + + + void + void Trajectory::writePositionText + (Eigen::Vector3d &) + writePositionText + + Eigen::Vector3d & + pos + + + + + + + + + + + void + void Trajectory::writePositionBinary + (Eigen::Vector3d &) + writePositionBinary + + Eigen::Vector3d & + pos + + + + + + + + + + + void + void Trajectory::writePosition + (Eigen::Matrix3Xd &) + writePosition + + Eigen::Matrix3Xd & + pos + + + + + + + + + + + void + void Trajectory::writePositionText + (Eigen::Matrix3Xd &) + writePositionText + + Eigen::Matrix3Xd & + pos + + + + + + + + + + + void + void Trajectory::writePositionBinary + (Eigen::Matrix3Xd &) + writePositionBinary + + Eigen::Matrix3Xd & + pos + + + + + + + + + + + + + std::string + std::string Trajectory::trajfile + + trajfile + + + +trajfile name + + + + + + std::string + std::string Trajectory::headerfile + + headerfile + + + +header name + + + + + + FILE * + FILE* Trajectory::in + + in + + + + + + + + + + FILE * + FILE * Trajectory::in_header + + in_header + + + +Files to be written using the previous names binary out, text out, binary header, text header + + + + + + std::ofstream + std::ofstream Trajectory::bout + + bout + + + + + + + + + + std::ofstream + std::ofstream Trajectory::tout + + tout + + + + + + + + + + std::ofstream + std::ofstream Trajectory::bheaderout + + bheaderout + + + + + + + + + + std::ofstream + std::ofstream Trajectory::theaderout + + theaderout + + + + + + + + + + unsigned + unsigned Trajectory::N + + N + + + + + + + + + + unsigned + unsigned Trajectory::T + + T + + + +number of walkers, total time; + + + + + + double + double Trajectory::dyn_duration + + dyn_duration + + + + + + + + + + std::string + std::string Trajectory::io_flag + + io_flag + + + + + + + + + + std::vector< unsigned > + std::vector<unsigned> Trajectory::pos_times + + pos_times + + + +Times indexes when to save the particle positions. + + + + + + bool + bool Trajectory::isBigEndian + + isBigEndian + + + +flag if the format is big endian + + + + + + bool + bool Trajectory::write_traj + + write_traj + + + +flag if we want to write a traj file + + + + + + bool + bool Trajectory::write_txt + + write_txt + + + +flag if we want to write a text traj file + + + + + + bool + bool Trajectory::write_bin + + write_bin + + + +flag if we want to write a binary traj file + + + + + + bool + bool Trajectory::steps_subset + + steps_subset + + + +true if the steps are no uniform + + + + + + + + + Trajectory::Trajectory + () + Trajectory + +Main constructor, Initialice everythin to default. + + + + + + + + + Trajectory::Trajectory + (const char *traj_file, bool isBigEndian_=true, std::string io_flag_="rb") + Trajectory + + const char * + traj_file + + + bool + isBigEndian_ + true + + + std::string + io_flag_ + "rb" + + +Contructor , Initialice everythin by parameters. + + + + + + + + + Trajectory::~Trajectory + () + ~Trajectory + +Destructor, close files and fstreams. + + + + + + + + void + void Trajectory::initTrajectory + (Parameters params) + initTrajectory + + Parameters + params + + +Initialice the output files if any. + + + + + + + + void + void Trajectory::setTrajFile + (std::string) + setTrajFile + + std::string + trajfile_ + + +Setd the traj file operations. + + + + + + + + + + void + void Trajectory::swapBE2SE2 + (void *source, int size) + swapBE2SE2 + + void * + source + + + int + size + + + + + + + + + + + +Auxiliary class. Handles i/o operation of walker trayectories. ============================/. + +Jonathan Rafael +July 2016 0.2 + + + + + Trajectorybheaderout + Trajectorybout + TrajectorycloseTrajReaderFile + Trajectorydyn_duration + Trajectoryheaderfile + Trajectoryin + Trajectoryin_header + TrajectoryinitTrajectory + TrajectoryinitTrajReaderFile + TrajectoryinitTrajWriter + TrajectoryinitTrajWriterBinary + TrajectoryinitTrajWriterText + Trajectoryio_flag + TrajectoryisBigEndian + TrajectoryN + TrajectoryopenTrajReaderFile + Trajectorypos_times + TrajectoryreadCurrentWalkersTrajectory + TrajectoryreadTrajectoryHeader + TrajectoryreWriteHeaderFile + TrajectorysetTrajFile + Trajectorysteps_subset + TrajectoryswapBE2SE2 + TrajectoryT + Trajectorytheaderout + Trajectorytout + TrajectoryTrajectory + TrajectoryTrajectory + Trajectorytrajfile + Trajectorywrite_bin + Trajectorywrite_traj + Trajectorywrite_txt + TrajectorywritePosition + TrajectorywritePosition + TrajectorywritePositionBinary + TrajectorywritePositionBinary + TrajectorywritePositionText + TrajectorywritePositionText + TrajectorywriteTrajectoryHeaderBinary + TrajectorywriteTrajectoryHeaderText + Trajectory~Trajectory + + + diff --git a/doc/xml/class_triangle.xml b/doc/xml/class_triangle.xml new file mode 100644 index 0000000..fcaee54 --- /dev/null +++ b/doc/xml/class_triangle.xml @@ -0,0 +1,362 @@ + + + + Triangle + triangle.h + + + unsigned + unsigned Triangle::index + + index + + + + + + + + + + Vertex * + Vertex* Triangle::vertices + + vertices + + + + + + + + + + Eigen::Array3i + Eigen::Array3i Triangle::indexes + + indexes + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d Triangle::normal + + normal + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d Triangle::center + + center + + + + + + + + + + double + double Triangle::radius + + radius + + + + + + + + + + + + + Triangle::Triangle + () + Triangle + + + + + + + + + + + Triangle::Triangle + (Vertex *vertices, unsigned index) + Triangle + + Vertex * + vertices + + + unsigned + index + + + + + + + + + + + void + void Triangle::getVertex + (const unsigned i, Eigen::Vector3d &v) + getVertex + + const unsigned + i + + + Eigen::Vector3d & + v + + + + + + + + + + + void + void Triangle::getNormal + (Eigen::Vector3d &normal) + getNormal + + Eigen::Vector3d & + normal + + + + + + + + + + + void + void Triangle::saveNormalAndAuxInfo + () + saveNormalAndAuxInfo + + + + + + + + + + bool + bool Triangle::rayIntersects + (const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, double &t) + rayIntersects + + const Eigen::Vector3d & + ray_origin + + + const Eigen::Vector3d & + step + + + double & + t + + + + + + + + + + + void + void Triangle::stepIntersects_MT + (Walker &walker, const Eigen::Vector3d &step, const double &max_length, Collision &colision) + stepIntersects_MT + + Walker & + walker + + + const Eigen::Vector3d & + step + + + const double & + max_length + + + Collision & + colision + + + + + + + + + + + void + void Triangle::stepIntersects_MT_limits + (const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, const double &max_length, Collision &colision, const Eigen::Vector3d &limits_mod, double limit_x, double limit_y, double limit_z) + stepIntersects_MT_limits + + const Eigen::Vector3d & + ray_origin + + + const Eigen::Vector3d & + step + + + const double & + max_length + + + Collision & + colision + + + const Eigen::Vector3d & + limits_mod + + + double + limit_x + + + double + limit_y + + + double + limit_z + + + + + + + + + + + bool + bool Triangle::rayIntersects_MT + (const Eigen::Vector3d &ray_origin, const Eigen::Vector3d &step, double &u, double &v, double &t) + rayIntersects_MT + + const Eigen::Vector3d & + ray_origin + + + const Eigen::Vector3d & + step + + + double & + u + + + double & + v + + + double & + t + + + + + + + + + + + double + double Triangle::minDistance + (const Eigen::Vector3d p) + minDistance + + const Eigen::Vector3d + p + + + + + + + + + + + +Auxiliary class. Implements trangular barriers. ===================================/. + +Helper class to strore and handle trangular barriers. Jonathan Rafael +July 2016 0.2 + + + + + + + + vertices + + + + + + + + + + Trianglecenter + TrianglegetNormal + TrianglegetVertex + Triangleindex + Triangleindexes + TriangleminDistance + Trianglenormal + Triangleradius + TrianglerayIntersects + TrianglerayIntersects_MT + TrianglesaveNormalAndAuxInfo + TrianglestepIntersects_MT + TrianglestepIntersects_MT_limits + TriangleTriangle + TriangleTriangle + Trianglevertices + + + diff --git a/doc/xml/class_vertex.xml b/doc/xml/class_vertex.xml new file mode 100644 index 0000000..fcc28e3 --- /dev/null +++ b/doc/xml/class_vertex.xml @@ -0,0 +1,107 @@ + + + + Vertex + vertex.h + + + unsigned + unsigned Vertex::index + + index + + + + + + + + + + double + double Vertex::points[3] + [3] + points + + + + + + + + + + + + + Vertex::Vertex + () + Vertex + + + + + + + + + + + Vertex::Vertex + (const double &x, const double &y, const double &z) + Vertex + + const double & + x + + + const double & + y + + + const double & + z + + + + + + + + + + + double + double Vertex::operator() + (unsigned i) + operator() + + unsigned + i + + + + + + + + + + + +Auxiliary class. Implements basic vertices. ====================================/. + +Helper class to strore and handle vertices. Jonathan Rafael +July 2016 0.2 + +Vertex of a 3d poly + + + Vertexindex + Vertexoperator() + Vertexpoints + VertexVertex + VertexVertex + + + diff --git a/doc/xml/class_voxel.xml b/doc/xml/class_voxel.xml new file mode 100644 index 0000000..948d58b --- /dev/null +++ b/doc/xml/class_voxel.xml @@ -0,0 +1,139 @@ + + + + Voxel + voxel.h + + + Eigen::Vector3d + Eigen::Vector3d Voxel::min_limits + + min_limits + + + + + + + + + + Eigen::Vector3d + Eigen::Vector3d Voxel::max_limits + + max_limits + + + + + + + + + + Plane + Plane Voxel::walls[6] + [6] + walls + + + + + + + + + + + + + Voxel::Voxel + () + Voxel + + + + + + + + + + + Voxel::Voxel + (Eigen::Vector3d min_limits_, Eigen::Vector3d max_limits_) + Voxel + + Eigen::Vector3d + min_limits_ + + + Eigen::Vector3d + max_limits_ + + + + + + + + + + + bool + bool Voxel::CheckCollision + (Walker &walker, Eigen::Vector3d &step, double &tmax, Collision &colision) + CheckCollision + + Walker & + walker + + + Eigen::Vector3d & + step + + + double & + tmax + + + Collision & + colision + + + + + + + + + + + +//! Main class. Implements basic voxel limits and operations. Class to handle and manage the voxels in the simulations. So far only one voxel at the time can be handled. To improve to several voxels, modifications shall be done. + + + + + + + + walls + + + + + + + + + + VoxelCheckCollision + Voxelmax_limits + Voxelmin_limits + VoxelVoxel + VoxelVoxel + Voxelwalls + + + diff --git a/doc/xml/class_walker.xml b/doc/xml/class_walker.xml new file mode 100644 index 0000000..15b7065 --- /dev/null +++ b/doc/xml/class_walker.xml @@ -0,0 +1,1038 @@ + + + + Walker + walker.h + + + state + + on_object + + + + + + + on_edge + + + + + + + on_vertex + + + + + + + on_voxel + + + + + + + free + + + + + + + bouncing + + + + + + +An enum. + +All the possibles states that a walker can be in a given step. The next step is perform according to this state + + + + + + RelativeLocation + + unknown + + + + + + + intra + + + + + + + extra + + + + + + +An enum. + +Possible location of the walker inside the voxel. Checks illegal crossings of the barrier (border, lol) + + + + + + + + Eigen::Vector3d + Eigen::Vector3d Walker::pos_r + + pos_r + + + +Real walker position for collision, r stands for real + + + + + + Eigen::Vector3d + Eigen::Vector3d Walker::pos_v + + pos_v + + + +Walker current position + + + + + + Eigen::Vector3d + Eigen::Vector3d Walker::last_pos_r + + last_pos_r + + + +Walker voxel last position + + + + + + Eigen::Vector3d + Eigen::Vector3d Walker::last_pos_v + + last_pos_v + + + +Walker real last position + + + + + + Eigen::Vector3d + Eigen::Vector3d Walker::ini_pos + + ini_pos + + + +Walker intital position + + + + + + Eigen::Vector3d + Eigen::Vector3d Walker::next_direction + + next_direction + + + +Auxiliar vector for special states cases, decides the next direction + + + + + + Eigen::Matrix3Xd + Eigen::Matrix3Xd Walker::pos_r_log + + pos_r_log + + + +log of the real spin position, used to compute the phase shift + + + + + + Eigen::Matrix3Xd + Eigen::Matrix3Xd Walker::pos_v_log + + pos_v_log + + + +log of the voxel position, used for collision location and bouncing + + + + + + int + int Walker::in_obj_index + + in_obj_index + + + +Auxiliar index to save if the walker was inside a convex object + + + + + + int + int Walker::in_ply_index + + in_ply_index + + + +Auxiliar index to save if the walker was inside a convex ply object + + + + + + CylinderCollisionSphere + CylinderCollisionSphere Walker::collision_sphere_cylinders + + collision_sphere_cylinders + + + +Collision sphere for collition against cylidners + + + + + + PLYCollisionSphere + PLYCollisionSphere Walker::collision_sphere_ply + + collision_sphere_ply + + + +Collision sphere for collition against PLY meshes + + + + + + Eigen::Vector3d + Eigen::Vector3d Walker::initial_sphere_pos_v + + initial_sphere_pos_v + + + +Saves the intial positioon of the walker inside the collition sphere + + + + + + unsigned + unsigned Walker::steps_count + + steps_count + + + +Counts the number of steps (including bouncings) made. + + + + + + state + state Walker::status + + status + + + +state memeber + + + + + + RelativeLocation + RelativeLocation Walker::initial_location + + initial_location + + + + + + + + + + RelativeLocation + RelativeLocation Walker::location + + location + + + +location on the substrate (if known) + + + + + + int + int Walker::intra_extra_consensus + + intra_extra_consensus + + + +intra o extra position by face collision consensus w/r the normal + + + + + + unsigned + unsigned Walker::intra_coll_count + + intra_coll_count + + + +counter of collision in the ïntra-side w/r the normal + + + + + + unsigned + unsigned Walker::extra_coll_count + + extra_coll_count + + + +counter of collision in the extra-side w/r the normal + + + + + + unsigned int + unsigned int Walker::index + + index + + + +Walker identifier (id) + + + + + + unsigned int + unsigned int Walker::rejection_count + + rejection_count + + + +counter of the rejected directions in a single time-step + + + + + + float + float Walker::steps_per_second + + steps_per_second + + + +Particles steps per second speeed. + + + + + + + + + Walker::Walker + () + Walker + +Default constructor. + +Set all variables to cero.Based class Walker. + + + + + + + Walker::~Walker + () + ~Walker + + + +Default destructor.Does nothing + + + + + + + Walker::Walker + (double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) + Walker + + double + xmin + + + double + xmax + + + double + ymin + + + double + ymax + + + double + zmin + + + double + zmax + + +Constructor. + +Initialize the walker position in a random position inside the boundaries defined by the limits. + +xmin + + +lower x threshold + + + +xmax + + +upper x threshold + + + +ymin + + +lower y threshold + + + +ymax + + +upper y threshold + + + + + + + + + void + void Walker::getRealPosition + (double &, double &, double &) const + getRealPosition + + double & + x_ + + + double & + y_ + + + double & + z_ + + + + + + + + + + + void + void Walker::getRealPosition + (Eigen::Vector3d &) const + getRealPosition + + Eigen::Vector3d & + _pos_ + + + + + + + + + + + void + void Walker::getVoxelPosition + (double &, double &, double &) const + getVoxelPosition + + double & + x_ + + + double & + y_ + + + double & + z_ + + + + + + + + + + + void + void Walker::getVoxelPosition + (Eigen::Vector3d &) const + getVoxelPosition + + Eigen::Vector3d & + _pos_ + + + + + + + + + + + void + void Walker::getInitialPosition + (double &, double &, double &) const + getInitialPosition + + double & + x_ + + + double & + y_ + + + double & + z_ + + + + + + + + + + + void + void Walker::getInitialPosition + (Eigen::Vector3d &) const + getInitialPosition + + Eigen::Vector3d & + _ini_pos_ + + + + + + + + + + + void + void Walker::getNextDirection + (Eigen::Vector3d &) const + getNextDirection + + Eigen::Vector3d & + _direction_ + + + + + + + + + + + unsigned int + unsigned int Walker::getIndex + () const + getIndex + + + + + + + + + + void + void Walker::setRealPosition + (const double &, const double &, const double &) + setRealPosition + + const double & + x_ + + + const double & + y_ + + + const double & + z_ + + + + + + + + + + + void + void Walker::setRealPosition + (const Eigen::Vector3d &) + setRealPosition + + const Eigen::Vector3d & + _pos_ + + + + + + + + + + + void + void Walker::setVoxelPosition + (const double &, const double &, const double &) + setVoxelPosition + + const double & + x_ + + + const double & + y_ + + + const double & + z_ + + + + + + + + + + + void + void Walker::setVoxelPosition + (const Eigen::Vector3d &) + setVoxelPosition + + const Eigen::Vector3d & + _pos_ + + + + + + + + + + + void + void Walker::setInitialPosition + (const double &, const double &, const double &) + setInitialPosition + + const double & + x_ + + + const double & + y_ + + + const double & + z_ + + + + + + + + + + + void + void Walker::setInitialPosition + (const Eigen::Vector3d &) + setInitialPosition + + const Eigen::Vector3d & + temp + + + + + + + + + + + void + void Walker::setNextDirection + (Eigen::Vector3d &) + setNextDirection + + Eigen::Vector3d & + next_dir + + + + + + + + + + + void + void Walker::setRandomInitialPosition + (const Eigen::Vector3d &min, const Eigen::Vector3d &max) + setRandomInitialPosition + + const Eigen::Vector3d & + min + + + const Eigen::Vector3d & + max + + + + + + + + + + + void + void Walker::setIndex + (unsigned int &) + setIndex + + unsigned int & + _index + + + + + + + + + + + void + void Walker::setRealPosLog + (const Eigen::Vector3d &pos, unsigned t) + setRealPosLog + + const Eigen::Vector3d & + pos + + + unsigned + t + + + + + + + + + + + void + void Walker::setRealPosLog + (double x, double y, double z, unsigned t) + setRealPosLog + + double + x + + + double + y + + + double + z + + + unsigned + t + + + + + + + + + + + void + void Walker::setVoxPosLog + (const Eigen::Vector3d &pos, unsigned t) + setVoxPosLog + + const Eigen::Vector3d & + pos + + + unsigned + t + + + + + + + + + + + void + void Walker::setVoxPosLog + (double x, double y, double z, unsigned t) + setVoxPosLog + + double + x + + + double + y + + + double + z + + + unsigned + t + + + + + + + + + + + void + void Walker::setNumberOfSteps + (unsigned T) + setNumberOfSteps + + unsigned + T + + + + + + + + + + + +Spin Final class =============================================================/. + +Basic unit of the diffusion process.Jonathan Rafael +November 2016 0.2 + +Alias for a particle. Basic unit on the simulation process. Saves all the necessary information to perform the particles dynamics. + + + + + + + + + + + + + + + + + + + + + + collision_sphere_ply + + + collision_sphere_cylinders + + + + + + Walkerbouncing + Walkercollision_sphere_cylinders + Walkercollision_sphere_ply + Walkerextra + Walkerextra_coll_count + Walkerfree + WalkergetIndex + WalkergetInitialPosition + WalkergetInitialPosition + WalkergetNextDirection + WalkergetRealPosition + WalkergetRealPosition + WalkergetVoxelPosition + WalkergetVoxelPosition + Walkerin_obj_index + Walkerin_ply_index + Walkerindex + Walkerini_pos + Walkerinitial_location + Walkerinitial_sphere_pos_v + Walkerintra + Walkerintra_coll_count + Walkerintra_extra_consensus + Walkerlast_pos_r + Walkerlast_pos_v + Walkerlocation + Walkernext_direction + Walkeron_edge + Walkeron_object + Walkeron_vertex + Walkeron_voxel + Walkerpos_r + Walkerpos_r_log + Walkerpos_v + Walkerpos_v_log + Walkerrejection_count + WalkerRelativeLocation + WalkersetIndex + WalkersetInitialPosition + WalkersetInitialPosition + WalkersetNextDirection + WalkersetNumberOfSteps + WalkersetRandomInitialPosition + WalkersetRealPosition + WalkersetRealPosition + WalkersetRealPosLog + WalkersetRealPosLog + WalkersetVoxelPosition + WalkersetVoxelPosition + WalkersetVoxPosLog + WalkersetVoxPosLog + Walkerstate + Walkerstatus + Walkersteps_count + Walkersteps_per_second + Walkerunknown + WalkerWalker + WalkerWalker + Walker~Walker + + + diff --git a/doc/xml/classsentinels_1_1_sentinel.xml b/doc/xml/classsentinels_1_1_sentinel.xml new file mode 100644 index 0000000..ded1555 --- /dev/null +++ b/doc/xml/classsentinels_1_1_sentinel.xml @@ -0,0 +1,342 @@ + + + + sentinels::Sentinel + + + ErrorCases + + none + + + + + + + stuck + + + + + + + crossed + + + + + + + rejected + + + + + + + rejected_initial_pos + + + + + + + + + + + + + + + + + unsigned + unsigned sentinels::Sentinel::stuck_count + + stuck_count + + + + + + + + + + unsigned + unsigned sentinels::Sentinel::illegal_count + + illegal_count + + + + + + + + + + unsigned + unsigned sentinels::Sentinel::bouncings + + bouncings + + + + + + + + + + unsigned + unsigned sentinels::Sentinel::obstacle_id + + obstacle_id + + + + + + + + + + unsigned + unsigned sentinels::Sentinel::rejected_count + + rejected_count + + + + + + + + + + bool + bool sentinels::Sentinel::rejected_step + + rejected_step + + + + + + + + + + bool + bool sentinels::Sentinel::deport_illegals + + deport_illegals + + + + + + + + + + bool + bool sentinels::Sentinel::discard_stucks + + discard_stucks + + + + + + + + + + ErrorCases + ErrorCases sentinels::Sentinel::error + + error + + + + + + + + + + + + + Sentinel::Sentinel + () + Sentinel + + + + + + + + + + void + void Sentinel::clear + () + clear + + + + + + + + + + void + void Sentinel::setBouncingError + (unsigned bouncings) + setBouncingError + + unsigned + bouncings + + + + + + + + + + + void + void Sentinel::setCrossingError + (unsigned) + setCrossingError + + unsigned + id + + + + + + + + + + + void + void Sentinel::setRejectedError + () + setRejectedError + + + + + + + + + + bool + bool Sentinel::checkErrors + (Walker &w, const Parameters &params, bool noPLY, unsigned &bouncing_count) + checkErrors + + Walker & + w + + + const Parameters & + params + + + bool + noPLY + + + unsigned & + bouncing_count + + + + + + + + + + + void + void Sentinel::deportationProcess + (Walker &walker, unsigned &w, unsigned &t, bool &back_tracking, Parameters &params, int id) + deportationProcess + + Walker & + walker + + + unsigned & + w + + + unsigned & + t + + + bool & + back_tracking + + + Parameters & + params + + + int + id + + + + + + + + + + + + + + + + + sentinels::Sentinelbouncings + sentinels::SentinelcheckErrors + sentinels::Sentinelclear + sentinels::Sentinelcrossed + sentinels::Sentineldeport_illegals + sentinels::SentineldeportationProcess + sentinels::Sentineldiscard_stucks + sentinels::Sentinelerror + sentinels::SentinelErrorCases + sentinels::Sentinelillegal_count + sentinels::Sentinelnone + sentinels::Sentinelobstacle_id + sentinels::Sentinelrejected + sentinels::Sentinelrejected_count + sentinels::Sentinelrejected_initial_pos + sentinels::Sentinelrejected_step + sentinels::SentinelSentinel + sentinels::SentinelsetBouncingError + sentinels::SentinelsetCrossingError + sentinels::SentinelsetRejectedError + sentinels::Sentinelstuck + sentinels::Sentinelstuck_count + + + diff --git a/doc/xml/collision_8cpp.xml b/doc/xml/collision_8cpp.xml new file mode 100644 index 0000000..939fe0c --- /dev/null +++ b/doc/xml/collision_8cpp.xml @@ -0,0 +1,101 @@ + + + + collision.cpp + collision.h + cmath + + + + + + + + + + + + + + + + + + + + + + + + + const double + const double EPS_VAL + + EPS_VAL + = 1e-15 + + + + + + + + + + + + + + +#include"collision.h" +#include<cmath> +constdoubleEPS_VAL=1e-15; + +Collision::~Collision() +{ + +} + + +boolCollision::doIHaveMorePiorityThan(Collision&coll) +{ +//ifmytypeisthesame +if(coll.type==type){ +returnt<coll.t; +} +else{ +returntype<coll.type; +} +} + +//Computesthelocationonthecollision,ornearposition. +//Referenttobe,onthevertex,ontheedge,orinside. +voidCollision::computeCollisionLocation() +{ + +col_location=unknown; + +boolon_edge_flag=(std::abs(u)<EPS_VAL);//u=0; +on_edge_flag|=(std::abs(v)<EPS_VAL);//v=0; +on_edge_flag|=(std::abs(1.0-u-v)<EPS_VAL);//u+v=1=>w=0; + +if(on_edge_flag){ +col_location=on_edge; +return; +} +} + + + + + + + + + + + + + + + diff --git a/doc/xml/collision_8h.xml b/doc/xml/collision_8h.xml new file mode 100644 index 0000000..562709e --- /dev/null +++ b/doc/xml/collision_8h.xml @@ -0,0 +1,137 @@ + + + + collision.h + Eigen/Core + src/collision.cpp + src/obstacle.h + src/triangle.h + src/voxel.h + src/triangle.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collision + + + + + + +#ifndefCOLLISION_H +#defineCOLLISION_H +#include<Eigen/Core> + +classCollision{ +public: + +enumcollision_type{hit,near,null,boundary,degenerate}; + + +enumcollision_location{inside,on_edge,on_vertex,voxel,outside,unknown}; + +collision_typetype; +collision_locationcol_location; +Eigen::Vector3dcolision_point; +Eigen::Vector3dbounced_direction; +doublern; +doubleu; +doublev; +doublet; +inttriangle_ind; +intobstacle_ind; +Collision():u(0),v(0),t(1e15),triangle_ind(-1),obstacle_ind(-1){type=null;col_location=unknown;} + +Collision(doubleu_,doublev_,doublet_):u(u_),v(v_),t(t_),triangle_ind(-1),obstacle_ind(-1){} + + +~Collision(); + + +booldoIHaveMorePiorityThan(Collision&coll); + + +voidcomputeCollisionLocation(); + +}; + + +#endif//COLLISION_H + + + + diff --git a/doc/xml/collisionsphere_8cpp.xml b/doc/xml/collisionsphere_8cpp.xml new file mode 100644 index 0000000..cc37f6b --- /dev/null +++ b/doc/xml/collisionsphere_8cpp.xml @@ -0,0 +1,224 @@ + + + + collisionsphere.cpp + collisionsphere.h + + + + + + + + + + + + + + + + + + + + + + +#include"collisionsphere.h" + + +/*******************************************CylinderSphereCollisionImplementation***********************************************/ + + +CylinderCollisionSphere::CylinderCollisionSphere():small_sphere_list_end(0),big_sphere_list_end(0) +{ +} + +voidCylinderCollisionSphere::pushToSmallSphere(unsignedi) +{ +//Ifiisalreadyinsidethe"good"sidewedonothing +if(i<small_sphere_list_end||small_sphere_list_end==collision_list->size()){ +return; +} + +unsignedjkr=collision_list->at(i); +collision_list->at(i)=collision_list->at(small_sphere_list_end); +collision_list->at(small_sphere_list_end)=jkr; +small_sphere_list_end++; + +//WARNINGsmallspheresizeshouldneverbegreaterthanthebigone. +if(small_sphere_list_end>big_sphere_list_end) +big_sphere_list_end=small_sphere_list_end; +} + +voidCylinderCollisionSphere::pushToBigSphere(unsignedi) +{ +//Ifiisalreadyonthe"other"sidewedonothing +if(i<big_sphere_list_end||big_sphere_list_end==collision_list->size()){ +return; +} + +unsignedjkr=collision_list->at(i); +collision_list->at(i)=collision_list->at(big_sphere_list_end); +collision_list->at(big_sphere_list_end)=jkr; +big_sphere_list_end++; + +} + + +voidCylinderCollisionSphere::popFromSmallSphere(unsignedi) +{ +//Ifiisalreadyonthe"other"sidewedonothing +if(i>=small_sphere_list_end||small_sphere_list_end==0){ +return; +} + +unsignedjkr=collision_list->at(i); +collision_list->at(i)=collision_list->at(small_sphere_list_end-1); +collision_list->at(small_sphere_list_end-1)=jkr; +small_sphere_list_end--; +} + +voidCylinderCollisionSphere::popFromBigSphere(unsignedi) +{ +//Ifiisalreadyonthe"other"sidewedonothing +if(i>=big_sphere_list_end||big_sphere_list_end==0){ +return; +} + +unsignedjkr=collision_list->at(i); +collision_list->at(i)=collision_list->at(big_sphere_list_end-1); +collision_list->at(big_sphere_list_end-1)=jkr; +big_sphere_list_end--; + +//WARNINGsmallspheresizeshouldneverbegreaterthanthebigone. +if(big_sphere_list_end<small_sphere_list_end) +small_sphere_list_end=big_sphere_list_end; +} + + +voidCylinderCollisionSphere::setBigSphereSize(floatsize){ +big_sphere_distance=size; +} + +voidCylinderCollisionSphere::setSmallSphereSize(floatsize){ +small_sphere_distance=size; +} + +voidCylinderCollisionSphere::push_index(unsignedintelement) +{ +collision_list->push_back(element); +list_size++; +} + +/************************PLYSphereCollisionImplementation******************/ + +PLYCollisionSphere::PLYCollisionSphere() +{ + +} + +voidPLYCollisionSphere::pushToSmallSphere(unsignedi,unsignedt) +{ +//Lastpositionoftheindexeslist. +unsignedlist_end=small_sphere_list_end[i]; +//Ifiisalreadyinsidethe"good"sidewedonothing +if(t<list_end||list_end==collision_list->at(i).size()){ +return; +} + +unsignedjkr=collision_list->at(i)[t]; +collision_list->at(i)[t]=collision_list->at(i)[list_end]; +collision_list->at(i)[list_end]=jkr; +small_sphere_list_end[i]++; + +//WARNINGsmallspheresizeshouldneverbegreaterthanthebigone. +if(list_end>big_sphere_list_end[i]) +big_sphere_list_end[i]=small_sphere_list_end[i]; +} + +voidPLYCollisionSphere::pushToBigSphere(unsignedi,unsignedt) +{ +//Lastpositionoftheindexeslist. +unsignedlist_end=big_sphere_list_end[i]; + +//Iftisalreadyonthe"other"sidewedonothing +if(t<list_end||list_end==collision_list->size()){ +return; +} + +unsignedjkr=collision_list->at(i)[t]; +collision_list->at(i)[t]=collision_list->at(i)[list_end]; +collision_list->at(i)[list_end]=jkr; +big_sphere_list_end[i]++; +} + + + +voidPLYCollisionSphere::popFromSmallSphere(unsignedi,unsignedt) +{ +//Lastpositionoftheindexeslist. +unsignedlist_end=small_sphere_list_end[i]; + +//ifoutindextisalreadyonthe"correct"sideofthelist +if(t<list_end||list_end==collision_list->at(i).size()){ +return; +} + +unsignedjkr=collision_list->at(i)[t]; +collision_list->at(i)[t]=collision_list->at(i)[list_end-1]; +collision_list->at(i)[list_end-1]=jkr; +small_sphere_list_end[i]++; + +//WARNINGsmallspheresizeshouldneverbegreaterthanthebigone. +if(small_sphere_list_end[i]>big_sphere_list_end[i]) +big_sphere_list_end[i]=small_sphere_list_end[i]; +} + +voidPLYCollisionSphere::popFromBigSphere(unsignedi,unsignedt) +{ +//Lastpositionoftheindexeslist. +unsignedlist_end=big_sphere_list_end[i]; +//Ifiisalreadyonthe"other"sidewedonothing +if(t>=list_end||list_end==0){ +return; +} + +unsignedjkr=collision_list->at(i)[t]; +collision_list->at(i)[t]=collision_list->at(i)[list_end-1]; +collision_list->at(i)[list_end-1]=jkr; +big_sphere_list_end[i]--; + +//WARNINGsmallspheresizeshouldneverbegreaterthanthebigone. +if(big_sphere_list_end<small_sphere_list_end) +small_sphere_list_end=big_sphere_list_end; +} + + +voidPLYCollisionSphere::setBigSphereSize(floatsize){ +big_sphere_distance=size; +} + +voidPLYCollisionSphere::setSmallSphereSize(floatsize){ +small_sphere_distance=size; +} + +voidPLYCollisionSphere::push_ply(std::vector<unsigned>list) +{ +collision_list->push_back(list); +list_size++; +} + + + + + + + + + + + + + diff --git a/doc/xml/collisionsphere_8h.xml b/doc/xml/collisionsphere_8h.xml new file mode 100644 index 0000000..cd08c9e --- /dev/null +++ b/doc/xml/collisionsphere_8h.xml @@ -0,0 +1,212 @@ + + + + collisionsphere.h + vector + src/collisionsphere.cpp + src/walker.h + src/dynamicsSimulation.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Collisionsphere + CylinderCollisionSphere + PLYCollisionSphere + + + + + + +#ifndefCOLLISIONSPHERE_H +#defineCOLLISIONSPHERE_H +#include<vector> + +classCollisionsphere +{ +public: + +floatbig_sphere_distance; +floatsmall_sphere_distance; +unsignedlist_size; + +Collisionsphere():big_sphere_distance(0),small_sphere_distance(0),list_size(0){} +}; + +classCylinderCollisionSphere:publicCollisionsphere{ + +public: + +unsignedsmall_sphere_list_end; +unsignedbig_sphere_list_end; +std::vector<unsigned>*collision_list; +CylinderCollisionSphere(); + + +voidpopFromSmallSphere(unsignedi); + + +voidpushToSmallSphere(unsignedi); + + +voidpopFromBigSphere(unsignedi); + + +voidpushToBigSphere(unsignedi); + + +voidsetBigSphereSize(floatsize); + + +voidsetSmallSphereSize(floatsize); + + +voidpush_index(unsignedintelement); + +}; + +classPLYCollisionSphere:publicCollisionsphere{ + +public: + +std::vector<unsigned>small_sphere_list_end; +std::vector<unsigned>big_sphere_list_end; +std::vector<std::vector<unsigned>>*collision_list; +PLYCollisionSphere(); + + +voidpopFromSmallSphere(unsignedi,unsignedt); + +voidpushToSmallSphere(unsignedi,unsignedt); + +voidpopFromBigSphere(unsignedi,unsignedt); + + +voidpushToBigSphere(unsignedi,unsignedt); + + +voidsetBigSphereSize(floatsize); + + +voidsetSmallSphereSize(floatsize); + + +voidpush_ply(std::vector<unsigned>list); + +}; + +#endif//COLLISIONSPHERE_H + + + + diff --git a/doc/xml/combine.xslt b/doc/xml/combine.xslt new file mode 100644 index 0000000..c148ee4 --- /dev/null +++ b/doc/xml/combine.xslt @@ -0,0 +1,15 @@ + + + + + + + + + + + + diff --git a/doc/xml/compound.xsd b/doc/xml/compound.xsd new file mode 100644 index 0000000..60653ab --- /dev/null +++ b/doc/xml/compound.xsd @@ -0,0 +1,1124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/xml/constants_8h.xml b/doc/xml/constants_8h.xml new file mode 100644 index 0000000..91a7768 --- /dev/null +++ b/doc/xml/constants_8h.xml @@ -0,0 +1,442 @@ + + + + constants.h + stdio.h + string + limits + src/cylinder.cpp + src/cylindergammadistribution.h + src/propagator.h + src/dynamicsSimulation.cpp + src/gradientwaveform.h + src/gradientwaveform.cpp + src/parallelmcsimulation.cpp + src/parameters.cpp + src/pgsesequence.cpp + src/plyobstacle.cpp + src/scheme.cpp + src/sentinel.cpp + src/simerrno.cpp + src/simulablesequence.cpp + src/trajectory.cpp + src/triangle.cpp + src/voxel.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PRINT_EXPETED_TIME + 1 + +Constants ==============================================================================/. + +Defines constants, macros, and values to be used through the implementation. Jonathan Rafael +November 2016 + + + + + + + + SH_BG_RED + "\033[1;41m" + + + + + + + + + + SH_BG_LIGHT_YELLOW + "\033[1;43m" + + + + + + + + + + SH_FG_LIGHT_RED + "\033[1;31m" + + + + + + + + + + SH_FG_LIGHT_YELLOW + "\033[1;33m" + + + + + + + + + + SH_FG_PURPLE + "\033[1;35m" + + + + + + + + + + SH_FG_GRAY + "\033[0;47m" + + + + + + + + + + SH_FG_GREEN + "\033[0;32m" + + + + + + + + + + SH_DEFAULT + "\033[0m" + + + + + + + + + + VERSION_ID + "1.44.004" + + + + + + + + + + PRECISE_T_MIN_D + 0 + + + +outher collision sphere relative size DEPRECATED + + + + + + + + const double + const double m_to_mm + + m_to_mm + = 1e3 + + + +meters to milimeters constant + + + + + + const double + const double s_to_ms + + s_to_ms + = 1e3 + + + +seconds to milisecodns constant + + + + + + const double + const double EPS_VAL + + EPS_VAL + = 1e-15 + + + +numerical epsilon value + + + + + + const double + const double m2_to_mm2 + + m2_to_mm2 + = 1e6 + + + +squared meters to squared milimeters + + + + + + const double + const double giro + + giro + = 267.51525e3 + + + +Gyromagnetic radio given in rad/(ms*T) + + + + + + const double + const double DIFF_CONST + + DIFF_CONST + = 2.02e-7 + + + +Default diffusion coeficient + + + + + + const double + const double barrier_tickness + + barrier_tickness + = 1e-6 + + + +Defines the defaul tickness of a obstacle barrier + + + + + + const double + const double max_number_bouncings + + max_number_bouncings + = 10000.0 + + + +Defines the maximum number of bouncing a particle can make. + + + + + + const double + const double triangle_eps + + triangle_eps + = 1e-10 + + + +Extra area for the PLY triangles. Help to numerical erros + + + + + + const unsigned + const unsigned max_rejections + + max_rejections + =25 + + + +Max number of tries to unstuck a particle in a single step + + + + + + const double + const double INFINITY_VALUE + + INFINITY_VALUE + = std::numeric_limits<double>::infinity() + + + +numerical infinity value Colision optimization parameters + + + + + + const double + const double inner_col_dist_factor + + inner_col_dist_factor + = 0.25 + + + +< inner collision sphere relative size + + + + + + + + + + + +#ifndefCONSTANTS_H +#defineCONSTANTS_H + +#include<stdio.h> +#include<string> +#include<limits> +#definePRINT_EXPETED_TIME1 + + +#defineSH_BG_RED"\033[1;41m" +#defineSH_BG_LIGHT_YELLOW"\033[1;43m" +#defineSH_FG_LIGHT_RED"\033[1;31m" +#defineSH_FG_LIGHT_YELLOW"\033[1;33m" +#defineSH_FG_PURPLE"\033[1;35m" +#defineSH_FG_GRAY"\033[0;47m" +#defineSH_FG_GREEN"\033[0;32m" +#defineSH_DEFAULT"\033[0m" + +#defineVERSION_ID"1.44.004" + +constdoublem_to_mm=1e3; +constdoubles_to_ms=1e3; +constdoubleEPS_VAL=1e-15; +constdoublem2_to_mm2=1e6; +constdoublegiro=267.51525e3; +constdoubleDIFF_CONST=2.02e-7; +constdoublebarrier_tickness=1e-6; +constdoublemax_number_bouncings=10000.0; +constdoubletriangle_eps=1e-10; +constunsignedmax_rejections=25; +constdoubleINFINITY_VALUE=std::numeric_limits<double>::infinity(); +#ifdef_WIN64 +typedefunsignedintulong; +typedefunsignedintuint; +#ifndefM_PI +#defineM_PI3.14159265358979323846 +#endif +#elif__APPLE__ +typedefunsignedintulong; +#endif + +#definePRECISE_T_MIN_D0 + +//constdoubleouther_col_dist_factor=5.0; + +constdoubleinner_col_dist_factor=0.25; + + +#endif//CONSTANTS_H + + + + diff --git a/doc/xml/cylinder_8cpp.xml b/doc/xml/cylinder_8cpp.xml new file mode 100644 index 0000000..f72f365 --- /dev/null +++ b/doc/xml/cylinder_8cpp.xml @@ -0,0 +1,1417 @@ + + + + cylinder.cpp + cylinder.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/DisableStupidWarnings.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/Macros.h + cmath + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/ConfigureVectorization.h + complex + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/MKL_support.h + cerrno + cstddef + cstdlib + cassert + functional + iosfwd + cstring + string + limits + climits + algorithm + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/Constants.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/Meta.h + stdint.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/ForwardDeclarations.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/StaticAssert.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/XprHelper.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/Memory.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/IntegralConstant.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/SymbolicIndex.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/NumTraits.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/MathFunctions.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/GenericPacketMath.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/MathFunctionsImpl.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/arch/Default/ConjHelper.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/arch/Default/Half.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/arch/Default/TypeCasting.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/arch/Default/Settings.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/functors/TernaryFunctors.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/functors/BinaryFunctors.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/functors/UnaryFunctors.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/functors/NullaryFunctors.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/functors/StlFunctors.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/functors/AssignmentFunctors.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/IndexedViewHelper.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/ReshapedHelper.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/ArithmeticSequence.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/IO.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/DenseCoeffsBase.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/DenseBase.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/plugins/CommonCwiseUnaryOps.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/plugins/BlockMethods.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/plugins/IndexedViewMethods.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/plugins/ReshapedMethods.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/MatrixBase.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/plugins/CommonCwiseBinaryOps.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/plugins/MatrixCwiseUnaryOps.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/plugins/MatrixCwiseBinaryOps.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/EigenBase.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Product.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/CoreEvaluators.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/AssignEvaluator.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Assign.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/ArrayBase.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/plugins/ArrayCwiseUnaryOps.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/plugins/ArrayCwiseBinaryOps.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/BlasUtil.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/DenseStorage.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/NestByValue.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/ReturnByValue.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/NoAlias.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/PlainObjectBase.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Matrix.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Array.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/CwiseTernaryOp.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/CwiseBinaryOp.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/CwiseUnaryOp.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/CwiseNullaryOp.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/CwiseUnaryView.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/SelfCwiseBinaryOp.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Dot.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/StableNorm.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Stride.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/MapBase.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Map.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Ref.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Block.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/VectorBlock.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/IndexedView.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Reshaped.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Transpose.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/DiagonalMatrix.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Diagonal.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/DiagonalProduct.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Redux.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Visitor.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Fuzzy.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Swap.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/CommaInitializer.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/GeneralProduct.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Solve.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Inverse.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/SolverBase.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/PermutationMatrix.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Transpositions.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/TriangularMatrix.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/SelfAdjointView.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/products/GeneralBlockPanelKernel.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/products/Parallelizer.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/ProductEvaluators.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/products/GeneralMatrixVector.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/products/GeneralMatrixMatrix.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/SolveTriangular.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/products/SelfadjointMatrixVector.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/products/SelfadjointMatrixMatrix.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/products/SelfadjointProduct.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/products/SelfadjointRank2Update.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/products/TriangularMatrixVector.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/products/TriangularMatrixMatrix.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/products/TriangularSolverMatrix.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/products/TriangularSolverVector.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/BandMatrix.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/CoreIterators.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/ConditionEstimator.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/BooleanRedux.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Select.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/VectorwiseOp.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/PartialReduxEvaluator.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Random.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Replicate.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/Reverse.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/ArrayWrapper.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/StlIterators.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/GlobalFunctions.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Core/util/ReenableStupidWarnings.h + constants.h + Eigen/Dense + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/Core + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/LU + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/misc/Kernel.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/misc/Image.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/LU/FullPivLU.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/LU/PartialPivLU.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/LU/Determinant.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/LU/InverseImpl.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/Cholesky + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/Jacobi + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Jacobi/Jacobi.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Cholesky/LLT.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Cholesky/LDLT.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/QR + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/Householder + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Householder/Householder.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Householder/HouseholderSequence.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Householder/BlockHouseholder.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/QR/HouseholderQR.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/QR/FullPivHouseholderQR.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/QR/ColPivHouseholderQR.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/QR/CompleteOrthogonalDecomposition.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/SVD + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/misc/RealSvd2x2.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/SVD/UpperBidiagonalization.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/SVD/SVDBase.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/SVD/JacobiSVD.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/SVD/BDCSVD.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/Geometry + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/OrthoMethods.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/EulerAngles.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/Homogeneous.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/RotationBase.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/Rotation2D.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/Quaternion.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/AngleAxis.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/Transform.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/Translation.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/Scaling.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/Hyperplane.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/ParametrizedLine.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/AlignedBox.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Geometry/Umeyama.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/Eigenvalues + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Eigenvalues/Tridiagonalization.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Eigenvalues/RealSchur.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Eigenvalues/HessenbergDecomposition.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Eigenvalues/EigenSolver.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Eigenvalues/ComplexSchur.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Eigenvalues/ComplexEigenSolver.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Eigenvalues/RealQZ.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Eigenvalues/GeneralizedEigenSolver.h + /home/jonathan/Dropbox/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/src/Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h + iostream + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Eigen + + + + + +#include"cylinder.h" +#include"constants.h" +#include"Eigen/Dense" +#include<iostream> + +usingnamespaceEigen; + +intCylinder::count=0; +Cylinder::Cylinder() +{ +id=count++; +} + +Cylinder::~Cylinder() +{ +id=count--; +} + +Cylinder::Cylinder(constCylinder&cyl) +{ + +D=cyl.D; +Q=cyl.Q; +P=cyl.P; +radius=cyl.radius; +id=count++; + +} + +boolCylinder::checkCollision(Walker&walker,Eigen::Vector3d&step,double&step_lenght,Collision&colision) +{ +//Originoftheray +Vector3dO; +walker.getVoxelPosition(O); +Vector3dm=O-P; + +//minimumdistancetothecylinderaxis. +doubledistance_to_cilinder=(D.cross(-m)).norm(); +doubled_=distance_to_cilinder-radius; + +//Iftheminimumdistancefromthewalkertothecylinderismorethan +//theactualstepsize,wecandiscardthiscollision. +if(d_>EPS_VAL){ +if(d_>step_lenght+barrier_tickness){ +returnfalse; +} +} + +doublemd=m.dot(D); +doublend=step.dot(D); +doublenn=1.0; +doublemm=m.dot(m); +doublea=nn-nd*nd; +doublek=mm-radius*radius; +doublec=k-md*md; + + +//Paralleltrajectory//WARNING:Checkthisstuff +if(fabs(a)<1e-5&&fabs(c)<barrier_tickness){ +colision.type=Collision::near; +colision.rn=c; +colision.obstacle_ind=id; +returntrue; +} + +doublemn=m.dot(step); +doubleb=mn-nd*md; +doublediscr=b*b-a*c; + +//Norealroots +if(discr<0.0){ +colision.type=Collision::null; +returnfalse; +} + +//ifwearrivedhereweneedtocomputethequadraticequation. +returnhandleCollition(walker,colision,step,a,b,c,discr,step_lenght); + +} + +inlineboolCylinder::handleCollition(Walker&walker,Collision&colision,Vector3d&step,double&a,double&b,double&c,double&discr,double&step_length){ + +doublet1=(-b-sqrt(discr))/a; + +doublet2=(-b+sqrt(discr))/a; + + +//ifwearecompletelysurethatnocollisionhappened +if(((t1<0.0)||(t1>step_length+barrier_tickness))&&((t2<0.0)||(t2>step_length+barrier_tickness))){ +colision.type=Collision::null; +returnfalse; +} + +//WARNING:Cuidarestepatch +//ImplementaPercolacion +if(percolation>0.0){ +double_percolation_((double)rand()/RAND_MAX); + +if(percolation-_percolation_>EPS_VAL){ +count_perc_crossings++; +returnfalse; +} +} + +//aspinthat'sbouncingignorescollisionat0(isinawall) +if(walker.status==Walker::bouncing){ + +//ifthecollisionaretoocloseornegative. +if(((t1<EPS_VAL)||(t1>step_length+barrier_tickness))&&((t2<EPS_VAL)||(t2>step_length+barrier_tickness))){ +colision.type=Collision::null; +returnfalse; +} + +if(t1>=EPS_VAL&&t1<t2) +colision.t=fmin(t1,step_length); +else +colision.t=fmin(t2,step_length); +} +else{ +if(t1>0.0&&t1<t2) +colision.t=fmin(t1,step_length); +else +colision.t=fmin(t2,step_length); +} + +colision.type=Collision::hit; +colision.obstacle_ind=id; + +if(c<-1e-10){ +colision.col_location=Collision::inside; +walker.in_obj_index=id; +} +elseif(c>1e-10){ +colision.col_location=Collision::outside; +} +else{ +colision.col_location=Collision::unknown; +} + +colision.rn=c; + +colision.colision_point=walker.pos_v+colision.t*step; + +if(fabs(a)<EPS_VAL){ +colision.col_location=Collision::on_edge; +colision.bounced_direction=-step; +} +else{ +Eigen::Vector3dV=colision.colision_point-P; +doublev=V.dot(D); +Eigen::Vector3daxis_point=P+v*D; +//Normalpoint +Eigen::Vector3dnormal=(colision.colision_point-axis_point).normalized(); + +Eigen::Vector3dtemp_step=step; +elasticBounceAgainsPlane(walker.pos_v,normal,colision.t,temp_step); + +colision.bounced_direction=temp_step.normalized(); + +} + +returntrue; + +} + +doubleCylinder::minDistance(Walker&w){ + +//Originoftheray +Vector3dO; +w.getVoxelPosition(O); +Vector3dm=O-P; +//minimumdistancetothecylinderaxis. +doubledistance_to_cylinder=(D.cross(-m)).norm(); + +//Minimumdistancetothecylinderswall. +doubled_=(distance_to_cylinder-radius); +//returnd_>0.0?d_:0.0; +returnd_; +} + + + + + + diff --git a/doc/xml/cylinder_8h.xml b/doc/xml/cylinder_8h.xml new file mode 100644 index 0000000..008bfbe --- /dev/null +++ b/doc/xml/cylinder_8h.xml @@ -0,0 +1,145 @@ + + + + cylinder.h + obstacle.h + src/cylinder.cpp + src/cylindergammadistribution.h + src/dynamicsSimulation.h + src/main.cpp + src/walker.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Cylinder + + + + + + +#ifndefCYLINDER_H +#defineCYLINDER_H + +#include"obstacle.h" + + +classCylinder:publicObstacle +{ +public: + +staticintcount; + +Eigen::Vector3dP,Q; +Eigen::Vector3dD; +doubleradius; +Cylinder(); + +~Cylinder(); + +Cylinder(Eigen::Vector3dP_,Eigen::Vector3dQ_,doubleradius_,doublescale=1):P(P_*scale),Q(Q_*scale),radius(radius_*scale){ +D=(Q_-P_).normalized(); +Q=P+D; +id=count++; +} + +Cylinder(Cylinderconst&cyl); + +boolcheckCollision(Walker&walker,Eigen::Vector3d&step,double&step_lenght,Collision&colision); + +doubleminDistance(Walker&w); + +private: + +inlineboolhandleCollition(Walker&walker,Collision&colision,Eigen::Vector3d&step,double&a,double&b,double&c,double&discr,double&step_length); + +}; + +#endif//CYLINDER_H + + + + diff --git a/doc/xml/cylindergammadistribution_8cpp.xml b/doc/xml/cylindergammadistribution_8cpp.xml new file mode 100644 index 0000000..5b0447d --- /dev/null +++ b/doc/xml/cylindergammadistribution_8cpp.xml @@ -0,0 +1,508 @@ + + + + cylindergammadistribution.cpp + cylindergammadistribution.h + algorithm + random + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + std + + + + + +#include"cylindergammadistribution.h" +#include<algorithm>//std::sort +#include<random> + +usingnamespacestd; +usingnamespaceEigen; + +CylinderGammaDistribution::CylinderGammaDistribution(unsignednum_cyl,doublea,doubleb,doubleicvf_,Eigen::Vector3d&min_l,Eigen::Vector3d&max_l,floatmin_radius=0.01) +{ +num_cylinders=num_cyl; +alpha=a; +beta=b; +icvf=icvf_; +min_limits=min_l; +max_limits=max_l; +cylinders.clear(); +this->min_radius=min_radius; +} + +voidCylinderGammaDistribution::computeMinimalSize(std::vector<double>radiis,doubleicvf_,Eigen::Vector3d&l){ + +/*AlittleheuristicforcomplicatedICVF:>0.7*/ +if(icvf_>=0.7&&icvf_<0.99){ +icvf_+=0.01; +} + +doublearea=0; + +for(uinti=0;i<radiis.size();i++){ +area+=radiis[i]*radiis[i]*M_PI; +} + +doublel_=sqrt(area/icvf_); + +l={l_,l_,l_}; +} + + +voidCylinderGammaDistribution::displayGammaDistribution() +{ +constintnrolls=10000;//numberofexperiments +constintnstars=100;//maximumnumberofstarstodistribute +stringmessage; +std::random_devicerd; +std::default_random_enginegenerator(rd()); +std::gamma_distribution<double>distribution(alpha,beta); + +intp[11]={}; + +for(inti=0;i<nrolls;++i){ +doublenumber=distribution(generator); + +if(number<10)++p[int(number)]; +else++p[10]; +} + +for(inti=0;i<9;++i){ +message=std::to_string(i)+"-"+std::to_string(i+1)+":"+std::string(p[i]*nstars/nrolls,'*'); +SimErrno::info(message,cout); +} +message="9-10:"+std::string(p[9]*nstars/nrolls,'*'); +SimErrno::info(message,cout); +message=">10:"+std::string(p[10]*nstars/nrolls,'*')+"\n"; +SimErrno::info(message,cout); +} + +voidCylinderGammaDistribution::createGammaSubstrate() +{ +//generatethegammadistribution +std::random_devicerd; +std::default_random_enginegenerator(rd()); +std::gamma_distribution<double>distribution(alpha,beta); +uintrepetition=40; +uintmax_adjustments=5; +doublebest_icvf=0; +vector<Cylinder>best_cylinders; +Eigen::Vector3dbest_max_limits; +min_limits={0.,0.,0.}; + +std::mt19937gen(rd()); +std::uniform_real_distribution<double>udist(0,1); +std::vector<double>radiis(num_cylinders,0); + +boolachieved=false; + +inttried=0; + +for(unsignedi=0;i<num_cylinders;++i){ + +if(tried>10000){ +stringmessage="Radiidistributioncannotbesampled[Min.radiusError]\n"; +SimErrno::error(message,cout); +assert(0); +} +doublejkr=distribution(generator); + +if(jkr<this->min_radius){ +i--; +tried++; +continue; +} +tried=0; + +radiis[i]=jkr*1e-3;//WECONVERTFROMUMTOMMHERE +} + +//usingalambdafunction: +std::sort(radiis.begin(),radiis.end(),[](constdoublea,doubleb)->bool +{ +returna>b; +}); + + +uintadjustments=0; +//Weincreease1%thetotalarea.(IspreferedtofitallthecylindersthanachieveaperfectICVF.) +doubleadj_increase=icvf*0.01; +while(!achieved){ + +doubletarget_icvf=this->icvf+adjustments*adj_increase; +computeMinimalSize(radiis,target_icvf,max_limits); + +for(uintt=0;t<repetition;t++){ +vector<Cylinder>cylinders_to_add; + +cylinders.clear(); +for(unsignedi=0;i<num_cylinders;i++){ +unsignedstuck=0; + +while(++stuck<=1000){ + +doublet=udist(gen); +doublex=(t*max_limits[0])+(1-t)*min_limits[0]; +t=udist(gen); +doubley=(t*max_limits[1]+(1-t)*min_limits[1]); +doublez=0; + +Vector3dQ={x,y,z}; +Vector3dD={x,y,z+1}; +Cylindercyl(Q,D,radiis[i]); + + +doublemin_distance; + +boolcollision=checkForCollition(cyl,min_limits,max_limits,cylinders_to_add,min_distance); + +if(!collision){ +for(unsignedj=0;j<cylinders_to_add.size();j++) +cylinders.push_back(cylinders_to_add[j]); +break; +} +} + +intdummy; +doubleicvf_current=computeICVF(cylinders,min_limits,max_limits,dummy); +if(icvf_current>best_icvf){ +best_icvf=icvf_current; +best_cylinders.clear(); +best_cylinders=cylinders; +best_max_limits=max_limits; +} +}//endforcylinders + +if(this->icvf-best_icvf<0.0005){ +achieved=true; +break; +} +} +cylinders.clear(); +adjustments++; +cout<<best_icvf<<endl; +if(adjustments>max_adjustments){ +break; +} +} + +cylinders=best_cylinders; +max_limits=best_max_limits; + +//TODOcambiaraINFO +intperc_; +doubleicvf_current=computeICVF(cylinders,min_limits,max_limits,perc_); +cout<<"Percentageofcylindersselected:"+to_string(double(perc_)/radiis.size()*100.0) ++"%,\nICVFachieved:"+to_string(icvf_current*100)+"("+to_string(int((icvf_current/icvf*100)))+"%ofthedesiredicvf)\n"<<endl; +} + +voidCylinderGammaDistribution::printSubstrate(ostream&out) +{ +out<<1e-3<<endl; +for(unsignedi=0;i<cylinders.size();i++){ + +out<<cylinders[i].P[0]*1e3<<""<<cylinders[i].P[1]*1e3<<""<<cylinders[i].P[2]*1e3<<"" +<<cylinders[i].Q[0]*1e3<<""<<cylinders[i].Q[1]*1e3<<""<<cylinders[i].Q[2]*1e3<<"" +<<cylinders[i].radius*1e3<<endl; +} +} + +boolCylinderGammaDistribution::checkForCollition(Cylindercyl,Vector3dmin_limits,Vector3dmax_limits,std::vector<Cylinder>&cylinders_to_add,double&min_distance) +{ +cylinders_to_add.clear(); + +checkBoundaryConditions(cyl,cylinders_to_add,min_limits,max_limits); + +min_distance=1e10; + +boolcollision=false; + +for(unsignedi=0;i<cylinders.size();i++){ +for(unsignedj=0;j<cylinders_to_add.size();j++){ + +doubledistance=(cylinders[i].P-cylinders_to_add[j].P).norm(); + +if(distance-(cylinders[i].radius+cylinders_to_add[j].radius)<1e-15){ +min_distance=0; +collision=true; +break; +} +if(distance<min_distance) +min_distance=distance; +} +} + +//weneedtocheckthatthecylinderstoadddon'tinterse4cteachother(verysmallvoxelsizes) + +for(unsignedi=0;i<cylinders_to_add.size()-1;i++){ +for(unsignedj=i+1;j<cylinders_to_add.size();j++){ + +doubledistance=(cylinders_to_add[i].P-cylinders_to_add[j].P).norm(); + +if(distance-(cylinders_to_add[i].radius+cylinders_to_add[j].radius)<1e-15){ +min_distance=0; +collision=true; +break; +} +if(distance<min_distance) +min_distance=distance; +} +} + +returncollision; + +} + +/* +WARNING:Thewaywediscardrepeatedcylindersisusingradius.Repreatedradius(likereallythesame) +areconsideredthesame.Thisbecasusewedon'ttrackwichcylindershadtobereplciatedtomantainthevoxel +symmetry +*/ + +doubleCylinderGammaDistribution::computeICVF(std::vector<Cylinder>&cylinders,Vector3d&min_limits,Vector3d&max_limits,int&num_no_repeat) +{ +if(cylinders.size()==0) +return0; + +doubleAreaV=(max_limits[0]-min_limits[0])*(max_limits[1]-min_limits[1]); + +doubleAreaC=0; + +//usingalambdafunction: +std::sort(cylinders.begin(),cylinders.end(),[](constCylindera,Cylinderb)->bool +{ +returna.radius>b.radius; +}); + +doublerad_holder=-1; +num_no_repeat=0; +for(uinti=0;i<cylinders.size();i++){ + +if(fabs(rad_holder-cylinders[i].radius)<1e-15){ +continue; +} +else{ +rad_holder=cylinders[i].radius; +} + +doublerad=cylinders[i].radius; +AreaC+=M_PI*rad*rad; +num_no_repeat++; +} +returnAreaC/AreaV; +} + + +voidCylinderGammaDistribution::checkBoundaryConditions(Cylindercyl,std::vector<Cylinder>&cylinders_to_add,Vector3dmin_limits,Vector3dmax_limits){ +vector<Cylinder>to_add; + +to_add.push_back(cyl); + +for(inti=0;i<2;i++){ + +doublerad=cyl.radius; + +if(cyl.P[i]+rad>=max_limits[i]){ + +Cylindertmp=cyl; +tmp.P[i]+=min_limits[i]-max_limits[i]; +tmp.Q[i]+=min_limits[i]-max_limits[i]; +to_add.push_back(tmp); +} + +if(cyl.P[i]-rad<=min_limits[i]){ +Cylindertmp=cyl; +tmp.P[i]+=max_limits[i]-min_limits[i]; +tmp.Q[i]+=max_limits[i]-min_limits[i]; +to_add.push_back(tmp); +} +} + +if(to_add.size()==3) +for(unsignedj=1;j<3;j++){ +Cylinderjkr(to_add[j]); +for(inti=0;i<2;i++){ +doublerad=cyl.radius; + +if(jkr.P[i]+rad>=max_limits[i]){ +Cylindertmp(jkr); +tmp.P[i]+=min_limits[i]-max_limits[i]; +tmp.Q[i]+=min_limits[i]-max_limits[i]; +to_add.push_back(tmp); +} + +if(jkr.P[i]-rad<=min_limits[i]){ +Cylindertmp(jkr); +tmp.P[i]+=max_limits[i]-min_limits[i]; +tmp.Q[i]+=max_limits[i]-min_limits[i]; +to_add.push_back(tmp); +} +} +} + +for(unsignedi=0;i<to_add.size();i++) +{ +boolrep=false; +for(unsignedj=0;j<cylinders_to_add.size();j++){ +if((fabs(to_add[i].P[0]-cylinders_to_add[j].P[0])<1e-12)&&(fabs(to_add[i].P[1]-cylinders_to_add[j].P[1])<1e-12)) +{ +rep=true; +break; +} +} + +if(rep==false){ +cylinders_to_add.push_back(to_add[i]); +} +} +} + + + + diff --git a/doc/xml/cylindergammadistribution_8h.xml b/doc/xml/cylindergammadistribution_8h.xml new file mode 100644 index 0000000..50f4f4d --- /dev/null +++ b/doc/xml/cylindergammadistribution_8h.xml @@ -0,0 +1,197 @@ + + + + cylindergammadistribution.h + Eigen/Core + vector + constants.h + simerrno.h + iostream + cylinder.h + src/cylindergammadistribution.cpp + src/parallelmcsimulation.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CylinderGammaDistribution + + + + + + +#ifndefCYLINDERGAMMADISTRIBUTION_H +#defineCYLINDERGAMMADISTRIBUTION_H + +#include"Eigen/Core" +#include<vector> +#include"constants.h" +#include"simerrno.h" +#include<iostream> +#include"cylinder.h" + +classCylinderGammaDistribution +{ +public: + +unsignednum_cylinders; +doublealpha; +doublebeta; +doubleicvf; +floatmin_radius; +Eigen::Vector3dmin_limits; +Eigen::Vector3dmax_limits; +std::vector<Cylinder>cylinders; +CylinderGammaDistribution(unsigned,double,double,double,Eigen::Vector3d&,Eigen::Vector3d&,floatmin_radius); + +voiddisplayGammaDistribution(); + +voidcreateGammaSubstrate(); + +voidprintSubstrate(std::ostream&out); + +private: + +boolcheckForCollition(Cylindercyl,Eigen::Vector3dmin_limits,Eigen::Vector3dmax_limits,std::vector<Cylinder>&cylinders_list,double&min_distance); + +voidcheckBoundaryConditions(Cylindercyl,std::vector<Cylinder>&cylinders_list,Eigen::Vector3dmin_limits,Eigen::Vector3dmax_limits); + +doublecomputeICVF(std::vector<Cylinder>&cylinders,Eigen::Vector3d&min_limits,Eigen::Vector3d&max_limits,int&num_no_repeat); + +voidcomputeMinimalSize(std::vector<double>radiis,doubleicvf_,Eigen::Vector3d&l); + + +}; + +#endif//CYLINDERGAMMADISTRIBUTION_H + + + + diff --git a/doc/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml b/doc/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml new file mode 100644 index 0000000..45a501c --- /dev/null +++ b/doc/xml/dir_68267d1309a1af8e8297ef4c3efbcdba.xml @@ -0,0 +1,59 @@ + + + + src + collision.cpp + collision.h + collisionsphere.cpp + collisionsphere.h + constants.h + cylinder.cpp + cylinder.h + cylindergammadistribution.cpp + cylindergammadistribution.h + dynamicsSimulation.cpp + dynamicsSimulation.h + gradientwaveform.cpp + gradientwaveform.h + main.cpp + mcsimulation.cpp + mcsimulation.h + obstacle.cpp + obstacle.h + parallelmcsimulation.cpp + parallelmcsimulation.h + parameters.cpp + parameters.h + pgsesequence.cpp + pgsesequence.h + plyobstacle.cpp + plyobstacle.h + propagator.cpp + propagator.h + scheme.cpp + scheme.h + sentinel.cpp + sentinel.h + simerrno.cpp + simerrno.h + simulablesequence.cpp + simulablesequence.h + subdivision.cpp + subdivision.h + trajectory.cpp + trajectory.h + triangle.cpp + triangle.h + vertex.cpp + vertex.h + voxel.cpp + voxel.h + walker.cpp + walker.h + + + + + + + diff --git a/doc/xml/dynamics_simulation_8cpp.xml b/doc/xml/dynamics_simulation_8cpp.xml new file mode 100644 index 0000000..04e85be --- /dev/null +++ b/doc/xml/dynamics_simulation_8cpp.xml @@ -0,0 +1,1621 @@ + + + + dynamicsSimulation.cpp + dynamicsSimulation.h + constants.h + algorithm + time.h + assert.h + Eigen/Dense + Eigen/Geometry + fstream + collisionsphere.h + simerrno.h + simulablesequence.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"dynamicsSimulation.h" +#include"constants.h" +#include<algorithm> +#include<time.h>/*time_t,structtm,difftime,time,mktime*/ +#include<assert.h> +#include"Eigen/Dense" +#include"Eigen/Geometry" +#include<fstream> +#include"constants.h" +#include"collisionsphere.h" +#include"simerrno.h" +#include"simulablesequence.h" + +usingnamespaceEigen; +usingnamespacestd; +usingnamespacesentinels; + +DynamicsSimulation::DynamicsSimulation(){ +plyObstacles_list=nullptr; + +params.num_walkers=1;//N +params.num_steps=1;//T +params.traj_file=""; +ini_pos_file=""; +completed=0; +max_simulation_time=0; + +params.sim_duration=1;//secs + +num_simulated_walkers=0; + +params.diffusivity=DIFF_CONST; +step_lenght=sqrt(6.0*params.diffusivity*params.sim_duration/params.num_steps); +params.write_traj=trajectory.write_traj=false; +params.write_txt=trajectory.write_txt=false; + +if(params.seed>0){ +mt.seed(ulong(params.seed)); +} +else{ +//Randomseed +std::random_devicerd; +mt.seed(rd()); +} + +print_expected_time=1; +icvf=0; +intra_tries=0; +total_tries=0; +aux_walker_index=0; +} + +DynamicsSimulation::DynamicsSimulation(std::stringconf_file){ +plyObstacles_list=nullptr; + +completed=0; +readConfigurationFile(conf_file); + +trajectory.initTrajectory(params); + +if(params.seed>0){ +mt.seed(ulong(params.seed)); +} +else{ +//Randomseed +std::random_devicerd; +mt.seed(rd()); +} +print_expected_time=1; + +this->step(1)=0; +icvf=0; +intra_tries=0; +total_tries=0; +aux_walker_index=0; +} + +DynamicsSimulation::DynamicsSimulation(Parameters&params_){ +plyObstacles_list=nullptr; + +params=params_; +completed=0; +trajectory.initTrajectory(params); + +if(params.seed>0){ +mt.seed(ulong(params.seed)); +} +else{ +//Randomseed +std::random_devicerd; +mt.seed(rd()); +} + +print_expected_time=1; +this->step(1)=0; +icvf=0; +intra_tries=0; +total_tries=0; +aux_walker_index=0; +} + +voidDynamicsSimulation::initObstacleInformation(){ + +if(params.collision_sphere_distance<=0){ +params.collision_sphere_distance=inner_col_dist_factor; +} + +//Cylinderslistofindexinitialization +for(unsignedi=0;i<(*cylinders_list).size();i++){ +cylinders_deque.push_back(i); + +if(params.obstacle_permeability>0.0){ +(*cylinders_list)[i].percolation=params.obstacle_permeability; +} +} + +walker.collision_sphere_cylinders.collision_list=&cylinders_deque; +walker.collision_sphere_cylinders.list_size=unsigned(cylinders_deque.size()); +walker.collision_sphere_cylinders.big_sphere_list_end=walker.collision_sphere_cylinders.list_size; + +//PLYindexlistinitialization +for(unsignedi=0;i<(*plyObstacles_list).size();i++){ +std::vector<unsigned>jkr; +for(unsignedt=0;t<(*plyObstacles_list)[i].face_number;t++){ +jkr.push_back(t); +} + +if(params.obstacle_permeability>0.0){ +(*plyObstacles_list)[i].percolation=params.obstacle_permeability; +} + +ply_deque.push_back(jkr); +walker.collision_sphere_ply.small_sphere_list_end.push_back(0); +walker.collision_sphere_ply.big_sphere_list_end.push_back(unsigned(jkr.size())); +walker.collision_sphere_ply.list_size++; +} +walker.collision_sphere_ply.collision_list=&ply_deque; +} + +voidDynamicsSimulation::updatePropagator(Eigen::Matrix3Xd&log_pos_r) +{ +for(uintt=0;t<params.record_prop_times.size();t++){ +autotime=params.record_prop_times[t]; + +Eigen::Vector3fdisplacement; + +displacement[0]=float(log_pos_r(0,0)-log_pos_r(0,time)); +displacement[1]=float(log_pos_r(1,0)-log_pos_r(1,time)); +displacement[2]=float(log_pos_r(2,0)-log_pos_r(2,time)); + +for(uinti=0;i<params.prop_dirs.size();i++){ + +Eigen::Vector3fdirection=params.prop_dirs[i]; + +Eigen::Vector3fd_projection=direction.dot(displacement)*direction; + +propagator.propagator_log[t][i]+=d_projection.squaredNorm(); +} +} +} + +voidDynamicsSimulation::normalizePropagator(floatnum_samples) +{ + +if(num_samples<0) +return; + +for(uinti=0;i<this->propagator.num_times;i++){ +for(uintj=0;j<propagator.num_dirs;j++){ +propagator.propagator_log[i][j]/=num_samples; +} +} +} + +voidDynamicsSimulation::computeICVF() +{ +icvf=float(intra_tries)/float(total_tries); +} + +boolDynamicsSimulation::finalPositionCheck() +{ +intcyl_id,ply_id; + +if((*plyObstacles_list).size()>0andsentinela.deport_illegalsandparams.obstacle_permeability<=0){ + +boolisIntra=isInIntra(this->walker.pos_v,cyl_id,ply_id,0); + +//cout<<endl<<endl<<isIntra<<""<<this->walker.location<<""<<walker.initial_location<<endl; + +if((isIntraandthis->walker.initial_location==Walker::extra)or((!isIntraandthis->walker.initial_location==Walker::intra))){ +//cout<<"Imworking"<<endl; + +//cout<<(this->walker.initial_location==Walker::intra)<<"Intra"<<endl; +//cout<<isIntra<<endl; +returntrue; +} +} +returnfalse; +} + +voidDynamicsSimulation::writePropagator(std::stringpath) +{ +if(params.write_bin){ +ofstreambout; +stringpath_bin=path+".bfloat"; +bout.open(path_bin.c_str(),std::ofstream::binary); + +if(!bout){ +std::cout<<"Cannotopen"<<path<<std::endl; +return; +} + +for(uinti=0;i<this->propagator.num_times;i++){ +for(uintj=0;j<propagator.num_dirs;j++){ +floatp=propagator.propagator_log[i][j]; +bout.write(reinterpret_cast<char*>(&p),sizeof(p)); +} +} +bout.close(); +} + +if(params.write_txt){ + +ofstreamtout; +tout.open(path,std::ios::out); + +if(!tout){ +//TODO:Errorhandling +std::cout<<"Cannotopen"<<path.c_str()<<std::endl; +return; +} + +for(uinti=0;i<this->propagator.num_times;i++){ +for(uintj=0;j<propagator.num_dirs;j++){ +floatp=propagator.propagator_log[i][j]; +tout<<p<<""; +} +tout<<endl; +} + +tout.close(); +} +} + + + + +voidDynamicsSimulation::initSimulation() +{ + +//Initialsteplength=sqrt(6*D*dt/T) +step_lenght=sqrt(6.0*(params.diffusivity*params.sim_duration)/double(params.num_steps)); + +//Writestheheaderfileandopens.trajfile(ifrequired) +trajectory.initTrajWriter(); + +//Initializethewalkertrajectorylog +walker.setNumberOfSteps(params.num_steps); + +//timestep=dt/T +time_step=params.sim_duration/double(params.num_steps); +time_dt=0; +last_time_dt=0; + +//topredicttime +time(&start); + +//Initializereadingfileforthewalkerposition(ifpassedasparameter) +std::ios_base::iostateexceptionMask=iniPos.exceptions()|std::ios::failbit; +iniPos.exceptions(exceptionMask); + +//ifaini_walkers_filewaspassed +if(params.ini_walkers_file.length()>3){ +try{ +iniPos.open(params.ini_walkers_file); +ini_pos_file_ini_index=(uint(id)*params.num_walkers)%params.ini_walkers_file_count; + +//Wemovethefilestartuntilwereachtheinitialposition(MULTICORESUPPPORT) +for(unsignedi=0;i<ini_pos_file_ini_index;i++){ +doublex,y,z; +iniPos>>x;iniPos>>y;iniPos>>z; +} +} +catch(std::ios_base::failure&e){ +std::cerr<<"Sim:"<<id<<""<<e.what()<<'\n'<<"Errorloadingwalkerinitialpositions.\n"; +} +} + +initObstacleInformation(); + +//Flagsforthecrossingandstuckparticles.(numericalerrorsentinels) +sentinela.deport_illegals=params.discard_illegals; +sentinela.discard_stucks=params.discard_stucks; + +if(params.log_propagator){ +propagator.num_dirs=uint(params.prop_dirs.size()); +propagator.num_times=uint(params.record_prop_times.size()); +propagator.initPropagator(); +} + + +if(params.custom_sampling_area==falseandvoxels_list.size()>0){ +for(autoi=0;i<3;i++){ +params.min_sampling_area[i]=voxels_list[0].min_limits[i]; +params.max_sampling_area[i]=voxels_list[0].max_limits[i]; +} +} +} + + +boolDynamicsSimulation::expectedTimeAndMaxTimeCheck(unsignedw) +{ +/******Somecodetogetapredictedtime**********/ +doublecompleted_perc=int((w+1.0)/(params.num_walkers+1.0)*100.0); +//unsignedtent_num_walkers=params.num_walkers/10+1; + +time(&now); + +second_passed=now-start; + +if(print_expected_time){ +if(completed_perc>=completed){ + +if(this->completed<=0.0){ +SimErrno::expectedTime(to_string(int(completed)),"Unknown",cout,true,"?",""); +cout.flush(); +completed+=5; +} +elseif(completed_perc>=completed){ +cout<<string(50,''); +cout<<string(200,'\b'); +cout.flush(); +intsteps_per_second=int(float(w*params.num_steps)/second_passed)*params.num_proc; + +if(steps_per_second>0){ +strings_p=std::to_string(steps_per_second); + +SimErrno::expectedTime(to_string(int(completed)),secondsToMinutes((double(params.num_walkers-w+1))*second_passed/double(w+1)), +cout,true,s_p,""); + +} +else{ +SimErrno::expectedTime(to_string(int(completed)),"Unknown",cout,true,"?",""); +cout.flush(); +} +completed=max(completed+5.0,completed_perc); +cout.flush(); +} +} +elseif(w==params.num_walkers-1){ +cout<<string(50,''); +cout<<string(200,'\b'); +cout.flush(); +SimErrno::expectedTime("100","0seconds",cout,true,"\n"); +cout.flush(); +} +} +/******ENDSomecodetogetapredictedtime**********/ + + +if((params.max_simulation_time>0)&&(second_passed>=params.max_simulation_time)){ +returntrue; +} + +returnfalse; +} + +voidDynamicsSimulation::writeDWSignal(SimulableSequence*dataSynth) +{ +//Writestheoutputdata +if(dataSynth){ +dataSynth->writeResultingData(params.output_base_name); +if(params.log_phase_shift) +dataSynth->writePhaseShiftDistribution(params.output_base_name); +} +} + +voidDynamicsSimulation::iniWalkerPosition() +{ +walker.initial_location=Walker::unknown; +walker.location=Walker::unknown; +walker.intra_extra_consensus=walker.intra_coll_count=walker.extra_coll_count=walker.rejection_count=0; + +/* +if(params.custom_ini_walker_pos.size()>0){ +doublex,y,z; +x=params.custom_ini_walker_pos[aux_walker_index][0]; +y=params.custom_ini_walker_pos[aux_walker_index][1]; +z=params.custom_ini_walker_pos[aux_walker_index][2]; +aux_walker_index++; +//cout<<x<<''<<y<<''<<z<<endl; +walker.setInitialPosition(x,y,z); + +boolintra_flag=isInIntra(walker.ini_pos,walker.in_obj_index,walker.in_ply_index,0.0); +walker.location=(intra_flag==1)?Walker::RelativeLocation::intra:Walker::RelativeLocation::extra; +walker.initial_location=walker.location; + +} +//Ifthenumberofpositionsislessthanthewalkers,itrestarts. +else*/if(iniPos.is_open()){ +doublex,y,z; + +iniPos>>x;iniPos>>y;iniPos>>z; +walker.setInitialPosition(x,y,z); + +if(++ini_pos_file_ini_index>=params.ini_walkers_file_count){ +iniPos.clear(); +iniPos.seekg(0); +ini_pos_file_ini_index=0; +} +} +elseif(params.ini_delta_pos.size()>0){ +walker.setRandomInitialPosition(Vector3d(double(params.ini_delta_pos[0]),double(params.ini_delta_pos[1]),double(params.ini_delta_pos[2])), +Vector3d(double(params.ini_delta_pos[0]),double(params.ini_delta_pos[1]),double(params.ini_delta_pos[2]))); +} +elseif(params.ini_walker_flag.compare("intra")==0){ +Vector3dintra_pos; +getAnIntraCellularPosition(intra_pos,walker.in_obj_index,walker.in_ply_index); +walker.setInitialPosition(intra_pos); +walker.intra_extra_consensus--; +walker.initial_location=Walker::intra; +} +elseif(params.ini_walker_flag.compare("extra")==0){ +Vector3dextra_pos; +getAnExtraCellularPosition(extra_pos); +walker.setInitialPosition(extra_pos); +walker.initial_location=Walker::extra; +walker.intra_extra_consensus++; +} +//Todo:ponerestobiensinelcasodehexapacking +elseif(voxels_list.size()>0orparams.custom_sampling_area){ +walker.setRandomInitialPosition(params.min_sampling_area,params.max_sampling_area); +if(params.computeVolume){ +boolintra_flag=isInIntra(walker.ini_pos,walker.in_obj_index,walker.in_ply_index,0.0); +walker.location=(intra_flag==1)?Walker::RelativeLocation::intra:Walker::RelativeLocation::extra; +walker.initial_location=walker.location; +} +} +else{ +walker.setInitialPosition(Vector3d(0,0,0)); +} +} + + +voidDynamicsSimulation::initWalkerObstacleIndexes() +{ +//Theoutercollisionspherehasaradiusr=l*T +floatouter_col_dist_factor=float(params.num_steps*step_lenght); + +walker.initial_sphere_pos_v=walker.pos_v; +walker.collision_sphere_cylinders.setBigSphereSize(outer_col_dist_factor); + +//Theinnercollisionspherehasradiusl*T*collision_sphere_distance +floatinner_col_dist_factor=step_lenght*sqrt(params.num_steps)*params.collision_sphere_distance; +walker.collision_sphere_cylinders.setSmallSphereSize(inner_col_dist_factor); + +//NewversionCylindersobstacleselection +walker.collision_sphere_cylinders.small_sphere_list_end=0; +walker.collision_sphere_cylinders.big_sphere_list_end=unsigned(cylinders_deque.size()); + +//Weaddandremovethecylinderindexesthatareornotinsidesphere. +for(unsignedi=0;i<walker.collision_sphere_cylinders.list_size;i++){ +unsignedindex=walker.collision_sphere_cylinders.collision_list->at(i); +floatdist=float((*cylinders_list)[index].minDistance(walker)); +if(dist<walker.collision_sphere_cylinders.small_sphere_distance){ +walker.collision_sphere_cylinders.pushToSmallSphere(i); +} +} + +//*PLYCollisionSphere*// + +walker.collision_sphere_ply.setBigSphereSize(outer_col_dist_factor); +walker.collision_sphere_ply.setSmallSphereSize(inner_col_dist_factor); + +//cout<<outer_col_dist_factor<<endl; +//cout<<inner_col_dist_factor<<endl; + +for(unsignedi=0;i<walker.collision_sphere_ply.list_size;i++) +{ +walker.collision_sphere_ply.small_sphere_list_end[i]=0; +walker.collision_sphere_ply.big_sphere_list_end[i]=(*plyObstacles_list)[i].face_number; +for(unsignedt=0;t<(*plyObstacles_list)[i].face_number;t++){ + +unsignedindex=walker.collision_sphere_ply.collision_list->at(i)[t]; +floatdist=float((*plyObstacles_list)[i].minDistance(walker,index)); + +if(dist>walker.collision_sphere_ply.big_sphere_distance) +{ +walker.collision_sphere_ply.popFromBigSphere(i,t); +} + +if(dist<walker.collision_sphere_ply.small_sphere_distance) +{ +walker.collision_sphere_ply.pushToSmallSphere(i,t); +} +} +} + + +} + + +voidDynamicsSimulation::updateCollitionSphere(unsignedt) +{ +floatinner_ball_size=walker.collision_sphere_ply.small_sphere_distance; +floatouther_ball_size=walker.collision_sphere_ply.big_sphere_distance; + +floatsphere_sqrd_displacement=float((walker.initial_sphere_pos_v-walker.pos_v).norm()); + +if(sphere_sqrd_displacement+float(step_lenght)>outher_ball_size){ +initWalkerObstacleIndexes(); +} +elseif(sphere_sqrd_displacement+float(step_lenght)>inner_ball_size){ +updateWalkerObstacleIndexes(t); +} +} + +voidDynamicsSimulation::getAnIntraCellularPosition(Vector3d&intra_pos,int&cyl_ind,int&ply_ind) +{ + +std::random_devicerd; +std::mt19937gen(rd()); +std::uniform_real_distribution<double>udist(0,1); + + +if(cylinders_list->size()<=0andplyObstacles_list->size()<=0){ +SimErrno::error("Cannotinitializeintra-axonalwalkerswithinthegivensubstrate.",cout); +SimErrno::error("There'snodefinedintra-axonalcompartment(missingobstacles?)",cout); +assert(0); +} +if(voxels_list.size()<=0){ +SimErrno::error("Cannotinitializeintra-cellularwalkerswithinthegivensubstrate,novoxel.",cout); +assert(0); +} + +unsignedcount=0; +while(true){ + +if(count>100000){ +SimErrno::error("Cannotinitializeintra-axonalwalkerswithinthegivensubstrate",cout); +SimErrno::error("Max.numberoftriestofindanintra-celularcompartmentreached",cout); +assert(0); +} + +doublex=double(udist(gen)); +doubley=double(udist(gen)); +doublez=double(udist(gen)); + +x=x*(params.min_sampling_area[0])+(1.0-x)*params.max_sampling_area[0]; +y=y*(params.min_sampling_area[1])+(1.0-y)*params.max_sampling_area[1]; +z=z*(params.min_sampling_area[2])+(1.0-z)*params.max_sampling_area[2]; + + +//cout<<initialization_gap[2]<<endl; +Vector3dpos_temp={x,y,z}; + +if(checkIfPosInsideVoxel(pos_temp)&&(isInIntra(pos_temp,cyl_ind,ply_ind,-0.1))){ +intra_pos=pos_temp; +return; +} +count++; +} +} + +voidDynamicsSimulation::getAnExtraCellularPosition(Vector3d&extra_pos) +{ + +std::random_devicerd; +std::mt19937gen(rd()); +std::uniform_real_distribution<double>udist(0,1); +intdummy_a,dummy_b; +if(voxels_list.size()<=0){ +SimErrno::error("Cannotinitializeextra-cellularwalkerswithinthegivensubstrate,novoxel.",cout); +assert(0); +} + +unsignedcount=0; + +while(true){ + +if(count>10000){ +SimErrno::error("Cannotinitializeextra-cellularwalkerswithinthegivensubstrate",cout); +SimErrno::error("Max.numberoftriestofindanextra-celularcompartmentreached",cout); +assert(0); +} + +doublex=double(udist(gen)); +doubley=double(udist(gen)); +doublez=double(udist(gen)); + +x=x*(params.min_sampling_area[0])+(1.0-x)*params.max_sampling_area[0]; +y=y*(params.min_sampling_area[1])+(1.0-y)*params.max_sampling_area[1]; +z=z*(params.min_sampling_area[2])+(1.0-z)*params.max_sampling_area[2]; + +Vector3dpos_temp={x,y,z}; + +if(checkIfPosInsideVoxel(pos_temp)&&(!isInIntra(pos_temp,dummy_a,dummy_b,barrier_tickness))){ +extra_pos=pos_temp; +return; +} +count++; +} +} + +boolDynamicsSimulation::checkIfPosInsideVoxel(Vector3d&pos) +{ + +for(unsignedv=0;v<voxels_list.size();v++){ +if(pos[0]-voxels_list[v].min_limits[0]>barrier_tickness&& +pos[1]-voxels_list[v].min_limits[1]>barrier_tickness&& +pos[2]-voxels_list[v].min_limits[2]>barrier_tickness&& +pos[0]-voxels_list[v].max_limits[0]<barrier_tickness&& +pos[1]-voxels_list[v].max_limits[1]<barrier_tickness&& +pos[2]-voxels_list[v].max_limits[2]<barrier_tickness) +returntrue; +} + +returnfalse; +} + +//TODO:Usettodecreasethesizeofthesphere. +voidDynamicsSimulation::updateWalkerObstacleIndexes(unsignedt_) +{ + +floatouther_col_dist_factor=float(params.num_steps-t_+1.0*step_lenght); +walker.collision_sphere_ply.setBigSphereSize(outher_col_dist_factor); + +walker.initial_sphere_pos_v=walker.pos_v; + +//Cylindersobstacleupdate. +walker.collision_sphere_cylinders.small_sphere_list_end=0; + +for(unsignedi=0;i<walker.collision_sphere_cylinders.big_sphere_list_end;i++) +{ +unsignedindex=walker.collision_sphere_cylinders.collision_list->at(i); +floatdist=float((*cylinders_list)[index].minDistance(walker)); + +if(dist>walker.collision_sphere_cylinders.big_sphere_distance) +{ +walker.collision_sphere_cylinders.popFromBigSphere(i); +} +if(dist<walker.collision_sphere_cylinders.small_sphere_distance) +{ +walker.collision_sphere_cylinders.pushToSmallSphere(i); +} +} + +//PLYupdateobstacle +for(unsignedi=0;i<walker.collision_sphere_ply.list_size;i++) +{ +walker.collision_sphere_ply.small_sphere_list_end[i]=0; + + +for(unsignedt=0;t<walker.collision_sphere_ply.big_sphere_list_end[i];t++){ +floatdist=INFINITY_VALUE; +if((walker.in_ply_index<=0)||walker.in_ply_index==int(i)){ +unsignedtriangle_index=walker.collision_sphere_ply.collision_list->at(i)[t]; +dist=float((*plyObstacles_list)[i].minDistance(walker,triangle_index)); +} + +if(dist>walker.collision_sphere_ply.big_sphere_distance) +{ +walker.collision_sphere_ply.popFromBigSphere(i,t); +} + +if(dist<walker.collision_sphere_ply.small_sphere_distance) +{ +walker.collision_sphere_ply.pushToSmallSphere(i,t); +} +} +} + +//cout<<""<<walker.collision_sphere_ply.small_sphere_list_end[0]<<endl; +} + +stringDynamicsSimulation::secondsToMinutes(doublet) +{ +if(t<60){ +returnstd::to_string(int(t))+"seconds"; +} + +intmins=int(t/60.0); + +intseconds=int(t-mins*60); + +stringmin_s=(mins>1)?"minutes":"minute"; +returnstd::to_string(mins)+min_s+"and"+std::to_string(seconds)+"seconds"; + +} + + +boolDynamicsSimulation::isInsideCylinders(Vector3d&position,int&cyl_id,doubledistance_to_be_inside) +{ +Walkertmp; +tmp.setInitialPosition(position); + +//trackthenumberofpositionschecksforintra/extrapositions + +for(unsignedi=0;i<cylinders_list->size();i++){ + +doubledis=(*cylinders_list)[i].minDistance(tmp); + +if(dis<=distance_to_be_inside){ +intra_tries++; +cyl_id=i; +returntrue; +} +} +cyl_id=-1; + +returnfalse; +} + +boolDynamicsSimulation::isInsidePLY(Vector3d&position,int&ply_id,doubledistance_to_be_inside) +{ +ply_id=-1; + +//1)WefindtheclosestPLYandtrianglebasedonthetriangle'scenter +Walkertmp; +tmp.setInitialPosition(position); + +doublet,min_t=1e6; +unsignedmin_j_index=0; +intmin_i_index=-1; +for(unsignedi=0;i<(*plyObstacles_list).size();i++){ +for(unsignedj=0;j<(*plyObstacles_list)[i].face_number;j++){ +t=(position-(*plyObstacles_list)[i].faces[j].center).squaredNorm(); +//cout<<t<<endl; +if(t<min_t){ +min_i_index=i; +min_j_index=j; +min_t=t; +} +} +} + +//2)Wecorroboratebycastinganinfiniterayandcheckingcollisions + +Eigen::Vector3dray=(-position+(*plyObstacles_list)[min_i_index].faces[min_j_index].center).normalized(); +Collisioncolision_temp; + +doublenew_min_t=1e6; +for(unsignedi=0;i<(*plyObstacles_list).size();i++){ +for(unsignedj=0;j<(*plyObstacles_list)[i].face_number;j++){ +(*plyObstacles_list)[i].faces[j].stepIntersects_MT(tmp,ray,1e8,colision_temp); + +if(colision_temp.type==Collision::hitandnew_min_t>colision_temp.t){ +new_min_t=colision_temp.t; +min_i_index=i; +min_j_index=j; +} +} +} + +//3)Finallywecheckthesignoftheclosestcollision.Thesignindicateseitherintraorextra. +if(min_i_index>=0){ +Eigen::Vector3dnormal; +(*plyObstacles_list)[min_i_index].faces[min_j_index].getNormal(normal); +//Orientationrespectthetriangle +doubledot=((position-(*plyObstacles_list)[min_i_index].faces[min_j_index].center).normalized()).dot(normal); +if(dot<distance_to_be_inside){ +intra_tries++; +ply_id=min_i_index; +returntrue; +} +} + +returnfalse; +} + + +boolDynamicsSimulation::isInIntra(Vector3d&position,int&cyl_id,int&ply_id,doubledistance_to_be_intra_ply) +{ +boolisIntra=false; +total_tries++; +if(cylinders_list->size()>0){ +isIntra|=this->isInsideCylinders(position,cyl_id,barrier_tickness); +} + +if((*plyObstacles_list).size()>0){ +isIntra|=isInsidePLY(position,ply_id,distance_to_be_intra_ply); +} +returnisIntra; +} + + + + +voidDynamicsSimulation::startSimulation(SimulableSequence*dataSynth){ + +//Initializevalues,arraysandfiles. +initSimulation(); + +//Aliasofthesteplength,mayvarywhenthetimestepisdynamic. +doublel=step_lenght; +boolback_tracking; + +/*********************WARNING**********************/ +/**/ +/*DYNAMICSIMULATIONCORE*/ +/**/ +/*********************WARNING**********************/ +unsignedw=0; +unsignedrejected=0; +for(w=0;w<params.num_walkers;w++) +{ + +//cout<<w<<""; + +//flagincasetherewasanyerrorwiththeparticle. +back_tracking=false; + +walker.setIndex(w); + +//Initializethewalkerinitialposition +iniWalkerPosition(); + +//Selectsonlyobstaclesthatarecloseenoughtocollideandtheonesinsideacollisionsphere +initWalkerObstacleIndexes(); + +//Initialposition; +walker.setRealPosLog(walker.pos_r,0); +walker.setVoxPosLog(walker.pos_v,0); + +//Patchtoremovecustompositions + +if(params.ini_walker_flag.compare("intra")==0&&walker.initial_location==Walker::RelativeLocation::extra){ +rejected++; +continue; +} +elseif(params.ini_walker_flag.compare("extra")==0&&walker.initial_location==Walker::RelativeLocation::intra){ +rejected++; +continue; +} + +//cout<<"\nIniatialpostionl"; +//cout<<walker.ini_pos[0]<<""<<walker.ini_pos[1]<<""<<walker.ini_pos[2]<<endl; + +for(unsignedt=1;t<=params.num_steps;t++)//T+1stepsintotal(avoiderrors) +{ +//Getthetimestepinmilliseconds +getTimeDt(last_time_dt,time_dt,l,dataSynth,t,time_step); + +//Generatesarandomorientedstepofsizel +generateStep(step,l); + +//Movestheparticle.Checkscollisionandhandlesbouncing. +try{ +updateWalkerPosition(step); +} +catch(Sentinel::ErrorCaseserror){ + +//Possibleerrors,ornumericalun-handedcasesshouldendhere. +sentinela.deportationProcess(walker,w,t,back_tracking,params,id); + +if((error==Sentinel::ErrorCases::stuck)||(error==Sentinel::ErrorCases::crossed)){ +//cout<<"\nItsnotthefinal"; +//cout<<walker.ini_pos[0]<<""<<walker.ini_pos[1]<<""<<walker.ini_pos[2]<<endl; +//cout<<walker.pos_r[0]<<""<<walker.pos_r[1]<<""<<walker.pos_r[2]<<endl; +//cout<<walker.pos_v[0]<<""<<walker.pos_v[1]<<""<<walker.pos_v[2]<<endl; +//w--; +//aux_walker_index--; +break; +} + +if(error==Sentinel::rejected) +continue; +} + +//Savesthefinalparticlepositionafterbouncinginthetimet. +walker.setRealPosLog(walker.pos_r,t); +walker.setVoxPosLog(walker.pos_v,t); + +//updatesthecollisionneighborhood(ifany) +updateCollitionSphere(t); + +walker.steps_count++; +walker.rejection_count=0; +}//endfort + +if(!back_tracking) +if(finalPositionCheck()){ +back_tracking=true; +} + +//Iftherewasanerror,wedon'tcomputethesignalorwriteanything. +if(back_tracking){ +rejected++; +continue; +} + +//updatesthephaseshift. +if(dataSynth) +dataSynth->update_phase_shift(this->time_step,walker.pos_r_log); + +//UpdatedeDWIsignal +if(dataSynth) +dataSynth->update_DWI_signal(walker); + +//Writethepositions. +trajectory.writePosition(walker.pos_r_log); + +if(params.log_propagator){ +//UpdatePropagator +updatePropagator(walker.pos_r_log); +} + +//Displaystheremainedexpectedtimeandcheckforthetimelimit. +if(expectedTimeAndMaxTimeCheck(w)){ +cout<<"\n"<<SH_BG_LIGHT_YELLOW<<"[Warning]"<<SH_DEFAULT<<"Sim:"<<id<<"" +<<"Maxtimelimitreached:Simulationhaltedafter"<<++w<<"spins"<<endl; +break; +} + +//cout<<this->aux_walker_index<<"------*"<<params.num_walkers<<""<<params.custom_ini_walker_pos.size()<<endl; +//cout<<w<<endl; +//cout<<endl<<walker.in_ply_index<<""<<walker.in_obj_index<<endl; + +}//forw + + +//cout<<this->aux_walker_index<<"------*"<<params.num_walkers<<""<<params.custom_ini_walker_pos.size()<<endl; +//cout<<w<<endl; + +/*********************WARNING**********************/ +/**/ +/*ENDOFTHEDYNAMICSIMULATIONCORE*/ +/**/ +/*********************WARNING**********************/ + +num_simulated_walkers=w-rejected; + +if(num_simulated_walkers<=params.num_walkers){ + +trajectory.reWriteHeaderFile(num_simulated_walkers); + +this->params.num_walkers=num_simulated_walkers; +} + +if(params.log_propagator){ +normalizePropagator(num_simulated_walkers); +} + +//computestheICVFfromtheinitialization. +//computeICVF(); + +icvf=float(num_simulated_walkers)/float(params.num_walkers); + +//Infodisplay. +time(&now); +second_passed=difftime(now,start); +if(params.verbatim) +SimErrno::info("Sim:"+to_string(id)+"Simulationendedafter:" ++secondsToMinutes(second_passed)+"seconds",cout); + + +//WritesthefinalDWIsignal,andthephaseshift. +if(params.log_opp) +writeDWSignal(dataSynth); + +return; +} + +DynamicsSimulation::~DynamicsSimulation(){ +if(iniPos.is_open()) +iniPos.close(); +} + +voidDynamicsSimulation::readConfigurationFile(std::stringconf_file_path){ +params.readSchemeFile(conf_file_path); +} + +voidDynamicsSimulation::generateStep(Vector3d&step,doublel){ + +if(walker.status==Walker::on_object){ +step=walker.next_direction.normalized(); +return; +} + +std::uniform_real_distribution<double>dist(0,1); + +/*Unbiasedrandomdirection*/ +doubletheta=2.0*M_PI*dist(mt); +doublecosPhi=2.0*dist(mt)-1.0; +doublecosTh=cos(theta); +doublesinTh=sin(theta); +doublesinPhi=sqrt(1.0-cosPhi*cosPhi); + +step(0)=l*cosTh*sinPhi; +step(1)=l*sinTh*sinPhi; +step(2)=l*cosPhi; + +step.normalize(); + +} + +voidDynamicsSimulation::generateDirectedStep(Vector3d&new_step,Vector3d&direction){ + +std::uniform_real_distribution<double>dist(0,1); + +/*Unbiasedrandomdirection*/ +doubletheta=2.0*M_PI*dist(mt); +doublecosPhi=2.0*dist(mt)-1.0; +doublecosTh=cos(theta); +doublesinTh=sin(theta); +doublesinPhi=sqrt(1.0-cosPhi*cosPhi); + +new_step(0)=cosTh*sinPhi; +new_step(1)=sinTh*sinPhi; +new_step(2)=cosPhi; + +new_step.normalize(); + +doublern=direction.dot(new_step); + +if(rn<0.0) +new_step*=-1.0; +} + +boolDynamicsSimulation::updateWalkerPosition(Eigen::Vector3d&step){ + + +//newsteptotake +Vector3dbounced_step=step.normalized(),end_point; +Vector3dprevious_real_position,previous_voxel_position,real_pos,voxel_pos; + +//Savethewalkerinitialposition. +walker.getVoxelPosition(previous_voxel_position); +walker.getRealPosition(previous_real_position); + +//Collisioninstancetosavemanagethecollision(inSpanish). +Collisioncolision; + +//Truewhentheparticleneedstobebouncedandupdates. +boolbounced=false; +boolupdate_walker_status=false; + +//Maximumdisplacement.Isupdatedaftereachbouncing(ifany) +doubletmax=step_lenght; + +//Clearsthestatusofthesentinel. +sentinela.clear(); + +unsignedbouncing_count=0; +do{ +bounced=false; +bouncing_count++; + +//Checksthenumberofbouncingperstep. +walker.steps_count++; + +//Trueiftherewasacollisionandtheparticleneedstobebounced. +update_walker_status|=checkObstacleCollision(bounced_step,tmax,end_point,colision); + +//Updatesthepositionandbouncingdirection. +if(update_walker_status){ +bounced=updateWalkerPositionAndHandleBouncing(bounced_step,tmax,colision); +//restartsthevariables. +update_walker_status=false; +colision.type=Collision::null; +} +else{ +if(colision.type==Collision::null){ +//clearfrompreviousstatus +walker.status=Walker::free; +walker.next_direction={0,0,0}; +} +} +sentinela.checkErrors(walker,params,((*plyObstacles_list).size()==0),bouncing_count); + +}while(bounced); + + +if(tmax>=0.0){ + +//Updatethewalkerpositionafterthebouncing(ornot) +walker.getRealPosition(real_pos); +walker.setRealPosition(real_pos+tmax*bounced_step); + +walker.getVoxelPosition(voxel_pos); +walker.setVoxelPosition(voxel_pos+tmax*bounced_step); +} + +returnfalse; +} + +boolDynamicsSimulation::checkObstacleCollision(Vector3d&bounced_step,double&tmax,Eigen::Vector3d&end_point,Collision&colision) +{ + +Collisioncolision_tmp; +colision_tmp.type=Collision::null; +colision_tmp.t=INFINITY_VALUE; + +//OriginO +Eigen::Vector3dray_origin; +walker.getVoxelPosition(ray_origin); + +//Tokeeptrackoftheclosestcollision +doublemax_collision_distance=tmax; + + +//Thecollisionchecksthethreepossibleobstaclesinthisorder:Voxel,Cylinders,PLY. +//Theclosestcollisioniskeptattheend. + +//CheckVoxellimits +for(unsignedinti=0;i<voxels_list.size();i++) +{ +voxels_list[i].CheckCollision(walker,bounced_step,tmax,colision_tmp); +handleCollisions(colision,colision_tmp,max_collision_distance,i); +} + +//ForeachCylinderObstacles +for(unsignedinti=0;i<walker.collision_sphere_cylinders.small_sphere_list_end;i++) +{ +unsignedindex=walker.collision_sphere_cylinders.collision_list->at(i); + +(*cylinders_list)[index].checkCollision(walker,bounced_step,tmax,colision_tmp); +handleCollisions(colision,colision_tmp,max_collision_distance,index); +} + +//ForeachPLYObstacles +for(unsignedinti=0;i<walker.collision_sphere_ply.collision_list->size();i++) +{ + +if((walker.in_ply_index>=0)&&walker.in_ply_index!=int(i)){ +continue; +} + +(*plyObstacles_list)[i].checkCollision(walker,bounced_step,tmax,colision_tmp,walker.collision_sphere_ply.collision_list->at(i), +walker.collision_sphere_ply.small_sphere_list_end[i]); + +handleCollisions(colision,colision_tmp,max_collision_distance,i); +} + + +returncolision.type!=Collision::null; +} + + +voidDynamicsSimulation::handleCollisions(Collision&colision,Collision&colision_2,double&max_collision_distance,unsignedindx) +{ +//nothingtodo; +if(colision_2.type==Collision::null) +return; + +colision_2.obstacle_ind=int(indx); + +if(colision.type==Collision::hit||colision.type==Collision::boundary){ +if(colision_2.doIHaveMorePiorityThan(colision)){ +colision=colision_2; +max_collision_distance=colision_2.t; +colision.obstacle_ind=int(indx); +} +return; +} + +if(colision.type==Collision::near){ +if(colision_2.type==Collision::hit||colision_2.type==Collision::boundary){ +colision=colision_2; +max_collision_distance=colision_2.t; +colision.obstacle_ind=int(indx); +} +return; +} + +//ifwegetheremeansthatcolision.type='null' +if(colision_2.type==Collision::near){ + +colision=colision_2; +colision.obstacle_ind=int(indx); + +return; +} + +colision=colision_2; +} + + +voidDynamicsSimulation::mapWalkerIntoVoxel(Eigen::Vector3d&bounced_step,Collision&colision,doublebarrier_thicknes) +{ + +walker.setRealPosition(walker.pos_r+colision.t*bounced_step); + +Eigen::Vector3dvoxel_pos=walker.pos_v+(colision.t)*bounced_step; + +boolmapped=false; +for(inti=0;i<3;i++) +{ +if(fabs(voxel_pos[i]-voxels_list[0].min_limits[i])<=EPS_VAL){ +voxel_pos[i]=voxels_list[0].max_limits[i]; +mapped=true; +} +elseif(fabs(voxel_pos[i]-voxels_list[0].max_limits[i])<=EPS_VAL){ +voxel_pos[i]=voxels_list[0].min_limits[i]; +mapped=true; +} +} + +walker.setVoxelPosition(voxel_pos); + +if(mapped){ +initWalkerObstacleIndexes(); +} +} + +voidDynamicsSimulation::getTimeDt(double&last_time_dt,double&time_dt,double&l,SimulableSequence*dataSynth,unsignedt,doubletime_step) +{ +last_time_dt=time_step*(t-1); +time_dt=time_step*(t); + +if(dataSynth){ +if(dataSynth->dynamic){ +last_time_dt=dataSynth->time_steps[t-1]; +time_dt=dataSynth->time_steps[t]; +l=sqrt(6.0*(params.diffusivity*(time_dt-last_time_dt))); +} +} +} + +boolDynamicsSimulation::updateWalkerPositionAndHandleBouncing(Vector3d&bounced_step,double&tmax,Collision&colision) +{ + +//Toavoidnumericalerrors. +doublemin_step_length=barrier_tickness; + +Eigen::Vector3dreal_pos,voxel_pos; +walker.getRealPosition(real_pos); +walker.getVoxelPosition(voxel_pos); + +boolbounced=false; + +//Setsthestatusofthewalker +walker.status=Walker::free; + + +if(tmax<min_step_length) +{ +tmax=0; +returnfalse; +} + +if(colision.type==Collision::hit&&colision.col_location!=Collision::voxel) +{ +bounced=true; +doubledispl=colision.t; + +//Ifthecollisionwasreallyclosewecan'ttrustthenormaldirection; +if(colision.t<1e-10&&walker.status!=walker.bouncing){ +sentinela.rejected_step=true; +Eigen::Vector3ddirection=-step; +generateDirectedStep(walker.next_direction,direction); +walker.status=Walker::on_object; +returnfalse; +} + +walker.status=Walker::bouncing; + +tmax-=displ; + +//Labelsthewalkerw/rit'sorientation. +if(colision.col_location==Collision::inside){ +walker.intra_extra_consensus--; +walker.location=Walker::intra; +} +if(colision.col_location==Collision::outside){ +walker.intra_extra_consensus++; +walker.location=Walker::extra; +} +if(walker.initial_location==Walker::unknown){ +walker.initial_location=walker.location; +} + +//Weupdatetheposition. +walker.setRealPosition(real_pos+displ*bounced_step); +walker.setVoxelPosition(voxel_pos+displ*bounced_step); + +bounced_step=colision.bounced_direction; +} +elseif(colision.type==Collision::hit&&colision.col_location==Collision::voxel) +{ + +bounced=true; + +walker.status=Walker::on_voxel; + +mapWalkerIntoVoxel(bounced_step,colision,barrier_tickness); +bounced_step=colision.bounced_direction; +tmax-=colision.t; +} +elseif(colision.type==Collision::near){ +//sentinela.rejected_step=true; +Eigen::Vector3ddirection=-bounced_step;//WARNING:deberiamosusarelbouncedstep. +generateDirectedStep(walker.next_direction,direction); +walker.status=Walker::on_object; +returnfalse; +} +elseif(colision.type==Collision::degenerate){ +sentinela.rejected_step=true; +Eigen::Vector3ddirection=-step; +generateDirectedStep(walker.next_direction,direction); +walker.status=Walker::on_object; +returnfalse; +} + +returnbounced; +} + + + +voidDynamicsSimulation::setDuration(constdouble&duration) +{ +params.sim_duration=duration; +trajectory.dyn_duration=duration; +} + +voidDynamicsSimulation::setWalkersNum(constunsigned&N) +{ +params.num_walkers=N; +trajectory.N=N; +} + +voidDynamicsSimulation::setStepsNum(constunsigned&T) +{ +params.num_steps=T; +trajectory.T=T; +} + + + + + + diff --git a/doc/xml/dynamics_simulation_8h.xml b/doc/xml/dynamics_simulation_8h.xml new file mode 100644 index 0000000..cc0c14e --- /dev/null +++ b/doc/xml/dynamics_simulation_8h.xml @@ -0,0 +1,405 @@ + + + + dynamicsSimulation.h + walker.h + string + Eigen/Core + iostream + random + trajectory.h + simulablesequence.h + parameters.h + plyobstacle.h + voxel.h + cylinder.h + sentinel.h + propagator.h + src/dynamicsSimulation.cpp + src/main.cpp + src/mcsimulation.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DynamicsSimulation + + + + + + +#ifndefDynamicsSimulation_H +#defineDynamicsSimulation_H + +#include"walker.h" +#include<string> +#include"Eigen/Core" +#include<iostream> +#include<random> +#include"trajectory.h" +#include"simulablesequence.h" +#include"parameters.h" +#include"plyobstacle.h" +#include"voxel.h" +#include"cylinder.h" +#include"sentinel.h" +#include"propagator.h" + + +classDynamicsSimulation +{ + +public: +Parametersparams; +Walkerwalker; +Trajectorytrajectory; +std::mt19937mt; +doublestep_lenght; +doublesecond_passed; +doublemax_simulation_time; +doublecompleted; +std::stringini_pos_file; +unsignedini_pos_file_ini_index; +intid; +sentinels::Sentinelsentinela; +std::vector<PLYObstacle>*plyObstacles_list; +std::vector<Cylinder>*cylinders_list; +std::vector<unsigned>cylinders_deque; +std::vector<std::vector<unsigned>>ply_deque; +std::vector<Voxel>voxels_list; +Propagatorpropagator; +doubleicvf; +unsignedintra_tries,total_tries; +/******Auxiliarvariables********/ +Eigen::Vector3dstep; + +doubletime_step,time_dt,last_time_dt; +std::ifstreaminiPos; + +time_tstart,now; +boolprint_expected_time; +unsignednum_simulated_walkers; +unsignedaux_walker_index; +/******ENDAuxiliarvariables********/ + + +DynamicsSimulation(); + +DynamicsSimulation(std::stringconf_file); + +DynamicsSimulation(Parameters&params_); + + +~DynamicsSimulation(); + +voidstartSimulation(SimulableSequence*dataSynth=nullptr); + +voidreadConfigurationFile(std::stringconf_file_path); + +//SETVALUESFUNCTIONS +voidsetDuration(constdouble&duration); + +voidsetWalkersNum(constunsigned&N); + +voidsetStepsNum(constunsigned&T); + + +staticstd::stringsecondsToMinutes(double); + +boolisInIntra(Eigen::Vector3d&position,int&cyl_id,int&ply_id,doubledistance_to_be_intra_ply=1e-6); + +voidwritePropagator(std::stringpath); + +boolisInsideCylinders(Eigen::Vector3d&position,int&cyl_id,doubledistance_to_be_inside=1e-6); + +boolisInsidePLY(Eigen::Vector3d&position,int&ply_id,doubledistance_to_be_inside=1e-6); + + +private: +inlinevoidgenerateStep(Eigen::Vector3d&step,doublel); + +inlinevoidgenerateDirectedStep(Eigen::Vector3d&new_step,Eigen::Vector3d&direction); + +boolupdateWalkerPosition(Eigen::Vector3d&step); + +inlineboolcheckObstacleCollision(Eigen::Vector3d&amended_step,double&tmax,Eigen::Vector3d&end_point,Collision&colision); + +inlineboolupdateWalkerPositionAndHandleBouncing(Eigen::Vector3d&amended_step,double&tmax,Collision&colision); + +inlinevoidhandleCollisions(Collision&colision,Collision&colision_tmp,double&max_collision_distance,unsignedindx); + +inlinevoidmapWalkerIntoVoxel(Eigen::Vector3d&amended_step,Collision&colision,doublebarrier_thickness); + +inlinevoidgetTimeDt(double&last_time_dt,double&time_dt,double&l,SimulableSequence*dataSynth,unsignedt,doubletime_step); + +inlinevoidinitSimulation(); + +inlineboolexpectedTimeAndMaxTimeCheck(unsignedw); + +inlinevoidwriteDWSignal(SimulableSequence*dataSynth); + +inlinevoidiniWalkerPosition(); + +inlinevoidupdateWalkerObstacleIndexes(unsignedt_); + +inlinevoidinitWalkerObstacleIndexes(); + +inlinevoidupdateCollitionSphere(unsignedt); + +inlinevoidgetAnIntraCellularPosition(Eigen::Vector3d&intra_pos,int&cyl_ind,int&ply_ind); + +inlinevoidgetAnExtraCellularPosition(Eigen::Vector3d&extra_pos); + +inlineboolcheckIfPosInsideVoxel(Eigen::Vector3d&pos); + +inlinevoidinitObstacleInformation(); + +inlinevoidupdatePropagator(Eigen::Matrix3Xd&log_pos_r); + + +inlinevoidnormalizePropagator(floatnum_samples); + +inlinevoidcomputeICVF(); + +inlineboolfinalPositionCheck(); + + + +}; + + +#endif//DynamicsSimulation_H + + + + diff --git a/doc/xml/gradientwaveform_8cpp.xml b/doc/xml/gradientwaveform_8cpp.xml new file mode 100644 index 0000000..508c7ab --- /dev/null +++ b/doc/xml/gradientwaveform_8cpp.xml @@ -0,0 +1,540 @@ + + + + gradientwaveform.cpp + gradientwaveform.h + constants.h + Eigen/Dense + math.h + algorithm + fstream + iostream + iomanip + stdlib.h + time.h + assert.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"gradientwaveform.h" +#include"constants.h" +#include"Eigen/Dense" +#include<math.h> +#include<algorithm> +#include<fstream> +#include<fstream> +#include<iostream> +#include<iomanip> +#include<stdlib.h> +#include<time.h>/*time_t,structtm,difftime,time,mktime*/ +#include<assert.h> + +usingnamespacestd; + + + +GradientWaveform::GradientWaveform() +{ +wave_duration=0; +dt=0; +wave_bins=0; +separate_signal=false; +num_rep=0; +} + +GradientWaveform::GradientWaveform(Scheme&scheme_) +{ +this->num_rep=0; +dynamic=false; +save_phase_shift=true; +percent_steps_in=-1; +readSchemeParameters(scheme_); +//phase_shift_distribution.resize(num_rep,3600); +phase_shift_distribution=Eigen::ArrayXXf::Zero(num_rep,3600); +separate_signal=false; + +} + +//TODOcorrejiresto +GradientWaveform::GradientWaveform(Scheme&scheme_,constchar*traj_file_name) +{ +dynamic=false; +save_phase_shift=true; +percent_steps_in=-1; +readSchemeParameters(scheme_); +trajectory.setTrajFile(traj_file_name); +T=uint(trajectory.T); +dyn_duration=trajectory.dyn_duration; +//phase_shift_distribution.resize(scheme_.num_rep,3600);//Dynamicdurationnoesigualqueelwaveformduration +phase_shift_distribution=Eigen::ArrayXXf::Zero(num_rep,3600); +separate_signal=false; +} + +doubleGradientWaveform::getNumericalbValue(unsigned) +{ +return0; +} + + +voidGradientWaveform::readSchemeParameters(Scheme&scheme_) +{ +scheme_file=scheme_.scheme_file; +this->scale_from_stu=scheme_.scale_from_stu; +readSchemeFile(); + +for(unsignedi=0;i<uint(num_rep);i++){ +DWI.push_back(0); +if(this->img_signal==true) +DWIi.push_back(0); +phase_shift.push_back(0); +} +} + +voidGradientWaveform::readSchemeFile() +{ +ifstreamin(this->scheme_file.c_str()); + +//Readsthe2stringheader +stringheader_; +in>>header_; +in>>header_; + +in>>this->wave_duration; +in>>this->wave_bins; +floatholder; +in>>holder; +this->num_rep=int(holder); + +if(scale_from_stu){ +wave_duration*=s_to_ms; +} +this->dt=wave_duration/(wave_bins-1); + +for(uinti=0;i<uint(num_rep);i++) +{ +for(uintt=0;t<uint(this->wave_bins);t++){ + +vector<float>wave_vector={0,0,0}; +in>>wave_vector[0]; +in>>wave_vector[1]; +in>>wave_vector[2]; + +if(scale_from_stu){ +wave_vector[0]/=m_to_mm;//Gx(T/m)to(T/mm); +wave_vector[1]/=m_to_mm;//Gy(T/m)to(T/mm); +wave_vector[2]/=m_to_mm;//Gz(T/m)to(T/mm)); +} + +this->waveform.push_back(wave_vector); +} +} +in.close(); +} + +voidGradientWaveform::getGradImpulse(inti,doublet,doubletLast,Eigen::Vector3d&Gdt){ +return; +} + +voidGradientWaveform::getInterpolatedGradImpulse(uintrep_index,doublet_sim,doublet_sim_last,Eigen::Vector3d&Gdt) +{ + +//Ifthesimulationtimeisbiggerthanthewaveformwefillwithzeros. +if(t_sim>wave_duration){ +Gdt={0.,0.,0.}; +return; +} + +//TheindexintheWaveformtimeresolution. +//indexofthewaveformdurationtime(initialone)(usedforinterpolation) +uintwt_1=uint(t_sim/this->dt); + +//indexofthewavedirectionandmaginitud +uintindex=rep_index*uint(wave_bins)+wt_1; + +uintindex_next=(wt_1+1>=uint(this->wave_bins))?index:index+1; + +Eigen::Vector3diniG(waveform[index][0],waveform[index][1],waveform[index][2]); +Eigen::Vector3dnextG(waveform[index_next][0],waveform[index_next][1],waveform[index_next][2]); + + +//percentajeofiniG=(1-(dt_sim-t_1*dt)/dt)=ini_perc; +//percentajeofnextG=(1.0-ini_perc)=sec_perc; + +doubleini_perc=(1.0)-(t_sim-wt_1*dt)/(this->dt); + +//Linearinterpolationscaledbytheappliedtime +Gdt=(ini_perc*iniG+(1.0-ini_perc)*nextG)*(t_sim-t_sim_last); + +//if(iniG[0]!=0){ +//cout<<iniG<<endl; +//cout<<ini_perc<<endl; +//cout<<nextG<<endl; +//cout<<Gdt<<endl; +//} +} + +voidGradientWaveform::update_phase_shift(doubletime_step,Eigen::Matrix3Xdtrajectory) +{ +Eigen::Vector3dxt; +Eigen::Vector3dGdt; +doubledt,dt_last; + +for(uintt=1;t<=uint(this->T);t++){//TODO:checarsideberiaser<=T +//Displacement +xt[0]=trajectory(0,t)-trajectory(0,0); +xt[1]=trajectory(1,t)-trajectory(1,0); +xt[2]=trajectory(2,t)-trajectory(2,0); + +doubledos_pi=2.0*M_PI; + +dt=time_step*(t); +dt_last=time_step*(t-1); +for(uints=0;s<uint(num_rep);s++){ + +getInterpolatedGradImpulse(s,dt,dt_last,Gdt); +doubleval=giro*(Gdt[0]*xt[0]+Gdt[1]*xt[1]+Gdt[2]*xt[2]); +val=fmod(val,dos_pi); +phase_shift[s]=fmod(phase_shift[s]+val,dos_pi); +} +} +} + +voidGradientWaveform::update_phase_shift(doubledt,doubledt_last,Walkerwalker) +{ +//DeprecatedforGeneralForms. +return; +} + + +voidGradientWaveform::getDWISignal() +{ +trajectory.initTrajReaderFile(); + +trajectory.readTrajectoryHeader(); + +doubleN=trajectory.N; +doubleT=trajectory.T; +doubleduration=trajectory.dyn_duration; +doublert=duration/T; +doubledos_pi=2.0*M_PI; +doubledt,xt[3],dt_last; + + +Eigen::Matrix3Xdsteps_log;//completetrajectoryofonewalker + +Eigen::Vector3dGdt; +Eigen::VectorXdphase_shift; + +steps_log.resize(3,unsigned(T+1)); +phase_shift.resize(num_rep); + +for(intw=0;w<N;w++) +{ +trajectory.readCurrentWalkersTrajectory(steps_log); +for(uintt=1;t<=uint(trajectory.T);t++) +{ +dt=rt*(t); +dt_last=rt*(t-1.0); + +xt[0]=steps_log(0,t)-steps_log(0,0); +xt[1]=steps_log(1,t)-steps_log(1,0); +xt[2]=steps_log(2,t)-steps_log(2,0); + +for(uints=0;s<num_rep;s++) +{ +getInterpolatedGradImpulse(s,dt,dt_last,Gdt); +doubleval=giro*(Gdt[0]*xt[0]+Gdt[1]*xt[1]+Gdt[2]*xt[2]); + +val=fmod(val,2*M_PI); +//printf("%d-%1.25f\n",w,val); +phase_shift[s]=fmod(phase_shift[s]+val,dos_pi); +} +} + +for(uints=0;s<num_rep;s++){ +DWI[s]+=cos(phase_shift[s]);//Realpart +if(this->img_signal==true) +DWIi[s]+=sin(phase_shift[s]);//Imgpart + +phase_shift[s]=0; +} +} +} + + + +voidGradientWaveform::update_DWI_signal(Walker&walker) +{ +for(uints=0;s<uint(num_rep);s++){ + +doublecos_phase_shift=cos(phase_shift[s]); +doublesin_phase_shift=sin(phase_shift[s]); + +DWI[s]+=cos_phase_shift;//Realpart +if(this->img_signal==true) +DWIi[s]+=sin_phase_shift;//Imgpart + +if(this->separate_signal){ + +if(walker.location==Walker::RelativeLocation::intra){ +DWI_intra[s]+=cos_phase_shift; +} +elseif(walker.location==Walker::RelativeLocation::extra){ +DWI_extra[s]+=cos_phase_shift; +} +else{ +cout<<walker.location<<endl; + +} +} + +if(save_phase_shift){ +//Indexbetween0and3600,thisgiveusahistogramwith3600bins +unsignedindex=(phase_shift[s])>0?uint(phase_shift[s]*1800.0/M_PI):uint(-phase_shift[s]*1800.0/M_PI); +phase_shift_distribution(s,index)+=1; +} + +if(subdivision_flag){ +for(uinti=0;i<subdivisions.size();i++){ + +if(subdivisions[i].isInside(walker.pos_v)){ +sub_DWI[i][s]+=cos_phase_shift;//Realpart +if(this->img_signal==true) +sub_DWIi[i][s]+=sin_phase_shift;//Imgpart + +if(separate_signal){ +if(walker.location==Walker::RelativeLocation::intra){ +sub_DWI_intra[i][s]+=cos_phase_shift; +} +elseif(walker.location==Walker::RelativeLocation::extra){ +sub_DWI_extra[i][s]+=cos_phase_shift; +} +} + +break;//WARNINGthisbreakmeansthatthesubdivisionaremutallyexclusive +} +} +} +phase_shift[s]=0; +}//s + + +//Theforbellowisoutsidesoit'snotcomputedforeachadquisition. +if(subdivision_flag){ +for(uinti=0;i<subdivisions.size();i++){ +if(subdivisions[i].isInside(walker.pos_v)){ + +subdivisions[i].density++; + +if(walker.intra_extra_consensus<0){ +subdivisions[i].density_intra++; +} +elseif(walker.intra_extra_consensus>0){ +subdivisions[i].density_extra++; +} +break;//WARNINGthisbreakmeansthatthesubdivisionaremutallyexclusive +} +} +} +} + +voidGradientWaveform::setNumberOfSteps(unsignedT) +{ +this->T=T; +} + + + + diff --git a/doc/xml/gradientwaveform_8h.xml b/doc/xml/gradientwaveform_8h.xml new file mode 100644 index 0000000..a94a096 --- /dev/null +++ b/doc/xml/gradientwaveform_8h.xml @@ -0,0 +1,223 @@ + + + + gradientwaveform.h + pgsesequence.h + Eigen/Dense + constants.h + src/gradientwaveform.cpp + src/mcsimulation.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + GradientWaveform + + + + + + +#ifndefGRADIENTWAVEFORM_H +#defineGRADIENTWAVEFORM_H + +#include"pgsesequence.h" +#include"Eigen/Dense" +#include"constants.h" + +classGradientWaveform:publicSimulableSequence +{ +public: + +doubleTE; +uintT; +doubledyn_duration; +intwave_bins; +doublewave_duration; +doubledt; +boolscale_from_stu; +std::vector<std::vector<float>>waveform; +Trajectorytrajectory; +GradientWaveform(); + +GradientWaveform(Scheme&scheme); + +GradientWaveform(Scheme&scheme_,constchar*traj_file_name); + + +//TODO:toimplement +doublegetNumericalbValue(unsigned); + +voidgetDWISignal(); + + +voidreadSchemeFile(); + +voidgetInterpolatedGradImpulse(uintrep_index,doubledt_sim,doublet_sim_last,Eigen::Vector3d&Gdt); + +/* +*@briefUpdatesthephaseshiftusingthefullstoredtrajectory +*/ +voidupdate_phase_shift(doubletime_step,Eigen::Matrix3Xdtrajectory); + + +voidupdate_phase_shift(doubledt,doubledt_last,Walkerwalker); +voidupdate_DWI_signal(Walker&walker); + +voidsetNumberOfSteps(unsignedT); + +voidgetGradImpulse(inti,doublet,doubletLast,Eigen::Vector3d&Gdt); + + +private: +voidreadSchemeParameters(Scheme&scheme_); + + +}; + +#endif//GRADIENTWAVEFORM_H + + + + diff --git a/doc/xml/index.xml b/doc/xml/index.xml new file mode 100644 index 0000000..3cf120f --- /dev/null +++ b/doc/xml/index.xml @@ -0,0 +1,807 @@ + + + Collision + collision_type + hit + near + null + boundary + degenerate + collision_location + inside + on_edge + on_vertex + voxel + outside + unknown + type + col_location + colision_point + bounced_direction + rn + u + v + t + triangle_ind + obstacle_ind + Collision + Collision + ~Collision + doIHaveMorePiorityThan + computeCollisionLocation + + Collisionsphere + big_sphere_distance + small_sphere_distance + list_size + Collisionsphere + + Collisionspheren + + Cylinder + count + P + Q + D + radius + Cylinder + ~Cylinder + Cylinder + Cylinder + checkCollision + minDistance + handleCollition + + CylinderCollisionSphere + small_sphere_list_end + big_sphere_list_end + collision_list + CylinderCollisionSphere + popFromSmallSphere + pushToSmallSphere + popFromBigSphere + pushToBigSphere + setBigSphereSize + setSmallSphereSize + push_index + + CylinderGammaDistribution + num_cylinders + alpha + beta + icvf + min_radius + min_limits + max_limits + cylinders + CylinderGammaDistribution + displayGammaDistribution + createGammaSubstrate + printSubstrate + checkForCollition + checkBoundaryConditions + computeICVF + computeMinimalSize + + DynamicsSimulation + params + walker + trajectory + mt + step_lenght + second_passed + max_simulation_time + completed + ini_pos_file + ini_pos_file_ini_index + id + sentinela + plyObstacles_list + cylinders_list + cylinders_deque + ply_deque + voxels_list + propagator + icvf + intra_tries + total_tries + step + time_step + time_dt + last_time_dt + iniPos + start + now + print_expected_time + num_simulated_walkers + aux_walker_index + DynamicsSimulation + DynamicsSimulation + DynamicsSimulation + ~DynamicsSimulation + startSimulation + readConfigurationFile + setDuration + setWalkersNum + setStepsNum + isInIntra + writePropagator + isInsideCylinders + isInsidePLY + secondsToMinutes + generateStep + generateDirectedStep + updateWalkerPosition + checkObstacleCollision + updateWalkerPositionAndHandleBouncing + handleCollisions + mapWalkerIntoVoxel + getTimeDt + initSimulation + expectedTimeAndMaxTimeCheck + writeDWSignal + iniWalkerPosition + updateWalkerObstacleIndexes + initWalkerObstacleIndexes + updateCollitionSphere + getAnIntraCellularPosition + getAnExtraCellularPosition + checkIfPosInsideVoxel + initObstacleInformation + updatePropagator + normalizePropagator + computeICVF + finalPositionCheck + + GradientWaveform + TE + T + dyn_duration + wave_bins + wave_duration + dt + scale_from_stu + waveform + trajectory + GradientWaveform + GradientWaveform + GradientWaveform + getNumericalbValue + getDWISignal + readSchemeFile + getInterpolatedGradImpulse + update_phase_shift + update_phase_shift + update_DWI_signal + setNumberOfSteps + getGradImpulse + readSchemeParameters + + MCSimulation + count + id + dynamicsEngine + scheme + params + dataSynth + ini_walker_positions + plyObstacles_list + cylinders_list + MCSimulation + MCSimulation + MCSimulation + ~MCSimulation + startSimulation + getExpectedFreeeDecay + iniObstacles + addCylindersObstacles + addPLYObstacles + addVoxels + + Obstacle + id + count_perc_crossings + percolation + T2 + Obstacle + checkCollision + elasticBounceAgainsPlane + minDistance + + ParallelMCSimulation + params + mean_second_passed + total_sim_particles + stuck_count + illegal_count + icvf + aprox_volumen + simulations + sim_threads + plyObstacles_list + cylinders_list + total_ini_walker_pos + ParallelMCSimulation + ParallelMCSimulation + ParallelMCSimulation + ~ParallelMCSimulation + startSimulation + getNumberOfProcessors + initializeUnitSimulations + jointResults + specialInitializations + addCylindersObstaclesFromFiles + addCylindersConfigurations + + Parameter + + Parameters + num_walkers + num_steps + diffusivity + sim_duration + write_traj + write_txt + write_bin + scale_from_stu + save_phase_shift + seed + verbatim + traj_file + output_base_name + ini_walkers_file + ini_walkers_file_count + ini_walker_flag + scheme_file + min_limits + max_limits + cylinders_files + PLY_files + PLY_scales + PLY_percolation + ini_delta_pos + num_proc + voxels_list + prop_dirs + record_pos_times + record_phase_times + record_prop_times + hex_packing + hex_packing_radius + hex_packing_separation + gamma_packing + gamma_output_conf + gamma_packing_alpha + gamma_packing_beta + gamma_icvf + gamma_output_configuration + gamma_num_cylinders + min_cyl_radii + subdivision_flag + number_subdivisions + subdivisions_file + subdivisions + obstacle_permeability + collision_sphere_distance + max_simulation_time + log_phase_shift + log_opp + discard_stucks + discard_illegals + log_propagator + min_sampling_area + max_sampling_area + custom_sampling_area + computeVolume + separate_signals + img_signal + Parameters + readSchemeFile + setNumWalkers + setNumSteps + setDiffusivity + setSimDuration + setWriteTrajFlag + setWriteTextFlag + setMinLimits + setMaxLimits + setTrajFileName + setOutputBaseFileName + iniWalkersFileName + setSchemeFileName + getNumWalkers + getNumSteps + getDiffusivity + getWriteTrajFlag + getWriteTextFlag + getMinLimits + getMaxLimits + getTrajFileName + getOutputBaseFileName + getIniWalkersFileName + getSchemeFileName + addSubdivisions + str_dist + readObstacles + readVoxels + readInfoGatheringParams + readHexagonalParams + readGammaParams + readSubdivisionFile + readPropagatorDirections + readPLYFileList + readPLYFileListScalePercolation + + PGSESequence + TE + T + dyn_duration + scheme + trajectory + PGSESequence + PGSESequence + PGSESequence + PGSESequence + PGSESequence + ~PGSESequence + getGradImpulse + getGradImpuse + getbValue + getFreeDecay + getNumericalbValue + getDWISignal + readSchemeFile + update_phase_shift + update_phase_shift + update_DWI_signal + get_adt + print_adt_and_dt + setNumberOfSteps + computeDynamicTimeSteps + readSchemeParameters + + Plane + normal + plane_center + d + Plane + Plane + Plane + CheckCollision + + PLYCollisionSphere + small_sphere_list_end + big_sphere_list_end + collision_list + PLYCollisionSphere + popFromSmallSphere + pushToSmallSphere + popFromBigSphere + pushToBigSphere + setBigSphereSize + setSmallSphereSize + push_ply + + PLYObstacle + vert_number + face_number + file_path + vertices + faces + scale_factor + id + PLYObstacle + PLYObstacle + PLYObstacle + readPLY_ASCII_triangleFan + readPLY_ASCII_triangles + readPLY_ASCII_trianglesSubdivitionDistance + setScaleFactor + checkCollision + checkCollision + minDistance + handleCollisions + checkIfItsNearToTriangle + updateWalkerStatusAndHandleBouncing + + Propagator + num_dirs + num_times + directions + log_times + propagator_log + Propagator + initPropagator + + Scheme + scheme_file + header + type + num_rep + duration + T + scale_from_stu + scheme + Scheme + Scheme + ~Scheme + readSchemeFile + readPGSE + readAPGSE + readWaveForm + + sentinels::Sentinel + ErrorCases + none + stuck + crossed + rejected + rejected_initial_pos + stuck_count + illegal_count + bouncings + obstacle_id + rejected_count + rejected_step + deport_illegals + discard_stucks + error + Sentinel + clear + setBouncingError + setCrossingError + setRejectedError + checkErrors + deportationProcess + + Sentinels + + SimErrno + SimErrno + checkFileExist + checkSimulationParameters + checkSchemeFile + checkPLYFiles + checkCylindersListFile + checkInitWalkerFile + checkVoxelLimits + checkConfigurationFile + printSimulatinInfo + checkOuputPrefixAndWriteInfo + checkGammaDistributionParamaters + warning + info + infoMenu + error + expectedTime + currentDateTime + checkSubdivisionsFile + appendRepetitionLabel + + SimulableSequence + scheme_file + DWI + DWI_intra + DWI_extra + DWIi + phase_shift + num_rep + save_phase_shift + dynamic + percent_steps_in + time_steps + phase_shift_distribution + sub_DWI + sub_DWI_intra + sub_DWI_extra + sub_DWIi + subdivision_flag + separate_signal + img_signal + subdivisions + SimulableSequence + ~SimulableSequence + getGradImpulse + getbValue + getFreeDecay + update_phase_shift + update_phase_shift + update_DWI_signal + setNumberOfSteps + computeDynamicTimeSteps + initializeSubdivisionSignals + initializeIntraExtraSignals + writeResultingData + writePhaseShiftDistribution + cleanPhaseShift + cleanDWISignal + + Subdivision + min_limits + max_limits + density + density_intra + density_extra + Subdivision + Subdivision + isInside + + Trajectory + closeTrajReaderFile + openTrajReaderFile + initTrajReaderFile + readTrajectoryHeader + readCurrentWalkersTrajectory + initTrajWriter + initTrajWriterBinary + initTrajWriterText + writeTrajectoryHeaderBinary + writeTrajectoryHeaderText + reWriteHeaderFile + writePosition + writePositionText + writePositionBinary + writePosition + writePositionText + writePositionBinary + trajfile + headerfile + in + in_header + bout + tout + bheaderout + theaderout + N + T + dyn_duration + io_flag + pos_times + isBigEndian + write_traj + write_txt + write_bin + steps_subset + Trajectory + Trajectory + ~Trajectory + initTrajectory + setTrajFile + swapBE2SE2 + + Triangle + index + vertices + indexes + normal + center + radius + Triangle + Triangle + getVertex + getNormal + saveNormalAndAuxInfo + rayIntersects + stepIntersects_MT + stepIntersects_MT_limits + rayIntersects_MT + minDistance + + Vertex + index + points + Vertex + Vertex + operator() + + Voxel + min_limits + max_limits + walls + Voxel + Voxel + CheckCollision + + Walker + state + on_object + on_edge + on_vertex + on_voxel + free + bouncing + RelativeLocation + unknown + intra + extra + pos_r + pos_v + last_pos_r + last_pos_v + ini_pos + next_direction + pos_r_log + pos_v_log + in_obj_index + in_ply_index + collision_sphere_cylinders + collision_sphere_ply + initial_sphere_pos_v + steps_count + status + initial_location + location + intra_extra_consensus + intra_coll_count + extra_coll_count + index + rejection_count + steps_per_second + Walker + ~Walker + Walker + getRealPosition + getRealPosition + getVoxelPosition + getVoxelPosition + getInitialPosition + getInitialPosition + getNextDirection + getIndex + setRealPosition + setRealPosition + setVoxelPosition + setVoxelPosition + setInitialPosition + setInitialPosition + setNextDirection + setRandomInitialPosition + setIndex + setRealPosLog + setRealPosLog + setVoxPosLog + setVoxPosLog + setNumberOfSteps + + Eigen + + sentinels + + std + + collision.cpp + EPS_VAL + + collision.h + + collisionsphere.cpp + + collisionsphere.h + + constants.h + PRINT_EXPETED_TIME + SH_BG_RED + SH_BG_LIGHT_YELLOW + SH_FG_LIGHT_RED + SH_FG_LIGHT_YELLOW + SH_FG_PURPLE + SH_FG_GRAY + SH_FG_GREEN + SH_DEFAULT + VERSION_ID + PRECISE_T_MIN_D + m_to_mm + s_to_ms + EPS_VAL + m2_to_mm2 + giro + DIFF_CONST + barrier_tickness + max_number_bouncings + triangle_eps + max_rejections + INFINITY_VALUE + inner_col_dist_factor + + cylinder.cpp + + cylinder.h + + cylindergammadistribution.cpp + + cylindergammadistribution.h + + dynamicsSimulation.cpp + + dynamicsSimulation.h + + gradientwaveform.cpp + + gradientwaveform.h + + main.cpp + uint + printUsage + main + + mcsimulation.cpp + cylinderIsCloseBoundery + + mcsimulation.h + + obstacle.cpp + + obstacle.h + + parallelmcsimulation.cpp + split_ + split + + parallelmcsimulation.h + + parameters.cpp + + parameters.h + + pgsesequence.cpp + + pgsesequence.h + ulong + + plyobstacle.cpp + + plyobstacle.h + + propagator.cpp + + propagator.h + + README.md + + scheme.cpp + + scheme.h + + sentinel.cpp + + sentinel.h + + simerrno.cpp + split__ + split_ + + simerrno.h + + simulablesequence.cpp + + simulablesequence.h + + subdivision.cpp + + subdivision.h + + trajectory.cpp + + trajectory.h + + triangle.cpp + + triangle.h + + vertex.cpp + + vertex.h + + voxel.cpp + + voxel.h + + walker.cpp + + walker.h + + md_src_README + + src + + diff --git a/doc/xml/index.xsd b/doc/xml/index.xsd new file mode 100644 index 0000000..d7ab2a9 --- /dev/null +++ b/doc/xml/index.xsd @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/xml/main_8cpp.xml b/doc/xml/main_8cpp.xml new file mode 100644 index 0000000..3f483e1 --- /dev/null +++ b/doc/xml/main_8cpp.xml @@ -0,0 +1,467 @@ + + + + main.cpp + iostream + Eigen/Core + Eigen/Dense + dynamicsSimulation.h + fstream + pgsesequence.h + parallelmcsimulation.h + voxel.h + cylinder.h + thread + simerrno.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + unsigned int + typedef unsigned int uint + + uint + + + + + + + + + + + + void + void printUsage + () + printUsage + + + + + + + + + + int + int main + (int argn, char *argv[]) + main + + int + argn + + + char * + argv + [] + + + + + + + + + + + + + + + +//ooo-ooo-oo-oo-ooo +//|\/|//|\/|o|| +//|O|Oo|OOo-oo-O-ooo|oo-o-o-oo-o +//||\/|/\|||||||||||||| +//ooo-ooo-oo-oo--o|oooo--ooo-o-oo-oo + +#include<iostream> +#include"Eigen/Core" +#include"Eigen/Dense" +#include"dynamicsSimulation.h" +#include<fstream> +#include"pgsesequence.h" +#include"parallelmcsimulation.h" +#include"voxel.h" +#include"cylinder.h" +#include<thread> +#include"simerrno.h" + + +typedefunsignedintuint; + +usingnamespacestd; +usingnamespaceEigen; + +voidprintUsage(); + +intmain(intargn,char*argv[]) +{ + +stringconf=""; + +if(argn==2){ +conf=argv[1]; +} +else{ +printUsage(); +return-1; +} + + +ParallelMCSimulationsimulation_short_scheme(conf); + +simulation_short_scheme.startSimulation(); + +#ifdef__linux__ + +stringcommand="notify-send-iemblem-default\"MC/DC\"\"SimulationFinished\""; +system(command.c_str()); +#endif + +return0; + +} + +voidprintUsage(){ + +cout<<"███╗███╗██████╗██╗██████╗██████╗"<<endl; +cout<<"████╗████║██╔════╝██╔╝██╔══██╗██╔════╝"<<endl; +cout<<"██╔████╔██║██║██╔╝██║██║██║"<<endl; +cout<<"██║╚██╔╝██║██║██╔╝██║██║██║"<<endl; +cout<<"██║╚═╝██║╚██████╗██╔╝██████╔╝╚██████╗"<<endl; +cout<<"╚═╝╚═╝╚═════╝╚═╝╚═════╝╚═════╝"<<endl; + +cout<<endl;cout<<endl; +cout<<"Version:"<<VERSION_ID<<endl; +cout<<"Usage:MC-DC_Simulator<configuration_file.conf>\n\n"; +cout<<"<configuration_file.conf>Plain.txtfilewiththesimulationparameters(seedocforexamples):\n\n"; + +cout<<"N<int>Numberofparticles.\n"; +cout<<"T<int>Numberoftimesteps.\n"; +cout<<"duration<float>Diffusiondurationinseconds.\n"; +cout<<"out_file_index<string>Simulationouputpathandprefix.\n"; +cout<<"scheme_file<string>Simulationprotocol.\n"; +cout<<"scale_from_stu<int>not0iftheprotocolisinSU.\n"; + +cout<<"write_txt<int>not0for.txtouput.\n"; +cout<<"write_bin<int>not0for.binouput.\n"; +cout<<"write_traj_filenot0towritethetrajfile.\n"; + +cout<<"<obstacle>Obstacledefinitiontag.\n"; +cout<<"<cylinder_gamma_packing>Gammacylindersobstaclestag.\n"; +cout<<"<ply_obstacle>ply-mesh-modelobstacletag.\n"; +cout<<"ini_walkers_pos<string>Custominitialparticlesposition(intra,extra).\n"; +cout<<"num_process<int>Numberofprocessorstouse.\n"; + +cout<<"<END>ENDoftheconf-fileparameters(needed).\n"; +} + + + + diff --git a/doc/xml/mcsimulation_8cpp.xml b/doc/xml/mcsimulation_8cpp.xml new file mode 100644 index 0000000..7d2cc03 --- /dev/null +++ b/doc/xml/mcsimulation_8cpp.xml @@ -0,0 +1,648 @@ + + + + mcsimulation.cpp + mcsimulation.h + Eigen/Dense + simerrno.h + pgsesequence.h + gradientwaveform.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + bool + bool cylinderIsCloseBoundery + (Cylinder &cyl, Eigen::Vector3d min_limits, Eigen::Vector3d max_limits) + cylinderIsCloseBoundery + + Cylinder & + cyl + + + Eigen::Vector3d + min_limits + + + Eigen::Vector3d + max_limits + + + + + + + + + + + + + + + +#include"mcsimulation.h" +#include"Eigen/Dense" +#include"simerrno.h" +#include"pgsesequence.h" +#include"gradientwaveform.h" + +intMCSimulation::count=0; + +MCSimulation::MCSimulation() +{ +plyObstacles_list=nullptr; +dynamicsEngine=nullptr; +dataSynth=nullptr; +id=count; +count++; +} + +/*DEPRECATED*/ +MCSimulation::MCSimulation(std::stringconfig_file) +{ +plyObstacles_list=nullptr; +dynamicsEngine=nullptr; +dataSynth=nullptr; + +params.readSchemeFile(config_file); +dynamicsEngine=newDynamicsSimulation(params); + +if(params.scheme_file.length()>2){ +scheme.readSchemeFile(params.scheme_file,params.scale_from_stu); +} + + +if(scheme.type=="PGSE"){ +dataSynth=newPGSESequence(scheme); +dataSynth->setNumberOfSteps(dynamicsEngine->params.num_steps); + +if(params.subdivision_flag){ +dataSynth->subdivision_flag=true; +dataSynth->subdivisions=params.subdivisions; +dataSynth->initializeSubdivisionSignals(); +} +} + +dataSynth->separate_signal=params.separate_signals; + +dynamicsEngine->id=count; +id=count; +count++; +} + +MCSimulation::MCSimulation(Parameters&params_) +{ +plyObstacles_list=nullptr; +dynamicsEngine=nullptr; +dataSynth=nullptr; + +params=params_; +dynamicsEngine=newDynamicsSimulation(params); + +if(params.scheme_file.length()>2){ +scheme.readSchemeFile(params.scheme_file,params.scale_from_stu); +} + +if(scheme.type=="PGSE"){ +dataSynth=newPGSESequence(scheme); +} +if(scheme.type=="WAVEFORM"){ +dataSynth=newGradientWaveform(scheme); +} + +dataSynth->setNumberOfSteps(dynamicsEngine->params.num_steps); +dataSynth->separate_signal=params.separate_signals; + +if(params.subdivision_flag){ +dataSynth->subdivision_flag=true; +dataSynth->subdivisions=params.subdivisions; +dataSynth->initializeSubdivisionSignals(); +} + +if(params.separate_signals) +dataSynth->initializeIntraExtraSignals(); + +dynamicsEngine->id=count; +id=count; +count++; +} + + +voidMCSimulation::startSimulation() +{ + +iniObstacles(); + +if(dataSynth!=NULL){ +dynamicsEngine->startSimulation(dataSynth); +} +else{ +dynamicsEngine->startSimulation(); +} + +} + +doubleMCSimulation::getExpectedFreeeDecay(unsignedi) +{ +if(dataSynth){ +doubleb=dataSynth->getbValue(i); +returnexp(-b*params.diffusivity); +} + +return-1; +} + + +voidMCSimulation::iniObstacles() +{ +addCylindersObstacles(); + +addPLYObstacles(); + +addVoxels(); + +//addCylindersConfigurations(); +//Usedonlyifthere'savoxel(deprecated) +//addExtraObstacles(); +} + +voidMCSimulation::addCylindersObstacles() +{ +this->dynamicsEngine->cylinders_list=this->cylinders_list; +} + + +//template<typenameOut> +//voidsplit(conststd::string&s,chardelim,Outresult){ +//std::stringstreamss; +//ss.str(s); +//std::stringitem; +//while(std::getline(ss,item,delim)){ +//*(result++)=item; +//} +//} + + +//std::vector<std::string>split(conststd::string&s,chardelim){ +//std::vector<std::string>elems; +//split(s,delim,std::back_inserter(elems)); +//returnelems; +//} + +//voidMCSimulation::addCylindersObstaclesFromFiles() +//{ +//for(unsignedi=0;i<params.cylinders_files.size();i++){ + +//boolz_flag=false; +//std::ifstreamin(params.cylinders_files[i]); + +//if(!in){ +////std::cout<<"\033[1;37m[INFO]\033[0mSim:"<<count<<""<<"[ERROR]Unabletoopen:"<<params.cylinders_files[i]<<std::endl; +//return; +//} + +//boolfirst=true; +//for(std::stringline;getline(in,line);) +//{ +//if(first){first-=1;continue;} + +//std::vector<std::string>jkr=split(line,''); +//if(jkr.size()!=7){ +//z_flag=true; +////std::cout<<"\033[1;33m[Warning]\033[0mCylinderorientationwassettowardstheZdirectionbydefault"<<std::endl; +//} +//break; +//} +//in.close(); + +//in.open(params.cylinders_files[i]); + +//if(z_flag){ +//doublex,y,z,r; +//doublescale; +//in>>scale; +//while(in>>x>>y>>z>>r) +//{ +//dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(x,y,z),Eigen::Vector3d(x,y,z+1.0),r,scale)); +//} +//in.close(); +//} +//else{ +//doublex,y,z,ox,oy,oz,r; +//doublescale; +//in>>scale; +//while(in>>x>>y>>z>>ox>>oy>>oz>>r) +//{ +//dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(x,y,z),Eigen::Vector3d(ox,oy,oz),r,scale)); +//} +//in.close(); +//} +//} +//} + +voidMCSimulation::addPLYObstacles() +{ + +////std::cout<<params.img_signal<<std::endl; +//for(unsignedi=0;i<params.PLY_files.size();i++){ +////std::cout<<i<<std::endl; +//dynamicsEngine->plyObstacles_list.push_back(PLYObstacle(params.PLY_files[i],params.PLY_scales[i])); +//dynamicsEngine->plyObstacles_list.back().id=i; +//dynamicsEngine->plyObstacles_list.back().percolation=params.PLY_percolation[i]; +//} + + +dynamicsEngine->plyObstacles_list=this->plyObstacles_list; +} + +voidMCSimulation::addVoxels() +{ +for(unsignedi=0;i<params.voxels_list.size();i++){ +dynamicsEngine->voxels_list.push_back(Voxel(params.voxels_list[i].first,params.voxels_list[i].second)); +} +} + +//voidMCSimulation::addCylindersConfigurations() +//{ + +//if(params.hex_packing){ +//doublerad=params.hex_packing_radius,sep=params.hex_packing_separation; + +////h=sqrt(3)/2*sep +//doubleh=0.8660254037844386*sep; + +//dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(0,0,0),Eigen::Vector3d(0,0,1.0),rad)); +//dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(sep,0,0),Eigen::Vector3d(sep,0,1.0),rad)); + +//dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(0,2.0*h,0),Eigen::Vector3d(0,2.0*h,1.0),rad)); +//dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(sep,2.0*h,0),Eigen::Vector3d(sep,2.0*h,1.0),rad)); + +//dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(0.5*sep,h,0),Eigen::Vector3d(0.5*sep,h,1.0),rad)); + +////Toavoidproblemswiththeboundaries +//dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(-0.5*sep,h,0),Eigen::Vector3d(-0.5*sep,h,1.0),rad)); +//dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(1.5*sep,h,0),Eigen::Vector3d(1.5*sep,h,1.0),rad)); + +//if(dynamicsEngine->voxels_list.size()>0) +//dynamicsEngine->voxels_list.clear(); + +//dynamicsEngine->voxels_list.push_back(Voxel(Eigen::Vector3d(0,0,0),Eigen::Vector3d(sep,2.0*h,2.0*h))); + +//} + +//} + + +boolcylinderIsCloseBoundery(Cylinder&cyl,Eigen::Vector3dmin_limits,Eigen::Vector3dmax_limits){ + +//gaptotheboundary +doublegap=1e-6; +//3dimensionalvector +for(inti=0;i<3;i++) +if((cyl.P[i]-cyl.radius-gap<min_limits[i])||(cyl.P[i]+cyl.radius+gap>max_limits[i])) +returntrue; + +returnfalse; +} + +//voidMCSimulation::addExtraObstacles() +//{ +//if(dynamicsEngine->voxels_list.size()==0) +//return; + +//std::vector<Eigen::Vector3d>multipliers; + +//Eigen::Vector3dgap=params.max_limits-params.min_limits; + +//for(inti=-1;i<=1;i++) +//for(intj=-1;j<=1;j++) +//for(intk=-1;k<=1;k++){ +//Eigen::Vector3djkr(i*gap[0],j*gap[1],k*gap[2]); +//multipliers.push_back(jkr); +//} + + +//unsignedlongcylinders_num=dynamicsEngine->cylinders_list.size(); + +//for(unsignedc=0;c<cylinders_num;c++) +//for(unsignedi=0;i<multipliers.size();i++) +//if(multipliers[i][0]!=0.0||multipliers[i][1]!=0.0||multipliers[i][2]!=0.0) +//{ +//Eigen::Vector3dP_=dynamicsEngine->cylinders_list[c].P; +//Eigen::Vector3dQ_=dynamicsEngine->cylinders_list[c].Q; +//P_[0]+=multipliers[i][0];P_[1]+=multipliers[i][1];P_[2]+=multipliers[i][2]; +//Q_[0]+=multipliers[i][0];Q_[1]+=multipliers[i][1];Q_[2]+=multipliers[i][2]; +//Cylindertmp_cyl(P_,Q_,dynamicsEngine->cylinders_list[c].radius); + + +////iftheobstacleiscloseenough +////if(cylinderIsCloseBoundery(tmp_cyl,params.min_limits,params.max_limits)) +//dynamicsEngine->cylinders_list.push_back(tmp_cyl); +//} + +//std::cout<<dynamicsEngine->cylinders_list.size()<<std::endl; +//} + + +MCSimulation::~MCSimulation() +{ +if(dynamicsEngine!=nullptr) +deletedynamicsEngine; + +if(dataSynth!=nullptr) +deletedataSynth; +} + + + + diff --git a/doc/xml/mcsimulation_8h.xml b/doc/xml/mcsimulation_8h.xml new file mode 100644 index 0000000..687d530 --- /dev/null +++ b/doc/xml/mcsimulation_8h.xml @@ -0,0 +1,323 @@ + + + + mcsimulation.h + dynamicsSimulation.h + scheme.h + vector + src/parallelmcsimulation.h + src/mcsimulation.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MCSimulation + + + + + + +//███╗███╗██████╗██╗██████╗██████╗ +//████╗████║██╔════╝██╔╝██╔══██╗██╔════╝ +//██╔████╔██║██║██╔╝██║██║██║ +//██║╚██╔╝██║██║██╔╝██║██║██║ +//██║╚═╝██║╚██████╗██╔╝██████╔╝╚██████╗ +//╚═╝╚═╝╚═════╝╚═╝╚═════╝╚═════╝ + + + +#ifndefMCSIMULATION_H +#defineMCSIMULATION_H + +#include"dynamicsSimulation.h" +#include"scheme.h" +#include<vector> + +classMCSimulation +{ +public: +staticintcount; +intid; +DynamicsSimulation*dynamicsEngine; +Schemescheme; +Parametersparams; +SimulableSequence*dataSynth; +std::vector<std::vector<float>>ini_walker_positions; +std::vector<PLYObstacle>*plyObstacles_list; +std::vector<Cylinder>*cylinders_list; +MCSimulation(); + + +MCSimulation(std::stringconfig_file); + +MCSimulation(Parameters&params_); + +~MCSimulation(); + +voidstartSimulation(); + +doublegetExpectedFreeeDecay(unsignedi); + +voidiniObstacles(); + +private: + +voidaddCylindersObstacles(); + +voidaddPLYObstacles(); + +voidaddVoxels(); + +//voidaddCylindersConfigurations(); + +//voidaddExtraObstacles(); + +}; + +#endif//MCSIMULATION_H + + + + diff --git a/doc/xml/md_src__r_e_a_d_m_e.xml b/doc/xml/md_src__r_e_a_d_m_e.xml new file mode 100644 index 0000000..18db8e7 --- /dev/null +++ b/doc/xml/md_src__r_e_a_d_m_e.xml @@ -0,0 +1,11 @@ + + + + md_src_README + Monte Carlo Diffusion and Collision Simulator + +Static building from sources: +Assuming a bin folder: +Cretes a folder mkdir binCompiles all the magic (statically, slowly, but without messy .o)g++ -O3 -std=c++11 -lpthread -std=c++0x -pthread -I. main.cpp simulablesequence.cpp vertex.cpp obstacle.cpp collision.cpp scheme.cpp voxel.cpp cylinder.cpp walker.cpp mcsimulation.cpp parallelmcsimulation.cpp trajectory.cpp triangle.cpp parameters.cpp plyobstacle.cpp pgsesequence.cpp dynamicsSimulation.cpp simerrno.cpp collisionsphere.cpp cylindergammadistribution.cpp sentinel.cpp subdivision.cpp gradientwaveform.cpp propagator.cpp -o bin/MC-DC_Simulator + + diff --git a/doc/xml/namespace_eigen.xml b/doc/xml/namespace_eigen.xml new file mode 100644 index 0000000..07b65d7 --- /dev/null +++ b/doc/xml/namespace_eigen.xml @@ -0,0 +1,11 @@ + + + + Eigen + + + + + + + diff --git a/doc/xml/namespacesentinels.xml b/doc/xml/namespacesentinels.xml new file mode 100644 index 0000000..29290b3 --- /dev/null +++ b/doc/xml/namespacesentinels.xml @@ -0,0 +1,12 @@ + + + + sentinels + sentinels::Sentinel + + + + + + + diff --git a/doc/xml/namespacestd.xml b/doc/xml/namespacestd.xml new file mode 100644 index 0000000..6d7442c --- /dev/null +++ b/doc/xml/namespacestd.xml @@ -0,0 +1,11 @@ + + + + std + + + + + + + diff --git a/doc/xml/obstacle_8cpp.xml b/doc/xml/obstacle_8cpp.xml new file mode 100644 index 0000000..bc28870 --- /dev/null +++ b/doc/xml/obstacle_8cpp.xml @@ -0,0 +1,106 @@ + + + + obstacle.cpp + obstacle.h + math.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"obstacle.h" +#include<math.h> + +Obstacle::Obstacle():percolation(0),T2(0),id(-1) +{ +} + +boolObstacle::checkCollision(Walker&walker,Eigen::Array3d&step,constdouble&step_lenght,Collision&colision) +{ +returnfalse; +} + +voidObstacle::elasticBounceAgainsPlane(Eigen::Vector3d&ray_origin,Eigen::Vector3d&normal,double&t,Eigen::Vector3d&step) +{ + +Eigen::Vector3dray=(-t*step).normalized();// +doublern=ray.dot(normal); + +//Caso3)nicercaniparalela +step=-ray+2.0*normal*rn; + +//step=(rn>0.0)?normal:(-normal); + +} + +doubleObstacle::minDistance(Walker&w) +{ +return0; + +} + + + + diff --git a/doc/xml/obstacle_8h.xml b/doc/xml/obstacle_8h.xml new file mode 100644 index 0000000..5d579b8 --- /dev/null +++ b/doc/xml/obstacle_8h.xml @@ -0,0 +1,139 @@ + + + + obstacle.h + collision.h + walker.h + Eigen/Core + src/cylinder.h + src/plyobstacle.h + src/obstacle.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Obstacle + + + + + + +#ifndefOBSTACLE_H +#defineOBSTACLE_H +#include"collision.h" +#include"walker.h" +#include"Eigen/Core" +classObstacle +{ +public: + +intid; +intcount_perc_crossings; +doublepercolation; +doubleT2; +Obstacle(); + +boolcheckCollision(Walker&walker,Eigen::Array3d&step,constdouble&step_lenght,Collision&colision); + +voidelasticBounceAgainsPlane(Eigen::Vector3d&ray_origin,Eigen::Vector3d&normal,double&t,Eigen::Vector3d&step); + +doubleminDistance(Walker&w); + +}; + +#endif//OBSTACLE_H + + + + diff --git a/doc/xml/parallelmcsimulation_8cpp.xml b/doc/xml/parallelmcsimulation_8cpp.xml new file mode 100644 index 0000000..534ccaf --- /dev/null +++ b/doc/xml/parallelmcsimulation_8cpp.xml @@ -0,0 +1,1150 @@ + + + + parallelmcsimulation.cpp + parallelmcsimulation.h + iomanip + vector + constants.h + simerrno.h + cylindergammadistribution.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + typename Out + + + void + void split_ + (const std::string &s, char delim, Out result) + split_ + + const std::string & + s + + + char + delim + + + Out + result + + + + + + + + + + + std::vector< std::string > + std::vector<std::string> split + (const std::string &s, char delim) + split + + const std::string & + s + + + char + delim + + + + + + + + + + + + + + + +#include"parallelmcsimulation.h" +#include<iomanip> +#include<vector> +#include"constants.h" +#include"simerrno.h" +#include"cylindergammadistribution.h" + + +//*Auxiliaremethodtosplitwordsinalineusingthespaces*// +template<typenameOut> +voidsplit_(conststd::string&s,chardelim,Outresult){ +std::stringstreamss; +ss.str(s); +std::stringitem; +while(std::getline(ss,item,delim)){ +*(result++)=item; +} +} + + +std::vector<std::string>split(conststd::string&s,chardelim){ +std::vector<std::string>elems; +split_(s,delim,std::back_inserter(elems)); +returnelems; +} + + +usingnamespacestd; + +ParallelMCSimulation::ParallelMCSimulation(std::stringconfig_file) +{ + +mean_second_passed=0; + +total_sim_particles=0; + +SimErrno::checkConfigurationFile(config_file.c_str()); + +params.readSchemeFile(config_file); + +SimErrno::checkSimulationParameters(params); +//printSimulationInfo(); +initializeUnitSimulations(); + +SimErrno::printSimulatinInfo(params,std::cout); + + +} + +ParallelMCSimulation::ParallelMCSimulation(Parameters&params) +{ +this->params=params; +mean_second_passed=0; +total_sim_particles=0; +SimErrno::checkSimulationParameters(params); +this->params=params; +initializeUnitSimulations(); +SimErrno::printSimulatinInfo(params,std::cout); +icvf=0; +} + +ParallelMCSimulation::~ParallelMCSimulation() +{ +for(unsignedi=0;i<simulations.size();i++){ +deletesimulations[i]; +} +} + +voidParallelMCSimulation::startSimulation() +{ +cout<<setfill('-'); +cout<<SH_FG_PURPLE<<"/********************MC/DCSimulationSTART:*************************/"<<SH_DEFAULT<<"\n"; + +for(unsignedinti=0;i<simulations.size();i++){ +sim_threads.push_back(std::thread(&MCSimulation::startSimulation,(simulations[i]))); +} + +for(unsignedi=0;i<simulations.size();i++){ +sim_threads[i].join(); +} + +for(unsignedi=0;i<simulations.size();i++){ +mean_second_passed+=simulations[i]->dynamicsEngine->second_passed/double(simulations.size()); +total_sim_particles+=simulations[i]->dynamicsEngine->num_simulated_walkers; +} + +cout<<setfill('-'); + +SimErrno::info("All"+to_string(params.num_proc)+"simulationsendedafter:"+DynamicsSimulation::secondsToMinutes(mean_second_passed) ++"inaverage",cout); + +SimErrno::info("Joiningresultingdata...",cout); + +jointResults(); + +SimErrno::info("Done.",cout); + +ofstreamout(params.output_base_name+"_simulation_info.txt",std::ofstream::app); +SimErrno::info("All"+to_string(params.num_proc)+"simulationsendedafter:"+DynamicsSimulation::secondsToMinutes(mean_second_passed) ++"inaverage",out,false); +SimErrno::info("Numberofparticleslabeledasstuck:"+to_string(stuck_count),out,false); +SimErrno::info("Numberofparticleseliminatedduecrossings:"+to_string(illegal_count),out,false); + +if(params.max_simulation_time>0){ +SimErrno::info("Numberofsimulatedparticles:"+to_string(total_sim_particles),out,false); +SimErrno::info("Meansimulationspeed:"+to_string(unsigned(params.num_steps*total_sim_particles/mean_second_passed))+"steps/second",out,false); +} +else{ +SimErrno::info("Meansimulationspeed:"+to_string(unsigned(params.num_steps*params.num_walkers/mean_second_passed))+"steps/second",out,false); +} +if(params.voxels_list.size()>0){ +stringmessage="Voxellimits:"; +SimErrno::info(message,out,false); + +out<<std::setprecision(10)<<"("<<params.voxels_list[0].first[0]<< +""<<params.voxels_list[0].first[1]<< +""<<params.voxels_list[0].first[2]<<")\n"; + +out<<std::setprecision(10)<<"("<<params.voxels_list[0].second[0]<< +""<<params.voxels_list[0].second[1]<< +""<<params.voxels_list[0].second[2]<<")\n"; +} + +if(params.custom_sampling_area){ +out<<std::fixed; +stringmessage="Customsampledarea(mm):"; +SimErrno::info(message,out,false); +out<<std::setprecision(10)<<"("<<params.min_sampling_area[0]<< +""<<params.min_sampling_area[1]<< +""<<params.min_sampling_area[2]<<")\n"; + +out<<std::setprecision(10)<<"("<<params.max_sampling_area[0]<< +""<<params.max_sampling_area[1]<< +""<<params.max_sampling_area[2]<<")\n"; +} + + +if((params.custom_sampling_areaorparams.voxels_list.size()>0)and(params.computeVolume)){ +stringmessage="EstimatedIntra-axonalvolumefromsampling(mm^3):"; +out<<std::scientific; +SimErrno::info(message,out,false); +out<<std::scientific; +out<<aprox_volumen<<endl; +} + + +if(params.hex_packing==true){ +SimErrno::info("Hex.packingradius:"+to_string(params.hex_packing_radius),out,false); +SimErrno::info("Hex.packingseparation:"+to_string(params.hex_packing_separation),out,false); +} +out.close(); +} + + +voidParallelMCSimulation::initializeUnitSimulations() +{ + +//Buildanythingthatneedstobesynbetweensimulations. +specialInitializations(); + +//ThenumberofwalkerNdevidedbetweenalltheprocesses + + +unsignedN_per_sim=params.num_walkers/params.num_proc; + +for(unsignedi=0;i<params.num_proc-1;i++){ + +//Parametersforeachsimulationsimulation +Parametersparams_temp=params; +params_temp.num_walkers=N_per_sim; +params_temp.output_base_name+="_"+std::to_string(i); + + +MCSimulation*simulation_=newMCSimulation(params_temp); +simulation_->plyObstacles_list=&this->plyObstacles_list; +simulation_->cylinders_list=&this->cylinders_list; +simulation_->dynamicsEngine->print_expected_time=0; +simulations.push_back(simulation_); + +if(params.verbatim) +SimErrno::info("Sim:"+to_string(simulation_->dynamicsEngine->id)+"Initialized",cout); +} + +//Wesetthetremainingwalkerssoitsumsupthedesiredtotal + +//Parametersforeachsimulationsimulation +Parametersparams_temp=params; +params_temp.num_walkers=params.num_walkers-N_per_sim*(params.num_proc-1); +params_temp.output_base_name+="_"+std::to_string(params.num_proc-1); + + +MCSimulation*simulation_=newMCSimulation(params_temp); +//simulation_->dynamicsEngine->print_expected_time=0; +simulation_->plyObstacles_list=&this->plyObstacles_list; +simulation_->cylinders_list=&this->cylinders_list; +simulations.push_back(simulation_); + +if(params.verbatim) +SimErrno::info("Sim:"+to_string(simulation_->dynamicsEngine->id)+"Initialized",cout); +} + +voidParallelMCSimulation::jointResults() +{ + +//==================================================================================================== +//CompleteDWIdata. +//==================================================================================================== + +//Writestheouputdata +if(simulations[0]->dataSynth){ + + +std::stringoutDWI=params.output_base_name+"_DWI.txt"; +std::stringoutDWI_intra=params.output_base_name+"_DWI_intra.txt"; +std::stringoutDWI_extra=params.output_base_name+"_DWI_extra.txt"; +std::stringoutDWIi=params.output_base_name+"_DWI_img.txt"; +std::stringoutPhase=params.output_base_name+"_phase_shift.txt"; + +std::stringboutDWI=params.output_base_name+"_DWI.bfloat"; +std::stringboutDWI_intra=params.output_base_name+"_DWI_intra.bfloat"; +std::stringboutDWI_extra=params.output_base_name+"_DWI_extra.bfloat"; +std::stringboutDWIi=params.output_base_name+"_DWI_img.bfloat"; +std::stringboutPhase=params.output_base_name+"_phase_shift.bfloat"; + +std::ofstreamphase_out,phase_bout,dwi_out,dwii_out,dwi_bout,dwii_bout, +dwi_intra_out,dwi_extra_out,dwi_intra_bout,dwi_extra_bout; + +if(params.log_phase_shift){ +if(params.write_bin) +phase_bout.open(boutPhase,std::ofstream::binary);//phaseshift(binary) + +if(params.write_txt) +phase_out.open(outPhase,std::ofstream::out);//phaseshift(txt) +} + +if(params.write_txt){ +dwi_out.open(outDWI,std::ofstream::out);//realpart + + +if(params.img_signal==true) +dwii_out.open(outDWIi,std::ofstream::out);//imgpart + +if(params.separate_signals==true){ +dwi_intra_out.open(outDWI_intra,std::ofstream::out);//intrapart +dwi_extra_out.open(outDWI_extra,std::ofstream::out);//extrapart +} +} + +if(params.write_bin){ +dwi_bout.open(boutDWI,std::ofstream::binary);//realpart(binary) + +if(params.img_signal==true) +{dwii_bout.open(boutDWIi,std::ofstream::binary);}//imgpart(binary) + +if(params.separate_signals==true){ +dwi_intra_bout.open(boutDWI_intra,std::ofstream::binary);//intrapart +dwi_extra_bout.open(boutDWI_extra,std::ofstream::binary);//extrapart +} +} + + +for(unsignedi=0;i<simulations[0]->dataSynth->DWI.size();i++) +{ +doubleDWI=0; +doubleDWIi=0; +doubleDWI_intra=0; +doubleDWI_extra=0; + +std::vector<int>phase(3600,0); +for(unsignedp=0;p<params.num_proc;p++) +{ +DWI+=simulations[p]->dataSynth->DWI[i];//realpart + +if(params.img_signal==true) +DWIi+=simulations[p]->dataSynth->DWIi[i];//imgpart + +if(params.separate_signals){ +DWI_intra+=simulations[p]->dataSynth->DWI_intra[i];//intrapart +DWI_extra+=simulations[p]->dataSynth->DWI_extra[i];//extrapart +} + +//foreachhistogrambin,36000fixedsize +for(unsignedh=0;h<3600;h++) +{ +phase[h]+=simulations[p]->dataSynth->phase_shift_distribution(i,h); +} + +} + + +if(params.write_txt){ +dwi_out<<DWI<<std::endl; + +if(params.img_signal==true) +dwii_out<<DWIi<<std::endl; + +if(params.separate_signals){ +dwi_intra_out<<DWI_intra<<std::endl; +dwi_extra_out<<DWI_extra<<std::endl; +} +} + +if(params.write_bin){ +floatholder=float(DWI); +dwi_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); + +if(params.img_signal==true) +{ +holder=float(DWIi); +dwii_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); +} + +if(params.separate_signals){ +floatholder=float(DWI_intra); +dwi_intra_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); +holder=float(DWI_extra); +dwi_extra_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); +} +} + +if(params.log_phase_shift){ + +if(params.write_txt){ +//writethefullhistogramforthegradienti +for(unsignedh=0;h<3600;h++) +{ +phase_out<<phase[h]; +if(h<3600-1) +phase_out<<""; +else +phase_out<<endl; +} +} + +if(params.write_bin){ +//writethefullhistogramforthegradienti +for(unsignedh=0;h<3600;h++) +{ +floatholder=phase[h]; +phase_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); +} +} +} +} + +if(params.write_txt){ +dwi_out.close(); + +if(params.img_signal==true) +dwii_out.close(); + +if(params.separate_signals){ +dwi_intra_out.close(); +dwi_extra_out.close(); +} +} +if(params.write_bin){ +dwi_bout.close(); + +if(params.img_signal==true) +dwii_bout.close(); + +if(params.separate_signals){ +dwi_intra_bout.close(); +dwi_extra_bout.close(); +} +} + +if(params.log_phase_shift) +phase_out.close(); +} + +stuck_count=illegal_count=0; + + +//ICVFforsubdivisions + +for(unsignedi=0;i<simulations.size();i++){ +stuck_count+=simulations[i]->dynamicsEngine->sentinela.stuck_count; +illegal_count+=simulations[i]->dynamicsEngine->sentinela.illegal_count; +icvf+=simulations[i]->dynamicsEngine->num_simulated_walkers*simulations[i]->dynamicsEngine->icvf; +} + +//icvf=float(this->total_sim_particles)/float(this->total_ini_walker_pos.size()); + + +//cout<<icvf<<"ICVF"<<endl; + + +//if(params.custom_sampling_area==falseandparams.voxels_list.size()>0){ +//for(autoi=0;i<3;i++){ +//params.min_sampling_area[i]=params.voxels_list[0].first[i]; +//params.max_sampling_area[i]=params.voxels_list[0].second[i]; +//} +//} + +floatsampling_volume=0; + +//for(autoi=0;i<3;i++){ +//sampling_area*=(params.max_sampling_area[i]-params.min_sampling_area[i]); +//} + +//if(params.subdivision_mask.size()>0){ +//for(unsignedi=0;i<params.subdivision_mask.size();i++){ +//if(params.subdivision_mask[i]){ +//Eigen::Vector3fcenter,min_limit=params.subdivisions[i].min_limits,max_limit=params.subdivisions[i].max_limits; +//floatsubdiv_volume=1; +//for(autoj=0;j<3;j++) +//subdiv_volume*=(params.subdivisions[i].max_limits,max_limit[j]-params.subdivisions[i].min_limits[j]); + +//sampling_volume+=subdiv_volume; +//} +//} +//} + +//cout<<sampling_volume<<endl; + +aprox_volumen=(icvf)*sampling_volume; + + + +//==================================================================================================== +//Subdivisionresultsjoin. +//==================================================================================================== + + +if(simulations[0]->dataSynth&&this->params.subdivision_flag) +{ +std::stringout_vox_DWI=params.output_base_name+"_voxels_DWI.txt"; +std::stringout_vox_DWIi=params.output_base_name+"_voxels_DWI_img.txt"; +std::stringout_vox_DWI_intra=params.output_base_name+"_voxels_DWI_intra.txt"; +std::stringout_vox_DWI_extra=params.output_base_name+"_voxels_DWI_extra.txt"; + +std::stringbout_vox_DWI=params.output_base_name+"_voxels_DWI.bfloat"; +std::stringbout_vox_DWIi=params.output_base_name+"_voxels_DWI_img.bfloat"; +std::stringbout_vox_DWI_intra=params.output_base_name+"_voxels_DWI_intra.bfloat"; +std::stringbout_vox_DWI_extra=params.output_base_name+"_voxels_DWI_extra.bfloat"; + +std::ofstreamdwi_out,dwii_out,dwi_bout,dwii_bout, +dwi_intra_out,dwi_extra_out,dwi_intra_bout,dwi_extra_bout; + +if(params.write_txt){ +dwi_out.open(out_vox_DWI,std::ofstream::out);//realpart + +if(params.img_signal==true) +dwii_out.open(out_vox_DWIi,std::ofstream::out);//imgpart + +if(params.separate_signals){ +dwi_intra_out.open(out_vox_DWI_intra,std::ofstream::out);//intrapart +dwi_extra_out.open(out_vox_DWI_extra,std::ofstream::out);//extrapart +} +} + +if(params.write_bin){ +dwi_bout.open(bout_vox_DWI,std::ofstream::binary);//realpart(binary) +if(params.img_signal==true) +dwii_bout.open(bout_vox_DWIi,std::ofstream::binary);//imgpart(binary) + +if(params.separate_signals){ +dwi_intra_bout.open(bout_vox_DWI_intra,std::ofstream::binary);//intrapart(binary) +dwi_extra_bout.open(bout_vox_DWI_extra,std::ofstream::binary);//extrapart(binary) +} + +} + + +std::stringoutPDen=params.output_base_name+"_volFractions.txt"; +std::ofstreamPDen_out(outPDen,std::ofstream::out);//ParticleDensitymap + +//##HEADER +if(params.write_txt){ + +//#Num_voxels +dwi_out<<simulations[0]->dataSynth->subdivisions.size()<<endl; + +if(params.img_signal==true) +{ +dwii_out<<simulations[0]->dataSynth->subdivisions.size()<<endl; +dwii_out<<simulations[0]->dataSynth->DWI.size()<<endl; +} + +//#Size_DWI +dwi_out<<simulations[0]->dataSynth->DWI.size()<<endl; + +if(params.separate_signals){ +//#Num_voxels +dwi_intra_out<<simulations[0]->dataSynth->subdivisions.size()<<endl; +dwi_extra_out<<simulations[0]->dataSynth->subdivisions.size()<<endl; +//#Size_DWI +dwi_intra_out<<simulations[0]->dataSynth->DWI.size()<<endl; +dwi_extra_out<<simulations[0]->dataSynth->DWI.size()<<endl; +} +} +//##HEADER(Binary) +if(params.write_bin){ +//#Num_voxels +floatholder=float(simulations[0]->dataSynth->subdivisions.size()); +dwi_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); + +if(params.img_signal==true) +dwii_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); + +//#Size_DWI +holder=float(simulations[0]->dataSynth->DWI.size()); +dwi_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); + +if(params.img_signal==true) +dwii_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); + +if(params.separate_signals){ +//#Num_voxels +floatholder=float(simulations[0]->dataSynth->subdivisions.size()); +dwi_intra_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); +dwi_extra_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); +//#Size_DWI +holder=float(simulations[0]->dataSynth->DWI.size()); +dwi_intra_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); +dwi_extra_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); +} +} + +for(uints=0;s<simulations[0]->dataSynth->subdivisions.size();s++) +{ +doubledensity_intra=0; +doubledensity_extra=0; +doubledensity=0; +for(unsignedp=0;p<params.num_proc;p++){ + +density_intra+=simulations[p]->dataSynth->subdivisions[s].density_intra; +density_extra+=simulations[p]->dataSynth->subdivisions[s].density_extra; +density+=simulations[p]->dataSynth->subdivisions[s].density; +} + +PDen_out<<density<<endl; +PDen_out<<density_intra<<endl; +PDen_out<<density_extra<<endl; + + +for(unsignedi=0;i<simulations[0]->dataSynth->DWI.size();i++) +{ +doublesub_DWI=0; +doublesub_DWIi=0; +doublesub_DWI_intra=0; +doublesub_DWI_extra=0; + +for(unsignedp=0;p<params.num_proc;p++) +{ +sub_DWI+=simulations[p]->dataSynth->sub_DWI[s][i];//realpart + +if(params.img_signal==true) +sub_DWIi+=simulations[p]->dataSynth->sub_DWIi[s][i];//imgpart + +if(params.separate_signals){ +sub_DWI_intra+=simulations[p]->dataSynth->sub_DWI_intra[s][i];//intrapart +sub_DWI_extra+=simulations[p]->dataSynth->sub_DWI_extra[s][i];//extrapart +} +} + + +if(params.write_txt){ +dwi_out<<sub_DWI<<std::endl; + +if(params.img_signal==true) +dwii_out<<sub_DWIi<<std::endl; + +if(params.separate_signals){ +dwi_intra_out<<sub_DWI_intra<<std::endl; +dwi_extra_out<<sub_DWI_extra<<std::endl; +} +} +if(params.write_bin){ +floatholder=float(sub_DWI); +dwi_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); + +if(params.img_signal==true) +{ +holder=float(sub_DWIi); +dwii_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); +} + +if(params.separate_signals){ +floatholder=float(sub_DWI_intra); +dwi_intra_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); +holder=float(sub_DWI_extra); +dwi_extra_bout.write(reinterpret_cast<char*>(&holder),sizeof(float)); +} +} +} +} + +if(params.write_txt){ +dwi_out.close(); + +if(params.img_signal==true) +dwii_out.close(); + +if(params.separate_signals){ +dwi_intra_out.close(); +dwi_extra_out.close(); +} +} +if(params.write_bin){ +dwi_bout.close(); +if(params.img_signal==true) +dwii_bout.close(); + +if(params.separate_signals){ +dwi_intra_bout.close(); +dwi_extra_bout.close(); +} +} + +PDen_out.close(); +} + + +//==================================================================================================== +//NEWJoinpropagatorjoinsolution +//==================================================================================================== + +if(this->params.log_propagator){ +uintnum_sims=uint(simulations.size()); +for(uinti=0;i<num_sims;i++){ +for(uintj=0;j<this->simulations[i]->dynamicsEngine->propagator.num_times;j++){ +for(uintk=0;k<this->simulations[i]->dynamicsEngine->propagator.num_dirs;k++){ +if(i==0){ +this->simulations[0]->dynamicsEngine->propagator.propagator_log[j][k]/=float(num_sims); +} +else{ +this->simulations[0]->dynamicsEngine->propagator.propagator_log[j][k]+=this->simulations[i]->dynamicsEngine->propagator.propagator_log[j][k]/float(num_sims); +} +} +} +} +} + + +std::stringprop_file_name=params.output_base_name+"_propagator.txt"; + +if(this->params.log_propagator) +this->simulations[0]->dynamicsEngine->writePropagator(prop_file_name); +} + +voidParallelMCSimulation::specialInitializations() +{ +addCylindersConfigurations(); +addCylindersObstaclesFromFiles(); + +if(params.number_subdivisions>1){ +params.addSubdivisions(); +} + +//std::cout<<params.img_signal<<std::endl; +for(unsignedi=0;i<params.PLY_files.size();i++){ +//std::cout<<i<<std::endl; +//plyObstacles_list.push_back(PLYObstacle(params.PLY_files[i],centers,max_distance,params.PLY_scales[i])); +plyObstacles_list.push_back(PLYObstacle(params.PLY_files[i],params.PLY_scales[i])); +plyObstacles_list.back().id=i; +plyObstacles_list.back().percolation=params.PLY_percolation[i]; +} +} + + +voidParallelMCSimulation::addCylindersObstaclesFromFiles() +{ +for(unsignedi=0;i<params.cylinders_files.size();i++){ + +boolz_flag=false; +std::ifstreamin(params.cylinders_files[i]); + +if(!in){ +//std::cout<<"\033[1;37m[INFO]\033[0mSim:"<<count<<""<<"[ERROR]Unabletoopen:"<<params.cylinders_files[i]<<std::endl; +return; +} + +boolfirst=true; +for(std::stringline;getline(in,line);) +{ +if(first){first-=1;continue;} + +std::vector<std::string>jkr=split(line,''); +if(jkr.size()!=7){ +z_flag=true; +//std::cout<<"\033[1;33m[Warning]\033[0mCylinderorientationwassettowardstheZdirectionbydefault"<<std::endl; +} +break; +} +in.close(); + +in.open(params.cylinders_files[i]); + +if(z_flag){ +doublex,y,z,r; +doublescale; +in>>scale; +while(in>>x>>y>>z>>r) +{ +cylinders_list.push_back(Cylinder(Eigen::Vector3d(x,y,z),Eigen::Vector3d(x,y,z+1.0),r,scale)); +} +in.close(); +} +else{ +doublex,y,z,ox,oy,oz,r; +doublescale; +in>>scale; +while(in>>x>>y>>z>>ox>>oy>>oz>>r) +{ +cylinders_list.push_back(Cylinder(Eigen::Vector3d(x,y,z),Eigen::Vector3d(ox,oy,oz),r,scale)); +} +in.close(); +} +} +} + +voidParallelMCSimulation::addCylindersConfigurations() +{ + +if(params.hex_packing){ +doublerad=params.hex_packing_radius,sep=params.hex_packing_separation; + +//h=sqrt(3)/2*sep +doubleh=0.8660254037844386*sep; + +cylinders_list.push_back(Cylinder(Eigen::Vector3d(0,0,0),Eigen::Vector3d(0,0,1.0),rad)); +cylinders_list.push_back(Cylinder(Eigen::Vector3d(sep,0,0),Eigen::Vector3d(sep,0,1.0),rad)); + +cylinders_list.push_back(Cylinder(Eigen::Vector3d(0,2.0*h,0),Eigen::Vector3d(0,2.0*h,1.0),rad)); +cylinders_list.push_back(Cylinder(Eigen::Vector3d(sep,2.0*h,0),Eigen::Vector3d(sep,2.0*h,1.0),rad)); + +cylinders_list.push_back(Cylinder(Eigen::Vector3d(0.5*sep,h,0),Eigen::Vector3d(0.5*sep,h,1.0),rad)); + +//Toavoidproblemswiththeboundaries +cylinders_list.push_back(Cylinder(Eigen::Vector3d(-0.5*sep,h,0),Eigen::Vector3d(-0.5*sep,h,1.0),rad)); +cylinders_list.push_back(Cylinder(Eigen::Vector3d(1.5*sep,h,0),Eigen::Vector3d(1.5*sep,h,1.0),rad)); + +if(params.voxels_list.size()>0) +params.voxels_list.clear(); + +pair<Eigen::Vector3d,Eigen::Vector3d>voxel_(Eigen::Vector3d(0,0,0),Eigen::Vector3d(sep,2.0*h,2.0*h)); +params.voxels_list.push_back(voxel_); + +} + + +if(params.gamma_packing==true){ + +stringmessage="InitialializingGammadistribution("+std::to_string(params.gamma_packing_alpha)+"," ++std::to_string(params.gamma_packing_beta)+").\n"; +SimErrno::info(message,cout); + + +CylinderGammaDistributiongamma_dist(params.gamma_num_cylinders,params.gamma_packing_alpha,params.gamma_packing_beta,params.gamma_icvf +,params.min_limits,params.max_limits,params.min_cyl_radii); + +gamma_dist.displayGammaDistribution(); + +gamma_dist.createGammaSubstrate(); + +params.max_limits=gamma_dist.max_limits; +params.min_limits=gamma_dist.min_limits; + +if(params.voxels_list.size()<=0){ +pair<Eigen::Vector3d,Eigen::Vector3d>voxel_(params.min_limits,params.max_limits); +params.voxels_list.push_back(voxel_); +} +else{ +params.voxels_list[0].first=params.min_limits; +params.voxels_list[0].second=params.max_limits; +} + +stringfile=params.output_base_name+"_gamma_distributed_cylinder_list.txt"; + +ofstreamout(file); + +gamma_dist.printSubstrate(out); + +this->cylinders_list=gamma_dist.cylinders; + +params.cylinders_files.push_back(file); + +SimErrno::info("Done.\n",cout); +} + +} + + + + diff --git a/doc/xml/parallelmcsimulation_8h.xml b/doc/xml/parallelmcsimulation_8h.xml new file mode 100644 index 0000000..255be3c --- /dev/null +++ b/doc/xml/parallelmcsimulation_8h.xml @@ -0,0 +1,313 @@ + + + + parallelmcsimulation.h + mcsimulation.h + thread + src/main.cpp + src/parallelmcsimulation.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ParallelMCSimulation + + + + + + +#ifndefPARALLELMCSIMULATION_H +#definePARALLELMCSIMULATION_H + +#include"mcsimulation.h" +#include<thread> + + +classParallelMCSimulation +{ +public: + +Parametersparams; +doublemean_second_passed; +unsignedtotal_sim_particles; +unsignedstuck_count; +unsignedillegal_count; +doubleicvf; +doubleaprox_volumen; +std::vector<MCSimulation*>simulations; +std::vector<std::thread>sim_threads; +std::vector<PLYObstacle>plyObstacles_list; +std::vector<Cylinder>cylinders_list; +std::vector<Eigen::Vector3f>total_ini_walker_pos; +ParallelMCSimulation(std::stringconfig_file); + +ParallelMCSimulation(Parameters&params); + + +ParallelMCSimulation(){} + +~ParallelMCSimulation(); + +voidstartSimulation(); + +private: +voidgetNumberOfProcessors(); + +voidinitializeUnitSimulations(); + +voidjointResults(); + +voidspecialInitializations(); + +voidaddCylindersObstaclesFromFiles(); + +voidaddCylindersConfigurations(); + +}; + +#endif//PARALLELMCSIMULATION_H + + + + diff --git a/doc/xml/parameters_8cpp.xml b/doc/xml/parameters_8cpp.xml new file mode 100644 index 0000000..a5f0419 --- /dev/null +++ b/doc/xml/parameters_8cpp.xml @@ -0,0 +1,840 @@ + + + + parameters.cpp + parameters.h + fstream + iostream + constants.h + simerrno.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"parameters.h" +#include<fstream> +#include<iostream> +#include"constants.h" +#include"simerrno.h" +usingnamespacestd; + +Parameters::Parameters() +{ +//Dummyinitialvalues; +scale_from_stu=false; +seed=-1; +save_phase_shift=false; +write_traj=false; +write_txt=false; +write_bin=true; + +hex_packing=false; +hex_packing_radius=0; +hex_packing_separation=0; + +gamma_packing=false; +gamma_packing_alpha=0; +gamma_packing_beta=0; +gamma_num_cylinders=0; +gamma_icvf=0; +min_cyl_radii=0; + +ini_walkers_file=""; +num_proc=0; +hex_packing=false; +verbatim=false; + +record_phase_times.clear(); +record_pos_times.clear(); +subdivisions_file=""; + +computeVolume=false; +custom_sampling_area=false; +separate_signals=false; +img_signal=false; + +for(autoi=0;i<3;i++) +min_sampling_area[i]=max_sampling_area[i]=0.0; +} + +voidParameters::readSchemeFile(std::stringconf_file_path) +{ + +ifstreamin(conf_file_path); + +if(!in){ +cout<<"[ERROR]Configurationfile"<<endl; +return; +} + +stringtmp=""; +while((in>>tmp)&&(str_dist(tmp,"<END>")>=2)){ + +std::transform(tmp.begin(),tmp.end(),tmp.begin(),::tolower); + +if(str_dist(tmp,"n")==0){ +in>>num_walkers; +} +elseif(str_dist(tmp,"t")==0){ +in>>num_steps; +} +elseif(str_dist(tmp,"duration")<=1){ +in>>sim_duration; +} +elseif(str_dist(tmp,"scheme_file")<=1){ +in>>scheme_file; +} +elseif(str_dist(tmp,"diffusivity")<=1){ +in>>diffusivity; +} +elseif((str_dist(tmp,"out_traj_file_index")<=2)or(str_dist(tmp,"exp_prefix")<=2)){ +in>>traj_file; +output_base_name=traj_file; +} +elseif(str_dist(tmp,"ini_walkers_file")<=3){ +in>>ini_walkers_file; +} +elseif(str_dist(tmp,"write_txt")<=1){ +in>>write_txt; +} +elseif(str_dist(tmp,"write_bin")<=1){ +in>>write_bin; +} +elseif(str_dist(tmp,"write_traj_file")<=2){ +in>>write_traj; +} +elseif(str_dist(tmp,"scale_from_stu")<=2){ +in>>scale_from_stu; +} +elseif(str_dist(tmp,"seed")<=1){ +in>>seed; +} +elseif(str_dist(tmp,"<obstacle>")==0){ +readObstacles(in); +} +elseif((str_dist(tmp,"<voxels>")==0)or(str_dist(tmp,"<voxel>")==0)){ +readVoxels(in); +} +elseif(str_dist(tmp,"num_process")<=1||str_dist(tmp,"processors")<=1){ +in>>num_proc; +} +elseif(str_dist(tmp,"<log>")==0){ +readInfoGatheringParams(in); +} +elseif(str_dist(tmp,"<sampling_area>")==0||str_dist(tmp,"<spawning_area>")==0){ +floattmp; +in>>tmp;min_sampling_area[0]=tmp; +in>>tmp;min_sampling_area[1]=tmp; +in>>tmp;min_sampling_area[2]=tmp; +in>>tmp;max_sampling_area[0]=tmp; +in>>tmp;max_sampling_area[1]=tmp; +in>>tmp;max_sampling_area[2]=tmp; + +custom_sampling_area=true; +} +elseif(str_dist(tmp,"<delta>")==0) +{ +floattmp; +//Savethethreepositions +in>>tmp;ini_delta_pos.push_back(tmp); +in>>tmp;ini_delta_pos.push_back(tmp); +in>>tmp;ini_delta_pos.push_back(tmp); +} +elseif(str_dist(tmp,"ini_walkers_pos")<=2) +{ +in>>ini_walker_flag; +std::transform(ini_walker_flag.begin(),ini_walker_flag.end(),ini_walker_flag.begin(),::tolower); + +if(str_dist(ini_walker_flag,"intra")>1&&str_dist(ini_walker_flag,"extra")>1&&str_dist(ini_walker_flag,"delta")>1){ +SimErrno::error("Wrongwalker'sinitializationposition(Didyoumean:'walker_ini_file'?)",cout); + +assert(0); +} +} +elseif(str_dist(tmp,"subdivisions_number")<=2) +{ +in>>number_subdivisions; +subdivision_flag=(number_subdivisions>1)?true:false; + +if(number_subdivisions>500||number_subdivisions<=0){ +SimErrno::error("Unrealisticnumberofresultingsubdivisionvoxels:"+std::to_string(number_subdivisions)+"^3",cout); + +assert(0); +} +} +elseif(str_dist(tmp,"subdivisions_file")<=1) +{ +in>>subdivisions_file; +readSubdivisionFile(); +subdivision_flag|=(subdivisions.size()>0); +} +elseif((str_dist(tmp,"permeability")<=1)||(str_dist(tmp,"obstacle_permeability")<=2)) +{ +in>>obstacle_permeability; +} +elseif(str_dist(tmp,"coll_sphere_dist")<=2||str_dist(tmp,"colision_dist")<=2||str_dist(tmp,"sphere_size")<=2) +{ +in>>collision_sphere_distance; +} +elseif(str_dist(tmp,"verbatim")<=2) +{ +this->verbatim=true; +} +elseif(str_dist(tmp,"log_opp")<=1) +{ +this->log_opp=true; +} +elseif(str_dist(tmp,"compute_volume")<=1) +{ +this->computeVolume=true; +} +elseif(str_dist(tmp,"separate_signals")<=1) +{ +this->separate_signals=true; +this->computeVolume=true; +} +elseif(str_dist(tmp,"log_phase_shift")<=2) +{ +this->log_phase_shift=true; +} +elseif(str_dist(tmp,"max_sim_time")<=2||str_dist(tmp,"max_simulation_time")<=3){ +in>>max_simulation_time; + +if(max_simulation_time<=0){ +SimErrno::error("Maxsimulationtimemustbegreaterthan1second.",cout); +assert(0); +} +} +elseif(str_dist(tmp,"deportation")<=2) +{ +in>>discard_illegals; +} +elseif(str_dist(tmp,"discard_stucks")<=2) +{ +in>>discard_stucks; +} +else{ +if(str_dist(tmp.substr(0,2),"</")>0) +SimErrno::warning("Parameter:"+tmp+"Unknown",cout); +} +} + +if(scale_from_stu){ +//m^2/stomm^2/ms +diffusivity*=m2_to_mm2/s_to_ms; +//secondstoms +sim_duration*=s_to_ms; +} + + + +in.close(); + +return; +} + +//SetMethods + +voidParameters::setNumWalkers(unsignedN) +{ +num_walkers=N; +} + +voidParameters::setNumSteps(unsignedT) +{ +num_steps=T; +} + +voidParameters::setDiffusivity(doubleD) +{ +diffusivity=D; +} + +voidParameters::setSimDuration(doubleduration) +{ +sim_duration=duration; +} + +voidParameters::setWriteTrajFlag(boolwrite_bin) +{ +write_traj=write_bin; +} + +voidParameters::setWriteTextFlag(boolwrite_txt_) +{ +write_txt=write_txt_; +} + +voidParameters::setMinLimits(Eigen::Vector3dmin_limits_) +{ +min_limits=min_limits_; + +} + +voidParameters::setMaxLimits(Eigen::Vector3dmax_limits_) +{ +max_limits=max_limits_; +} + +voidParameters::setTrajFileName(std::stringtraj_file_) +{ +traj_file=traj_file_; +} + +voidParameters::setOutputBaseFileName(std::stringoutput_base_name_) +{ +output_base_name=output_base_name_; +} + +voidParameters::iniWalkersFileName(std::stringini_walkers_file_) +{ +ini_walkers_file=ini_walkers_file_; +} + +voidParameters::setSchemeFileName(std::stringscheme_file_) +{ +scheme_file=scheme_file_; +} + + +//GETMETHODS + +unsignedParameters::getNumWalkers() +{ +returnnum_walkers; +} + +unsignedParameters::getNumSteps() +{ +returnnum_steps; +} + +doubleParameters::getDiffusivity() +{ +returndiffusivity; +} + +boolParameters::getWriteTrajFlag() +{ +returnwrite_traj; +} + +boolParameters::getWriteTextFlag() +{ +returnwrite_txt; +} + +Eigen::Vector3dParameters::getMinLimits() +{ +returnmin_limits; +} + +Eigen::Vector3dParameters::getMaxLimits() +{ +returnmax_limits; +} + +std::stringParameters::getTrajFileName() +{ +returntraj_file; +} + +std::stringParameters::getOutputBaseFileName() +{ +returnoutput_base_name; +} + +std::stringParameters::getIniWalkersFileName() +{ +returnini_walkers_file; +} + +std::stringParameters::getSchemeFileName() +{ +returnscheme_file; +} + + +voidParameters::readObstacles(ifstream&in) +{ +stringtmp=""; +unsignednum_obstacles=0; + +while(!(str_dist(tmp,"</obstacle>")<=2)){ +in>>tmp; +std::transform(tmp.begin(),tmp.end(),tmp.begin(),::tolower); + +if(str_dist(tmp,"cylinders_list")<=2){ +stringpath; +in>>path; +cylinders_files.push_back(path); +num_obstacles++; +} +if(str_dist(tmp,"oriented_cylinders_list")<=2){ +stringpath; +in>>path; +cylinders_files.push_back(path); +num_obstacles++; +} +if(str_dist(tmp,"ply")<=1){ +stringpath; +in>>path; +PLY_files.push_back(path); +PLY_percolation.push_back(0); +num_obstacles++; +} +if(str_dist(tmp,"ply_scale")<=1){ +doublescale_; +in>>scale_; +PLY_scales.push_back(scale_); +} +if(str_dist(tmp,"ply_file_list")<=2){ +stringpath; +in>>path; +readPLYFileList(path); +num_obstacles++; +} +if(str_dist(tmp,"ply_file_list_scale_permeability")<=3){ +stringpath; +in>>path; +readPLYFileListScalePercolation(path); +num_obstacles++; +} +if(str_dist(tmp,"<cylinder_hex_packing>")<=1){ +readHexagonalParams(in); +num_obstacles++; +} +if(str_dist(tmp,"<cylinder_gamma_packing>")<=1){ +readGammaParams(in); +num_obstacles++; +} +} + +if(num_obstacles==0){ +SimErrno::warning("<obstacle>taginitialized,butnovalidobstacletagfound",cout); +} + +} + +voidParameters::readVoxels(ifstream&in) +{ +stringtmp=""; +doublex,y,z; + +in>>x>>y>>z; +min_limits={x,y,z}; +in>>x>>y>>z; +max_limits={x,y,z}; + +pair<Eigen::Vector3d,Eigen::Vector3d>voxel_(min_limits,max_limits); +voxels_list.push_back(voxel_); + +in>>tmp; +} + +intParameters::str_dist(strings,stringt) +{ +ulonglen_s=s.length(); +ulonglen_t=t.length(); + +/*basecase:emptystrings*/ +if(len_s==0)returnint(len_t); +if(len_t==0)returnint(len_s); + +if(len_s==1&&len_t==1) +returns[0]!=t[0]; + +Eigen::MatrixXdcostos(len_s,len_t); + +for(unsignedi=0;i<s.size();i++){ +for(unsignedj=0;j<t.size();j++){ +costos(i,j)=0; +costos(0,j)=j; +} +costos(i,0)=i; +} + +intcost; + +for(unsignedi=1;i<s.size();i++){ +for(unsignedj=1;j<t.size();j++){ +/*testiflastcharactersofthestringsmatch*/ +if(s[i]==t[j]) +cost=0; +else +cost=1; + +/*returnminimumofdeletecharfroms,deletecharfromt,anddeletecharfromboth*/ +costos(i,j)=min(min(costos(i-1,j)+1, +costos(i,j-1)+1), +costos(i-1,j-1)+cost); +} +} + +returncostos(s.length()-1,t.length()-1); +} + +voidParameters::readInfoGatheringParams(ifstream&in) +{ +stringtmp=""; +while(str_dist(tmp,"</log>")) +{ +in>>tmp; +std::transform(tmp.begin(),tmp.end(),tmp.begin(),::tolower); + +if(str_dist(tmp,"<positions>")<=3) +{ +in>>tmp; +std::transform(tmp.begin(),tmp.end(),tmp.begin(),::tolower); + +while(str_dist(tmp,"</positions>")) +{ +if(tmp.compare("t")==0){ +record_pos_times.push_back(num_steps); +} +else{ +unsignedlongtime=stoul(tmp); +record_pos_times.push_back(unsigned(time)); +} + +in>>tmp; +std::transform(tmp.begin(),tmp.end(),tmp.begin(),::tolower); +} +} +elseif(str_dist(tmp,"<phase>")<=2) +{ +in>>tmp; +std::transform(tmp.begin(),tmp.end(),tmp.begin(),::tolower); + +while(str_dist(tmp,"</phase>")) +{ +if(tmp.compare("t")==0){ +record_phase_times.push_back(num_steps); +} +else{ +unsignedtime=unsigned(stoul(tmp)); +record_phase_times.push_back(time); +} +in>>tmp; +std::transform(tmp.begin(),tmp.end(),tmp.begin(),::tolower); +} +} +elseif(str_dist(tmp,"<propagator>")<=2){ +in>>tmp; +std::transform(tmp.begin(),tmp.end(),tmp.begin(),::tolower); + +while(str_dist(tmp,"</propagator>")) +{ +if(str_dist(tmp,"directions")<2){ +std::stringdir_path; +in>>dir_path; +readPropagatorDirections(dir_path); +//Readdirections +} +elseif(tmp.compare("t")==0){ +this->record_prop_times.push_back(num_steps); +} +else{ +unsignedtime=unsigned(stoul(tmp)); +this->record_prop_times.push_back(time); +} +in>>tmp; +std::transform(tmp.begin(),tmp.end(),tmp.begin(),::tolower); + +sort(this->record_prop_times.begin(),this->record_prop_times.end()); + +this->record_prop_times.erase(unique(this->record_prop_times.begin(),this->record_prop_times.end()),this->record_prop_times.end()); +} +this->log_propagator=true; +} +} +} + +voidParameters::readHexagonalParams(ifstream&in) +{ +hex_packing=true; + +stringtmp=""; + +while(str_dist(tmp,"</cylinder_hex_packing>")) +{ +in>>tmp; +std::transform(tmp.begin(),tmp.end(),tmp.begin(),::tolower); + +if(str_dist(tmp,"radius")<=1){ +in>>hex_packing_radius; +} +if(str_dist(tmp,"separation")<=1){ +in>>hex_packing_separation; +} +} +} + +voidParameters::readGammaParams(ifstream&in) +{ + +gamma_packing=true; + +stringtmp=""; + +while(str_dist(tmp,"</cylinder_gamma_packing>")>0) +{ +in>>tmp; +std::transform(tmp.begin(),tmp.end(),tmp.begin(),::tolower); +if(str_dist(tmp,"output_conf")<=1){ +stringtst; + +in>>tst; +in>>gamma_output_conf; +} +elseif(str_dist(tmp,"alpha")<=1orstr_dist(tmp,"shape")<=1){ +in>>gamma_packing_alpha; +} +elseif(str_dist(tmp,"beta")<=1orstr_dist(tmp,"scale")<=1){ +in>>gamma_packing_beta; +} +elseif(str_dist(tmp,"num_cylinders")<=1){ +in>>gamma_num_cylinders; +} +elseif(str_dist(tmp,"icvf")<=1){ +in>>gamma_icvf; +} +elseif(str_dist(tmp,"min_radius")<=1){ +in>>min_cyl_radii; +} +elseif(str_dist(tmp,"")==0){ +in.clear(); +//in.ignore(); +} +elseif(str_dist(tmp,"</cylinder_gamma_packing>")==0){ +break; +} + +tmp=""; +} +} + +voidParameters::readSubdivisionFile() +{ +ifstreamin(subdivisions_file); + +Subdivisiontmp; + +while(in>>tmp.min_limits[0]){ +in>>tmp.min_limits[1]; +in>>tmp.min_limits[2]; +in>>tmp.max_limits[0]; +in>>tmp.max_limits[1]; +in>>tmp.max_limits[2]; +subdivisions.push_back(tmp); +} +} + + +voidParameters::addSubdivisions() +{ + +if((number_subdivisions>0)&&(voxels_list.size()<=0)){ +SimErrno::error("subdivisions_numberparameterpassedwithoutadefinedvoxel.",cout); +assert(0); +} +floatgap[3]; +for(uinti=0;i<3;i++){ +gap[i]=float(this->voxels_list[0].second[i]-this->voxels_list[0].first[i])/float(number_subdivisions); +} + +for(uintx_ind=0;x_ind<number_subdivisions;x_ind++){ +for(uinty_ind=0;y_ind<number_subdivisions;y_ind++){ +for(uintz_ind=0;z_ind<number_subdivisions;z_ind++){ + +Subdivisiontmp; + +//x +tmp.min_limits[0]=float(voxels_list[0].first[0]+x_ind*gap[0]); +//y +tmp.min_limits[1]=float(voxels_list[0].first[1]+y_ind*gap[1]); +//z +tmp.min_limits[2]=float(voxels_list[0].first[2]+z_ind*gap[2]); + +//x +tmp.max_limits[0]=tmp.min_limits[0]+gap[0]; +//y +tmp.max_limits[1]=tmp.min_limits[1]+gap[1]; +//z +tmp.max_limits[2]=tmp.min_limits[2]+gap[2]; + +subdivisions.push_back(tmp); + +//cout<<''<<tmp.min_limits[0]<<''<<tmp.min_limits[1]<<''<<tmp.min_limits[2]<<endl; +//cout<<''<<tmp.max_limits[0]<<''<<tmp.max_limits[1]<<''<<tmp.max_limits[2]<<endl; +} +} +} + +} + +voidParameters::readPropagatorDirections(stringdir_path) +{ +ifstreamin(dir_path); + +if(in.fail()){ + +cout<<"WHY!!!"<<endl; +//Filedoesnotexistcodehere +} + +Eigen::Vector3fdirection; + + +while(in>>direction[0]){ +in>>direction[1]; +in>>direction[2]; + +if(direction.norm()>0) +this->prop_dirs.push_back(direction.normalized()); +} + +in.close(); +} + +voidParameters::readPLYFileList(stringpath){ + +ifstreamin(path); + +if(in.fail()){ +SimErrno::error("PLYfilelistnotfoundin:",cout); +cout<<path<<endl; +assert(0); +} + +floatscale; +in>>scale; + +if(scale<=0.0){ +SimErrno::error("PLYscalemustbeapositivenumber",cout); +assert(0); +} + +if(scale>=1e6||scale<=1e-6){ +SimErrno::warning("PLYmaybeunsuitableforsimulation.",cout); +assert(0); +} + +stringply_file; +while(in>>ply_file){ +PLY_files.push_back(ply_file); +PLY_scales.push_back(scale); +PLY_percolation.push_back(0.0); +} +in.close(); +} + +voidParameters::readPLYFileListScalePercolation(stringpath) +{ +ifstreamin(path); + +if(in.fail()){ +SimErrno::error("PLYfilelistnotfoundin:",cout); +cout<<path<<endl; +assert(0); +} + +floatscale,percolation; +stringply_file; +while(in>>ply_file){ +in>>scale; +in>>percolation; +PLY_files.push_back(ply_file); +PLY_scales.push_back(scale); +PLY_percolation.push_back(percolation); +} +in.close(); +} + + + + diff --git a/doc/xml/parameters_8h.xml b/doc/xml/parameters_8h.xml new file mode 100644 index 0000000..f516bbf --- /dev/null +++ b/doc/xml/parameters_8h.xml @@ -0,0 +1,272 @@ + + + + parameters.h + vector + Eigen/Core + subdivision.h + utility + src/simerrno.h + src/trajectory.h + src/dynamicsSimulation.h + src/sentinel.h + src/parameters.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Parameters + + + + + + +#ifndefPARAMETERS_H +#definePARAMETERS_H + +#include<vector> +#include"Eigen/Core" +#include"subdivision.h" +#include<utility> + + +classParameters +{ +public: + +unsignednum_walkers; +unsignednum_steps; +doublediffusivity; +doublesim_duration; +boolwrite_traj; +boolwrite_txt; +boolwrite_bin; +boolscale_from_stu; +boolsave_phase_shift; +longseed; +boolverbatim; +std::stringtraj_file; +std::stringoutput_base_name; +std::stringini_walkers_file; +unsignedini_walkers_file_count; +std::stringini_walker_flag; +std::stringscheme_file; +Eigen::Vector3dmin_limits; +Eigen::Vector3dmax_limits; +std::vector<std::string>cylinders_files; +std::vector<std::string>PLY_files; +std::vector<double>PLY_scales; +std::vector<double>PLY_percolation; +std::vector<float>ini_delta_pos; +unsignednum_proc; +std::vector<std::pair<Eigen::Vector3d,Eigen::Vector3d>>voxels_list; +std::vector<Eigen::Vector3f>prop_dirs; +std::vector<unsigned>record_pos_times; +std::vector<unsigned>record_phase_times; +std::vector<unsigned>record_prop_times; +boolhex_packing; +doublehex_packing_radius; +doublehex_packing_separation; +boolgamma_packing; +boolgamma_output_conf; +doublegamma_packing_alpha; +doublegamma_packing_beta; +doublegamma_icvf; +doublegamma_output_configuration; +unsignedgamma_num_cylinders; +floatmin_cyl_radii; +boolsubdivision_flag=false; +unsignednumber_subdivisions=0; +std::stringsubdivisions_file=""; +std::vector<Subdivision>subdivisions; +doubleobstacle_permeability=0; +doublecollision_sphere_distance=0; +doublemax_simulation_time=0; +boollog_phase_shift=false; +boollog_opp=false; +booldiscard_stucks=true; +booldiscard_illegals=true; +boollog_propagator=false; +Eigen::Vector3dmin_sampling_area; +Eigen::Vector3dmax_sampling_area; +boolcustom_sampling_area; +boolcomputeVolume; +boolseparate_signals; +boolimg_signal; +Parameters(); + +voidreadSchemeFile(std::stringconf_file); + +//SetMethods: + +voidsetNumWalkers(unsignedN); + +voidsetNumSteps(unsignedT); + +voidsetDiffusivity(doubleDiff); + +voidsetSimDuration(doubleduration); + +voidsetWriteTrajFlag(boolwrite_bin); + +voidsetWriteTextFlag(boolwrite_txt_); + +voidsetMinLimits(Eigen::Vector3dmin_limits_); + +voidsetMaxLimits(Eigen::Vector3dmax_limits_); + +voidsetTrajFileName(std::stringtraj_file_); + +voidsetOutputBaseFileName(std::stringoutput_base_name_); + +voidiniWalkersFileName(std::stringini_walkers_file_); + +voidsetSchemeFileName(std::stringscheme_file_); + +//GetMethods + +unsignedgetNumWalkers(); + +unsignedgetNumSteps(); + +doublegetDiffusivity(); + +boolgetWriteTrajFlag(); + +boolgetWriteTextFlag(); + +Eigen::Vector3dgetMinLimits(); + +Eigen::Vector3dgetMaxLimits(); + +std::stringgetTrajFileName(); + +std::stringgetOutputBaseFileName(); + +std::stringgetIniWalkersFileName(); + +std::stringgetSchemeFileName(); + +staticintstr_dist(std::strings,std::stringt); + +voidaddSubdivisions(); + +private: + +voidreadObstacles(std::ifstream&in); + +voidreadVoxels(std::ifstream&in); + +voidreadInfoGatheringParams(std::ifstream&in); + +voidreadHexagonalParams(std::ifstream&in); + +voidreadGammaParams(std::ifstream&in); + +voidreadSubdivisionFile(); + + +voidreadPropagatorDirections(std::stringdir_path); + +voidreadPLYFileList(std::stringpath); + +voidreadPLYFileListScalePercolation(std::stringpath); + + +}; + +#endif//PARAMETERS_H + + + + diff --git a/doc/xml/pgsesequence_8cpp.xml b/doc/xml/pgsesequence_8cpp.xml new file mode 100644 index 0000000..182a675 --- /dev/null +++ b/doc/xml/pgsesequence_8cpp.xml @@ -0,0 +1,794 @@ + + + + pgsesequence.cpp + pgsesequence.h + constants.h + Eigen/Dense + math.h + algorithm + fstream + iostream + iomanip + stdlib.h + time.h + assert.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"pgsesequence.h" +#include"constants.h" +#include"Eigen/Dense" +#include<math.h> +#include<algorithm> +#include<fstream> +#include<iostream> +#include<iomanip> +#include<stdlib.h> +#include<time.h>/*time_t,structtm,difftime,time,mktime*/ +#include<assert.h> + +usingnamespacestd; + +PGSESequence::PGSESequence() +{ +num_rep=0; +dynamic=false; +save_phase_shift=true; +percent_steps_in=-1; +T=0; +separate_signal=false; +} + + +PGSESequence::PGSESequence(Schemescheme_) +{ +num_rep=0; +dynamic=false; +save_phase_shift=true; +percent_steps_in=-1; +readSchemeParameters(scheme_); +phase_shift_distribution.resize(num_rep,3600); +phase_shift_distribution=Eigen::ArrayXXf::Zero(num_rep,3600); +} + +PGSESequence::PGSESequence(Schemescheme_,constchar*traj_file_name) +{ +num_rep=0; +dynamic=false; +save_phase_shift=true; +percent_steps_in=-1; +readSchemeParameters(scheme_); +trajectory.setTrajFile(traj_file_name); +T=int(trajectory.T); +dyn_duration=trajectory.dyn_duration; +phase_shift_distribution.resize(scheme_.num_rep,3600); +phase_shift_distribution=Eigen::ArrayXXf::Zero(num_rep,3600); +} + +PGSESequence::PGSESequence(constchar*scheme_file_name) +{ +dynamic=false; +save_phase_shift=true; +percent_steps_in=-1; +scheme_file=scheme_file_name; +readSchemeFile(); +dyn_duration=scheme[0][6]; +phase_shift_distribution.resize(num_rep,3600); +phase_shift_distribution=Eigen::ArrayXXf::Zero(num_rep,3600); +T=10;//dummynumber +} + +PGSESequence::PGSESequence(constchar*scheme_file_name,constchar*traj_file_name) +{ +num_rep=0; +dynamic=false; +save_phase_shift=true; +percent_steps_in=-1; +scheme_file=scheme_file_name; +readSchemeFile(); +trajectory.setTrajFile(traj_file_name); +T=int(trajectory.T); +dyn_duration=trajectory.dyn_duration; +phase_shift_distribution.resize(num_rep,3600); +phase_shift_distribution=Eigen::ArrayXXf::Zero(num_rep,3600); +} + +PGSESequence::~PGSESequence() +{ +} + +voidPGSESequence::getGradImpulse(intgrad_index,doublet,doubletLast,Eigen::Vector3d&Gdt){ + +for(inti=0;i<3;i++) +Gdt[i]=0; + +doubleg[3]={scheme[grad_index][0],scheme[grad_index][1],scheme[grad_index][2]}; +doubleG=scheme[grad_index][3]; +doubleDelta=scheme[grad_index][4]; +doubledelta=scheme[grad_index][5]; +doublete=scheme[grad_index][6]; + +//printf("%.25f-%.25f-%.25f-%.25f-%.25f-%.25f-%.25f-\n",g[0],g[1],g[2],G,Delta,delta,te); +//cout<<""<<g[0]<<""<<g[1]<<""<<g[2]<<""<<G<<""<<Delta<<""<<delta<<""<<te<<endl; + +if(!(t>=0.0&&t<=te)){ +return; +} + +//printf("%d-%.25f-%.25f\n",grad_index,t,tLast); + +doublepad=(te-Delta-delta)/2.0; +if((t<pad)||(t>te-pad)){ +return; +} + +doublefirstBlockStart=pad; +doublefirstBlockEnd=pad+delta; +//betweenpadandfirstblock +doublesgn=1; +if(t>=firstBlockStart&&t<firstBlockEnd){ +if(tLast<firstBlockStart){ +doubledt=t-firstBlockStart; +for(intj=0;j<3;j++){ +Gdt[j]=sgn*G*dt*g[j]; +} +return; +} +} + +doublesecondBlockStart=pad+Delta; +doublesecondBlockEnd=pad+Delta+delta; + +//betweenthe2blocks +sgn=1; +if(t>=firstBlockEnd&&t<secondBlockStart){ +if(tLast<firstBlockEnd){ +doubledt=firstBlockEnd-tLast; +for(intj=0;j<3;j++){ +Gdt[j]=sgn*G*dt*g[j]; +} +return; +} +return; +} + +//segundobloque +if(t>=secondBlockStart){ +sgn=-1; +} + +//ifaftersecondblock +if(t>=secondBlockEnd){ +if(tLast<secondBlockEnd){ +//theblockendedbetweenthiscallandthelastone +//soneedtocalculatethepartialcontribution +doubledt=secondBlockEnd-tLast; +for(intj=0;j<3;j++){ +Gdt[j]=sgn*G*dt*g[j]; +} +return; +} +return; +} + +if((t>=secondBlockStart)&&(tLast<secondBlockStart)){ +//theblockendedbetweenthiscallandthelastone +//soneedtocalculatethepartialcontribution +doubledt=t-secondBlockStart; + +for(intj=0;j<3;j++){ +Gdt[j]=sgn*G*dt*g[j]; +} +return; +} +for(intj=0;j<3;j++){ +Gdt[j]=sgn*G*(t-tLast)*g[j]; +} +} + + +voidPGSESequence::readSchemeParameters(Schemescheme_){ + +scheme_file=scheme_.scheme_file; +dyn_duration=scheme_.scheme[0][6]; + +num_rep=scheme_.scheme.size(); + +for(unsignedi=0;i<num_rep;i++){ +DWI.push_back(0); +DWIi.push_back(0); + +phase_shift.push_back(0); +scheme.push_back(scheme_.scheme[i]); +} +} + +voidPGSESequence::readSchemeFile() +{ +ifstreamin(scheme_file.c_str()); + +//TODO:Errorhandling +if(!in.is_open()){ +cout<<"[ERROR]Can'topentheschemefile"<<endl; +in.close(); +return; +} + +vector<double>scheme_line; +doubletmp; +stringheader; +in>>header; +in>>header; +num_rep=0; +while(in>>tmp){ +scheme_line.push_back(tmp); +DWI.push_back(0); + +if(this->img_signal==true) +DWIi.push_back(0); + +if(separate_signal){ +DWI_extra.push_back(0); +DWI_intra.push_back(0); +} + +num_rep++; +for(inti=0;i<6;i++){ +in>>tmp; +scheme_line.push_back(tmp); +} +scheme.push_back(scheme_line); +scheme_line.clear(); +} + +in.close(); +} + +voidPGSESequence::update_phase_shift(doubledt,doubledt_last,Walkerwalker) +{ +Eigen::Vector3dxt; +Eigen::Vector3dGdt; +//Displacement +xt[0]=walker.pos_r[0]-walker.ini_pos[0]; +xt[1]=walker.pos_r[1]-walker.ini_pos[1]; +xt[2]=walker.pos_r[2]-walker.ini_pos[2]; + +doubledos_pi=2.0*M_PI; + +for(ints=0;s<num_rep;s++){ +getGradImpulse(s,dt,dt_last,Gdt); +doubleval=giro*(Gdt[0]*xt[0]+Gdt[1]*xt[1]+Gdt[2]*xt[2]); +val=fmod(val,dos_pi); +phase_shift[s]=fmod(phase_shift[s]+val,dos_pi); +} +} + +voidPGSESequence::update_phase_shift(doubletime_step,Eigen::Matrix3Xdtrajectory) +{ +Eigen::Vector3dxt; +Eigen::Vector3dGdt; +doubledt,dt_last; + +for(uintt=1;t<this->T;t++){//TODO:checarsideberiaser<=T +//Displacement +xt[0]=trajectory(0,t)-trajectory(0,0); +xt[1]=trajectory(1,t)-trajectory(1,0); +xt[2]=trajectory(2,t)-trajectory(2,0); + +doubledos_pi=2.0*M_PI; + +if(this->dynamic){ +dt_last=this->time_steps[t-1]; +dt=this->time_steps[t]; +} +else{ +dt_last=time_step*(t-1); +dt=time_step*(t); +} + +for(ints=0;s<num_rep;s++){ + +getGradImpulse(s,dt,dt_last,Gdt); +doubleval=giro*(Gdt[0]*xt[0]+Gdt[1]*xt[1]+Gdt[2]*xt[2]); +val=fmod(val,dos_pi); +phase_shift[s]=fmod(phase_shift[s]+val,dos_pi); +} +} +} + +voidPGSESequence::update_DWI_signal(Walker&walker) +{ +for(uints=0;s<uint(num_rep);s++){ + +doublecos_phase_shift=cos(phase_shift[s]); +doublesin_phase_shift=sin(phase_shift[s]); + +DWI[s]+=cos_phase_shift;//Realpart + +if(this->img_signal==true) +DWIi[s]+=sin_phase_shift;//Imgpart + +if(this->separate_signal){ + +if(walker.location==Walker::RelativeLocation::intra){ +DWI_intra[s]+=cos_phase_shift; +} +elseif(walker.location==Walker::RelativeLocation::extra){ +DWI_extra[s]+=cos_phase_shift; +} +else{ +cout<<walker.location<<endl; +} +} + +if(save_phase_shift){ +//Indexbetween0and3600,thisgiveusahistogramwith3600bins +unsignedindex=(phase_shift[s])>0?uint(phase_shift[s]*1800.0/M_PI):uint(-phase_shift[s]*1800.0/M_PI); +phase_shift_distribution(s,index)+=1; +} + +if(subdivision_flag){ +for(uinti=0;i<subdivisions.size();i++){ + +if(subdivisions[i].isInside(walker.pos_v)){ +sub_DWI[i][s]+=cos_phase_shift;//Realpart + +if(this->img_signal) +sub_DWIi[i][s]+=sin_phase_shift;//Imgpart + +if(separate_signal){ +if(walker.location==Walker::RelativeLocation::intra){ +sub_DWI_intra[i][s]+=cos_phase_shift; +} +elseif(walker.location==Walker::RelativeLocation::extra){ +sub_DWI_extra[i][s]+=cos_phase_shift; +} +} + +break;//WARNINGthisbreakmeansthatthesubdivisionaremutallyexclusive +} +} +} +phase_shift[s]=0; +}//s + + +//Theforbellowisoutsidesoit'snotcomputedforeachadquisition. +if(subdivision_flag){ +for(uinti=0;i<subdivisions.size();i++){ +if(subdivisions[i].isInside(walker.pos_v)){ + +subdivisions[i].density++; + +if(walker.intra_extra_consensus<0){ +subdivisions[i].density_intra++; +} +elseif(walker.intra_extra_consensus>0){ +subdivisions[i].density_extra++; +} +break;//WARNINGthisbreakmeansthatthesubdivisionaremutallyexclusive +} +} +} +} + + +voidPGSESequence::setNumberOfSteps(unsignedT) +{ +this->T=T; +} + +voidPGSESequence::computeDynamicTimeSteps() +{ +doubleDelta=scheme[0][4]; +doubledelta=scheme[0][5]; +doubleTE=scheme[0][6]; +doublepad=(TE-Delta-delta)/2.0; + +unsignedsteps_in=percent_steps_in*T; + +//wewantthemtobeeven +if(steps_in%2) +steps_in++; + +delta=delta+delta*delta/20; + +intsteps_pad=(2.0*pad)/(2.0*pad+Delta-delta)*(T-steps_in); + +//wewantthemtobeeven +if(steps_pad%2) +steps_pad++; + +intsteps_out=T-steps_in-steps_pad; + +if(steps_in<=0||steps_out<=0||T<=0||steps_pad<=0||percent_steps_in<=0){ +cout<<"[Error]Incoherentnumberofstepsinsidethegradientpulse!"<<endl; +assert(0); +} + +time_steps.resize(T+1,1); + +doubledt_pad=(2*pad)/double(steps_pad); + +doubledt_out=(Delta-delta)/double(steps_out); + +doubledt_in=(2.0*delta)/double(steps_in); + +ulongcount=0.0; +doubletime=0.0; + + +for(inti=0;i<steps_pad/2.0;i++){ +time_steps[count++]=time; +time+=dt_pad; +} + + +for(inti=0;i<steps_in/2.0;i++){ +time_steps[count++]=time; +time+=dt_in; +} + + +for(inti=0;i<steps_out;i++){ +time_steps[count++]=time; +time+=dt_out; +} + +for(inti=0;i<steps_in/2.0;i++){ +time_steps[count++]=time; +time+=dt_in; +} + +for(inti=0;i<=steps_pad/2.0;i++){ +time_steps[count++]=time; +time+=dt_pad; +} + + +if(count!=T+1){ +cout<<"WARNING!Twasnotfullilledcorrectlyinthedynamicsetting!"<<endl; +} + +//for(inti=0;i<T+1;i++) +//cout<<time_steps[i]<<endl; + +} + + +doublePGSESequence::getbValue(unsignedi) +{ +doubleG=scheme[i][3]; +doubleDelta=scheme[i][4]; +doubledelta=scheme[i][5]; + +return(G*delta*giro)*(G*delta*giro)*(Delta-delta/3); +} + +doublePGSESequence::getFreeDecay(unsignedi,doubleD){ +doubleb=getbValue(i); + +returnexp(-b*D); +} + + +doublePGSESequence::getNumericalbValue(unsignedi) +{ +return-i; +} + +voidPGSESequence::getDWISignal() +{ + +trajectory.initTrajReaderFile(); + +trajectory.readTrajectoryHeader(); + +doubleN=trajectory.N; +doubleT=trajectory.T; +doubleduration=trajectory.dyn_duration; +doublert=duration/T; +doubledos_pi=2.0*M_PI; +doubledt,dt_last,xt[3]; + +Eigen::Matrix3Xdsteps_log;//completetrajectoryofonewalker + +Eigen::Vector3dGdt; +Eigen::VectorXdphase_shift; + +steps_log.resize(3,unsigned(T+1)); +phase_shift.resize(num_rep); + +for(intw=0;w<N;w++) +{ +trajectory.readCurrentWalkersTrajectory(steps_log); +for(uintt=1;t<=uint(T);t++) +{ +dt=rt*(t); +dt_last=rt*(t-1.0); + +xt[0]=steps_log(0,t)-steps_log(0,0); +xt[1]=steps_log(1,t)-steps_log(1,0); +xt[2]=steps_log(2,t)-steps_log(2,0); + +for(ints=0;s<num_rep;s++) +{ +getGradImpulse(s,dt,dt_last,Gdt); +doubleval=giro*(Gdt[0]*xt[0]+Gdt[1]*xt[1]+Gdt[2]*xt[2]); + +val=fmod(val,2*M_PI); +//printf("%d-%1.25f\n",w,val); +phase_shift[s]=fmod(phase_shift[s]+val,dos_pi); +} +} + +for(uints=0;s<num_rep;s++){ +DWI[s]+=cos(phase_shift[s]);//Realpart + +if(this->img_signal==true) +DWIi[s]+=sin(phase_shift[s]);//Imgpart + +phase_shift[s]=0; +} +} + +}//ENDgetDWISignal + +doublePGSESequence::get_adt(intgrad_index,doublet,doubletLast){ + +doubleDelta=scheme[grad_index][4]; +doubledelta=scheme[grad_index][5]; +doublete=scheme[grad_index][6]; + +//printf("%.25f-%.25f-%.25f-%.25f-%.25f-%.25f-%.25f-\n",g[0],g[1],g[2],G,Delta,delta,te); +//cout<<""<<g[0]<<""<<g[1]<<""<<g[2]<<""<<G<<""<<Delta<<""<<delta<<""<<te<<endl; + +if(!(t>=0.0&&t<=te)){ +return-INFINITY_VALUE; +} + +//printf("%d-%.25f-%.25f\n",grad_index,t,tLast); + +doublepad=(te-Delta-delta)/2.0; +if((t<pad)||(t>te-pad)){ +return0; +} + +doublefirstBlockStart=pad; +doublefirstBlockEnd=pad+delta; +//betweenpadandfirstblock +doublesgn=1; +if(t>=firstBlockStart&&t<firstBlockEnd){ +if(tLast<firstBlockStart){ +doubledt=t-firstBlockStart; + +returnsgn*dt; +} +} + +doublesecondBlockStart=pad+Delta; +doublesecondBlockEnd=pad+Delta+delta; + +//betweenthe2blocks +sgn=1; +if(t>=firstBlockEnd&&t<secondBlockStart){ +if(tLast<firstBlockEnd){ +doubledt=firstBlockEnd-tLast; +returnsgn*dt; +} +return0; +} + +//segundobloque +if(t>=secondBlockStart){ +sgn=-1; +} + +//ifaftersecondblock +if(t>=secondBlockEnd){ +if(tLast<secondBlockEnd){ +//theblackendedbetweenthiscallandthelastone +//soneedtocalculatethepartialcontribution +doubledt=secondBlockEnd-tLast; + +returnsgn*dt; +} +return0; +} + +if((t>=secondBlockStart)&&(tLast<secondBlockStart)){ +//theblockendedbetweenthiscallandthelastone +//soneedtocalculatethepartialcontribution +doubledt=t-secondBlockStart; + +returnsgn*dt;; +} + +returnsgn*(t-tLast); +} + + + + diff --git a/doc/xml/pgsesequence_8h.xml b/doc/xml/pgsesequence_8h.xml new file mode 100644 index 0000000..6ea4e5f --- /dev/null +++ b/doc/xml/pgsesequence_8h.xml @@ -0,0 +1,242 @@ + + + + pgsesequence.h + vector + iostream + trajectory.h + Eigen/Core + simulablesequence.h + scheme.h + src/gradientwaveform.h + src/main.cpp + src/mcsimulation.cpp + src/pgsesequence.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PGSESequence + + + unsigned long + typedef unsigned long ulong + + ulong + +PGSE Sequence Class =============================================================/. + +Derived Class. Implementation of the PGSE protocolMay 2016 +Jonathan Rafael 0.1.0 + + + + + + + + + + + + + +#ifndefPGSESEQUENCE_H +#definePGSESEQUENCE_H + +#include<vector> +#include<iostream> +#include"trajectory.h" +#include<Eigen/Core> +#include"simulablesequence.h" +#include"scheme.h" +typedefunsignedlongulong; + + +classPGSESequence:publicSimulableSequence{ +public: + +doubleTE; +intT; +doubledyn_duration; +std::vector<std::vector<double>>scheme; +Trajectorytrajectory; +//constructors + +PGSESequence(); +PGSESequence(Schemescheme_); +PGSESequence(Schemescheme_,constchar*traj_file_name); +PGSESequence(constchar*scheme_file_name); +PGSESequence(constchar*scheme_file_name,constchar*traj_file_name); + +~PGSESequence(); + +voidgetGradImpulse(inti,doublet,doubletLast,Eigen::Vector3d&Gdt); + + +voidgetGradImpuse(inti,doublet,Eigen::Vector3dGdt); + +doublegetbValue(unsigned); + +doublegetFreeDecay(unsignedi,doubleD); + + +//TODO:toimplement +doublegetNumericalbValue(unsigned); + +voidgetDWISignal(); + +voidreadSchemeFile(); + +virtualvoidupdate_phase_shift(doubledt,doubledt_last,Walkerwalker); + +virtualvoidupdate_phase_shift(doubletime_step,Eigen::Matrix3Xdtrajectory); + +virtualvoidupdate_DWI_signal(Walker&walker); + +doubleget_adt(intgrad_index,doublet,doubletLast); + +doubleprint_adt_and_dt(intgrad_index,doublet,doubletLast); + +virtualvoidsetNumberOfSteps(unsignedT); + +virtualvoidcomputeDynamicTimeSteps(); + +private: +virtualvoidreadSchemeParameters(Schemescheme_); + + + +}; +#endif//PGSESEQUENCE_H + + + + diff --git a/doc/xml/plyobstacle_8cpp.xml b/doc/xml/plyobstacle_8cpp.xml new file mode 100644 index 0000000..514f6cd --- /dev/null +++ b/doc/xml/plyobstacle_8cpp.xml @@ -0,0 +1,504 @@ + + + + plyobstacle.cpp + plyobstacle.h + fstream + iostream + constants.h + Eigen/Dense + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"plyobstacle.h" +#include<fstream> +#include<iostream> +#include"constants.h" +#include"Eigen/Dense" + +usingnamespacestd; + +PLYObstacle::PLYObstacle() +{ +file_path=""; +vert_number=0; +face_number=0; +vertices=NULL; +faces=NULL; +scale_factor=1; +percolation=0; +count_perc_crossings=0; +} + +PLYObstacle::PLYObstacle(stringpath,doublescale_factor_) +{ +file_path=""; +vert_number=0; +face_number=0; +vertices=NULL; +faces=NULL; +scale_factor=scale_factor_; +percolation=0; +count_perc_crossings=0; +readPLY_ASCII_triangles(path); +} + +PLYObstacle::PLYObstacle(stringpath,std::vector<Eigen::Vector3d>&centers,doublemax_distance,doublescale_factor_) +{ +file_path=""; +vert_number=0; +face_number=0; +vertices=NULL; +faces=NULL; +scale_factor=scale_factor_; +percolation=0; +count_perc_crossings=0; +readPLY_ASCII_trianglesSubdivitionDistance(path,centers,max_distance); +} + + +voidPLYObstacle::readPLY_ASCII_triangles(std::stringply_file) +{ +if(vertices!=NULL) +delete[]vertices; +if(faces!=NULL) +delete[]faces; + +std::ifstreamin(ply_file.c_str(),std::ifstream::in); + +if(!in){ +std::cout<<"Erroropeningfile"<<ply_file<<std::endl; +assert(1); +return; +} + +std::stringtmp=""; +while(tmp.compare("end_header")){ +in>>tmp; + +if(!tmp.compare("vertex")){ +in>>vert_number; +} +if(!tmp.compare("face")){ +in>>face_number; +} +} + +vertices=newVertex[vert_number]; +faces=newTriangle[face_number]; + +for(unsignedi=0;i<vert_number;i++){ +in>>vertices[i].points[0]; +in>>vertices[i].points[1]; +in>>vertices[i].points[2]; + +//cout<<vertices[i].points[0]<<""<<vertices[i].points[1]<<""<<vertices[i].points[2]<<""<<endl; +} + + +for(unsignedi=0;i<vert_number;i++){ +vertices[i].points[0]*=scale_factor; +vertices[i].points[1]*=scale_factor; +vertices[i].points[2]*=scale_factor; +} +intnum; +for(unsignedi=0;i<face_number;++i){ +in>>num; +//in>>faces[i].index; +in>>faces[i].indexes[0]; +in>>faces[i].indexes[1]; +in>>faces[i].indexes[2]; +faces[i].vertices=vertices; +faces[i].saveNormalAndAuxInfo(); +//cout<<faces[i].indexes[0]<<""<<faces[i].indexes[1]<<""<<faces[i].indexes[2]<<endl; +} + +} + +voidPLYObstacle::readPLY_ASCII_trianglesSubdivitionDistance(stringply_file,vector<Eigen::Vector3d>&centers,doublemax_distance) +{ + +if(vertices!=NULL) +delete[]vertices; +if(faces!=NULL) +delete[]faces; + +std::ifstreamin(ply_file.c_str(),std::ifstream::in); + +if(!in){ +std::cout<<"Erroropeningfile"<<ply_file<<std::endl; +assert(0); +return; +} + +std::stringtmp=""; +while(tmp.compare("end_header")){ +in>>tmp; + +if(!tmp.compare("vertex")){ +in>>vert_number; +} +if(!tmp.compare("face")){ +in>>face_number; +} +} + +vertices=newVertex[vert_number]; +faces=newTriangle[face_number]; + +for(unsignedi=0;i<vert_number;i++){ +in>>vertices[i].points[0]; +in>>vertices[i].points[1]; +in>>vertices[i].points[2]; + +//cout<<vertices[i].points[0]<<""<<vertices[i].points[1]<<""<<vertices[i].points[2]<<""<<endl; +} + + +for(unsignedi=0;i<vert_number;i++){ +vertices[i].points[0]*=scale_factor; +vertices[i].points[1]*=scale_factor; +vertices[i].points[2]*=scale_factor; +} + +intin_index=0; +doubledistance; +intnum; +for(unsignedi=0;i<face_number;++i){ +in>>num; +//in>>faces[i].index; +in>>faces[in_index].indexes[0]; +in>>faces[in_index].indexes[1]; +in>>faces[in_index].indexes[2]; +faces[in_index].vertices=vertices; +faces[in_index].saveNormalAndAuxInfo(); + +if(centers.size()>0){ +for(autoc:centers){ +//autoc=centers[j]; +distance=faces[in_index].minDistance(c); + +if(distance<max_distance){ +in_index++; +break; +} +} +} +else{ +in_index++; +} + +//cout<<faces[i].indexes[0]<<""<<faces[i].indexes[1]<<""<<faces[i].indexes[2]<<endl; +} + +cout<<"before"<<face_number<<endl; +face_number=in_index; +cout<<"after"<<face_number<<endl; + +} + + +boolPLYObstacle::checkCollision(Walker&walker,Eigen::Vector3d&step,double&step_lenght,Collision&colision) +{ +Collisioncolision_temp; +colision.type=Collision::null; +colision.t=INFINITY_VALUE; + +//OriginO +Eigen::Vector3dray_origin,end_point; + +walker.getVoxelPosition(ray_origin); + +//Tokeeptrackoftheclosestcollision +doublemax_collision_distance=step_lenght; + +//Enpositionincaseofnocollision. +end_point=ray_origin+max_collision_distance*step; + +//Foreachtriangleonthemeshmodel +for(unsignedi=0;i<face_number;i++){ +faces[i].stepIntersects_MT(walker,step,max_collision_distance,colision_temp); +handleCollisions(colision,colision_temp,max_collision_distance,end_point,i); +} + +updateWalkerStatusAndHandleBouncing(walker,ray_origin,step,colision); + +if(colision.type==Collision::null){ +returnfalse; +} + +returntrue; + +} + +boolPLYObstacle::checkCollision(Walker&walker,Eigen::Vector3d&step,double&step_lenght,Collision&colision,std::vector<unsigned>&triangle_list,unsignedlist_end) +{ +Collisioncolision_temp; +colision.type=Collision::null; +colision.t=INFINITY_VALUE; + +//OriginO +Eigen::Vector3dray_origin,end_point; + +walker.getVoxelPosition(ray_origin); + +//Tokeeptrackoftheclosestcollision +doublemax_collision_distance=step_lenght; + +//Enpositionincaseofnocollision. +end_point=ray_origin+max_collision_distance*step; + +//Foreachtriangleonthemeshmodel +for(unsignedi=0;i<list_end;i++){ +unsignedtriangle_index=triangle_list[i]; +faces[triangle_index].stepIntersects_MT(walker,step,max_collision_distance,colision_temp); +handleCollisions(colision,colision_temp,max_collision_distance,end_point,triangle_index); +} + +updateWalkerStatusAndHandleBouncing(walker,ray_origin,step,colision); + +if(colision.type==Collision::null){ +returnfalse; +} + +returntrue; +} + +voidPLYObstacle::handleCollisions(Collision&colision_confirmed,Collision&colision_2,double&max_distance,Eigen::Vector3d&end_point,constunsignedtriangle_indx) +{ + +//nothingtodo; +if(colision_2.type==Collision::null) +return; + +//WARNING:Cuidarestepatch +//ImplementaPercolacion +if(percolation>0.0){ +double_percolation_((double)rand()/RAND_MAX); + +if(percolation-_percolation_>EPS_VAL){ +count_perc_crossings++; +return; +} +} + +colision_2.triangle_ind=triangle_indx; + +if(colision_confirmed.type==Collision::hit||colision_confirmed.type==Collision::boundary){ +if(colision_2.doIHaveMorePiorityThan(colision_confirmed)){ +colision_confirmed=colision_2; +colision_confirmed.triangle_ind=triangle_indx; +} +return; +} + +if(colision_confirmed.type==Collision::near){ +if(colision_2.type==Collision::hit||colision_2.type==Collision::boundary){ +colision_confirmed=colision_2; +//max_distance=colision_2.t; +colision_confirmed.triangle_ind=triangle_indx; +} +return; +} + +//ifwegetheremeansthatcolision_confirmed.type='null' +if(colision_2.type==Collision::near){ + +checkIfItsNearToTriangle(end_point,triangle_indx,colision_2); + +//ifwewerenearindeed +if(colision_2.type!=Collision::null){ +colision_confirmed=colision_2; +colision_confirmed.triangle_ind=triangle_indx; +} +return; +} + +colision_confirmed=colision_2; +} + +voidPLYObstacle::checkIfItsNearToTriangle(constEigen::Vector3dend_point,constunsignedtriangle_ind,Collision&colision) +{ +doubleEPS=2e-10; +doubleu,v,t; +boolhit=faces[triangle_ind].rayIntersects_MT(end_point,faces[triangle_ind].normal,u,v,t); + +if(hit&&fabs(t)<=EPS){ +colision.t=fabs(t); +colision.u=u; +colision.v=v; +colision.triangle_ind=triangle_ind; +} +else{ +colision.type=Collision::null; +} +} + +boolPLYObstacle::updateWalkerStatusAndHandleBouncing(Walker&walker,Eigen::Vector3d&ray_origin,Eigen::Vector3d&step,Collision&colision) +{ +if(colision.type==Collision::null){ +return0; +} + +//Iftheparticlebounced +boolbounced=false; + +//wesetthestatusofthewalker(on_triangle,on_vertex,etc) +colision.computeCollisionLocation(); + +//Ifwasahitandneedtobounce; +if(colision.type==Collision::hit){ +bounced=true; +if(colision.col_location==Collision::on_edge||colision.col_location==Collision::on_vertex){ +colision.bounced_direction=-step; +//WARNING:REMOVETHIS +//cout<<"Edge"<<endl; +} +else{ +Eigen::Vector3dnormal; +faces[colision.triangle_ind].getNormal(normal); + +Eigen::Vector3dtemp_step=step; +elasticBounceAgainsPlane(ray_origin,normal,colision.t,temp_step); + +colision.bounced_direction=temp_step.normalized(); + +//Orientationrespectthetriangle +doubledot=((walker.pos_v-faces[colision.triangle_ind].center).normalized()).dot(normal); + +colision.col_location=(dot<-1e-5)?Collision::inside:(dot>1e-5)?Collision::outside:Collision::unknown; +} +} +elseif(colision.type==Collision::near){ +bounced=false; +} + +returnbounced; +} + +doublePLYObstacle::minDistance(Walker&w,unsignedt) +{ +returnfaces[t].minDistance(w.pos_v); +} + + + + + + + diff --git a/doc/xml/plyobstacle_8h.xml b/doc/xml/plyobstacle_8h.xml new file mode 100644 index 0000000..5bed24a --- /dev/null +++ b/doc/xml/plyobstacle_8h.xml @@ -0,0 +1,167 @@ + + + + plyobstacle.h + obstacle.h + triangle.h + src/dynamicsSimulation.h + src/plyobstacle.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + PLYObstacle + + + + + + +#ifndefPLYOBSTACLE_H +#definePLYOBSTACLE_H + +#include"obstacle.h" +#include"triangle.h" + +classPLYObstacle:publicObstacle +{ +public: + +unsignedvert_number; +unsignedface_number; +std::stringfile_path; +Vertex*vertices; +Triangle*faces; +doublescale_factor; +intid; + +PLYObstacle(); +PLYObstacle(std::stringpath,doublescale_factor_=1); +PLYObstacle(std::stringpath,std::vector<Eigen::Vector3d>&centers,doublemax_distance=INFINITY,doublescale_factor_=1); + + +voidreadPLY_ASCII_triangleFan(std::stringply_file); +voidreadPLY_ASCII_triangles(std::stringply_file); +voidreadPLY_ASCII_trianglesSubdivitionDistance(std::stringply_file,std::vector<Eigen::Vector3d>&centers,doublemax_distance); + +voidsetScaleFactor(doublescale){scale_factor=scale;} + +//boolcomputeStepCollition(Walker&w,doublestep[3],constdouble&step_length,doubleend_point[3],Collision&colision); +boolcheckCollision(Walker&walker,Eigen::Vector3d&step,double&step_lenght,Collision&colision); + +boolcheckCollision(Walker&walker,Eigen::Vector3d&step,double&step_lenght,Collision&colision,std::vector<unsigned>&triangle_list,unsignedlist_end); + +doubleminDistance(Walker&w,unsignedt); + +private: +//Compare2coliisionanddecideswichonehasthehighestpiorityandif +//colision_2neesstobehandleddifferently +voidhandleCollisions(Collision&colision_confirmed,Collision&colision_2,double&max_distance,Eigen::Vector3d&end_point,constunsignedtriangle_indx); + +//Functiontocheckifapointisclosetoaacertaintriangle.savetheresultinaCollisionobject +voidcheckIfItsNearToTriangle(constEigen::Vector3dend_point,constunsignedtriangle_ind,Collision&colision); + +//Giventhecollision,handlesthenextwalkerstatusandthebouncing,ifneeded. +boolupdateWalkerStatusAndHandleBouncing(Walker&walker,Eigen::Vector3d&ray_origin,Eigen::Vector3d&step,Collision&colision); + +}; + +#endif//PLYOBSTACLE_H + + + + diff --git a/doc/xml/propagator_8cpp.xml b/doc/xml/propagator_8cpp.xml new file mode 100644 index 0000000..a206de4 --- /dev/null +++ b/doc/xml/propagator_8cpp.xml @@ -0,0 +1,72 @@ + + + + propagator.cpp + propagator.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"propagator.h" + +Propagator::Propagator() +{ + + +} + +voidPropagator::initPropagator() +{ +for(uinti=0;i<num_times;i++){ +std::vector<float>jkr(this->num_dirs,0.0); +propagator_log.push_back(jkr); +} +} + + + + diff --git a/doc/xml/propagator_8h.xml b/doc/xml/propagator_8h.xml new file mode 100644 index 0000000..a24246e --- /dev/null +++ b/doc/xml/propagator_8h.xml @@ -0,0 +1,107 @@ + + + + propagator.h + constants.h + Eigen/Core + vector + src/dynamicsSimulation.h + src/propagator.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Propagator + + + + + +#ifndefPROPAGATOR_H +#definePROPAGATOR_H + +#include"constants.h" +#include"Eigen/Core" +#include<vector> + + +classPropagator +{ +public: + +uintnum_dirs=0; +uintnum_times=0; +Eigen::Matrix3Xfdirections; + +std::vector<unsigned>log_times; + +std::vector<std::vector<float>>propagator_log; + +Propagator(); + +voidinitPropagator(); + +}; + +#endif//PROPAGATOR_H + + + + diff --git a/doc/xml/scheme_8cpp.xml b/doc/xml/scheme_8cpp.xml new file mode 100644 index 0000000..107dbaa --- /dev/null +++ b/doc/xml/scheme_8cpp.xml @@ -0,0 +1,201 @@ + + + + scheme.cpp + scheme.h + fstream + iostream + assert.h + constants.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"scheme.h" +#include<fstream> +#include<iostream> +#include<assert.h> +#include"constants.h" +usingnamespacestd; + +Scheme::Scheme() +{ +} + +Scheme::Scheme(std::stringscheme_file_) +{ +scheme_file=scheme_file_; +readSchemeFile(scheme_file); +} + +voidScheme::readSchemeFile(stringscheme_file_,boolscale_from_stu) +{ +ifstreamin(scheme_file_.c_str()); + +if(!in.is_open()){ +std::cout<<"Errorloadingthefile"<<std::endl; +in.close(); +return; +} + +this->scheme_file=scheme_file_; + +stringheader_; +in>>header; +in>>header_; +header.append(header_); + +std::size_tfound=header.find("STEJSKALTANNER"); +std::size_tfound_APGSE=header.find("APGSE"); +std::size_tfound_waveForm=header.find("WAVEFORM"); + +if(found!=std::string::npos){ +type="PGSE"; +} +elseif(found_APGSE!=std::string::npos){ +type="APGSE"; +} +elseif(found_waveForm!=std::string::npos){ +type="WAVEFORM"; +} +else{ +cout<<"Sequencetypenotvalid\n\nAborting"<<endl; +type="Unknown"; +assert(true); +} + +if(type=="PGSE"){ +readPGSE(in,scale_from_stu); +} +elseif(type=="APGSE"){ +readAPGSE(in,scale_from_stu); +} +elseif(type=="WAVEFORM"){ +readWaveForm(in,scale_from_stu); +} + +//cout<<"[Satus]Schemefilesuccessfullyloaded"<<endl; +} + +voidScheme::readPGSE(ifstream&in,boolscale_from_stu) +{ +vector<double>scheme_line; +doubletmp; + +num_rep=0; +while(in>>tmp){ +scheme_line.push_back(tmp); +num_rep++; +for(inti=0;i<6;i++){ +in>>tmp; +scheme_line.push_back(tmp); +} +scheme.push_back(scheme_line); +scheme_line.clear(); +} + +if(scale_from_stu) +for(unsignedi=0;i<scheme.size();i++){ +scheme[i][3]/=m_to_mm;//G(T/m)to(T/mm) +scheme[i][4]*=s_to_ms;//Delta(s)to(ms) +scheme[i][5]*=s_to_ms;//delta(s)to(ms) +scheme[i][6]*=s_to_ms;//TE(s)to(ms) +} + +in.close(); +} + +voidScheme::readAPGSE(ifstream&in,boolscale_from_stu) +{ +vector<double>scheme_line; +doubletmp; + +num_rep=0; +while(in>>tmp){ +scheme_line.push_back(tmp); +num_rep++; +for(inti=0;i<8;i++){ +in>>tmp; +scheme_line.push_back(tmp); +} +scheme.push_back(scheme_line); +scheme_line.clear(); +} + +if(scale_from_stu) +for(unsignedi=0;i<scheme.size();i++){ +scheme[i][3]/=m_to_mm;//G1(T/m)to(T/mm) +scheme[i][4]/=m_to_mm;//G2(T/m)to(T/mm) +scheme[i][5]*=s_to_ms;//Delta(s)to(ms) +scheme[i][6]*=s_to_ms;//delta1(s)to(ms) +scheme[i][7]*=s_to_ms;//delta2(s)to(ms) +scheme[i][8]*=s_to_ms;//TE(s)to(ms) +} +in.close(); +} + +voidScheme::readWaveForm(ifstream&in,boolscale_from_stu) +{ +this->scale_from_stu=scale_from_stu; +in.close(); +} + + + + diff --git a/doc/xml/scheme_8h.xml b/doc/xml/scheme_8h.xml new file mode 100644 index 0000000..39a6a8e --- /dev/null +++ b/doc/xml/scheme_8h.xml @@ -0,0 +1,99 @@ + + + + scheme.h + vector + string + src/pgsesequence.h + src/mcsimulation.h + src/scheme.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Scheme + + + + + + +#ifndefSCHEME_H +#defineSCHEME_H +#include<vector> +#include<string> + +classScheme +{ +public: +std::stringscheme_file; +std::stringheader; +std::stringtype; +intnum_rep; +floatduration; +floatT; +boolscale_from_stu; +std::vector<std::vector<double>>scheme; +Scheme(); + +Scheme(std::stringscheme_file_); + +~Scheme(){} + +voidreadSchemeFile(std::stringscheme_file_,boolscale_from_stu=0); + + +private: +voidreadPGSE(std::ifstream&in,boolscale_from_stu); +voidreadAPGSE(std::ifstream&in,boolscale_from_stu); +voidreadWaveForm(std::ifstream&in,boolscale_from_stu); + +}; + +#endif//SCHEME_H + + + + diff --git a/doc/xml/sentinel_8cpp.xml b/doc/xml/sentinel_8cpp.xml new file mode 100644 index 0000000..924a4d6 --- /dev/null +++ b/doc/xml/sentinel_8cpp.xml @@ -0,0 +1,227 @@ + + + + sentinel.cpp + sentinel.h + constants.h + iostream + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"sentinel.h" +#include"constants.h" +#include<iostream> +usingnamespacesentinels; + +usingnamespacestd; + +Sentinel::Sentinel() +{ +error=none; + +bouncings=0; + +obstacle_id=0; + +stuck_count=0; + +rejected_count=0; + +illegal_count=0; + +deport_illegals=true;//Trumpmodeon. +discard_stucks=true; + +rejected_step=false; +} + +voidSentinel::clear(){ +error=none; + +bouncings=0; + +obstacle_id=0; +} + +voidSentinel::setBouncingError(unsignedbouncings){ +error=stuck; + +this->bouncings=bouncings; +} + +voidSentinel::setCrossingError(unsignedid){ +error=crossed; +this->obstacle_id=id; +} +voidSentinel::setRejectedError(){ +error=rejected; +} + + +boolSentinel::checkErrors(Walker&walker,constParameters&params,boolnoPLY,unsigned&bouncing_count) +{ + +//Ifitwasrejectedtomanytimeswehavetotakeoutthewalker. +if(walker.rejection_count>max_rejections){ +setBouncingError(walker.steps_count); +stuck_count++; +throw(this->error); +} + +//Handle"stucked"walkers +if((bouncing_count>max_number_bouncings)&&discard_stucks){ +setBouncingError(walker.steps_count); +stuck_count++; +throw(this->error); +} + +if((walker.location!=Walker::unknown)&&(params.obstacle_permeability<=0.0)&&deport_illegals==true){ +if(walker.initial_location!=walker.location){ +setCrossingError(uint(walker.in_obj_index)); +illegal_count++; +throw(this->error); +} +} + +if(this->rejected_step==true){ +rejected_step=false; +setRejectedError(); +rejected_count++; +throw(this->error); +} +returnfalse; +} + +voidSentinel::deportationProcess(Walker&walker,unsigned&w,unsigned&t,bool&back_tracking,Parameters&params,intid) +{ +if(this->error==Sentinel::ErrorCases::stuck){ +//Iftheparticlegotstuckinacornerorbaddefinedarea. +if(params.verbatim) +cout<<endl<<SH_FG_GRAY<<"[INFO]"<<SH_DEFAULT<<"Sim:"<<id<<""<< +"Walker"<<w<<"labeledas'stuck'after"<<this->bouncings<< +"bouncings.\nBacktraking...\nDone"<<endl; +//w--; +back_tracking=true; +} + +if(this->error==Sentinel::ErrorCases::crossed){ +//Iftheparticlecrossesandobjectbecausenumericalproblems +if(params.verbatim) +cout<<endl<<SH_FG_GRAY<<"[INFO]"<<SH_DEFAULT<<"Sim:"<<id<<""<< +"Walker"<<w<<"labeledas'illegal'aftercrossingobstacleid:"<<this->obstacle_id<< +"\nBacktraking...\nDone"<<endl; +//w--; +back_tracking=true; +} + +if(this->error==Sentinel::ErrorCases::rejected){ +t--; + +if(t>1){ +walker.pos_r=Eigen::Vector3d(walker.pos_r_log(0,t),walker.pos_r_log(1,t),walker.pos_r_log(2,t)); +walker.last_pos_r=Eigen::Vector3d(walker.pos_r_log(0,t-1),walker.pos_r_log(1,t-1),walker.pos_r_log(2,t-1)); + +walker.pos_v=Eigen::Vector3d(walker.pos_v_log(0,t),walker.pos_v_log(1,t),walker.pos_v_log(2,t)); +walker.last_pos_v=Eigen::Vector3d(walker.pos_v_log(0,t-1),walker.pos_v_log(1,t-1),walker.pos_v_log(2,t-1)); +} +walker.rejection_count++; +} +} + + + + diff --git a/doc/xml/sentinel_8h.xml b/doc/xml/sentinel_8h.xml new file mode 100644 index 0000000..6e8eaf2 --- /dev/null +++ b/doc/xml/sentinel_8h.xml @@ -0,0 +1,150 @@ + + + + sentinel.h + walker.h + parameters.h + src/dynamicsSimulation.h + src/sentinel.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + sentinels::Sentinel + sentinels + + + + + + +#ifndefSENTINEL_H +#defineSENTINEL_H +#include"walker.h" +#include"parameters.h" + +namespacesentinels{; + +classSentinel +{ +public: + +unsignedstuck_count; +unsignedillegal_count; + +enumErrorCases{none,stuck,crossed,rejected,rejected_initial_pos}; + +unsignedbouncings; +unsignedobstacle_id; +unsignedrejected_count; +boolrejected_step; +booldeport_illegals; +booldiscard_stucks; + +ErrorCaseserror; + +Sentinel(); + +voidclear(); + +voidsetBouncingError(unsignedbouncings); + +voidsetCrossingError(unsigned); + +voidsetRejectedError(); + +boolcheckErrors(Walker&w,constParameters&params,boolnoPLY,unsigned&bouncing_count); + +voiddeportationProcess(Walker&walker,unsigned&w,unsigned&t,bool&back_tracking,Parameters&params,intid); + +}; + +} +#endif//SENTINEL_H + + + + diff --git a/doc/xml/simerrno_8cpp.xml b/doc/xml/simerrno_8cpp.xml new file mode 100644 index 0000000..09d3093 --- /dev/null +++ b/doc/xml/simerrno_8cpp.xml @@ -0,0 +1,1266 @@ + + + + simerrno.cpp + simerrno.h + iostream + constants.h + thread + sstream + string + queue + iomanip + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + typename Out + + + void + void split__ + (const std::string &s, char delim, Out result) + split__ + + const std::string & + s + + + char + delim + + + Out + result + + + + + + + + + + + std::vector< std::string > + std::vector<std::string> split_ + (const std::string &s, char delim) + split_ + + const std::string & + s + + + char + delim + + + + + + + + + + + + + + + +#include"simerrno.h" +#include"iostream" +#include"constants.h" +#include<thread> +#include<iostream> +#include<sstream> +#include<string> +#include<queue> +#include<iomanip> +usingnamespacestd; + +SimErrno::SimErrno() +{ + +} + +boolSimErrno::checkSimulationParameters(Parameters&params) +{ +cout<<"\033[1;35m/***************MC/DCSimulationparameterscheckout:***************/"<<SH_DEFAULT<<"\n"; + +if(params.num_walkers>1e9){ +error("Maximumnumberofparticlesisfixedto1e9.",cout); +assert(0); +returntrue; +} + +if(params.num_walkers<1){ +error("Minimumnumberofparticlesisfixedto1.",cout); +assert(0); +returntrue; +} + +if(params.num_steps>1e7){ +error("Maximumnumberofstepsisfixedto1e7.",cout); +assert(0); +returntrue; +} + +if(params.num_steps<1){ +error("Minimumnumberofstepsisfixedto1.",cout); +assert(0); +returntrue; +} + +if(params.sim_duration>200.0&&params.scale_from_stu==1){ +warning("Simulationdurationmightbeunsuitable.",cout); +} + +if(params.sim_duration>1&&params.scale_from_stu==0){ +warning("Simulationdurationmightbeunsuitable.",cout); +} + +if(params.sim_duration<=0.0){ +error("Simulationdurationwronglyinitialized.",cout); +assert(0); +returntrue; +} + +if(params.diffusivity<=0.0){ +error("Paticlediffusivitywronglyinitialized.",cout); +assert(0); +returntrue; +} + +if(params.num_proc==0){ +warning("Numberofprocessorsissetbydefult(1).",cout); +params.num_proc=1; +} + +unsignedintnthreads=std::thread::hardware_concurrency(); +if(params.num_proc>nthreads){ +warning("Thenumberofprocessorstobeused("+to_string(params.num_proc)+")ishigherthanthephysicalavailableprocessors("+to_string(nthreads)+").",cout); +} + +if(params.scheme_file.size()>1){ +assert(checkSchemeFile(params)); +} + +if(params.PLY_files.size()>0){ +info("CheckingPLYformat...",cout); +//assert(checkPLYFiles(params)); +info("Done...",cout); +} + +if(params.cylinders_files.size()>0){ +info("CheckingCylinderlistformat...",cout); +checkCylindersListFile(params); +info("Done...",cout); +} + +if(params.ini_walkers_file.size()>2){ +info("Checkingwalkerinitialpositionlistformat...",cout); +checkInitWalkerFile(params); +info("Done...",cout); +} + +if(params.voxels_list.size()>1){ +checkVoxelLimits(params); +} + +if(params.hex_packing==true){ +if(params.hex_packing_radius<=0){ +error("Cylinderradiusincoherent:"+to_string(params.hex_packing_radius),cout); +assert(0); +returntrue; +} + +if(params.hex_packing_separation-2.0*params.hex_packing_radius<0.0){ +error("Cylinderseparationcan'tbelessthattwicetheradius(orepsilonclose):"+to_string(params.hex_packing_separation),cout); +assert(0); +returntrue; +} + +if(params.hex_packing_separation-2.0*params.hex_packing_radius<=1e-6){ +warning("Cylinderseparationistooclose(barriercollision):"+to_string(params.hex_packing_separation),cout); +} + +} + +if(params.gamma_packing){ +checkGammaDistributionParamaters(params); +} + +if(params.subdivision_flag){ +if(params.subdivisions.size()>1000){ +warning("Hugenumberofsudivisionvoxels.AconsiderableamountofRAMwillbeneededfortheouputcomputation.",cout); +} + +if(params.number_subdivisions>100){ +error("Unrealisticnumberofresultingsubdivisionvoxels:"+std::to_string(params.number_subdivisions)+"^3",cout); +assert(0); +returntrue; +} + +if((params.number_subdivisions>0)&&(params.voxels_list.size()<=0)&&params.gamma_packing==false){ +error("subdivisions_numberparameterpassedwithoutadefinedvoxel.",cout); +assert(0); +returntrue; +} + +if(params.subdivisions_file.size()>2) +checkSubdivisionsFile(params); +} + +checkOuputPrefixAndWriteInfo(params); + +if(params.obstacle_permeability<0.0||params.obstacle_permeability>1){ +error("Permeabilitycoefficientmustbesetintherange[0,1].",cout); +assert(0); +returntrue; +} + +if(!(params.write_bin||params.write_txt)){ +error("Nooutputwillbewritten;write_binandwrite_txtflagsaredeactivated.",cout); +assert(0); +returntrue; + +} + +if(params.custom_sampling_area){ + +for(autoj=0;j<3;j++){ +for(unsignedi=0;i<params.voxels_list.size();i++) +if((params.voxels_list[i].first[j]-params.min_sampling_area[j])>1e-8||(params.max_sampling_area[j]-params.voxels_list[i].second[j])>1e-8) +{ +SimErrno::error("Customsamplingareacannotbeoutsidethedefinedvoxel\n",cout); +assert(0); +} + +if(params.max_sampling_area[j]-params.min_sampling_area[j]<=0){ +SimErrno::error("Customsamplingareawronglydefined(badlimits)\n",cout); +assert(0); +} +} +} + +if(params.computeVolume&&params.voxels_list.size()<=0&&params.gamma_packing==falseandparams.hex_packing==false){ +warning("Flag:'compute_volume'ignored,novoxel.",cout); +} + +returnfalse; +} + +boolSimErrno::checkSchemeFile(Parameters&params) +{ +info("CheckingSequenceSchemefileformat...",cout); + +ifstreamin(params.scheme_file.c_str()); + +if(!in.is_open()){ +error("Schemefilecannotbeopen:"+params.scheme_file,cout); +in.close(); +returnfalse; +} + +stringheader; +in>>header; +in>>header; + +std::size_tfound=header.find("STEJSKALTANNER"); +std::size_tfound_APGSE=header.find("APGSE"); +std::size_tfound_waveForm=header.find("WAVEFORM"); +if(found!=std::string::npos){ +vector<double>sample_vector; + +unsignedcounter=0; +doubletmp=0; +while(in>>tmp){ +if(counter<7) +sample_vector.push_back(tmp); +counter++; +} + +if(params.scale_from_stu==1){ +if(sample_vector[6]>1.0||sample_vector[3]>1.0){ +warning("Schemefilemightnotbeinstandardunits(meters,seconds,Tesla).UnitsWarning.",cout); +} +} +else{ +if(sample_vector[6]<1.0||sample_vector[3]<1.0){ +warning("Schemefilemightbeinstandardunits(meters,seconds,Tesla).UnitsWarning.",cout); +} +} + +if(counter%7!=0){ +error("Schemefilehasinconsistentformat.PGSEFormatERROR.",cout); +assert(0); +} +} +elseif(found_APGSE!=std::string::npos){ +vector<double>sample_vector; + +unsignedcounter=0; +doubletmp=0; +while(in>>tmp){ +if(counter<9) +sample_vector.push_back(tmp); +counter++; +} + +if(params.scale_from_stu==1){ +if(sample_vector[8]>1.0||sample_vector[3]>1.0){ +warning("Schemefilemightnotbeinstandardunits(meters,seconds,Tesla).UnitsWarning.",cout); +} + +} +else{ +if(sample_vector[8]<1.0||sample_vector[3]<1.0){ +warning("Schemefilemightbeinstandardunits(meters,seconds,Tesla).UnitsWarning.",cout); +} +} + +if(counter%9!=0){ +error("Schemefilehasinconsistentformat.APGSEFormatERROR.",cout); +assert(0); +} + +} +elseif(found_waveForm!=std::string::npos){ + +floatwave_duration,wave_bins,num_rep; + +in>>wave_duration; +in>>wave_bins; +floatholder; +in>>holder; +num_rep=uint(holder); + +if(params.scale_from_stu==1){ +if(wave_duration>1){ +warning("Schemefilemightnotbeinstandardunits(meters,seconds,Tesla).UnitsWarning.",cout); +} +} +else{ +if(wave_duration<=1){ +warning("Schemefilemightbeinstandardunits(meters,seconds,Tesla).UnitsWarning.",cout); +} +} + +if(params.scale_from_stu==1) +wave_duration*=s_to_ms; + +if(params.sim_duration>double(wave_duration)+EPS_VAL){ +warning("Gradientwaveformisshorterthanthedynamicduration.TheWaveformwillbefilledwith0's.",cout); +} +elseif(params.sim_duration<double(wave_duration)-EPS_VAL){ +warning("GradientwaveformTEislargerthanthedynamicduration.",cout); +} + +unsignedcounter=0; +doubletmp=0; +while(in>>tmp){ +counter++; +} + +if(counter!=uint(wave_bins*num_rep*3)){ +error("WaveformSchemefilehasinconsistentsize.WAVEFORMFormatERROR.",cout); +assert(0); +} +} +else{ +error("Schemefileversionerror.ValidHeaderwasnotfound.Checkdocumentation.",cout); +returnfalse; +} + +info("Done...",cout); +returntrue; +} + +boolSimErrno::checkPLYFiles(Parameters&params) +{ + +booldegenerated=false; +unsignedintdegenerated_triangles=0; +for(unsignedi=0;i<params.PLY_files.size();i++) +{ +std::ifstreamin(params.PLY_files[i].c_str(),std::ifstream::in); + +if(!in){ +error("PLYfilecannotbeopened:",cout); +in.close(); +returnfalse; +} + +std::stringfirst_word; +in>>first_word; +if(first_word.compare("ply")){ +error("InputfileisnotaPLYmeshmodel:Missing\"ply\"header",cout); +in.close(); +returnfalse; +} + +unsignedvert_number=0,face_number=0; +std::stringtmp=""; + +while(tmp.compare("end_header")){ +in>>tmp; +//cout<<tmp<<endl; + +if(!tmp.compare("vertex")){ +in>>vert_number; +} +if(!tmp.compare("face")){ +in>>face_number; +} + +if(!tmp.compare("nx")){ +in.close(); +error("PLYfileshouldnotcontainfacenormals,orvertexcolors.PLYformaterror:",cout); +in.close(); +returnfalse; +} +} + + +Eigen::Matrix3Xfvertices(3,vert_number); + +//Weloadalltheverticesinastrucutreofsize(3,num_of_vertices) +for(unsignedv=0;v<vert_number;v++){ +vector<float>tmp_v={0,0,0}; +in>>tmp_v[0]; +in>>tmp_v[1]; +in>>tmp_v[2]; +vertices(0,v)=tmp_v[0]; +vertices(1,v)=tmp_v[1]; +vertices(2,v)=tmp_v[2]; +} + +doublenum; +//foreachface(indexf)wecheckthedistancebetweenthe3edges +for(unsignedf=0;f<face_number;f++) +{ +in>>num; +//ifsomethingisnotatrianglethenwethrowanerror +if(num!=3.0){ +in.close(); +error("PLYmeshshouldbecompletelytriangulated.PLYformaterror:",cout); +in.close(); +returnfalse; +} + +//checksifthetrianglesare"degenerated" +unsignedtmp_e[3];//theindexesofitsvertices(3numbers) +floattmp_t[3][3];//(theactualcoordinates(triangle)) +in>>tmp_e[0]; +in>>tmp_e[1]; +in>>tmp_e[2]; +for(intii=0;ii<3;ii++) +for(intjj=0;jj<3;jj++) +tmp_t[ii][jj]=vertices(jj,tmp_e[ii]); + +floatedge_lengths[3]={0,0,0}; +for(intii=0;ii<3;ii++){ +unsignedvertex_a=ii; +unsignedvertex_b=(ii+1)%3; + +for(unsignedjj=0;jj<3;jj++) +edge_lengths[ii]+=(tmp_t[vertex_a][jj]-tmp_t[vertex_b][jj])*(tmp_t[vertex_a][jj]-tmp_t[vertex_b][jj]); +} + +for(intii=0;ii<3;ii++) +for(unsignedjj=ii;jj<3;jj++) +if(edge_lengths[jj]>0) +if(edge_lengths[ii]/edge_lengths[jj]>1000oredge_lengths[ii]/edge_lengths[jj]<1e-3){ +degenerated=true; +degenerated_triangles++; +} + +} +in.close(); +} + +if(degenerated){ +warning("PLYcontains("+std::to_string(degenerated_triangles)+")highlyirregulartriangles.Possiblenumericalerrorsandoptimizationfailuresmayoccur.",cout); + +} + + +if(params.PLY_files.size()>params.PLY_scales.size()){ +warning("PLYscaleisnotsetforallfiles.Scalewillbesetasdefault(1e-3).SubstratescaleWarning.",cout); + +while(params.PLY_files.size()>params.PLY_scales.size()) +params.PLY_scales.push_back(1.0e-3); + +} + +returntrue; +} + + +//*Auxiliaremethodtosplitwordsinalineusingthespaces*// +template<typenameOut> +voidsplit__(conststd::string&s,chardelim,Outresult){ +std::stringstreamss; +ss.str(s); +std::stringitem; +while(std::getline(ss,item,delim)){ +*(result++)=item; +} +} + + +std::vector<std::string>split_(conststd::string&s,chardelim){ +std::vector<std::string>elems; +split__(s,delim,std::back_inserter(elems)); +returnelems; +} + + +boolSimErrno::checkCylindersListFile(Parameters&params) +{ +for(unsignedi=0;i<params.cylinders_files.size();i++){ +boolz_flag=false; +ifstreamin(params.cylinders_files[i]); + +if(!in){ +error("Cylinderlistfilecannotbeopen.",cout); +assert(0); +in.close(); +returntrue; +} + +boolfirst=true; +for(std::stringline;getline(in,line);) +{ +if(first){ +std::vector<std::string>jkr=split_(line,''); +if(jkr.size()!=1){ +error("Firstlinemustbeonlytheoverallscalefactor:",cout); +in.close(); +assert(0); +returntrue; +} +first-=1;continue; +} + +std::vector<std::string>jkr=split_(line,''); + +if(jkr.size()!=7&&jkr.size()!=4){ +error("Cylinderlistfileisnotinthecorrectformat.",cout); +in.close(); +assert(0); +returntrue; +} + +if(jkr.size()!=7){ +z_flag=true; +warning("Nocylindersorientationinlcluded.CylinderorientationwassettowardstheZdirectionbydefaultforallcylinders.",cout); +} +break; +} +in.close(); + +in.open(params.cylinders_files[i]); + +if(!z_flag){ +doublex,y,z,ox,oy,oz,r; +doublescale; +in>>scale; +while(in>>x>>y>>z>>ox>>oy>>oz>>r) +{ +if((x-ox)==0.0&&(z-oz)==0.0&&(y-oy)==0.0){ +error("Cylinderlisthaswronglydefinedcylinders.Invalidorientation:",cout); +in.close(); +assert(0); +returntrue; +} +} +in.close(); +} +} + +returntrue; +} + +boolSimErrno::checkInitWalkerFile(Parameters&params) +{ + +boolwarning_=false; + +ifstreamin(params.ini_walkers_file); + +if(!in){ +error("Walkersinitialpositionsfilecannotbeopen.",cout); +in.close(); +assert(0); +returntrue; +} + +//checkifallparticlesareinsidethevoxel. +unsignedlongcount=0; +doubletemp; +intlimit_index=0; +while(in>>temp){ +count++; +if(params.voxels_list.size()>0){ +if(temp<=params.voxels_list[0].first[limit_index]||temp>=params.voxels_list[0].second[limit_index]){ +error("Atleastonewalkerinitialpositionisnotinsidethedefinedvoxel."+to_string(temp),cout); +assert(0); +} +} +limit_index=(limit_index<2)?limit_index+1:0; +} + +params.ini_walkers_file_count=uint(count/3.0); + +if((count/3.0)<1.0){ +error("Noinitialpositionsfoundinthewalkerspositionsfile.",cout); +assert(0); +returntrue; +} + +if(count%3!=0){ +error("Listofinitialpositionshouldincludex,y,zpositionforallwalkers,checkpositionsformat:",cout); +assert(0); +returntrue; +} + +if(count/3.0<=params.num_walkers){ +warning("Positionsfilehaslesspositionsthaninitializedwalkers.Positionswillberepeated.",cout); +warning_=true; +} + + +in.close(); + +returnwarning_; + +} + +boolSimErrno::checkVoxelLimits(Parameters&params) +{ +if(params.voxels_list.size()>1){ +error("Onlysinglevoxelsimulationsaresupported.",cout); +assert(0); +returntrue; +} + +returnfalse; + +} + +boolSimErrno::checkConfigurationFile(constchar*configuration_file) +{ +stringscheme_=configuration_file; +std::stringscheme_filename=scheme_.substr(scheme_.find_last_of("/\\")+1); +cout<<SH_FG_PURPLE<<'/'<<setfill('*')<<setw(49)<<""+scheme_filename+""<<setw(30)<<"/\n"SH_DEFAULT; + +info("Checkingconfigurationfilelabels...",cout); + +intcount_tag_obstacle=0,count_tag_voxels=0,count_tag_log=0,count_tag_delta=0; +intcount_tag_phase=0,count_tag_positions=0,count_hexa_obstacle_tag=0; +intcount_tag_sampling_area=0; + + +ifstreamin(configuration_file); + +if(!in){ +error("Cannotopentheconfigurationfile:"+string(configuration_file),cout); +assert(0); +returntrue; +} + + +stringtmp=""; +boolended=false; + +boolvoxel_defined=false; +boolfixed_configuration=false; + +while(in>>tmp){ + +std::transform(tmp.begin(),tmp.end(),tmp.begin(),::tolower); + +if(Parameters::str_dist(tmp,"<voxels>")<=0){ +count_tag_voxels++; +voxel_defined=true; +} +elseif(Parameters::str_dist(tmp,"</voxels>")<=0){ +count_tag_voxels--; +} +elseif(Parameters::str_dist(tmp,"<delta>")<=0){ +count_tag_delta++; +} +elseif(Parameters::str_dist(tmp,"</delta>")<=0){ +count_tag_delta--; +} +elseif(Parameters::str_dist(tmp,"<obstacle>")<=0){ +count_tag_obstacle++; +} +elseif(Parameters::str_dist(tmp,"</obstacle>")<=0){ +count_tag_obstacle--; +} +elseif(Parameters::str_dist(tmp,"<log>")<=0){ +count_tag_log++; +} +elseif(Parameters::str_dist(tmp,"<cylinder_hex_packing>")<=0){ +count_hexa_obstacle_tag++; +fixed_configuration=true; +} +elseif(Parameters::str_dist(tmp,"</log>")<=0){ +count_tag_log--; +} +elseif(Parameters::str_dist(tmp,"<positions>")<=0){ +count_tag_positions++; +} +elseif(Parameters::str_dist(tmp,"</positions>")<=0){ +count_tag_positions--; +} +elseif(Parameters::str_dist(tmp,"<phase>")<=0){ +count_tag_phase++; +} +elseif(Parameters::str_dist(tmp,"</phase>")<=0){ +count_tag_phase--; +} +elseif(Parameters::str_dist(tmp,"</cylinder_hex_packing>")<=0){ +count_hexa_obstacle_tag--; +} +elseif(Parameters::str_dist(tmp,"<spawning_area>")==0){ +count_tag_sampling_area++; +} +elseif(Parameters::str_dist(tmp,"</spawning_area>")==0){ +count_tag_sampling_area--; +} + +elseif(Parameters::str_dist(tmp,"<end>")==0){ +ended=true; +} + +} + +if(count_tag_delta!=0){ +error("<delta>tagisnotproperlysetin:"+string(configuration_file),cout); +assert(0); +returntrue; +} + +if(count_tag_voxels!=0){ +error("<voxels>tagisnotproperlysetin:"+string(configuration_file),cout); +assert(0); +returntrue; +} + +if(count_tag_log!=0){ +error("<log>tagisnotproperlysetin:"+string(configuration_file),cout); +assert(0); +returntrue; +} +if(count_tag_obstacle!=0){ +error("<obstacle>tagisnotproperlysetin:"+string(configuration_file),cout); +assert(0); +returntrue; +} +if(count_tag_phase!=0){ +error("<phase>tagisnotproperlysetin:"+string(configuration_file),cout); +assert(0); +returntrue; +} +if(count_tag_positions!=0){ +error("<positions>tagisnotproperlysetin:"+string(configuration_file),cout); +assert(0); +returntrue; +} +if(count_hexa_obstacle_tag!=0){ +error("<cylinder_hex_packing>tagisnotproperlysetin:"+string(configuration_file),cout); +assert(0); +returntrue; +} +if(count_tag_sampling_area!=0){ +error("<spawning_area>tagisnotproperlysetin:"+string(configuration_file),cout); +assert(0); +returntrue; +} + +if(ended==false){ +warning("ConfigurationfiledidnotendwiththeENDtag,possiblemisbehaviour.",cout); +} + +if(voxel_defined&&fixed_configuration){ +warning("Thedefinedvoxelwillbeoverriddenbythesubstratepackingconfiguration",cout); +} + +info("Done...",cout); + +returnfalse; +} + +voidSimErrno::printSimulatinInfo(Parameters&params,ostream&out,boolcolor) +{ +stringanswer; +if(color) +out<<setfill('-')<<"\033[1;35m/********************MC/DCSimulationInfo:*************************/"<<SH_DEFAULT<<"\n"; +else +out<<setfill('-')<<"/***********************MC/DCSimulationInfo:*************************/"<<"\n"; + +infoMenu("SoftwareVersion:------",VERSION_ID,out,color,35); + +infoMenu("Numberofparticles:------",to_string(params.num_walkers),out,color,35); +//out<<SH_FG_GRAY<<"[INFO]"<<SH_DEFAULT<<"Numberofparticles:------"<<setw(35)<<params.num_walkers<<endl; + +infoMenu("Numberofsteps:------",to_string(params.num_steps),out,color,35); + +infoMenu("Numberofcores:------",to_string(params.num_proc),out,color,35); + +if(params.scale_from_stu) +infoMenu("Diffusivity:------",to_string(params.diffusivity*1e6)+"e-9m^2/s",out,color,35); +else +infoMenu("Diffusivity:------",to_string(params.diffusivity*1e6)+"e-6mm^2/ms",out,color,35); + +infoMenu("Particledynamicsduration:-",""+to_string(params.sim_duration)+"ms",out,color,35); + +answer=(params.PLY_files.size()>0)?"true":"false"; +infoMenu("PLYobstacles:------",answer,out,color,35); + +if(params.PLY_files.size()>0) +infoMenu("NumberofPLYs:------",to_string(params.PLY_files.size()),out,color,35); + +answer=(params.cylinders_files.size()>0)||params.gamma_packing||params.hex_packing?"true":"false"; +infoMenu("Cylinderobstacles:------",answer,out,color,35); + +if(params.hex_packing){ +infoMenu("HexagonalConfiguration:---","true",out,color,35); +infoMenu("Hex.radius:------",""+to_string(params.hex_packing_radius*1e3)+"um",out,color,35); +infoMenu("Separation:------",""+to_string(params.hex_packing_separation*1e3)+"um",out,color,35); +} + +if(params.gamma_packing){ +infoMenu("GammaConfiguration:------","true",out,color,35); +infoMenu("Gammaalpha:------",""+to_string(params.gamma_packing_alpha)+"um",out,color,35); +infoMenu("Gammascale:------",""+to_string(params.gamma_packing_beta),out,color,35); +infoMenu("Min.radius:------",""+to_string(params.min_cyl_radii)+"um",out,color,35); +} + +answer=(params.write_traj)?"true":"false"; +infoMenu("Writetrajfile:------",answer,out,color,35); + +answer=(params.write_bin)?"true":"false"; +infoMenu("Writetobinary:------",answer,out,color,35); + +answer=(params.write_txt)?"true":"false"; +infoMenu("Writetotxt:------",answer,out,color,35); + +answer=(params.separate_signals)?"true":"false"; +infoMenu("Separatedsignals------",answer,out,color,35); + +answer=(params.scale_from_stu)?"true":"false"; +infoMenu("Standardunits:------",answer,out,color,35); + +answer=(params.obstacle_permeability>0)?"true":"false"; +infoMenu("Permeability:------",answer,out,color,35); + +if(params.obstacle_permeability>0){ +infoMenu("Permeabilitycoeff:------",""+std::to_string(params.obstacle_permeability),out,color,35); +} + +answer=(params.seed!=-1)?"true":"false"; +infoMenu("Customseed:------",answer,out,color,35); + +if(params.seed!=-1) +infoMenu("User'sSeed:-----",""+to_string(params.seed),out,color,35); + +answer=(params.log_phase_shift)?"true":"false"; +infoMenu("Writephaseshifthistogram:",answer,out,color,35); + +answer=(params.log_propagator)?"true":"false"; +infoMenu("Writepropagatorfile:------",answer,out,color,35); +if(params.log_propagator){ +infoMenu("Numberofloggedtimes:-----",to_string(params.record_prop_times.size()),out,color,35); +} +answer=(params.ini_walkers_file.size()>2)?"true":"false"; +infoMenu("Walkerinitialpositionfile:",answer,out,color,34); + +answer=(params.record_pos_times.size()>0)?"true":"false"; +infoMenu("Savefixedwalkerpositions:",answer,out,color,35); + +answer=(params.ini_delta_pos.size()>0)?"true":"false"; +infoMenu("Initialdeltaposition:-----",answer,out,color,35); + +if((params.ini_walker_flag.compare("intra")==0)||(params.ini_walker_flag.compare("extra")==0)) +infoMenu("Walkersinitialposition:-----",""+params.ini_walker_flag,out,color,33); + + +infoMenu("Numberofvoxels:------",""+to_string(params.voxels_list.size()),out,color,35); + +if(params.custom_sampling_area) +infoMenu("Customspawningarea:------","true",out,color,35); + +if(params.computeVolume==true) +infoMenu("Volumeapproximation:------","true",out,color,35); + +if(params.subdivision_flag) +infoMenu("Numberofsubdivisions:-----",""+to_string(params.subdivisions.size()),out,color,35); + +if(params.collision_sphere_distance>0){ +infoMenu("Collisionspheredistance:--",""+to_string(params.collision_sphere_distance),out,color,35); +} + +answer=(params.discard_illegals==true)?"On":"Off"; +infoMenu("BorderPatrol------",answer,out,color,35); + +answer=(params.discard_stucks==true)?"On":"Off"; +infoMenu("Discardstuckspins------",answer,out,color,35); + + +if(params.max_simulation_time>1){ +infoMenu("Maxsimulationtime:--------",""+to_string(params.max_simulation_time)+"secs",out,color,35); +} + +if(params.scheme_file.length()>1){ +std::stringscheme_filename=params.scheme_file.substr(params.scheme_file.find_last_of("/\\")+1); +infoMenu("Schemefilename:------",""+scheme_filename,out,color,35); +} + +infoMenu("DateandTime:------",""+currentDateTime(),out,color,35); + +out<<endl; + +if(params.write_txt){ +if(params.record_pos_times.size()){ +info("Texttrajectorywillbewrittenforthefollowingtimesteps:",out,color); +for(unsignedi=0;i<params.record_pos_times.size();i++){ +out<<params.record_pos_times[i]; + +if(i==params.record_pos_times.size()-1) +out<<"."; +else +out<<","; + +if(!((i+1)%10)) +out<<endl; + +if(i==10) +out<<endl; +} +out<<endl; +} +} + +if(params.write_traj){ +if(params.record_pos_times.size()){ +info("Binarytrajectorywillbewrittenforthefollowingtimesteps:",out,color); +for(unsignedi=0;i<params.record_pos_times.size();i++){ +out<<params.record_pos_times[i]; + +if(i<params.record_phase_times.size()-2) +out<<","; +else +out<<"."; +} +out<<endl; +} +} + + +if(params.ini_delta_pos.size()>0){ +info("Walkerstobeinitializeat:("+to_string(params.ini_delta_pos[0])+","+to_string(params.ini_delta_pos[1])+","+to_string(params.ini_delta_pos[2])+")",out,color); +} +} + +voidSimErrno::checkOuputPrefixAndWriteInfo(Parameters&params) +{ +info("CheckingOuputformat...",cout); + +if(checkFileExist(params.output_base_name+"_simulation_info.txt")){ +appendRepetitionLabel(params); +} + +ofstreamout(params.output_base_name+"_simulation_info.txt"); + +if(!out){ +error("Cannotopenwriteoutputfileswiththeoutput<prefix>andlocation:"+params.output_base_name,cout); +assert(0); +return; +} + +printSimulatinInfo(params,out,false); + +out.close(); +info("Done...",cout); +} + +boolSimErrno::checkGammaDistributionParamaters(Parameters&params) +{ +if(params.gamma_packing_alpha<=0||params.gamma_packing_beta<=0){ +error("Gammadistributionparametersarenotonthesupportedrange",cout,true); +assert(0); +} + +if(params.gamma_packing_alpha>=20){ +warning("Shapeparametermightbeonaunsuitablerange",cout,true); +} + +if(params.gamma_packing_beta>=10){ +warning("Theinverseshapeparametermightbeonaunsuitablerange",cout,true); +} + +if(params.gamma_icvf<=0||params.gamma_icvf>1){ +error("ICVFshouldbeintherange:(0,1]",cout,true); +assert(0); +} + +if(params.voxels_list.size()>0){ +warning("Thevoxelsizewillbeoverwrittenbythegammaconstructor",cout,true); +} + + +if(params.gamma_num_cylinders>=1e6){ +warning("Numberofcylinderstosamplemightbeerroneous",cout,true); +} + +returnfalse; +} + +voidSimErrno::warning(stringmessage,ostream&out,boolcolor) +{ +if(color) +out<<SH_BG_LIGHT_YELLOW<<"[Warning]"<<SH_DEFAULT<<""+message<<endl; +else +out<<"[Warning]"<<""+message<<endl; + +} + +voidSimErrno::info(stringmessage,ostream&out,boolcolor) +{ +if(color) +out<<SH_FG_GREEN<<"[INFO]"<<SH_DEFAULT<<""+message<<endl; +else +out<<"[INFO]"<<""+message<<endl; +} + +voidSimErrno::infoMenu(stringmessage,stringvalue,ostream&out,boolcolor,intspace) +{ +if(color) +out<<SH_FG_GREEN<<"[INFO]"<<SH_DEFAULT<<message<<setw(space)<<value<<endl; +else +out<<"[INFO]"<<message<<setw(space)<<value<<endl; +} + +voidSimErrno::error(stringmessage,ostream&out,boolcolor) +{ +if(color) +out<<SH_BG_RED<<"[ERROR]"<<SH_DEFAULT<<""+message<<SH_DEFAULT<<endl; +else +out<<""+message<<endl; +} + +voidSimErrno::expectedTime(stringcompleted,stringtime,ostream&out,boolcolor,stringsteps_second,stringendl_str) +{ +if(color){ +std::stringmessage=string(SH_FG_GREEN)+"[INFO]"+SH_DEFAULT+"[Completed:"+completed+"%]"+"[ETA:"+time+"]"+ +"("+steps_second+"steps/second)"+endl_str; +out<<message; +out.flush(); +} +else{ +std::stringmessage="[INFO][Completed:"+completed+"%]"+"[ETA:"+time+"]"+"("+steps_second+"steps/second)"+endl_str; +out<<message; +out.flush(); +} + +} + +//Getcurrentdate/time,formatisYYYY-MM-DD(HH:mm:ss) +std::stringSimErrno::currentDateTime(){ +time_tnow=time(nullptr); +structtmtstruct; +charbuf[80]; +tstruct=*localtime(&now); + +strftime(buf,sizeof(buf),"%d-%m-%Y(%X)",&tstruct); + +returnbuf; +} + +boolSimErrno::checkSubdivisionsFile(Parameters&params) +{ + +if(!checkFileExist(params.subdivisions_file)){ +error("Subdivisionfilecannotbeopen.",cout); +assert(0); +returnfalse; +} + +ifstreamin(params.subdivisions_file); + +unsignedcount_lines=0; +boolflag_weird_scale=false; +doublemin_pos[3]; +doublemax_pos[3]; + +//checksifthefilehasfullpairsofpositionsandformat +for(std::stringline;getline(in,line);) +{ +count_lines++; +std::vector<std::string>jkr=split_(line,''); +if(jkr.size()!=3){ +error("Incorrectformatinsubdivisionfile:3positionsexpectedperlinein:"+params.subdivisions_file,cout); +in.close(); +assert(0); +} +} +in.close(); + +if((count_lines%2)!=0){ +error("Incorrectformatinsubdivisionfile:Anevennumberof3dpositionsareexpectedin:"+params.subdivisions_file,cout); +in.close(); +assert(0); +} + +in.open(params.subdivisions_file); + +while(in>>min_pos[0]>>min_pos[1]>>min_pos[2]>>max_pos[0]>>max_pos[1]>>max_pos[2]) +{ +if((min_pos[0]>max_pos[0])||(min_pos[1]>max_pos[1])||(min_pos[2]>max_pos[2])){ +error("Incorrectformatinsubdivisionfile:Negativevoxelsize:",cout); +in.close(); +assert(0); +returnfalse; +} +if(((max_pos[0]-min_pos[0])>1)||((max_pos[1]-min_pos[1])>1)||((max_pos[2]-min_pos[2])>1)){ +flag_weird_scale=true; +} +} +in.close(); + +if(flag_weird_scale==1) +warning("Hugesudivisionvoxelsize:Subdivisionsscalemaybeerroneus.",cout); + +returnfalse; + +} + +voidSimErrno::appendRepetitionLabel(Parameters&params) +{ +intrep_number=0; +stringrep_label=""; +//findsthenextindex +while(true){ +rep_label=std::to_string(rep_number++); + +if(rep_label.size()==1){ +rep_label="0"+rep_label; +} + +if(!checkFileExist(params.output_base_name+"_rep_"+rep_label+"_simulation_info.txt")) +break; +} + +params.output_base_name+=+"_rep_"+rep_label; + +} + + + + diff --git a/doc/xml/simerrno_8h.xml b/doc/xml/simerrno_8h.xml new file mode 100644 index 0000000..9aad00f --- /dev/null +++ b/doc/xml/simerrno_8h.xml @@ -0,0 +1,167 @@ + + + + simerrno.h + assert.h + string + fstream + parameters.h + src/cylindergammadistribution.h + src/dynamicsSimulation.cpp + src/main.cpp + src/mcsimulation.cpp + src/parallelmcsimulation.cpp + src/parameters.cpp + src/simerrno.cpp + src/trajectory.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SimErrno + + + + + + +#ifndefSIMERRNO_H +#defineSIMERRNO_H +#include<assert.h> +#include<string> +#include<fstream> +#include"parameters.h" + + +classSimErrno +{ +public: +SimErrno(); + + +inlinestaticboolcheckFileExist(conststd::stringname){ +std::ifstreamf(name.c_str()); +returnf.good(); +} + + +staticboolcheckSimulationParameters(Parameters&params); + + +staticboolcheckSchemeFile(Parameters&params); + + +staticboolcheckPLYFiles(Parameters&params); + + +staticboolcheckCylindersListFile(Parameters&params); + + +staticboolcheckInitWalkerFile(Parameters&params); + + +staticboolcheckVoxelLimits(Parameters&params); + + +staticboolcheckConfigurationFile(constchar*configuration_file); + + +staticvoidprintSimulatinInfo(Parameters&params,std::ostream&,boolcolor=1); + + + +staticvoidcheckOuputPrefixAndWriteInfo(Parameters&params); + + +staticboolcheckGammaDistributionParamaters(Parameters&params); + + +staticvoidwarning(std::stringmessage,std::ostream&,boolcolor=1); + + +staticvoidinfo(std::stringmessage,std::ostream&,boolcolor=1); + + +staticvoidinfoMenu(std::stringmessage,std::stringvalue,std::ostream&,boolcolor=1,intspace=0); + + +staticvoiderror(std::stringmessage,std::ostream&,boolcolor=1); + + +staticvoidexpectedTime(std::stringcompleted,std::stringtime,std::ostream&,boolcolor=1,std::stringsteps_second="",std::stringendl_str=""); + + +staticstd::stringcurrentDateTime(); + + +staticboolcheckSubdivisionsFile(Parameters&params); + + +staticvoidappendRepetitionLabel(Parameters&params); + +}; + + +#endif//SIMERRNO_H + + + + diff --git a/doc/xml/simulablesequence_8cpp.xml b/doc/xml/simulablesequence_8cpp.xml new file mode 100644 index 0000000..10ba775 --- /dev/null +++ b/doc/xml/simulablesequence_8cpp.xml @@ -0,0 +1,222 @@ + + + + simulablesequence.cpp + simulablesequence.h + iostream + fstream + math.h + constants.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"simulablesequence.h" +#include<iostream> +#include<fstream> +#include<math.h> +#include"constants.h" +usingnamespacestd; + + + +voidSimulableSequence::writeResultingData(std::stringoutput_base_name) +{ +stringoutDWI=output_base_name+"_DWI.txt"; +stringoutDWIi=output_base_name+"_DWI_img.txt"; + +ofstreamdwi_out(outDWI,std::ofstream::out); +ofstreamdwii_out(outDWIi,std::ofstream::out); + +for(unsignedi=0;i<this->DWI.size();i++){ +dwi_out<<this->DWI[i]<<endl; +dwii_out<<this->DWIi[i]<<endl; +} + +dwi_out.close(); +dwii_out.close(); + +if(this->subdivision_flag){ +stringout_sub_DWI=output_base_name+"_voxels_DWI.txt"; +stringout_sub_DWIi=output_base_name+"_voxels_DWI_img.txt"; + +ofstreamsub_dwi_out(out_sub_DWI,std::ofstream::out); +ofstreamsub_dwii_out(out_sub_DWIi,std::ofstream::out); + +//##HEADER +//#Num_voxels +sub_dwi_out<<subdivisions.size()<<endl; +sub_dwii_out<<subdivisions.size()<<endl; +//#Size_DWI +sub_dwi_out<<this->DWI.size()<<endl; +sub_dwii_out<<this->DWI.size()<<endl; + +for(uints=0;s<this->subdivisions.size();s++){ +for(uinti=0;i<this->DWI.size();i++){ +sub_dwi_out<<this->sub_DWI[s][i]<<endl; +sub_dwii_out<<this->sub_DWIi[s][i]<<endl; +} +} +sub_dwi_out.close(); +sub_dwii_out.close(); +}//ENDsubdivision_flag + +} + +voidSimulableSequence::writePhaseShiftDistribution(stringoutput_base_name) +{ + +stringoutPhase=output_base_name+"_phase_shift.txt"; + +ofstreamphase_out(outPhase,std::ofstream::out);//phaseshift + + +for(unsignedi=0;i<this->DWI.size();i++){ +//writethefullhistogramforthegradienti +for(inth=0;h<3600;h++){ +phase_out<<this->phase_shift_distribution(i,h); +if(h<3600-1) +phase_out<<""; +else +phase_out<<endl; +} +} + +phase_out.close(); +} + +voidSimulableSequence::cleanPhaseShift() +{ +for(uinti=0;i<DWI.size();i++){ +this->phase_shift[i]=0; +} +} + +voidSimulableSequence::cleanDWISignal(){ +for(uints=0;s<num_rep;s++){ +DWI[s]=0;//Realpart +DWIi[s]=0;//Imgpart +phase_shift[s]=0; +} +} + +voidSimulableSequence::initializeSubdivisionSignals(){ + +for(uints=0;s<subdivisions.size();s++){ +vector<double>tmp_DWI(num_rep,0); +vector<double>tmp_DWIi(num_rep,0); +this->sub_DWI.push_back(tmp_DWI); +this->sub_DWIi.push_back(tmp_DWIi); + +if(separate_signal){ +vector<double>tmp_DWI_intra(num_rep,0); +vector<double>tmp_DWI_extra(num_rep,0); +this->sub_DWI_intra.push_back(tmp_DWI_intra); +this->sub_DWI_extra.push_back(tmp_DWI_extra); +} +} +} + +voidSimulableSequence::initializeIntraExtraSignals() +{ +for(autoi=0;i<num_rep;i++){ +this->DWI_intra.push_back(0); +this->DWI_extra.push_back(0); +} +} + + + + diff --git a/doc/xml/simulablesequence_8h.xml b/doc/xml/simulablesequence_8h.xml new file mode 100644 index 0000000..900f1ce --- /dev/null +++ b/doc/xml/simulablesequence_8h.xml @@ -0,0 +1,178 @@ + + + + simulablesequence.h + string + vector + walker.h + subdivision.h + src/dynamicsSimulation.h + src/dynamicsSimulation.cpp + src/pgsesequence.h + src/simulablesequence.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + SimulableSequence + + + + + + +#ifndefSIMULABLESEQUENCE_H +#defineSIMULABLESEQUENCE_H +#include<string> +#include<vector> +#include"walker.h" +#include"subdivision.h" + +classSimulableSequence{ +public: + +std::stringscheme_file; +std::vector<double>DWI; +std::vector<double>DWI_intra; +std::vector<double>DWI_extra; +std::vector<double>DWIi; +std::vector<double>phase_shift; +intnum_rep; +boolsave_phase_shift; +booldynamic; +doublepercent_steps_in; +std::vector<double>time_steps; +Eigen::ArrayXXfphase_shift_distribution; +std::vector<std::vector<double>>sub_DWI; +std::vector<std::vector<double>>sub_DWI_intra; +std::vector<std::vector<double>>sub_DWI_extra; +std::vector<std::vector<double>>sub_DWIi; +boolsubdivision_flag=false; +boolseparate_signal=false; +boolimg_signal=false; +std::vector<Subdivision>subdivisions; +SimulableSequence(){} + +virtual~SimulableSequence(){} + +virtualvoidgetGradImpulse(inti,doublet,doubletLast,Eigen::Vector3d&Gdt)=0; + +virtualdoublegetbValue(unsignedi){returni;}/*WARNING:Needstobeoverloaded*/ + +virtualdoublegetFreeDecay(unsignedi,doubleD){returni*D;}/*WARNING:Needstobeoverloaded*/ + +virtualvoidupdate_phase_shift(doubledt,doubledt_last,Walkerwalker)=0; + +virtualvoidupdate_phase_shift(doubletime_step,Eigen::Matrix3Xdtrajectory)=0; + +virtualvoidupdate_DWI_signal(Walker&walker)=0; + +virtualvoidsetNumberOfSteps(unsignedT)=0; + +virtualvoidcomputeDynamicTimeSteps(){} + +virtualvoidinitializeSubdivisionSignals(); +virtualvoidinitializeIntraExtraSignals(); + +virtualvoidwriteResultingData(std::stringoutput_base_name); + +virtualvoidwritePhaseShiftDistribution(std::stringoutput_base_name); + +virtualvoidcleanPhaseShift(); + +virtualvoidcleanDWISignal(); +}; + + +#endif//SIMULABLESEQUENCE_H + + + + diff --git a/doc/xml/subdivision_8cpp.xml b/doc/xml/subdivision_8cpp.xml new file mode 100644 index 0000000..ab0368b --- /dev/null +++ b/doc/xml/subdivision_8cpp.xml @@ -0,0 +1,54 @@ + + + + subdivision.cpp + subdivision.h + + + + + + + + + + + + + + + + + + + + + + +#include"subdivision.h" + +Subdivision::Subdivision() +{ +density=0; +density_intra=density_extra=0; +} + +Subdivision::Subdivision(Eigen::Vector3f&min_,Eigen::Vector3f&max_) +{ +this->min_limits=min_; +this->max_limits=max_; +this->density=0; +this->density_intra=0; +} + +boolSubdivision::isInside(Eigen::Vector3d&pos) +{ +boolflag=(pos(0)>=min_limits(0))&&(pos(1)>=min_limits(1))&&(pos(2)>=min_limits(2)); +flag&=(pos(0)<=max_limits(0))&&(pos(1)<=max_limits(1))&&(pos(2)<=max_limits(2)); + +returnflag; +} + + + + diff --git a/doc/xml/subdivision_8h.xml b/doc/xml/subdivision_8h.xml new file mode 100644 index 0000000..dcbca84 --- /dev/null +++ b/doc/xml/subdivision_8h.xml @@ -0,0 +1,134 @@ + + + + subdivision.h + Eigen/Core + src/parameters.h + src/simulablesequence.h + src/subdivision.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Subdivision + + + + + + +#ifndefSUBDIVISION_H +#defineSUBDIVISION_H + +#include"Eigen/Core" + +classSubdivision +{ +public: + + +Subdivision(); + + +Subdivision(Eigen::Vector3f&,Eigen::Vector3f&); + +Eigen::Vector3fmin_limits; +Eigen::Vector3fmax_limits; +intdensity; +intdensity_intra; +intdensity_extra; +boolisInside(Eigen::Vector3d&pos); +}; + +#endif//SUBDIVISION_H + + + + diff --git a/doc/xml/trajectory_8cpp.xml b/doc/xml/trajectory_8cpp.xml new file mode 100644 index 0000000..3705291 --- /dev/null +++ b/doc/xml/trajectory_8cpp.xml @@ -0,0 +1,584 @@ + + + + trajectory.cpp + trajectory.h + iomanip + simerrno.h + fstream + Eigen/Dense + Eigen/Geometry + constants.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"trajectory.h" +#include<iomanip>//std::setprecision +#include"simerrno.h" +#include<fstream> +#include"Eigen/Dense" +#include"Eigen/Geometry" +#include"constants.h" +usingnamespacestd; + + +Trajectory::Trajectory() +{ +isBigEndian=false; +in=NULL; +in_header=NULL; +steps_subset=false; +} + + +Trajectory:: Trajectory(constchar*traj_file,boolisBigEndian_,std::stringio_flag_) +{ +in=NULL; +in_header=NULL; +this->trajfile=traj_file; +isBigEndian=isBigEndian_; +readTrajectoryHeader(); +io_flag=io_flag_; +steps_subset=false; + +} + +Trajectory::~Trajectory() +{ +//closeTrajReaderFile(); +} + +voidTrajectory::initTrajectory(Parametersparams) +{ + +dyn_duration=params.sim_duration; +T=params.num_steps; +N=params.num_walkers; +write_traj=params.write_traj; +write_txt=params.write_txt; +write_bin=params.write_bin; + +trajfile=params.output_base_name; + +if(params.record_pos_times.size()>0){ +steps_subset=true; +pos_times=params.record_pos_times; +std::sort(pos_times.begin(),pos_times.end()); +} +} + +voidTrajectory::initTrajWriter() +{ +if(write_traj){ +if(write_bin){ +initTrajWriterBinary(); +writeTrajectoryHeaderBinary(); +} + +if(write_txt){ +initTrajWriterText(); +writeTrajectoryHeaderText(); +} +} + +} + +voidTrajectory::initTrajWriterBinary() +{ +if(bout) +bout.close(); +if(bheaderout) +bheaderout.close(); + +bout.open((trajfile+".traj").c_str(),std::ofstream::binary); +bheaderout.open((trajfile+".bhdr").c_str(),std::ofstream::binary); + +if(!bout||!bheaderout){ +std::cout<<"Cannotopen"<<trajfile.c_str()<<std::endl; +return; +} +} + +voidTrajectory::initTrajWriterText() +{ +if(tout) +tout.close(); + +if(theaderout) +theaderout.close(); + + +tout.open((trajfile+".traj.txt").c_str(),std::ios::out); +theaderout.open((trajfile+".hdr.txt").c_str(),std::ios::out); + +if(!tout||!theaderout){ +//TODO:Errorhandling +std::cout<<"Cannotopen"<<(trajfile+".traj.txt").c_str()<<std::endl; +return; +} +} + + + +voidTrajectory::writePosition(Eigen::Vector3d&pos) +{ + +if(write_traj){ +if(write_bin){ +writePositionBinary(pos); +} +if(write_txt){ +writePositionText(pos); +} +} +} + +voidTrajectory::writeTrajectoryHeaderBinary() +{ +//Wewriteeverythinginfloattounifythebinaryformat. +floatduration=float(dyn_duration); +floatN_=N; + +floatT_=T; +bheaderout.write(reinterpret_cast<char*>(&duration),sizeof(duration)); +bheaderout.write(reinterpret_cast<char*>(&N_),sizeof(N_)); + +if(steps_subset) +T_=float(pos_times.size()); + +bheaderout.write(reinterpret_cast<char*>(&T_),sizeof(float)); +} + +voidTrajectory::writeTrajectoryHeaderText() +{ +theaderout<<dyn_duration<<std::endl; +theaderout<<N<<std::endl; + +if(steps_subset) +theaderout<<this->pos_times.size()<<std::endl; +else +theaderout<<T<<std::endl; +} + +voidTrajectory::reWriteHeaderFile(unsignednum_walkers) +{ +if(bheaderout) +bheaderout.close(); + +if(theaderout) +theaderout.close(); + + +if(write_traj) +{ +if(write_txt){ +theaderout.open((trajfile+".hdr.txt").c_str(),std::ios::out); +if(!theaderout){ +//TODO:Errorhandling +std::cout<<"Cannotopenheader:"<<trajfile.c_str()<<std::endl; +return; +} + +theaderout<<dyn_duration<<std::endl; +theaderout<<num_walkers<<std::endl; + +if(steps_subset) +theaderout<<this->pos_times.size()<<std::endl; +else +theaderout<<T<<std::endl; +} + +if(write_bin){ +bheaderout.open((trajfile+".bhdr").c_str(),std::ofstream::binary); +if(!bheaderout){ +//TODO:Errorhandling +std::cout<<"Cannotopenheader:"<<trajfile.c_str()<<std::endl; +return; +} + +//Wewriteeverythinginfloattounifythebinaryformat. +floatduration=float(dyn_duration); +floatN_=num_walkers; + +floatT_=T; +bheaderout.write(reinterpret_cast<char*>(&duration),sizeof(duration)); +bheaderout.write(reinterpret_cast<char*>(&N_),sizeof(N_)); + +if(steps_subset) +T_=float(pos_times.size()); + +bheaderout.write(reinterpret_cast<char*>(&T_),sizeof(float)); +} +} +} + +voidTrajectory::writePositionText(Eigen::Vector3d&pos) +{ +tout<<std::setprecision(6)<<pos[0]<<std::endl<<pos[1]<<std::endl<<pos[2]<<std::endl; +} + +voidTrajectory::writePositionBinary(Eigen::Vector3d&pos) +{ +floatpos0=float(pos(0)),pos1=float(pos(1)),pos2=float(pos(2)); +bout.write(reinterpret_cast<char*>(&pos0),sizeof(float)); +bout.write(reinterpret_cast<char*>(&pos1),sizeof(float)); +bout.write(reinterpret_cast<char*>(&pos2),sizeof(float)); +} + +voidTrajectory::writePosition(Eigen::Matrix3Xd&pos) +{ + +if(write_traj) +{ +if(write_traj) +writePositionBinary(pos); + +if(write_txt) +writePositionText(pos); +} +} + +voidTrajectory::writePositionText(Eigen::Matrix3Xd&pos) +{ +if(steps_subset) +{ +unsignedindex=0; +for(unsignedi=0;i<T+1;i++) +if(i==pos_times[index]){ +tout<<std::setprecision(6)<<pos(0,i)<<std::endl<<pos(1,i)<<std::endl<<pos(2,i)<<std::endl; +index++;//Updatetheindex + +if(index>=pos_times.size()){ +break; +} +} +} +else +{ +for(unsignedi=0;i<T+1;i++) +tout<<std::setprecision(6)<<pos(0,i)<<std::endl<<pos(1,i)<<std::endl<<pos(2,i)<<std::endl; +} +} + +voidTrajectory::writePositionBinary(Eigen::Matrix3Xd&pos) +{ + +if(steps_subset) +{ +unsignedindex=0; +for(unsignedi=0;i<T+1;i++) +if(i==pos_times[index]){ +floatpos0=float(pos(0,i)),pos1=float(pos(1,i)),pos2=float(pos(2,i)); +bout.write(reinterpret_cast<char*>(&pos0),sizeof(float)); +bout.write(reinterpret_cast<char*>(&pos1),sizeof(float)); +bout.write(reinterpret_cast<char*>(&pos2),sizeof(float)); +index++;//Updatetheindex + +if(index>=pos_times.size()){ +break; +} +} +} +else +{ +for(unsignedi=0;i<T+1;i++){ +floatpos0=float(pos(0,i)),pos1=float(pos(1,i)),pos2=float(pos(2,i)); +bout.write(reinterpret_cast<char*>(&pos0),sizeof(float)); +bout.write(reinterpret_cast<char*>(&pos1),sizeof(float)); +bout.write(reinterpret_cast<char*>(&pos2),sizeof(float)); +} +} +} + +voidTrajectory::initTrajReaderFile() +{ +openTrajReaderFile(); +//fseek(in,24,SEEK_SET); +} + +voidTrajectory::openTrajReaderFile() +{ + +if(io_flag==""){ +io_flag="rb"; +} +//closeTrajReaderFile(); + +in=fopen(trajfile.c_str(),io_flag.c_str()); +in_header=fopen(headerfile.c_str(),io_flag.c_str()); + +if(!in){ +SimErrno::error("ERRORopening:"+trajfile+"flag:"+io_flag,std::cout); +assert(0); +return; +} + +if(!in_header){ +SimErrno::error("ERRORopening:"+headerfile+"flag:"+io_flag,std::cout); +assert(0); +return; +} +} + + +voidTrajectory::closeTrajReaderFile() +{ +if(in!=NULL) +fclose(in); + +if(in_header!=NULL) +fclose(in_header); +} + +voidTrajectory::setTrajFile(std::stringtrajfile_) +{ +trajfile=trajfile_+".traj"; +headerfile=trajfile_+".bhdr"; +readTrajectoryHeader(); +} + +voidTrajectory::readTrajectoryHeader() +{ + +ifstreammyfile(this->headerfile,ios::binary); + +if(!myfile){ +SimErrno::error("Inputtrajfileheadernotfound!",std::cout); +assert(0); +} + +streamposbegin,end; +begin=myfile.tellg(); +myfile.seekg(0,ios::end); +end=myfile.tellg(); + +unsignedsize_=end-begin; + +if(size_!=12){ +SimErrno::error("Corruptedheaderfile",std::cout); +//cout<<"[WARNING]Corruptedheaderfile"<<endl; +myfile.close(); +assert(0); +return; +} + +char*memblock=newchar[12]; + +myfile.close(); +myfile.open(this->headerfile,ios::binary); + +myfile.read(memblock,3*sizeof(float)); + + +float*float_values=(float*)memblock;//reinterpretasfloat + +this->N=uint(float_values[1]); +this->T=uint(float_values[2]); +this->dyn_duration=double(float_values[0]); + +myfile.close(); +delete[]memblock; + +} + +voidTrajectory::readCurrentWalkersTrajectory(Eigen::Matrix3Xd&steps_log) +{ +floatx,y,z; + +for(unsignedt=0;t<T+1;t++){ + +assert(fread(&x,4,1,in)); +assert(fread(&y,4,1,in)); +assert(fread(&z,4,1,in)); + +if(isBigEndian){ +swapBE2SE2(&x,sizeof(x)); +swapBE2SE2(&y,sizeof(y)); +swapBE2SE2(&z,sizeof(z)); +} + +steps_log(0,t)=x; +steps_log(1,t)=y; +steps_log(2,t)=z; +} +} + + + +//swapbetweenbigendiantolittleendian. +voidTrajectory::swapBE2SE2(void*source,intsize) +{ +typedefunsignedcharTwoBytes[2]; +typedefunsignedcharFourBytes[4]; +typedefunsignedcharEightBytes[8]; + +unsignedchartemp; + +if(size==2) +{ +TwoBytes*src=(TwoBytes*)source; +temp=(*src)[0]; +(*src)[0]=(*src)[1]; +(*src)[1]=temp; + +return; +} + +if(size==4) +{ +FourBytes*src=(FourBytes*)source; +temp=(*src)[0]; +(*src)[0]=(*src)[3]; +(*src)[3]=temp; + +temp=(*src)[1]; +(*src)[1]=(*src)[2]; +(*src)[2]=temp; + +return; +} + +if(size==8) +{ +EightBytes*src=(EightBytes*)source; +temp=(*src)[0]; +(*src)[0]=(*src)[7]; +(*src)[7]=temp; + +temp=(*src)[1]; +(*src)[1]=(*src)[6]; +(*src)[6]=temp; + +temp=(*src)[2]; +(*src)[2]=(*src)[5]; +(*src)[5]=temp; + +temp=(*src)[3]; +(*src)[3]=(*src)[4]; +(*src)[4]=temp; + +return; +} + +} + + + + diff --git a/doc/xml/trajectory_8h.xml b/doc/xml/trajectory_8h.xml new file mode 100644 index 0000000..71b9272 --- /dev/null +++ b/doc/xml/trajectory_8h.xml @@ -0,0 +1,190 @@ + + + + trajectory.h + string + iostream + stdio.h + fstream + Eigen/Sparse + parameters.h + src/dynamicsSimulation.h + src/pgsesequence.h + src/trajectory.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Trajectory + + + + + + +#ifndefTRAJECTORY_H +#defineTRAJECTORY_H + +#include<string> +#include<iostream> +#include<stdio.h> +#include<fstream> +#include<Eigen/Sparse> +#include<parameters.h> + + +classTrajectory{ +public: +std::stringtrajfile; +std::stringheaderfile; +FILE*in,*in_header; +std::ofstreambout,tout,bheaderout,theaderout; + + +unsignedN,T; +//dynamicduration. +doubledyn_duration; +std::stringio_flag; + +std::vector<unsigned>pos_times; +boolisBigEndian; +boolwrite_traj; +boolwrite_txt; +boolwrite_bin; +boolsteps_subset; +Trajectory(); + +Trajectory(constchar*traj_file,boolisBigEndian_=true,std::stringio_flag_="rb"); + +~Trajectory(); + +voidinitTrajectory(Parametersparams); + +voidsetTrajFile(std::string); + + +voidcloseTrajReaderFile(); +voidopenTrajReaderFile(); +voidinitTrajReaderFile(); +voidreadTrajectoryHeader(); +voidreadCurrentWalkersTrajectory(Eigen::Matrix3Xd&); + + +voidinitTrajWriter(); +voidinitTrajWriterBinary(); +voidinitTrajWriterText(); + +voidwriteTrajectoryHeaderBinary(); +voidwriteTrajectoryHeaderText(); + +voidreWriteHeaderFile(unsignednum_walkers); + +voidwritePosition(Eigen::Vector3d&); +voidwritePositionText(Eigen::Vector3d&); +voidwritePositionBinary(Eigen::Vector3d&); + +voidwritePosition(Eigen::Matrix3Xd&); +voidwritePositionText(Eigen::Matrix3Xd&); +voidwritePositionBinary(Eigen::Matrix3Xd&); + +private: +voidswapBE2SE2(void*source,intsize); +}; + +#endif//TRAJECTORY_H + + + + diff --git a/doc/xml/triangle_8cpp.xml b/doc/xml/triangle_8cpp.xml new file mode 100644 index 0000000..355f2a9 --- /dev/null +++ b/doc/xml/triangle_8cpp.xml @@ -0,0 +1,471 @@ + + + + triangle.cpp + triangle.h + collision.h + limits + math.h + cstddef + Eigen/Dense + iostream + constants.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"triangle.h" +#include"collision.h" +#include<limits>//std::numeric_limits +#include<math.h> +#include<cstddef> +#include<Eigen/Dense> +#include<iostream> +#include"constants.h" + +usingnamespacestd; + +Triangle::Triangle() +{ +vertices=NULL; +normal[0]=0; +normal[1]=0; +normal[2]=0; +} + +voidTriangle::getVertex(constunsignedi,Eigen::Vector3d&v){ +v[0]=vertices[indexes[i]].points[0]; +v[1]=vertices[indexes[i]].points[1]; +v[2]=vertices[indexes[i]].points[2]; +} + +voidTriangle::getNormal(Eigen::Vector3d&normal) +{ +if((this->normal[0]==0.0)&&(this->normal[1]==0.0)&&(this->normal[2]==0.0)) +saveNormalAndAuxInfo(); + +normal=this->normal; +} + +voidTriangle::saveNormalAndAuxInfo() +{ +Eigen::Vector3da,b,c,A,B; +getVertex(0,a); +getVertex(1,b); +getVertex(2,c); +A=a-b; +B=a-c; + +this->normal=(A.cross(B)).normalized(); + +this->center=(a+b+c)/3.0; + +doubled1=(center-a).squaredNorm(); +doubled2=(center-b).squaredNorm(); +doubled3=(center-c).squaredNorm(); +this->radius=sqrt(fmax(d1,fmax(d2,d3))); +} + +boolTriangle::rayIntersects(constEigen::Vector3d&ray_origin,constEigen::Vector3d&step,double&t) +{ +Eigen::Vector3de1,e2,pvec,tvec,qvec; +Eigen::Vector3da,b,c; +getVertex(0,a); +getVertex(1,b); +getVertex(2,c); +e1=b-a; +e2=c-a; +pvec=step.cross(e2); + +doubledet=e1.dot(pvec); + +if(det>-triangle_eps&&det<triangle_eps) +returnfalse; + +doubleinvDet=1.0/det; + +tvec=ray_origin-a; +doubleu=tvec.dot(pvec)*invDet; + +if(u<-triangle_eps||u>1.0+triangle_eps) +returnfalse; + +qvec=tvec.cross(e1); + +doublev=step.dot(qvec)*invDet; + +if(v<-triangle_eps||u+v>1.0+triangle_eps) +returnfalse; + +t=e2.dot(qvec)*invDet; + + +returntrue; +} + +boolTriangle::rayIntersects_MT(constEigen::Vector3d&ray_origin,constEigen::Vector3d&step,double&u,double&v,double&t) +{ +doubleEPS=1e-13; + +Eigen::Vector3de1,e2,pvec,tvec,qvec; +Eigen::Vector3da,b,c; +getVertex(0,a); +getVertex(1,b); +getVertex(2,c); + +e1=b-a; +e2=c-a; + +pvec=step.cross(e2); + +doubledet=e1.dot(pvec); + +//ifdeterminantisnearzero,rayliesinplaneoftriangleorrayisparalleltoplaneoftriangle +if(det>-EPS&&det<EPS) +returnfalse; + +doubleinvDet=1.0/det; + +tvec=ray_origin-a; +u=tvec.dot(pvec)*invDet; + +if(u<-triangle_eps||u>1.0+triangle_eps) +returnfalse; + +qvec=tvec.cross(e1); +v=step.dot(qvec)*invDet; + +if(v<-triangle_eps||u+v>1+triangle_eps) +returnfalse; + +t=e2.dot(qvec)*invDet; + +returntrue; +} + +#ifPRECISE_T_MIN_D==0 +doubleTriangle::minDistance(constEigen::Vector3dp){ +//distancetosphere +returnfmax(0,(p-center).norm()-radius); +} + +#else + +doubleTriangle::minDistance(constEigen::Vector3dp) +{ +doubleEPS=1e-1; + +Eigen::Vector3da,b,c; +getVertex(0,a); +getVertex(1,b); +getVertex(2,c); +Eigen::Vector3dab=b-a; +Eigen::Vector3dac=c-a; +Eigen::Vector3dap=b-c; + +//CheckifPinvertexregionoutsideA +doubled1=ab.dot(ap); +doubled2=ac.dot(ap); + +if(d1<=-EPS&&d2<=-EPS) +return(a-p).norm();//barycentriccoordinates(1,0,0) + +//CheckifPinvertexregionoutsideB +Eigen::Vector3dbp=p-b; +doubled3=ab.dot(bp); +doubled4=ac.dot(bp); + +if(d3<=-EPS&&d4<=d3) +return(b-p).norm();//barycentriccoordinates(0,1,0) + + +doublevc=d1*d4-d3*d2; + +if(vc<=-EPS&&d1>=EPS&&d3<=-EPS){ +doublev=d1/(d1-d3); +return((a+v*ab)-p).norm();//barycentriccoordinates(1-v,v,0) +} + +//CheckifPinvertexregionoutsideC +Eigen::Vector3dcp=p-c; +doubled5=ab.dot(cp); +doubled6=ac.dot(cp); + +if(d6>=EPS&&d5<=d6) +return(c-p).norm();//barycentriccoordinates(0,0,1) + + +//CheckifPinedgeregionofAC,ifsoreturnprojectionofPontoAC +doublevb=d5*d2-d1*d6; +if(vb<=-EPS&&d2>=EPS&&d6<=-EPS){ +doublew=d2/(d2-d6); +return((a+w*ac)-p).norm();//barycentriccoordinates(1-w,0,w) +} + +//CheckifPinedgeregionofBC,ifsoreturnprojectionofPontoBC +doubleva=d3*d6-d5*d4; +if(va<=-EPS&&(d4-d3)>=EPS&&(d5-d6)>=EPS){ +doublew=(d4-d3)/((d4-d3)+(d5-d6)); +return((b+w*(c-b))-p).norm();//barycentriccoordinates(0,1-w,w) +} + +//Pinsidefaceregion.ComputeQthroughitsbarycentriccoordinates(u,v,w) +doubledenom=1.0/(va+vb+vc); +doublev=vb*denom; +doublew=vc*denom; + +return((a+ab*v+ac*w)-p).norm();//=u*a+v*b+w*c,u=va*denom=1.0f-v-w + +} + +#endif + +voidTriangle::stepIntersects_MT(Walker&walker,constEigen::Vector3d&step,constdouble&max_length,Collision&colision) +{ +doubleEPS=1e-14; +Eigen::Vector3de1,e2,pvec,tvec,qvec; +Eigen::Vector3da,b,c; +getVertex(0,a); +getVertex(1,b); +getVertex(2,c); + +//Computationofthedeterminantofthesystem. + +e1=b-a; +e2=c-a; +pvec=step.cross(e2); +doubledet=e1.dot(pvec); +doublet=numeric_limits<double>::infinity(); + +//ifdeterminantisnearzero,rayliesinthetriangle'splaneortherayisparalleltothetriangle'splane +if(det>-EPS&&det<EPS){ +colision.type=Collision::near; +return; +} + +doubleinvDet=1.0/det; + +//Computationoft +tvec=walker.pos_v-a; +qvec=tvec.cross(e1); + +t=e2.dot(qvec)*invDet; + +//Firstcase,stepisintheotherdirectionofthestep. +//Thismeansthatwearemovingintheoppositedirection +//Orwearetoofarawayfromthetrianglesplaneanyway. +if(t<0.0||(t>max_length+barrier_tickness)){ +colision.type=Collision::null; +return; +} + +//aspinthat'sbouncingignorescollisionat0(isinawall) +if(walker.status==Walker::bouncing){ + +//ifthecollisionaretooclose. +if((t<EPS_VAL)){ +colision.type=Collision::null; +return; +} + +colision.t=fmin(t,max_length); +} +else{ +//ifwearenotbouncing,allcollisionscounts. +colision.t=fmin(t,max_length); +} + +//Computationofu +colision.u=tvec.dot(pvec)*invDet; + +if(colision.u<-EPS_VAL||colision.u>1.0+EPS_VAL){ +colision.type=Collision::null; +return; +} + +//Computationofcandu+v +colision.v=step.dot(qvec)*invDet; + +if(colision.v<-EPS_VAL||colision.u+colision.v>1.0+EPS_VAL){ +colision.type=Collision::null; +return; +} + +colision.type=Collision::hit; +} + +voidTriangle::stepIntersects_MT_limits(constEigen::Vector3d&ray_origin,constEigen::Vector3d&step,constdouble&max_length,Collision&colision, +constEigen::Vector3d&limits_mod,doublelimit_x,doublelimit_y,doublelimit_z) +{ +doubleEPS=1e-15; +Eigen::Vector3de1,e2,pvec,tvec,qvec; +Eigen::Vector3da,b,c; +getVertex(0,a); +getVertex(1,b); +getVertex(2,c); + + +a[0]+=int(limits_mod[0])*limit_x;b[0]+=int(limits_mod[0])*limit_x;c[0]+=int(limits_mod[0])*limit_x; +a[1]+=int(limits_mod[1])*limit_y;b[1]+=int(limits_mod[1])*limit_y;c[1]+=int(limits_mod[1])*limit_y; +a[2]+=int(limits_mod[2])*limit_z;b[2]+=int(limits_mod[2])*limit_z;c[2]+=int(limits_mod[2])*limit_z; + +//Computationofthedeterminatofthesystem. +e1=b-a; +e2=c-a; +pvec=step.cross(e2); +doubledet=e1.dot(pvec); +colision.t=numeric_limits<double>::infinity(); + +//Firstcase,det=0; +if(det>-EPS&&det<EPS){ +colision.type=Collision::near; +return; +} + +doubleinvDet=1.0/det; + +//Computationoft +tvec=ray_origin-a; +qvec=tvec.cross(e1); + +colision.t=e2.dot(qvec)*invDet; + +//Firstcase,stepisintheotherdirectionofthestep. +//Thismeansthatwearemovingintheoppositedirection +if(colision.t<0){ +colision.type=Collision::null; +return; +} + +//Isthetriangleplaneonthedistanceofthestep +if(colision.t>=EPS&&colision.t-max_length>EPS){ +colision.type=Collision::near; +return; +} + +//Computationofu +colision.u=tvec.dot(pvec)*invDet; +if(colision.u<EPS*2||colision.u-1>-EPS*2){ +colision.type=Collision::near; +return; +} + +//Computationofcandu+v +colision.v=step.dot(qvec)*invDet; +if(colision.v<EPS*2||colision.v-1>-EPS*2||colision.u+colision.v-1>EPS*2){ +colision.type=Collision::near; +return; +} + +colision.type=Collision::hit; + +} + + + + diff --git a/doc/xml/triangle_8h.xml b/doc/xml/triangle_8h.xml new file mode 100644 index 0000000..a060fdc --- /dev/null +++ b/doc/xml/triangle_8h.xml @@ -0,0 +1,146 @@ + + + + triangle.h + vertex.h + collision.h + walker.h + Eigen/Core + src/plyobstacle.h + src/triangle.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Triangle + + + + + + +#ifndefTRIANGLE_H +#defineTRIANGLE_H + +#include"vertex.h" +#include"collision.h" +#include"walker.h" +#include"Eigen/Core" + +classTriangle{ +public: +unsignedindex; +Vertex*vertices; +Eigen::Array3iindexes; +Eigen::Vector3dnormal; + +//Collisionsphere +Eigen::Vector3dcenter; +doubleradius; + +Triangle(); +Triangle(Vertex*vertices,unsignedindex); + +voidgetVertex(constunsignedi,Eigen::Vector3d&v); +voidgetNormal(Eigen::Vector3d&normal); +voidsaveNormalAndAuxInfo(); +boolrayIntersects(constEigen::Vector3d&ray_origin,constEigen::Vector3d&step,double&t); +voidstepIntersects_MT(Walker&walker,constEigen::Vector3d&step,constdouble&max_length,Collision&colision); +voidstepIntersects_MT_limits(constEigen::Vector3d&ray_origin,constEigen::Vector3d&step,constdouble&max_length,Collision&colision, +constEigen::Vector3d&limits_mod,doublelimit_x,doublelimit_y,doublelimit_z); + +boolrayIntersects_MT(constEigen::Vector3d&ray_origin,constEigen::Vector3d&step,double&u,double&v,double&t); + +//Returnstheminimumdistancefromthepointptothetriangle +doubleminDistance(constEigen::Vector3dp); +//doubleminDistancePrecise(constEigen::Vector3dp); + +}; + +#endif//TRIANGLE_H + + + + diff --git a/doc/xml/vertex_8cpp.xml b/doc/xml/vertex_8cpp.xml new file mode 100644 index 0000000..4b5ab4a --- /dev/null +++ b/doc/xml/vertex_8cpp.xml @@ -0,0 +1,40 @@ + + + + vertex.cpp + vertex.h + + + + + + + + + + + + + + + + + +#include"vertex.h" + + +Vertex::Vertex() +{ +points[0]=points[1]=points[2]=0; +} + +Vertex::Vertex(constdouble&x,constdouble&y,constdouble&z) +{ +points[0]=x; +points[1]=y; +points[2]=z; +} + + + + diff --git a/doc/xml/vertex_8h.xml b/doc/xml/vertex_8h.xml new file mode 100644 index 0000000..8dbc1b6 --- /dev/null +++ b/doc/xml/vertex_8h.xml @@ -0,0 +1,68 @@ + + + + vertex.h + src/triangle.h + src/vertex.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Vertex + + + + + + +#ifndefVERTEX_H +#defineVERTEX_H + +classVertex{ +public: +Vertex(); +Vertex(constdouble&x,constdouble&y,constdouble&z); +unsignedindex; +doublepoints[3]; +doubleoperator()(unsignedi){returnpoints[i];} +}; + + + +#endif//VERTEX_H + + + + diff --git a/doc/xml/voxel_8cpp.xml b/doc/xml/voxel_8cpp.xml new file mode 100644 index 0000000..a78efed --- /dev/null +++ b/doc/xml/voxel_8cpp.xml @@ -0,0 +1,178 @@ + + + + voxel.cpp + voxel.h + constants.h + Eigen/Dense + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"voxel.h" +#include"constants.h" +#include<Eigen/Dense> + +Voxel::Voxel() +{ + +} + +Voxel::Voxel(Eigen::Vector3dmin_limits_,Eigen::Vector3dmax_limits_):min_limits(min_limits_),max_limits(max_limits_) +{ +//Cubevertex +Eigen::Vector3da=min_limits; +Eigen::Vector3db=a;b[0]=max_limits[0]; +Eigen::Vector3dc=b;c[1]=max_limits[1]; +Eigen::Vector3dd=c;d[0]=min_limits[0]; + +Eigen::Vector3de=a;e[2]=max_limits[2]; +Eigen::Vector3df=b;f[2]=max_limits[2]; +Eigen::Vector3dg=c;g[2]=max_limits[2]; +Eigen::Vector3dh=d;h[2]=max_limits[2]; + +walls[0]=Plane(a,b,c,d); +walls[1]=Plane(b,f,g,c); +walls[2]=Plane(e,f,g,h); +walls[3]=Plane(a,e,h,d); +walls[4]=Plane(a,b,f,e); +walls[5]=Plane(d,c,g,h); +} + +boolVoxel::CheckCollision(Walker&walker,Eigen::Vector3d&step,double&tmax,Collision&colision) +{ +Collisioncolision_temp=colision; + +for(inti=0;i<6;i++){ +walls[i].CheckCollision(walker,step,tmax,colision_temp); + +if(colision_temp.doIHaveMorePiorityThan(colision)) +colision=colision_temp; +} + +returncolision.type!=Collision::null; +} + +Plane::Plane(Eigen::Vector3dnormal_,Eigen::Vector3dplane_center_,doubled_):normal(normal_),plane_center(plane_center_),d(d_) +{ + +} + +Plane::Plane(Eigen::Vector3d&a,Eigen::Vector3d&b,Eigen::Vector3d&c,Eigen::Vector3d&d_) +{ +normal=(b-a).cross(c-a); +normal.normalize(); +plane_center=(a+b+c+d_)/4.0; +d=normal.dot(a); +} + +boolPlane::CheckCollision(Walker&walker,Eigen::Vector3d&step,doubletmax,Collision&colision) +{ +colision.type=Collision::null; + +doublet=(d-normal.dot(walker.pos_v))/(normal.dot(step)); + +if(walker.status==Walker::on_voxel){ +if(t<EPS_VAL||t>tmax) +returnfalse; +} +else{ +if(t<0.0||t>tmax) +returnfalse; +} + +colision.type=Collision::hit; +colision.t=t; +colision.bounced_direction=step; +colision.col_location=Collision::voxel; +colision.colision_point=walker.pos_v+t*step; + +returntrue; +} + + + + diff --git a/doc/xml/voxel_8h.xml b/doc/xml/voxel_8h.xml new file mode 100644 index 0000000..1fae4fb --- /dev/null +++ b/doc/xml/voxel_8h.xml @@ -0,0 +1,139 @@ + + + + voxel.h + Eigen/Core + collision.h + walker.h + src/dynamicsSimulation.h + src/main.cpp + src/voxel.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Plane + Voxel + + + + + + +#ifndefVOXEL_H +#defineVOXEL_H +#include<Eigen/Core> +#include<collision.h> +#include"walker.h" + +classPlane{ +public: +//Enoughtosavetheparametricrepresentation +Eigen::Vector3dnormal,plane_center; +doubled; + +//X-Yplaneintheorigin +Plane(){ +normal={0,0,1}; +plane_center={0,0,0}; +d=0; +} + +Plane(Eigen::Vector3dnormal_,Eigen::Vector3dplane_center_,doubled_); + +Plane(Eigen::Vector3d&a,Eigen::Vector3d&b,Eigen::Vector3d&c,Eigen::Vector3d&d); + +boolCheckCollision(Walker&walker,Eigen::Vector3d&step,doubletmax,Collision&colision); +}; + +classVoxel +{ +public: +Eigen::Vector3dmin_limits,max_limits; + +Voxel(); + +Voxel(Eigen::Vector3dmin_limits_,Eigen::Vector3dmax_limits_); + +Planewalls[6]; + +boolCheckCollision(Walker&walker,Eigen::Vector3d&step,double&tmax,Collision&colision); +}; + + + +#endif//VOXEL_H + + + + diff --git a/doc/xml/walker_8cpp.xml b/doc/xml/walker_8cpp.xml new file mode 100644 index 0000000..cfbee68 --- /dev/null +++ b/doc/xml/walker_8cpp.xml @@ -0,0 +1,297 @@ + + + + walker.cpp + walker.h + stdlib.h + random + cylinder.h + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +#include"walker.h" +#include<stdlib.h>/*srand,rand*/ +#include<random>/*random_deviceforMAC*/ +#include"cylinder.h" + +Walker::Walker() +{ +pos_r=pos_v.setZero(3,1); +index=0; +status=free; +steps_count=0; +initial_location=location=unknown; +intra_extra_consensus=intra_coll_count=extra_coll_count=rejection_count=steps_count=0; +steps_per_second=0; +in_ply_index=-1; +in_obj_index=-1; +} + +Walker::Walker(doublexmin,doublexmax,doubleymin,doubleymax,doublezmin,doublezmax) +{ +std::random_devicerd; +std::mt19937gen(rd()); +std::uniform_real_distribution<double>udist(0,1); + + +doublet=udist(gen); +pos_r[0]=last_pos_r[0]=last_pos_v[0]=ini_pos[0]=pos_v[0]=(t+1)*xmin+t*xmax; +t=udist(gen); +pos_r[1]=last_pos_r[1]=last_pos_v[1]=ini_pos[1]=pos_v[1]=(t+1)*ymin+t*ymax; +t=udist(gen); +pos_r[2]=last_pos_r[2]=last_pos_v[2]=ini_pos[2]=pos_v[2]=(t+1)*zmin+t*zmax; + +steps_count=0; +rejection_count=0; +status=free; +index=0; +initial_location=location=unknown; +intra_extra_consensus=intra_coll_count=extra_coll_count=0; +steps_per_second=0; +in_ply_index=-1; +in_obj_index=-1; +} + +voidWalker::getRealPosition(double&x_,double&y_,double&z_)const +{ +x_=pos_r[0]; +y_=pos_r[1]; +z_=pos_r[2]; +} +voidWalker::getVoxelPosition(double&x_,double&y_,double&z_)const +{ +x_=pos_v[0]; +y_=pos_v[1]; +z_=pos_v[2]; +} + +voidWalker::getRealPosition(Eigen::Vector3d&_pos_)const +{ +_pos_=pos_r; +} + +voidWalker::getVoxelPosition(Eigen::Vector3d&_pos_)const +{ +_pos_=pos_v; +} + +voidWalker::getInitialPosition(double&x_,double&y_,double&z_)const +{ +x_=ini_pos[0]; +y_=ini_pos[1]; +z_=ini_pos[2]; +} + +voidWalker::getInitialPosition(Eigen::Vector3d&_ini_pos_)const +{ +_ini_pos_=ini_pos; +} + +voidWalker::getNextDirection(Eigen::Vector3d&_direction_)const +{ +_direction_=next_direction; + +} + +unsignedintWalker::getIndex()const +{ +returnindex; +} + +voidWalker::setRealPosition(constEigen::Vector3d&_pos_) +{ +last_pos_r=pos_r; +pos_r=_pos_; +} + +voidWalker::setVoxelPosition(constEigen::Vector3d&_pos_) +{ +last_pos_v=pos_v; +pos_v=_pos_; +} +voidWalker::setVoxelPosition(constdouble&x_,constdouble&y_,constdouble&z_) +{ +last_pos_v=pos_v; + +pos_v[0]=x_; +pos_v[1]=y_; +pos_v[2]=z_; +} + +voidWalker::setRealPosition(constdouble&x_,constdouble&y_,constdouble&z_) +{ +last_pos_r=pos_r; + +pos_r[0]=x_; +pos_r[1]=y_; +pos_r[2]=z_; +} + +voidWalker::setInitialPosition(constdouble&x_,constdouble&y_,constdouble&z_) +{ +pos_r[0]=x_; +pos_r[1]=y_; +pos_r[2]=z_; + +last_pos_r=last_pos_v=pos_v=ini_pos=pos_r; + +steps_count=0; +} + + +voidWalker::setInitialPosition(constEigen::Vector3d&temp) +{ +last_pos_r=last_pos_v=pos_v=ini_pos=pos_r=temp; + +steps_count=0; +} + +voidWalker::setNextDirection(Eigen::Vector3d&next_dir) +{ +next_direction=next_dir; +} + +voidWalker::setIndex(unsignedint&_index) +{ +index=_index; +} + +voidWalker::setRealPosLog(constEigen::Vector3d&pos,unsignedt) +{ +this->pos_r_log(0,t)=pos(0); +this->pos_r_log(1,t)=pos(1); +this->pos_r_log(2,t)=pos(2); +} + +voidWalker::setRealPosLog(doublex,doubley,doublez,unsignedt) +{ +this->pos_r_log(0,t)=x; +this->pos_r_log(1,t)=y; +this->pos_r_log(2,t)=z; +} + +voidWalker::setVoxPosLog(constEigen::Vector3d&pos,unsignedt) +{ +this->pos_v_log(0,t)=pos(0); +this->pos_v_log(1,t)=pos(1); +this->pos_v_log(2,t)=pos(2); +} + +voidWalker::setVoxPosLog(doublex,doubley,doublez,unsignedt) +{ +this->pos_v_log(0,t)=x; +this->pos_v_log(1,t)=y; +this->pos_v_log(2,t)=z; +} + +voidWalker::setNumberOfSteps(unsignedT) +{ +pos_r_log=Eigen::Matrix3Xd::Zero(3,T+1); +pos_v_log=Eigen::Matrix3Xd::Zero(3,T+1); +} + + +voidWalker::setRandomInitialPosition(constEigen::Vector3d&_min,constEigen::Vector3d&_max) +{ +steps_count=0; + +std::random_devicerd; +std::mt19937gen(rd()); +std::uniform_real_distribution<double>udist(0,1); + +doublet=udist(gen); +pos_r[0]=(1-t)*_min(0)+t*_max(0); +t=udist(gen); +pos_r[1]=(1-t)*_min(1)+t*_max(1); +t=udist(gen); +pos_r[2]=(1-t)*_min(2)+t*_max(2); + +last_pos_r=last_pos_v=pos_v=ini_pos=pos_r; +last_pos_r=last_pos_v=pos_r; +} + + + + + + + + + diff --git a/doc/xml/walker_8h.xml b/doc/xml/walker_8h.xml new file mode 100644 index 0000000..fc582d1 --- /dev/null +++ b/doc/xml/walker_8h.xml @@ -0,0 +1,238 @@ + + + + walker.h + Eigen/Core + vector + deque + collisionsphere.h + iostream + src/obstacle.h + src/dynamicsSimulation.h + src/simulablesequence.h + src/triangle.h + src/voxel.h + src/sentinel.h + src/walker.cpp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Walker + + + + + + +#ifndefWALKER_H +#defineWALKER_H + +#include"Eigen/Core" +#include<vector> +#include<deque> +#include"collisionsphere.h" +#include<iostream> + +classWalker{ +public: + +enumstate{on_object,on_edge,on_vertex,on_voxel,free,bouncing}; + + +enumRelativeLocation{unknown,intra,extra}; + +Eigen::Vector3dpos_r; +Eigen::Vector3dpos_v; +Eigen::Vector3dlast_pos_r; +Eigen::Vector3dlast_pos_v; +Eigen::Vector3dini_pos; +Eigen::Vector3dnext_direction; +Eigen::Matrix3Xdpos_r_log; +Eigen::Matrix3Xdpos_v_log; +intin_obj_index; +intin_ply_index; +CylinderCollisionSpherecollision_sphere_cylinders; +PLYCollisionSpherecollision_sphere_ply; +Eigen::Vector3dinitial_sphere_pos_v; +unsignedsteps_count; +statestatus; +RelativeLocationinitial_location,location; +intintra_extra_consensus; +unsignedintra_coll_count; +unsignedextra_coll_count; +unsignedintindex; +unsignedintrejection_count; +floatsteps_per_second; + +Walker(); + + +~Walker(){} + + +Walker(doublexmin,doublexmax,doubleymin,doubleymax,doublezmin,doublezmax); + +//Getmethods +voidgetRealPosition(double&,double&,double&)const; +voidgetRealPosition(Eigen::Vector3d&)const; +voidgetVoxelPosition(double&,double&,double&)const; +voidgetVoxelPosition(Eigen::Vector3d&)const; +voidgetInitialPosition(double&,double&,double&)const; +voidgetInitialPosition(Eigen::Vector3d&)const; +voidgetNextDirection(Eigen::Vector3d&)const; +unsignedintgetIndex()const; + +//Setmethods +voidsetRealPosition(constdouble&,constdouble&,constdouble&); +voidsetRealPosition(constEigen::Vector3d&); +voidsetVoxelPosition(constdouble&,constdouble&,constdouble&); +voidsetVoxelPosition(constEigen::Vector3d&); +voidsetInitialPosition(constdouble&,constdouble&,constdouble&); +voidsetInitialPosition(constEigen::Vector3d&); +voidsetNextDirection(Eigen::Vector3d&); +voidsetRandomInitialPosition(constEigen::Vector3d&min,constEigen::Vector3d&max); +voidsetIndex(unsignedint&); + +voidsetRealPosLog(constEigen::Vector3d&pos,unsignedt); +voidsetRealPosLog(doublex,doubley,doublez,unsignedt); +voidsetVoxPosLog(constEigen::Vector3d&pos,unsignedt); +voidsetVoxPosLog(doublex,doubley,doublez,unsignedt); + + +voidsetNumberOfSteps(unsignedT); + +}; + + +#endif//WALKER_H + + + + diff --git a/docs/conf_file_examples/hexagonal_packing.scheme b/docs/conf_file_examples/hexagonal_packing.scheme index 8932825..d29b1c1 100644 --- a/docs/conf_file_examples/hexagonal_packing.scheme +++ b/docs/conf_file_examples/hexagonal_packing.scheme @@ -17,8 +17,8 @@ ply_scale 0.001 -0.0 0.0 -0.001818653347947321 -0.001818653347947321 0.003637306695894642 0.001818653347947321 +-0.00105 -0.00181865 -0.00363731 +0.00315 0.00545596 0.00363731 ini_walkers_pos intra diff --git a/docs/conf_file_examples/hexagonal_packing_2.scheme b/docs/conf_file_examples/hexagonal_packing_2.scheme new file mode 100644 index 0000000..1a0c3f9 --- /dev/null +++ b/docs/conf_file_examples/hexagonal_packing_2.scheme @@ -0,0 +1,30 @@ +N 800 +T 1000 +duration 0.020 +diffusivity 0.6e-10 +exp_prefix /home/jonathan/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/instructions/demos/output/haexagona_packed_spheres + +scheme_file /home/jonathan/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/docs/scheme_files/PGSE_sample_scheme.scheme +scale_from_stu 1 + +write_txt 1 +write_bin 0 +write_traj_file 1 + + +ply /home/jonathan/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/instructions/meshes/hexagonal_packed_spheres.ply +ply_scale 0.001 + + + +-0.00105 -0.00181865 -0.00363731 +0.00315 0.00545596 0.00363731 + + + +ini_walkers_pos intra + +num_process 1 + + +permeability 0.0001 diff --git a/instructions/demos/output/haexagona_packed_spheres_0.hdr.txt b/instructions/demos/output/haexagona_packed_spheres_0.hdr.txt new file mode 100644 index 0000000..5d61b33 --- /dev/null +++ b/instructions/demos/output/haexagona_packed_spheres_0.hdr.txt @@ -0,0 +1,3 @@ +20 +800 +1000 diff --git a/instructions/demos/output/haexagona_packed_spheres_0.traj.txt b/instructions/demos/output/haexagona_packed_spheres_0.traj.txt new file mode 100644 index 0000000..ba01d0f --- /dev/null +++ b/instructions/demos/output/haexagona_packed_spheres_0.traj.txt @@ -0,0 +1,18018 @@ +0.00149977 +0.00140387 +-0.000322506 +0.00148867 +0.00131984 +-0.000326548 +0.00143443 +0.00126263 +-0.000295163 +0.00147167 +0.00133726 +-0.000310772 +0.0015055 +0.00133518 +-0.000232985 +0.00158983 +0.00132647 +-0.000229477 +0.00151176 +0.00130866 +-0.000201409 +0.00150263 +0.00122788 +-0.000225709 +0.00144545 +0.00127888 +-0.000262169 +0.00138661 +0.00128436 +-0.000201273 +0.00146769 +0.00127323 +-0.000223684 +0.0014581 +0.00120518 +-0.000173905 +0.00153681 +0.00123685 +-0.000175511 +0.00154924 +0.00125888 +-0.000256504 +0.0015913 +0.00133175 +-0.000267516 +0.0016398 +0.00138194 +-0.000315767 +0.00170361 +0.00132661 +-0.000323925 +0.00175985 +0.00128474 +-0.00037172 +0.00174081 +0.00132536 +-0.000367014 +0.00178768 +0.0013832 +-0.000407734 +0.00173322 +0.00137037 +-0.000343941 +0.00181437 +0.00139512 +-0.000345403 +0.00186553 +0.00141612 +-0.000324448 +0.00180132 +0.0014642 +-0.000352111 +0.00174223 +0.00147626 +-0.000411801 +0.00174569 +0.00149471 +-0.000329048 +0.00181015 +0.00145066 +-0.000295817 +0.00174592 +0.00149047 +-0.000334406 +0.00182866 +0.0014765 +-0.000321821 +0.00181735 +0.00144931 +-0.000401398 +0.00187453 +0.00144952 +-0.000375104 +0.00179419 +0.00142647 +-0.000360428 +0.00185935 +0.00140735 +-0.000367925 +0.00189023 +0.00148375 +-0.000388184 +0.0018516 +0.00151633 +-0.000320019 +0.0018108 +0.00150152 +-0.000247108 +0.00184911 +0.00142735 +-0.000262337 +0.00181842 +0.00135289 +-0.000289058 +0.00179011 +0.0013063 +-0.000299338 +0.00180439 +0.00133488 +-0.000366245 +0.00178361 +0.00139006 +-0.00039239 +0.00185073 +0.00137197 +-0.000343725 +0.0018721 +0.00141653 +-0.000274749 +0.00192147 +0.00148475 +-0.000264338 +0.00190991 +0.00154752 +-0.000320245 +0.0019513 +0.00157865 +-0.000262318 +0.0019532 +0.00158385 +-0.000177646 +0.0019408 +0.00155024 +-0.000227643 +0.0018729 +0.00150289 +-0.000246276 +0.00194362 +0.00153955 +-0.000275508 +0.00189525 +0.00157999 +-0.000239306 +0.00189813 +0.00164136 +-0.000180778 +0.00184213 +0.0016696 +-0.000237932 +0.00183013 +0.00163644 +-0.00031511 +0.00186983 +0.00169226 +-0.000365185 +0.00190793 +0.00162467 +-0.000399535 +0.0019275 +0.00169649 +-0.000358804 +0.00189379 +0.00166427 +-0.000429694 +0.00191783 +0.00174003 +-0.00043717 +0.00188706 +0.00180641 +-0.000453192 +0.0018562 +0.00179081 +-0.000530678 +0.00186334 +0.00185286 +-0.000543356 +0.00183248 +0.0018162 +-0.000612351 +0.0018219 +0.00178393 +-0.000536564 +0.00184838 +0.00176004 +-0.000536368 +0.00177512 +0.00174747 +-0.000577292 +0.0018509 +0.00172182 +-0.000549026 +0.00184504 +0.00170124 +-0.000482586 +0.00186977 +0.00165145 +-0.00046865 +0.00191661 +0.0017165 +-0.000440816 +0.00192358 +0.00178488 +-0.000391057 +0.0019784 +0.00181289 +-0.000341749 +0.00190184 +0.00177717 +-0.000349645 +0.00183455 +0.00177166 +-0.00029824 +0.00185456 +0.00179718 +-0.000376653 +0.00181148 +0.00172475 +-0.00038658 +0.00187972 +0.00176674 +-0.000414504 +0.00192209 +0.00180841 +-0.000475071 +0.00189217 +0.00173125 +-0.000456341 +0.0018546 +0.00177061 +-0.000391232 +0.00192904 +0.00173772 +-0.000367227 +0.00191942 +0.00182174 +-0.00036029 +0.00192883 +0.00174747 +-0.00040023 +0.00185737 +0.00179171 +-0.000388538 +0.00189411 +0.00179784 +-0.000312299 +0.00190215 +0.00187261 +-0.000272997 +0.00189384 +0.00192384 +-0.000205865 +0.00197083 +0.00191949 +-0.000241287 +0.00200455 +0.00190703 +-0.000174454 +0.001929 +0.00187541 +-0.00019664 +0.00186041 +0.00187936 +-0.000246449 +0.00178147 +0.00184996 +-0.000256594 +0.00172656 +0.00180338 +-0.000301501 +0.00176716 +0.00172922 +-0.000308702 +0.00184165 +0.00168865 +-0.000306452 +0.0018463 +0.0017723 +-0.000292981 +0.00178076 +0.00179946 +-0.000339541 +0.00182983 +0.00182309 +-0.000274466 +0.00190063 +0.00185576 +-0.000307929 +0.0019334 +0.00178848 +-0.000347919 +0.00194154 +0.00180231 +-0.000264598 +0.0020007 +0.00186304 +-0.000260953 +0.00198045 +0.00194544 +-0.000261317 +0.00191626 +0.00191289 +-0.000290124 +0.001942 +0.00189884 +-0.000210502 +0.00198407 +0.00191022 +-0.000217135 +0.00198023 +0.00184865 +-0.000253513 +0.00199376 +0.00192948 +-0.000231522 +0.00198396 +0.00199024 +-0.000175366 +0.00193458 +0.00205681 +-0.000157236 +0.00199652 +0.00202736 +-0.000107275 +0.0019648 +0.0019838 +-4.37206e-05 +0.00200239 +0.00203421 +4.42552e-06 +0.00197463 +0.00202512 +8.13441e-05 +0.0019296 +0.00197522 +0.000133139 +0.001978 +0.00193209 +7.83901e-05 +0.0019667 +0.00201572 +6.94848e-05 +0.00194148 +0.00207568 +1.49981e-05 +0.00192837 +0.00199643 +-1.23464e-05 +0.00198841 +0.00193681 +-5.86795e-06 +0.00202733 +0.00187401 +-2.72919e-05 +0.00197455 +0.00192367 +-7.14291e-05 +0.00190411 +0.00194422 +-0.000114053 +0.00182195 +0.00196518 +-0.000117062 +0.00179031 +0.00190823 +-0.000171427 +0.00182113 +0.00193381 +-9.66204e-05 +0.00189596 +0.00192195 +-0.000134834 +0.00196419 +0.00190892 +-0.000183554 +0.0019977 +0.00188568 +-0.000109141 +0.00201427 +0.00186698 +-4.40735e-05 +0.00194961 +0.00182066 +-1.45281e-05 +0.00190432 +0.00189098 +-2.59068e-07 +0.00198313 +0.0019193 +-1.39313e-05 +0.00191022 +0.0019003 +-5.29601e-05 +0.00189859 +0.0019786 +-8.35215e-05 +0.00197138 +0.00202163 +-9.05209e-05 +0.00191807 +0.00196271 +-0.000120281 +0.0019889 +0.00196326 +-7.35602e-05 +0.00191347 +0.00198681 +-0.000104467 +0.00192747 +0.00206954 +-0.000117074 +0.00197981 +0.00206491 +-8.04155e-05 +0.00194892 +0.00208096 +-0.000157799 +0.00194544 +0.0019988 +-0.000136889 +0.00189184 +0.00198569 +-7.24343e-05 +0.00185354 +0.00204902 +-0.000113936 +0.00180763 +0.00202742 +-0.00018195 +0.00177268 +0.00198432 +-0.000117755 +0.00177386 +0.00190031 +-0.000129639 +0.00178933 +0.00183512 +-7.75802e-05 +0.00187016 +0.00184929 +-5.60073e-05 +0.00190157 +0.00177054 +-5.27939e-05 +0.00195321 +0.0017347 +-0.000109793 +0.00188996 +0.00178987 +-9.73082e-05 +0.00190548 +0.00176218 +-0.000175999 +0.00191459 +0.00183536 +-0.000134035 +0.00193786 +0.00177765 +-0.000191722 +0.00197141 +0.00173595 +-0.000125879 +0.00195675 +0.00177774 +-5.34989e-05 +0.00196275 +0.00177256 +-0.000137981 +0.0019527 +0.00178614 +-5.48272e-05 +0.00202646 +0.00182696 +-6.44346e-05 +0.00200151 +0.00182866 +1.6649e-05 +0.00201954 +0.00181099 +-1.37453e-05 +0.00200277 +0.00183555 +1.77255e-05 +0.0020224 +0.00178959 +-5.08558e-05 +0.0020162 +0.0017356 +-0.000112912 +0.00199459 +0.00176163 +-3.50925e-05 +0.00201323 +0.0016879 +-7.2748e-05 +0.00203251 +0.00174242 +-1.07882e-05 +0.00196199 +0.0017838 +-3.34507e-05 +0.00194974 +0.00183913 +2.9706e-05 +0.00202543 +0.00181812 +6.17921e-05 +0.00204037 +0.00178151 +-1.32824e-05 +0.00199937 +0.0017814 +-8.75721e-05 +0.00200625 +0.00182852 +-8.49375e-05 +0.00193366 +0.0018548 +-4.97131e-05 +0.00194345 +0.00189023 +-0.000126192 +0.00200125 +0.0019152 +-6.93021e-05 +0.00199056 +0.00186302 +-9.78162e-05 +0.00195807 +0.00190268 +-3.02003e-05 +0.001949 +0.00195565 +-9.58643e-05 +0.00199177 +0.0019682 +-8.16545e-05 +0.00195527 +0.0020155 +-2.14068e-05 +0.0019143 +0.00198004 +4.38899e-05 +0.00186629 +0.00193973 +0.000101068 +0.00189137 +0.00188306 +4.31028e-05 +0.00191433 +0.00195384 +2.33271e-06 +0.00183564 +0.00192212 +3.04556e-06 +0.0019195 +0.0019267 +1.51286e-05 +0.00187204 +0.00195322 +-5.00252e-05 +0.00192162 +0.00201462 +-1.88442e-05 +0.00194416 +0.0019524 +3.42725e-05 +0.00189944 +0.0019085 +-2.29286e-05 +0.001915 +0.00183293 +-5.82413e-05 +0.00193826 +0.00188177 +7.13569e-06 +0.0018564 +0.00188002 +-1.51496e-05 +0.00186899 +0.00180767 +2.7375e-05 +0.00192032 +0.00175504 +6.97309e-05 +0.00188812 +0.00183046 +4.79289e-05 +0.00196227 +0.00187086 +5.62155e-05 +0.00193719 +0.0019092 +0.000127639 +0.00185642 +0.00191683 +0.000152503 +0.00180712 +0.00196565 +0.000103645 +0.00176103 +0.00195397 +3.33635e-05 +0.00179834 +0.00199694 +9.63059e-05 +0.00178013 +0.00191733 +0.000119334 +0.00172401 +0.00187486 +7.19314e-05 +0.00165621 +0.00187949 +2.11287e-05 +0.00167962 +0.00191357 +-5.29665e-05 +0.00174446 +0.00186081 +-3.83866e-05 +0.00176289 +0.00191435 +-0.000101579 +0.0018363 +0.00195648 +-9.54914e-05 +0.00190327 +0.00196355 +-4.38692e-05 +0.00198213 +0.00198672 +-2.28001e-05 +0.00198254 +0.00203723 +1.61593e-05 +0.00194755 +0.00205511 +-5.90459e-05 +0.00199342 +0.00202278 +-0.000122686 +0.00193163 +0.00206275 +-8.04534e-05 +0.00196947 +0.0021122 +-8.18636e-05 +0.00192074 +0.00210571 +-1.27055e-05 +0.00190471 +0.00207945 +-9.17857e-05 +0.00186378 +0.0021522 +-0.000107052 +0.00184654 +0.0020899 +-0.00016202 +0.00177727 +0.00208258 +-0.000210471 +0.00172503 +0.00204388 +-0.000155942 +0.00166144 +0.00209223 +-0.000184553 +0.00163499 +0.00206286 +-0.000259638 +0.0016069 +0.00198311 +-0.000266785 +0.00158027 +0.00190257 +-0.000268619 +0.00150276 +0.00187053 +-0.00025577 +0.00151795 +0.00185164 +-0.000174455 +0.00145296 +0.00179711 +-0.000175537 +0.00148944 +0.00176056 +-0.000242865 +0.00157154 +0.00175744 +-0.000264067 +0.00163193 +0.00180411 +-0.000226982 +0.00158476 +0.00177159 +-0.000289574 +0.00158818 +0.00177556 +-0.000374265 +0.00162811 +0.00170425 +-0.000351449 +0.00157521 +0.00168624 +-0.000287595 +0.0016086 +0.00176387 +-0.000295269 +0.001626 +0.00178468 +-0.000375669 +0.00155274 +0.0018258 +-0.000387591 +0.00159926 +0.00176819 +-0.000429026 +0.0015263 +0.00178784 +-0.000390414 +0.00157599 +0.00184899 +-0.000421904 +0.00161484 +0.00178721 +-0.000378623 +0.00169652 +0.00176474 +-0.000383468 +0.00161377 +0.00175776 +-0.00036604 +0.00153189 +0.00176739 +-0.000345968 +0.00153378 +0.00181743 +-0.000414473 +0.0015078 +0.00178898 +-0.00049008 +0.001472 +0.00179692 +-0.000566598 +0.00141514 +0.00174768 +-0.000605864 +0.00142835 +0.00171406 +-0.000529083 +0.00149832 +0.0017415 +-0.000489705 +0.00148185 +0.00178535 +-0.000560457 +0.00145666 +0.00170903 +-0.000533247 +0.00149706 +0.001723 +-0.000459946 +0.00157622 +0.00170871 +-0.000486965 +0.00153407 +0.00164673 +-0.000447183 +0.00153047 +0.00171871 +-0.000402384 +0.00147306 +0.00165657 +-0.000408881 +0.00151991 +0.00158729 +-0.000394562 +0.00156999 +0.00165104 +-0.000419622 +0.0015222 +0.00162925 +-0.000486264 +0.00150482 +0.00155175 +-0.000516124 +0.00153838 +0.00148816 +-0.000561188 +0.00147269 +0.00151535 +-0.000607517 +0.00144425 +0.00156371 +-0.000543859 +0.00150422 +0.00153609 +-0.000490549 +0.00156582 +0.00154385 +-0.000432717 +0.00148795 +0.00157666 +-0.000424976 +0.00155113 +0.0015471 +-0.000376655 +0.00156932 +0.00162786 +-0.000358005 +0.00165086 +0.00160441 +-0.000359379 +0.0017124 +0.00158414 +-0.000414164 +0.00176803 +0.00156518 +-0.000475368 +0.00171833 +0.00163287 +-0.000463224 +0.00168109 +0.00155663 +-0.0004626 +0.00171111 +0.00147926 +-0.00044492 +0.00168764 +0.00154372 +-0.000394984 +0.00165894 +0.00147277 +-0.000358363 +0.00169237 +0.00155019 +-0.000367701 +0.00175044 +0.00160696 +-0.000343107 +0.00177872 +0.00161364 +-0.00042283 +0.00179536 +0.00168369 +-0.000467741 +0.00171113 +0.00167633 +-0.000460645 +0.00174516 +0.00171467 +-0.000393032 +0.00167212 +0.00173205 +-0.00035349 +0.00159297 +0.00175973 +-0.000366506 +0.00151675 +0.0017237 +-0.000376089 +0.00151079 +0.00165061 +-0.000418768 +0.00157589 +0.00164226 +-0.000364986 +0.00165912 +0.00165865 +-0.000363154 +0.0016743 +0.00173907 +-0.000385571 +0.00173595 +0.00173686 +-0.000443825 +0.00171297 +0.00180541 +-0.00039941 +0.00177157 +0.00181854 +-0.000339454 +0.00169047 +0.00181855 +-0.00031448 +0.00175515 +0.00178361 +-0.000272112 +0.00168734 +0.00182288 +-0.000239573 +0.00171273 +0.00176781 +-0.000298925 +0.00179575 +0.00175025 +-0.000299616 +0.00179739 +0.00170952 +-0.000374036 +0.00180906 +0.00179347 +-0.000378105 +0.00174581 +0.00174102 +-0.0003993 +0.00182812 +0.00172869 +-0.00041586 +0.00190979 +0.00175122 +-0.000420582 +0.00183004 +0.00173768 +-0.000394947 +0.00180667 +0.0018191 +-0.000389952 +0.00179353 +0.00189525 +-0.000424998 +0.00184831 +0.00195983 +-0.000419718 +0.00179191 +0.00192681 +-0.000365602 +0.0017225 +0.00194049 +-0.000318753 +0.00166566 +0.00189383 +-0.000276425 +0.00163779 +0.00197394 +-0.000278951 +0.00159344 +0.00198353 +-0.000207252 +0.00166175 +0.00193319 +-0.000207192 +0.00165252 +0.00184993 +-0.000193679 +0.0016681 +0.00192546 +-0.000158295 +0.00169149 +0.00188654 +-0.000229976 +0.0016204 +0.00186613 +-0.000271564 +0.00156339 +0.00192898 +-0.000271013 +0.001635 +0.00197238 +-0.000257291 +0.00155073 +0.00197718 +-0.000265958 +0.00158659 +0.00190074 +-0.000274334 +0.00159812 +0.00198395 +-0.0002624 +0.00160943 +0.00201091 +-0.000182743 +0.00162661 +0.00194531 +-0.000131735 +0.00161566 +0.00195018 +-4.77326e-05 +0.00159918 +0.0018686 +-6.42594e-05 +0.00164928 +0.0018246 +-1.17697e-05 +0.00163852 +0.00174363 +-3.47462e-05 +0.00155478 +0.00175545 +-4.16009e-05 +0.00147614 +0.00175821 +-7.33651e-05 +0.0015004 +0.00177515 +6.16056e-06 +0.00143824 +0.00178627 +6.28356e-05 +0.00138985 +0.00174311 +8.10271e-06 +0.00143271 +0.00170092 +-5.17575e-05 +0.00148004 +0.00173883 +-0.000111111 +0.00152875 +0.00180543 +-9.13391e-05 +0.00161102 +0.00182562 +-8.64147e-05 +0.00161966 +0.00190947 +-9.61582e-05 +0.00156482 +0.0018449 +-0.000100962 +0.00157793 +0.00191859 +-6.09849e-05 +0.00157141 +0.00191045 +-0.000145195 +0.00154157 +0.00192089 +-6.64499e-05 +0.00156004 +0.00197334 +-0.000130546 +0.00159276 +0.00197366 +-5.22566e-05 +0.00161056 +0.0019624 +-0.000134454 +0.00159887 +0.00204482 +-0.000117998 +0.00152002 +0.00205381 +-8.79743e-05 +0.0015241 +0.00209382 +-1.3259e-05 +0.00153282 +0.00201332 +-3.86242e-05 +0.00161529 +0.00203018 +-4.92556e-05 +0.00161696 +0.00211216 +-7.11035e-05 +0.00165312 +0.00208859 +1.94956e-06 +0.00167219 +0.00204351 +7.12663e-05 +0.00160805 +0.00205432 +0.000125757 +0.00152811 +0.00207934 +0.000112174 +0.00146207 +0.00202779 +0.00012563 +0.00146467 +0.00210637 +0.000157546 +0.00148123 +0.00214366 +0.000231946 +0.00146182 +0.00212897 +0.00015066 +0.00141987 +0.00213963 +0.000223644 +0.00139682 +0.00208327 +0.000282739 +0.0014079 +0.00203339 +0.000214997 +0.00133715 +0.00205261 +0.000257723 +0.00129816 +0.00197757 +0.000250751 +0.00122735 +0.00201806 +0.000227384 +0.00122543 +0.00207266 +0.000292313 +0.00115019 +0.00210569 +0.000313486 +0.00108271 +0.00207406 +0.000272918 +0.00104151 +0.00213665 +0.000233108 +0.00109383 +0.00213585 +0.000299902 +0.00112938 +0.00210432 +0.000229603 +0.00106909 +0.00207536 +0.000177396 +0.00112759 +0.00201738 +0.000157007 +0.00116683 +0.00207449 +0.000205987 +0.00114576 +0.00205382 +0.000285542 +0.00107865 +0.00205513 +0.000233633 +0.00114149 +0.00204484 +0.000289708 +0.0010712 +0.00199959 +0.000304253 +0.00105106 +0.00193919 +0.000248162 +0.000975495 +0.00196563 +0.000220038 +0.000892504 +0.00196678 +0.000202399 +0.000835828 +0.00200697 +0.000153689 +0.000846703 +0.00200947 +6.95728e-05 +0.000823054 +0.00209058 +7.74061e-05 +0.000906641 +0.00208065 +6.67032e-05 +0.000844373 +0.00202529 +8.27824e-05 +0.00089708 +0.00195974 +9.39657e-05 +0.000934329 +0.00203036 +0.000122716 +0.000852302 +0.0020087 +0.000121044 +0.000836963 +0.00209184 +0.000113773 +0.000861001 +0.00202139 +7.30506e-05 +0.000854234 +0.002056 +0.000150226 +0.000905374 +0.00203021 +0.000212834 +0.000919518 +0.00204593 +0.000130657 +0.00092828 +0.00209237 +0.000201131 +0.000925398 +0.00217279 +0.000228034 +0.000943961 +0.00209042 +0.000236468 +0.000864037 +0.00206212 +0.000239821 +0.000819158 +0.00205392 +0.000311366 +0.000826486 +0.00198908 +0.000257131 +0.000866058 +0.00194242 +0.000315927 +0.000886026 +0.00189998 +0.000386638 +0.000933759 +0.00192136 +0.000453455 +0.000954702 +0.00192977 +0.00037166 +0.000882422 +0.00190315 +0.000407254 +0.00080957 +0.00189734 +0.000450368 +0.000816573 +0.0019773 +0.000477882 +0.000766261 +0.00199693 +0.000543331 +0.000728137 +0.00197349 +0.00047124 +0.000796347 +0.00195494 +0.0004243 +0.000752458 +0.00199652 +0.000483835 +0.000708804 +0.0020608 +0.000517933 +0.000714094 +0.00207103 +0.000433865 +0.000654006 +0.00211826 +0.000397003 +0.000670083 +0.00203682 +0.000414592 +0.000677933 +0.00197194 +0.000360475 +0.000656043 +0.0020508 +0.000338076 +0.000690041 +0.00199728 +0.000281691 +0.000758935 +0.00201133 +0.000329189 +0.000809465 +0.00198861 +0.000264921 +0.000892904 +0.00200082 +0.00027434 +0.000932345 +0.00195779 +0.000335924 +0.000886397 +0.00192603 +0.000272044 +0.000806048 +0.0019497 +0.000285612 +0.000874507 +0.00198981 +0.000315679 +0.000806405 +0.00203908 +0.000304065 +0.0008399 +0.00201432 +0.000230139 +0.000850448 +0.00209131 +0.000264214 +0.000805324 +0.00208218 +0.000192936 +0.000731028 +0.0021027 +0.000228417 +0.000730718 +0.00214096 +0.000304156 +0.000797985 +0.00215537 +0.000353831 +0.000763769 +0.00208547 +0.000387642 +0.000696224 +0.00207544 +0.000337273 +0.000694635 +0.00212185 +0.00026626 +0.000728376 +0.00218289 +0.000314594 +0.000654877 +0.00221409 +0.000285881 +0.000701274 +0.00214709 +0.000309509 +0.000717874 +0.00213036 +0.000227995 +0.000682049 +0.00213347 +0.000304851 +0.000670902 +0.00215391 +0.000223252 +0.000605809 +0.00217162 +0.000171783 +0.000591201 +0.00211714 +0.000235178 +0.000610965 +0.0021235 +0.000152904 +0.000688324 +0.00213251 +0.000186584 +0.000649331 +0.00209364 +0.00025115 +0.000581558 +0.00205627 +0.000216362 +0.000528519 +0.00206223 +0.000150397 +0.000512325 +0.00203781 +7.07634e-05 +0.000521578 +0.00209976 +1.35219e-05 +0.000579824 +0.00215967 +2.82939e-05 +0.000594108 +0.0022284 +7.5954e-05 +0.00051601 +0.00226099 +6.97299e-05 +0.000478568 +0.00231225 +0.000126039 +0.000548583 +0.00235955 +0.000133826 +0.000508058 +0.00241329 +8.21628e-05 +0.000485467 +0.00235878 +0.000143134 +0.000527949 +0.00229198 +0.000112572 +0.000473856 +0.00234105 +6.93704e-05 +0.00040466 +0.00237519 +0.000104672 +0.000468145 +0.0023369 +6.33975e-05 +0.0005377 +0.00237091 +9.81215e-05 +0.000459233 +0.00238861 +0.000125128 +0.000532119 +0.00234658 +0.000114143 +0.000527581 +0.00241651 +0.000161994 +0.000551339 +0.0024625 +0.000229227 +0.000531099 +0.00239363 +0.000274478 +0.000553918 +0.00247516 +0.000268825 +0.000562815 +0.00246084 +0.000351985 +0.000589234 +0.00251443 +0.000291736 +0.000540894 +0.00251501 +0.000222002 +0.000554168 +0.00253393 +0.000303647 +0.000479342 +0.00249755 +0.000286985 +0.000497759 +0.00253734 +0.000330982 +0.000473229 +0.00248551 +0.000372981 +0.000452143 +0.00240679 +0.000349352 +0.000470148 +0.00232455 +0.00035996 +0.000494684 +0.00236894 +0.000291939 +0.000569811 +0.00232962 +0.000295029 +0.00055539 +0.00241318 +0.000291824 +0.000561506 +0.00244434 +0.000213138 +0.00061094 +0.0023842 +0.000246891 +0.000602573 +0.00235462 +0.000325982 +0.000593984 +0.00243147 +0.000291039 +0.000543127 +0.00249644 +0.000310839 +0.000546767 +0.00241555 +0.000285474 +0.000524242 +0.00237493 +0.000356489 +0.00059286 +0.00237682 +0.000306608 +0.000665816 +0.00239654 +0.000345187 +0.000717873 +0.00245571 +0.000376633 +0.000717677 +0.00239853 +0.000439328 +0.000784305 +0.00243837 +0.000473578 +0.000802281 +0.00242808 +0.000391292 +0.000751084 +0.00240096 +0.000453285 +0.000765387 +0.00231771 +0.000445228 +0.000778127 +0.00238011 +0.000389156 +0.000773167 +0.00229736 +0.000371032 +0.00081086 +0.00223896 +0.000322364 +0.000834135 +0.0022464 +0.000403622 +0.000826977 +0.00219513 +0.000336395 +0.000799748 +0.00212006 +0.000307711 +0.000799705 +0.00212754 +0.000392233 +0.000846113 +0.00211098 +0.000461312 +0.000923668 +0.00208168 +0.000443234 +0.000865725 +0.00203956 +0.000397756 +0.000814006 +0.0021063 +0.000406184 +0.00081533 +0.00213143 +0.000325148 +0.000750416 +0.00208165 +0.000302599 +0.000702109 +0.00205105 +0.000365291 +0.000619882 +0.00203169 +0.000373265 +0.000571157 +0.00201712 +0.000305341 +0.000509542 +0.00198629 +0.000354872 +0.000450811 +0.00198086 +0.000415873 +0.00037183 +0.00195427 +0.000399907 +0.000314216 +0.0019515 +0.000337674 +0.000361258 +0.00193398 +0.000269261 +0.000341654 +0.00189688 +0.00019551 +0.000279724 +0.00194672 +0.000225192 +0.000211568 +0.00198986 +0.000251522 +0.000264783 +0.00203158 +0.000302783 +0.000264438 +0.00201703 +0.000386378 +0.00022348 +0.00194344 +0.000396703 +0.000180641 +0.00200728 +0.000402524 +0.000154155 +0.00193302 +0.000371143 +0.000183376 +0.00186426 +0.000369923 +0.000116955 +0.00184978 +0.000323865 +0.000188373 +0.00189521 +0.000317855 +0.000174818 +0.00188659 +0.000401174 +0.000149837 +0.00184257 +0.00033307 +0.000129975 +0.00178786 +0.000307515 +0.000148773 +0.00176996 +0.00022673 +0.000173094 +0.00183998 +0.000268036 +0.00025387 +0.00186146 +0.000282657 +0.000311321 +0.00182337 +0.000332147 +0.000280179 +0.00175739 +0.000288828 +0.000250594 +0.00177396 +0.000211045 +0.000232238 +0.00169157 +0.000202396 +0.000256951 +0.00161066 +0.000208968 +0.000214059 +0.00156158 +0.00015464 +0.000176306 +0.0015925 +8.52222e-05 +0.000189834 +0.00162129 +0.000163885 +0.000138191 +0.0015573 +0.000142973 +0.00015474 +0.00150133 +0.000108545 +0.000182693 +0.00156852 +6.49095e-05 +0.000157404 +0.00150251 +0.000111851 +0.000137116 +0.00144036 +5.77642e-05 +0.000209642 +0.0014474 +5.67939e-05 +0.00019939 +0.0014398 +-2.70938e-05 +0.000181295 +0.00139046 +-2.23282e-05 +0.000227506 +0.00139817 +-9.30751e-05 +0.00018189 +0.00136087 +-3.20209e-05 +0.000183096 +0.00140943 +3.75564e-05 +0.000225526 +0.00140405 +0.000110842 +0.000166676 +0.00144837 +0.000152938 +0.000166348 +0.00145702 +9.43238e-05 +0.000194314 +0.00144231 +1.55737e-05 +0.000164472 +0.00144642 +-6.37518e-05 +0.000221093 +0.00143005 +-2.71086e-06 +0.000163906 +0.00142264 +5.95357e-05 +0.000217756 +0.00139225 +5.60106e-05 +0.000213144 +0.00136613 +2.76365e-05 +0.00024289 +0.00143848 +6.05098e-05 +0.000262558 +0.00147534 +-1.33493e-05 +0.000213803 +0.00154197 +-3.29305e-05 +0.000134714 +0.00151417 +-1.9796e-05 +0.000217076 +0.0015293 +-3.34967e-05 +0.000222117 +0.00161059 +-5.73007e-05 +0.000151489 +0.00165367 +-3.8454e-05 +0.000208666 +0.00159188 +-2.7874e-05 +0.000192712 +0.00153564 +3.36307e-05 +0.000148409 +0.00160796 +3.64135e-05 +0.000107115 +0.00161194 +-8.33846e-06 +0.00011989 +0.00158082 +-8.62384e-05 +0.000130806 +0.00165021 +-7.51504e-05 +0.000135376 +0.00162614 +-0.000107545 +0.000201533 +0.00166327 +-6.95391e-05 +0.000130695 +0.00169473 +-3.50043e-05 +0.000213665 +0.00168384 +-4.90545e-05 +0.000212747 +0.00163167 +1.78608e-05 +0.000175843 +0.00170785 +1.19811e-05 +0.000149198 +0.00169891 +-6.8081e-05 +7.48253e-05 +0.00172712 +-4.83915e-05 +0.000139286 +0.0016801 +-1.95183e-05 +0.000158599 +0.001629 +-8.4448e-05 +0.000197513 +0.00169898 +-0.000112526 +0.000257209 +0.00170151 +-5.22764e-05 +0.00020424 +0.00173186 +-0.000111207 +0.000248426 +0.00179118 +-6.9631e-05 +0.000267391 +0.00174395 +-1.73696e-06 +0.000277472 +0.00165973 +-4.03721e-06 +0.000220098 +0.00160269 +-2.96179e-05 +0.000148375 +0.00164595 +-4.31845e-05 +0.000213915 +0.00167063 +-9.10987e-05 +0.000251372 +0.00171951 +-0.000149473 +0.000174375 +0.00175515 +-0.000148449 +0.000249487 +0.0017821 +-0.000119607 +0.000265935 +0.00184846 +-0.000169876 +0.000181165 +0.00185034 +-0.00017311 +0.000109035 +0.00189261 +-0.000158601 +0.000120257 +0.00185205 +-0.000178361 +0.000188848 +0.00180297 +-0.000187693 +0.000107903 +0.00182725 +-0.000180026 +0.000138366 +0.00189899 +-0.000213562 +0.000142668 +0.00181638 +-0.000232434 +0.000169081 +0.00188095 +-0.000184144 +0.000177907 +0.00180515 +-0.000147051 +0.00017281 +0.00188346 +-0.000114781 +0.000212934 +0.00185921 +-4.40559e-05 +0.000172119 +0.00179621 +-8.36148e-05 +0.000208793 +0.00187235 +-9.11848e-05 +0.000167804 +0.00192961 +-0.000138533 +0.000133723 +0.00194653 +-0.000214375 +0.000136964 +0.00186993 +-0.000178009 +0.000101022 +0.00194192 +-0.000204949 +0.000154325 +0.00200245 +-0.000204271 +0.000161756 +0.00192039 +-0.000183973 +0.000146096 +0.00187138 +-0.000116499 +0.000223323 +0.00186957 +-0.000151608 +0.000280175 +0.00184234 +-9.4807e-05 +0.000209931 +0.00183123 +-0.000141094 +0.000261595 +0.00188935 +-0.000175056 +0.000179334 +0.00190632 +-0.000187099 +0.000138002 +0.00188744 +-0.000258761 +0.000101942 +0.0018283 +-0.000209748 +0.00011926 +0.00174539 +-0.000214788 +0.000197879 +0.00176064 +-0.000242834 +0.000165647 +0.00180442 +-0.000177687 +0.000170565 +0.00172154 +-0.000195172 +0.000221235 +0.001715 +-0.000127424 +0.000194076 +0.00175301 +-5.65854e-05 +0.00021733 +0.0017303 +2.17964e-05 +0.000228146 +0.00175971 +0.000100653 +0.000197361 +0.00172021 +0.000169152 +0.000151373 +0.00177325 +0.000121489 +8.55736e-05 +0.00173606 +8.29224e-05 +9.60591e-05 +0.00173958 +-1.20652e-06 +8.52418e-05 +0.00177267 +-7.85882e-05 +0.000102247 +0.00179311 +1.99123e-06 +0.000169123 +0.00182494 +4.33974e-05 +0.000141602 +0.0017453 +3.33896e-05 +0.000205162 +0.00170914 +-9.65595e-06 +0.000237798 +0.00177114 +-5.7525e-05 +0.000289338 +0.0017292 +-4.75425e-06 +0.000305858 +0.00164602 +-1.87102e-06 +0.000244007 +0.00158922 +-1.40506e-05 +0.000322705 +0.00161602 +2.9267e-06 +0.000288929 +0.0016931 +1.38018e-05 +0.000212734 +0.00172127 +3.83102e-05 +0.0001595 +0.00169826 +-2.36304e-05 +0.000225294 +0.0017215 +-7.19141e-05 +0.000257337 +0.0016434 +-6.32604e-05 +0.00021307 +0.00170238 +-2.12849e-05 +0.000261496 +0.0017698 +-3.88742e-05 +0.000336762 +0.00175753 +-1.66673e-06 +0.000276185 +0.00181689 +9.48578e-07 +0.000241083 +0.00183869 +7.50616e-05 +0.000324276 +0.00183411 +5.90002e-05 +0.000303875 +0.00187626 +0.000129757 +0.000261716 +0.00180327 +0.000139483 +0.000286034 +0.00184494 +6.96778e-05 +0.000249006 +0.00183427 +-5.92048e-06 +0.000270155 +0.00177267 +-6.03178e-05 +0.000252432 +0.00182778 +-0.00012236 +0.000222546 +0.0017561 +-8.81724e-05 +0.000229518 +0.00183279 +-5.25428e-05 +0.000185214 +0.00178624 +-0.000107954 +0.000140312 +0.00185758 +-9.82449e-05 +0.000191421 +0.00189315 +-0.00015589 +0.000120389 +0.00188649 +-0.000109954 +0.000129375 +0.00181526 +-6.47207e-05 +7.1234e-05 +0.00184935 +-9.83066e-05 +7.80816e-05 +0.00177465 +-0.00012788 +0.00010191 +0.00181146 +-6.35235e-05 +0.000148479 +0.00186292 +-0.000112345 +0.000162258 +0.00178222 +-0.000134645 +0.000181855 +0.00177929 +-0.000217152 +0.000257925 +0.00174567 +-0.000200332 +0.000273273 +0.00182654 +-0.000220959 +0.000293643 +0.00179181 +-0.000146267 +0.000272515 +0.0017186 +-0.000183606 +0.000319156 +0.00177838 +-0.000221694 +0.000305963 +0.00186016 +-0.0002033 +0.000355047 +0.00179605 +-0.000177215 +0.000433411 +0.00176351 +-0.000177928 +0.000505397 +0.00180589 +-0.000163024 +0.000447531 +0.00184797 +-0.000117411 +0.000378824 +0.00183614 +-0.000165778 +0.000382074 +0.00192016 +-0.000177207 +0.00040806 +0.0018674 +-0.000116037 +0.000364906 +0.00180161 +-0.000147809 +0.000284139 +0.00178542 +-0.000127451 +0.000366704 +0.00177785 +-0.000109401 +0.000369719 +0.00185758 +-8.05322e-05 +0.000436062 +0.00180507 +-8.69624e-05 +0.000409375 +0.00184346 +-0.000157776 +0.000326368 +0.00185854 +-0.000166854 +0.000268654 +0.00181828 +-0.000119436 +0.000253855 +0.00175533 +-0.000174381 +0.000293915 +0.00182346 +-0.000205271 +0.000276362 +0.00184809 +-0.000125991 +0.000318794 +0.0018184 +-5.877e-05 +0.000350339 +0.00185725 +-0.000127298 +0.000308708 +0.00189633 +-0.000190061 +0.000375214 +0.00193856 +-0.000158531 +0.000294102 +0.00193041 +-0.000134985 +0.000302546 +0.00187561 +-0.000199215 +0.000322258 +0.00190842 +-0.000274945 +0.000334313 +0.00194573 +-0.000199694 +0.000265577 +0.00198821 +-0.0002256 +0.000191791 +0.00202476 +-0.000205113 +0.000130712 +0.0020656 +-0.000215879 +0.000206515 +0.0021037 +-0.000214308 +0.000271148 +0.00212046 +-0.00026667 +0.000323901 +0.00207572 +-0.000315817 +0.000364604 +0.00214271 +-0.000348303 +0.000316452 +0.0020765 +-0.000326015 +0.000370948 +0.00202063 +-0.000359325 +0.000292849 +0.00199828 +-0.000383834 +0.000362109 +0.00199217 +-0.000335196 +0.000368194 +0.00207675 +-0.000338054 +0.000380886 +0.00209868 +-0.000257072 +0.000391991 +0.00218137 +-0.000272533 +0.000404555 +0.00225536 +-0.000312115 +0.000332031 +0.00221483 +-0.000294873 +0.000308686 +0.00220253 +-0.000214228 +0.000372814 +0.0022237 +-0.000162851 +0.000401859 +0.00226162 +-9.27199e-05 +0.000361918 +0.00226337 +-1.78757e-05 +0.0004162 +0.00230628 +3.12313e-05 +0.000450846 +0.00233336 +0.000103802 +0.000438111 +0.00224985 +0.000111802 +0.000384835 +0.00220631 +0.000161458 +0.000367319 +0.00221275 +0.000244233 +0.000307249 +0.00226928 +0.000224351 +0.000264695 +0.00219871 +0.00024456 +0.000310844 +0.00226735 +0.000225633 +0.000337713 +0.00230083 +0.000298828 +0.0002924 +0.00236861 +0.000281045 +0.000305022 +0.00228479 +0.000277155 +0.000348071 +0.00223607 +0.00033168 +0.000422364 +0.0022023 +0.000354929 +0.000463118 +0.00227459 +0.000337245 +0.00041617 +0.00225113 +0.000403919 +0.000366158 +0.00221897 +0.000464457 +0.000282758 +0.00220417 +0.000459444 +0.000266904 +0.00212808 +0.000493506 +0.000285403 +0.00208653 +0.000560319 +0.000336567 +0.00209073 +0.000626986 +0.000400749 +0.00214577 +0.00061987 +0.00042313 +0.00210519 +0.000690946 +0.000482074 +0.00209852 +0.000710502 +0.000535527 +0.00211813 +0.000773414 +0.000601056 +0.00214913 +0.000729312 +0.00059097 +0.00220908 +0.000784364 +0.000663018 +0.00216428 +0.000785582 +0.000621566 +0.00209024 +0.000786449 +0.000597734 +0.00202058 +0.000744269 +0.000539594 +0.00195907 +0.000738212 +0.000511771 +0.00196119 +0.000658079 +0.000530067 +0.00189423 +0.000706875 +0.000572589 +0.00196077 +0.000737928 +0.000541466 +0.00190783 +0.000679372 +0.000487871 +0.0019089 +0.000613597 +0.000478578 +0.00198821 +0.0006423 +0.000433498 +0.00200958 +0.000710938 +0.000438713 +0.00200993 +0.00068457 +0.000520002 +0.00200176 +0.000661645 +0.000513018 +0.00194087 +0.000602971 +0.000593471 +0.00196749 +0.000598656 +0.000642318 +0.00195676 +0.000530108 +0.000681794 +0.0020291 +0.000550313 +0.000661689 +0.00205178 +0.000471055 +0.000687526 +0.00197111 +0.000476046 +0.00073063 +0.00189819 +0.000481026 +0.000652379 +0.00187277 +0.000501779 +0.00064625 +0.00193029 +0.000439703 +0.000718402 +0.0018916 +0.000461998 +0.000635868 +0.00188131 +0.000445199 +0.000694584 +0.00192169 +0.000491264 +0.000657861 +0.0019898 +0.000456459 +0.000579262 +0.00195952 +0.000446224 +0.000531784 +0.00191937 +0.000388481 +0.000503887 +0.00199736 +0.000406932 +0.00046636 +0.00192617 +0.000433847 +0.000474087 +0.00194288 +0.000516679 +0.000451832 +0.00200938 +0.000564454 +0.000445219 +0.00198515 +0.000483403 +0.00051128 +0.00198178 +0.000430257 +0.000541853 +0.00194071 +0.000362591 +0.00050181 +0.00198253 +0.000424622 +0.000515604 +0.00196525 +0.000506544 +0.000494181 +0.00190107 +0.000557753 +0.000542965 +0.00194853 +0.00050708 +0.000589393 +0.00195612 +0.000577698 +0.000607176 +0.00187844 +0.00060684 +0.000586369 +0.00192242 +0.000676358 +0.000587655 +0.00200665 +0.000666166 +0.000526844 +0.00197864 +0.000718298 +0.000604832 +0.00197498 +0.000751532 +0.000616101 +0.00195357 +0.000832863 +0.000578672 +0.00188779 +0.000794499 +0.000546266 +0.00181348 +0.000769426 +0.000543402 +0.00179978 +0.000853116 +0.000610324 +0.00178007 +0.000811547 +0.000585012 +0.00184658 +0.000765324 +0.00064997 +0.0018168 +0.000811082 +0.000589488 +0.00187618 +0.000815152 +0.000671858 +0.00185606 +0.00081841 +0.000751678 +0.00187197 +0.000794413 +0.000753601 +0.001902 +0.000715076 +0.000714077 +0.00187209 +0.000783946 +0.000784043 +0.00187799 +0.000831589 +0.000723992 +0.00186119 +0.000774042 +0.000643507 +0.00185247 +0.000748627 +0.000696775 +0.00181103 +0.00080006 +0.000743962 +0.00174306 +0.000818858 +0.000714965 +0.00174523 +0.000898573 +0.000691797 +0.00181936 +0.000864414 +0.000719328 +0.00176759 +0.000803079 +0.000745727 +0.00173842 +0.000878257 +0.00073338 +0.00166111 +0.00084552 +0.00076694 +0.00162537 +0.000776265 +0.000699563 +0.0015785 +0.000797785 +0.000719419 +0.00159346 +0.000878914 +0.000659884 +0.00165258 +0.000891569 +0.000701861 +0.00158019 +0.000877535 +0.000662491 +0.00152943 +0.000822095 +0.00073086 +0.00157355 +0.000846155 +0.000721761 +0.00157829 +0.000761924 +0.000661674 +0.00163032 +0.000791629 +0.00063373 +0.00169131 +0.000739677 +0.000668868 +0.00168668 +0.000816773 +0.00063377 +0.00170286 +0.000741233 +0.000669348 +0.0017674 +0.000699177 +0.000632877 +0.00184177 +0.000717617 +0.000573772 +0.00188862 +0.000678745 +0.00057588 +0.00185684 +0.000600098 +0.000640927 +0.00189975 +0.000566516 +0.000683356 +0.00197295 +0.000560076 +0.000685031 +0.00192371 +0.000490988 +0.000753295 +0.00195419 +0.000531129 +0.000726054 +0.00188379 +0.000569878 +0.000728847 +0.00193593 +0.000636763 +0.000652393 +0.00190043 +0.000627021 +0.000637867 +0.00197691 +0.000660779 +0.000584053 +0.00200247 +0.000721203 +0.000530893 +0.00197303 +0.000661979 +0.000483277 +0.00195929 +0.000593104 +0.000441946 +0.00188623 +0.000580659 +0.000484128 +0.0018596 +0.000649298 +0.000495024 +0.00193783 +0.000618297 +0.000499453 +0.00192159 +0.000701463 +0.000417714 +0.00192437 +0.000678857 +0.00048334 +0.00197726 +0.000669054 +0.000531226 +0.00200039 +0.000735175 +0.000547809 +0.00207068 +0.000690635 +0.000543006 +0.00212724 +0.000627562 +0.000541532 +0.0020425 +0.000631651 +0.000583761 +0.00210828 +0.000664642 +0.000645262 +0.00212794 +0.000609584 +0.000595235 +0.00219453 +0.000625803 +0.000585923 +0.00225197 +0.000564048 +0.000584978 +0.00232341 +0.000609832 +0.000521693 +0.00236839 +0.000575599 +0.000587976 +0.00233009 +0.000612203 +0.000599763 +0.00230745 +0.000531281 +0.000597353 +0.00233774 +0.000610505 +0.000643925 +0.00231016 +0.000545158 +0.000674463 +0.00233725 +0.000470768 +0.000609208 +0.0023877 +0.000490685 +0.000686198 +0.00241887 +0.000473348 +0.000703824 +0.00237573 +0.00040244 +0.000764174 +0.00242687 +0.000371746 +0.000728389 +0.00249862 +0.000343959 +0.000672696 +0.00253304 +0.000397934 +0.000597581 +0.00256237 +0.00037152 +0.000514311 +0.00255789 +0.000355836 +0.00058828 +0.00251685 +0.000362491 +0.000574683 +0.00250612 +0.000279424 +0.000644974 +0.00254842 +0.000301097 +0.000663238 +0.00259194 +0.00023058 +0.00066045 +0.0026401 +0.000160774 +0.000638583 +0.00255812 +0.000161587 +0.000679359 +0.00248709 +0.000183779 +0.000704298 +0.00255433 +0.000138422 +0.000775169 +0.0025218 +0.000104967 +0.000739905 +0.00244488 +9.87006e-05 +0.000790811 +0.00244612 +3.08257e-05 +0.000722969 +0.0024207 +-1.3344e-05 +0.000643541 +0.00245046 +-1.10306e-05 +0.000570419 +0.00249209 +-9.12827e-08 +0.000545938 +0.00248479 +-8.1007e-05 +0.000584524 +0.00241313 +-5.70172e-05 +0.000587314 +0.00236861 +1.51659e-05 +0.000640097 +0.00238288 +8.00528e-05 +0.000597607 +0.00234857 +0.000144996 +0.000589838 +0.00240955 +8.64965e-05 +0.000549554 +0.00235874 +0.000141236 +0.000523022 +0.00228897 +0.0001009 +0.000605674 +0.00229809 +0.000117793 +0.000608135 +0.00229958 +3.29892e-05 +0.000688047 +0.00230463 +4.90665e-06 +0.000743272 +0.0022738 +6.14715e-05 +0.000742116 +0.00226843 +0.000146146 +0.000736828 +0.00220408 +0.000201208 +0.000752849 +0.00217402 +0.000278924 +0.000769112 +0.00214926 +0.000358436 +0.000720476 +0.00209073 +0.000395973 +0.000786563 +0.00203801 +0.000388667 +0.000787786 +0.00200679 +0.000309775 +0.000770761 +0.00205144 +0.000379896 +0.000758892 +0.00210972 +0.000440418 +0.000820889 +0.00216367 +0.000419325 +0.000899089 +0.00215044 +0.000449487 +0.000902125 +0.00219667 +0.000520578 +0.000824971 +0.00217895 +0.000490025 +0.000872456 +0.0022362 +0.00053087 +0.000931225 +0.00217744 +0.000548022 +0.00101361 +0.00216593 +0.000531276 +0.00103073 +0.00213824 +0.000452916 +0.000999184 +0.00212247 +0.00053009 +0.000969468 +0.00219847 +0.000553337 +0.00101436 +0.00213855 +0.000513407 +0.000999487 +0.00221401 +0.000477558 +0.00101084 +0.00221381 +0.000393468 +0.00106329 +0.00227885 +0.000408237 +0.00107592 +0.00235546 +0.000442473 +0.0011463 +0.0023831 +0.000403962 +0.00113943 +0.00234881 +0.000326652 +0.00112083 +0.00242247 +0.000364447 +0.00114724 +0.00236043 +0.000415964 +0.00113752 +0.00230691 +0.000350843 +0.00120472 +0.00235717 +0.00033826 +0.00125037 +0.00241752 +0.000299859 +0.0011985 +0.00236495 +0.000341648 +0.00112276 +0.00240087 +0.000354807 +0.00105604 +0.00238354 +0.000404284 +0.00113472 +0.00237906 +0.000372834 +0.00111968 +0.00231367 +0.000424777 +0.0010389 +0.00233235 +0.00044284 +0.00101673 +0.00225064 +0.000448512 +0.000992988 +0.00231868 +0.000403712 +0.00104228 +0.00225429 +0.000378718 +0.00103294 +0.00218247 +0.000422929 +0.00107734 +0.00218408 +0.000495224 +0.0010126 +0.00213601 +0.000468805 +0.000946028 +0.00212344 +0.000519895 +0.000914777 +0.00215116 +0.000593753 +0.000996748 +0.00216474 +0.000576532 +0.00102057 +0.00220302 +0.000504653 +0.000980831 +0.0022109 +0.000579208 +0.000896373 +0.00220288 +0.000580758 +0.0009203 +0.00212418 +0.000601595 +0.000931423 +0.00205887 +0.000654621 +0.000870966 +0.00207234 +0.000712617 +0.000868522 +0.00202092 +0.000780069 +0.000785971 +0.00201081 +0.000796892 +0.000784808 +0.00203577 +0.000715801 +0.000711719 +0.00199457 +0.000728487 +0.000635541 +0.00201409 +0.000760361 +0.000592429 +0.00198468 +0.000693455 +0.000547507 +0.00195278 +0.000757984 +0.000540034 +0.00192351 +0.00083728 +0.000613124 +0.00194322 +0.000872903 +0.000663964 +0.00189078 +0.000855996 +0.000746429 +0.00190531 +0.000869722 +0.000771677 +0.00191611 +0.00094913 +0.000714214 +0.00192055 +0.000886853 +0.000726705 +0.00188006 +0.000908115 +0.00073501 +0.00181332 +0.000922137 +0.000818582 +0.001802 +0.000912789 +0.000815079 +0.00188673 +0.00091564 +0.000848158 +0.00182168 +0.000872355 +0.000877974 +0.00187477 +0.000931444 +0.000863044 +0.00183349 +0.000858828 +0.000830885 +0.00178131 +0.000917505 +0.000911548 +0.001755 +0.000918512 +0.000925636 +0.00176594 +0.000970958 +0.000874314 +0.00169856 +0.000973982 +0.000941163 +0.00167296 +0.000928424 +0.00100961 +0.00171549 +0.000901846 +0.00104063 +0.00179425 +0.00089589 +0.00111085 +0.00180707 +0.000941763 +0.00110864 +0.00179247 +0.000961758 +0.00118687 +0.0018144 +0.000986228 +0.00120851 +0.00177288 +0.00091546 +0.0011993 +0.00183636 +0.000971012 +0.00118946 +0.00181752 +0.000916957 +0.00117877 +0.00173519 +0.000934491 +0.00113017 +0.00178986 +0.00097749 +0.00113642 +0.0018167 +0.000897239 +0.0010771 +0.00186478 +0.000934249 +0.00115081 +0.0018601 +0.000976021 +0.00110912 +0.00182636 +0.000938462 +0.00112732 +0.00176033 +0.000988554 +0.00113578 +0.00170538 +0.000927687 +0.00099469 +0.00394905 +-0.000965625 +0.000920201 +0.00390866 +-0.000970029 +0.00100264 +0.00389468 +-0.000984485 +0.000972934 +0.00397013 +-0.000959473 +0.000903828 +0.00401614 +-0.000941934 +0.000984595 +0.00402892 +-0.000964593 +0.000969554 +0.00395126 +-0.000995298 +0.00095623 +0.0039859 +-0.0010716 +0.000951733 +0.00392424 +-0.00112972 +0.00088664 +0.00396293 +-0.00109143 +0.000860704 +0.00403045 +-0.00104706 +0.000872991 +0.00410841 +-0.00101589 +0.000825836 +0.00404795 +-0.000979541 +0.000816961 +0.00398266 +-0.000926076 +0.000869538 +0.00401015 +-0.000986737 +0.000945315 +0.00404467 +-0.00100305 +0.000936523 +0.00410267 +-0.000957555 +0.000928889 +0.00403017 +-0.000914446 +0.000900947 +0.0039552 +-0.000889512 +0.000849754 +0.00389802 +-0.000918288 +0.000866774 +0.00381795 +-0.000940624 +0.000846707 +0.00379087 +-0.00086275 +0.0007654 +0.00377586 +-0.000879652 +0.000810511 +0.00379365 +-0.000941113 +0.000785558 +0.00372034 +-0.000975794 +0.000797038 +0.00376436 +-0.000904168 +0.000795962 +0.0037032 +-0.000878341 +0.000844686 +0.00368828 +-0.000946187 +0.000893175 +0.00367661 +-0.000877539 +0.000922526 +0.00367689 +-0.000957153 +0.000892566 +0.0036335 +-0.000890674 +0.000936626 +0.00368592 +-0.00084056 +0.000878997 +0.00362963 +-0.000850904 +0.000895769 +0.00370132 +-0.000861975 +0.000852904 +0.00373471 +-0.000879263 +0.000898686 +0.00374447 +-0.000877371 +0.000850597 +0.00369807 +-0.000929668 +0.000882953 +0.00370069 +-0.000851271 +0.000803411 +0.00367364 +-0.000863166 +0.00081174 +0.00358928 +-0.000859542 +0.000868512 +0.00352706 +-0.000849221 +0.000786378 +0.00352906 +-0.000870432 +0.000758512 +0.00354884 +-0.000939362 +0.000676234 +0.0035281 +-0.000938912 +0.000643784 +0.00353241 +-0.000965598 +0.000581706 +0.00348877 +-0.00100357 +0.000621227 +0.00346038 +-0.00107308 +0.000585551 +0.00351926 +-0.00102348 +0.000521031 +0.00355729 +-0.000983601 +0.000494484 +0.00348342 +-0.00101467 +0.000440408 +0.00346018 +-0.0010751 +0.000516508 +0.00342516 +-0.00108862 +0.000464203 +0.0034795 +-0.0011275 +0.000461686 +0.00350199 +-0.00120927 +0.000446196 +0.00356833 +-0.00115868 +0.000497731 +0.00361992 +-0.00120207 +0.000498027 +0.00362488 +-0.00128678 +0.000499954 +0.00364066 +-0.00137013 +0.000472117 +0.00358818 +-0.00130953 +0.000432494 +0.00351486 +-0.00129358 +0.000508009 +0.00350177 +-0.00133 +0.000480478 +0.00357153 +-0.00136969 +0.000437371 +0.00352338 +-0.00142467 +0.000491943 +0.00346737 +-0.00139173 +0.000417142 +0.00350312 +-0.00140981 +0.000490621 +0.00346369 +-0.0014255 +0.000485325 +0.0035226 +-0.00148633 +0.000534585 +0.00357234 +-0.00143837 +0.000509603 +0.00349541 +-0.00146403 +0.000505478 +0.0035739 +-0.00149601 +0.000502585 +0.00364823 +-0.00153683 +0.000530541 +0.00360124 +-0.00147194 +0.000491114 +0.00356973 +-0.00140373 +0.000432388 +0.00363091 +-0.0014066 +0.000412462 +0.00360113 +-0.00132968 +0.000420118 +0.00366073 +-0.00138959 +0.000467932 +0.00360056 +-0.00135364 +0.00038898 +0.00359676 +-0.0013845 +0.000354415 +0.00359591 +-0.00146199 +0.000347009 +0.00367506 +-0.00143231 +0.000353093 +0.00370762 +-0.00151043 +0.00036765 +0.00370027 +-0.00142716 +0.00029378 +0.00368823 +-0.00138718 +0.00032385 +0.00376604 +-0.00137165 +0.000299021 +0.00371411 +-0.00143399 +0.000348317 +0.00375541 +-0.00148935 +0.000396693 +0.00382424 +-0.00147826 +0.000342919 +0.00387177 +-0.00143299 +0.000375088 +0.00380269 +-0.00147032 +0.000401612 +0.00381009 +-0.00139006 +0.000471629 +0.00385127 +-0.00141459 +0.000400074 +0.00385766 +-0.00145974 +0.000395073 +0.00377401 +-0.00144639 +0.000398822 +0.00382834 +-0.00151147 +0.000385522 +0.00391212 +-0.00151347 +0.000367409 +0.00398864 +-0.0014816 +0.000416452 +0.0039491 +-0.00153844 +0.000401883 +0.00399688 +-0.00160703 +0.000401314 +0.00397117 +-0.00152616 +0.00046179 +0.00402835 +-0.0015427 +0.000440124 +0.00404528 +-0.00162298 +0.000485055 +0.0041097 +-0.00165509 +0.000509136 +0.00417184 +-0.00160257 +0.000445646 +0.00415582 +-0.0015486 +0.000498857 +0.00409095 +-0.00153595 +0.000463772 +0.00408252 +-0.00145915 +0.000504152 +0.0041571 +-0.00146181 +0.000527425 +0.00407606 +-0.00145232 +0.000453108 +0.00410816 +-0.00147776 +0.000479442 +0.00410061 +-0.00155806 +0.000517055 +0.00407171 +-0.00162842 +0.000495446 +0.00401668 +-0.00156756 +0.000423431 +0.00404648 +-0.00153401 +0.000472061 +0.00411498 +-0.00154595 +0.000402043 +0.00415939 +-0.00152792 +0.000440597 +0.00423378 +-0.00151451 +0.000446123 +0.00429631 +-0.00157161 +0.000397594 +0.00433928 +-0.00162636 +0.000467941 +0.00432104 +-0.00158256 +0.000393328 +0.00430626 +-0.00162017 +0.000342842 +0.00429478 +-0.00166774 +0.000384303 +0.00425479 +-0.00164759 +0.000357918 +0.00432799 +-0.00161648 +0.00041004 +0.00436465 +-0.00167195 +0.000406459 +0.00429868 +-0.0016339 +0.000433344 +0.00421827 +-0.00163042 +0.000418476 +0.00415486 +-0.00157604 +0.000335187 +0.00414569 +-0.00158942 +0.000412582 +0.00414129 +-0.00162392 +0.000331865 +0.00416745 +-0.00162429 +0.000389202 +0.00412139 +-0.00158198 +0.000453366 +0.00417526 +-0.00156855 +0.000433583 +0.00410306 +-0.0015286 +0.00035999 +0.00413685 +-0.00155394 +0.000395353 +0.00411144 +-0.00148112 +0.000387767 +0.00403521 +-0.00151761 +0.000391751 +0.00395331 +-0.00153945 +0.000324483 +0.00398857 +-0.00157729 +0.000314737 +0.00391606 +-0.00153431 +0.000259427 +0.00392735 +-0.00159766 +0.000245864 +0.00396058 +-0.00167455 +0.000171877 +0.00400152 +-0.00168163 +0.000194268 +0.00399357 +-0.00176309 +0.000136277 +0.00397414 +-0.00174349 +0.000131688 +0.00396741 +-0.00165902 +0.000117674 +0.00393462 +-0.00173602 +0.000138042 +0.00401699 +-0.00173629 +0.000164537 +0.00399878 +-0.00181481 +0.000232678 +0.00402188 +-0.00176983 +0.00031384 +0.00399852 +-0.00177803 +0.000314217 +0.00397148 +-0.00185845 +0.000283437 +0.00401151 +-0.00179026 +0.000331003 +0.00402547 +-0.0017214 +0.000260106 +0.00397999 +-0.00173161 +0.000246724 +0.00401785 +-0.00165687 +0.00026234 +0.00409906 +-0.00163787 +0.000255198 +0.00414543 +-0.00165879 +0.000203609 +0.00408679 +-0.00162563 +0.000284373 +0.00410272 +-0.00160506 +0.000230028 +0.00411286 +-0.00166943 +0.0002322 +0.00407148 +-0.00162254 +0.000246425 +0.00402205 +-0.00169003 +0.000301702 +0.00408641 +-0.00169158 +0.000239889 +0.00403209 +-0.00167089 +0.000261566 +0.00399744 +-0.00159652 +0.000242957 +0.00400897 +-0.00167851 +0.000275564 +0.00402223 +-0.0016013 +0.000338586 +0.00397846 +-0.00156508 +0.00035318 +0.0039443 +-0.00164137 +0.000363415 +0.00387785 +-0.00158959 +0.00031626 +0.00393295 +-0.00163365 +0.000301103 +0.00398346 +-0.00170012 +0.000341476 +0.00401276 +-0.00176877 +0.00030145 +0.00394554 +-0.00173591 +0.000251755 +0.00398301 +-0.00179359 +0.000276695 +0.00403326 +-0.00185725 +0.000295664 +0.00409749 +-0.00180515 +0.000213424 +0.00407739 +-0.00181084 +0.000264407 +0.00407077 +-0.00174333 +0.000268808 +0.00403341 +-0.00166727 +0.000257618 +0.00397113 +-0.00161074 +0.00017392 +0.00398507 +-0.00161008 +0.000175471 +0.00393934 +-0.00156652 +0.000168646 +0.00386057 +-0.00159732 +0.000158656 +0.00387078 +-0.00152962 +0.000164933 +0.00380193 +-0.00154855 +0.000179606 +0.00387272 +-0.00150413 +0.000146166 +0.00384701 +-0.00157776 +0.00014162 +0.00377677 +-0.00155888 +0.000130257 +0.00372985 +-0.00160034 +0.000110749 +0.00369367 +-0.00163553 +0.00012714 +0.00361395 +-0.00165956 +0.000112364 +0.00356152 +-0.0015945 +9.68125e-05 +0.003567 +-0.00166669 +0.000144531 +0.00355611 +-0.00168565 +8.30413e-05 +0.00351982 +-0.00172912 +7.15237e-05 +0.00359915 +-0.00170143 +8.55994e-05 +0.00354552 +-0.00176567 +0.000124618 +0.00347931 +-0.0017297 +0.000117675 +0.00339475 +-0.00173087 +0.000122028 +0.0033118 +-0.0017482 +0.000177261 +0.00333744 +-0.00180729 +0.000192777 +0.00326124 +-0.00184125 +0.000214229 +0.00320516 +-0.0017813 +0.00020722 +0.00315689 +-0.00171583 +0.000192075 +0.00323532 +-0.00174444 +0.000210767 +0.003205 +-0.00170977 +0.000186995 +0.00324586 +-0.00172582 +0.000269776 +0.00324484 +-0.00174443 +0.000196794 +0.00328328 +-0.00172452 +0.000187916 +0.00325816 +-0.00180508 +0.000137301 +0.00325676 +-0.00186234 +0.000197045 +0.00329503 +-0.00187317 +0.000259489 +0.00330623 +-0.00192953 +0.000205475 +0.00335632 +-0.00188742 +0.00020842 +0.00341628 +-0.00194739 +0.000163497 +0.00337439 +-0.00200594 +0.000145257 +0.00337246 +-0.00192309 +0.000194119 +0.00334344 +-0.00198611 +0.00012005 +0.0033773 +-0.00196229 +0.000204885 +0.00337632 +-0.00196371 +0.000177147 +0.00336142 +-0.00188492 +0.000206857 +0.00328548 +-0.00190839 +0.000210797 +0.003319 +-0.00183054 +0.000170769 +0.00336436 +-0.00189004 +0.00019529 +0.00341118 +-0.00195641 +0.000162479 +0.00348789 +-0.0019719 +0.000147837 +0.00346456 +-0.00189164 +0.000158688 +0.00343997 +-0.00197213 +0.000123467 +0.00348087 +-0.0020376 +0.000165251 +0.00343454 +-0.00198009 +0.000139145 +0.00336843 +-0.00202643 +0.00015789 +0.00339399 +-0.00196522 +0.000159122 +0.00347847 +-0.00197306 +0.000139138 +0.00352583 +-0.00190554 +0.000152739 +0.00348963 +-0.00198107 +0.000125994 +0.00347962 +-0.00197638 +0.000131201 +0.0034314 +-0.00204601 +0.000182402 +0.00338711 +-0.00202917 +0.000255872 +0.00334703 +-0.00204315 +0.000238777 +0.00326445 +-0.00203374 +0.000223318 +0.0032843 +-0.0019527 +0.000161892 +0.00333921 +-0.001973 +0.000178478 +0.00325605 +-0.00197624 +0.000184361 +0.00328102 +-0.00201424 +0.000225342 +0.00325763 +-0.00208476 +0.000227862 +0.00320248 +-0.00206209 +0.000292348 +0.00316938 +-0.0021062 +0.000331284 +0.00310225 +-0.00214051 +0.000272321 +0.00316325 +-0.00213898 +0.000280095 +0.00317901 +-0.00222159 +0.000337514 +0.00313226 +-0.002263 +0.000373808 +0.00319256 +-0.00221799 +0.000383624 +0.00321361 +-0.0022996 +0.000418255 +0.00324747 +-0.00222993 +0.000463031 +0.00330786 +-0.00226927 +0.000476973 +0.00329709 +-0.00235227 +0.000411743 +0.00334173 +-0.00238314 +0.000483707 +0.00338169 +-0.00240373 +0.000443473 +0.00345256 +-0.0023801 +0.000446996 +0.00338108 +-0.00233452 +0.000478952 +0.00330305 +-0.00232503 +0.000465608 +0.00322008 +-0.00233679 +0.00049998 +0.00325095 +-0.00240796 +0.000535853 +0.00330688 +-0.00246073 +0.000529604 +0.00325671 +-0.00239259 +0.000559463 +0.00332565 +-0.00243203 +0.00048368 +0.00330844 +-0.00239796 +0.000508993 +0.00326928 +-0.00246885 +0.000539808 +0.00326345 +-0.00254769 +0.000541617 +0.00322348 +-0.00247286 +0.000603062 +0.0032738 +-0.00244299 +0.000581221 +0.00325452 +-0.0023633 +0.000616046 +0.0032917 +-0.00243116 +0.000688818 +0.00333312 +-0.00241742 +0.000648755 +0.003266 +-0.0023844 +0.000660916 +0.00318739 +-0.00241392 +0.000678949 +0.00317647 +-0.00249612 +0.000718008 +0.00325013 +-0.00251187 +0.00066808 +0.00328408 +-0.00257149 +0.000732376 +0.00327559 +-0.00251677 +0.000721166 +0.00335681 +-0.0024949 +0.000706585 +0.00343148 +-0.00253247 +0.000789824 +0.00342179 +-0.00254579 +0.000734096 +0.00337747 +-0.00249963 +0.000702902 +0.00342881 +-0.0024397 +0.000638404 +0.00346723 +-0.00240016 +0.000624865 +0.00342125 +-0.00247018 +0.000623657 +0.00350068 +-0.00249998 +0.000657214 +0.00348432 +-0.00242378 +0.000715586 +0.00342412 +-0.00241076 +0.000773176 +0.0033968 +-0.00235475 +0.000777521 +0.00344812 +-0.00242219 +0.00072004 +0.00349633 +-0.00246184 +0.000652187 +0.00354329 +-0.00248161 +0.000729779 +0.00351268 +-0.00246603 +0.000782018 +0.00344587 +-0.0024687 +0.000834081 +0.00339214 +-0.00242867 +0.000751447 +0.00340787 +-0.00243981 +0.000742621 +0.00337446 +-0.00236231 +0.000706754 +0.00337746 +-0.00228547 +0.000758771 +0.00343978 +-0.00226074 +0.000721486 +0.00349603 +-0.00220931 +0.000786083 +0.0035073 +-0.00226317 +0.000776441 +0.00359027 +-0.0022781 +0.000706018 +0.00355933 +-0.00224228 +0.000622945 +0.00354694 +-0.00225434 +0.000614422 +0.00354836 +-0.00216993 +0.000624702 +0.00346442 +-0.00216295 +0.00058619 +0.00347832 +-0.00223727 +0.000586293 +0.00343756 +-0.00216285 +0.000604264 +0.00338014 +-0.00222268 +0.000567784 +0.00330725 +-0.00219909 +0.000604839 +0.0032625 +-0.00213725 +0.000535482 +0.00330096 +-0.00210707 +0.000508946 +0.00323763 +-0.00215692 +0.000522016 +0.00316336 +-0.00211802 +0.000502555 +0.00313678 +-0.00203982 +0.00058188 +0.00316641 +-0.00203439 +0.000540066 +0.00318159 +-0.00196213 +0.000606303 +0.00323227 +-0.0019465 +0.000529149 +0.00326691 +-0.00193963 +0.000564532 +0.00319275 +-0.00191847 +0.000519491 +0.00320103 +-0.00184703 +0.000602455 +0.00321216 +-0.00186093 +0.000641096 +0.00313734 +-0.00185053 +0.000721069 +0.00311082 +-0.0018606 +0.000645219 +0.00312155 +-0.0018241 +0.000603488 +0.00316037 +-0.00188696 +0.000683519 +0.00313229 +-0.00188434 +0.000608623 +0.00309261 +-0.00188834 +0.000566649 +0.0030361 +-0.00193572 +0.000623825 +0.00300026 +-0.00198716 +0.00054365 +0.00299414 +-0.00196006 +0.000481008 +0.00302852 +-0.00191429 +0.000408362 +0.00302354 +-0.00187073 +0.000352362 +0.00303877 +-0.00180882 +0.000318217 +0.00298847 +-0.00183513 +0.000368041 +0.00300528 +-0.00190172 +0.000321862 +0.0029863 +-0.00185224 +0.000341631 +0.00294361 +-0.00178162 +0.000421816 +0.00294213 +-0.00178087 +0.00047279 +0.00300763 +-0.00179853 +0.000402819 +0.00296847 +-0.00182629 +0.000448413 +0.00301376 +-0.0018817 +0.000464322 +0.00309436 +-0.00186049 +0.000519711 +0.00306873 +-0.00191944 +0.000520524 +0.00305359 +-0.00183595 +0.000475494 +0.00299277 +-0.00187433 +0.000464387 +0.00290865 +-0.00187495 +0.000401694 +0.0029375 +-0.00192432 +0.000458891 +0.00292476 +-0.00186295 +0.000519392 +0.0029842 +-0.00186544 +0.000549182 +0.0029089 +-0.00184012 +0.000493391 +0.00294356 +-0.00189384 +0.00050087 +0.00302111 +-0.00192744 +0.00047485 +0.00309324 +-0.00196379 +0.000550666 +0.00311821 +-0.00199257 +0.000538435 +0.00307365 +-0.0019214 +0.000481177 +0.00309943 +-0.00197847 +0.000418022 +0.00315609 +-0.00197736 +0.000466985 +0.00322042 +-0.00200316 +0.000541901 +0.00318503 +-0.00198485 +0.000497868 +0.00314123 +-0.00204267 +0.000580297 +0.00314856 +-0.00206142 +0.000555754 +0.00320474 +-0.00200275 +0.000517719 +0.00312922 +-0.00200988 +0.000521715 +0.00304572 +-0.00199537 +0.000512181 +0.00310232 +-0.00193288 +0.000514818 +0.00316179 +-0.0018724 +0.000560192 +0.00320063 +-0.00193267 +0.000548422 +0.0031269 +-0.00189236 +0.000632198 +0.00311526 +-0.00189913 +0.000711328 +0.0030924 +-0.00187874 +0.000662653 +0.00316171 +-0.00187357 +0.000593878 +0.00320834 +-0.00189077 +0.000653736 +0.00315457 +-0.00191771 +0.000615267 +0.00312688 +-0.00198809 +0.000623461 +0.00311151 +-0.00190504 +0.00060835 +0.00303985 +-0.0018622 +0.000558713 +0.00299547 +-0.0018096 +0.000536711 +0.00305049 +-0.00187033 +0.000541757 +0.00312522 +-0.00183046 +0.00050956 +0.00311608 +-0.00190843 +0.000505909 +0.00306377 +-0.00184172 +0.000500131 +0.00298077 +-0.00185839 +0.000498452 +0.00304404 +-0.00180187 +0.000468137 +0.00311163 +-0.00176049 +0.000476795 +0.00302975 +-0.00178101 +0.00047281 +0.00294553 +-0.00177144 +0.000441299 +0.00293571 +-0.00184961 +0.000359445 +0.00294499 +-0.00182926 +0.000390105 +0.00293471 +-0.00176659 +0.000372275 +0.00300737 +-0.00180663 +0.000370202 +0.00299295 +-0.00172304 +0.000389371 +0.00295383 +-0.00165022 +0.00045621 +0.00295739 +-0.00159807 +0.000431294 +0.00290429 +-0.00163389 +0.000485207 +0.00286102 +-0.00167979 +0.000444653 +0.00288966 +-0.00174861 +0.000442795 +0.00294221 +-0.00168201 +0.000407048 +0.00292958 +-0.00163568 +0.000355586 +0.00297335 +-0.00159541 +0.000372305 +0.00295202 +-0.00167582 +0.000383666 +0.00294002 +-0.00159502 +0.000431281 +0.0029945 +-0.00163935 +0.000348497 +0.00300402 +-0.00165535 +0.000341081 +0.0030312 +-0.00173539 +0.000403571 +0.00302354 +-0.00179227 +0.000401281 +0.00294419 +-0.00176231 +0.000380328 +0.00302639 +-0.00176062 +0.000400817 +0.00294423 +-0.00175522 +0.000368186 +0.00298304 +-0.00168719 +0.000304934 +0.00303683 +-0.00170467 +0.000358464 +0.00297238 +-0.00171813 +0.000434897 +0.00300892 +-0.00172292 +0.00049923 +0.00301827 +-0.00177745 +0.000440122 +0.00295832 +-0.00178805 +0.000514895 +0.00292023 +-0.00180062 +0.000430277 +0.00291551 +-0.00180481 +0.000359329 +0.00296156 +-0.00181161 +0.000442591 +0.00297532 +-0.00182045 +0.000408163 +0.00292806 +-0.00175896 +0.000415315 +0.00294007 +-0.00180014 +0.0004199 +0.00288896 +-0.00186087 +0.000451813 +0.00292574 +-0.00192422 +0.000502879 +0.00299266 +-0.00191351 +0.000545913 +0.00303322 +-0.00197436 +0.000470706 +0.00307206 +-0.00196839 +0.000493921 +0.00314066 +-0.00201259 +0.000552994 +0.00311971 +-0.00206979 +0.00059945 +0.00313369 +-0.00200017 +0.000548054 +0.0032012 +-0.00200076 +0.000528298 +0.00313655 +-0.00205203 +0.000463179 +0.00308775 +-0.00207608 +0.000382923 +0.00308894 +-0.00210361 +0.000426209 +0.00314464 +-0.00205644 +0.000430619 +0.00308221 +-0.00199913 +0.000470725 +0.00315692 +-0.00199595 +0.000462355 +0.00312462 +-0.00207396 +0.000422459 +0.00317077 +-0.00213294 +0.000356723 +0.00322124 +-0.00211471 +0.000360853 +0.00313999 +-0.00209058 +0.000283383 +0.00310744 +-0.00210235 +0.000338091 +0.00312171 +-0.00216562 +0.000323618 +0.0030832 +-0.00209141 +0.000350739 +0.00316245 +-0.00207787 +0.000351361 +0.00310803 +-0.00201277 +0.00040139 +0.00305472 +-0.0019697 +0.000362624 +0.00299668 +-0.00192145 +0.000435891 +0.00302199 +-0.00195596 +0.000483922 +0.00295243 +-0.00196335 +0.000468099 +0.00302457 +-0.00192158 +0.0004685 +0.00305295 +-0.00184161 +0.000421499 +0.00305241 +-0.00191226 +0.000440315 +0.00310956 +-0.00185243 +0.000495583 +0.0031577 +-0.00180968 +0.000574953 +0.00312982 +-0.00182076 +0.000495135 +0.00315854 +-0.00182278 +0.000576575 +0.00318042 +-0.00181335 +0.000569006 +0.00325326 +-0.00185621 +0.000563337 +0.00333379 +-0.00183007 +0.000558508 +0.00340231 +-0.00178026 +0.000560934 +0.00332101 +-0.00180443 +0.000581469 +0.0032432 +-0.00177754 +0.000504624 +0.00325308 +-0.00181215 +0.000559874 +0.00322571 +-0.00175385 +0.000532387 +0.00328572 +-0.00180716 +0.000593164 +0.00333661 +-0.00177688 +0.000606095 +0.00340116 +-0.00183042 +0.000665746 +0.00337523 +-0.00188491 +0.000667598 +0.00329841 +-0.00184893 +0.000631744 +0.00322152 +-0.00185033 +0.000673384 +0.00316248 +-0.00180583 +0.000698709 +0.0031528 +-0.00188623 +0.000643713 +0.00319894 +-0.001841 +0.000562707 +0.00321402 +-0.00182074 +0.000565394 +0.00321014 +-0.00190546 +0.000633231 +0.00316114 +-0.00191952 +0.00070609 +0.00313836 +-0.00188247 +0.000755517 +0.00319049 +-0.00183731 +0.000805449 +0.00312349 +-0.00182255 +0.000875668 +0.00308538 +-0.00185112 +0.000849159 +0.00313239 +-0.00178564 +0.000861858 +0.00310911 +-0.00186625 +0.00090685 +0.00318105 +-0.00186664 +0.000917416 +0.00324548 +-0.00192083 +0.000957152 +0.00331101 +-0.00195727 +0.000907474 +0.00324222 +-0.00195775 +0.000962045 +0.00322765 +-0.00202107 +0.00102602 +0.00327588 +-0.00204903 +0.00104332 +0.00320358 +-0.00208994 +0.00101389 +0.00314134 +-0.00204035 +0.00107871 +0.00319424 +-0.00202623 +0.00113621 +0.00323996 +-0.00198376 +0.00112372 +0.0031624 +-0.00201584 +0.00114373 +0.0030939 +-0.00206174 +0.00107252 +0.00306643 +-0.00202467 +0.00100583 +0.00307136 +-0.00197244 +0.00105069 +0.00306713 +-0.00204434 +0.000985832 +0.00309314 +-0.00209247 +0.00102453 +0.00313255 +-0.00215688 +0.00100636 +0.00313547 +-0.00223971 +0.00102517 +0.00312284 +-0.00232148 +0.00105046 +0.00307935 +-0.00225315 +0.00103438 +0.00301972 +-0.00219496 +0.000967554 +0.00300434 +-0.00214498 +0.00104274 +0.00304319 +-0.00213885 +0.000991767 +0.00306133 +-0.00220421 +0.00107288 +0.00307973 +-0.00218742 +0.00101695 +0.00303807 +-0.00213909 +0.00108028 +0.00305678 +-0.00219238 +0.0010049 +0.00305719 +-0.00223134 +0.000984449 +0.00313953 +-0.00222986 +0.00102768 +0.00321033 +-0.00221201 +0.0010605 +0.00322532 +-0.00228881 +0.00113033 +0.00318093 +-0.00227004 +0.00113313 +0.00311064 +-0.0023175 +0.00121447 +0.00312878 +-0.00233349 +0.00116796 +0.00314604 +-0.00240232 +0.00110564 +0.00317695 +-0.00245092 +0.00112932 +0.00317991 +-0.00236949 +0.00117999 +0.0032029 +-0.00243355 +0.00113148 +0.00313369 +-0.00244105 +0.00116719 +0.00320616 +-0.00241511 +0.00114326 +0.00324442 +-0.00248698 +0.00121812 +0.00328088 +-0.00250334 +0.00127965 +0.00332361 +-0.0024635 +0.00128603 +0.00340813 +-0.0024595 +0.00120367 +0.00340406 +-0.00247949 +0.00124108 +0.00345228 +-0.00253844 +0.00128199 +0.00340879 +-0.00247816 +0.00120586 +0.00343673 +-0.00250312 +0.00115904 +0.00343124 +-0.00243258 +0.00121748 +0.00340058 +-0.00237925 +0.00115314 +0.0033771 +-0.00232917 +0.00117038 +0.00335365 +-0.00224946 +0.00125244 +0.00333236 +-0.00225309 +0.00131853 +0.00335019 +-0.00230322 +0.0013265 +0.00328768 +-0.00236005 +0.00128793 +0.00336235 +-0.0023484 +0.00136084 +0.00333138 +-0.00237881 +0.00140485 +0.00340097 +-0.00239932 +0.00134239 +0.00334666 +-0.00238063 +0.00137486 +0.00329698 +-0.00231999 +0.00138365 +0.00329042 +-0.00240413 +0.00133888 +0.00331985 +-0.00246993 +0.00136799 +0.00325748 +-0.0024203 +0.00129726 +0.00322543 +-0.0023861 +0.0012555 +0.0032189 +-0.00231252 +0.001322 +0.00320454 +-0.00236323 +0.00125021 +0.00316836 +-0.00233609 +0.00117104 +0.00315601 +-0.00230817 +0.00111127 +0.00317118 +-0.00236646 +0.0011221 +0.0031832 +-0.00228316 +0.00109151 +0.00315643 +-0.00235765 +0.00107236 +0.00323351 +-0.00232776 +0.0010073 +0.00328481 +-0.00230945 +0.000935258 +0.00329551 +-0.00226592 +0.000994609 +0.00323861 +-0.00228689 +0.000975935 +0.00318067 +-0.00234601 +0.000893076 +0.00316355 +-0.00233959 +0.000810737 +0.00314345 +-0.00234367 +0.000818031 +0.00310588 +-0.0024194 +0.000873524 +0.00316697 +-0.00239967 +0.000794926 +0.00316713 +-0.00243164 +0.000855138 +0.00317124 +-0.002372 +0.000848002 +0.00308811 +-0.00238745 +0.000782635 +0.00312712 +-0.00234996 +0.000774019 +0.00319779 +-0.0023038 +0.000779043 +0.00321229 +-0.00238725 +0.000808345 +0.0031356 +-0.00240872 +0.000826292 +0.0031466 +-0.00249092 +0.000745294 +0.00317061 +-0.00248299 +0.000789881 +0.00312988 +-0.00242338 +0.000714286 +0.00316572 +-0.0024092 +0.000683553 +0.00322177 +-0.0023534 +0.000702252 +0.00313926 +-0.00234688 +0.000631144 +0.00317611 +-0.00237491 +0.00069396 +0.00312897 +-0.00240704 +0.000661109 +0.00318742 +-0.00245905 +0.000608419 +0.00312511 +-0.00248231 +0.000682664 +0.0031658 +-0.00248796 +0.000615825 +0.00318654 +-0.00253594 +0.000611004 +0.00325745 +-0.0024896 +0.000674355 +0.00321237 +-0.00252358 +0.00064711 +0.0031659 +-0.00258914 +0.000722196 +0.0031813 +-0.00255727 +0.000790415 +0.00323038 +-0.00254554 +0.00073167 +0.00316997 +-0.00253554 +0.000741926 +0.0031344 +-0.00261189 +0.000688665 +0.00313948 +-0.00254603 +0.000622773 +0.00313331 +-0.00253233 +0.0005829 +0.00319851 +-0.00249547 +0.000637064 +0.00314994 +-0.00245181 +0.000650571 +0.00315682 +-0.0025353 +0.000631537 +0.00310033 +-0.00247491 +0.000626086 +0.00306229 +-0.00245259 +0.000588177 +0.00300504 +-0.00240843 +0.000512492 +0.00301888 +-0.00237265 +0.000499373 +0.00309636 +-0.00234063 +0.000543407 +0.00310443 +-0.00241271 +0.000621892 +0.00307431 +-0.00242425 +0.000590658 +0.00308741 +-0.00250031 +0.000655111 +0.00310704 +-0.00244872 +0.000690233 +0.0031576 +-0.00250712 +0.0006374 +0.0030927 +-0.0024931 +0.000618528 +0.00316464 +-0.00253395 +0.000650273 +0.00322441 +-0.00248276 +0.000705869 +0.0032045 +-0.00242183 +0.000724572 +0.00326441 +-0.00247893 +0.000772423 +0.00319482 +-0.00248714 +0.000850988 +0.00320553 +-0.00251735 +0.000806403 +0.00318351 +-0.00258611 +0.000731849 +0.00321036 +-0.00255576 +0.000721894 +0.00322195 +-0.00263923 +0.000700288 +0.00325904 +-0.00260401 +0.000713899 +0.00329805 +-0.00267813 +0.000655962 +0.00324629 +-0.00264643 +0.000732424 +0.00327985 +-0.00263134 +0.000768937 +0.00320366 +-0.00262344 +0.000782458 +0.00323567 +-0.00263996 +0.00076835 +0.00325525 +-0.00264004 +0.000696153 +0.00323109 +-0.00260257 +0.000777768 +0.00324529 +-0.00262094 +0.000725405 +0.00323017 +-0.00264686 +0.000683423 +0.00325895 +-0.00257896 +0.000668489 +0.00332381 +-0.00252633 +0.000658854 +0.00340512 +-0.00250409 +0.000701833 +0.00347828 +-0.00250431 +0.000730946 +0.00352751 +-0.00244162 +0.000672624 +0.00346729 +-0.0024285 +0.000715932 +0.003452 +-0.00249985 +0.000780051 +0.00350315 +-0.00247813 +0.000745478 +0.00358061 +-0.002476 +0.000754096 +0.00365088 +-0.00252279 +0.000685601 +0.00368073 +-0.00248257 +0.000712578 +0.00360795 +-0.00244829 +0.000654802 +0.00355934 +-0.00240958 +0.000711257 +0.00351891 +-0.00245835 +0.000645444 +0.00352163 +-0.00251184 +0.000719777 +0.00348305 +-0.00252549 +0.000796916 +0.00349347 +-0.00255927 +0.000773028 +0.00355284 +-0.00250355 +0.00079327 +0.00347064 +-0.0024978 +0.000761205 +0.00344021 +-0.00257023 +0.000837363 +0.00346794 +-0.00254511 +0.000902405 +0.00341353 +-0.00254824 +0.000936624 +0.00338611 +-0.0024756 +0.000964878 +0.00331384 +-0.00244127 +0.00102896 +0.00336827 +-0.00242983 +0.00101687 +0.00345162 +-0.00241958 +0.00109307 +0.00344192 +-0.00245562 +0.00108654 +0.00350436 +-0.00239854 +0.00114374 +0.0034509 +-0.00243126 +0.00109325 +0.00348074 +-0.00236994 +0.00101073 +0.00350034 +-0.00237252 +0.000945519 +0.00351726 +-0.00242411 +0.000923491 +0.00352086 +-0.00250597 +0.000995726 +0.00350946 +-0.00254901 +0.0010565 +0.00354475 +-0.00259656 +0.00107866 +0.00360412 +-0.00254012 +0.000995253 +0.00359555 +-0.00255316 +0.000916884 +0.00359556 +-0.00252063 +0.00084605 +0.00364124 +-0.00253045 +0.000813617 +0.00369623 +-0.00258635 +0.000802395 +0.00366869 +-0.00266582 +0.000882354 +0.00364127 +-0.00267322 +0.000937827 +0.00367918 +-0.0026214 +0.000900352 +0.00372442 +-0.00256017 +0.000875579 +0.00369516 +-0.00248447 +0.000846383 +0.00376329 +-0.00244316 +0.000857448 +0.00384657 +-0.00245504 +0.000850501 +0.00383812 +-0.00253918 +0.000922022 +0.00388145 +-0.0025536 +0.000898027 +0.0038385 +-0.00248446 +0.000813764 +0.00384334 +-0.0024932 +0.000833259 +0.00379207 +-0.00255795 +0.000884038 +0.00375634 +-0.00250011 +0.000818928 +0.0038088 +-0.00248567 +0.000763668 +0.00375068 +-0.00245794 +0.000792821 +0.00379348 +-0.00252516 +0.000842068 +0.00385207 +-0.00248853 +0.000798761 +0.00388616 +-0.00242401 +0.000801034 +0.00387095 +-0.00250746 +0.000846407 +0.00392664 +-0.00246229 +0.000786117 +0.00394469 +-0.0025192 +0.000788588 +0.00400375 +-0.00245833 +0.000747554 +0.00393068 +-0.00244503 +0.000687198 +0.00387907 +-0.00247491 +0.000627072 +0.00392911 +-0.00244204 +0.000665816 +0.00397381 +-0.00250288 +0.000650448 +0.00390452 +-0.00245638 +0.000652849 +0.00390813 +-0.00237164 +0.000671425 +0.0039055 +-0.00245439 +0.000588228 +0.00390224 +-0.00243804 +0.00059015 +0.00386612 +-0.00236128 +0.000583882 +0.00380977 +-0.00229815 +0.000647622 +0.00375514 +-0.00231053 +0.00068725 +0.00368036 +-0.00230447 +0.000681095 +0.00376154 +-0.00228058 +0.000657503 +0.00372422 +-0.00235304 +0.000649214 +0.0036627 +-0.0024109 +0.000628096 +0.00360792 +-0.00234964 +0.000647025 +0.00357752 +-0.00242657 +0.000644976 +0.00364082 +-0.00248303 +0.000584323 +0.00360768 +-0.00253226 +0.000537433 +0.00364442 +-0.00259269 +0.000615715 +0.00362168 +-0.00261624 +0.000642466 +0.00367632 +-0.00267539 +0.00068044 +0.00364011 +-0.0026087 +0.00073644 +0.00360692 +-0.00266313 +0.000756773 +0.00361805 +-0.0025815 +0.000806077 +0.00368711 +-0.00258114 +0.000770527 +0.0037492 +-0.00262675 +0.000728592 +0.00373332 +-0.00269879 +0.000711864 +0.00365196 +-0.00271611 +0.000743146 +0.00363783 +-0.0026385 +0.000760502 +0.00367472 +-0.00256409 +0.000802557 +0.00371257 +-0.00250085 +0.000742932 +0.00365981 +-0.00247152 +0.000713606 +0.00372963 +-0.00250979 +0.000677641 +0.00367604 +-0.0024547 +0.000652922 +0.00370726 +-0.00252963 +0.000683276 +0.00363688 +-0.00256603 +0.000711118 +0.00371482 +-0.00258476 +0.000703145 +0.00363335 +-0.00256242 +0.000708753 +0.00369023 +-0.00249971 +0.000709438 +0.00375507 +-0.00244498 +0.000715354 +0.0036843 +-0.00249141 +0.000631087 +0.00368097 +-0.0025008 +0.000679473 +0.00374837 +-0.00248303 +0.000746382 +0.00374684 +-0.00243087 +0.000673156 +0.00378529 +-0.00241192 +0.000756341 +0.00378875 +-0.0024283 +0.000699826 +0.00383053 +-0.00247585 +0.000670167 +0.00378335 +-0.00241186 +0.000610792 +0.00374587 +-0.00236421 +0.000596516 +0.00376604 +-0.00244539 +0.000553415 +0.00372187 +-0.00238715 +0.000511294 +0.00367259 +-0.0024419 +0.00055442 +0.00369288 +-0.0025121 +0.000479263 +0.0037007 +-0.00247349 +0.000446474 +0.00370716 +-0.00255149 +0.000427376 +0.00372163 +-0.00247009 +0.000370841 +0.00366936 +-0.00243442 +0.000382835 +0.00361979 +-0.00250223 +0.000414067 +0.0035915 +-0.00256884 +0.00047075 +0.00359439 +-0.00250576 +0.000482063 +0.00362624 +-0.00242793 +0.000523799 +0.00369995 +-0.00243289 +0.000600073 +0.00368197 +-0.00246543 +0.000589886 +0.00366096 +-0.00238385 +0.000623114 +0.00360235 +-0.00243544 +0.000644542 +0.00368073 +-0.0024599 +0.000574062 +0.00367655 +-0.00241283 +0.000622941 +0.00360759 +-0.00242025 +0.000548376 +0.00357295 +-0.00244123 +0.000630621 +0.00355696 +-0.00245465 +0.000696092 +0.00350301 +-0.00245289 +0.000660939 +0.00344315 +-0.00250169 +0.00060253 +0.00338445 +-0.00248318 +0.000610459 +0.00345499 +-0.00243669 +0.00054298 +0.00350175 +-0.00241523 +0.000569762 +0.00346996 +-0.0024892 +0.000582649 +0.00339937 +-0.00244392 +0.000541139 +0.00333771 +-0.00240299 +0.000513845 +0.00341774 +-0.00241016 +0.000567627 +0.0034577 +-0.00246223 +0.000610953 +0.00349185 +-0.0025267 +0.000584325 +0.00348742 +-0.00260714 +0.00066422 +0.00351589 +-0.0026046 +0.000664457 +0.00346995 +-0.00253326 +0.000587591 +0.00346817 +-0.00256915 +0.000633537 +0.00344798 +-0.00250073 +0.000602921 +0.00339074 +-0.00255537 +0.000544189 +0.00333226 +-0.00257356 +0.000501343 +0.00336134 +-0.00250634 +0.000540121 +0.00343655 +-0.00249996 +0.000570528 +0.00337331 +-0.00254766 +0.000630736 +0.00336069 +-0.00260611 +0.000652956 +0.00337167 +-0.00268498 +0.000657561 +0.0033992 +-0.00260484 +0.00072954 +0.00340937 +-0.00264861 +0.000746268 +0.00349255 +-0.00264977 +0.000744131 +0.00353384 +-0.00272387 +0.000765147 +0.00354447 +-0.00271611 +0.000826235 +0.00357512 +-0.00266582 +0.00084708 +0.00363169 +-0.00260611 +0.000806185 +0.0035589 +-0.00259094 +0.00082318 +0.00364101 +-0.00257791 +0.000890848 +0.00360078 +-0.00260958 +0.000920752 +0.00353023 +-0.00257314 +0.00086586 +0.00357251 +-0.00262212 +0.000841228 +0.00365199 +-0.0026055 +0.000861433 +0.00357044 +-0.00259361 +0.000791607 +0.00361864 +-0.00259293 +0.000760935 +0.00360339 +-0.00267056 +0.000787872 +0.00352312 +-0.00267615 +0.000813542 +0.00350968 +-0.0025964 +0.000739408 +0.00353483 +-0.00262913 +0.000731387 +0.00356756 +-0.00270701 +0.000750573 +0.00351332 +-0.00274869 +0.000684366 +0.00355308 +-0.00271353 +0.0007171 +0.00362897 +-0.00273272 +0.000696396 +0.00355152 +-0.00270494 +0.000721512 +0.00348982 +-0.00274009 +0.000697423 +0.00356128 +-0.00270119 +0.00064651 +0.00349355 +-0.00270564 +0.000669597 +0.00356418 +-0.00266466 +0.00070661 +0.0036329 +-0.00269794 +0.000782327 +0.0036493 +-0.00266333 +0.000698175 +0.00364262 +-0.00267192 +0.000752413 +0.00357828 +-0.00266104 +0.000760372 +0.00365572 +-0.00262729 +0.000796435 +0.00358282 +-0.00260312 +0.000843029 +0.00365023 +-0.0025811 +0.0009058 +0.0037041 +-0.0026 +0.000929728 +0.00374446 +-0.0026707 +0.000998201 +0.00373161 +-0.00262226 +0.000945883 +0.00366507 +-0.00261639 +0.00096185 +0.00373994 +-0.00257979 +0.000893531 +0.00369156 +-0.00256594 +0.000953682 +0.00368194 +-0.00262501 +0.000952413 +0.00359813 +-0.00263821 +0.000990695 +0.00355361 +-0.00257695 +0.000972512 +0.00347151 +-0.0025883 +0.00101521 +0.00341149 +-0.00254616 +0.00101469 +0.00340578 +-0.00246151 +0.000990336 +0.00334526 +-0.00240724 +0.00107301 +0.00336384 +-0.00240281 +0.00103862 +0.00328754 +-0.00238881 +0.00100326 +0.00332747 +-0.00232281 +0.0010548 +0.00337106 +-0.00237422 +0.00101821 +0.00334712 +-0.0023015 +0.000987259 +0.0032947 +-0.00224239 +0.000968678 +0.00329551 +-0.00232518 +0.000995035 +0.00325368 +-0.00239414 +0.000939759 +0.00319159 +-0.00237709 +0.000874554 +0.00319044 +-0.00243138 +0.000834828 +0.00315094 +-0.00249511 +0.000827564 +0.003147 +-0.00241066 +0.000816997 +0.00306692 +-0.00243663 +0.000750566 +0.00310048 +-0.00247737 +0.000750368 +0.00316727 +-0.00252972 +0.000713551 +0.00315868 +-0.00260568 +0.000722602 +0.00323311 +-0.00261463 +0.00073093 +0.00315665 +-0.00257879 +0.000740026 +0.00317056 +-0.00257164 +0.000657722 +0.0031616 +-0.00255304 +0.00071014 +0.0030971 +-0.00257014 +0.000758937 +0.00315312 +-0.00252914 +0.00072822 +0.00307609 +-0.00251118 +0.000730936 +0.00305498 +-0.00242904 +0.000789697 +0.00311595 +-0.0024345 +0.000834989 +0.00309592 +-0.0025034 +0.00089771 +0.00312896 +-0.00255003 +0.000853801 +0.00319771 +-0.00252666 +0.00082784 +0.00318304 +-0.00244721 +0.000793678 +0.00315418 +-0.00251932 +0.000844417 +0.00309992 +-0.00247832 +0.000891398 +0.00315716 +-0.00251974 +0.000970265 +0.00317684 +-0.00249539 +0.000965913 +0.00326141 +-0.00249009 +0.000934668 +0.00329839 +-0.0024204 +0.00101897 +0.00329004 +-0.0024156 +0.00101305 +0.0032354 +-0.00248025 +0.00102922 +0.00323969 +-0.00239706 +0.00101246 +0.00319008 +-0.00246383 +0.000934016 +0.00321532 +-0.00244358 +0.00095704 +0.0031787 +-0.00251658 +0.000967142 +0.00322581 +-0.00244673 +0.000947414 +0.00317678 +-0.00251311 +0.0009857 +0.00316707 +-0.00258821 +0.000957506 +0.00313215 +-0.0025162 +0.0010332 +0.0031702 +-0.00252088 +0.000975218 +0.00320534 +-0.0025719 +0.000976284 +0.00312177 +-0.00258654 +0.000936759 +0.00318242 +-0.00254228 +0.000918308 +0.00321937 +-0.0026164 +0.000853489 +0.00324824 +-0.00256987 +0.000921677 +0.00325517 +-0.00251985 +0.000986434 +0.00320289 +-0.00253639 +0.000932622 +0.00319202 +-0.00260109 +0.000906492 +0.00323776 +-0.00253457 +0.00087961 +0.00331809 +-0.00253954 +0.000885247 +0.00335827 +-0.00261407 +0.000969316 +0.00334731 +-0.0026176 +0.000923662 +0.0032765 +-0.0026075 +0.000983943 +0.00332351 +-0.00257068 +0.000933755 +0.00328403 +-0.0025148 +0.000960297 +0.00336461 +-0.00251607 +0.000902458 +0.00342503 +-0.00253039 +0.000971305 +0.00347201 +-0.00254628 +0.000974209 +0.00346209 +-0.00246206 +0.00100851 +0.00345532 +-0.00238474 +0.00109042 +0.00346156 +-0.0023635 +0.00105762 +0.00344203 +-0.00228772 +0.00104547 +0.0035017 +-0.00234681 +0.00108121 +0.00356031 +-0.00239669 +0.00104266 +0.00363325 +-0.00237684 +0.00107087 +0.00358051 +-0.00231665 +0.00106591 +0.00362782 +-0.00224638 +0.00101486 +0.003667 +-0.00230169 +0.00101789 +0.00373439 +-0.00235315 +0.000962229 +0.00369241 +-0.00230479 +0.000978994 +0.00374476 +-0.00224014 +0.000989528 +0.00367605 +-0.0022888 +0.00103736 +0.00374552 +-0.00227955 +0.000956896 +0.00372471 +-0.00226246 +0.000974021 +0.00380768 +-0.00225777 +0.00101641 +0.00387585 +-0.00228526 +0.000933425 +0.00385835 +-0.00228794 +0.000881607 +0.00389394 +-0.00223095 +0.000816797 +0.00383924 +-0.00223369 +0.000833663 +0.00382456 +-0.00231554 +0.000857644 +0.00390131 +-0.00228844 +0.000871279 +0.00398314 +-0.00227058 +0.000867397 +0.00392616 +-0.00233334 +0.000939237 +0.00393168 +-0.00237816 +0.000895662 +0.00387557 +-0.00242455 +0.00095591 +0.00392145 +-0.00238628 +0.000968912 +0.00388148 +-0.00231257 +0.000994789 +0.00391382 +-0.00223851 +0.000930765 +0.00390215 +-0.00218406 +0.0010071 +0.00393623 +-0.00216953 +0.00105495 +0.00400415 +-0.00215227 +0.00104662 +0.00408817 +-0.0021607 +0.000998249 +0.00401894 +-0.00215252 +0.000933059 +0.00404057 +-0.00220235 +0.000881279 +0.00403218 +-0.00226904 +0.000943862 +0.00406834 +-0.00222459 +0.000981175 +0.00405186 +-0.002299 +0.000918271 +0.00407677 +-0.00224779 +0.000856299 +0.00411039 +-0.002295 +0.00092295 +0.0041164 +-0.00224283 +0.000842889 +0.00408909 +-0.0022362 +0.000778662 +0.00413936 +-0.0022128 +0.000791764 +0.00406462 +-0.00225077 +0.000805212 +0.00399677 +-0.00220162 +0.000872613 +0.00404471 +-0.00222055 +0.000860573 +0.003996 +-0.00215213 +0.000804028 +0.00405518 +-0.00212975 +0.000733205 +0.00408105 +-0.00216867 +0.000723633 +0.00404338 +-0.00209324 +0.000667016 +0.00410555 +-0.00208184 +0.000594913 +0.00406142 +-0.00208915 +0.000635956 +0.00413534 +-0.00208203 +0.000630966 +0.0040632 +-0.00212642 +0.000576933 +0.00405836 +-0.00206117 +0.000537933 +0.0040858 +-0.00213136 +0.000572409 +0.00410954 +-0.00220517 +0.000574744 +0.00411257 +-0.0021204 +0.00064508 +0.0040651 +-0.00212032 +0.000676251 +0.00413315 +-0.0021603 +0.000710304 +0.0040605 +-0.00213269 +0.000688523 +0.00406198 +-0.00205069 +0.000760578 +0.00404538 +-0.00209231 +0.000796824 +0.00396869 +-0.00209462 +0.000805445 +0.00388674 +-0.00211483 +0.000831719 +0.00393447 +-0.00217988 +0.000848412 +0.00386586 +-0.00222694 +0.000892447 +0.00387602 +-0.00215513 +0.000882194 +0.003796 +-0.00212882 +0.00080694 +0.00383357 +-0.00211762 +0.000797942 +0.00390792 +-0.00207772 +0.000868283 +0.00386455 +-0.002097 +0.000917745 +0.00386496 +-0.00216595 +0.000934142 +0.00390298 +-0.00224001 +0.000888163 +0.00396841 +-0.00226838 +0.00083004 +0.00392499 +-0.00222438 +0.000773225 +0.0039816 +-0.00219668 +0.000696118 +0.00395086 +-0.0021791 +0.00074916 +0.00398726 +-0.00212378 +0.000683623 +0.00401742 +-0.00207911 +0.000653239 +0.00395691 +-0.00202797 +0.000575898 +0.0039406 +-0.00199711 +0.00065255 +0.00394182 +-0.00196073 +0.000597959 +0.00399858 +-0.00199233 +0.000522909 +0.00395958 +-0.00198549 +0.000568962 +0.00389616 +-0.00195298 +0.000504527 +0.00393901 +-0.00191817 +0.000530693 +0.00400881 +-0.00187762 +0.000526881 +0.00402884 +-0.00179526 +0.000537576 +0.00399851 +-0.00171674 +0.000560502 +0.00402699 +-0.00179331 +0.000582429 +0.00395344 +-0.00182951 +0.000651443 +0.00392247 +-0.00186794 +0.000639105 +0.00395171 +-0.00178925 +0.000648709 +0.00398334 +-0.0017111 +0.00057223 +0.00401784 +-0.00169842 +0.000516991 +0.00395344 +-0.00169963 +0.000521955 +0.00390443 +-0.00176873 +0.000498128 +0.00387843 +-0.00169155 +0.000480562 +0.00391032 +-0.0017682 +0.000535543 +0.00388229 +-0.00182643 +0.000485375 +0.00381588 +-0.00180991 +0.000502643 +0.00387271 +-0.00187051 +0.000578228 +0.003836 +-0.00188229 +0.000494683 +0.00384529 +-0.00187072 +0.000530544 +0.00388234 +-0.00193811 +-0.000769825 +0.00156041 +0.00142832 +-0.000750227 +0.00152259 +0.00135493 +-0.000725143 +0.00144259 +0.00134184 +-0.000758795 +0.00145892 +0.00136406 +-0.000765377 +0.00149941 +0.00132923 +-0.000729977 +0.00145513 +0.00131226 +-0.000754964 +0.001529 +0.00134572 +-0.000689283 +0.00153418 +0.00129225 +-0.000614762 +0.00154625 +0.00125351 +-0.000695387 +0.0015525 +0.00127921 +-0.000627677 +0.00150187 +0.00127202 +-0.000696993 +0.00151258 +0.00122426 +-0.00070206 +0.00156451 +0.00122296 +-0.000757382 +0.00152731 +0.00127546 +-0.000761482 +0.00148101 +0.00132494 +-0.000718377 +0.00148632 +0.00139783 +-0.00064864 +0.00145899 +0.00143771 +-0.000600594 +0.0015181 +0.0014751 +-0.000660977 +0.00150968 +0.00153412 +-0.000708087 +0.00148134 +0.00146948 +-0.000686064 +0.00148519 +0.00138763 +-0.00060287 +0.00149938 +0.00137883 +-0.000566981 +0.00144021 +0.00142793 +-0.000624544 +0.00149456 +0.00145846 +-0.000573566 +0.0014901 +0.00139077 +-0.000610281 +0.00154004 +0.00144872 +-0.000658731 +0.00147052 +0.00144442 +-0.000594832 +0.00141525 +0.0014365 +-0.000614754 +0.00139782 +0.00151712 +-0.000571883 +0.00142599 +0.00158471 +-0.000620411 +0.001357 +0.00159393 +-0.000622903 +0.00143566 +0.0015622 +-0.00067159 +0.00140329 +0.0016237 +-0.000661682 +0.00145476 +0.00169042 +-0.000636132 +0.00153521 +0.00169906 +-0.000587409 +0.00160404 +0.00168964 +-0.000509499 +0.00163051 +0.00171037 +-0.000469717 +0.00159942 +0.00164217 +-0.000545754 +0.00163697 +0.00163926 +-0.000472548 +0.00165335 +0.00167891 +-0.000405737 +0.00170242 +0.00169704 +-0.000328518 +0.00170284 +0.00173221 +-0.000316064 +0.0017851 +0.00171551 +-0.000368523 +0.00176757 +0.00177986 +-0.000407429 +0.00169288 +0.00176953 +-0.000434106 +0.00175457 +0.00171773 +-0.000420699 +0.00173648 +0.00163592 +-0.000380038 +0.0017227 +0.00156273 +-0.000363998 +0.00165773 +0.0016149 +-0.000300535 +0.00167259 +0.00166923 +-0.000300331 +0.00158917 +0.00168473 +-0.000320823 +0.00166511 +0.00171655 +-0.000376524 +0.00166078 +0.00178041 +-0.000326269 +0.00169624 +0.00172196 +-0.000346202 +0.00177198 +0.00168932 +-0.000334431 +0.00184428 +0.00164648 +-0.00033178 +0.00192874 +0.00163874 +-0.000414762 +0.00194155 +0.00165098 +-0.000463011 +0.00199073 +0.00170051 +-0.000474892 +0.0019162 +0.00173928 +-0.000547957 +0.0018947 +0.00170187 +-0.000494028 +0.00195957 +0.00169277 +-0.000488808 +0.00196932 +0.0017769 +-0.00046118 +0.00197267 +0.00169674 +-0.000481451 +0.00199288 +0.00161687 +-0.000426116 +0.00193045 +0.00160137 +-0.000432372 +0.00192887 +0.00151676 +-0.000458929 +0.00186512 +0.00156606 +-0.000448894 +0.00193861 +0.00152484 +-0.000457952 +0.00199799 +0.0014649 +-0.00053821 +0.00197334 +0.0014526 +-0.000611625 +0.00201246 +0.00146934 +-0.000572328 +0.00194467 +0.00143677 +-0.000550224 +0.00191403 +0.00151275 +-0.000468882 +0.00193173 +0.00152918 +-0.000496503 +0.001961 +0.00145448 +-0.000572725 +0.00196455 +0.0014916 +-0.000493671 +0.00199526 +0.00148891 +-0.000496472 +0.00203899 +0.00141625 +-0.000514744 +0.00196506 +0.00145369 +-0.000550006 +0.00188805 +0.0014588 +-0.000537908 +0.00193338 +0.0015295 +-0.000481304 +0.00196998 +0.00147796 +-0.00041508 +0.00198708 +0.00152818 +-0.000407796 +0.00193148 +0.00146449 +-0.000444637 +0.00200473 +0.00144264 +-0.000375205 +0.00195944 +0.00146076 +-0.000318365 +0.00201552 +0.00143205 +-0.000264357 +0.00195823 +0.00146369 +-0.000311179 +0.00188988 +0.00144537 +-0.000234271 +0.00191076 +0.00147451 +-0.000156866 +0.00188944 +0.00144705 +-7.75818e-05 +0.00191368 +0.001429 +9.23023e-07 +0.00191127 +0.00146111 +-2.07073e-05 +0.00190836 +0.00154311 +-5.38097e-06 +0.00183308 +0.00157914 +1.12208e-05 +0.00187134 +0.00150524 +1.11048e-05 +0.00178716 +0.00151596 +2.282e-06 +0.00170973 +0.00148239 +-2.53649e-05 +0.00167398 +0.00141057 +1.37813e-05 +0.00159884 +0.00141522 +-7.00086e-05 +0.00161055 +0.00142171 +8.17894e-06 +0.0015894 +0.001447 +-3.41111e-05 +0.00163886 +0.00139254 +2.85315e-05 +0.00160777 +0.00134449 +2.59274e-05 +0.00165731 +0.00127566 +0.000109958 +0.00166278 +0.00126522 +0.000160598 +0.00163191 +0.00120454 +9.22198e-05 +0.00162335 +0.00115503 +9.05742e-05 +0.00167358 +0.00108667 +6.41221e-05 +0.00174638 +0.00112131 +0.000136381 +0.00173566 +0.00107814 +0.000156656 +0.00176391 +0.00115554 +0.000163035 +0.00167987 +0.00116539 +0.00013424 +0.00172575 +0.00110008 +0.000213308 +0.00170969 +0.00107381 +0.000253613 +0.00166316 +0.00101541 +0.000294479 +0.00173189 +0.000987012 +0.00037801 +0.00171837 +0.000980688 +0.000339812 +0.00179076 +0.00100309 +0.000325095 +0.00183006 +0.00092934 +0.000292811 +0.0018661 +0.000999044 +0.000304118 +0.00193495 +0.00104733 +0.000236102 +0.0019359 +0.00109806 +0.000280321 +0.00198435 +0.00115188 +0.000364681 +0.00198736 +0.00114325 +0.000427873 +0.00194837 +0.00110219 +0.000497855 +0.0019566 +0.00105492 +0.000571219 +0.00195887 +0.00102788 +0.000496623 +0.0019202 +0.00103972 +0.000506917 +0.00184187 +0.00107067 +0.000522415 +0.0018703 +0.000992242 +0.000544744 +0.00186034 +0.0010735 +0.000543223 +0.00192499 +0.00101855 +0.000502617 +0.00187462 +0.000999588 +0.000432012 +0.00183072 +0.000982615 +0.000446108 +0.00187964 +0.0010505 +0.000370294 +0.00187265 +0.00101304 +0.000341135 +0.00190805 +0.00108443 +0.000309293 +0.00196866 +0.00113456 +0.000356255 +0.00196383 +0.00106405 +0.000289135 +0.00196721 +0.00111585 +0.000284834 +0.00189522 +0.00116055 +0.000203555 +0.00191808 +0.00115212 +0.000205744 +0.00192202 +0.00123685 +0.000222351 +0.00198047 +0.00129608 +0.000280569 +0.00198046 +0.00135781 +0.000296679 +0.00197084 +0.00127506 +0.000321747 +0.00204124 +0.00131524 +0.000336131 +0.00202243 +0.00139672 +0.000354772 +0.00194189 +0.00137758 +0.000339845 +0.00197774 +0.00130213 +0.000399916 +0.00191923 +0.00128916 +0.000318144 +0.001919 +0.00131182 +0.000354015 +0.00193706 +0.00138657 +0.000277356 +0.00196123 +0.00141376 +0.000237494 +0.00203604 +0.00141749 +0.00020872 +0.00211552 +0.00141 +0.000223908 +0.00217708 +0.00135362 +0.000168274 +0.00223343 +0.00132312 +0.00020604 +0.00217031 +0.00128081 +0.000231631 +0.00221227 +0.00121163 +0.000202081 +0.00213288 +0.00120677 +0.00023366 +0.00205677 +0.00122706 +0.000278484 +0.0020147 +0.00128554 +0.000310653 +0.00193897 +0.00126483 +0.000255785 +0.00197751 +0.00131683 +0.000216386 +0.00204708 +0.00134525 +0.000255197 +0.00212132 +0.00135875 +0.000284678 +0.00212774 +0.00143806 +0.000256906 +0.00219617 +0.00139627 +0.000242462 +0.00212998 +0.00134517 +0.000307985 +0.00216292 +0.00130249 +0.000236977 +0.00219907 +0.00127332 +0.000214538 +0.00227659 +0.00124708 +0.000163692 +0.00223055 +0.00119713 +9.19208e-05 +0.00226732 +0.00117072 +0.000138351 +0.00229836 +0.00110685 +0.000135109 +0.00237753 +0.00107648 +0.000126929 +0.00234408 +0.000998932 +7.96449e-05 +0.00229859 +0.00101484 +0.000114788 +0.00226988 +0.000945186 +0.000111281 +0.00226099 +0.0010295 +0.000172519 +0.00220414 +0.00104427 +9.66973e-05 +0.0022422 +0.00104269 +8.3307e-05 +0.00217302 +0.000995411 +9.75781e-05 +0.00225453 +0.00101421 +2.71405e-05 +0.0022206 +0.00104719 +-3.55502e-05 +0.00217395 +0.00108025 +3.57562e-05 +0.00212886 +0.00108934 +-1.48402e-05 +0.00210986 +0.00115475 +-6.59087e-05 +0.00207349 +0.00121193 +-9.01365e-05 +0.00214079 +0.00125759 +-1.09119e-05 +0.00211142 +0.00124975 +2.96878e-05 +0.00217909 +0.00121856 +4.2128e-05 +0.00221189 +0.0011413 +6.2344e-05 +0.00214377 +0.00118767 +9.41299e-05 +0.00222208 +0.00118011 +0.000118065 +0.00220541 +0.00110043 +8.42788e-05 +0.0021571 +0.0010394 +9.03023e-05 +0.00207607 +0.00101494 +8.2434e-05 +0.00214299 +0.00106652 +5.21727e-05 +0.00213829 +0.00114565 +7.74487e-05 +0.00207702 +0.00119864 +0.000152488 +0.00208993 +0.00116119 +7.90795e-05 +0.00204737 +0.00116163 +9.47221e-05 +0.00196413 +0.00116667 +0.000172854 +0.00196702 +0.00119964 +0.000191311 +0.00200326 +0.00127411 +0.00016754 +0.00198644 +0.00119441 +0.000201353 +0.00204664 +0.00124374 +0.000214513 +0.00208333 +0.00131911 +0.000156158 +0.00212303 +0.00136621 +8.74945e-05 +0.00208652 +0.00133226 +0.000162678 +0.00205109 +0.00134934 +0.0001208 +0.00212269 +0.0013672 +0.000103413 +0.00213131 +0.0012846 +0.000128567 +0.00206527 +0.00133157 +0.000148058 +0.00209945 +0.00125639 +0.000158522 +0.00202498 +0.00129569 +9.35773e-05 +0.00205647 +0.00134031 +0.000142069 +0.00198684 +0.00133995 +0.000199972 +0.00204712 +0.00135454 +0.000149968 +0.00200885 +0.00141141 +8.81079e-05 +0.00202959 +0.00135716 +0.000144431 +0.00202405 +0.00129394 +0.000157805 +0.00197903 +0.00136461 +0.000136478 +0.00189985 +0.0013864 +0.00021108 +0.00188109 +0.00135059 +0.000204836 +0.00180394 +0.00131582 +0.000182119 +0.00173377 +0.00127386 +0.000215991 +0.00170539 +0.0013463 +0.000135032 +0.00170921 +0.00132118 +0.000190229 +0.00168463 +0.0012616 +0.000247438 +0.00166699 +0.00120147 +0.00024257 +0.00163063 +0.00127798 +0.000192704 +0.00158711 +0.00122488 +0.00021925 +0.00151321 +0.00125705 +0.000180284 +0.00157196 +0.00120983 +0.000121515 +0.0015584 +0.00126951 +0.000123248 +0.00150898 +0.00133847 +8.67329e-05 +0.00154874 +0.001273 +9.41567e-05 +0.00159533 +0.00120247 +0.000143792 +0.0015459 +0.00115459 +0.00012503 +0.00161825 +0.00119477 +4.89769e-05 +0.00165584 +0.00119637 +6.22841e-05 +0.00173461 +0.00116775 +3.49476e-05 +0.00178961 +0.00110921 +6.51689e-05 +0.00178748 +0.00118847 +4.27055e-05 +0.00185149 +0.0011375 +6.43948e-05 +0.00182856 +0.00105874 +5.97186e-05 +0.00174754 +0.00103396 +8.37157e-05 +0.00171722 +0.00110949 +0.000158427 +0.00171311 +0.00106947 +9.81487e-05 +0.0017695 +0.00108915 +3.67159e-05 +0.00176097 +0.00103124 +6.2202e-05 +0.00181129 +0.00109464 +0.000119695 +0.0018047 +0.0011567 +0.000172563 +0.00178155 +0.00121889 +0.000233127 +0.00182881 +0.00118286 +0.00018774 +0.00187466 +0.00123798 +0.000239862 +0.00185395 +0.00130165 +0.000247561 +0.00190903 +0.00123757 +0.000262354 +0.00193677 +0.00131638 +0.000192659 +0.00188845 +0.00131369 +0.000208844 +0.00180516 +0.00131286 +0.000131026 +0.0017723 +0.00132092 +0.000181172 +0.00172035 +0.00127636 +0.000226807 +0.00169304 +0.00121024 +0.000232668 +0.00160915 +0.00119891 +0.000240014 +0.00153946 +0.00115107 +0.00027231 +0.00147065 +0.00118878 +0.000248676 +0.00140624 +0.00123871 +0.000333422 +0.00140378 +0.00124218 +0.000297605 +0.00132785 +0.00122988 +0.000225061 +0.00131937 +0.00118669 +0.000179847 +0.00138313 +0.0012197 +0.000257083 +0.00141816 +0.0012169 +0.000210465 +0.00147858 +0.001254 +0.000179932 +0.00148468 +0.00117507 +0.000247304 +0.00144105 +0.00120259 +0.000304086 +0.00138439 +0.00123024 +0.000365861 +0.00144156 +0.0012195 +0.000287586 +0.00141781 +0.00119694 +0.000246347 +0.00144405 +0.00112759 +0.000251385 +0.00136601 +0.00109466 +0.000221351 +0.00132748 +0.00116404 +0.000138622 +0.00131022 +0.00115642 +0.000100779 +0.00124672 +0.00119809 +5.21929e-05 +0.00129187 +0.00125101 +9.96268e-05 +0.00123077 +0.00121613 +0.000109439 +0.00122412 +0.00130015 +0.00019089 +0.00124263 +0.0013151 +0.000174782 +0.0013229 +0.0012928 +0.000243368 +0.00128638 +0.00132689 +0.000265653 +0.00127013 +0.00140713 +0.00032238 +0.00122993 +0.00145577 +0.000302626 +0.0012333 +0.00153823 +0.000348369 +0.00116788 +0.00150945 +0.000402576 +0.00115286 +0.00144592 +0.000468415 +0.00120564 +0.00145483 +0.000392065 +0.00121112 +0.00141821 +0.000404345 +0.00124835 +0.00134296 +0.000326232 +0.00124798 +0.00130982 +0.000291511 +0.00118223 +0.00126893 +0.000305609 +0.00112599 +0.00133089 +0.000325686 +0.00119857 +0.00137 +0.000372648 +0.0012669 +0.00135198 +0.000335452 +0.00125319 +0.001427 +0.000384684 +0.00127292 +0.00136076 +0.000399138 +0.00122185 +0.00142697 +0.000419219 +0.00113973 +0.00143431 +0.000425253 +0.00114787 +0.00135007 +0.000399619 +0.00120358 +0.00140871 +0.000439918 +0.00127053 +0.00144179 +0.000355672 +0.00126792 +0.00145157 +0.000436076 +0.00127804 +0.00142642 +0.000498299 +0.00132711 +0.00145677 +0.000582868 +0.0013273 +0.00144984 +0.000640253 +0.00137335 +0.00140758 +0.000624427 +0.00139509 +0.00148806 +0.00060986 +0.0013309 +0.0015416 +0.000683733 +0.00128921 +0.00154381 +0.000674871 +0.001329 +0.00146939 +0.0005922 +0.00134157 +0.00145498 +0.000613489 +0.0013172 +0.00153342 +0.000530176 +0.0013026 +0.00154018 +0.000526662 +0.00133683 +0.00161774 +0.000479115 +0.00137275 +0.00155734 +0.000443897 +0.00141277 +0.00162335 +0.000417766 +0.00136707 +0.0016899 +0.000423673 +0.00136609 +0.00177454 +0.000416041 +0.00141334 +0.00184461 +0.00044723 +0.00146114 +0.00190739 +0.000449179 +0.00140401 +0.00184468 +0.000429041 +0.00132257 +0.00185739 +0.000408592 +0.00127537 +0.00192487 +0.000397353 +0.0012757 +0.00184077 +0.00037179 +0.00119571 +0.00182856 +0.000397479 +0.00127321 +0.00185168 +0.00046767 +0.0012256 +0.00184911 +0.000426429 +0.00115161 +0.00184404 +0.000417929 +0.00119378 +0.0017709 +0.000451564 +0.00112782 +0.00181236 +0.000463014 +0.00120065 +0.00177035 +0.000498717 +0.00115563 +0.00183278 +0.000544124 +0.00109275 +0.0018672 +0.000612514 +0.00113633 +0.00189219 +0.000546 +0.00116886 +0.00193363 +0.000519382 +0.00114634 +0.00201099 +0.000572606 +0.00109762 +0.00196633 +0.000552167 +0.00105569 +0.0019617 +0.000506717 +0.00112716 +0.00196696 +0.000531187 +0.00110903 +0.00204616 +0.000509495 +0.0011603 +0.00211019 +0.000573961 +0.00114853 +0.0021641 +0.00057344 +0.00115899 +0.00218253 +0.000534039 +0.00108517 +0.00219662 +0.000538233 +0.0011693 +0.00218639 +0.000482569 +0.00113066 +0.00223746 +0.000552723 +0.00117719 +0.00224811 +0.000523648 +0.0011259 +0.00218709 +0.00050753 +0.00105987 +0.00213629 +0.000579819 +0.00108248 +0.00209804 +0.000628355 +0.00113852 +0.00206085 +0.000638037 +0.00113526 +0.00214493 +0.000553664 +0.00112747 +0.00214944 +0.000587855 +0.00118018 +0.00220647 +0.000629264 +0.00114379 +0.00215552 +0.000658517 +0.00120251 +0.00219304 +0.000609093 +0.00113423 +0.00218325 +0.000540838 +0.00108421 +0.00217929 +0.000587271 +0.0011422 +0.00221944 +0.000646993 +0.00119155 +0.00219682 +0.000692515 +0.00125416 +0.00220042 +0.000627288 +0.00128988 +0.00224128 +0.000698401 +0.00133281 +0.00222396 +0.000637014 +0.00138386 +0.00225269 +0.000615329 +0.00139827 +0.00233345 +0.000621248 +0.00133141 +0.00238536 +0.00059261 +0.00125661 +0.00235735 +0.000554899 +0.00122383 +0.00232228 +0.000531622 +0.00128268 +0.0023788 +0.000522481 +0.0012516 +0.00230038 +0.000506683 +0.00132157 +0.00225504 +0.000554649 +0.00126916 +0.00230144 +0.000605664 +0.00120371 +0.00228374 +0.000554167 +0.00114132 +0.0022616 +0.000532009 +0.00112236 +0.00218472 +0.00047324 +0.00116321 +0.0022303 +0.00044348 +0.0012264 +0.00227848 +0.00051937 +0.00118872 +0.00228304 +0.000598125 +0.00121315 +0.00226303 +0.000657538 +0.00125055 +0.00221537 +0.000583004 +0.0012911 +0.00221486 +0.000508751 +0.00133006 +0.00222786 +0.000564397 +0.00127631 +0.0022627 +0.000566282 +0.00119148 +0.00226364 +0.000615144 +0.00116509 +0.00221417 +0.000583653 +0.00121763 +0.00224067 +0.000643793 +0.00127722 +0.00223504 +0.000695588 +0.00123386 +0.00219511 +0.000718908 +0.00128483 +0.00213582 +0.000697587 +0.00123794 +0.00220325 +0.000629686 +0.00125891 +0.00224536 +0.000547883 +0.00124074 +0.00223201 +0.000489912 +0.00123218 +0.00217064 +0.000462248 +0.00128045 +0.00210657 +0.000501388 +0.00135474 +0.00211878 +0.000435537 +0.00140205 +0.00209378 +0.00047554 +0.00135875 +0.00215481 +0.000519068 +0.00139214 +0.00221954 +0.000589064 +0.00136244 +0.00225721 +0.000556261 +0.00128802 +0.00228143 +0.000561485 +0.00131789 +0.00220218 +0.000577099 +0.0013998 +0.00218647 +0.000553471 +0.00143774 +0.00225859 +0.000621397 +0.00141201 +0.00230246 +0.000562132 +0.00145908 +0.00234082 +0.000477514 +0.00145864 +0.00233454 +0.000452915 +0.0014229 +0.00226161 +0.000417831 +0.00135033 +0.00223511 +0.000465551 +0.00140837 +0.00227454 +0.000492712 +0.00136657 +0.00220587 +0.00057496 +0.00138713 +0.00220232 +0.000517325 +0.00133807 +0.00224068 +0.000490403 +0.00131265 +0.00216433 +0.000457067 +0.00133242 +0.00208885 +0.00048187 +0.00135014 +0.00200966 +0.000430686 +0.00139414 +0.00206108 +0.000400083 +0.0013174 +0.00204173 +0.00039574 +0.00134922 +0.00196319 +0.000447381 +0.00141379 +0.00198229 +0.000425303 +0.00147687 +0.00203457 +0.000443805 +0.00148661 +0.00195233 +0.000453112 +0.00144196 +0.00188078 +0.00048643 +0.00137507 +0.00192098 +0.000521589 +0.00144146 +0.00188152 +0.000512373 +0.00149291 +0.00194836 +0.000471518 +0.0015327 +0.00201119 +0.000463661 +0.00150276 +0.0020902 +0.000537395 +0.00154464 +0.00208718 +0.000618356 +0.00152013 +0.00209385 +0.000589945 +0.00154607 +0.00216948 +0.000525254 +0.00149461 +0.00215033 +0.00045471 +0.0015164 +0.00219215 +0.000468566 +0.0015871 +0.00223698 +0.000526695 +0.00154712 +0.00218984 +0.000573026 +0.00160953 +0.0021558 +0.000610862 +0.00158603 +0.00208357 +0.000531659 +0.00156346 +0.00210401 +0.000516489 +0.0016408 +0.00207258 +0.000500191 +0.00159953 +0.00200025 +0.000487151 +0.00166747 +0.00204939 +0.000540298 +0.00167044 +0.00198331 +0.000608293 +0.00172068 +0.00197607 +0.000535021 +0.00168774 +0.00194875 +0.000547497 +0.00161548 +0.00199144 +0.00050082 +0.00157379 +0.00204875 +0.000474515 +0.00151668 +0.00199177 +0.000391354 +0.00150444 +0.00198018 +0.000366661 +0.001585 +0.00197017 +0.000301595 +0.00158642 +0.00191573 +0.000272223 +0.00165903 +0.0018831 +0.000333301 +0.00165221 +0.0019416 +0.000410094 +0.00163507 +0.00197337 +0.000380639 +0.00162519 +0.00205233 +0.000393919 +0.00157414 +0.00211879 +0.000478644 +0.00157457 +0.00212342 +0.000556155 +0.00160833 +0.00211618 +0.000504732 +0.00154635 +0.0021429 +0.000459942 +0.00157557 +0.00220878 +0.000532665 +0.0015672 +0.00216587 +0.000599726 +0.00153031 +0.00220251 +0.000605756 +0.00157399 +0.002275 +0.000604633 +0.00155806 +0.00219167 +0.000633999 +0.00148147 +0.00216996 +0.000692082 +0.00151115 +0.00211569 +0.000755363 +0.001461 +0.00214177 +0.000814752 +0.00142027 +0.00209689 +0.000761057 +0.00137742 +0.00204709 +0.000780424 +0.00139312 +0.00196598 +0.000808044 +0.00132121 +0.00200156 +0.00077422 +0.00128887 +0.00193078 +0.000744194 +0.00127176 +0.00194472 +0.000772252 +0.0012863 +0.00186598 +0.000764263 +0.00129364 +0.00195013 +0.000707234 +0.00135645 +0.00195138 +0.000748451 +0.00131508 +0.00188982 +0.000787713 +0.00126284 +0.0018357 +0.000738013 +0.0011941 +0.00183338 +0.000758027 +0.0012764 +0.0018386 +0.000709048 +0.00131704 +0.00189472 +0.000683881 +0.00136227 +0.00182747 +0.000625075 +0.00135791 +0.00188849 +0.000591908 +0.00143554 +0.00187993 +0.000662615 +0.0014433 +0.0019262 +0.000670057 +0.00136734 +0.00196327 +0.000678361 +0.00132794 +0.00203797 +0.000598799 +0.00135134 +0.00202 +0.00062501 +0.00140563 +0.00207971 +0.000558163 +0.00140796 +0.0020275 +0.000526478 +0.00134004 +0.0019877 +0.00059995 +0.00132233 +0.00194912 +0.000631033 +0.00136464 +0.00201579 +0.00055745 +0.00133129 +0.00204174 +0.000589144 +0.00125485 +0.00202301 +0.000513713 +0.00127586 +0.00199032 +0.000478744 +0.00121551 +0.00203864 +0.000512563 +0.00123946 +0.00211269 +0.000588276 +0.00127267 +0.00209359 +0.000605512 +0.00120334 +0.0020478 +0.000639098 +0.0011326 +0.00201513 +0.000617025 +0.00112424 +0.00199558 +0.000695464 +0.00115398 +0.00198283 +0.000726262 +0.00120819 +0.00202797 +0.00075607 +0.00125643 +0.00198 +0.000722889 +0.00122351 +0.00194191 +0.000713169 +0.0011716 +0.00199423 +0.000663512 +0.00111812 +0.00202515 +0.000613756 +0.00116359 +0.0019736 +0.00057957 +0.00108732 +0.00198825 +0.000648808 +0.00113096 +0.00201066 +0.000577027 +0.00108573 +0.00200924 +0.000610473 +0.00109876 +0.00208613 +0.000558975 +0.00113056 +0.00202665 +0.000600887 +0.00109128 +0.00205365 +0.000526817 +0.00108854 +0.00201234 +0.000534792 +0.00112819 +0.00193775 +0.000474662 +0.00107628 +0.00190792 +0.00046196 +0.000992402 +0.00190974 +0.000446253 +0.00100533 +0.00182736 +0.000457338 +0.000987518 +0.00174514 +0.000467409 +0.00106392 +0.00178066 +0.000535425 +0.00104927 +0.00173209 +0.000491499 +0.00098411 +0.00176409 +0.000439914 +0.00093573 +0.00181045 +0.000431172 +0.00098742 +0.00174563 +0.000419407 +0.00103843 +0.00181241 +0.000354184 +0.000996341 +0.00177813 +0.000315258 +0.00105863 +0.00182062 +0.000249538 +0.00102437 +0.0017793 +0.000172064 +0.000990396 +0.00177269 +0.000109874 +0.000942072 +0.00180427 +0.000188089 +0.000969394 +0.00182259 +0.000122164 +0.000916432 +0.0018156 +0.000156338 +0.00090438 +0.00173887 +0.000113113 +0.000950215 +0.00168203 +5.54115e-05 +0.000896113 +0.00171275 +4.40397e-05 +0.000934046 +0.0017878 +3.05238e-05 +0.000897558 +0.0018632 +6.92759e-05 +0.000844127 +0.00184286 +3.7019e-05 +0.000839427 +0.0019212 +7.49686e-05 +0.000894268 +0.0019678 +8.88344e-05 +0.000873738 +0.00188664 +6.47452e-05 +0.000891904 +0.00189851 +0.000128454 +0.000865686 +0.00194805 +6.671e-05 +0.000899682 +0.00192963 +2.9708e-05 +0.000961545 +0.0019744 +2.89083e-05 +0.00101772 +0.00203798 +7.73488e-05 +0.00108692 +0.00204612 +0.000104655 +0.00101974 +0.00209019 +0.000114218 +0.000961121 +0.00215079 +0.00011212 +0.00104306 +0.00217273 +0.000164942 +0.00110353 +0.00214529 +0.00024756 +0.00109109 +0.00216011 +0.000293632 +0.00113429 +0.00221678 +0.000363226 +0.00110587 +0.00225614 +0.000366727 +0.0010309 +0.00221656 +0.000308536 +0.000988048 +0.00226007 +0.000244016 +0.0010264 +0.00222192 +0.000314007 +0.00107371 +0.00221399 +0.000357537 +0.00103972 +0.00227841 +0.000389958 +0.00108083 +0.00234483 +0.000386471 +0.00103694 +0.0022723 +0.000457354 +0.00107475 +0.00224737 +0.000392007 +0.00112302 +0.00222289 +0.000320714 +0.00109757 +0.00218455 +0.000405322 +0.00109506 +0.00217862 +0.000398091 +0.00102602 +0.00212981 +0.000446562 +0.000990455 +0.00206994 +0.000382645 +0.000992794 +0.00212569 +0.000445919 +0.00102394 +0.00212405 +0.000477325 +0.00100811 +0.00204683 +0.000547007 +0.00105537 +0.00203629 +0.000568855 +0.00110922 +0.00209811 +0.000507229 +0.0011555 +0.00213362 +0.000591026 +0.00115853 +0.00214662 +0.000560671 +0.00110711 +0.00220628 +0.000507485 +0.00115533 +0.00225084 +0.000490688 +0.00115331 +0.00226862 +0.000451176 +0.00113601 +0.00234169 +0.000413206 +0.00107942 +0.00229113 +0.000442349 +0.00109496 +0.00222771 +0.000473247 +0.00104906 +0.00217961 +0.000471024 +0.00100971 +0.00210447 +0.000492366 +0.00108111 +0.00214505 +0.000456141 +0.00115784 +0.00214576 +0.000384059 +0.00114342 +0.00218814 +0.000373583 +0.00113195 +0.00210473 +0.000439676 +0.00108219 +0.0021236 +0.000435437 +0.00108453 +0.00220831 +0.000448332 +0.00102116 +0.00216337 +0.00050144 +0.00108046 +0.00214657 +0.00052414 +0.00105406 +0.00208081 +0.000453741 +0.00107056 +0.0020364 +0.000437858 +0.00104775 +0.00195623 +0.000444325 +0.00112935 +0.00193389 +0.000487645 +0.00109334 +0.00199734 +0.000509845 +0.00102294 +0.00203919 +0.000436156 +0.000990474 +0.00201244 +0.000462829 +0.00102124 +0.00199829 +0.000514591 +0.00105067 +0.00193783 +0.000445894 +0.0010922 +0.00191034 +0.000489359 +0.00116505 +0.00190865 +0.00047313 +0.00124139 +0.00187535 +0.000391957 +0.00121699 +0.0018793 +0.000336578 +0.00117731 +0.00182872 +0.000377012 +0.00110387 +0.00184183 +0.000359314 +0.00118498 +0.00185939 +0.000340626 +0.00110254 +0.00185197 +0.000424828 +0.00109731 +0.00184288 +0.000345518 +0.00110569 +0.00181391 +0.000405347 +0.00108312 +0.00175813 +0.000450023 +0.00108415 +0.001686 +0.000474199 +0.00106095 +0.00176395 +0.000429104 +0.0011145 +0.00171601 +0.000442047 +0.00108026 +0.00179256 +0.000370547 +0.00109014 +0.00174795 +0.000353548 +0.00100832 +0.00173325 +0.000291157 +0.00106096 +0.00171008 +0.000371979 +0.00108678 +0.00170906 +0.000448011 +0.00105155 +0.00169572 +0.000468398 +0.00113203 +0.00167816 +0.000427375 +0.00119216 +0.00163456 +0.000369233 +0.001248 +0.00160807 +0.000435401 +0.00119502 +0.00160424 +0.000395532 +0.00115167 +0.00166533 +0.000421781 +0.00108869 +0.00171577 +0.000445673 +0.00114397 +0.00165599 +0.000487311 +0.00117205 +0.00172438 +0.000477378 +0.00114126 +0.00164594 +0.000408309 +0.00113061 +0.00169406 +0.000435946 +0.00105985 +0.00173188 +0.000455235 +0.00112821 +0.0017783 +0.000432834 +0.00109232 +0.00185185 +0.000446876 +0.00117453 +0.00186744 +0.000504558 +0.00123656 +0.00187251 +0.00055885 +0.00117802 +0.00184378 +0.00049327 +0.00113339 +0.00181365 +0.000484906 +0.00117621 +0.00188643 +0.000423427 +0.00122076 +0.00192432 +0.000364378 +0.00122568 +0.00186359 +0.000430093 +0.00125117 +0.00191083 +0.000381812 +0.00126173 +0.00184186 +0.000359287 +0.00118231 +0.00186147 +0.000306174 +0.00124834 +0.00186584 +0.000363997 +0.00121076 +0.0018164 +0.000309855 +0.00127238 +0.00183812 +0.000305422 +0.00122759 +0.00191005 +0.000310724 +0.00120199 +0.00182932 +0.000302183 +0.00117577 +0.00190957 +0.000322937 +0.00111163 +0.00185804 +0.000384389 +0.00115965 +0.00189147 +0.000309131 +0.00119598 +0.00187677 +0.000381142 +0.00120162 +0.00192129 +0.000461813 +0.00122059 +0.00193952 +0.000491133 +0.00118707 +0.00201175 +0.00055994 +0.00121625 +0.00205192 +0.000628887 +0.00126477 +0.00206153 +0.000553667 +0.0012307 +0.00204201 +0.000626215 +0.00122126 +0.00199903 +0.000597237 +0.00125246 +0.00192563 +0.00053828 +0.00122043 +0.00197758 +0.000462525 +0.00120578 +0.00201289 +0.000537188 +0.00120646 +0.0020532 +0.00050506 +0.0012795 +0.00208206 +0.000445983 +0.00122665 +0.00211234 +0.000462139 +0.00130655 +0.00208879 +0.000531442 +0.00125763 +0.00208665 +0.000551968 +0.00117562 +0.00207941 +0.000594226 +0.0011341 +0.00214016 +0.000561763 +0.0011517 +0.00212697 +0.000537695 +0.00123091 +0.00210835 +0.000482194 +0.00117488 +0.00207704 +0.000476192 +0.00113469 +0.00200255 +0.000497851 +0.00118791 +0.00206498 +0.000547218 +0.00114259 +0.00201294 +0.000479888 +0.00117079 +0.0020562 +0.000516962 +0.00123929 +0.00208986 +0.000575869 +0.0012387 +0.00202879 +0.000650422 +0.00122158 +0.00199206 +0.00067347 +0.00120832 +0.00191148 +0.000680241 +0.00117549 +0.00183353 +0.000698329 +0.00112274 +0.00179563 +0.00068564 +0.0011673 +0.00186672 +0.000714294 +0.00124615 +0.00185401 +0.000758737 +0.00129428 +0.00180008 +0.000787141 +0.00131306 +0.00187781 +0.000714207 +0.00131004 +0.00183455 +0.000707731 +0.00123271 +0.00180021 +0.00075295 +0.00121711 +0.00177243 +0.000754605 +0.0012513 +0.00183175 +0.000750949 +0.00125172 +0.00180022 +0.000681012 +0.00128547 +0.00183442 +0.000717938 +0.0012279 +0.00188464 +0.000677424 +0.0012841 +0.00193362 +0.000733716 +0.00126267 +0.00187386 +0.000712471 +0.00118081 +0.00188073 +0.000734447 +0.00122983 +0.00187075 +0.000775016 +0.00124769 +0.00194311 +0.00074412 +0.00131014 +0.0019653 +0.000762098 +0.00126122 +0.00203226 +0.000718241 +0.00132759 +0.00206178 +0.000655201 +0.00127233 +0.00204864 +0.000708537 +0.00122104 +0.00209016 +0.000715705 +0.00124741 +0.00200983 +0.00066978 +0.00131781 +0.00202143 +0.000594755 +0.00130168 +0.00198522 +0.000607022 +0.00136102 +0.00204463 +0.000570973 +0.00130339 +0.00209542 +0.000601925 +0.00138204 +0.002103 +0.000641525 +0.001307 +0.00210213 +0.000653151 +0.00139046 +0.00211209 +0.000695594 +0.00133033 +0.00215431 +0.000697417 +0.00138571 +0.00221858 +0.000748935 +0.00135245 +0.00222065 +0.000721103 +0.00133922 +0.00214159 +0.000775895 +0.00140392 +0.00214507 +0.000772397 +0.00148793 +0.00213369 +0.000847692 +0.00149684 +0.00209559 +0.000845846 +0.00145112 +0.00212755 +0.000788838 +0.00150235 +0.00209113 +0.000762846 +0.0015377 +0.0020185 +0.000757755 +0.00160411 +0.00207108 +0.000819784 +0.00161834 +0.00201496 +0.000784159 +0.00165067 +0.00208486 +0.000842608 +0.00161991 +0.00213813 +0.000801538 +0.00155131 +0.00210973 +0.000855224 +0.00158799 +0.00205521 +0.000885446 +0.00152375 +0.00210168 +0.000821487 +0.00153547 +0.00212445 +0.00076408 +0.00153326 +0.002062 +0.000704149 +0.0015028 +0.00201023 +0.00065737 +0.00148775 +0.00194106 +0.000686964 +0.00152294 +0.00186974 +0.000688879 +0.00159077 +0.00192069 +0.000648424 +0.00161073 +0.00199256 +0.000609302 +0.00153897 +0.00201536 +0.000682905 +0.0015105 +0.00204654 +0.000716138 +0.00158689 +0.0020304 +0.000669253 +0.00156847 +0.00196212 +0.000639869 +0.00162159 +0.0020214 +0.000662646 +0.00165481 +0.00209608 +0.000677062 +0.00165986 +0.00201262 +0.00072578 +0.00159108 +0.00202242 +0.000660069 +0.00156709 +0.0019744 +0.000688196 +0.00155913 +0.00189474 +0.000695032 +0.00147482 +0.00190152 +0.000662315 +0.00150433 +0.001829 +0.00059909 +0.00155917 +0.00181505 +0.000602953 +0.00163266 +0.00177281 +0.000526407 +0.00166926 +0.00177407 +0.000528522 +0.00158777 +0.00179762 +0.000568053 +0.00151483 +0.00181546 +0.000648373 +0.00149672 +0.00183597 +0.000618939 +0.00157179 +0.00180953 +0.000648944 +0.00162727 +0.00186629 +0.000722519 +0.00160709 +0.00190344 +0.000668859 +0.0015681 +0.00195635 +0.000714929 +0.00155467 +0.00188637 +0.000658318 +0.00161777 +0.00188272 +0.000655573 +0.0015413 +0.00184606 +0.000724186 +0.00158602 +0.00182388 +0.000700807 +0.00160093 +0.00190407 +0.000658186 +0.00162521 +0.00197331 +0.000721057 +0.00164355 +0.00202726 +0.000684021 +0.00162512 +0.00210135 +0.000763593 +0.00165415 +0.00210643 +0.000802599 +0.00158467 +0.00207724 +0.000788552 +0.00157738 +0.0021606 +0.000771549 +0.00150953 +0.00220863 +0.000779439 +0.00144687 +0.00215196 +0.000725182 +0.00148045 +0.00209602 +0.000690887 +0.00149853 +0.0021715 +0.000660526 +0.00147362 +0.00209628 +0.000701878 +0.00144622 +0.00202744 +0.000621899 +0.00144079 +0.00205526 +0.000591496 +0.00151899 +0.00204261 +0.000587644 +0.00157236 +0.00210847 +0.000503667 +0.00157174 +0.00209632 +0.000459528 +0.00162665 +0.00204903 +0.000401656 +0.00157752 +0.00201113 +0.000329539 +0.0015346 +0.0019986 +0.000273831 +0.00148864 +0.00195405 +0.000301775 +0.00154262 +0.00189485 +0.000265273 +0.00151016 +0.00196423 +0.000217631 +0.00146729 +0.00190863 +0.000205057 +0.00146609 +0.00182472 +0.000152185 +0.00151375 +0.00177854 +0.000221537 +0.00152066 +0.00182694 +0.000153935 +0.00150265 +0.00187495 +7.05324e-05 +0.0014895 +0.00186652 +1.05323e-05 +0.00151172 +0.00192225 +-1.45322e-05 +0.00143066 +0.0019226 +-4.15456e-05 +0.00138478 +0.00198867 +2.6172e-05 +0.00134334 +0.00195872 +5.77463e-05 +0.00138659 +0.00189289 +-1.2363e-05 +0.00136398 +0.00193501 +-6.08231e-05 +0.00141478 +0.00198266 +-7.83001e-05 +0.0014819 +0.00193378 +-9.05549e-05 +0.00145721 +0.00185353 +-0.000128654 +0.00140134 +0.00180228 +-0.000157264 +0.00142015 +0.00187991 +-0.000189301 +0.00148573 +0.00183664 +-0.000218328 +0.00140629 +0.00182979 +-0.000223185 +0.00132938 +0.00179427 +-0.000193236 +0.00127302 +0.00173835 +-0.000193879 +0.00124015 +0.00181658 +-0.000155012 +0.00127153 +0.00188517 +-0.000166758 +0.001312 +0.00181152 +-0.000154019 +0.00123773 +0.0017725 +-0.000217283 +0.00118174 +0.00176462 +-0.000245251 +0.00126001 +0.00178168 +-0.000226984 +0.00133902 +0.00180665 +-0.000266938 +0.00139957 +0.00185068 +-0.000333294 +0.00135956 +0.00188526 +-0.000346992 +0.0014205 +0.00182783 +-0.000265555 +0.0013983 +0.00181915 +-0.00034147 +0.00136167 +0.00182888 +-0.000349021 +0.0014448 +0.00181366 +-0.0003832 +0.00151328 +0.00177703 +-0.000465535 +0.00153325 +0.00178175 +-0.00043094 +0.0014559 +0.00177726 +-0.000453462 +0.00139705 +0.00172043 +-0.000446502 +0.00147441 +0.00175457 +-0.000415954 +0.00147741 +0.00167546 +-0.000340447 +0.00151147 +0.00165706 +-0.000403779 +0.0015635 +0.00163511 +-0.000481637 +0.00153981 +0.00161109 +-0.000445736 +0.00161642 +0.00161757 +-0.000448641 +0.00154983 +0.00156506 +-0.00036862 +0.00156458 +0.00158912 +-0.000338881 +0.00151709 +0.00165285 +-0.000322006 +0.00153256 +0.00157114 +-0.000403162 +0.00155413 +0.00158332 +-0.000374238 +0.00148927 +0.00153688 +-0.00044871 +0.00146002 +0.00156513 +-0.000444648 +0.00154198 +0.00158673 +-0.000364334 +0.00154774 +0.00155997 +-0.000387922 +0.00160611 +0.00161686 +-0.000326091 +0.00165692 +0.00164505 +-0.000273024 +0.00159936 +0.00167777 +-0.000269316 +0.00152376 +0.00163942 +-0.00021606 +0.00156797 +0.0016885 +-0.000189386 +0.00162834 +0.00163517 +-0.000226607 +0.00163712 +0.00155943 +-0.000174288 +0.00162708 +0.00162547 +-0.000137537 +0.00161537 +0.00170105 +-0.000100058 +0.00159036 +0.00162915 +-0.000179842 +0.00161923 +0.00162805 +-0.000133795 +0.00165834 +0.00156847 +-9.60852e-05 +0.00158262 +0.00157513 +-2.78917e-05 +0.0015756 +0.00162513 +-3.86983e-05 +0.00156831 +0.00154129 +-1.20836e-05 +0.00156804 +0.00162186 +6.14481e-05 +0.00160995 +0.00162792 +7.03266e-05 +0.00158991 +0.00170989 +0.000106084 +0.0016646 +0.00172839 +2.54328e-05 +0.00168877 +0.00171782 +-3.68497e-05 +0.00172993 +0.00175815 +1.28449e-05 +0.00177497 +0.00170618 +-4.51561e-06 +0.00174162 +0.00178224 +-6.39625e-05 +0.00168626 +0.00180677 +-0.000120314 +0.00164044 +0.0017629 +-0.000186565 +0.00162512 +0.00181365 +-0.000245531 +0.00164357 +0.00175549 +-0.000181781 +0.00166897 +0.0018054 +-0.000112964 +0.00169108 +0.00176095 +-0.000149777 +0.00162147 +0.00172932 +-0.000126854 +0.00168098 +0.00167334 +-0.000165897 +0.00175206 +0.0016983 +-9.87696e-05 +0.00179873 +0.00172102 +-2.58978e-05 +0.00182313 +0.00175699 +-8.15388e-05 +0.00183446 +0.00169394 +-8.24179e-06 +0.00179819 +0.00171657 +-6.43449e-05 +0.0017633 +0.00176981 +-7.35495e-05 +0.00172649 +0.00169392 +-9.6439e-05 +0.00165327 +0.00165765 +-4.71705e-05 +0.00171724 +0.00163157 +-0.000131007 +0.00172986 +0.00162806 +-0.000138951 +0.00167752 +0.00156175 +-0.000217667 +0.00164981 +0.00154639 +-0.000292664 +0.00166133 +0.00150841 +-0.000322375 +0.00167663 +0.00158641 +-0.000301651 +0.00167036 +0.00166845 +-0.000326117 +0.00170449 +0.00174218 +-0.000361377 +0.00162777 +0.00173379 +-0.000338936 +0.00169522 +0.00178012 +-0.00025753 +0.00171811 +0.00178713 +-0.000294356 +0.00170969 +0.00171115 +-0.000268085 +0.00174533 +0.00178353 +-0.000232371 +0.00180302 +0.00183449 +-0.000305865 +0.00179364 +0.00187585 +-0.000284095 +0.00186497 +0.00183539 +-0.000213897 +0.0019106 +0.00184919 +-0.000260525 +0.00184047 +0.00185953 +-0.000295985 +0.00191536 +0.00187779 +-0.000363372 +0.00194776 +0.00191791 +-0.000415091 +0.0019084 +0.00186336 +-0.000466398 +0.0019747 +0.00187644 +-0.000431761 +0.00204233 +0.00191422 +-0.000462468 +0.00196328 +0.00191713 +-0.000430644 +0.00188541 +0.00190599 +-0.000513352 +0.00186648 +0.00190512 +-0.000567395 +0.00191572 +0.00194819 +-0.000601486 +0.00186141 +0.00200376 +-0.000570279 +0.00186382 +0.00208263 +-0.000582408 +0.00192758 +0.00213728 +-0.000585661 +0.00185313 +0.0020967 +-0.00059759 +0.00179871 +0.0021607 +-0.000530599 +0.00175727 +0.00219224 +-0.000560472 +0.00171577 +0.00212452 +-0.000492969 +0.00172028 +0.00207331 +-0.000548357 +0.00166994 +0.00203334 +-0.000551666 +0.001735 +0.00197897 +-0.000591544 +0.00170987 +0.00204953 +-0.000675126 +0.00172138 +0.00205856 +-0.000725098 +0.00167751 +0.00211127 +-0.000705032 +0.00166855 +0.00219323 +-0.000751524 +0.00160566 +0.00216031 +-0.000722394 +0.00163023 +0.00223613 +-0.000709376 +0.00170033 +0.00219012 +-0.000787624 +0.00169182 +0.00222181 +-0.000771902 +0.00167695 +0.00230386 +-0.000741136 +0.00174435 +0.0022625 +-0.000758012 +0.00169648 +0.0021945 +-0.000692103 +0.00170063 +0.00214122 +-0.000732172 +0.00177525 +0.00214645 +-0.000769439 +0.0018299 +0.00219959 +-0.000755449 +0.00186813 +0.00212514 +-0.000742903 +0.00182593 +0.00205261 +-0.000761872 +0.00174359 +0.00206033 +-0.000760144 +0.00175818 +0.0021439 +-0.000687678 +0.00171472 +0.00215161 +-0.00070491 +0.00178496 +0.00219598 +-0.000759352 +0.00184846 +0.00218169 +-0.000708441 +0.00185497 +0.00224926 +-0.000691363 +0.00187876 +0.00232889 +-0.00066189 +0.0017992 +0.00232994 +-0.000731774 +0.00175444 +0.00234763 +-0.000710274 +0.00183618 +0.00234007 +-0.000767508 +0.00178112 +0.00231019 +-0.000841199 +0.00175466 +0.00227748 +-0.000866562 +0.00181444 +0.00222287 +-0.0008819 +0.00173979 +0.00218556 +-0.000909601 +0.00181878 +0.00219948 +-0.000847117 +0.00178669 +0.00224709 +-0.000873953 +0.00175303 +0.00217397 +-0.000833011 +0.00168225 +0.00215129 +-0.000843265 +0.00174045 +0.00221218 +-0.00085037 +0.00173839 +0.00227316 +-0.000782732 +0.00172087 +0.00222501 +-0.00085986 +0.00172277 +0.00218969 +-0.000874826 +0.00166709 +0.00218975 +-0.000837514 +0.00169113 +0.0021856 +-0.000865017 +0.00161852 +0.00221983 +-0.000815903 +0.00158742 +0.00228164 +-0.000805728 +0.00151225 +0.00226767 +-0.000722942 +0.00150937 +0.00224928 +-0.000754747 +0.00157615 +0.00220769 +-0.000809026 +0.00159976 +0.0021469 +-0.000862152 +0.00157029 +0.00220613 +-0.000779258 +0.00157608 +0.00218896 +-0.000716641 +0.00152589 +0.00221653 +-0.000723024 +0.0015602 +0.00213919 +-0.000648565 +0.00156181 +0.00209853 +-0.000639906 +0.00149588 +0.00204581 +-0.000579863 +0.00145629 +0.00209084 +-0.000633213 +0.00144102 +0.00215503 +-0.000583378 +0.00150916 +0.00214647 +-0.000592877 +0.00153789 +0.00206719 +-0.00066894 +0.00151225 +0.00203968 +-0.000678519 +0.00143081 +0.00201786 +-0.000729528 +0.00142042 +0.00208487 +-0.000778321 +0.00139993 +0.0021512 +-0.000772675 +0.0013876 +0.00221802 +-0.000751026 +0.00132766 +0.00217335 +-0.000723837 +0.00125199 +0.00214624 +-0.000654994 +0.00120414 +0.00213316 +-0.000721039 +0.00124733 +0.00210197 +-0.000690012 +0.00121979 +0.00217599 +-0.000645305 +0.00120595 +0.00224357 +-0.000615142 +0.00120261 +0.00216433 +-0.00068844 +0.00121939 +0.00219978 +-0.000622697 +0.00122148 +0.00225196 +-0.000647013 +0.00129621 +0.00221997 +-0.000572858 +0.00128981 +0.00217923 +-0.00049132 +0.00126649 +0.00217647 +-0.000548205 +0.0012893 +0.00223515 +-0.000472773 +0.00132738 +0.00224286 +0.000760371 +0.000703026 +0.00239591 +0.000815176 +0.000640544 +0.0023788 +0.000743851 +0.000652528 +0.00233443 +0.000798987 +0.000646596 +0.00239866 +0.000865878 +0.000696768 +0.00238422 +0.000797067 +0.000744869 +0.00239653 +0.000806348 +0.000675562 +0.00234846 +0.000817576 +0.000674336 +0.00226437 +0.000746782 +0.000629547 +0.00227786 +0.000712985 +0.000612002 +0.00235369 +0.000629566 +0.000626952 +0.00234945 +0.000634577 +0.000711437 +0.00235554 +0.000592994 +0.00064066 +0.00233406 +0.000518139 +0.000627586 +0.0022963 +0.00050721 +0.000567483 +0.00235519 +0.000475039 +0.000524062 +0.00242061 +0.000516522 +0.000552178 +0.00235214 +0.000509764 +0.000593759 +0.00227848 +0.000477073 +0.000664055 +0.00224399 +0.000525111 +0.000608884 +0.002201 +0.000512807 +0.000663031 +0.00226516 +0.000532648 +0.000581355 +0.00227679 +0.000466019 +0.000627364 +0.00230216 +0.000406046 +0.000573659 +0.00227535 +0.000433473 +0.000638629 +0.00223774 +0.000452105 +0.000581851 +0.00217749 +0.000476344 +0.000628707 +0.00224396 +0.000546839 +0.000581575 +0.00224695 +0.000486763 +0.000568492 +0.00230543 +0.000403107 +0.000557363 +0.00231292 +0.00035512 +0.000495367 +0.00228052 +0.000366213 +0.000414789 +0.00230469 +0.00038959 +0.000459212 +0.00223628 +0.000336767 +0.000453962 +0.00217008 +0.000272848 +0.00044034 +0.00211596 +0.000265081 +0.000361507 +0.00208555 +0.00027838 +0.000435852 +0.00204687 +0.000290752 +0.000352584 +0.00203623 +0.000283135 +0.000435314 +0.00205348 +0.00027025 +0.000496225 +0.00211113 +0.000247951 +0.000422473 +0.0021 +0.000327241 +0.000430483 +0.00207086 +0.000260723 +0.000442765 +0.00201963 +0.000261716 +0.000472648 +0.00194022 +0.000205372 +0.000418427 +0.00197317 +0.00016599 +0.000356489 +0.00193059 +0.000173877 +0.000369921 +0.0018934 +0.000221516 +0.000304051 +0.00186907 +0.000150485 +0.000311356 +0.00191491 +0.000172947 +0.000240067 +0.00195508 +0.000155234 +0.00032209 +0.00194249 +0.000217537 +0.000267712 +0.0019615 +0.000276305 +0.000212897 +0.00198873 +0.000251088 +0.000215858 +0.00206969 +0.000223645 +0.000234345 +0.00214783 +0.000288363 +0.000289066 +0.00215199 +0.000231695 +0.000274635 +0.00221347 +0.000200358 +0.000336496 +0.00218954 +0.000190073 +0.000255993 +0.00219246 +0.000249333 +0.000204796 +0.00222512 +0.000230687 +0.000249982 +0.00229448 +0.000232966 +0.000267192 +0.00221143 +0.000251072 +0.000250377 +0.00213025 +0.000195904 +0.000303264 +0.00216712 +0.000254061 +0.000365047 +0.00216785 +0.000285076 +0.000331819 +0.0020962 +0.000216917 +0.000281935 +0.00208808 +0.000221808 +0.00021717 +0.00214268 +0.000175739 +0.000169464 +0.00208975 +0.00011816 +0.000146763 +0.0020317 +0.000113212 +8.44362e-05 +0.00197434 +0.000171187 +0.000135217 +0.00200984 +0.000217324 +7.29115e-05 +0.00197535 +0.000289721 +8.17923e-05 +0.00193199 +0.000360628 +0.000128336 +0.00192958 +0.000410221 +0.00013271 +0.00186087 +0.000479432 +0.000136013 +0.00190984 +0.000526373 +0.00013422 +0.00198051 +0.000606791 +0.000107568 +0.00198526 +0.000595681 +6.39308e-05 +0.00191334 +0.000577427 +6.15115e-05 +0.00199617 +0.000499566 +3.61284e-05 +0.00201839 +0.000558709 +-2.00468e-05 +0.00204176 +0.000542231 +-6.30777e-05 +0.00197051 +0.000505577 +-2.46697e-06 +0.00192379 +0.000576754 +9.76329e-06 +0.00196834 +0.00052788 +-2.69225e-06 +0.00203657 +0.000603183 +-1.74975e-05 +0.00207277 +0.00055513 +2.53976e-05 +0.00201754 +0.00048849 +-2.50347e-05 +0.00200285 +0.00056966 +-1.97533e-05 +0.00197869 +0.000523489 +-8.48489e-05 +0.00194987 +0.000548046 +-5.47941e-05 +0.00187441 +0.000540746 +-0.000120706 +0.00182147 +0.000489746 +-0.000154439 +0.0018803 +0.000561103 +-0.000194958 +0.0019019 +0.000507742 +-0.00025241 +0.00193433 +0.000468969 +-0.000326912 +0.00194642 +0.000490728 +-0.000249564 +0.00191914 +0.000485465 +-0.000180059 +0.00187076 +0.000474712 +-0.000260376 +0.00184558 +0.000457261 +-0.000270735 +0.00192797 +0.000375868 +-0.000253081 +0.00194421 +0.000460394 +-0.000246731 +0.00194809 +0.000523625 +-0.000240152 +0.00189189 +0.000453657 +-0.000271779 +0.00185578 +0.000495416 +-0.000201621 +0.00183267 +0.000551446 +-0.00016501 +0.00178052 +0.000624352 +-0.00019953 +0.00180684 +0.000611167 +-0.000116832 +0.00182053 +0.000583312 +-0.000188397 +0.00185662 +0.000527554 +-0.000158017 +0.00180033 +0.000519789 +-0.000241999 +0.00179102 +0.000563944 +-0.000173471 +0.00181456 +0.000518494 +-0.000210935 +0.00175348 +0.000594157 +-0.000248073 +0.00176327 +0.000568749 +-0.000202132 +0.00169661 +0.000491321 +-0.000172968 +0.00167778 +0.000482953 +-8.86736e-05 +0.00168272 +0.00046575 +-1.00553e-05 +0.00165583 +0.000473097 +1.13408e-05 +0.00157405 +0.000415209 +5.17901e-05 +0.00162109 +0.000399112 +0.000123822 +0.00166295 +0.000454806 +0.000117087 +0.00172661 +0.000404205 +0.000137565 +0.00166165 +0.000487211 +0.00014225 +0.00164468 +0.000497049 +0.000224794 +0.0016617 +0.000533923 +0.000148402 +0.00165954 +0.000537555 +0.000164692 +0.00157634 +0.000536051 +0.00011811 +0.00164725 +0.000561711 +4.65195e-05 +0.00160961 +0.00050536 +0.000109056 +0.00162028 +0.000554977 +4.1207e-05 +0.00160867 +0.000577975 +-4.04685e-05 +0.00160824 +0.000498533 +-3.66161e-05 +0.00157868 +0.000557533 +-2.03297e-05 +0.00163744 +0.000625052 +-6.36156e-05 +0.00166515 +0.000549951 +-7.27179e-05 +0.00170358 +0.000586989 +-6.65779e-07 +0.00172881 +0.000571923 +3.90246e-05 +0.00165534 +0.000604057 +5.75674e-05 +0.00157903 +0.000527587 +8.91191e-05 +0.00159792 +0.000527981 +0.000163559 +0.0015572 +0.00061255 +0.000169213 +0.00155319 +0.000595672 +9.12476e-05 +0.00158211 +0.000657916 +0.000137901 +0.00161601 +0.000689177 +0.000110799 +0.00154193 +0.000690012 +7.36666e-05 +0.00146563 +0.00064924 +3.83059e-06 +0.00149134 +0.000682939 +7.98003e-05 +0.00150845 +0.000681039 +5.07147e-05 +0.00158814 +0.000631196 +-1.79395e-05 +0.00158967 +0.00071513 +-6.02865e-06 +0.00158602 +0.000758936 +-5.29372e-05 +0.00164153 +0.000828029 +-3.06288e-05 +0.00168544 +0.000806512 +2.99144e-05 +0.00174086 +0.000784838 +-5.11864e-05 +0.00175323 +0.000727654 +-0.000113576 +0.0017471 +0.000807579 +-8.80015e-05 +0.00173453 +0.000873707 +-8.25079e-05 +0.00178742 +0.000843312 +-6.23416e-05 +0.00171081 +0.000887769 +-0.000119919 +0.00166712 +0.000813055 +-8.45161e-05 +0.00164803 +0.000787206 +-0.000104623 +0.00156975 +0.000757221 +-3.61101e-05 +0.00152967 +0.000826214 +-8.54241e-05 +0.00153251 +0.000833383 +-1.74697e-05 +0.00158281 +0.000904188 +2.5917e-05 +0.00156537 +0.000863342 +0.000100264 +0.00156742 +0.000818904 +7.77643e-05 +0.00163612 +0.000830881 +-6.23532e-06 +0.00163691 +0.00081635 +-8.2033e-05 +0.00160165 +0.000817902 +-9.47162e-05 +0.00151776 +0.000752508 +-0.000148786 +0.00151757 +0.000740866 +-0.000168642 +0.00159924 +0.000693575 +-0.000100345 +0.00161654 +0.000730477 +-0.000174613 +0.0016345 +0.000675475 +-0.000131165 +0.00168232 +0.000753917 +-0.000113729 +0.00165507 +0.00077102 +-5.82008e-05 +0.00159323 +0.000750144 +6.82651e-06 +0.00164358 +0.000750585 +8.79474e-06 +0.00155876 +0.000738949 +-7.50544e-05 +0.00155293 +0.000745443 +4.61092e-06 +0.00158141 +0.000725711 +8.20776e-05 +0.00155296 +0.000720818 +0.000159309 +0.00158777 +0.000777747 +9.66489e-05 +0.00159349 +0.000734618 +0.000163317 +0.00156357 +0.000660132 +0.000169653 +0.00152342 +0.000662537 +0.000253939 +0.00153291 +0.000626527 +0.000282028 +0.00160442 +0.000624023 +0.000332206 +0.0016728 +0.000580293 +0.000329935 +0.00174548 +0.000514714 +0.000299247 +0.00178973 +0.000580041 +0.000246271 +0.0017785 +0.000630899 +0.000257223 +0.00171147 +0.000580823 +0.000189432 +0.00170163 +0.00060953 +0.000173069 +0.00177978 +0.000572029 +0.000173134 +0.00170367 +0.000527734 +0.000167448 +0.00177582 +0.000543229 +0.000249274 +0.00175956 +0.000564916 +0.00016806 +0.00177114 +0.000646027 +0.000173588 +0.00174684 +0.000645261 +9.06759e-05 +0.00176486 +0.000623384 +2.07865e-05 +0.001722 +0.000583473 +-5.38458e-05 +0.00171591 +0.000514643 +-7.26083e-05 +0.00176184 +0.000556069 +-3.72359e-05 +0.0018269 +0.000597949 +-0.00011016 +0.00181558 +0.000625464 +-0.000189449 +0.00182808 +0.000648632 +-0.000143477 +0.00176063 +0.000612222 +-6.69152e-05 +0.00176418 +0.000687539 +-9.94499e-05 +0.00174253 +0.000767316 +-8.32138e-05 +0.00176645 +0.000848272 +-7.28179e-05 +0.00174325 +0.000828324 +-0.000115548 +0.00181379 +0.000900553 +-0.000148927 +0.00178432 +0.000948423 +-0.000218939 +0.00178692 +0.000986558 +-0.000221406 +0.00186268 +0.000938348 +-0.00028627 +0.00183683 +0.000961492 +-0.000366283 +0.00185302 +0.000986898 +-0.000319939 +0.0019194 +0.000972731 +-0.000401946 +0.00193596 +0.000929406 +-0.000329649 +0.00192616 +0.000875465 +-0.000389807 +0.00190025 +0.000914819 +-0.000390882 +0.00197542 +0.000992483 +-0.000361595 +0.0019578 +0.000979661 +-0.00028526 +0.00199256 +0.00106204 +-0.000304128 +0.00198492 +0.00113139 +-0.00025892 +0.00200352 +0.00108477 +-0.000201728 +0.00196162 +0.00113918 +-0.000142221 +0.0019352 +0.00120654 +-0.000190568 +0.00195323 +0.0012021 +-0.000186173 +0.0018686 +0.0011235 +-0.000191269 +0.00183704 +0.00109465 +-0.000258427 +0.00188015 +0.00110209 +-0.000247814 +0.001964 +0.00116923 +-0.000205679 +0.00193373 +0.00123566 +-0.00021805 +0.00188241 +0.00122317 +-0.000159875 +0.0019429 +0.00128585 +-0.000117415 +0.00190458 +0.0012801 +-0.000189796 +0.00186067 +0.00123317 +-0.000127928 +0.00189486 +0.00127681 +-9.67093e-05 +0.00182913 +0.0011922 +-9.38013e-05 +0.00182338 +0.0011481 +-0.000160969 +0.00179611 +0.00113684 +-7.72267e-05 +0.00178832 +0.00120692 +-4.07626e-05 +0.0018193 +0.00117278 +1.42117e-05 +0.00176442 +0.00124833 +3.1522e-06 +0.00180144 +0.00128374 +-5.26036e-06 +0.00187809 +0.00135348 +2.35744e-05 +0.00183931 +0.00137544 +-6.79498e-06 +0.00191544 +0.00141943 +8.16181e-06 +0.00198644 +0.00149567 +9.99689e-06 +0.00202365 +0.00142826 +-1.1888e-05 +0.00197699 +0.00139241 +-8.05166e-05 +0.00201171 +0.00139607 +-0.000102731 +0.00192989 +0.00137084 +-0.000183412 +0.00192256 +0.00137512 +-0.000135229 +0.00185285 +0.00133569 +-7.98615e-05 +0.00180206 +0.00131314 +-2.46656e-05 +0.00186243 +0.00134395 +-6.81664e-05 +0.00179641 +0.00127246 +-5.53259e-05 +0.00175254 +0.00121643 +-4.00692e-05 +0.00169068 +0.00123634 +-0.000122173 +0.00168279 +0.00125913 +-0.000111702 +0.00160173 +0.00121565 +-5.81914e-05 +0.00165118 +0.00120023 +-0.000102019 +0.00172218 +0.00122395 +-7.8007e-05 +0.00164433 +0.00114088 +-8.85378e-05 +0.00163064 +0.00107896 +-0.000144213 +0.00161433 +0.00100766 +-0.000182574 +0.00158893 +0.000984401 +-0.000263921 +0.00159539 +0.00106855 +-0.000272529 +0.00158871 +0.000984873 +-0.00028262 +0.00159851 +0.00101507 +-0.000326237 +0.00166474 +0.000973451 +-0.000391921 +0.0016987 +0.000943247 +-0.000451685 +0.00175082 +0.000872 +-0.000406436 +0.00175956 +0.000862694 +-0.000364067 +0.00168663 +0.000912118 +-0.000421206 +0.00172526 +0.000923533 +-0.000347297 +0.00168517 +0.000897097 +-0.00042711 +0.00169662 +0.00090705 +-0.000497729 +0.00165064 +0.00092545 +-0.000513401 +0.0015693 +0.000928323 +-0.000542262 +0.00148956 +0.000964079 +-0.000465622 +0.00148265 +0.000918705 +-0.00052981 +0.0015146 +0.00093585 +-0.000478506 +0.00157997 +0.000957446 +-0.000476554 +0.00149794 +0.00100478 +-0.000410489 +0.00147355 +0.000972382 +-0.000340706 +0.00150934 +0.000891181 +-0.000348081 +0.00148584 +0.000895925 +-0.00039915 +0.00155344 +0.000972191 +-0.00043478 +0.00156412 +0.000917747 +-0.000459605 +0.00162428 +0.000941741 +-0.00040804 +0.00168725 +0.000939555 +-0.000389485 +0.00177002 +0.00100246 +-0.000441745 +0.00179263 +0.00101336 +-0.00043038 +0.00170925 +0.00103976 +-0.000354879 +0.00168092 +0.00100788 +-0.000337603 +0.00160421 +0.000974163 +-0.000380862 +0.00153946 +0.00104783 +-0.000392543 +0.001499 +0.00101151 +-0.000392052 +0.00142232 +0.000994329 +-0.000388364 +0.00150533 +0.00106271 +-0.000405604 +0.00155253 +0.00105889 +-0.000333313 +0.00150826 +0.00105494 +-0.000368011 +0.00143093 +0.00113543 +-0.000341391 +0.00143443 +0.00108318 +-0.00040557 +0.00145316 +0.0010344 +-0.00034148 +0.00142647 +0.00106735 +-0.000292864 +0.00136523 +0.00114274 +-0.000254551 +0.00135828 +0.00121881 +-0.000226014 +0.00138274 +0.00129292 +-0.000251077 +0.00134987 +0.00129131 +-0.000297892 +0.00142062 +0.00124444 +-0.000246239 +0.0013723 +0.00129263 +-0.000176404 +0.00137339 +0.00120793 +-0.00017635 +0.00136817 +0.00119484 +-9.62973e-05 +0.00139307 +0.00114197 +-4.00324e-05 +0.00142828 +0.00109766 +1.48818e-06 +0.00148754 +0.00102053 +-3.08083e-05 +0.00147307 +0.00105607 +-4.03392e-06 +0.00140082 +0.00109936 +-3.05741e-05 +0.00146881 +0.00106232 +-0.000106231 +0.00147903 +0.000991736 +-8.06167e-05 +0.00143951 +0.000943102 +-1.26509e-05 +0.00142484 +0.000945095 +6.83645e-05 +0.00139969 +0.00100767 +1.66658e-05 +0.00142441 +0.000926737 +4.09994e-05 +0.00143198 +0.000876443 +9.35993e-05 +0.00138834 +0.000796996 +0.000120902 +0.0013764 +0.000819512 +0.000177328 +0.00131716 +0.000855377 +0.000133241 +0.00125415 +0.000902117 +6.44471e-05 +0.00127097 +0.000850011 +0.000124217 +0.00130118 +0.000877763 +0.000125434 +0.00138135 +0.000883655 +5.73204e-05 +0.00133109 +0.000949336 +0.000104326 +0.00130509 +0.00101932 +9.2194e-05 +0.0013515 +0.000999675 +0.000159304 +0.00130344 +0.00102372 +9.68383e-05 +0.00125129 +0.00102153 +2.32274e-05 +0.00129344 +0.000992886 +3.50234e-05 +0.00121444 +0.000938132 +8.91957e-05 +0.00117884 +0.000972485 +9.88007e-05 +0.00125583 +0.000912625 +9.36582e-05 +0.00131575 +0.00090768 +0.000101881 +0.00140006 +0.000941515 +2.65757e-05 +0.00141967 +0.000977836 +-3.13458e-05 +0.00146992 +0.000938061 +-0.000106012 +0.00146338 +0.000903197 +-0.000125552 +0.00153823 +0.000850992 +-0.000112743 +0.00147258 +0.000822569 +-4.44081e-05 +0.00143107 +0.000833924 +3.96475e-05 +0.00143347 +0.000850761 +7.16761e-05 +0.00135671 +0.000814466 +9.7636e-05 +0.00128454 +0.000799203 +1.5722e-05 +0.00130058 +0.000806467 +2.60994e-05 +0.00121668 +0.000884769 +1.47776e-05 +0.00118601 +0.000894242 +9.62252e-05 +0.00120784 +0.000852368 +8.0067e-05 +0.00113583 +0.000787996 +0.000135322 +0.00113758 +0.000708778 +0.00011161 +0.00115661 +0.000773939 +9.62036e-05 +0.00110449 +0.000821654 +9.00459e-05 +0.00103459 +0.000801032 +0.000147448 +0.00109358 +0.000787864 +0.000182133 +0.0011699 +0.000723439 +0.000237205 +0.00117396 +0.000710691 +0.000209368 +0.00125309 +0.000648865 +0.000161397 +0.0012859 +0.000571024 +0.00016581 +0.00131939 +0.000571368 +0.000169108 +0.00140417 +0.000555371 +0.000239878 +0.00144817 +0.000540702 +0.000160011 +0.00142355 +0.000526714 +9.8615e-05 +0.00148042 +0.000524515 +0.000181356 +0.00149911 +0.000556189 +0.000102683 +0.0014964 +0.000524078 +0.000132159 +0.0014236 +0.000458026 +0.0001854 +0.00142203 +0.000516762 +0.000225704 +0.00146814 +0.000529911 +0.000279928 +0.00140421 +0.000458156 +0.000260037 +0.0014449 +0.000403976 +0.00028361 +0.0015058 +0.000479583 +0.000300276 +0.00154052 +0.000400419 +0.000294093 +0.00157044 +0.000338791 +0.000288139 +0.00162846 +0.000382015 +0.000240128 +0.00157344 +0.000402883 +0.000321962 +0.00158167 +0.000437704 +0.000390248 +0.00154528 +0.000469763 +0.000390975 +0.00162384 +0.000472808 +0.000378272 +0.00170768 +0.000468693 +0.000449481 +0.00166172 +0.000458233 +0.000475078 +0.00158149 +0.000474069 +0.00039176 +0.00158422 +0.000471915 +0.000423244 +0.00150546 +0.000431744 +0.000408163 +0.00157866 +0.000474896 +0.000335371 +0.0015724 +0.00042828 +0.000306831 +0.0015075 +0.000397617 +0.000364226 +0.00156196 +0.000469745 +0.000361883 +0.00151732 +0.000458338 +0.000322984 +0.00144278 +0.000390412 +0.000304553 +0.00149018 +0.000379541 +0.000316668 +0.00157345 +0.000297946 +0.000314304 +0.00159662 +0.000274415 +0.000390366 +0.00162596 +0.000353041 +0.000380781 +0.00165639 +0.000420257 +0.000377988 +0.0017081 +0.000495129 +0.000345643 +0.00173151 +0.000546864 +0.000338057 +0.00179834 +0.00055773 +0.00030608 +0.00187618 +0.000478214 +0.000277585 +0.0018681 +0.000522395 +0.000265221 +0.00193948 +0.00049534 +0.00021162 +0.00187952 +0.000428466 +0.000218719 +0.00182778 +0.000476814 +0.000149263 +0.00182158 +0.000414047 +0.000206225 +0.00181763 +0.000381048 +0.000133588 +0.00178873 +0.000423886 +0.000204648 +0.00177097 +0.000422423 +0.000119945 +0.00176615 +0.000377021 +0.000107376 +0.00169557 +0.000386254 +8.23656e-05 +0.00177613 +0.000402307 +0.000125626 +0.00184734 +0.000479862 +0.000122013 +0.0018131 +0.000470574 +0.00019057 +0.00186223 +0.000439552 +0.000211546 +0.00178609 +0.000432273 +0.00023057 +0.00170372 +0.000500809 +0.000267744 +0.0017372 +0.000490737 +0.000348941 +0.00171471 +0.000458266 +0.000274988 +0.0016887 +0.000494119 +0.00028081 +0.00161201 +0.00043414 +0.000307284 +0.00155815 +0.000505842 +0.000351453 +0.00156853 +0.000430649 +0.000377605 +0.0015979 +0.000429627 +0.000460747 +0.00158097 +0.000359555 +0.000481804 +0.001538 +0.000301503 +0.000491636 +0.0015991 +0.000290076 +0.000497356 +0.00168299 +0.000246823 +0.000445847 +0.00163126 +0.000230634 +0.000381945 +0.00157783 +0.00020414 +0.000377221 +0.00156294 +0.000232407 +0.000432552 +0.00151573 +0.000287784 +0.000425707 +0.00155492 +0.00031324 +0.000345508 +0.00156589 +0.000306862 +0.000275657 +0.00151814 +0.000325887 +0.000310256 +0.00144303 +0.000400228 +0.000322196 +0.0014039 +0.000369518 +0.000243809 +0.0013933 +0.000333797 +0.000167815 +0.00138109 +0.000293667 +0.000241162 +0.00139558 +0.000308286 +0.000307258 +0.00134441 +0.000319601 +0.000386775 +0.00137178 +0.00035849 +0.000380826 +0.00144696 +0.000351454 +0.000441564 +0.00138813 +0.000428536 +0.000466204 +0.00141365 +0.000462655 +0.000474878 +0.00133644 +0.000542811 +0.000455189 +0.00135612 +0.00057213 +0.000382182 +0.00138791 +0.000640561 +0.000429224 +0.00137047 +0.000618036 +0.000489134 +0.00131476 +0.000655159 +0.00049461 +0.00123866 +0.000577771 +0.000486951 +0.0012726 +0.000501997 +0.000449935 +0.00126322 +0.000549854 +0.00038934 +0.0012984 +0.000496627 +0.000327537 +0.0013218 +0.000447432 +0.000391074 +0.00129454 +0.000456137 +0.000425614 +0.00121753 +0.000406152 +0.000362067 +0.00119177 +0.000347793 +0.000327518 +0.00122942 +0.000383581 +0.000365564 +0.00126437 +0.000385539 +0.000415838 +0.00133269 +0.000437926 +0.000376954 +0.00138695 +0.000364578 +0.000369639 +0.00142898 +0.000325248 +0.000366176 +0.00135387 +0.000328987 +0.000389206 +0.00128744 +0.000334979 +0.000318728 +0.0012685 +0.000319124 +0.00023839 +0.00129074 +0.000245608 +0.00026741 +0.00132161 +0.000298255 +0.000310058 +0.00127053 +0.000317981 +0.000376816 +0.00130323 +0.000355217 +0.00033111 +0.00136426 +0.000277665 +0.000339674 +0.00139761 +0.000257705 +0.000377617 +0.00147084 +0.000277166 +0.000364581 +0.00155239 +0.000249953 +0.000286619 +0.00153286 +0.000219236 +0.000247417 +0.00146416 +0.000187673 +0.000236765 +0.0015422 +0.000177536 +0.000276902 +0.00147977 +0.000244025 +0.000250939 +0.00152565 +0.000239153 +0.000311834 +0.00146676 +0.000320073 +0.000327309 +0.00148707 +0.000258013 +0.00037353 +0.00152188 +0.000248683 +0.000293326 +0.00154796 +0.000329402 +0.000267187 +0.0015469 +0.000277507 +0.000221772 +0.00159634 +0.000252852 +0.000246063 +0.00167382 +0.00024199 +0.000161951 +0.00167648 +0.000261965 +7.96532e-05 +0.00167118 +0.000255508 +8.49096e-05 +0.00175562 +0.000239005 +5.06133e-05 +0.00183146 +0.000164403 +8.77591e-05 +0.00184742 +0.000189331 +0.000137638 +0.00178346 +0.000151031 +0.000213354 +0.00178389 +0.000163241 +0.000221529 +0.00170032 +0.000159913 +0.000289149 +0.00175147 +0.000137316 +0.000276315 +0.00178877 +0.000142215 +0.000263003 +0.00172954 +0.000156118 +0.000185104 +0.0016989 +0.000106299 +0.000210093 +0.00174823 +0.000142783 +0.0002453 +0.00180649 +0.000129528 +0.000265427 +0.00172513 +0.000198209 +0.000301904 +0.00175908 +0.000207586 +0.000385679 +0.00176876 +0.00028026 +0.00037023 +0.00172777 +0.000291969 +0.000454271 +0.00172795 +0.00030908 +0.000483312 +0.00180582 +0.000316545 +0.000417895 +0.00185935 +0.000312048 +0.000467232 +0.00192824 +0.000245588 +0.000417918 +0.00190949 +0.000219026 +0.000487222 +0.00195062 +0.000297845 +0.000518584 +0.00195261 +0.000345983 +0.000450259 +0.00193797 +0.000386862 +0.000412816 +0.00200221 +0.000336343 +0.000386406 +0.00206506 +0.00033372 +0.000458499 +0.00202039 +0.000409148 +0.000424208 +0.00203868 +0.000340479 +0.000472688 +0.00205027 +0.000348159 +0.000411566 +0.00199192 +0.000390392 +0.000353247 +0.00194703 +0.000332844 +0.000386193 +0.00189408 +0.000325105 +0.000310602 +0.00193185 +0.000248452 +0.000345723 +0.00194138 +0.000269181 +0.000270748 +0.00190748 +0.000302772 +0.000348345 +0.00190038 +0.000257275 +0.000383199 +0.00196295 +0.00030555 +0.000445603 +0.00193172 +0.000321658 +0.000363908 +0.0019154 +0.00039776 +0.000348827 +0.00188103 +0.000476129 +0.000358546 +0.00184999 +0.000507713 +0.000354972 +0.00192866 +0.000528293 +0.000288062 +0.00197661 +0.000467142 +0.000304516 +0.00192014 +0.000490228 +0.000342933 +0.00184809 +0.000436038 +0.000280187 +0.00183002 +0.000408897 +0.000350652 +0.00179132 +0.00038471 +0.000285792 +0.00184039 +0.000330063 +0.000272419 +0.00177687 +0.00033923 +0.000272073 +0.00186122 +0.000348383 +0.00024525 +0.00178124 +0.000310779 +0.000179173 +0.00174356 +0.00036437 +0.000160944 +0.00168035 +0.000395384 +0.000164685 +0.00160146 +0.000409199 +9.28537e-05 +0.00164447 +0.000394355 +5.69933e-05 +0.00156901 +0.000368262 +7.59211e-05 +0.0016475 +0.000306985 +9.44832e-05 +0.00159182 +0.00038991 +0.000110908 +0.00159914 +0.000326549 +7.43651e-05 +0.00164215 +0.000312767 +4.57341e-05 +0.00172083 +0.000360091 +0.000115978 +0.00171572 +0.000442772 +0.000118706 +0.00169684 +0.000377857 +0.000115318 +0.00175138 +0.000419437 +0.000187743 +0.0017664 +0.000373575 +0.000182174 +0.00183757 +0.000447079 +0.000184083 +0.00179522 +0.000403155 +0.000256675 +0.0017942 +0.000350907 +0.000198575 +0.00182729 +0.000319223 +0.00026844 +0.00179102 +0.000291923 +0.000332858 +0.00174301 +0.00033182 +0.000283002 +0.00179889 +0.000287178 +0.000346137 +0.00176395 +0.000329422 +0.000311753 +0.00182901 +0.000271017 +0.000305988 +0.0018903 +0.000323873 +0.000298213 +0.00195622 +0.000336097 +0.000296065 +0.00204016 +0.000267032 +0.000338529 +0.0020652 +0.000228167 +0.000358972 +0.0021378 +0.000186724 +0.000392376 +0.00207985 +0.000179547 +0.000407896 +0.00199906 +0.00019483 +0.000411789 +0.00208243 +0.000246777 +0.000348545 +0.00208637 +0.000236539 +0.000416174 +0.00213658 +0.000257017 +0.000373395 +0.0021811 +0.000264296 +0.000445184 +0.0021797 +0.000289302 +0.000365684 +0.00219565 +0.000238344 +0.000380462 +0.00220349 +0.000238067 +0.000304469 +0.00224124 +0.000302144 +0.000299858 +0.00229667 +0.000363141 +0.00034682 +0.00226098 +0.000438869 +0.000356059 +0.00222383 +0.00037714 +0.000349088 +0.00228163 +0.000450665 +0.00037253 +0.00224636 +0.000371433 +0.000355651 +0.00222111 +0.000401012 +0.000411025 +0.00227819 +0.000353337 +0.000380728 +0.00234151 +0.000375367 +0.000382263 +0.00236474 +0.000436909 +0.000338043 +0.00232657 +0.00035623 +0.000351558 +0.00234911 +0.00041193 +0.000404281 +0.00231281 +0.000343913 +0.000453929 +0.00232323 +0.000326082 +0.000371395 +0.00233162 +0.000294033 +0.00029612 +0.00235412 +0.000372139 +0.000302351 +0.00238669 +0.000405318 +0.000369024 +0.00234602 +0.00045883 +0.000303189 +0.00234753 +0.000491824 +0.000331422 +0.00227463 +0.000470532 +0.000260027 +0.00223402 +0.000497082 +0.000275662 +0.00231308 +0.000525669 +0.000345873 +0.0023512 +0.000444014 +0.000356839 +0.0023715 +0.000493799 +0.000380428 +0.00243604 +0.000478275 +0.000414672 +0.00235997 +0.000486253 +0.000360645 +0.00229503 +0.000455229 +0.000336186 +0.00221993 +0.000472528 +0.000290867 +0.00228955 +0.0004599 +0.000212853 +0.00225866 +0.000532166 +0.000233533 +0.00229803 +0.000536407 +0.000151024 +0.00231738 +0.000614589 +0.000123765 +0.00229881 +0.000652646 +0.000194888 +0.00227249 +0.000702614 +0.000251873 +0.00231064 +0.000786528 +0.000240624 +0.00231629 +0.000725599 +0.000245191 +0.00225741 +0.000799162 +0.000215059 +0.00222773 +0.000855239 +0.000236773 +0.00216787 +0.00086549 +0.000280855 +0.00223964 +0.000897436 +0.000359302 +0.0022447 +0.000960414 +0.000307822 +0.00226886 +0.00100168 +0.000237035 +0.0022468 +0.00101553 +0.000315261 +0.00227661 +0.00103566 +0.000257044 +0.00233497 +0.00099453 +0.000190568 +0.00236797 +0.00102519 +0.000215321 +0.00229282 +0.0010109 +0.000294207 +0.00232062 +0.00107244 +0.000257495 +0.00227517 +0.00115416 +0.000280251 +0.00227328 +0.0011707 +0.000243585 +0.00234799 +0.00110194 +0.000206141 +0.00231529 +0.00114565 +0.000204004 +0.00238798 +0.00115852 +0.000128513 +0.00242453 +0.00119479 +0.000194654 +0.00238567 +0.00117625 +0.000118078 +0.00241718 +0.00120543 +0.000139558 +0.00249391 +0.00113262 +0.000159098 +0.00245496 +0.00121435 +0.000143382 +0.00247151 +0.00121469 +5.85317e-05 +0.00247203 +0.00124639 +0.000126007 +0.00243151 +0.00122919 +4.99111e-05 +0.00246488 +0.00127827 +7.71482e-05 +0.00240125 +0.00132702 +0.000141993 +0.00237638 +0.00128087 +0.000179172 +0.0024371 +0.00130731 +9.9486e-05 +0.00242482 +0.00122713 +7.29103e-05 +0.00243289 +0.00115747 +0.000110362 +0.00246362 +0.00123343 +0.000138875 +0.00248846 +0.00119386 +0.000110427 +0.00255793 +0.00114681 +3.9818e-05 +0.00255849 +0.00109186 +-1.17425e-05 +0.00251948 +0.00102417 +-6.29181e-05 +0.00251918 +0.00110686 +-4.51951e-05 +0.00251219 +0.00104072 +-1.85444e-05 +0.00246619 +0.00102298 +1.17895e-05 +0.00238896 +0.000974329 +2.62099e-05 +0.00232095 +0.000952868 +0.000106503 +0.00230385 +0.000894262 +4.52574e-05 +0.00230762 +0.000896898 +-1.75465e-06 +0.00237821 +0.000864298 +-3.70483e-05 +0.00230827 +0.000892111 +-6.93926e-05 +0.00238162 +0.000822789 +-2.12606e-05 +0.00239044 +0.000774036 +-4.04724e-05 +0.00232371 +0.000808267 +-0.000101825 +0.00237129 +0.000801171 +-3.66166e-05 +0.00242512 +0.00080104 +-8.25052e-05 +0.00249649 +0.000804341 +-3.94672e-05 +0.00256955 +0.000839605 +-9.43403e-05 +0.00262382 +0.000924456 +-9.46041e-05 +0.00262339 +0.000867969 +-0.00015763 +0.00262946 +0.000833563 +-0.000226505 +0.00259379 +0.000753156 +-0.000200175 +0.00260023 +0.000801992 +-0.000130917 +0.00260451 +0.000802814 +-7.05529e-05 +0.00254489 +0.000835814 +-3.0722e-05 +0.00247762 +0.000756878 +-2.72316e-05 +0.00244669 +0.00079136 +2.39596e-05 +0.00238846 +0.000780316 +6.61227e-05 +0.00246126 +0.000778319 +-4.4171e-06 +0.00250838 +0.000856409 +-2.79808e-05 +0.00253176 +0.000779279 +3.42058e-06 +0.00251549 +0.000790098 +-3.0497e-05 +0.00243846 +0.00081258 +5.05264e-05 +0.00242707 +0.00075304 +2.39972e-05 +0.00237275 +0.000705172 +5.85014e-05 +0.00231177 +0.000701237 +-4.72576e-06 +0.00225532 +0.000721652 +7.53713e-05 +0.00223614 +0.000745356 +0.000130538 +0.00217619 +0.000760371 +0.000208003 +0.00220739 +0.000779014 +0.000286577 +0.00223344 +0.000783273 +0.000319184 +0.00231166 +0.000811702 +0.000309853 +0.00239107 +0.000852394 +0.000235403 +0.00239227 +0.000805037 +0.000170166 +0.00236579 +0.000757534 +0.000226486 +0.00240788 +0.000798793 +0.000161911 +0.00237144 +0.000800151 +0.000122524 +0.00229629 +0.00086255 +7.30472e-05 +0.00226699 +0.000807986 +5.23786e-05 +0.00220539 +0.000833312 +0.000127954 +0.00217628 +0.000836871 +0.000184304 +0.00211294 +0.000863278 +0.000105808 +0.00213141 +0.000832133 +3.02319e-05 +0.00210864 +0.00079383 +-4.22472e-05 +0.00208674 +0.000770264 +-0.000123742 +0.00208852 +0.000693478 +-9.8328e-05 +0.00211417 +0.000668883 +-0.000113633 +0.00203441 +0.000686291 +-0.000195753 +0.00202203 +0.000669516 +-0.000161709 +0.00194614 +0.000586049 +-0.000146982 +0.00194208 +0.000588106 +-0.000153671 +0.00202664 +0.00053958 +-9.31341e-05 +0.00199228 +0.000504786 +-0.000118222 +0.00191907 +0.000518032 +-0.00010701 +0.00183601 +0.000592372 +-7.0278e-05 +0.00181801 +0.000616467 +-6.53573e-05 +0.0017368 +0.000539421 +-8.27585e-05 +0.00170579 +0.000589277 +-1.49622e-05 +0.00169493 +0.000671527 +5.87075e-06 +0.0016939 +0.000723775 +-4.10808e-05 +0.0017415 +0.00070945 +-8.34209e-05 +0.00166938 +0.00063987 +-7.43337e-05 +0.00171708 +0.000557568 +-5.40545e-05 +0.00171319 +0.000484931 +-9.01841e-05 +0.00173806 +0.000501745 +-1.63528e-05 +0.00177635 +0.000530123 +-4.33823e-05 +0.00185161 +0.00050932 +1.77153e-05 +0.00179653 +0.000525434 +9.93849e-05 +0.00181297 +0.000476623 +0.000166794 +0.00179643 +0.000462311 +0.000250228 +0.00179062 +0.000460591 +0.000227524 +0.00187236 +0.000507712 +0.00018833 +0.00193104 +0.000517195 +0.000266804 +0.00196189 +0.000507399 +0.000188976 +0.00192953 +0.000513135 +0.00019811 +0.00184537 +0.000566949 +0.000259902 +0.00186741 +0.000535161 +0.00019409 +0.0018243 +0.000501301 +0.000124056 +0.00185819 +0.000479689 +0.000104415 +0.00193786 +0.000444915 +0.000134339 +0.00186648 +0.000404676 +0.000183785 +0.00192248 +0.000382442 +0.000170982 +0.00200336 +0.000429122 +0.000141336 +0.00206772 +0.000361582 +9.00457e-05 +0.00206496 +0.000297885 +0.000142887 +0.00204623 +0.000247571 +0.000149534 +0.00197823 +0.000200362 +0.000113384 +0.0019177 +0.000219353 +7.76351e-05 +0.00184312 +0.000141685 +0.000107926 +0.00185894 +0.00010911 +9.43088e-05 +0.00178178 +9.76056e-05 +0.00010561 +0.00169848 +8.8758e-05 +0.000106267 +0.00178286 +0.000137926 +3.71209e-05 +0.00178174 +0.000208279 +3.32688e-05 +0.00182902 +0.000147954 +2.50889e-05 +0.00176991 +0.000130776 +-5.12098e-05 +0.001737 +9.1506e-05 +-4.81243e-05 +0.00171578 +8.69415e-05 +-1.1777e-05 +0.00164971 +0.000163438 +1.96923e-05 +0.00166863 +0.000156587 +7.97702e-05 +0.00172816 +0.000107368 +1.06526e-05 +0.00172763 +9.87495e-05 +1.47947e-05 +0.00169279 +0.000169233 +-2.16059e-05 +0.00166268 +0.000194447 +-3.52258e-05 +0.00158281 +0.000222812 +1.02547e-05 +0.00164859 +0.000221382 +9.32454e-05 +0.00166621 +0.000150918 +0.000132926 +0.00164051 +0.000131463 +0.000106234 +0.00156235 +0.000116155 +3.39474e-05 +0.00160407 +9.58703e-05 +-3.69786e-05 +0.00159084 +8.06342e-05 +3.85803e-05 +0.00161712 +0.000103892 +-3.7327e-05 +0.00164707 +0.000178606 +-6.90899e-05 +0.0016224 +0.000173739 +-7.02484e-06 +0.00168005 +0.000228562 +5.75488e-05 +0.00167509 +0.000152234 +9.14331e-05 +0.00169012 +0.000172678 +0.000173367 +0.00168182 +0.000252766 +0.000199883 +0.00167273 +0.000312215 +0.000142555 +0.00165325 +0.000251553 +0.000177317 +0.00170133 +0.000209388 +0.000222936 +0.00175913 +0.000146122 +0.00027219 +0.00173136 +0.000154274 +0.000290027 +0.0016488 +0.000175538 +0.000207941 +0.00164571 +0.000219945 +0.000267919 +0.00160533 +0.000166078 +0.000333296 +0.00161026 +0.000193409 +0.000336243 +0.00163666 +0.000256477 +0.000371191 +0.00159193 +0.000297165 +0.000307427 +0.00163038 +0.000219478 +0.000331733 +0.00165434 +0.000287593 +0.000300336 +0.00169402 +0.000316382 +0.000288986 +0.00161501 +0.000367817 +0.000354291 +0.00159799 +0.000426215 +0.000310787 +0.00155444 +0.000473278 +0.000274096 +0.00161476 +0.000405385 +0.000228755 +0.00163788 +0.000378152 +0.000165602 +0.00158818 +0.000357925 +0.000245687 +0.0016076 +0.000442097 +0.000235122 +0.00160575 +0.00038109 +0.000195073 +0.00164904 +0.000390851 +0.000207369 +0.00173243 +0.000365167 +0.000129535 +0.00171047 +0.000397711 +9.71533e-05 +0.00163911 +0.000344562 +7.28574e-05 +0.00170063 +0.00036209 +3.69633e-05 +0.00177549 +0.00028723 +6.88453e-05 +0.00175142 +0.000368196 +6.52116e-05 +0.00177654 +0.000315295 +1.80059e-05 +0.00182316 +0.000302135 +-5.60651e-05 +0.00186241 +0.000322315 +-6.58233e-05 +0.00178057 +0.000295952 +-0.000146461 +0.00177898 +0.000289344 +-6.20711e-05 +0.0017731 +0.000273776 +-4.72229e-05 +0.00169101 +0.000189445 +-5.17618e-05 +0.00169924 +0.00026608 +-1.93063e-05 +0.0016827 +0.000247337 +5.75855e-05 +0.0017133 +0.000295963 +0.000107812 +0.00176139 +0.000355206 +0.000110747 +0.00182206 +0.00031034 +4.89339e-05 +0.00185903 +0.000229096 +3.3397e-05 +0.0018401 +0.000183723 +-1.22913e-05 +0.00189537 +0.000103167 +-3.77617e-05 +0.0018875 +6.25749e-05 +5.37508e-06 +0.00184257 +0.000106945 +2.50026e-06 +0.00191484 +7.94743e-05 +4.79683e-05 +0.00197448 +8.22641e-05 +-1.87684e-05 +0.00192215 +8.08091e-05 +-9.7233e-05 +0.00189455 +0.000150368 +-0.000105851 +0.00184672 +0.000168452 +-0.000188253 +0.00183762 +0.00020785 +-0.000260844 +0.00181817 +0.000173938 +-0.000338016 +0.00182789 +0.000180157 +-0.000346702 +0.00191206 +0.000139836 +-0.000342706 +0.00197824 +0.000161402 +-0.000291172 +0.00203613 +0.000133602 +-0.000273857 +0.00196989 +0.000193583 +-0.000272484 +0.00190989 +0.000218615 +-0.000206673 +0.00195724 +0.000274371 +-0.000161534 +0.00200256 +0.00019528 +-0.000132699 +0.0020132 +0.000221359 +-5.67602e-05 +0.00198575 +0.000276526 +-1.35888e-05 +0.00203364 +0.000295466 +6.34733e-05 +0.00200359 +0.000262368 +0.000124891 +0.0019553 +0.00020609 +0.000188116 +0.00196124 +0.000144232 +0.000132526 +0.00194441 +0.00012177 +0.000134577 +0.00186261 +0.000199795 +0.000116847 +0.00189086 +0.000207026 +3.34356e-05 +0.00187706 +0.000244485 +4.6364e-05 +0.00180203 +0.000286954 +8.56738e-05 +0.00173997 +0.000265743 +8.00455e-06 +0.00171318 +0.000261178 +5.15307e-06 +0.00179787 +0.000257267 +-7.93334e-05 +0.0018047 +0.000312271 +-0.000141482 +0.00182237 +0.000270554 +-7.81339e-05 +0.0018604 +0.000354983 +-7.87162e-05 +0.00185195 +0.000277067 +-5.65911e-05 +0.00182666 +0.000237378 +1.19875e-05 +0.00185702 +0.000221545 +-3.83754e-06 +0.00177517 +0.000301623 +9.30276e-06 +0.00175038 +0.000221516 +-1.80729e-05 +0.00175615 +0.000182113 +-6.8539e-06 +0.00183046 +0.000226284 +2.55672e-05 +0.00189525 +0.000302176 +2.6391e-05 +0.0019332 +0.000287476 +0.000108976 +0.0019204 +0.000313435 +0.000183978 +0.00189039 +0.000261439 +0.00011906 +0.00190718 +0.000278372 +0.000202206 +0.00190696 +0.000275442 +0.000286573 +0.00191553 +0.000267898 +0.000332266 +0.00198663 +0.000277756 +0.000389499 +0.00192477 +0.000217519 +0.000329745 +0.00192379 +0.000165895 +0.000297569 +0.00186464 +0.000206001 +0.000312717 +0.00179141 +0.000161626 +0.000378741 +0.00182093 +0.000226895 +0.000345934 +0.0018641 +0.000288158 +0.000404504 +0.00186004 +0.000318523 +0.000480534 +0.00188234 +0.000351019 +0.000545399 +0.00183834 +0.000292719 +0.000525723 +0.00189677 +0.000329435 +0.000576699 +0.0019538 +0.000309425 +0.000581542 +0.00192636 +0.000338054 +0.00059041 +0.00192605 +0.000362814 +0.000551787 +0.00199743 +0.000410861 +0.000495339 +0.00203872 +0.000359559 +0.000437079 +0.00200446 +0.000320579 +0.000385593 +0.00194942 +0.00039535 +0.000424718 +0.00195829 +0.00047509 +0.000427097 +0.0019872 +0.000540301 +0.000454186 +0.00194015 +0.000593452 +0.000414304 +0.00188738 +0.000610594 +0.00034249 +0.0019292 +0.000624893 +0.00026292 +0.00190343 +0.000605045 +0.000345289 +0.00190806 +0.000651039 +0.000361938 +0.0019774 +0.000690974 +0.000296591 +0.00194086 +0.000639425 +0.000235352 +0.00196901 +0.000641734 +0.000209624 +0.00188819 +0.000693168 +0.000177569 +0.00194757 +0.000669262 +0.000226402 +0.00201272 +0.000592014 +0.000258876 +0.00199937 +0.000590469 +0.000185639 +0.0020422 +0.000554875 +0.000262607 +0.0020452 +0.00056698 +0.000336352 +0.00208538 +0.000511989 +0.000338751 +0.00202081 +0.000492925 +0.000360763 +0.00194111 +0.000569848 +0.000334607 +0.00196557 +0.000638447 +0.000364344 +0.00192545 +0.000666958 +0.00044254 +0.00194196 +0.000599293 +0.000475643 +0.00198102 +0.000564911 +0.000402444 +0.0020067 +0.000504717 +0.000444901 +0.00204882 +0.000464501 +0.00040655 +0.00211295 +0.000477102 +0.000323234 +0.00212293 +0.000521105 +0.000273536 +0.00207007 +0.000475092 +0.000210028 +0.00210247 +0.00040172 +0.000213589 +0.00214494 +0.000449239 +0.000167477 +0.00209188 +0.000408107 +0.000241463 +0.00208603 +0.000359809 +0.000283025 +0.00214206 +0.000314014 +0.00025461 +0.0022076 +0.000313107 +0.000255457 +0.00229245 +0.000339922 +0.00018104 +0.00232316 +0.000408627 +0.000151417 +0.00228313 +0.000332054 +0.000181405 +0.00230404 +0.000408643 +0.000145146 +0.00229962 +0.00032567 +0.00014051 +0.00231677 +0.000396388 +0.000135268 +0.00236337 +0.000329189 +0.0001085 +0.00231901 +0.000252458 +0.000144063 +0.00231211 +0.000246276 +0.000210983 +0.00230516 +0.000263312 +0.000280506 +0.00225959 +0.000244195 +0.000337169 +0.00219939 +0.000287687 +0.000404554 +0.00217169 +0.000299096 +0.000437156 +0.00209418 +0.000230017 +0.00043632 +0.00211464 +0.000314651 +0.000436308 +0.00212074 +0.000321581 +0.000520741 +0.00212553 +0.000338232 +0.000515291 +0.00211289 +0.000301421 +0.000455917 +0.00216105 +0.000309916 +0.000539087 +0.00214654 +0.000296568 +0.000487611 +0.00208992 +0.000326414 +0.000456963 +0.0021632 +0.000283516 +0.000473715 +0.0021485 +0.000317135 +0.000501063 +0.00222145 +0.000398534 +0.000521386 +0.00220875 +0.000375843 +0.000448588 +0.00217153 +0.000308117 +0.000408344 +0.00220305 +0.000342818 +0.000480094 +0.00217394 +0.000394221 +0.000417554 +0.00219936 +0.000409578 +0.000343463 +0.00223776 +0.000454255 +0.000290832 +0.00218843 +0.000415368 +0.000324226 +0.00212081 +0.000428609 +0.000405768 +0.00214019 +0.000385744 +0.000336439 +0.00216377 +0.000384518 +0.000281307 +0.00209927 +0.000312346 +0.000325053 +0.00210807 +0.000388979 +0.000316983 +0.00207254 +0.000368456 +0.000293033 +0.00215132 +0.000304443 +0.000348187 +0.00214355 +0.000265863 +0.000335922 +0.00221812 +0.000317199 +0.000277803 +0.00218367 +0.000355273 +0.000230703 +0.00212424 +0.000314416 +0.000275763 +0.0021834 +0.000332891 +0.000244299 +0.00226001 +0.000289887 +0.000201701 +0.00231947 +0.000224085 +0.000191523 +0.00226688 +0.000272182 +0.000135857 +0.00222459 +0.000254189 +0.000103194 +0.00230081 +0.000293471 +0.000177767 +0.00229103 +0.000209908 +0.000179548 +0.00228971 +0.000227465 +0.000258618 +0.00226442 +0.000273476 +0.000325632 +0.00228875 +0.000317519 +0.000275749 +0.0022361 +0.000275886 +0.000346042 +0.00221318 +0.000223854 +0.000282413 +0.00223425 +0.000284984 +0.000264455 +0.00217821 +0.000204468 +0.00028648 +0.00216297 +0.000187422 +0.000218478 +0.00221078 +0.000227532 +0.000254679 +0.0021699 +0.000275929 +0.00022492 +0.00210687 +0.000241445 +0.000271355 +0.00216896 +0.000199646 +0.000199927 +0.00215023 +0.000262893 +0.000210687 +0.00220576 +0.000262156 +0.00028585 +0.00216639 +0.000233003 +0.000306054 +0.00208931 +0.000179331 +0.000289428 +0.00202572 +0.000198121 +0.000371133 +0.00203881 +0.000181537 +0.000388019 +0.00199249 +0.000168715 +0.000322642 +0.00204504 +0.000203734 +0.000335382 +0.00203284 +0.00142723 +-0.000443814 +-0.000225127 +0.00149492 +-0.000474712 +-0.000265911 +0.0015233 +-0.000532541 +-0.000321144 +0.00146917 +-0.000495312 +-0.000374852 +0.00140686 +-0.000496589 +-0.000432432 +0.00144525 +-0.000488279 +-0.000357218 +0.00151362 +-0.00044536 +-0.000331075 +0.0014429 +-0.000468909 +-0.000290535 +0.00148418 +-0.000402863 +-0.000324207 +0.00141419 +-0.000355445 +-0.000316944 +0.00136776 +-0.000315546 +-0.000375703 +0.00141681 +-0.000254469 +-0.00040831 +0.0013422 +-0.000287796 +-0.000431161 +0.00128287 +-0.000241823 +-0.000470739 +0.00134057 +-0.000217105 +-0.000507539 +0.00129946 +-0.000235526 +-0.000477356 +0.00127036 +-0.000300525 +-0.000431225 +0.00125021 +-0.00033214 +-0.000355102 +0.0013261 +-0.000303199 +-0.000330533 +0.00125667 +-0.000348563 +-0.000312609 +0.00126795 +-0.000395852 +-0.000243065 +0.00129925 +-0.000329965 +-0.000199711 +0.00132267 +-0.000284398 +-0.000132071 +0.00136454 +-0.000339834 +-8.33536e-05 +0.00141872 +-0.000281863 +-0.000113421 +0.00140359 +-0.000254694 +-0.00019237 +0.00146152 +-0.000234043 +-0.000133912 +0.00140137 +-0.000291061 +-0.000115721 +0.00144771 +-0.000292205 +-4.46456e-05 +0.00137259 +-0.000331666 +-4.41403e-05 +0.0013572 +-0.000405801 +-8.2443e-05 +0.00132897 +-0.000372248 +-9.7965e-06 +0.0013829 +-0.000355957 +5.36549e-05 +0.00131412 +-0.000316777 +8.42193e-05 +0.00123017 +-0.000315293 +9.64615e-05 +0.00124492 +-0.000241547 +0.000135753 +0.00119335 +-0.000308565 +0.000128755 +0.00118547 +-0.000303142 +0.000213067 +0.00126385 +-0.000283029 +0.000187525 +0.00133467 +-0.000237166 +0.000178487 +0.00132237 +-0.000293737 +0.00011645 +0.00133572 +-0.000234072 +0.000175287 +0.00132052 +-0.000164986 +0.000128427 +0.00133107 +-0.000210721 +0.000199117 +0.00126616 +-0.000244957 +0.000241715 +0.00119855 +-0.000283759 +0.000208184 +0.00124589 +-0.000296157 +0.000243659 +0.00121307 +-0.000369392 +0.000216098 +0.00122451 +-0.000417767 +0.000150483 +0.00122686 +-0.000344388 +0.000107939 +0.00121938 +-0.000352061 +0.00010587 +0.00117446 +-0.000288761 +0.000140159 +0.00120412 +-0.000366329 +0.000150222 +0.0012273 +-0.000400231 +0.000219979 +0.0012592 +-0.000367665 +0.000291545 +0.00129734 +-0.000428824 +0.000336323 +0.00133432 +-0.000369916 +0.000384929 +0.00140971 +-0.000397936 +0.000357887 +0.00133806 +-0.000354225 +0.000370384 +0.00134187 +-0.000397791 +0.000297668 +0.00132896 +-0.000352884 +0.000368497 +0.00129244 +-0.000317398 +0.000300619 +0.00132672 +-0.000393253 +0.000317067 +0.0012867 +-0.000356984 +0.000382509 +0.00134964 +-0.000335253 +0.000435107 +0.00134796 +-0.000362101 +0.000515582 +0.00133517 +-0.000282936 +0.000487843 +0.00137387 +-0.000298878 +0.00041403 +0.00138904 +-0.00032465 +0.000493438 +0.00131355 +-0.000295595 +0.000519076 +0.00135836 +-0.000362847 +0.000534953 +0.00143223 +-0.000334752 +0.000565835 +0.00148728 +-0.000334871 +0.000501264 +0.00148729 +-0.00026189 +0.000544552 +0.00145618 +-0.000228795 +0.000616225 +0.00143579 +-0.00028964 +0.000671742 +0.00139615 +-0.000221863 +0.000645215 +0.00137341 +-0.000182042 +0.000573819 +0.00142405 +-0.000248832 +0.000560571 +0.00145837 +-0.000319468 +0.000592703 +0.00138396 +-0.000348747 +0.000564319 +0.0014481 +-0.000404152 +0.000568265 +0.00149827 +-0.000446609 +0.000514597 +0.00154985 +-0.000379238 +0.000513577 +0.00156279 +-0.000299619 +0.000539907 +0.00164485 +-0.000320187 +0.000546476 +0.00156291 +-0.000319139 +0.000524464 +0.00156383 +-0.000334027 +0.000607995 +0.00151699 +-0.000392658 +0.000568388 +0.00146113 +-0.000377082 +0.000630327 +0.00145982 +-0.000442672 +0.000582057 +0.0014351 +-0.000399888 +0.000532375 +0.00144788 +-0.000403271 +0.000616192 +0.0015309 +-0.000392697 +0.000630152 +0.0015219 +-0.000319433 +0.000588303 +0.00157881 +-0.000274541 +0.000544196 +0.0015829 +-0.00034809 +0.000502079 +0.00161954 +-0.000402904 +0.000448662 +0.00154573 +-0.000439305 +0.000427995 +0.00153332 +-0.000422562 +0.000345741 +0.00149356 +-0.000364419 +0.000393057 +0.00146324 +-0.000292463 +0.000359846 +0.00152141 +-0.000294988 +0.000421574 +0.00152364 +-0.000216645 +0.000389056 +0.00159787 +-0.000176597 +0.000379743 +0.00160183 +-0.000135234 +0.000453726 +0.00152782 +-0.000113471 +0.000418382 +0.00155229 +-0.000183496 +0.000377176 +0.00158572 +-0.00023833 +0.000321716 +0.00158804 +-0.000204956 +0.000399695 +0.00153531 +-0.000193657 +0.000334175 +0.00152582 +-0.000169624 +0.000414998 +0.00146002 +-0.00020623 +0.000375882 +0.00147896 +-0.000287706 +0.000390125 +0.00141239 +-0.000330824 +0.000420263 +0.00145292 +-0.000256324 +0.000422782 +0.00137519 +-0.000223027 +0.000415788 +0.00140548 +-0.000163151 +0.000467724 +0.00145953 +-0.000131359 +0.000410561 +0.00140245 +-0.000156155 +0.000468236 +0.00140999 +-7.39484e-05 +0.000448611 +0.00137774 +-0.000152379 +0.000445716 +0.00136028 +-0.00010331 +0.000512703 +0.00138279 +-0.000184833 +0.000519575 +0.001456 +-0.000227708 +0.000518412 +0.00145336 +-0.000143313 +0.000510009 +0.00145174 +-0.000160633 +0.000593059 +0.00146428 +-0.000210354 +0.000525453 +0.00154485 +-0.000228809 +0.000544651 +0.00154208 +-0.000285213 +0.000607984 +0.00152222 +-0.000251947 +0.000683475 +0.00146543 +-0.00019615 +0.000712823 +0.00148965 +-0.000128771 +0.000743931 +0.00144286 +-0.000101766 +0.000694764 +0.00146332 +-2.24393e-05 +0.000716874 +0.00141667 +7.9371e-06 +0.000695395 +0.00141914 +3.24297e-05 +0.000614191 +0.00145652 +5.88172e-05 +0.00068565 +0.00152703 +5.13969e-05 +0.000732274 +0.00157947 +0.000108114 +0.000767392 +0.00157128 +4.69482e-05 +0.000825631 +0.00153641 +0.000111214 +0.000791807 +0.00156953 +0.000157954 +0.000729208 +0.00151378 +0.000128781 +0.000784474 +0.00148262 +5.93173e-05 +0.000747 +0.00142065 +1.26739e-05 +0.000712602 +0.00143175 +4.55873e-06 +0.000628871 +0.00135233 +3.43711e-05 +0.000627035 +0.0013258 +-3.56396e-05 +0.000587102 +0.00129473 +1.21037e-05 +0.000524208 +0.00130851 +-6.83738e-05 +0.000501107 +0.00131258 +-0.000136324 +0.000450449 +0.0012666 +-6.58442e-05 +0.000461338 +0.00131814 +-0.000118094 +0.000503918 +0.00130006 +-0.000131861 +0.000490471 +0.00131887 +-0.000211284 +0.000467272 +0.00126898 +-0.000240637 +0.000405228 +0.00128295 +-0.000170981 +0.000358832 +0.0012676 +-0.000254371 +0.000355636 +0.00122521 +-0.000299038 +0.000297254 +0.00125473 +-0.000305928 +0.000368461 +0.00127951 +-0.000367823 +0.000366137 +0.00132631 +-0.000387875 +0.000370311 +0.00128713 +-0.000312633 +0.000372381 +0.00126461 +-0.00023704 +0.000403661 +0.00134548 +-0.000260036 +0.000415149 +0.00139819 +-0.000211086 +0.000460157 +0.00136933 +-0.000138333 +0.000427381 +0.00140087 +-0.000176492 +0.000496295 +0.00147471 +-0.000140251 +0.000475463 +0.00155865 +-0.000133243 +0.000485728 +0.00154945 +-4.89925e-05 +0.00048988 +0.00162922 +-7.78723e-05 +0.000488133 +0.0015782 +-1.49691e-05 +0.00051344 +0.00151468 +-1.595e-05 +0.000569694 +0.00156903 +-7.78707e-05 +0.000589989 +0.00164334 +-3.77729e-05 +0.000581612 +0.0016905 +-9.79055e-05 +0.000618488 +0.00165964 +-0.00012124 +0.000542972 +0.00173046 +-0.000104037 +0.000499521 +0.00176219 +-0.000182295 +0.000491217 +0.00177048 +-0.00025881 +0.000455484 +0.00185515 +-0.000264308 +0.000456374 +0.00184992 +-0.000221696 +0.000529565 +0.00186174 +-0.000234994 +0.000446598 +0.00180382 +-0.000286659 +0.000480895 +0.00187606 +-0.000261435 +0.000444226 +0.00182956 +-0.00030023 +0.000503655 +0.00182247 +-0.000243045 +0.000441368 +0.00175049 +-0.00027749 +0.00047021 +0.00172634 +-0.000321173 +0.000538828 +0.00171232 +-0.000372737 +0.000604743 +0.00171275 +-0.00030937 +0.000661174 +0.00173352 +-0.000379526 +0.000704151 +0.00169043 +-0.000411581 +0.000638453 +0.00167767 +-0.000455571 +0.00070988 +0.00167631 +-0.000437379 +0.000627012 +0.00174983 +-0.000459676 +0.000663038 +0.00180633 +-0.000522966 +0.000664641 +0.00177745 +-0.000525281 +0.000584886 +0.00177637 +-0.000609999 +0.000580221 +0.00177401 +-0.000536981 +0.00053706 +0.00171407 +-0.000595779 +0.000524816 +0.00176387 +-0.000581818 +0.000592082 +0.00181761 +-0.000646963 +0.000600361 +0.00188729 +-0.000663395 +0.000554822 +0.00191248 +-0.000583154 +0.000543556 +0.00184615 +-0.000630709 +0.000520348 +0.0018885 +-0.000701239 +0.000541135 +0.00181767 +-0.000747774 +0.000536906 +0.00185011 +-0.000797934 +0.000476644 +0.00177615 +-0.000756579 +0.00047219 +0.00185082 +-0.000717789 +0.000461228 +0.00183686 +-0.000768166 +0.00039439 +0.00182007 +-0.000716597 +0.000459649 +0.00187324 +-0.000687193 +0.00051888 +0.00184909 +-0.000764921 +0.000542861 +0.00190461 +-0.000700801 +0.000545399 +0.00184553 +-0.000680572 +0.000487945 +0.00178416 +-0.000638781 +0.000446877 +0.00182267 +-0.000577917 +0.000491735 +0.00175728 +-0.000567781 +0.00043862 +0.00174952 +-0.000590251 +0.000357166 +0.00183079 +-0.000610331 +0.000343325 +0.00176087 +-0.000562258 +0.000343885 +0.00172624 +-0.000588585 +0.000271034 +0.00180365 +-0.000598026 +0.000237593 +0.00188168 +-0.000569811 +0.000219848 +0.00189108 +-0.000489031 +0.000195635 +0.00183918 +-0.000507598 +0.000131126 +0.00178511 +-0.00044456 +0.00011373 +0.00180285 +-0.000445916 +0.000196697 +0.00178914 +-0.000500671 +0.000260055 +0.00184818 +-0.000484484 +0.000201297 +0.00181332 +-0.000559622 +0.00021971 +0.00189153 +-0.000558247 +0.000186822 +0.00196664 +-0.000546688 +0.000149081 +0.00198021 +-0.000605406 +8.93475e-05 +0.00194781 +-0.000660155 +0.000145499 +0.00196901 +-0.000583275 +0.000174479 +0.00200387 +-0.000638528 +0.000120327 +0.00208585 +-0.000637644 +0.000142189 +0.00207712 +-0.000709138 +9.73291e-05 +0.0021583 +-0.000703886 +7.32049e-05 +0.00211257 +-0.000656527 +0.000126739 +0.00213651 +-0.000737873 +0.000129918 +0.00217099 +-0.000799804 +0.000176558 +0.00224623 +-0.000786617 +0.000213513 +0.0022977 +-0.000853642 +0.000205883 +0.0023778 +-0.000840871 +0.000180966 +0.00232828 +-0.000781812 +0.000216455 +0.0023893 +-0.00080761 +0.000269472 +0.00240564 +-0.000886775 +0.000295275 +0.00248003 +-0.000878907 +0.000257511 +0.00242336 +-0.000872798 +0.000194646 +0.00243447 +-0.000821292 +0.000128135 +0.0023619 +-0.000802125 +0.000167702 +0.0023472 +-0.000855542 +0.000103432 +0.00232692 +-0.000922128 +5.49042e-05 +0.00229706 +-0.000940047 +-2.24724e-05 +0.00229342 +-0.000859655 +4.43365e-06 +0.00227624 +-0.000844303 +8.60983e-05 +0.00228825 +-0.000764986 +0.00011375 +0.00235874 +-0.000732904 +0.000148419 +0.00238431 +-0.000731705 +6.75202e-05 +0.00235776 +-0.000797751 +2.1332e-05 +0.00243703 +-0.000807001 +5.01667e-05 +0.00240201 +-0.000828178 +-2.41672e-05 +0.0024834 +-0.00085217 +-2.43405e-05 +0.00246526 +-0.000893302 +-9.63065e-05 +0.00247819 +-0.0008582 +-7.063e-05 +0.00253408 +-0.000832945 +-1.19861e-05 +0.00253278 +-0.000870883 +6.39018e-05 +0.0024729 +-0.000813465 +4.60779e-05 +0.00250519 +-0.000735074 +4.9555e-05 +0.00244067 +-0.000702471 +9.39823e-05 +0.0025019 +-0.000650053 +6.74601e-05 +0.00253375 +-0.000599582 +0.000127775 +0.00247613 +-0.000660362 +0.000141388 +0.00239964 +-0.000629434 +0.000121565 +0.00246135 +-0.000582042 +0.000155405 +0.00241663 +-0.000523958 +0.000112674 +0.00244882 +-0.000574066 +0.000173116 +0.0024436 +-0.000536381 +9.72698e-05 +0.00239625 +-0.000466184 +9.17197e-05 +0.00241408 +-0.000497171 +1.47643e-05 +0.00233239 +-0.000503074 +3.6949e-05 +0.00236235 +-0.000424668 +2.45021e-05 +0.00232377 +-0.00043305 +-5.06047e-05 +0.00232827 +-0.000476858 +2.19248e-05 +0.00237123 +-0.000522026 +-3.56456e-05 +0.00238828 +-0.000494325 +4.2724e-05 +0.00241885 +-0.000531801 +0.000112447 +0.00234227 +-0.000495252 +0.000111721 +0.00229803 +-0.000511076 +4.10692e-05 +0.00224219 +-0.000465822 +-4.03779e-06 +0.00232303 +-0.000440405 +3.92498e-07 +0.00231454 +-0.000484818 +7.21936e-05 +0.00227688 +-0.000424541 +2.58433e-05 +0.00220182 +-0.000458956 +6.3058e-06 +0.00226423 +-0.000510179 +3.23916e-05 +0.00222003 +-0.00046497 +8.89803e-05 +0.00220714 +-0.000527378 +0.000145007 +0.00216357 +-0.000573974 +8.90515e-05 +0.00212563 +-0.00060598 +2.02318e-05 +0.00216022 +-0.000561042 +-4.28923e-05 +0.00217843 +-0.000511968 +-0.000109677 +0.00221626 +-0.000501938 +-0.000184963 +0.0021642 +-0.000447504 +-0.000145888 +0.0020964 +-0.000419412 +-0.000103302 +0.00204691 +-0.000486836 +-0.000117621 +0.00198527 +-0.000478724 +-5.98728e-05 +0.00200447 +-0.000560685 +-4.91935e-05 +0.00192684 +-0.000556213 +-1.5218e-05 +0.00185008 +-0.000576207 +-4.53509e-05 +0.00191584 +-0.000539216 +-8.41797e-05 +0.00192041 +-0.000537284 +5.27932e-07 +0.00190113 +-0.00060636 +4.5882e-05 +0.00193186 +-0.000556425 +0.000107221 +0.00186553 +-0.000505704 +9.21228e-05 +0.00189056 +-0.000546972 +2.23346e-05 +0.00184321 +-0.000616218 +3.50879e-05 +0.00191028 +-0.00057988 +7.22483e-05 +0.00196459 +-0.000550632 +0.000130519 +0.00201346 +-0.000535081 +0.00019812 +0.00193222 +-0.000556356 +0.000185971 +0.00191954 +-0.000477941 +0.000215811 +0.00187082 +-0.000547391 +0.000217446 +0.00195472 +-0.000538919 +0.000226887 +0.00188916 +-0.000537781 +0.000280744 +0.00196455 +-0.000506403 +0.000303803 +0.00194276 +-0.000550088 +0.000373208 +0.00191561 +-0.000629477 +0.00038585 +0.00191959 +-0.000693281 +0.000330053 +0.0019011 +-0.000775585 +0.000320863 +0.00191409 +-0.000848207 +0.000362783 +0.00193008 +-0.00085283 +0.000361203 +0.00187925 +-0.000865864 +0.000342169 +0.00184351 +-0.000871141 +0.000287127 +0.00187698 +-0.000862522 +0.000209632 +0.00186997 +-0.000801877 +0.000268566 +0.00191412 +-0.000842672 +0.000328457 +0.00192683 +-0.000854975 +0.000245468 +0.00198797 +-0.000803702 +0.000216606 +0.00199756 +-0.000787959 +0.00013378 +0.00193032 +-0.000737178 +0.000123822 +0.0018966 +-0.000814983 +0.000120667 +0.00183109 +-0.000762011 +0.000110573 +0.00181646 +-0.000775236 +0.000193102 +0.00183313 +-0.000791597 +0.000111527 +0.00186132 +-0.00084104 +4.85918e-05 +0.00192594 +-0.00087735 +8.98882e-05 +0.00199772 +-0.000843283 +0.000119664 +0.00200392 +-0.00078818 +0.000183892 +0.0019695 +-0.000830701 +0.000248756 +0.00201109 +-0.000802776 +0.000317243 +0.00199595 +-0.000747864 +0.00025435 +0.00192236 +-0.00077359 +0.000220829 +0.00187638 +-0.000830518 +0.000263775 +0.00191632 +-0.000763093 +0.000231241 +0.00198281 +-0.000799347 +0.000192979 +0.00200689 +-0.000858538 +0.000248806 +0.00208486 +-0.000834317 +0.000271915 +0.00200058 +-0.000834394 +0.000262077 +0.00206051 +-0.000774364 +0.000264347 +0.00199947 +-0.000767639 +0.000205792 +0.00204258 +-0.000779718 +0.000277871 +0.00205707 +-0.000715978 +0.000223764 +0.00201154 +-0.000733494 +0.000154335 +0.00207331 +-0.000748793 +9.8205e-05 +0.00207216 +-0.000755485 +0.000182786 +0.00214234 +-0.000707884 +0.000185842 +0.00205763 +-0.000704308 +0.000189283 +0.00204365 +-0.000656821 +0.000258201 +0.00196808 +-0.000630569 +0.000286481 +0.00189741 +-0.000634431 +0.000239677 +0.00183386 +-0.000580355 +0.000255053 +0.00188668 +-0.000540144 +0.000202212 +0.00184299 +-0.000502825 +0.000139778 +0.00177438 +-0.000492822 +0.000188695 +0.00174748 +-0.000540031 +0.000123521 +0.00174582 +-0.00052684 +0.000207326 +0.00181655 +-0.000484748 +0.000227943 +0.00183297 +-0.000555172 +0.000272337 +0.00175187 +-0.000572494 +0.000290276 +0.00167475 +-0.000599526 +0.000267405 +0.00160582 +-0.000636166 +0.000234149 +0.00166997 +-0.000658553 +0.000183317 +0.00171839 +-0.00059067 +0.000199067 +0.00166034 +-0.000616921 +0.000143021 +0.00158191 +-0.00058621 +0.00015332 +0.00152009 +-0.000598096 +0.000210219 +0.00144305 +-0.000568224 +0.000190923 +0.00136367 +-0.000568945 +0.000220882 +0.00135578 +-0.000541481 +0.000177769 +0.00134244 +-0.000579451 +0.000126241 +0.00138552 +-0.000577403 +5.31628e-05 +0.00144475 +-0.000519393 +7.12103e-05 +0.0014921 +-0.000493506 +5.72462e-06 +0.00145182 +-0.000436597 +-4.26404e-05 +0.00151811 +-0.00039883 +-7.97904e-05 +0.0015836 +-0.000411045 +-2.72469e-05 +0.00151928 +-0.000461103 +-3.64795e-06 +0.00157121 +-0.000525933 +1.3682e-05 +0.00148736 +-0.000526011 +6.83765e-07 +0.00144684 +-0.000452249 +1.1508e-05 +0.00148426 +-0.000510574 +6.04744e-05 +0.00148083 +-0.000579082 +0.000110423 +0.00148167 +-0.000494241 +0.000111498 +0.00155378 +-0.000538362 +0.000118794 +0.00153435 +-0.000573713 +4.41425e-05 +0.00153086 +-0.000656974 +6.01201e-05 +0.00158682 +-0.000607582 +1.9767e-05 +0.00157518 +-0.000595945 +-6.34733e-05 +0.00165796 +-0.000594209 +-4.49295e-05 +0.00168477 +-0.000596477 +-0.000125405 +0.0017318 +-0.000612035 +-5.65183e-05 +0.00170684 +-0.000693077 +-5.35171e-05 +0.00178361 +-0.000727611 +-6.41483e-05 +0.00185581 +-0.000757857 +-3.13954e-05 +0.00194063 +-0.000757866 +-3.37172e-05 +0.00191445 +-0.000823569 +-8.05954e-05 +0.00187188 +-0.000844069 +-1.01143e-05 +0.00190704 +-0.00092014 +-2.34267e-05 +0.00183714 +-0.000892608 +-6.28743e-05 +0.00185058 +-0.000918905 +-3.08674e-05 +0.00183395 +-0.000890851 +-0.000109204 +0.00187037 +-0.000897778 +-0.000185526 +0.00193085 +-0.000928764 +-0.000202368 +0.00199429 +-0.000915941 +-0.00023764 +0.0020332 +-0.000902089 +-0.000259859 +0.00199434 +-0.000826824 +-0.000264833 +0.00205713 +-0.00081356 +-0.000209327 +0.0021108 +-0.000868851 +-0.000244865 +0.00207543 +-0.000791774 +-0.000247778 +0.0020137 +-0.000793612 +-0.000189592 +0.00204366 +-0.000861755 +-0.000230321 +0.00203016 +-0.000938285 +-0.00019625 +0.00200091 +-0.000927122 +-0.000117384 +0.00201217 +-0.000860546 +-6.59949e-05 +0.00196423 +-0.000929335 +-5.29621e-05 +0.00203645 +-0.000895186 +-8.15567e-05 +0.00205891 +-0.000959139 +-3.0514e-05 +0.002041 +-0.000917122 +-0.000102024 +0.00201855 +-0.000957537 +-7.58375e-05 +0.00201499 +-0.00092611 +-2.77419e-05 +0.00204647 +-0.00088364 +3.86307e-05 +0.00197891 +-0.000913206 +-3.34529e-06 +0.00196421 +-0.000834744 +-3.21157e-05 +0.00202621 +-0.000788393 +-6.6882e-05 +0.00196598 +-0.000760524 +-0.000119765 +0.00191939 +-0.000747361 +-5.0084e-05 +0.00185973 +-0.000716398 +-0.000101878 +0.00194045 +-0.000690479 +-0.000105342 +0.00198367 +-0.000629862 +-0.000146065 +0.00206233 +-0.000604471 +-0.000126896 +0.00206487 +-0.000685838 +-0.000102957 +0.00206659 +-0.000601495 +-0.000112094 +0.002068 +-0.000528441 +-0.000155234 +0.00206478 +-0.000588659 +-9.55391e-05 +0.00214633 +-0.000592514 +-7.24026e-05 +0.00221886 +-0.000625467 +-4.31928e-05 +0.00227932 +-0.000567583 +-2.92411e-05 +0.00226641 +-0.000618538 +3.73682e-05 +0.00219144 +-0.000658287 +3.79406e-05 +0.00224905 +-0.000634991 +-1.98362e-05 +0.00226988 +-0.000603522 +-9.58349e-05 +0.00231365 +-0.000534439 +-7.32011e-05 +0.00230202 +-0.000617418 +-5.98082e-05 +0.00234008 +-0.000588315 +1.02274e-05 +0.00228707 +-0.000522646 +1.90368e-05 +0.00222428 +-0.000494994 +6.89723e-05 +0.00221652 +-0.000451798 +0.000141593 +0.00223787 +-0.000393342 +0.000199271 +0.00229599 +-0.000362551 +0.000252888 +0.00231735 +-0.000418344 +0.000313144 +0.00228933 +-0.000408712 +0.000392658 +0.00230018 +-0.000339135 +0.000440003 +0.00229623 +-0.000422624 +0.000454634 +0.00228151 +-0.000497587 +0.000491566 +0.00224788 +-0.000552947 +0.000436754 +0.00226239 +-0.000473703 +0.000410109 +0.00231138 +-0.000528243 +0.000367382 +0.00227929 +-0.000568149 +0.00029972 +0.00230956 +-0.000642391 +0.000271939 +0.00231514 +-0.000723706 +0.000295535 +0.00239708 +-0.000702268 +0.000290405 +0.00241946 +-0.000644928 +0.000232 +0.00236888 +-0.000620418 +0.000168432 +0.00230988 +-0.000560631 +0.000180455 +0.00236742 +-0.00061659 +0.000152922 +0.00243391 +-0.000636605 +0.000201687 +0.00247324 +-0.000644785 +0.000276432 +0.00255403 +-0.000619082 +0.000272948 +0.00251152 +-0.00068953 +0.000252213 +0.00245484 +-0.000628108 +0.000266858 +0.00244954 +-0.000683488 +0.000202787 +0.00245554 +-0.000754643 +0.00015695 +0.00250274 +-0.000759545 +8.66067e-05 +0.00256972 +-0.000781792 +0.000133711 +0.00249525 +-0.000756357 +0.000165451 +0.00242462 +-0.000774649 +0.000208783 +0.00247509 +-0.000764282 +0.000276204 +0.00253067 +-0.000755866 +0.000212646 +0.0025591 +-0.000767265 +0.000133514 +0.00260496 +-0.00071976 +8.02169e-05 +0.00263207 +-0.00078176 +2.9022e-05 +0.0026241 +-0.000807416 +0.000109509 +0.00256166 +-0.000755142 +8.56463e-05 +0.00259956 +-0.000679293 +8.23798e-05 +0.00263898 +-0.000615829 +4.2146e-05 +0.00263181 +-0.000680326 +-1.25235e-05 +0.00255494 +-0.000647114 +-2.62054e-05 +0.00261839 +-0.000619751 +2.30402e-05 +0.00261645 +-0.000542392 +5.78518e-05 +0.00261507 +-0.000626526 +6.87937e-05 +0.00258951 +-0.00070197 +3.95617e-05 +0.00266601 +-0.000680041 +1.01352e-05 +0.00271031 +-0.000721095 +-4.94691e-05 +0.00272457 +-0.000734128 +-0.000132092 +0.00271961 +-0.000683779 +-0.000182268 +0.00273799 +-0.000688642 +-0.00019946 +0.00279905 +-0.000653169 +-0.000224655 +0.00279682 +-0.000581616 +-0.000209095 +0.00282016 +-0.000581949 +-0.000257324 +0.00280445 +-0.000585217 +-0.000340644 +0.00276404 +-0.000659801 +-0.000338478 +0.00272337 +-0.000703831 +-0.000278914 +0.00265941 +-0.000659297 +-0.000245353 +0.00266462 +-0.000633309 +-0.000164746 +0.0027246 +-0.000611336 +-0.000220604 +0.00279005 +-0.000659549 +-0.000196288 +0.00278508 +-0.000671798 +-0.00012684 +0.00279053 +-0.000680816 +-0.000205227 +0.00276257 +-0.000685738 +-0.000133315 +0.00271122 +-0.000692145 +-0.000200562 +0.0027374 +-0.000683878 +-0.000196796 +0.00269848 +-0.000752751 +-0.000182508 +0.00275439 +-0.000693745 +-0.000206843 +0.00275211 +-0.000703031 +-0.00013333 +0.00272793 +-0.000705749 +-5.20418e-05 +0.00280442 +-0.000692566 +-5.88979e-05 +0.00283776 +-0.000622577 +-2.97523e-05 +0.00276866 +-0.000575719 +-1.45885e-05 +0.00274725 +-0.000601186 +-9.26475e-05 +0.00270778 +-0.000629991 +-0.000162015 +0.00270363 +-0.000568087 +-0.00010413 +0.00270072 +-0.00064355 +-0.000142819 +0.00272669 +-0.000632808 +-0.000222884 +0.00267418 +-0.000584013 +-0.00026829 +0.00268477 +-0.000628632 +-0.000196897 +0.00260789 +-0.000628489 +-0.000160986 +0.00266899 +-0.00062968 +-0.000219848 +0.00274564 +-0.000643962 +-0.000253344 +0.00275923 +-0.000640738 +-0.000263137 +0.00279339 +-0.000605856 +-0.000319637 +0.0028137 +-0.000538293 +-0.000296674 +0.00285162 +-0.00047724 +-0.000251574 +0.00291738 +-0.000464763 +-0.000235304 +0.00291155 +-0.000440895 +-0.000314678 +0.00288106 +-0.000473558 +-0.000242539 +0.00286642 +-0.000477632 +-0.000223408 +0.00283195 +-0.000547555 +-0.00025692 +0.00285966 +-0.000543568 +-0.000176816 +0.00282075 +-0.000618864 +-0.000180945 +0.00283005 +-0.000653026 +-0.000104297 +0.00286535 +-0.000590622 +-5.93262e-05 +0.00288296 +-0.000531289 +-0.000107875 +0.00287431 +-0.000543435 +-2.43429e-05 +0.00284562 +-0.000591773 +3.92189e-05 +0.00289402 +-0.000524809 +1.99031e-05 +0.00289086 +-0.000486159 +4.01377e-05 +0.00292071 +-0.000453936 +0.00011274 +0.00287928 +-0.000435088 +0.000184354 +0.00280621 +-0.000402723 +0.000155828 +0.00278645 +-0.000383261 +7.56375e-05 +0.00285154 +-0.000401663 +0.000126867 +0.00279199 +-0.000384422 +6.89272e-05 +0.00278438 +-0.000454681 +0.000115892 +0.00282021 +-0.000378503 +0.000105279 +0.00287369 +-0.000444375 +0.000103989 +0.0028987 +-0.000458667 +0.0001838 +0.00294009 +-0.000437243 +0.000249189 +0.00297947 +-0.000363436 +0.000250188 +0.00290515 +-0.000352551 +0.000210722 +0.00290563 +-0.000341973 +0.000126532 +0.00283226 +-0.000359705 +8.77804e-05 +0.00287572 +-0.000302416 +0.000132827 +0.00288685 +-0.000236065 +8.11208e-05 +0.00289198 +-0.000158871 +4.62664e-05 +0.00294866 +-0.000176644 +0.000106856 +0.00293008 +-0.000105344 +6.47703e-05 +0.00293734 +-0.000162341 +2.33083e-06 +0.00296401 +-0.000237671 +-2.6204e-05 +0.00303143 +-0.000261976 +-7.16269e-05 +0.00297473 +-0.000254625 +-0.000134322 +0.00303102 +-0.000229736 +-0.000111326 +0.00297494 +-0.000246901 +-0.000140357 +0.00289689 +-0.000214459 +-0.00013289 +0.00294819 +-0.000162443 +-8.9727e-05 +0.00294952 +-0.000240823 +-0.000122205 +0.00290783 +-0.000279377 +-5.91518e-05 +0.00292371 +-0.000360024 +-3.80806e-05 +0.00298194 +-0.000374425 +2.19289e-05 +0.00293369 +-0.000438293 +5.00762e-05 +0.00296635 +-0.000368183 +1.5177e-05 +0.00302346 +-0.000320804 +-2.59653e-05 +0.00301845 +-0.000361751 +4.61747e-05 +0.0029785 +-0.000332052 +-1.40648e-05 +0.00291234 +-0.000377072 +-4.22818e-05 +0.00298087 +-0.000375838 +7.73984e-06 +0.00298372 +-0.000317752 +-5.40494e-05 +0.00296613 +-0.000337521 +2.65722e-05 +0.00288729 +-0.00030853 +1.45543e-05 +0.00289758 +-0.000282159 +9.45469e-05 +0.00296871 +-0.000261645 +0.000136017 +0.00303757 +-0.000225964 +0.000170446 +0.00297807 +-0.000243838 +0.000114101 +0.00300437 +-0.000312495 +7.17413e-05 +0.00298706 +-0.000231794 +9.14304e-05 +0.00298642 +-0.000286352 +2.6446e-05 +0.0029703 +-0.000205489 +4.64775e-05 +0.00304659 +-0.00021856 +1.17025e-05 +0.0030119 +-0.000241646 +7.78804e-05 +0.00301013 +-0.00019058 +1.01374e-05 +0.00301838 +-0.000110458 +-1.6555e-05 +0.00297944 +-0.000106594 +5.87371e-05 +0.00302249 +-0.0001308 +0.000127736 +0.00303221 +-9.60121e-05 +0.000159354 +0.0030454 +-4.58979e-05 +0.000137138 +0.00308946 +-1.75906e-05 +7.03711e-05 +0.00301505 +2.15477e-05 +8.02354e-05 +0.00305343 +-2.15331e-05 +1.80146e-05 +0.00297051 +-2.01307e-05 +3.59795e-05 +0.00304463 +-3.67833e-05 +-1.82697e-06 +0.00296199 +-4.55358e-05 +-1.89769e-05 +0.00294959 +-0.000113503 +-6.82401e-05 +0.00286775 +-0.000116873 +-4.60755e-05 +0.00282878 +-5.18189e-05 +-8.01027e-06 +0.002796 +-9.74709e-05 +-7.15819e-05 +0.00280811 +-0.000142417 +-0.000142527 +0.00282117 +-0.000226187 +-0.000139063 +0.00289287 +-0.000180815 +-0.000139658 +0.00282046 +-0.000153018 +-0.000105256 +0.00281192 +-0.000132375 +-0.000187115 +0.00288464 +-0.000117985 +-0.000228407 +0.00281116 +-0.000109315 +-0.000186869 +0.00289349 +-0.000120102 +-0.000169392 +0.00286303 +-4.24721e-05 +-0.000153706 +0.00288225 +-0.000105909 +-0.000206681 +0.00282351 +-0.00011196 +-0.000145746 +0.00278056 +-5.93007e-05 +-0.000196568 +0.00274817 +-0.000108854 +-0.000257355 +0.00276042 +-0.000191687 +-0.000243624 +0.00283436 +-0.000155561 +-0.000264317 +0.00279299 +-0.000225269 +-0.000289416 +0.00285586 +-0.000264502 +-0.000248087 +0.00281229 +-0.00021898 +-0.000304914 +0.00280276 +-0.000179554 +-0.000379444 +0.00279768 +-0.000133952 +-0.00045082 +0.00287938 +-0.000147918 +-0.000469014 +0.002911 +-0.000214583 +-0.000427116 +0.00296713 +-0.000155846 +-0.000423075 +0.0029784 +-0.000103151 +-0.000361125 +0.00300598 +-4.19212e-05 +-0.000343626 +0.00298792 +-0.000118515 +-0.000311888 +0.00297191 +-0.000131308 +-0.000229547 +0.00293246 +-0.000151868 +-0.000301807 +0.00289439 +-0.000225673 +-0.000319223 +0.00289722 +-0.00019576 +-0.000239868 +0.00293261 +-0.000246105 +-0.000298291 +0.00296411 +-0.00032489 +-0.00029886 +0.00291025 +-0.000374675 +-0.00034152 +0.00284427 +-0.000410727 +-0.000380862 +0.00288861 +-0.000368961 +-0.000321792 +0.00289733 +-0.000371263 +-0.000406165 +0.00291938 +-0.000307811 +-0.000434932 +0.00290806 +-0.000235733 +-0.00043588 +0.00295665 +-0.0001897 +-0.000408072 +0.00299572 +-0.000119357 +-0.000381143 +0.00297868 +-0.000200366 +-0.000367832 +0.00299576 +-0.000119221 +-0.000385824 +0.00292851 +-0.000135594 +-0.000336742 +0.00290502 +-0.000216587 +-0.000327337 +0.00285711 +-0.00020089 +-0.000395584 +0.00281342 +-0.000256866 +-0.000349128 +0.00284291 +-0.000253305 +-0.00042861 +0.00276617 +-0.00025114 +-0.000392478 +0.00278044 +-0.000247187 +-0.000308928 +0.00281732 +-0.000192727 +-0.00025532 +0.00285078 +-0.000190231 +-0.000333258 +0.00283682 +-0.000181327 +-0.000250036 +0.00289487 +-0.000219066 +-0.000200984 +0.00282637 +-0.000169531 +-0.000193571 +0.00274784 +-0.000141856 +-0.000209877 +0.00277378 +-0.000203056 +-0.00015714 +0.00271102 +-0.000149003 +-0.000175538 +0.00272368 +-0.000221319 +-0.000132992 +0.00264857 +-0.000204892 +-0.000168898 +0.00271703 +-0.000247847 +-0.000194753 +0.00269342 +-0.000284584 +-0.000122 +0.00271138 +-0.000241671 +-0.000192963 +0.00274939 +-0.000297163 +-0.000141234 +0.00281987 +-0.000325117 +-0.000103125 +0.00275425 +-0.000287021 +-0.000141113 +0.00283796 +-0.000286563 +-0.000127237 +0.00291939 +-0.000287446 +-0.000151079 +0.00292664 +-0.000248103 +-0.000225909 +0.00289576 +-0.00025935 +-0.000304138 +0.00292923 +-0.000337222 +-0.000308128 +0.0029108 +-0.000419431 +-0.000318244 +0.00295284 +-0.000378878 +-0.000268924 +0.00293054 +-0.000337062 +-0.000259401 +0.00288139 +-0.000279137 +-0.0002972 +0.00294866 +-0.000306255 +-0.000341245 +0.00295933 +-0.000254358 +-0.000406503 +0.0029397 +-0.000192751 +-0.000461324 +0.00288248 +-0.000137454 +-0.000471557 +0.00287776 +-0.000111739 +-0.000552282 +0.00291784 +-6.68791e-05 +-0.00049244 +0.00285902 +-5.72097e-05 +-0.000432055 +0.00281815 +7.48975e-06 +-0.000468713 +0.00289954 +-1.64776e-05 +-0.000470177 +0.00286968 +5.96089e-05 +-0.000447394 +0.00293392 +6.91449e-06 +-0.000464608 +0.00292588 +-1.15279e-05 +-0.000479258 +0.00289472 +-3.86766e-05 +-0.000405152 +0.00285508 +-9.73011e-05 +-0.000451973 +0.00284539 +-0.000170049 +-0.000409385 +0.00287515 +-0.000115124 +-0.00046681 +0.00285391 +-0.000109577 +-0.000384846 +0.0027709 +-0.000105607 +-0.000367712 +0.00276953 +-0.000166545 +-0.000308681 +0.00273241 +-0.000242706 +-0.000304052 +0.00268261 +-0.000278547 +-0.000362672 +0.00265206 +-0.00020014 +-0.000351774 +0.00268038 +-0.000157152 +-0.000419229 +0.00266916 +-0.000130702 +-0.00049907 +0.00265569 +-0.000170129 +-0.00057299 +0.00261993 +-0.00017921 +-0.000496581 +0.00261571 +-0.000171642 +-0.000412172 +0.00262663 +-0.000190562 +-0.000330179 +0.00263334 +-0.000132009 +-0.000391225 +0.00259571 +-0.000180736 +-0.00033283 +0.00262661 +-0.000107823 +-0.000363314 +0.00268919 +-0.000156224 +-0.000332644 +0.00275312 +-0.000160072 +-0.00027698 +0.00278257 +-0.000184089 +-0.000201114 +0.00270142 +-0.000208173 +-0.000206943 +0.0026494 +-0.000165975 +-0.000259035 +0.00259634 +-0.00014008 +-0.000319976 +0.00256367 +-0.00021356 +-0.00034706 +0.00258336 +-0.000296082 +-0.000345477 +0.00252294 +-0.000355151 +-0.000353244 +0.00255465 +-0.000303207 +-0.000412374 +0.00250568 +-0.000282808 +-0.000478604 +0.00246317 +-0.000261081 +-0.000408459 +0.00240476 +-0.00021463 +-0.000368071 +0.00246214 +-0.000259707 +-0.000411388 +0.00237773 +-0.00025766 +-0.000419835 +0.00242283 +-0.00022477 +-0.000483742 +0.00236323 +-0.000260523 +-0.000435062 +0.00238079 +-0.000336421 +-0.000468695 +0.00239805 +-0.000395399 +-0.000410182 +0.0023809 +-0.000315305 +-0.000432339 +0.00244803 +-0.000265636 +-0.000447377 +0.00249878 +-0.000198746 +-0.00043514 +0.00244706 +-0.000254013 +-0.000396793 +0.00250858 +-0.000304862 +-0.000425612 +0.00248872 +-0.000245324 +-0.000368506 +0.002472 +-0.000290184 +-0.000438563 +0.00239667 +-0.000272209 +-0.000403903 +0.00244477 +-0.000212973 +-0.000441009 +0.00239988 +-0.000141201 +-0.000446795 +0.00234453 +-7.81784e-05 +-0.000459623 +0.00239593 +-0.000144853 +-0.000448998 +0.00231762 +-0.000112726 +-0.00045493 +0.00236765 +-7.5347e-05 +-0.000512369 +0.00229875 +-7.06087e-05 +-0.000463075 +0.00236762 +-6.67327e-05 +-0.000413665 +0.00235412 +-0.000100956 +-0.000337204 +0.00232694 +-0.000149584 +-0.000273197 +0.00236456 +-0.000225634 +-0.000274396 +0.00239982 +-0.000215409 +-0.000197895 +0.00247274 +-0.000197251 +-0.000158501 +0.00245297 +-0.000274796 +-0.000186709 +0.00242378 +-0.000334661 +-0.000239286 +0.00238035 +-0.000310539 +-0.000308078 +0.00242753 +-0.000241843 +-0.000324053 +0.00250491 +-0.000255696 +-0.000356005 +0.00244925 +-0.000242363 +-0.000418647 +0.00249692 +-0.000308443 +-0.00039497 +0.00249439 +-0.000275782 +-0.000473244 +0.00247922 +-0.00033024 +-0.000409965 +0.00240594 +-0.000372864 +-0.000413692 +0.00239285 +-0.000372979 +-0.000329854 +0.00241465 +-0.00032792 +-0.000398372 +0.00244764 +-0.000347076 +-0.000322579 +0.00248398 +-0.000394858 +-0.000262608 +0.00247041 +-0.000333331 +-0.000319444 +0.00243747 +-0.000297004 +-0.000388693 +0.00240333 +-0.00022325 +-0.000364303 +0.00240974 +-0.000190869 +-0.000286133 +0.00247196 +-0.000231818 +-0.000245499 +0.00251587 +-0.000254127 +-0.000314598 +0.00259402 +-0.000250889 +-0.000347497 +0.00267005 +-0.000214769 +-0.000336845 +0.0027316 +-0.000264763 +-0.000306639 +0.00273633 +-0.000340824 +-0.000269324 +0.00280477 +-0.000301485 +-0.000238222 +0.00281843 +-0.000221038 +-0.000261499 +0.00274266 +-0.000232308 +-0.000225006 +0.00270927 +-0.000310315 +-0.000225396 +0.00275646 +-0.000265205 +-0.000279606 +0.00277379 +-0.000305645 +-0.000352161 +0.00277701 +-0.000248619 +-0.00028941 +0.00275899 +-0.000328636 +-0.000267673 +0.00271902 +-0.00025688 +-0.000246374 +0.00267191 +-0.000209461 +-0.000298643 +0.00266144 +-0.000252845 +-0.00037081 +0.00258348 +-0.000243318 +-0.000338687 +0.00252043 +-0.000238534 +-0.000282106 +0.0025667 +-0.000306988 +-0.000301422 +0.00248397 +-0.000298185 +-0.00031809 +0.00256347 +-0.000283092 +-0.000343618 +0.00249712 +-0.00031915 +-0.00030492 +0.00246004 +-0.00034301 +-0.000232422 +0.00245482 +-0.000422007 +-0.000262954 +0.002506 +-0.000485758 +-0.000240235 +0.00250372 +-0.00055975 +-0.000198762 +0.00245709 +-0.000589703 +-0.000134509 +0.00239509 +-0.000575408 +-0.000190652 +0.0023826 +-0.000526778 +-0.000259055 +0.00233361 +-0.000588699 +-0.000227982 +0.0023894 +-0.000542465 +-0.000183828 +0.0023231 +-0.000587794 +-0.000211215 +0.00237715 +-0.00064979 +-0.000232079 +0.00232586 +-0.000613328 +-0.000175161 +0.00231646 +-0.00056753 +-0.000245972 +0.0022966 +-0.000647525 +-0.000225811 +0.00227614 +-0.000728326 +-0.000209917 +0.00223559 +-0.000727089 +-0.000284441 +0.00231782 +-0.000739142 +-0.000301557 +0.00231335 +-0.000813004 +-0.00026003 +0.00236438 +-0.000745456 +-0.000265749 +0.00232868 +-0.000674112 +-0.000294656 +0.00230636 +-0.000693598 +-0.000215145 +0.00229882 +-0.000616559 +-0.000249906 +0.00233808 +-0.000620938 +-0.000174808 +0.00239681 +-0.000561205 +-0.000188325 +0.0024336 +-0.000514031 +-0.00012815 +0.00250765 +-0.000523751 +-0.000168422 +0.00251552 +-0.000455285 +-0.000118919 +0.00253856 +-0.000456546 +-0.000200573 +0.00256692 +-0.000380249 +-0.000176605 +0.00249653 +-0.000368113 +-0.000222409 +0.00256924 +-0.000324446 +-0.000219848 +0.00251199 +-0.000268986 +-0.000190758 +0.002482 +-0.000339508 +-0.000154328 +0.00249257 +-0.000421351 +-0.000134578 +0.00252893 +-0.000350701 +-0.000164349 +0.00251054 +-0.000429268 +-0.0001906 +0.00258998 +-0.000451165 +-0.000210861 +0.0025919 +-0.000529481 +-0.000243464 +0.00260302 +-0.000449687 +-0.000216833 +0.00252651 +-0.000443978 +-0.00025307 +0.00256464 +-0.000513695 +-0.000282828 +0.0025057 +-0.000520382 +-0.00022215 +0.00257604 +-0.000515806 +-0.000269397 +0.00250749 +-0.000492273 +-0.000225261 +0.00244002 +-0.000466488 +-0.000180731 +0.00248031 +-0.000452301 +-0.000254049 +0.00248402 +-0.000412633 +-0.000328967 +0.00249474 +-0.000494201 +-0.000349743 +0.00249482 +-0.00040991 +-0.00035949 +0.00256203 +-0.000439486 +-0.000316958 +0.00262525 +-0.000423245 +-0.000262741 +0.00266127 +-0.000486254 +-0.000218782 +0.00271782 +-0.000423031 +-0.00022087 +0.00268901 +-0.000445945 +-0.000144418 +0.00265197 +-0.000464496 +-0.000218469 +0.00262815 +-0.000399592 +-0.000169275 +0.00256886 +-0.000453783 +-0.000196624 +0.00256637 +-0.000517802 +-0.000140988 +0.00259396 +-0.000455133 +-9.08739e-05 +0.00252321 +-0.00046443 +-0.00013679 +0.00248337 +-0.000510802 +-7.79472e-05 +0.00253116 +-0.000442796 +-9.5021e-05 +0.00247264 +-0.000501665 +-7.73965e-05 +0.00248869 +-0.00046892 +-0.000154015 +0.00248036 +-0.000548018 +-0.00018358 +0.0025622 +-0.000566707 +-0.000195929 +0.00250543 +-0.000557281 +-0.000258277 +0.00250651 +-0.000641439 +-0.000247492 +0.00243386 +-0.000636713 +-0.000203917 +0.00244911 +-0.000681256 +-0.000274509 +0.0024836 +-0.000751899 +-0.000306447 +0.0024009 +-0.000743954 +-0.000289219 +0.00233831 +-0.000703833 +-0.00033013 +0.00238393 +-0.000638797 +-0.000359955 +0.00232276 +-0.000595948 +-0.000400239 +0.00223945 +-0.000591477 +-0.000384788 +0.00219881 +-0.000590352 +-0.000310306 +0.0022216 +-0.000671527 +-0.000300732 +0.00214754 +-0.000631361 +-0.000310813 +0.00217467 +-0.00063218 +-0.000230421 +0.00217858 +-0.00069263 +-0.000171002 +0.00209898 +-0.000663852 +-0.0001769 +0.00217338 +-0.000686021 +-0.000142644 +0.00209744 +-0.000650942 +-0.000128389 +0.00214766 +-0.000719086 +-0.000134221 +0.00215123 +-0.000674036 +-0.000206038 +0.00210537 +-0.000744306 +-0.000193417 +0.00218276 +-0.000777081 +-0.000181688 +0.00210537 +-0.000780708 +-0.000147068 +0.00209672 +-0.000762614 +-0.000229516 +0.00204635 +-0.00081316 +-0.000183604 +0.00205628 +-0.00087536 +-0.000126748 +0.00197659 +-0.000892409 +-0.000103094 +0.00192758 +-0.000889314 +-0.000172293 +0.00191791 +-0.000916372 +-0.000252132 +0.00197795 +-0.000861336 +-0.000275928 +0.00204362 +-0.000912691 +-0.000260122 +0.00206679 +-0.00092603 +-0.000336161 +0.00206963 +-0.000905646 +-0.000259744 +0.00212117 +-0.000935387 +-0.000300072 +0.00211384 +-0.000872853 +-0.000356955 +0.00205454 +-0.000906639 +-0.000306535 +0.00202053 +-0.000946775 +-0.000243064 +0.00194793 +-0.00090819 +-0.000235772 +0.00199661 +-0.000918642 +-0.00029521 +0.00204788 +-0.000865758 +-0.000337326 +0.00211214 +-0.000891156 +-0.000288073 +0.00216923 +-0.000930719 +-0.000278609 +0.00218467 +-0.000938654 +-0.00019555 +0.00221454 +-0.000910469 +-0.000121298 +0.00229678 +-0.000922871 +-0.000104478 +0.00224747 +-0.000864011 +-6.83579e-05 +0.0022206 +-0.000875605 +1.12893e-05 +0.00216715 +-0.000906401 +-4.69725e-05 +0.00217799 +-0.000957405 +1.99692e-05 +0.00221414 +-0.000933995 +-5.31412e-05 +0.00225884 +-0.00095587 +-0.00012187 +0.0021907 +-0.000955828 +-0.000172251 +0.00213262 +-0.00095786 +-0.000117645 +0.00216215 +-0.000951506 +-0.00019694 +0.00218658 +-0.000911428 +-0.000158946 +0.00226373 +-0.000903905 +-0.000193461 +0.00218304 +-0.00087765 +-0.000192895 +0.00218291 +-0.000810034 +-0.000244159 +0.00217465 +-0.00085064 +-0.000318206 +0.00217302 +-0.000881784 +-0.000239292 +0.00211471 +-0.000884316 +-0.000300883 +0.00209738 +-0.000943216 +-0.000242312 +0.00203335 +-0.000966929 +-0.00019294 +0.00211649 +-0.000973776 +-0.00017865 +0.00209983 +-0.000934705 +-0.000245314 +0.00204107 +-0.000952228 +-0.000202346 +0.0021249 +-0.000953307 +-0.000215425 +0.00212753 +-0.000949943 +-0.00013068 +0.00212191 +-0.000914661 +-5.37159e-05 +0.00215296 +-0.000938788 +2.14741e-05 +0.00219169 +-0.000906221 +8.95874e-05 +0.00218343 +-0.000956488 +0.000114756 +0.00214655 +-0.000913393 +0.00010993 +0.00219571 +-0.000967569 +8.56224e-05 +0.00214755 +-0.000914057 +0.000113597 +0.00209754 +-0.000966884 +6.99159e-05 +0.00211974 +-0.000950682 +2.44578e-05 +0.00207383 +-0.000967572 +2.45331e-05 +0.00205922 +-0.000952249 +-2.60984e-05 +0.00208971 +-0.000981908 +-9.95197e-05 +0.00210685 +-0.000976784 +-0.000181498 +0.00211885 +-0.000981443 +-9.76265e-05 +0.00212799 +-0.000972765 +-0.000181085 +0.0021857 +-0.000939035 +-0.000233344 +0.00220806 +-0.000871897 +-0.00028017 +0.00213979 +-0.000916576 +-0.000303473 +0.00217107 +-0.000883034 +-0.000232083 +0.00220832 +-0.000931096 +-0.000172902 +0.00212422 +-0.00094044 +-0.000179263 +0.00211274 +-0.000956324 +-0.000259817 +0.00210902 +-0.00090522 +-0.000192182 +0.0021376 +-0.00087936 +-0.000116588 +0.0021032 +-0.000849985 +-0.000188378 +0.00210107 +-0.000901628 +-0.000121084 +0.00211129 +-0.000967365 +-0.000173756 +0.00217218 +-0.000915896 +-0.000202789 +0.00225501 +-0.000919717 +-0.0002208 +0.00223579 +-0.000935271 +-0.000139629 +0.00225772 +-0.000914776 +-9.25953e-05 +0.0022077 +-0.00096919 +-5.09193e-05 +0.00212417 +-0.000958799 +-6.16357e-05 +0.00217393 +-0.000904399 +-1.96344e-05 +0.00221236 +-0.000850374 +-7.2589e-05 +0.00217204 +-0.000838556 +-0.000146305 +0.00211985 +-0.000802001 +-9.02689e-05 +0.00216425 +-0.000730186 +-9.87091e-05 +0.00220418 +-0.000801033 +-7.44887e-05 +0.00215472 +-0.000823264 +-0.000139759 +0.0021774 +-0.000742263 +-0.000150914 +0.00204702 +0.00166702 +-0.00233483 +0.00201604 +0.00161903 +-0.00239757 +0.00193579 +0.00159373 +-0.00238663 +0.00199432 +0.00164931 +-0.0024128 +0.00199775 +0.00163058 +-0.00233011 +0.00206235 +0.00157855 +-0.00231223 +0.00206583 +0.00149919 +-0.00228241 +0.00209671 +0.00154426 +-0.00221749 +0.00202401 +0.00152204 +-0.00225517 +0.00198395 +0.00144769 +-0.00224695 +0.00203004 +0.00137651 +-0.00225001 +0.00199892 +0.00136237 +-0.00217235 +0.00191416 +0.00136279 +-0.00217627 +0.0018991 +0.00134337 +-0.00225749 +0.00188309 +0.00140804 +-0.00231003 +0.00185505 +0.00133353 +-0.00233939 +0.00189992 +0.00136392 +-0.00240468 +0.00194902 +0.0013126 +-0.00235825 +0.00188611 +0.00132083 +-0.0024146 +0.00191579 +0.00125937 +-0.00246502 +0.00183201 +0.00126828 +-0.00247516 +0.00180734 +0.00127979 +-0.00255552 +0.00179692 +0.00129402 +-0.00247252 +0.00185803 +0.00125773 +-0.00251887 +0.00191169 +0.00132106 +-0.00253646 +0.00195684 +0.00136096 +-0.0025962 +0.00196456 +0.0014371 +-0.00255954 +0.00202468 +0.00138049 +-0.00254 +0.00196912 +0.00143436 +-0.00250518 +0.00193789 +0.00140591 +-0.00257877 +0.00193232 +0.00139244 +-0.00249518 +0.00195513 +0.00145943 +-0.00254199 +0.00201408 +0.0014771 +-0.00248357 +0.0020106 +0.00154784 +-0.00243684 +0.00193796 +0.00159056 +-0.00242692 +0.00190275 +0.00166649 +-0.00241299 +0.00191243 +0.00168679 +-0.0024948 +0.00186058 +0.00164197 +-0.00254483 +0.0018448 +0.0016233 +-0.00246357 +0.00187281 +0.00169388 +-0.00250145 +0.00183776 +0.00177085 +-0.00249468 +0.00179541 +0.00173697 +-0.00255993 +0.00176079 +0.00166508 +-0.00253107 +0.00171801 +0.00162722 +-0.00259381 +0.00174027 +0.00170846 +-0.00258361 +0.00166065 +0.00170335 +-0.00255472 +0.00160532 +0.00165943 +-0.00260173 +0.00164105 +0.0016621 +-0.00252481 +0.00165318 +0.00170538 +-0.00245284 +0.00168938 +0.00162949 +-0.00244145 +0.00160756 +0.00162082 +-0.00246219 +0.00168752 +0.00162484 +-0.0024903 +0.00164356 +0.00167079 +-0.00243411 +0.00166456 +0.00174317 +-0.00239512 +0.00171474 +0.00176393 +-0.00232992 +0.00164597 +0.00177168 +-0.00228083 +0.00157486 +0.00172716 +-0.00229358 +0.00162435 +0.00178169 +-0.00225141 +0.00167639 +0.00184741 +-0.00223829 +0.001702 +0.00184136 +-0.00215762 +0.00168483 +0.00189449 +-0.00209373 +0.00169223 +0.00187754 +-0.00201091 +0.00174356 +0.00181763 +-0.00197969 +0.00171631 +0.00189799 +-0.00197904 +0.00169249 +0.00183373 +-0.001929 +0.00166721 +0.00175672 +-0.0019541 +0.00174334 +0.00178913 +-0.00197288 +0.00176159 +0.00172211 +-0.00202161 +0.00174035 +0.00165317 +-0.00197692 +0.00173481 +0.00165798 +-0.00189239 +0.00173836 +0.00169887 +-0.00181812 +0.00167982 +0.00170287 +-0.00175682 +0.00170524 +0.00173517 +-0.00168259 +0.00174997 +0.00179142 +-0.00172771 +0.00173801 +0.00176845 +-0.00180851 +0.00172264 +0.00174058 +-0.00172986 +0.00174652 +0.00165959 +-0.00172145 +0.00181906 +0.00165525 +-0.00176526 +0.0018119 +0.00165021 +-0.00184966 +0.0017948 +0.0017228 +-0.00180919 +0.00186101 +0.00174153 +-0.00185886 +0.00177839 +0.00172974 +-0.0018435 +0.00173164 +0.0017977 +-0.00182361 +0.00175545 +0.00187615 +-0.00184548 +0.00172722 +0.00182148 +-0.00178706 +0.00166913 +0.00187305 +-0.0018212 +0.00166345 +0.00194276 +-0.00177315 +0.00168482 +0.00186179 +-0.00175947 +0.00169003 +0.001784 +-0.00179295 +0.00173449 +0.00172822 +-0.001747 +0.00171352 +0.00178763 +-0.00180384 +0.00178199 +0.00174011 +-0.00178789 +0.00177405 +0.00176879 +-0.00170843 +0.00177573 +0.00179597 +-0.00178879 +0.00180339 +0.00174881 +-0.00185368 +0.00186124 +0.00179015 +-0.00189999 +0.00182189 +0.00178582 +-0.00197504 +0.00181206 +0.00171552 +-0.00192855 +0.00184852 +0.00178836 +-0.00190477 +0.00183042 +0.00181361 +-0.00198373 +0.00176912 +0.00181902 +-0.00204216 +0.00172894 +0.00184884 +-0.00197363 +0.00172792 +0.00193091 +-0.00195208 +0.00176027 +0.00191219 +-0.00187591 +0.00179271 +0.00184005 +-0.00190664 +0.00174349 +0.00186041 +-0.00197269 +0.00169301 +0.00186834 +-0.00204043 +0.00173651 +0.00194108 +-0.0020444 +0.00165811 +0.00191853 +-0.00206776 +0.00162804 +0.00184281 +-0.00204406 +0.00155609 +0.00188728 +-0.00205075 +0.00154882 +0.00191202 +-0.00196991 +0.00158785 +0.0019834 +-0.001994 +0.00151428 +0.00195321 +-0.0020236 +0.00159462 +0.00193997 +-0.0020475 +0.00165679 +0.00198783 +-0.0020798 +0.00173779 +0.00198082 +-0.0021041 +0.00166812 +0.00197703 +-0.00215239 +0.00168035 +0.00205264 +-0.00211586 +0.00168863 +0.00211688 +-0.00206105 +0.00169528 +0.00204616 +-0.00210747 +0.00170937 +0.00196402 +-0.0021234 +0.00176063 +0.00201092 +-0.0020747 +0.00172113 +0.00194688 +-0.00203547 +0.00179958 +0.00195986 +-0.00200585 +0.00178138 +0.00201893 +-0.00194771 +0.0018489 +0.0020677 +-0.00193151 +0.00183186 +0.00198967 +-0.00190286 +0.00178951 +0.00193013 +-0.00185971 +0.00180122 +0.00199713 +-0.00191045 +0.00176972 +0.00205189 +-0.00185381 +0.00176326 +0.00213243 +-0.00187973 +0.00169324 +0.00208555 +-0.00186973 +0.00177323 +0.0020595 +-0.00185866 +0.00175183 +0.00213013 +-0.00190053 +0.00177145 +0.00210342 +-0.00197864 +0.00170603 +0.00209654 +-0.00192504 +0.00178626 +0.00209166 +-0.00195223 +0.00185705 +0.00212394 +-0.00191836 +0.00185825 +0.0021552 +-0.00199723 +0.00188892 +0.00211881 +-0.00192698 +0.00196429 +0.00214962 +-0.0019031 +0.00201546 +0.0020825 +-0.00191182 +0.00195094 +0.00203707 +-0.00194303 +0.00189283 +0.00209867 +-0.00194845 +0.00181847 +0.00213882 +-0.00195603 +0.00183905 +0.00206644 +-0.00199524 +0.00183456 +0.00213636 +-0.00194737 +0.0017841 +0.00220258 +-0.00196374 +0.00179729 +0.00228564 +-0.00195244 +0.00184296 +0.00225541 +-0.00201725 +0.00178524 +0.00220694 +-0.00197828 +0.00177209 +0.0022553 +-0.0019098 +0.00174202 +0.0021884 +-0.00195246 +0.00167611 +0.00223926 +-0.00193606 +0.00172496 +0.00227845 +-0.00187881 +0.00178197 +0.0022753 +-0.00194157 +0.00172834 +0.00231744 +-0.0018911 +0.00173809 +0.00236517 +-0.00196057 +0.00171451 +0.00242264 +-0.00190277 +0.00163063 +0.00243532 +-0.0019008 +0.00159656 +0.00244848 +-0.00197739 +0.00159963 +0.0023671 +-0.00195355 +0.00155946 +0.00231685 +-0.00200888 +0.00148381 +0.00231089 +-0.0019709 +0.00146728 +0.00239407 +-0.00196804 +0.00152281 +0.00239709 +-0.00190395 +0.00149669 +0.00247782 +-0.00190445 +0.00156181 +0.00246463 +-0.00195723 +0.00149616 +0.00250291 +-0.00199497 +0.00146489 +0.00255543 +-0.00193611 +0.00149176 +0.00257244 +-0.00185868 +0.00144857 +0.00253618 +-0.00179529 +0.00150823 +0.00256306 +-0.00174127 +0.00153402 +0.00258547 +-0.00181894 +0.00159509 +0.00252793 +-0.00183159 +0.00164404 +0.00257497 +-0.0018825 +0.00166452 +0.00262009 +-0.00181361 +0.00172415 +0.00265842 +-0.00186024 +0.00173364 +0.00273824 +-0.00183307 +0.0017066 +0.00268616 +-0.00188447 +0.00170881 +0.00267215 +-0.00180081 +0.00179186 +0.00268267 +-0.00181464 +0.00176914 +0.00274129 +-0.00183391 +0.00182369 +0.00275077 +-0.00189821 +0.00187581 +0.00273483 +-0.00195934 +0.00194515 +0.00276402 +-0.00193968 +0.00192855 +0.00273951 +-0.00186016 +0.00190683 +0.00269701 +-0.00193032 +0.00184031 +0.00274956 +-0.00193389 +0.00182565 +0.00271595 +-0.0018643 +0.00186696 +0.00274998 +-0.00193014 +0.00186446 +0.00270433 +-0.00188058 +0.00192458 +0.00275755 +-0.001908 +0.00199427 +0.00270995 +-0.0019168 +0.00206395 +0.00267205 +-0.00188667 +0.00214156 +0.00267338 +-0.00185239 +0.00221538 +0.00265462 +-0.00188979 +0.00226365 +0.00259255 +-0.00192168 +0.00223722 +0.00256417 +-0.00184621 +0.00230202 +0.00251522 +-0.00187077 +0.00230996 +0.0025685 +-0.00180521 +0.00229691 +0.00249996 +-0.0018535 +0.00225792 +0.00251361 +-0.00192762 +0.00231401 +0.00245871 +-0.00195986 +0.00226511 +0.00251789 +-0.00192372 +0.00228321 +0.00254355 +-0.00200255 +0.00222078 +0.00259674 +-0.00198076 +0.00229087 +0.00264266 +-0.00199412 +0.00222332 +0.00264388 +-0.00204546 +0.00217001 +0.00270444 +-0.0020192 +0.00210063 +0.002657 +-0.00200755 +0.00206342 +0.00258115 +-0.00199965 +0.00209076 +0.00260966 +-0.00192455 +0.00209918 +0.00259485 +-0.00184142 +0.00209277 +0.00262366 +-0.00176187 +0.00214308 +0.00256613 +-0.00172499 +0.00219224 +0.00263453 +-0.00173522 +0.00226715 +0.00261233 +-0.0017021 +0.00221506 +0.00261422 +-0.00176906 +0.00217975 +0.00256446 +-0.0017101 +0.00215834 +0.00253173 +-0.00178541 +0.00208087 +0.00249928 +-0.00179745 +0.00211047 +0.00252226 +-0.00172132 +0.00216994 +0.00246805 +-0.0016944 +0.00223663 +0.00241996 +-0.00171536 +0.00223134 +0.002371 +-0.00178446 +0.00216742 +0.00233935 +-0.0017385 +0.00221481 +0.0024063 +-0.00176023 +0.00226795 +0.00236886 +-0.00181477 +0.0023238 +0.00242304 +-0.00184862 +0.0023523 +0.00250289 +-0.00185208 +0.00240828 +0.00247392 +-0.00190888 +0.00240014 +0.00242237 +-0.00184197 +0.00238423 +0.00250002 +-0.00187226 +0.00246747 +0.00251329 +-0.00186255 +0.00239965 +0.00250805 +-0.00191327 +0.0024628 +0.00256103 +-0.00189316 +0.00246062 +0.00247825 +-0.00187466 +0.00239847 +0.00246871 +-0.00181769 +0.00236819 +0.00253543 +-0.00177488 +0.00236528 +0.00255483 +-0.00169233 +0.00243338 +0.00250459 +-0.00168609 +0.0023538 +0.00252699 +-0.00170523 +0.00233989 +0.00255144 +-0.00178529 +0.0023785 +0.00253985 +-0.00171062 +0.00238705 +0.00261717 +-0.00174451 +0.00237193 +0.00266941 +-0.00167938 +0.00232576 +0.0026198 +-0.00173044 +0.0022745 +0.00261438 +-0.00166303 +0.00230948 +0.00254071 +-0.00168645 +0.00230116 +0.00245724 +-0.00167366 +0.00230587 +0.00250093 +-0.00160107 +0.00237137 +0.00245387 +-0.00162745 +0.00244808 +0.00241836 +-0.00162014 +0.00245873 +0.00233757 +-0.00159647 +0.00247119 +0.00239603 +-0.00165669 +0.0025133 +0.00246822 +-0.00167137 +0.00251328 +0.00241249 +-0.00173537 +0.00256491 +0.0023661 +-0.00178417 +0.00260295 +0.00230972 +-0.00173343 +0.00265649 +0.0023662 +-0.00176726 +0.00263625 +0.00228397 +-0.00177268 +0.0027145 +0.00225138 +-0.00177662 +0.00268723 +0.00229833 +-0.00171142 +0.00267148 +0.00225941 +-0.00163768 +0.00267421 +0.00233704 +-0.00160353 +0.00260709 +0.00230632 +-0.00156169 +0.00262912 +0.00227291 +-0.00148687 +0.00256158 +0.0022832 +-0.00143654 +0.00264129 +0.00227209 +-0.00140965 +0.00264921 +0.00219026 +-0.00138864 +0.00258954 +0.00214574 +-0.00134792 +0.00252857 +0.00209083 +-0.00136955 +0.0025355 +0.00205891 +-0.00144786 +0.00259019 +0.00211987 +-0.00142567 +0.00263299 +0.00218676 +-0.00145556 +0.00257809 +0.00212278 +-0.00144598 +0.0026455 +0.002174 +-0.00144036 +0.00259296 +0.00218017 +-0.0015067 +0.00265405 +0.00216332 +-0.00145027 +0.00265573 +0.00218036 +-0.00136716 +0.00270738 +0.00215318 +-0.00142875 +0.00265969 +0.00219571 +-0.00148458 +0.00272649 +0.00214411 +-0.00147585 +0.00270896 +0.00212561 +-0.00139491 +0.00271237 +0.0021275 +-0.00131015 +0.00269661 +0.00212188 +-0.00139334 +0.00264383 +0.00214776 +-0.00133214 +0.00265625 +0.00219599 +-0.00140084 +0.00262774 +0.00227129 +-0.00137407 +0.00258461 +0.00228246 +-0.00144628 +0.00255398 +0.0023381 +-0.00139002 +0.0025082 +0.00229909 +-0.00144987 +0.0025787 +0.00234236 +-0.00143097 +0.0026548 +0.00231457 +-0.00140574 +0.0026322 +0.00232783 +-0.00132503 +0.00267515 +0.00237068 +-0.00138435 +0.00263377 +0.00235515 +-0.00145679 +0.00264685 +0.00228645 +-0.00150484 +0.00269903 +0.00223026 +-0.00146851 +0.00266898 +0.00230701 +-0.00144835 +0.00267171 +0.00228692 +-0.00136595 +0.00265283 +0.00236831 +-0.00135115 +0.00269601 +0.00236933 +-0.00127811 +0.00265842 +0.00233849 +-0.00122488 +0.00269314 +0.0023743 +-0.00129353 +0.00270605 +0.00229442 +-0.00126797 +0.00278033 +0.0022863 +-0.00130818 +0.00272222 +0.00231438 +-0.00125309 +0.00266294 +0.00231681 +-0.00131375 +0.0026208 +0.00234747 +-0.00138072 +0.0026275 +0.00226524 +-0.00140057 +0.00269751 +0.00223907 +-0.0013604 +0.00274019 +0.00216646 +-0.00135008 +0.00275291 +0.00208283 +-0.00134348 +0.0027307 +0.00216471 +-0.00134186 +0.00276927 +0.00219196 +-0.00127137 +0.00271145 +0.00213088 +-0.00128264 +0.00276839 +0.00219364 +-0.00128708 +0.00275843 +0.00212965 +-0.00123225 +0.00268461 +0.00217049 +-0.00122314 +0.00267974 +0.00222971 +-0.00128371 +0.00268124 +0.00214604 +-0.00129774 +0.00267229 +0.00221333 +-0.00124684 +0.00264729 +0.00228371 +-0.00128711 +0.0027017 +0.00232373 +-0.00133846 +0.00276095 +0.00236058 +-0.00138676 +0.00272991 +0.00231252 +-0.00132409 +0.00272768 +0.0023703 +-0.00133397 +0.00269215 +0.00241974 +-0.00139307 +0.00275053 +0.00239716 +-0.00138674 +0.00269544 +0.00239602 +-0.00134473 +0.00265551 +0.00243375 +-0.00130202 +0.00265804 +0.00237159 +-0.00127447 +0.0026495 +0.00230278 +-0.00132339 +0.00260876 +0.00222871 +-0.00131606 +0.00265497 +0.00217086 +-0.0013575 +0.00273658 +0.00216942 +-0.00133432 +0.00266733 +0.00221661 +-0.00132098 +0.00268532 +0.00216063 +-0.00125981 +0.00261484 +0.0021142 +-0.00125099 +0.00258818 +0.00203383 +-0.00125653 +0.0026557 +0.0019954 +-0.00129065 +0.0026989 +0.00192243 +-0.00128763 +0.00276318 +0.00190245 +-0.00123596 +0.00268774 +0.0018677 +-0.00121858 +0.00276546 +0.00190166 +-0.00122115 +0.00273083 +0.00182502 +-0.00123241 +0.00265871 +0.00180725 +-0.00127344 +0.00265569 +0.0018283 +-0.00119129 +0.00273116 +0.00179587 +-0.00117 +0.00273693 +0.00180615 +-0.00108597 +0.00268608 +0.00182915 +-0.00104807 +0.0026493 +0.0017805 +-0.00101609 +0.00271329 +0.00174675 +-0.00106044 +0.00274366 +0.00175689 +-0.00112598 +0.00270957 +0.00168084 +-0.00111006 +0.0027368 +0.0016125 +-0.00110033 +0.00270416 +0.0016908 +-0.0010985 +0.00263452 +0.0016675 +-0.00114102 +0.00262265 +0.00158348 +-0.00114123 +0.00263793 +0.00166374 +-0.00111833 +0.00255722 +0.00164009 +-0.00110706 +0.00249719 +0.00161714 +-0.00116246 +0.00244846 +0.00165103 +-0.00110183 +0.00241487 +0.00166544 +-0.00102525 +0.00249262 +0.00164037 +-0.0010482 +0.00249076 +0.00170718 +-0.000995938 +0.00256072 +0.00166753 +-0.00102303 +0.00254401 +0.00158557 +-0.00100882 +0.00251056 +0.00159849 +-0.000976769 +0.00252201 +0.00168171 +-0.000964818 +0.00250313 +0.00176427 +-0.000959537 +0.00247797 +0.00183823 +-0.000992653 +0.00246439 +0.0018717 +-0.000915872 +0.00247584 +0.00195501 +-0.000927162 +0.00241104 +0.00197504 +-0.000904459 +0.00241486 +0.00191134 +-0.000918165 +0.00235715 +0.00185187 +-0.000936405 +0.00243642 +0.00187527 +-0.000917206 +0.00250842 +0.00186651 +-0.000927981 +0.00246378 +0.00193629 +-0.000946334 +0.00247415 +0.0018703 +-0.000898961 +0.00239946 +0.00190818 +-0.000885302 +0.00236111 +0.00189507 +-0.000959851 +0.00238874 +0.00193301 +-0.000889161 +0.00245313 +0.00193538 +-0.000944381 +0.00240481 +0.00186579 +-0.000939718 +0.00234923 +0.00184856 +-0.00100148 +0.00229816 +0.0017961 +-0.000958584 +0.00234593 +0.00183658 +-0.00101585 +0.00227139 +0.00184786 +-0.0010548 +0.00225694 +0.0019297 +-0.00107192 +0.00230202 +0.00198934 +-0.0010318 +0.00225615 +0.00193301 +-0.000987961 +0.00230265 +0.00199558 +-0.000954449 +0.00233216 +0.0020481 +-0.000894698 +0.00236938 +0.00197676 +-0.000921637 +0.0023028 +0.00202014 +-0.000951396 +0.0023528 +0.0020714 +-0.000905864 +0.00228715 +0.00204802 +-0.000904057 +0.00225109 +0.0019777 +-0.000934945 +0.00228923 +0.00192373 +-0.000881726 +0.00224334 +0.00189893 +-0.000948656 +0.00220037 +0.00197107 +-0.000936391 +0.002143 +0.00192719 +-0.000980921 +0.00216241 +0.00196015 +-0.00105666 +0.0021709 +0.00199476 +-0.000979648 +0.00211447 +0.00193179 +-0.000972474 +0.00209388 +0.00200332 +-0.000931743 +0.00207546 +0.00195412 +-0.000998372 +0.00215644 +0.00192914 +-0.00100266 +0.002216 +0.00198592 +-0.000981954 +0.00217407 +0.00199747 +-0.00105481 +0.00225761 +0.00200238 +-0.00106886 +0.0022531 +0.00197623 +-0.00114946 +0.00232844 +0.00201524 +-0.00115095 +0.00226577 +0.00196408 +-0.00117653 +0.00222256 +0.00192169 +-0.00111706 +0.00224573 +0.00186674 +-0.00117742 +0.00219458 +0.0018614 +-0.00124491 +0.0021186 +0.00182789 +-0.00122748 +0.00212813 +0.00191107 +-0.00121364 +0.00206615 +0.00196902 +-0.00121413 +0.00201356 +0.00191537 +-0.00125358 +0.00196327 +0.00193599 +-0.00118842 +0.00192009 +0.00196558 +-0.0012552 +0.00196158 +0.00191739 +-0.00119902 +0.00188295 +0.00194775 +-0.00118918 +0.0019043 +0.00196168 +-0.00110825 +0.00190058 +0.00189452 +-0.00105652 +0.00189177 +0.00181426 +-0.00103042 +0.00181469 +0.00183425 +-0.00105975 +0.00177266 +0.00176348 +-0.00108036 +0.00172638 +0.00180365 +-0.00113905 +0.00177407 +0.00180677 +-0.00120916 +0.00178714 +0.00176462 +-0.00128164 +0.00185332 +0.00171163 +-0.00127812 +0.00182775 +0.00167354 +-0.0013495 +0.00186328 +0.00159681 +-0.00134235 +0.00184736 +0.00167648 +-0.00136685 +0.00178538 +0.00166014 +-0.00142245 +0.00180917 +0.00174137 +-0.00142834 +0.00176457 +0.00174631 +-0.00150035 +0.00171438 +0.00175011 +-0.00156867 +0.00164683 +0.00179447 +-0.00154281 +0.00166631 +0.00186303 +-0.00149676 +0.00160568 +0.0018738 +-0.00143838 +0.00160648 +0.00193046 +-0.00150154 +0.00153302 +0.0018905 +-0.00151594 +0.00155154 +0.00195713 +-0.00146677 +0.00158295 +0.00193418 +-0.00139136 +0.00151328 +0.00193133 +-0.0014397 +0.00143235 +0.00191186 +-0.00142321 +0.00144892 +0.00188317 +-0.00150133 +0.00140706 +0.00184003 +-0.00156121 +0.00147092 +0.00187859 +-0.00160164 +0.00151688 +0.00190539 +-0.00153554 +0.00154596 +0.00188053 +-0.00145981 +0.0015775 +0.00180543 +-0.00143604 +0.00161435 +0.00182751 +-0.00136286 +0.00159445 +0.00175823 +-0.00140763 +0.00164906 +0.00169568 +-0.00142511 +0.00165249 +0.00174384 +-0.00149489 +0.00167089 +0.00168158 +-0.00154953 +0.00173571 +0.00162801 +-0.00156087 +0.00168781 +0.00158672 +-0.00161745 +0.0016497 +0.00157338 +-0.00154282 +0.00159825 +0.00163455 +-0.00151434 +0.00165347 +0.00166207 +-0.00145609 +0.00161778 +0.00158869 +-0.00143281 +0.00153822 +0.00160768 +-0.00145536 +0.00156996 +0.00168574 +-0.00144539 +0.00157238 +0.00160567 +-0.00141742 +0.00160618 +0.00158126 +-0.00134352 +0.00157732 +0.00160997 +-0.00141797 +0.00162034 +0.00157661 +-0.00135288 +0.00158313 +0.0015051 +-0.00137937 +0.00158392 +0.00157433 +-0.00133031 +0.00149997 +0.00156226 +-0.00133296 +0.00145653 +0.001634 +-0.00134583 +0.00148175 +0.00168635 +-0.001284 +0.0014241 +0.00174722 +-0.0012971 +0.00135548 +0.00174626 +-0.00124719 +0.00142478 +0.0017928 +-0.00126241 +0.00150832 +0.00180498 +-0.001271 +0.00150885 +0.00178943 +-0.00135441 +0.00146297 +0.00180692 +-0.00142361 +0.00141551 +0.00173662 +-0.0014261 +0.00134358 +0.00169332 +-0.00141381 +0.00129597 +0.00165825 +-0.00147467 +0.00128013 +0.00171763 +-0.00153317 +0.00134676 +0.00176995 +-0.00152834 +0.00131987 +0.00177341 +-0.00144793 +0.00140409 +0.00178241 +-0.00144285 +0.001469 +0.00178899 +-0.0014971 +0.00149655 +0.00170891 +-0.00149183 +0.00144017 +0.00177071 +-0.001506 +0.00141751 +0.00172219 +-0.00144018 +0.001466 +0.00178668 +-0.00141392 +0.00138573 +0.00181386 +-0.00140952 +0.00130344 +0.00181298 +-0.00138884 +0.0013671 +0.0018567 +-0.00142401 +0.00139247 +0.00177818 +-0.00140425 +0.00143699 +0.00183027 +-0.00145429 +0.00139656 +0.00176487 +-0.00149018 +0.00140357 +0.00168241 +-0.00150889 +0.00143908 +0.00175444 +-0.00153626 +0.00146456 +0.00171773 +-0.00146413 +0.00138389 +0.00169897 +-0.00144569 +0.00139409 +0.00176593 +-0.00139458 +0.00143601 +0.00182194 +-0.00134657 +0.00136178 +0.00185437 +-0.00137184 +0.00128659 +0.00189327 +-0.00136609 +0.00132078 +0.00195686 +-0.00141067 +0.00131047 +0.00197764 +-0.00149229 +0.00130913 +0.00198267 +-0.00157698 +0.00138247 +0.00202382 +-0.00156574 +0.00134133 +0.00195054 +-0.00155406 +0.00137703 +0.00200541 +-0.00150007 +0.00137301 +0.00207241 +-0.00144816 +0.00141374 +0.00204057 +-0.00151544 +0.00137309 +0.00207248 +-0.00158274 +0.00138714 +0.00202162 +-0.00164919 +0.00134774 +0.0020875 +-0.00168533 +0.00135078 +0.00207754 +-0.00160112 +0.00131606 +0.00204428 +-0.00153121 +0.00135842 +0.00198664 +-0.00148556 +0.00133545 +0.00198992 +-0.00140394 +0.00141402 +0.00197907 +-0.00137381 +0.00136353 +0.00194145 +-0.00143069 +0.00138108 +0.00190947 +-0.00135407 +0.00142796 +0.00192554 +-0.00142295 +0.00137067 +0.00187034 +-0.00145248 +0.00144919 +0.00188983 +-0.00142688 +0.00151788 +0.00184564 +-0.00144989 +0.00158938 +0.00186048 +-0.0014931 +0.00158837 +0.00181724 +-0.0014201 +0.00153097 +0.00183827 +-0.00147894 +0.00151094 +0.0019093 +-0.00143707 +0.00159225 +0.00193312 +-0.00143257 +0.00163622 +0.00193385 +-0.00136 +0.00163673 +0.00187718 +-0.00129684 +0.00170059 +0.00183628 +-0.00133491 +0.00171385 +0.00189137 +-0.00139807 +0.00176641 +0.00193708 +-0.00144653 +0.00170291 +0.00189389 +-0.00148263 +0.00176409 +0.00185439 +-0.00152619 +0.00182295 +0.00179343 +-0.00152166 +0.00174823 +0.00183102 +-0.00153593 +0.0017122 +0.00188441 +-0.00148068 +0.00164835 +0.00183078 +-0.00146493 +0.00165976 +0.00184499 +-0.0015478 +0.00161118 +0.00187529 +-0.00148518 +0.0016074 +0.00195493 +-0.00145615 +0.00165401 +0.00188499 +-0.0014678 +0.00158835 +0.0018339 +-0.00148452 +0.00159612 +0.00174941 +-0.00148338 +0.0016464 +0.0017697 +-0.00141811 +0.00158471 +0.00182781 +-0.00142241 +0.00154316 +0.00179934 +-0.00135412 +0.00150542 +0.00174364 +-0.00130242 +0.00151625 +0.00182169 +-0.00133391 +0.0015636 +0.00187664 +-0.00128988 +0.00163061 +0.00184299 +-0.00125018 +0.00169934 +0.00186636 +-0.00129412 +0.00170365 +0.00191969 +-0.00135998 +0.00178751 +0.00191135 +-0.0013699 +0.00179989 +0.00199265 +-0.00139084 +0.00171599 +0.0019836 +-0.00139974 +0.00176722 +0.0020038 +-0.00146429 +0.00176016 +0.00205513 +-0.00153149 +0.00169098 +0.00201144 +-0.001509 +0.00165042 +0.00193905 +-0.00149129 +0.00170295 +0.00187243 +-0.00148974 +0.00170883 +0.00182083 +-0.00142264 +0.00177035 +0.00187592 +-0.00140316 +0.00180749 +0.00186689 +-0.00132741 +0.00172581 +0.00184739 +-0.00133958 +0.00167636 +0.00179274 +-0.00138163 +0.00159743 +0.00178134 +-0.00135267 +0.00155413 +0.00170876 +-0.00136028 +0.0014908 +0.00168784 +-0.00130783 +0.00153548 +0.00172252 +-0.00137108 +0.00153751 +0.0016377 +-0.00137122 +0.00158491 +0.00170096 +-0.00140205 +0.00150711 +0.00166837 +-0.00139289 +0.00143099 +0.0016556 +-0.00142815 +0.00140371 +0.00167051 +-0.0013492 +0.00147473 +0.00171589 +-0.001359 +0.00139922 +0.00168 +-0.0013445 +0.00131439 +0.00167924 +-0.00134633 +0.00137667 +0.00173588 +-0.00135695 +0.00139 +0.00166962 +-0.00130565 +0.00144984 +0.0016104 +-0.00131621 +0.00152979 +0.00158452 +-0.00130442 +0.00158703 +0.00152337 +-0.00129087 +0.00156622 +0.00154097 +-0.00137123 +0.00150653 +0.00150982 +-0.00142287 +0.00156257 +0.00155134 +-0.00137454 +0.00164424 +0.0015495 +-0.00135158 +0.00162964 +0.00161876 +-0.00139839 +0.00169677 +0.00158556 +-0.00135849 +0.0016802 +0.00150592 +-0.00133436 +0.00176359 +0.00150022 +-0.00131973 +0.00176285 +0.00148501 +-0.00140321 +0.00184116 +0.00145285 +-0.00140898 +0.00181235 +0.00147702 +-0.00148505 +0.00187732 +0.00152498 +-0.00151113 +0.00190037 +0.00146852 +-0.00157014 +0.00184418 +0.00153062 +-0.00158379 +0.00191466 +0.00157774 +-0.00158729 +0.00195067 +0.00155917 +-0.00166185 +0.00201321 +0.00150193 +-0.00165849 +0.00209196 +0.00147324 +-0.00164522 +0.0020152 +0.00143708 +-0.00164622 +0.00203882 +0.00151562 +-0.00162445 +0.00198191 +0.00157199 +-0.00159644 +0.00203764 +0.00151494 +-0.00162543 +0.00211904 +0.00150908 +-0.00164866 +0.00215866 +0.00149778 +-0.00172283 +0.00213505 +0.00141786 +-0.00170689 +0.00210174 +0.00136012 +-0.00165439 +0.00215238 +0.00136335 +-0.00172239 +0.00214722 +0.00143646 +-0.00167964 +0.00221239 +0.00139072 +-0.00170897 +0.00215115 +0.00142869 +-0.00166415 +0.00218356 +0.00146719 +-0.00173247 +0.00218105 +0.00148833 +-0.00181461 +0.00212112 +0.00153199 +-0.00185587 +0.00210472 +0.00150851 +-0.00193575 +0.0021807 +0.00149732 +-0.00197183 +0.00220233 +0.00151441 +-0.00205208 +0.00221764 +0.00144276 +-0.00209489 +0.00225679 +0.0014532 +-0.00216945 +0.00219342 +0.00141366 +-0.00220971 +0.00212974 +0.00144828 +-0.00225382 +0.00215948 +0.00140165 +-0.00231817 +0.00219599 +0.00147763 +-0.0023278 +0.0021598 +0.00154863 +-0.00235693 +0.00223769 +0.00153018 +-0.0023851 +0.00218651 +0.00158569 +-0.00242383 +0.00223933 +0.00154483 +-0.00247619 +0.00222502 +0.00156247 +-0.00239443 +0.00219302 +0.00150492 +-0.00234091 +0.00212822 +0.00145814 +-0.00236944 +0.00221169 +0.00147176 +-0.00237632 +0.0022113 +0.00154616 +-0.00233554 +0.00221554 +0.00154185 +-0.0022509 +0.00227699 +0.00152535 +-0.00230705 +0.00226361 +0.00149801 +-0.00222784 +0.00221389 +0.00145329 +-0.00228007 +0.00215359 +0.00145954 +-0.00233944 +0.00209705 +0.0014351 +-0.00239779 +0.00207865 +0.00150167 +-0.00244709 +0.00200083 +0.00151778 +-0.00241735 +0.00202834 +0.00144309 +-0.00238792 +0.0020887 +0.00149859 +-0.00236609 +0.00212834 +0.00157057 +-0.00234491 +0.00209987 +0.00149842 +-0.00237932 +0.00204806 +0.00155445 +-0.00241642 +0.00209577 +0.00156824 +-0.00234761 +0.0021612 +0.00154932 +-0.00239821 +0.00220394 +0.00155909 +-0.00247086 +0.00223939 +0.0015857 +-0.00254321 +0.00216719 +0.00157666 +-0.00258688 +0.00222537 +0.00154602 +-0.00264052 +0.00230157 +0.00156929 +-0.00266971 +0.00235888 +0.001617 +-0.00262923 +0.00237887 +0.00169687 +-0.0026087 +0.0024152 +0.0016587 +-0.00267521 +0.00235261 +0.00160504 +-0.00269531 +0.00235209 +0.00152358 +-0.00271904 +0.00230519 +0.00156299 +-0.00271195 +0.00229801 +0.00153465 +-0.00263229 +0.0022149 +0.00151845 +-0.00263774 +0.00222068 +0.00152445 +-0.00272219 +0.002265 +0.00154405 +-0.00265253 +0.00219962 +0.00159675 +-0.00264035 +0.00214111 +0.0016168 +-0.00269844 +0.00215067 +0.00163968 +-0.00277958 +0.00213268 +0.0015645 +-0.00274459 +0.00220506 +0.00152082 +-0.00273735 +0.00227423 +0.00156986 +-0.00273413 +0.00233503 +0.00158748 +-0.00267763 +0.00237107 +0.00166388 +-0.00268559 +0.00239863 +0.00171442 +-0.00262325 +0.00233065 +0.00166495 +-0.00261174 +0.00231698 +0.00160776 +-0.00255056 +0.00232245 +0.00154429 +-0.00260662 +0.00236891 +0.00159588 +-0.0026554 +0.0024471 +0.0015872 +-0.00262359 +0.00251019 +0.00157068 +-0.00267788 +0.00244991 +0.00162164 +-0.00264672 +0.00248404 +0.0015925 +-0.00257471 +0.00248835 +0.00151117 +-0.00259852 +0.00243913 +0.0014935 +-0.0025317 +0.00236593 +0.00147454 +-0.00249321 +0.00241001 +0.00149092 +-0.00242259 +0.00249001 +0.00151797 +-0.00243087 +0.00248682 +0.00150081 +-0.00251391 +0.00252559 +0.00146038 +-0.00257764 +0.0024856 +0.00153409 +-0.00256466 +0.00252673 +0.00148347 +-0.00261893 +0.00259005 +0.00146451 +-0.00256572 +0.00262975 +0.00145916 +-0.00249092 +0.00255049 +0.00144553 +-0.00251796 +0.00247089 +0.00147179 +-0.00253116 +0.00250386 +0.00154281 +-0.00249846 +0.00254163 +0.00154527 +-0.00242252 +0.00248737 +0.00153746 +-0.00248728 +0.00251115 +0.00161682 +-0.00250563 +0.00247803 +0.00158376 +-0.00257641 +0.0024203 +0.00152388 +-0.0025932 +0.00239203 +0.00152705 +-0.00251326 +0.00231392 +0.00154076 +-0.00254346 +0.00223081 +0.00152388 +-0.00254621 +0.00230962 +0.00152148 +-0.00251485 +0.00230968 +0.0016021 +-0.00248838 +0.00229858 +0.0015794 +-0.00256939 +0.00222037 +0.00157568 +-0.00253671 +0.00222601 +0.00165837 +-0.00255492 +0.00218391 +0.00172814 +-0.00257854 +0.0022678 +0.00171771 +-0.00257126 +0.00224358 +0.00169131 +-0.00249434 +0.00217476 +0.00169326 +-0.00244475 +0.0021392 +0.00167732 +-0.00236937 +0.00208003 +0.00173717 +-0.00235859 +0.00205319 +0.00166296 +-0.00232739 +0.00209837 +0.00169202 +-0.00239307 +0.00210511 +0.00165569 +-0.00231669 +0.00216812 +0.00166435 +-0.00226052 +0.00213762 +0.00158785 +-0.00224009 +0.00207995 +0.00161803 +-0.00229453 +0.0021248 +0.00168944 +-0.00230393 +0.00217724 +0.00163952 +-0.00225968 +0.00224804 +0.00165881 +-0.00221706 +0.00231645 +0.00169675 +-0.00218421 +0.00237951 +0.00166602 +-0.00223195 +0.00245608 +0.00163431 +-0.00225014 +0.00241876 +0.00169218 +-0.00229972 +0.00241948 +0.0017078 +-0.00238312 +0.00244996 +0.00163819 +-0.00242089 +0.00249391 +0.00158534 +-0.00247063 +0.00253513 +0.00165948 +-0.00247272 +0.00251574 +0.00163952 +-0.00255288 +0.00247451 +0.00159915 +-0.00261508 +0.00253184 +0.00158674 +-0.00267639 +0.00249948 +0.00150902 +-0.00266578 +0.00241603 +0.00151598 +-0.00265206 +0.00235445 +0.00145787 +-0.00265761 +0.00230573 +0.0013889 +-0.00266598 +0.00226019 +0.00134638 +-0.00264569 +0.00231027 +0.00136456 +-0.00257966 +0.0022582 +0.00132333 +-0.00263245 +0.00229202 +0.00134086 +-0.00255663 +0.00232405 +0.00139609 +-0.00261253 +0.00231901 +0.00133679 +-0.00265411 +0.00232846 +0.00140651 +-0.00260666 +0.0023463 +0.00132358 +-0.0026091 +0.00226896 +0.0013579 +-0.00260268 +0.00221589 +0.00130744 +-0.00264554 +0.0021634 +0.00127662 +-0.0026081 +0.00208866 +0.00124206 +-0.00258765 +0.00216361 +0.00122459 +-0.00259749 +0.0020836 +0.00123414 +-0.00260149 +0.00204627 +0.00125165 +-0.00252733 +0.00209248 +0.0012777 +-0.0024611 +0.00206841 +0.00134447 +-0.0025076 +0.00213375 +0.00130454 +-0.00247104 +0.00208002 +0.00131675 +-0.00253558 +0.00211741 +0.00132953 +-0.00246048 +0.00218223 +0.00136888 +-0.00242239 +0.00210362 +0.00138091 +-0.00245199 +0.00212704 +0.00130524 +-0.00248241 +0.00219798 +0.00134464 +-0.00245763 +0.00212301 +0.00134102 +-0.00241805 +0.00206028 +0.00129074 +-0.0023909 +0.00214033 +0.00131815 +-0.00239729 +0.00219511 +0.00125565 +-0.00241441 +0.00211121 +0.0012571 +-0.00242701 +0.00203008 +0.00123355 +-0.00243493 +0.00195523 +0.0012032 +-0.00246092 +0.00196215 +0.00122533 +-0.0023793 +0.00190274 +0.00123912 +-0.0024383 +0.00196367 +0.00121173 +-0.00249062 +0.0019091 +0.00116286 +-0.00253345 +0.00192757 +0.00123571 +-0.00256982 +0.00198477 +0.00129768 +-0.00257919 +0.00197475 +0.00138077 +-0.00256515 +0.00204278 +0.00134706 +-0.00260305 +0.00201553 +0.00131351 +-0.00253003 +0.00206087 +0.00133558 +-0.00259827 +0.00206628 +0.00142026 +-0.00259781 +0.00205702 +0.00134947 +-0.00255195 +0.00209271 +0.00141654 +-0.00258974 +0.00204636 +0.00146034 +-0.00253376 +0.00205379 +0.00139015 +-0.00258086 +0.00197651 +0.00142517 +-0.00258057 +0.00198017 +0.00143365 +-0.00249622 +0.00202421 +0.00140183 +-0.00243105 +0.00200879 +0.0013312 +-0.00247546 +0.00199925 +0.00139925 +-0.00242569 +0.00205818 +0.00144413 +-0.00238428 +0.00206354 +0.00140489 +-0.00230923 +0.00203348 +0.00145737 +-0.00236875 +0.00205118 +0.00137469 +-0.00237584 +0.00211719 +0.00135907 +-0.00242682 +0.00215047 +0.00133339 +-0.00250053 +0.00222343 +0.00136384 +-0.00246972 +0.00214595 +0.00137918 +-0.00250073 +0.00211507 +0.00131703 +-0.00245192 +0.00204044 +0.0012796 +-0.00246708 +0.00210521 +0.00122588 +-0.00247798 +0.0021168 +0.00120055 +-0.00255813 +0.0021347 +0.00128297 +-0.00254883 +0.00210788 +0.00125144 +-0.0026229 +0.00203761 +0.00129739 +-0.00263518 +0.002083 +0.00123933 +-0.00259312 +0.0020932 +0.00131705 +-0.00262562 +0.00205556 +0.00137165 +-0.00267855 +0.00207613 +0.00145112 +-0.00265705 +0.00211242 +0.00152508 +-0.00263674 +0.00205998 +0.00156836 +-0.00258598 +0.00208218 +0.00151739 +-0.00265008 +0.00210172 +0.00146139 +-0.00258939 +0.00202979 +0.00144036 +-0.00254959 +0.002082 +0.00141897 +-0.00248621 +0.00208785 +0.00138075 +-0.00241068 +0.00211059 +0.00143658 +-0.00235097 +0.00211046 +0.00147931 +-0.00227766 +0.00212956 +0.00151921 +-0.00220525 +0.0020966 +0.00159737 +-0.00220304 +0.00209662 +0.00152545 +-0.002158 +0.0020174 +0.00154946 +-0.00213939 +0.00195094 +0.00160165 +-0.00214719 +0.00196496 +0.00155577 +-0.0020772 +0.00189173 +0.00158985 +-0.00205119 +0.00191237 +0.00151079 +-0.00207408 +0.00195492 +0.00144179 +-0.00204899 +0.00196263 +0.00135962 +-0.00206871 +0.00202796 +0.00134533 +-0.00201648 +0.00203328 +0.00126441 +-0.00204144 +0.00197257 +0.00126534 +-0.00210072 +0.00195782 +0.00126732 +-0.00218426 +0.00192351 +0.00119623 +-0.00215313 +0.00190912 +0.00118975 +-0.00223651 +0.00186868 +0.00112524 +-0.00219904 +0.00180181 +0.00117226 +-0.00222181 +0.00183518 +0.00109428 +-0.00221936 +0.00183999 +0.00103964 +-0.00215462 +0.00180117 +0.000974693 +-0.00219302 +0.00178895 +0.000988498 +-0.00211019 +0.00182538 +0.00104457 +-0.00205795 +0.00180173 +0.00103179 +-0.00213843 +0.00182951 +0.000979433 +-0.00207771 +0.00184524 +0.000999953 +-0.00215853 +0.00190486 +0.00105942 +-0.00216895 +0.00183076 +0.00103796 +-0.00220428 +0.00185237 +0.00103575 +-0.00212226 +0.00188431 +0.00105164 +-0.00204527 +0.00185806 +0.001119 +-0.00200085 +0.00187094 +0.00114381 +-0.00208097 +0.0018529 +0.00122286 +-0.00205596 +0.00191688 +0.00126639 +-0.00202114 +0.00190832 +0.00121862 +-0.00209075 +0.00193767 +0.00114309 +-0.00211591 +0.0018532 +0.00114195 +-0.00210793 +0.00184689 +0.00113028 +-0.00219174 +0.00184379 +0.00121472 +-0.00218396 +0.0018652 +0.00115262 +-0.00213025 +0.00194472 +0.00112417 +-0.00213848 +0.00192924 +0.00104146 +-0.00212759 +0.00195305 +0.000962091 +-0.00210932 +0.00188573 +0.00101281 +-0.00209954 +0.00187499 +0.000928644 +-0.00210032 +0.00179293 +0.000933131 +-0.00210885 +0.00187196 +0.000942137 +-0.0020793 +0.00187968 +0.000910435 +-0.00202707 +0.00194389 +0.000937726 +-0.00207537 +0.00201518 +0.000982615 +-0.00208545 +0.00194517 +0.00102874 +-0.00209848 +0.00202575 +0.00102934 +-0.00207192 +0.00201084 +0.00110253 +-0.00211218 +0.00205756 +0.00103912 +-0.00214373 +0.00199735 +0.00109295 +-0.00216974 +0.0020326 +0.00109615 +-0.00224686 +0.00197585 +0.0010607 +-0.00229904 +0.00197968 +0.00111292 +-0.00223227 +0.00191084 +0.00111478 +-0.00228184 +0.00187993 +0.00118816 +-0.00231117 +0.0019016 +0.00121903 +-0.00238717 +0.00189773 +0.00127617 +-0.00232457 +0.00183619 +0.00130131 +-0.00227183 +0.00184216 +0.00133206 +-0.00235069 +0.00191555 +0.00131367 +-0.00231228 +0.00190652 +0.00135398 +-0.0023864 +0.00187354 +0.00142909 +-0.0023647 +0.00180336 +0.0014326 +-0.00231714 +0.00187989 +0.00146818 +-0.0023084 +0.00189302 +0.00152289 +-0.00237191 +0.00196809 +0.00148334 +-0.0023721 +0.00203142 +0.00146902 +-0.00231747 +0.00198184 +0.00145188 +-0.00238416 +0.0019297 +0.00151172 +-0.00235413 +0.00200704 +0.00148948 +-0.00232724 +0.0019332 +0.00152702 +-0.00234562 +0.00191893 +0.00159057 +-0.00240001 +0.00192156 +0.00150588 +-0.00240446 +0.0020041 +0.00152552 +-0.00240304 +0.00207713 +0.00151442 +-0.00244479 +0.00213514 +0.00155937 +-0.0024022 +0.00221527 +0.00156723 +-0.00237542 +0.00226929 +0.00155811 +-0.00231062 +0.00230503 +0.00159061 +-0.00238038 +0.00235425 +0.00165405 +-0.00235293 +0.00228327 +0.00166085 +-0.00230693 +0.00227539 +0.00162304 +-0.00223137 +0.00219243 +0.00161353 +-0.00221634 +0.002205 +0.00159112 +-0.00213548 +0.00218548 +0.00153368 +-0.00207615 +0.00214988 +0.00158206 +-0.00201622 +0.00217531 +0.0016242 +-0.00194709 +0.00211996 +0.00157214 +-0.00198486 +0.00211356 +0.0016506 +-0.00201654 +0.00203756 +0.00167265 +-0.00198592 +0.00204839 +0.00167354 +-0.00190176 +0.00198281 +0.00165265 +-0.00185214 +0.00198623 +0.00166563 +-0.00176836 +0.0020464 +0.00166676 +-0.00182817 +0.00204776 +0.0016066 +-0.00188799 +0.00196372 +0.00161026 +-0.00187685 +0.00193062 +0.00155117 +-0.00182573 +0.00201276 +0.00155855 +-0.00180574 +0.0019875 +0.00149452 +-0.00175612 +0.00198994 +0.00157111 +-0.00171967 +0.00190973 +0.00155276 +-0.00169893 +0.00199249 +0.00157043 +-0.00169265 +0.00202231 +0.00149731 +-0.00172372 +0.00205551 +0.00156035 +-0.00167763 +0.00209733 +0.00162162 +-0.00171881 +0.00209928 +0.00156499 +-0.00178198 +0.00210284 +0.0016381 +-0.00173904 +0.00214527 +0.00163454 +-0.00181244 +0.00209359 +0.00168857 +-0.00177233 +0.00207544 +0.00160915 +-0.00174862 +0.00208691 +0.00154745 +-0.00169151 +0.00212097 +0.00148599 +-0.00164395 +0.0022057 +0.00148925 +-0.00164735 +0.00213202 +0.00153024 +-0.00165692 +0.00205009 +0.00154821 +-0.00166973 +0.002038 +0.00161942 +-0.0016252 +0.00196715 +0.00157975 +-0.00160058 +0.00193303 +0.0015294 +-0.00165975 +0.00200368 +0.00150645 +-0.00161873 +0.00197461 +0.00152111 +-0.00154036 +0.00203126 +0.00157659 +-0.00157059 +0.00198813 +0.00162149 +-0.00151293 +0.0019851 +0.00154228 +-0.00148266 +0.00204908 +0.00158494 +-0.0014468 +0.0020871 +0.00165234 +-0.00141199 +0.00202002 +0.00169858 +-0.00143568 +0.00200939 +0.00169052 +-0.00151948 +0.0020126 +0.00177529 +-0.00152158 +0.0019453 +0.00172366 +-0.00151936 +0.00199847 +0.00177236 +-0.00147463 +0.00191582 +0.00179157 +-0.00147525 +0.00192573 +0.00171694 +-0.00143612 +0.00200282 +0.00175236 +-0.00143482 +0.00199819 +0.00172985 +-0.00135314 +0.00206792 +0.00177709 +-0.00134283 +0.00212624 +0.0018156 +-0.00129472 +0.00218273 +0.0017722 +-0.00124861 +0.00221939 +0.00182225 +-0.00130649 +0.00223866 +0.00179438 +-0.0012287 +0.00228386 +0.00179082 +-0.00115698 +0.0022215 +0.00174458 +-0.00112271 +0.00220954 +0.00169415 +-0.00118989 +0.00224156 +0.00165613 +-0.00125866 +0.00230391 +0.00165431 +-0.00131619 +0.00234097 +0.00157859 +-0.00130658 +0.00230324 +0.00164766 +-0.00127486 +0.00231502 +0.00161207 +-0.00119874 +0.00237849 +0.00166495 +-0.00121812 +0.00232125 +0.00167643 +-0.00127969 +0.00226486 +0.0016246 +-0.00124318 +0.00221228 +0.00160863 +-0.00117852 +0.00220623 +0.00168361 +-0.00113927 +0.0021639 +0.00161038 +-0.00113264 +0.0021875 +0.0016265 +-0.00105275 +0.00217021 +0.00154919 +-0.00102238 +0.00221521 +0.00153539 +-0.00109298 +0.00217037 +0.00151257 +-0.00102465 +0.00223238 +0.0014733 +-0.00098209 +0.00226471 +0.00153995 +-0.00102348 +0.00234748 +0.00155 +-0.00103924 +0.00239849 +0.00154708 +-0.000971497 +0.00232784 +0.00150543 +-0.000949723 +0.00233479 +0.00152923 +-0.000934966 +0.00241688 +0.00152117 +-0.000925899 diff --git a/instructions/demos/output/haexagona_packed_spheres_DWI.txt b/instructions/demos/output/haexagona_packed_spheres_DWI.txt new file mode 100644 index 0000000..45c3ebe --- /dev/null +++ b/instructions/demos/output/haexagona_packed_spheres_DWI.txt @@ -0,0 +1,270 @@ +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 +800 diff --git a/instructions/demos/output/haexagona_packed_spheres_rep_00_simulation_info.txt b/instructions/demos/output/haexagona_packed_spheres_rep_00_simulation_info.txt new file mode 100644 index 0000000..6b38b5d --- /dev/null +++ b/instructions/demos/output/haexagona_packed_spheres_rep_00_simulation_info.txt @@ -0,0 +1,29 @@ +/*********************** MC/DC Simulation Info: *************************/ +[INFO] Software Version: ---------------------------------1.44.004 +[INFO] Number of particles: --------------------------------------800 +[INFO] Number of steps: -------------------------------------1000 +[INFO] Number of cores: ----------------------------------------1 +[INFO] Diffusivity: ------------------------0.060000e-9 m^2/s +[INFO] Particle dynamics duration: ----------------------- 20.000000 ms +[INFO] PLY obstacles: ------------------------------------ true +[INFO] Number of PLYs: ----------------------------------------1 +[INFO] Cylinder obstacles: ----------------------------------- false +[INFO] Write trajfile: ------------------------------------ true +[INFO] Write to binary: ----------------------------------- false +[INFO] Write to txt: ------------------------------------ true +[INFO] Separated signals ----------------------------------- false +[INFO] Standard units: ------------------------------------ true +[INFO] Permeability: ----------------------------------- false +[INFO] Custom seed: ----------------------------------- false +[INFO] Write phase shift histogram: ----------------------------- false +[INFO] Write propagator file: ----------------------------------- false +[INFO] Walker initial position file: ---------------------------- false +[INFO] Save fixed walker positions: ----------------------------- false +[INFO] Initial delta position: ---------------------------------- false +[INFO] Walkers initial position: -------------------------------- intra +[INFO] Number of voxels: --------------------------------------- 1 +[INFO] Border Patrol -------------------------------------- On +[INFO] Discard stuck spins -------------------------------------- On +[INFO] Scheme file name: --------------- PGSE_sample_scheme.scheme +[INFO] Date and Time: ------------------- 04-02-2021 (19:34:13) + diff --git a/instructions/demos/output/haexagona_packed_spheres_rep_01_simulation_info.txt b/instructions/demos/output/haexagona_packed_spheres_rep_01_simulation_info.txt new file mode 100644 index 0000000..a1c2b1f --- /dev/null +++ b/instructions/demos/output/haexagona_packed_spheres_rep_01_simulation_info.txt @@ -0,0 +1,29 @@ +/*********************** MC/DC Simulation Info: *************************/ +[INFO] Software Version: ---------------------------------1.44.004 +[INFO] Number of particles: --------------------------------------800 +[INFO] Number of steps: -------------------------------------1000 +[INFO] Number of cores: ----------------------------------------1 +[INFO] Diffusivity: ------------------------0.060000e-9 m^2/s +[INFO] Particle dynamics duration: ----------------------- 20.000000 ms +[INFO] PLY obstacles: ------------------------------------ true +[INFO] Number of PLYs: ----------------------------------------1 +[INFO] Cylinder obstacles: ----------------------------------- false +[INFO] Write trajfile: ------------------------------------ true +[INFO] Write to binary: ----------------------------------- false +[INFO] Write to txt: ------------------------------------ true +[INFO] Separated signals ----------------------------------- false +[INFO] Standard units: ------------------------------------ true +[INFO] Permeability: ----------------------------------- false +[INFO] Custom seed: ----------------------------------- false +[INFO] Write phase shift histogram: ----------------------------- false +[INFO] Write propagator file: ----------------------------------- false +[INFO] Walker initial position file: ---------------------------- false +[INFO] Save fixed walker positions: ----------------------------- false +[INFO] Initial delta position: ---------------------------------- false +[INFO] Walkers initial position: -------------------------------- intra +[INFO] Number of voxels: --------------------------------------- 1 +[INFO] Border Patrol -------------------------------------- On +[INFO] Discard stuck spins -------------------------------------- On +[INFO] Scheme file name: --------------- PGSE_sample_scheme.scheme +[INFO] Date and Time: ------------------- 04-02-2021 (19:34:32) + diff --git a/instructions/demos/output/haexagona_packed_spheres_rep_02_simulation_info.txt b/instructions/demos/output/haexagona_packed_spheres_rep_02_simulation_info.txt new file mode 100644 index 0000000..71bd70a --- /dev/null +++ b/instructions/demos/output/haexagona_packed_spheres_rep_02_simulation_info.txt @@ -0,0 +1,29 @@ +/*********************** MC/DC Simulation Info: *************************/ +[INFO] Software Version: ---------------------------------1.44.004 +[INFO] Number of particles: --------------------------------------800 +[INFO] Number of steps: -------------------------------------1000 +[INFO] Number of cores: ----------------------------------------1 +[INFO] Diffusivity: ------------------------0.060000e-9 m^2/s +[INFO] Particle dynamics duration: ----------------------- 20.000000 ms +[INFO] PLY obstacles: ------------------------------------ true +[INFO] Number of PLYs: ----------------------------------------1 +[INFO] Cylinder obstacles: ----------------------------------- false +[INFO] Write trajfile: ------------------------------------ true +[INFO] Write to binary: ----------------------------------- false +[INFO] Write to txt: ------------------------------------ true +[INFO] Separated signals ----------------------------------- false +[INFO] Standard units: ------------------------------------ true +[INFO] Permeability: ----------------------------------- false +[INFO] Custom seed: ----------------------------------- false +[INFO] Write phase shift histogram: ----------------------------- false +[INFO] Write propagator file: ----------------------------------- false +[INFO] Walker initial position file: ---------------------------- false +[INFO] Save fixed walker positions: ----------------------------- false +[INFO] Initial delta position: ---------------------------------- false +[INFO] Walkers initial position: -------------------------------- intra +[INFO] Number of voxels: --------------------------------------- 1 +[INFO] Border Patrol -------------------------------------- On +[INFO] Discard stuck spins -------------------------------------- On +[INFO] Scheme file name: --------------- PGSE_sample_scheme.scheme +[INFO] Date and Time: ------------------- 04-02-2021 (19:35:27) + diff --git a/instructions/demos/output/haexagona_packed_spheres_rep_03_simulation_info.txt b/instructions/demos/output/haexagona_packed_spheres_rep_03_simulation_info.txt new file mode 100644 index 0000000..7f67278 --- /dev/null +++ b/instructions/demos/output/haexagona_packed_spheres_rep_03_simulation_info.txt @@ -0,0 +1,29 @@ +/*********************** MC/DC Simulation Info: *************************/ +[INFO] Software Version: ---------------------------------1.44.004 +[INFO] Number of particles: --------------------------------------800 +[INFO] Number of steps: -------------------------------------1000 +[INFO] Number of cores: ----------------------------------------1 +[INFO] Diffusivity: ------------------------0.060000e-9 m^2/s +[INFO] Particle dynamics duration: ----------------------- 20.000000 ms +[INFO] PLY obstacles: ------------------------------------ true +[INFO] Number of PLYs: ----------------------------------------1 +[INFO] Cylinder obstacles: ----------------------------------- false +[INFO] Write trajfile: ------------------------------------ true +[INFO] Write to binary: ----------------------------------- false +[INFO] Write to txt: ------------------------------------ true +[INFO] Separated signals ----------------------------------- false +[INFO] Standard units: ------------------------------------ true +[INFO] Permeability: ----------------------------------- false +[INFO] Custom seed: ----------------------------------- false +[INFO] Write phase shift histogram: ----------------------------- false +[INFO] Write propagator file: ----------------------------------- false +[INFO] Walker initial position file: ---------------------------- false +[INFO] Save fixed walker positions: ----------------------------- false +[INFO] Initial delta position: ---------------------------------- false +[INFO] Walkers initial position: -------------------------------- intra +[INFO] Number of voxels: --------------------------------------- 1 +[INFO] Border Patrol -------------------------------------- On +[INFO] Discard stuck spins -------------------------------------- On +[INFO] Scheme file name: --------------- PGSE_sample_scheme.scheme +[INFO] Date and Time: ------------------- 04-02-2021 (19:38:08) + diff --git a/instructions/demos/output/haexagona_packed_spheres_rep_04_simulation_info.txt b/instructions/demos/output/haexagona_packed_spheres_rep_04_simulation_info.txt new file mode 100644 index 0000000..1116ea8 --- /dev/null +++ b/instructions/demos/output/haexagona_packed_spheres_rep_04_simulation_info.txt @@ -0,0 +1,29 @@ +/*********************** MC/DC Simulation Info: *************************/ +[INFO] Software Version: ---------------------------------1.44.004 +[INFO] Number of particles: --------------------------------------800 +[INFO] Number of steps: -------------------------------------1000 +[INFO] Number of cores: ----------------------------------------1 +[INFO] Diffusivity: ------------------------0.060000e-9 m^2/s +[INFO] Particle dynamics duration: ----------------------- 20.000000 ms +[INFO] PLY obstacles: ------------------------------------ true +[INFO] Number of PLYs: ----------------------------------------1 +[INFO] Cylinder obstacles: ----------------------------------- false +[INFO] Write trajfile: ------------------------------------ true +[INFO] Write to binary: ----------------------------------- false +[INFO] Write to txt: ------------------------------------ true +[INFO] Separated signals ----------------------------------- false +[INFO] Standard units: ------------------------------------ true +[INFO] Permeability: ----------------------------------- false +[INFO] Custom seed: ----------------------------------- false +[INFO] Write phase shift histogram: ----------------------------- false +[INFO] Write propagator file: ----------------------------------- false +[INFO] Walker initial position file: ---------------------------- false +[INFO] Save fixed walker positions: ----------------------------- false +[INFO] Initial delta position: ---------------------------------- false +[INFO] Walkers initial position: -------------------------------- intra +[INFO] Number of voxels: --------------------------------------- 1 +[INFO] Border Patrol -------------------------------------- On +[INFO] Discard stuck spins -------------------------------------- On +[INFO] Scheme file name: --------------- PGSE_sample_scheme.scheme +[INFO] Date and Time: ------------------- 04-02-2021 (20:57:02) + diff --git a/instructions/demos/output/haexagona_packed_spheres_simulation_info.txt b/instructions/demos/output/haexagona_packed_spheres_simulation_info.txt new file mode 100644 index 0000000..ad5cdbf --- /dev/null +++ b/instructions/demos/output/haexagona_packed_spheres_simulation_info.txt @@ -0,0 +1,36 @@ +/*********************** MC/DC Simulation Info: *************************/ +[INFO] Software Version: ---------------------------------1.44.004 +[INFO] Number of particles: --------------------------------------800 +[INFO] Number of steps: -------------------------------------1000 +[INFO] Number of cores: ----------------------------------------1 +[INFO] Diffusivity: ------------------------0.060000e-9 m^2/s +[INFO] Particle dynamics duration: ----------------------- 20.000000 ms +[INFO] PLY obstacles: ------------------------------------ true +[INFO] Number of PLYs: ----------------------------------------1 +[INFO] Cylinder obstacles: ----------------------------------- false +[INFO] Write trajfile: ------------------------------------ true +[INFO] Write to binary: ----------------------------------- false +[INFO] Write to txt: ------------------------------------ true +[INFO] Separated signals ----------------------------------- false +[INFO] Standard units: ------------------------------------ true +[INFO] Permeability: ----------------------------------- false +[INFO] Custom seed: ----------------------------------- false +[INFO] Write phase shift histogram: ----------------------------- false +[INFO] Write propagator file: ----------------------------------- false +[INFO] Walker initial position file: ---------------------------- false +[INFO] Save fixed walker positions: ----------------------------- false +[INFO] Initial delta position: ---------------------------------- false +[INFO] Walkers initial position: -------------------------------- intra +[INFO] Number of voxels: --------------------------------------- 1 +[INFO] Border Patrol -------------------------------------- On +[INFO] Discard stuck spins -------------------------------------- On +[INFO] Scheme file name: --------------- PGSE_sample_scheme.scheme +[INFO] Date and Time: ------------------- 26-01-2021 (20:43:50) + +[INFO] All 1 simulations ended after: 11 seconds in average +[INFO] Number of particles labeled as stuck: 0 +[INFO] Number of particles eliminated due crossings: 0 +[INFO] Mean simulation speed: 72727 steps/second +[INFO] Voxel limits: +( -0.00105 -0.00181865 -0.00363731 ) +( 0.00315 0.00545596 0.00363731 ) diff --git a/src/Makefile b/src/Makefile index 93be4cd..dc5bf6b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -1,2 +1,2 @@ MC-DC_Simulator: - g++ -O3 -std=c++11 -lpthread -std=c++0x -pthread -w -I. main.cpp simulablesequence.cpp vertex.cpp obstacle.cpp collision.cpp scheme.cpp voxel.cpp cylinder.cpp walker.cpp mcsimulation.cpp parallelmcsimulation.cpp trajectory.cpp triangle.cpp parameters.cpp plyobstacle.cpp pgsesequence.cpp dynamicsSimulation.cpp simerrno.cpp collisionsphere.cpp cylindergammadistribution.cpp sentinel.cpp subdivision.cpp gradientwaveform.cpp propagator.cpp -o ../MC-CD_Simulator + g++ -O3 -std=c++11 -lpthread -std=c++0x -pthread -w -I. main.cpp simulablesequence.cpp vertex.cpp obstacle.cpp collision.cpp scheme.cpp voxel.cpp cylinder.cpp walker.cpp mcsimulation.cpp parallelmcsimulation.cpp trajectory.cpp triangle.cpp parameters.cpp plyobstacle.cpp pgsesequence.cpp dynamicsSimulation.cpp simerrno.cpp collisionsphere.cpp cylindergammadistribution.cpp sentinel.cpp subdivision.cpp gradientwaveform.cpp propagator.cpp sphere.cpp sphere.h spheregammadistribution.cpp spheregammadistribution.h -o ../MC-DC_Simulator diff --git a/src/collisionsphere.cpp b/src/collisionsphere.cpp index a2c1cd2..3645d00 100644 --- a/src/collisionsphere.cpp +++ b/src/collisionsphere.cpp @@ -4,11 +4,11 @@ /******************************************* Cylinder Sphere Collision Implementation ***********************************************/ -CylinderCollisionSphere::CylinderCollisionSphere():small_sphere_list_end(0),big_sphere_list_end(0) +ObstacleCollisionSphere::ObstacleCollisionSphere():small_sphere_list_end(0),big_sphere_list_end(0) { } -void CylinderCollisionSphere::pushToSmallSphere(unsigned i) +void ObstacleCollisionSphere::pushToSmallSphere(unsigned i) { //If i is already inside the "good" side we do nothing if(i < small_sphere_list_end || small_sphere_list_end == collision_list->size()){ @@ -25,7 +25,7 @@ void CylinderCollisionSphere::pushToSmallSphere(unsigned i) big_sphere_list_end = small_sphere_list_end; } -void CylinderCollisionSphere::pushToBigSphere(unsigned i) +void ObstacleCollisionSphere::pushToBigSphere(unsigned i) { //If i is already on the "other" side we do nothing if(i < big_sphere_list_end || big_sphere_list_end == collision_list->size()){ @@ -40,7 +40,7 @@ void CylinderCollisionSphere::pushToBigSphere(unsigned i) } -void CylinderCollisionSphere::popFromSmallSphere(unsigned i) +void ObstacleCollisionSphere::popFromSmallSphere(unsigned i) { //If i is already on the "other" side we do nothing if(i >= small_sphere_list_end || small_sphere_list_end == 0){ @@ -53,7 +53,7 @@ void CylinderCollisionSphere::popFromSmallSphere(unsigned i) small_sphere_list_end--; } -void CylinderCollisionSphere::popFromBigSphere(unsigned i) +void ObstacleCollisionSphere::popFromBigSphere(unsigned i) { //If i is already on the "other" side we do nothing if(i >= big_sphere_list_end || big_sphere_list_end == 0){ @@ -71,15 +71,15 @@ void CylinderCollisionSphere::popFromBigSphere(unsigned i) } -void CylinderCollisionSphere::setBigSphereSize(float size){ +void ObstacleCollisionSphere::setBigSphereSize(float size){ big_sphere_distance = size; } -void CylinderCollisionSphere::setSmallSphereSize(float size){ +void ObstacleCollisionSphere::setSmallSphereSize(float size){ small_sphere_distance = size; } -void CylinderCollisionSphere::push_index(unsigned int element) +void ObstacleCollisionSphere::push_index(unsigned int element) { collision_list->push_back(element); list_size++; diff --git a/src/collisionsphere.h b/src/collisionsphere.h index acd147f..0824802 100644 --- a/src/collisionsphere.h +++ b/src/collisionsphere.h @@ -35,7 +35,7 @@ class Collisionsphere /*! \class CylinderCollisionSphere * \brief Class to save the cylinderical obstacles that a can collide to a walker. */ -class CylinderCollisionSphere: public Collisionsphere{ +class ObstacleCollisionSphere: public Collisionsphere{ public: @@ -44,7 +44,7 @@ class CylinderCollisionSphere: public Collisionsphere{ std::vector* collision_list; /*! ::infinity(); /*!< numerical infinity value */ +#ifdef _WIN64 +typedef unsigned int ulong; +typedef unsigned int uint; +#ifndef M_PI + #define M_PI 3.14159265358979323846 +#endif +#elif __APPLE__ +typedef unsigned int ulong; +#endif + /*!< Colision optimization parameters */ #define PRECISE_T_MIN_D 0 diff --git a/src/cylinder.cpp b/src/cylinder.cpp index 92ed50a..adccb97 100644 --- a/src/cylinder.cpp +++ b/src/cylinder.cpp @@ -1,6 +1,6 @@ #include "cylinder.h" #include "constants.h" -#include +#include "Eigen/Dense" #include using namespace Eigen; @@ -13,7 +13,7 @@ Cylinder::Cylinder() Cylinder::~Cylinder() { - id = count--; + count--; } Cylinder::Cylinder(const Cylinder &cyl) @@ -170,10 +170,12 @@ double Cylinder::minDistance(Walker &w){ w.getVoxelPosition(O); Vector3d m = O - P; // minimum distance to the cylinder axis. - double distance_to_cilinder = (D.cross(-m)).norm(); + double distance_to_cylinder = (D.cross(-m)).norm(); //Minimum distance to the cylinders wall. - double d_ = (distance_to_cilinder - radius); - return d_>0.0?d_:0.0; - + double d_ = (distance_to_cylinder - radius); + // return d_>0.0?d_:0.0; + return d_; } + + diff --git a/src/cylindergammadistribution.cpp b/src/cylindergammadistribution.cpp index 6221ce9..443a93d 100644 --- a/src/cylindergammadistribution.cpp +++ b/src/cylindergammadistribution.cpp @@ -1,19 +1,21 @@ #include "cylindergammadistribution.h" #include // std::sort #include +#include "simerrno.h" using namespace std; using namespace Eigen; -CylinderGammaDistribution::CylinderGammaDistribution(unsigned num_cyl, double a, double b,double icvf_,Eigen::Vector3d & min_l, Eigen::Vector3d &max_l) +CylinderGammaDistribution::CylinderGammaDistribution(unsigned num_cyl, double a, double b,double icvf_,Eigen::Vector3d & min_l, Eigen::Vector3d &max_l, float min_radius) { - num_cylinders = num_cyl; + num_obstacles = num_cyl; alpha = a; beta = b; icvf = icvf_; min_limits = min_l; max_limits = max_l; cylinders.clear(); + this->min_radius = min_radius; } void CylinderGammaDistribution::computeMinimalSize(std::vector radiis, double icvf_,Eigen::Vector3d& l){ @@ -48,6 +50,7 @@ void CylinderGammaDistribution::displayGammaDistribution() for (int i=0; i udist(0,1); - std::vector radiis(num_cylinders,0); + std::vector radiis(num_obstacles,0); bool achieved = false; - for (unsigned i=0; i< num_cylinders; ++i) { - radiis[i] = distribution(generator)*1e-3; + + int tried = 0; + + for (unsigned i=0; i< num_obstacles; ++i) { + + if(tried > 10000){ + string message = " Radii distribution cannot be sampled [Min. radius Error]\n"; + SimErrno::error(message,cout); + assert(0); + } + double jkr = distribution(generator); + + if(jkr< this->min_radius){ + i--; + tried++; + continue; + } + tried=0; + + radiis[i] = jkr*1e-3; //WE CONVERT FROM UM TO MM HERE } // using a lambda function: @@ -103,7 +124,7 @@ void CylinderGammaDistribution::createGammaSubstrate() vector cylinders_to_add; cylinders.clear(); - for(unsigned i = 0 ; i < num_cylinders; i++){ + for(unsigned i = 0 ; i < num_obstacles; i++){ unsigned stuck = 0; while(++stuck <= 1000){ @@ -145,7 +166,7 @@ void CylinderGammaDistribution::createGammaSubstrate() break; } } - cylinders.clear();; + cylinders.clear(); adjustments++; cout << best_icvf << endl; if(adjustments > max_adjustments){ @@ -159,8 +180,11 @@ void CylinderGammaDistribution::createGammaSubstrate() //TODO cambiar a INFO int perc_; double icvf_current = computeICVF(cylinders,min_limits, max_limits,perc_); - cout << "Percentage of cylinders selected: "+ to_string(double(perc_)/radiis.size()*100.0) - + "%,\nICVF achieved: " + to_string(icvf_current*100) + " ("+ to_string( int((icvf_current/icvf*100))) + "% of the desired icvf)\n" << endl; + + string message = "Percentage of cylinders selected: "+ to_string(double(perc_)/radiis.size()*100.0) + + "%,\nICVF achieved: " + to_string(icvf_current*100) + " ("+ to_string( int((icvf_current/icvf*100))) + "% of the desired icvf)\n"; + SimErrno::info(message,cout); + } void CylinderGammaDistribution::printSubstrate(ostream &out) @@ -170,7 +194,7 @@ void CylinderGammaDistribution::printSubstrate(ostream &out) out << cylinders[i].P[0]*1e3 << " " << cylinders[i].P[1]*1e3 << " " << cylinders[i].P[2]*1e3 << " " << cylinders[i].Q[0]*1e3 << " " << cylinders[i].Q[1]*1e3 << " " << cylinders[i].Q[2]*1e3 << " " - << cylinders[i].radius*1e3 << endl;; + << cylinders[i].radius*1e3 << endl; } } diff --git a/src/cylindergammadistribution.h b/src/cylindergammadistribution.h index 0cb16ad..4384645 100644 --- a/src/cylindergammadistribution.h +++ b/src/cylindergammadistribution.h @@ -21,15 +21,26 @@ class CylinderGammaDistribution { public: - unsigned num_cylinders; /*!< number of cylnders fit inside the substrate */ + unsigned num_obstacles; /*!< number of cylnders fit inside the substrate */ double alpha; /*!< alpha coefficient of the Gamma distribution */ double beta; /*!< beta coefficient of the gamma distribution */ double icvf; /*!< Achieved intra-celular volum fraction in the substrate */ + float min_radius; /*!< Minimum radius to be sampled from the gamma distribution */ Eigen::Vector3d min_limits; /*!< voxel min limits (if any) (bottom left corner) */ Eigen::Vector3d max_limits; /*!< voxel max limits (if any) */ std::vector cylinders; /*!< Cylinder vector */ + + /*! + * \param P_ Cylinder origin + * \param Q_ cylinder direction. + * \param radius_ cylinder's radius + * \param scale scale factor for the values passed. Useful when reading a file. + * \brief Initialize everything. + */ + CylinderGammaDistribution(){} + /*! * \param P_ Cylinder origin * \param Q_ cylinder direction. @@ -37,7 +48,7 @@ class CylinderGammaDistribution * \param scale scale factor for the values passed. Useful when reading a file. * \brief Initialize everything. */ - CylinderGammaDistribution(unsigned,double,double,double,Eigen::Vector3d &, Eigen::Vector3d &); + CylinderGammaDistribution(unsigned, double, double, double, Eigen::Vector3d &, Eigen::Vector3d &, float min_radius = 0.001); /*! * \brief Shows a small histogram of the gamma distribution diff --git a/src/dynamicsSimulation.cpp b/src/dynamicsSimulation.cpp index 5d1ca92..b2d1e88 100644 --- a/src/dynamicsSimulation.cpp +++ b/src/dynamicsSimulation.cpp @@ -15,8 +15,8 @@ #include #include /* time_t, struct tm, difftime, time, mktime */ #include -#include -#include +#include "Eigen/Dense" +#include "Eigen/Geometry" #include #include "constants.h" #include "collisionsphere.h" @@ -31,6 +31,10 @@ using namespace sentinels; * DynamicsSimulation implementation */ DynamicsSimulation::DynamicsSimulation() { + plyObstacles_list = nullptr; + spheres_list = nullptr; + cylinders_list = nullptr; + params.num_walkers = 1; //N params.num_steps = 1; //T params.traj_file = ""; @@ -60,12 +64,17 @@ DynamicsSimulation::DynamicsSimulation() { icvf=0; intra_tries=0; total_tries=0; + aux_walker_index = 0; } /** * @param configuration file */ DynamicsSimulation::DynamicsSimulation(std::string conf_file) { + plyObstacles_list = nullptr; + spheres_list = nullptr; + cylinders_list = nullptr; + completed = 0; readConfigurationFile(conf_file); @@ -85,12 +94,18 @@ DynamicsSimulation::DynamicsSimulation(std::string conf_file) { icvf=0; intra_tries=0; total_tries=0; + aux_walker_index = 0; } /** * @param Parameter instance */ DynamicsSimulation::DynamicsSimulation(Parameters& params_) { + + plyObstacles_list = nullptr; + spheres_list = nullptr; + cylinders_list = nullptr; + params = params_; completed = 0; trajectory.initTrajectory(params); @@ -109,6 +124,7 @@ DynamicsSimulation::DynamicsSimulation(Parameters& params_) { icvf=0; intra_tries=0; total_tries=0; + aux_walker_index = 0; } void DynamicsSimulation::initObstacleInformation(){ @@ -118,35 +134,48 @@ void DynamicsSimulation::initObstacleInformation(){ } //Cylinders list of index initialization - for(unsigned i= 0 ; i < cylinders_list.size();i++){ + for(unsigned i= 0 ; i < (*cylinders_list).size();i++){ cylinders_deque.push_back(i); if(params.obstacle_permeability > 0.0){ - cylinders_list[i].percolation = params.obstacle_permeability; + (*cylinders_list)[i].percolation = params.obstacle_permeability; + } + } + + walker.cylinders_collision_sphere.collision_list = &cylinders_deque; + walker.cylinders_collision_sphere.list_size = unsigned(cylinders_deque.size()); + walker.cylinders_collision_sphere.big_sphere_list_end = walker.cylinders_collision_sphere.list_size; + + //Spheres list of index initialization + for(unsigned i= 0 ; i < spheres_list->size();i++){ + spheres_deque.push_back(i); + + if(params.obstacle_permeability > 0.0){ + (*spheres_list)[i].percolation = params.obstacle_permeability; } } - walker.collision_sphere_cylinders.collision_list = &cylinders_deque; - walker.collision_sphere_cylinders.list_size = unsigned(cylinders_deque.size()); - walker.collision_sphere_cylinders.big_sphere_list_end = walker.collision_sphere_cylinders.list_size; + walker.spheres_collision_sphere .collision_list = &spheres_deque; + walker.spheres_collision_sphere.list_size = unsigned(spheres_deque.size()); + walker.spheres_collision_sphere.big_sphere_list_end = walker.spheres_collision_sphere.list_size; // PLY index list initialization - for(unsigned i= 0 ; i < plyObstacles_list.size();i++){ + for(unsigned i= 0 ; i < (*plyObstacles_list).size();i++){ std::vector jkr; - for(unsigned t =0; t < plyObstacles_list[i].face_number;t++){ + for(unsigned t =0; t < (*plyObstacles_list)[i].face_number;t++){ jkr.push_back(t); } if(params.obstacle_permeability > 0.0){ - plyObstacles_list[i].percolation = params.obstacle_permeability; + (*plyObstacles_list)[i].percolation = params.obstacle_permeability; } ply_deque.push_back(jkr); - walker.collision_sphere_ply.small_sphere_list_end.push_back(0); - walker.collision_sphere_ply.big_sphere_list_end.push_back(unsigned(jkr.size())); - walker.collision_sphere_ply.list_size++; + walker.ply_collision_sphere.small_sphere_list_end.push_back(0); + walker.ply_collision_sphere.big_sphere_list_end.push_back(unsigned(jkr.size())); + walker.ply_collision_sphere.list_size++; } - walker.collision_sphere_ply.collision_list = &ply_deque; + walker.ply_collision_sphere.collision_list = &ply_deque; } void DynamicsSimulation::updatePropagator(Eigen::Matrix3Xd& log_pos_r) @@ -164,6 +193,8 @@ void DynamicsSimulation::updatePropagator(Eigen::Matrix3Xd& log_pos_r) Eigen::Vector3f direction = params.prop_dirs[i]; + direction.normalize(); + Eigen::Vector3f d_projection = direction.dot(displacement)*direction; propagator.propagator_log[t][i] += d_projection.squaredNorm(); @@ -191,14 +222,19 @@ void DynamicsSimulation::computeICVF() bool DynamicsSimulation::finalPositionCheck() { - if(plyObstacles_list.size()>0 and sentinela.deport_illegals and params.obstacle_permeability <=0){ + int cyl_id,ply_id,sph_id; + + if( ((*plyObstacles_list).size()>0) and sentinela.deport_illegals and params.obstacle_permeability <=0){ - bool isIntra = isInIntra(this->walker.pos_v,0); + bool isIntra = isInIntra(this->walker.pos_v,cyl_id,ply_id,sph_id,0); //cout << endl << endl << isIntra << " " << this->walker.location << " " << walker.initial_location << endl; - if((isIntra and this->walker.initial_location==Walker::extra) or ((!isIntra and this->walker.initial_location==Walker::intra))){ - //cout << "Im working" << endl; + if((isIntra and this->walker.initial_location == Walker::extra) or ((!isIntra and this->walker.initial_location == Walker::intra))){ +// cout << "Im working" << endl; + +// cout << (this->walker.initial_location == Walker::intra) << "Intra" << endl; +// cout << isIntra << endl; return true; } } @@ -209,7 +245,8 @@ void DynamicsSimulation::writePropagator(std::string path) { if(params.write_bin){ ofstream bout; - bout.open(path.c_str(), std::ofstream::binary); + string path_bin = path+".bfloat" ; + bout.open(path_bin.c_str(), std::ofstream::binary); if(!bout){ std::cout << "Cannot open " << path << std::endl; @@ -330,7 +367,7 @@ bool DynamicsSimulation::expectedTimeAndMaxTimeCheck(unsigned w) if(this->completed <= 0.0){ SimErrno::expectedTime(to_string(int(completed)), "Unknown",cout,true,"?",""); cout.flush(); - completed+=10; + completed+=5; } else if(completed_perc >= completed){ cout << string(50,' '); @@ -349,7 +386,7 @@ bool DynamicsSimulation::expectedTimeAndMaxTimeCheck(unsigned w) SimErrno::expectedTime(to_string(int(completed)), "Unknown",cout,true,"?",""); cout.flush(); } - completed = max(completed+10.0,completed_perc); + completed = max(completed+5.0,completed_perc); cout.flush(); } } @@ -387,8 +424,23 @@ void DynamicsSimulation::iniWalkerPosition() walker.location = Walker::unknown; walker.intra_extra_consensus = walker.intra_coll_count = walker.extra_coll_count=walker.rejection_count=0; +/* + if(params.custom_ini_walker_pos.size()>0){ + double x,y,z; + x= params.custom_ini_walker_pos[aux_walker_index][0]; + y= params.custom_ini_walker_pos[aux_walker_index][1]; + z= params.custom_ini_walker_pos[aux_walker_index][2]; + aux_walker_index++; + //cout << x << ' ' << y << ' ' << z << endl; + walker.setInitialPosition(x,y,z); + + bool intra_flag =isInIntra(walker.ini_pos, walker.in_obj_index,walker.in_ply_index, 0.0); + walker.location = (intra_flag==1)?Walker::RelativeLocation::intra:Walker::RelativeLocation::extra; + walker.initial_location = walker.location; + + } //If the number of positions is less than the walkers, it restarts. - if(iniPos.is_open()){ + else */if(iniPos.is_open()){ double x,y,z; iniPos >> x; iniPos >> y; iniPos >> z; @@ -406,7 +458,7 @@ void DynamicsSimulation::iniWalkerPosition() } else if(params.ini_walker_flag.compare("intra")== 0){ Vector3d intra_pos; - getAnIntraCellularPosition(intra_pos); + getAnIntraCellularPosition(intra_pos,walker.in_obj_index,walker.in_ply_index,walker.in_sph_index); walker.setInitialPosition(intra_pos); walker.intra_extra_consensus--; walker.initial_location = Walker::intra; @@ -418,11 +470,13 @@ void DynamicsSimulation::iniWalkerPosition() walker.initial_location = Walker::extra; walker.intra_extra_consensus++; } + //Todo: poner esto bien sin el caso de hexapacking else if(voxels_list.size() > 0 or params.custom_sampling_area){ walker.setRandomInitialPosition(params.min_sampling_area,params.max_sampling_area); - if(params.computeVolume){ - isInIntra(walker.ini_pos, 0.0); + bool intra_flag =isInIntra(walker.ini_pos, walker.in_obj_index,walker.in_ply_index, walker.in_sph_index, 0.0); + walker.location = (intra_flag==1)?Walker::RelativeLocation::intra:Walker::RelativeLocation::extra; + walker.initial_location = walker.location; } } else{ @@ -433,60 +487,90 @@ void DynamicsSimulation::iniWalkerPosition() void DynamicsSimulation::initWalkerObstacleIndexes() { + + //* Cylinders Collision Sphere *// + // The outer collision sphere has a radius r = l*T float outer_col_dist_factor = float(params.num_steps*step_lenght); + walker.initial_sphere_pos_v = walker.pos_v; - walker.collision_sphere_cylinders.setBigSphereSize(outer_col_dist_factor); + walker.cylinders_collision_sphere.setBigSphereSize(outer_col_dist_factor); // The inner collision sphere has radius l*T*collision_sphere_distance float inner_col_dist_factor = step_lenght*sqrt(params.num_steps)*params.collision_sphere_distance; - walker.collision_sphere_cylinders.setSmallSphereSize(inner_col_dist_factor); + walker.cylinders_collision_sphere.setSmallSphereSize(inner_col_dist_factor); // New version Cylinders obstacle selection - walker.collision_sphere_cylinders.small_sphere_list_end = 0; - walker.collision_sphere_cylinders.big_sphere_list_end = unsigned(cylinders_deque.size()); + walker.cylinders_collision_sphere.small_sphere_list_end = 0; + walker.cylinders_collision_sphere.big_sphere_list_end = unsigned(cylinders_deque.size()); // We add and remove the cylinder indexes that are or not inside sphere. - for(unsigned i = 0 ; i < walker.collision_sphere_cylinders.list_size; i++ ){ - unsigned index = walker.collision_sphere_cylinders.collision_list->at(i); - float dist = float(cylinders_list[index].minDistance(walker)); - if (dist < walker.collision_sphere_cylinders.small_sphere_distance){ - walker.collision_sphere_cylinders.pushToSmallSphere(i); + for(unsigned i = 0 ; i < walker.cylinders_collision_sphere.list_size; i++ ){ + unsigned index = walker.cylinders_collision_sphere.collision_list->at(i); + float dist = float((*cylinders_list)[index].minDistance(walker)); + if (dist < walker.cylinders_collision_sphere.small_sphere_distance){ + walker.cylinders_collision_sphere.pushToSmallSphere(i); + } + } + + + //* Spheres Collision Sphere *// + + // The outer collision sphere has a radius r = l*T + walker.spheres_collision_sphere.setBigSphereSize(outer_col_dist_factor); + // The inner collision sphere has radius l*T*collision_sphere_distance + walker.spheres_collision_sphere.setSmallSphereSize(inner_col_dist_factor); + + // New version obstacle selection + walker.spheres_collision_sphere.small_sphere_list_end = 0; + walker.spheres_collision_sphere.big_sphere_list_end = unsigned(spheres_deque.size()); + + // We add and remove the sphere indexes that are or not inside sphere. + for(unsigned i = 0 ; i < walker.spheres_collision_sphere.list_size; i++ ){ + unsigned index = walker.spheres_collision_sphere.collision_list->at(i); + float dist = float((*spheres_list)[index].minDistance(walker)); + if (dist < walker.spheres_collision_sphere.small_sphere_distance){ + walker.spheres_collision_sphere.pushToSmallSphere(i); } } //* PLY Collision Sphere *// - walker.collision_sphere_ply.setBigSphereSize(outer_col_dist_factor); - walker.collision_sphere_ply.setSmallSphereSize(inner_col_dist_factor); + walker.ply_collision_sphere.setBigSphereSize(outer_col_dist_factor); + walker.ply_collision_sphere.setSmallSphereSize(inner_col_dist_factor); - for(unsigned i = 0 ; i < walker.collision_sphere_ply.list_size; i++ ) + //cout << outer_col_dist_factor << endl; + //cout << inner_col_dist_factor << endl; + + for(unsigned i = 0 ; i < walker.ply_collision_sphere.list_size; i++ ) { - walker.collision_sphere_ply.small_sphere_list_end[i] = 0; - walker.collision_sphere_ply.big_sphere_list_end[i] = plyObstacles_list[i].face_number; - for(unsigned t = 0 ; t < plyObstacles_list[i].face_number; t++){ + walker.ply_collision_sphere.small_sphere_list_end[i] = 0; + walker.ply_collision_sphere.big_sphere_list_end[i] = (*plyObstacles_list)[i].face_number; + for(unsigned t = 0 ; t < (*plyObstacles_list)[i].face_number; t++){ - unsigned index = walker.collision_sphere_ply.collision_list->at(i)[t]; - float dist = float(plyObstacles_list[i].minDistance(walker,index)); + unsigned index = walker.ply_collision_sphere.collision_list->at(i)[t]; + float dist = float((*plyObstacles_list)[i].minDistance(walker,index)); - if (dist > walker.collision_sphere_ply.big_sphere_distance) + if (dist > walker.ply_collision_sphere.big_sphere_distance) { - walker.collision_sphere_ply.popFromBigSphere(i,t); + walker.ply_collision_sphere.popFromBigSphere(i,t); } - if (dist < walker.collision_sphere_ply.small_sphere_distance) + if (dist < walker.ply_collision_sphere.small_sphere_distance) { - walker.collision_sphere_ply.pushToSmallSphere(i,t); + walker.ply_collision_sphere.pushToSmallSphere(i,t); } } } + + } void DynamicsSimulation::updateCollitionSphere(unsigned t) { - float inner_ball_size = walker.collision_sphere_ply.small_sphere_distance; - float outher_ball_size = walker.collision_sphere_ply.big_sphere_distance; + float inner_ball_size = walker.ply_collision_sphere.small_sphere_distance; + float outher_ball_size = walker.ply_collision_sphere.big_sphere_distance; float sphere_sqrd_displacement = float((walker.initial_sphere_pos_v-walker.pos_v).norm()); @@ -498,7 +582,7 @@ void DynamicsSimulation::updateCollitionSphere(unsigned t) } } -void DynamicsSimulation::getAnIntraCellularPosition(Vector3d &intra_pos) +void DynamicsSimulation::getAnIntraCellularPosition(Vector3d &intra_pos,int &cyl_ind, int& ply_ind, int& sph_ind) { std::random_device rd; @@ -506,7 +590,7 @@ void DynamicsSimulation::getAnIntraCellularPosition(Vector3d &intra_pos) std::uniform_real_distribution udist(0,1); - if(cylinders_list.size() <=0 and plyObstacles_list.size() <= 0){ + if(cylinders_list->size() <=0 and plyObstacles_list->size() <= 0 and spheres_list->size() <=0){ SimErrno::error("Cannot initialize intra-axonal walkers within the given substrate.",cout); SimErrno::error("There's no defined intra-axonal compartment (missing obstacles?)",cout); assert(0); @@ -537,7 +621,7 @@ void DynamicsSimulation::getAnIntraCellularPosition(Vector3d &intra_pos) // cout << initialization_gap[2] << endl; Vector3d pos_temp = {x,y,z}; - if(checkIfPosInsideVoxel(pos_temp) && (isInIntra(pos_temp, -0.1))){ + if(checkIfPosInsideVoxel(pos_temp) && (isInIntra(pos_temp,cyl_ind,ply_ind, sph_ind,-0.1))){ intra_pos = pos_temp; return; } @@ -551,7 +635,7 @@ void DynamicsSimulation::getAnExtraCellularPosition(Vector3d &extra_pos) std::random_device rd; std::mt19937 gen(rd()); std::uniform_real_distribution udist(0,1); - + int dummy_a,dummy_b,dummy_c; if(voxels_list.size()<=0){ SimErrno::error("Cannot initialize extra-cellular walkers within the given substrate, no voxel.",cout); assert(0); @@ -577,7 +661,7 @@ void DynamicsSimulation::getAnExtraCellularPosition(Vector3d &extra_pos) Vector3d pos_temp = {x,y,z}; - if(checkIfPosInsideVoxel(pos_temp) && (!isInIntra(pos_temp, barrier_tickness))){ + if(checkIfPosInsideVoxel(pos_temp) && (!isInIntra(pos_temp, dummy_a,dummy_b,dummy_c,barrier_tickness))){ extra_pos = pos_temp; return; } @@ -606,46 +690,67 @@ void DynamicsSimulation::updateWalkerObstacleIndexes(unsigned t_) { float outher_col_dist_factor = float(params.num_steps-t_+1.0*step_lenght); - walker.collision_sphere_ply.setBigSphereSize(outher_col_dist_factor); + walker.ply_collision_sphere.setBigSphereSize(outher_col_dist_factor); walker.initial_sphere_pos_v = walker.pos_v; //Cylinders obstacle update. - walker.collision_sphere_cylinders.small_sphere_list_end = 0; + walker.cylinders_collision_sphere.small_sphere_list_end = 0; - for(unsigned i = 0 ; i < walker.collision_sphere_cylinders.big_sphere_list_end; i++ ) + for(unsigned i = 0 ; i < walker.cylinders_collision_sphere.big_sphere_list_end; i++ ) { - unsigned index = walker.collision_sphere_cylinders.collision_list->at(i); - float dist = float(cylinders_list[index].minDistance(walker)); + unsigned index = walker.cylinders_collision_sphere.collision_list->at(i); + float dist = float((*cylinders_list)[index].minDistance(walker)); - if (dist > walker.collision_sphere_cylinders.big_sphere_distance) + if (dist > walker.cylinders_collision_sphere.big_sphere_distance) { - walker.collision_sphere_cylinders.popFromBigSphere(i); + walker.cylinders_collision_sphere.popFromBigSphere(i); } - if (dist < walker.collision_sphere_cylinders.small_sphere_distance) + if (dist < walker.cylinders_collision_sphere.small_sphere_distance) { - walker.collision_sphere_cylinders.pushToSmallSphere(i); + walker.cylinders_collision_sphere.pushToSmallSphere(i); + } + } + + //Spheres obstacle update. + walker.spheres_collision_sphere.small_sphere_list_end = 0; + + for(unsigned i = 0 ; i < walker.spheres_collision_sphere.big_sphere_list_end; i++ ) + { + unsigned index = walker.spheres_collision_sphere.collision_list->at(i); + float dist = float((*spheres_list)[index].minDistance(walker)); + + if (dist > walker.spheres_collision_sphere.big_sphere_distance) + { + walker.spheres_collision_sphere.popFromBigSphere(i); + } + if (dist < walker.spheres_collision_sphere.small_sphere_distance) + { + walker.spheres_collision_sphere.pushToSmallSphere(i); } } //PLY update obstacle - for(unsigned i = 0 ; i < walker.collision_sphere_ply.list_size; i++ ) + for(unsigned i = 0 ; i < walker.ply_collision_sphere.list_size; i++ ) { - walker.collision_sphere_ply.small_sphere_list_end[i] = 0; + walker.ply_collision_sphere.small_sphere_list_end[i] = 0; - for(unsigned t = 0 ; t < walker.collision_sphere_ply.big_sphere_list_end[i]; t++){ - unsigned triangle_index = walker.collision_sphere_ply.collision_list->at(i)[t]; - float dist = float(plyObstacles_list[i].minDistance(walker,triangle_index)); + for(unsigned t = 0 ; t < walker.ply_collision_sphere.big_sphere_list_end[i]; t++){ + float dist = INFINITY_VALUE; + if((walker.in_ply_index <=0) || walker.in_ply_index == int(i)){ + unsigned triangle_index = walker.ply_collision_sphere.collision_list->at(i)[t]; + dist = float((*plyObstacles_list)[i].minDistance(walker,triangle_index)); + } - if (dist > walker.collision_sphere_ply.big_sphere_distance) + if (dist > walker.ply_collision_sphere.big_sphere_distance) { - walker.collision_sphere_ply.popFromBigSphere(i,t); + walker.ply_collision_sphere.popFromBigSphere(i,t); } - if (dist < walker.collision_sphere_ply.small_sphere_distance) + if (dist < walker.ply_collision_sphere.small_sphere_distance) { - walker.collision_sphere_ply.pushToSmallSphere(i,t); + walker.ply_collision_sphere.pushToSmallSphere(i,t); } } } @@ -669,39 +774,64 @@ string DynamicsSimulation::secondsToMinutes(double t) } -bool DynamicsSimulation::isInsideCylinders(Vector3d &position, double distance_to_be_inside) +bool DynamicsSimulation::isInsideSpheres(Vector3d &position, int& sph_id,double distance_to_be_inside) { Walker tmp; tmp.setInitialPosition(position); //track the number of positions checks for intra/extra positions - for(unsigned i = 0 ; i < cylinders_list.size(); i++){ + for(unsigned i = 0 ; i < spheres_list->size(); i++){ - double dis = cylinders_list[i].minDistance(tmp); + double dis = (*spheres_list)[i].minDistance(tmp); if( dis <= distance_to_be_inside ){ intra_tries++; + sph_id = i; return true; } } + sph_id = -1; return false; } -bool DynamicsSimulation::isInsidePLY(Vector3d &position, double distance_to_be_inside) +bool DynamicsSimulation::isInsideCylinders(Vector3d &position, int& cyl_id,double distance_to_be_inside) { + Walker tmp; + tmp.setInitialPosition(position); + + //track the number of positions checks for intra/extra positions + + for(unsigned i = 0 ; i < cylinders_list->size(); i++){ - //1) We find the closest PLY and triangle bases on the triangle's center + double dis = (*cylinders_list)[i].minDistance(tmp); + + if( dis <= distance_to_be_inside ){ + intra_tries++; + cyl_id = i; + return true; + } + } + cyl_id = -1; + + return false; +} + +bool DynamicsSimulation::isInsidePLY(Vector3d &position, int &ply_id,double distance_to_be_inside) +{ + ply_id= -1; + + //1) We find the closest PLY and triangle based on the triangle's center Walker tmp; tmp.setInitialPosition(position); double t,min_t = 1e6; unsigned min_j_index = 0; int min_i_index = -1; - for (unsigned i=0; i < plyObstacles_list.size(); i++){ - for (unsigned j=0; j < plyObstacles_list[i].face_number; j++){ - t = (position - plyObstacles_list[i].faces[j].center).squaredNorm(); + for (unsigned i=0; i < (*plyObstacles_list).size(); i++){ + for (unsigned j=0; j < (*plyObstacles_list)[i].face_number; j++){ + t = (position - (*plyObstacles_list)[i].faces[j].center).squaredNorm(); // cout << t<< endl; if(t< min_t){ min_i_index = i; @@ -713,13 +843,13 @@ bool DynamicsSimulation::isInsidePLY(Vector3d &position, double distance_to_be_i //2) We corroborate by casting an infinite ray and checking collisions - Eigen::Vector3d ray = (-position + plyObstacles_list[min_i_index].faces[min_j_index].center).normalized(); + Eigen::Vector3d ray = (-position + (*plyObstacles_list)[min_i_index].faces[min_j_index].center).normalized(); Collision colision_temp; double new_min_t = 1e6; - for (unsigned i=0; i < plyObstacles_list.size(); i++){ - for (unsigned j=0; j < plyObstacles_list[i].face_number; j++){ - plyObstacles_list[i].faces[j].stepIntersects_MT(tmp,ray,1e8,colision_temp); + for (unsigned i=0; i < (*plyObstacles_list).size(); i++){ + for (unsigned j=0; j < (*plyObstacles_list)[i].face_number; j++){ + (*plyObstacles_list)[i].faces[j].stepIntersects_MT(tmp,ray,1e8,colision_temp); if(colision_temp.type == Collision::hit and new_min_t > colision_temp.t){ new_min_t = colision_temp.t; @@ -732,12 +862,12 @@ bool DynamicsSimulation::isInsidePLY(Vector3d &position, double distance_to_be_i //3) Finally we check the sign of the closest collision. The sign indicates either intra or extra. if(min_i_index >= 0){ Eigen::Vector3d normal; - plyObstacles_list[min_i_index].faces[min_j_index].getNormal(normal); - + (*plyObstacles_list)[min_i_index].faces[min_j_index].getNormal(normal); //Orientation respect the triangle - double dot = ((position - plyObstacles_list[min_i_index].faces[min_j_index].center).normalized()).dot(normal); + double dot = ((position - (*plyObstacles_list)[min_i_index].faces[min_j_index].center).normalized()).dot(normal); if (dot < distance_to_be_inside){ intra_tries++; + ply_id = min_i_index; return true; } } @@ -746,16 +876,20 @@ bool DynamicsSimulation::isInsidePLY(Vector3d &position, double distance_to_be_i } -bool DynamicsSimulation::isInIntra(Vector3d &position, double distance_to_be_intra_ply) +bool DynamicsSimulation::isInIntra(Vector3d &position, int& cyl_id, int& ply_id, int& sph_id, double distance_to_be_intra_ply) { bool isIntra = false; total_tries++; - if(cylinders_list.size()>0){ - isIntra|= this->isInsideCylinders(position,barrier_tickness); + if(cylinders_list->size()>0){ + isIntra|= this->isInsideCylinders(position,cyl_id,barrier_tickness); } - if(plyObstacles_list.size()>0){ - isIntra|=isInsidePLY(position,distance_to_be_intra_ply); + if(plyObstacles_list->size()>0){ + isIntra|=isInsidePLY(position,ply_id,distance_to_be_intra_ply); + } + + if(spheres_list->size()>0){ + isIntra|=isInsideSpheres(position,sph_id,barrier_tickness); } return isIntra; } @@ -795,6 +929,9 @@ void DynamicsSimulation::startSimulation(SimulableSequence *dataSynth) { walker.setRealPosLog(walker.pos_r,0); walker.setVoxPosLog (walker.pos_v,0); + //cout << "\n Iniatial postionl "; + //cout << walker.ini_pos[0] << " " << walker.ini_pos[1] << " " << walker.ini_pos[2] << endl; + for(unsigned t = 1 ; t <= params.num_steps; t++) //T+1 steps in total (avoid errors) { //Get the time step in milliseconds @@ -813,6 +950,7 @@ void DynamicsSimulation::startSimulation(SimulableSequence *dataSynth) { sentinela.deportationProcess(walker,w,t,back_tracking,params,id); if ( (error == Sentinel::ErrorCases::stuck) || (error == Sentinel::ErrorCases::crossed)){ + //w--; break; } @@ -834,6 +972,7 @@ void DynamicsSimulation::startSimulation(SimulableSequence *dataSynth) { if(!back_tracking) if(finalPositionCheck()){ back_tracking=true; + sentinela.illegal_count++; w--; } @@ -867,6 +1006,7 @@ void DynamicsSimulation::startSimulation(SimulableSequence *dataSynth) { }// for w + /********************* WARNING **********************/ /* */ /* END OF THE DYNAMIC SIMULATION CORE */ @@ -1019,7 +1159,7 @@ bool DynamicsSimulation::updateWalkerPosition(Eigen::Vector3d& step) { walker.next_direction = {0,0,0}; } } - sentinela.checkErrors(walker,params,(plyObstacles_list.size() == 0),bouncing_count); + sentinela.checkErrors(walker,params,((*plyObstacles_list).size() == 0),bouncing_count); }while(bounced); @@ -1063,20 +1203,33 @@ bool DynamicsSimulation::checkObstacleCollision(Vector3d &bounced_step,double &t } //For each Cylinder Obstacles - for(unsigned int i = 0 ; i < walker.collision_sphere_cylinders.small_sphere_list_end; i++ ) + for(unsigned int i = 0 ; i < walker.cylinders_collision_sphere.small_sphere_list_end; i++ ) { - unsigned index = walker.collision_sphere_cylinders.collision_list->at(i); - - cylinders_list[index].checkCollision(walker,bounced_step,tmax,colision_tmp); + unsigned index = walker.cylinders_collision_sphere.collision_list->at(i); + + (*cylinders_list)[index].checkCollision(walker,bounced_step,tmax,colision_tmp); + handleCollisions(colision,colision_tmp,max_collision_distance,index); + } + + //For each Spehere Obstacle + for(unsigned int i = 0 ; i < walker.spheres_collision_sphere.small_sphere_list_end; i++ ) + { + unsigned index = walker.spheres_collision_sphere.collision_list->at(i); + + (*spheres_list)[index].checkCollision(walker,bounced_step,tmax,colision_tmp); handleCollisions(colision,colision_tmp,max_collision_distance,index); } //For each PLY Obstacles - for(unsigned int i = 0 ; i < walker.collision_sphere_ply.collision_list->size(); i++ ) + for(unsigned int i = 0 ; i < walker.ply_collision_sphere.collision_list->size(); i++ ) { - plyObstacles_list[i].checkCollision(walker,bounced_step,tmax,colision_tmp, walker.collision_sphere_ply.collision_list->at(i), - walker.collision_sphere_ply.small_sphere_list_end[i]); + if((walker.in_ply_index >=0) && walker.in_ply_index != int(i)){ + continue; + } + + (*plyObstacles_list)[i].checkCollision(walker,bounced_step,tmax,colision_tmp, walker.ply_collision_sphere.collision_list->at(i), + walker.ply_collision_sphere.small_sphere_list_end[i]); handleCollisions(colision,colision_tmp,max_collision_distance,i); } diff --git a/src/dynamicsSimulation.h b/src/dynamicsSimulation.h index 58aaf57..bd50df4 100644 --- a/src/dynamicsSimulation.h +++ b/src/dynamicsSimulation.h @@ -11,10 +11,10 @@ #include "walker.h" #include -#include +#include "Eigen/Core" #include #include -#include +#include "trajectory.h" #include "simulablesequence.h" #include "parameters.h" #include "plyobstacle.h" @@ -22,6 +22,7 @@ #include "cylinder.h" #include "sentinel.h" #include "propagator.h" +#include "sphere.h" /*! \class DynamicsSimulation @@ -43,9 +44,11 @@ class DynamicsSimulation unsigned ini_pos_file_ini_index; /*!< starting position in the ini walker position file (multicore support) */ int id; /*!< Unique id for the dynamic simulation */ sentinels::Sentinel sentinela; /*!< Sentinel initialization to encoutner error in the simulation */ - std::vector plyObstacles_list; /*!< vector with all the instances of PLYObstacles */ - std::vector cylinders_list; /*!< vector with all the isntances of "Cylider" obstacles */ + std::vector * plyObstacles_list; /*!< pointer to a vector with all the instances of PLYObstacles */ + std::vector * cylinders_list; /*!< pointer to a vector with all the isntances of "Cylider" obstacles */ + std::vector * spheres_list; /*!< pointer to a vector with all the isntances of "Spheres" obstacles */ std::vector cylinders_deque; /*!< deque with the indexes of the cylinders (used for optmization) */ + std::vector spheres_deque; /*!< deque with the indexes of the spheres (used for optmization) */ std::vector> ply_deque; /*!< deque with the indexes of the triangles of all ply's (used for opt) */ std::vector voxels_list; /*!< vector with all the voxels to be simulated (if any) */ Propagator propagator; /*!< Propagator object to compute and save the particles MSD */ @@ -64,6 +67,8 @@ class DynamicsSimulation bool print_expected_time; /*!< Auxiliar flag for time recording and stimation for time. */ unsigned num_simulated_walkers; /*!< Saves the final number of simulated walkers (time limit) */ + + unsigned aux_walker_index; /****** END Auxiliar variables ********/ @@ -93,7 +98,7 @@ class DynamicsSimulation * \param dataSynth optional paramter. If this parameter is not given, no signal is computed. * \brief Starts the dynamics simulation and, if a PGSE sequence is given, computes the DW signal. */ - void startSimulation(SimulableSequence* dataSynth = NULL); + void startSimulation(SimulableSequence* dataSynth = nullptr); /*! \fn readConfigurationFile * \param conf_file_path paremeters file path. @@ -130,16 +135,18 @@ class DynamicsSimulation * with a defined "inside region" can be considered. Voxel periodicity is not * considered */ - bool isInIntra(Eigen::Vector3d& position, double distance_to_be_intra_ply=1e-6); + bool isInIntra(Eigen::Vector3d& position, int& cyl_id, int& ply_id, int& sph_id, double distance_to_be_intra_ply=1e-6); /*! * \brief Writes to disk the final propagator matrix. */ void writePropagator(std::string path); - bool isInsideCylinders(Eigen::Vector3d& position,double distance_to_be_inside=1e-6); + bool isInsideCylinders(Eigen::Vector3d& position,int& cyl_id,double distance_to_be_inside=1e-6); + + bool isInsidePLY(Eigen::Vector3d& position,int& ply_id,double distance_to_be_inside=1e-6); - bool isInsidePLY(Eigen::Vector3d& position,double distance_to_be_inside=1e-6); + bool isInsideSpheres(Eigen::Vector3d &position, int& sph_id,double distance_to_be_inside); private: @@ -261,7 +268,7 @@ class DynamicsSimulation * \brief finds an intra celullar 3d position inside the voxel (needs a voxel initialized). * \param intra_pos vector to save the 3d position. */ - inline void getAnIntraCellularPosition(Eigen::Vector3d& intra_pos); + inline void getAnIntraCellularPosition(Eigen::Vector3d& intra_pos, int &cyl_ind, int &ply_ind, int &sph_ind); /*! * \brief finds an extra cellular 3d position inside the voxel (needs a voxel initialized). diff --git a/src/gradientwaveform.cpp b/src/gradientwaveform.cpp index f3fdaa0..b8aa6f6 100644 --- a/src/gradientwaveform.cpp +++ b/src/gradientwaveform.cpp @@ -10,7 +10,7 @@ #include "gradientwaveform.h" #include "constants.h" -#include +#include "Eigen/Dense" #include #include #include @@ -34,16 +34,21 @@ GradientWaveform::GradientWaveform() wave_duration = 0; dt = 0; wave_bins = 0; + separate_signal=false; + num_rep=0; } GradientWaveform::GradientWaveform(Scheme &scheme_) { + this->num_rep=0; dynamic = false; save_phase_shift = true; percent_steps_in = -1; readSchemeParameters(scheme_); //phase_shift_distribution.resize(num_rep,3600); phase_shift_distribution = Eigen::ArrayXXf::Zero(num_rep,3600); + separate_signal=false; + } //TODO correjir esto @@ -58,6 +63,7 @@ GradientWaveform::GradientWaveform(Scheme& scheme_, const char *traj_file_name) dyn_duration = trajectory.dyn_duration; //phase_shift_distribution.resize(scheme_.num_rep,3600); // Dynamic duration no es igual que el waveform duration phase_shift_distribution = Eigen::ArrayXXf::Zero(num_rep,3600); + separate_signal=false; } double GradientWaveform::getNumericalbValue(unsigned) @@ -74,7 +80,8 @@ void GradientWaveform::readSchemeParameters(Scheme &scheme_) for(unsigned i = 0 ; i < uint(num_rep); i++){ DWI.push_back(0); - DWIi.push_back(0); + if(this->img_signal == true) + DWIi.push_back(0); phase_shift.push_back(0); } } @@ -117,7 +124,6 @@ void GradientWaveform::readSchemeFile() this->waveform.push_back(wave_vector); } } - in.close(); } @@ -243,7 +249,8 @@ void GradientWaveform::getDWISignal() for(uint s=0; s < num_rep; s++){ DWI[s] += cos(phase_shift[s]); // Real part - DWIi[s]+= sin(phase_shift[s]); // Img part + if(this->img_signal == true) + DWIi[s]+= sin(phase_shift[s]); // Img part phase_shift[s] = 0; } @@ -260,7 +267,22 @@ void GradientWaveform::update_DWI_signal(Walker& walker) double sin_phase_shift = sin(phase_shift[s]); DWI[s] += cos_phase_shift; // Real part - DWIi[s]+= sin_phase_shift; // Img part + if(this->img_signal == true) + DWIi[s]+= sin_phase_shift; // Img part + + if(this->separate_signal){ + + if(walker.location == Walker::RelativeLocation::intra){ + DWI_intra[s]+=cos_phase_shift; + } + else if(walker.location == Walker::RelativeLocation::extra){ + DWI_extra[s]+=cos_phase_shift; + } + else{ + cout << walker.location << endl; + + } + } if(save_phase_shift){ //Index between 0 and 3600, this give us a histogram with 3600 bins @@ -273,7 +295,18 @@ void GradientWaveform::update_DWI_signal(Walker& walker) if( subdivisions[i].isInside(walker.pos_v)){ sub_DWI[i][s] += cos_phase_shift; // Real part - sub_DWIi[i][s]+= sin_phase_shift; // Img part + if(this->img_signal == true) + sub_DWIi[i][s]+= sin_phase_shift; // Img part + + if(separate_signal){ + if(walker.location == Walker::RelativeLocation::intra){ + sub_DWI_intra[i][s]+=cos_phase_shift; + } + else if(walker.location == Walker::RelativeLocation::extra){ + sub_DWI_extra[i][s]+=cos_phase_shift; + } + } + break; //WARNING this break means that the subdivision are mutally exclusive } } diff --git a/src/gradientwaveform.h b/src/gradientwaveform.h index 6ce01ff..6dd7a08 100644 --- a/src/gradientwaveform.h +++ b/src/gradientwaveform.h @@ -11,13 +11,12 @@ #include "pgsesequence.h" #include "Eigen/Dense" +#include "constants.h" class GradientWaveform: public SimulableSequence { public: - int num_rep; /*!< number of repetitions . */ - double TE; /*!< Time Echo. */ uint T; /*!< num bins (time steps) */ diff --git a/src/main.cpp b/src/main.cpp index b3514cc..217ef7c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,21 +1,22 @@ -//███╗ ███╗ ██████╗ ██╗██████╗ ██████╗ ███████╗██╗███╗ ███╗██╗ ██╗██╗ █████╗ ████████╗ ██████╗ ██████╗ -//████╗ ████║██╔════╝ ██╔╝██╔══██╗██╔════╝ ██╔════╝██║████╗ ████║██║ ██║██║ ██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗ -//██╔████╔██║██║ ██╔╝ ██║ ██║██║ ███████╗██║██╔████╔██║██║ ██║██║ ███████║ ██║ ██║ ██║██████╔╝ -//██║╚██╔╝██║██║ ██╔╝ ██║ ██║██║ ╚════██║██║██║╚██╔╝██║██║ ██║██║ ██╔══██║ ██║ ██║ ██║██╔══██╗ -//██║ ╚═╝ ██║╚██████╗██╔╝ ██████╔╝╚██████╗ ███████║██║██║ ╚═╝ ██║╚██████╔╝███████╗██║ ██║ ██║ ╚██████╔╝██║ ██║ -//╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ +// o o o-o oo-o o-o o-o o o +// |\ /| / / | \ / | o | | +// | O | O o | O O o-o o-O-o o o | oo -o- o-o o-o +// | | \ / | / \ | | | | | | | | | | | | | | +// o o o-o o o-o o-o o--o | o o o o--o o o-o- o o-o o #include #include "Eigen/Core" #include "Eigen/Dense" -#include +#include "dynamicsSimulation.h" #include -#include -#include +#include "pgsesequence.h" +#include "parallelmcsimulation.h" #include "voxel.h" #include "cylinder.h" #include -#include +#include "simerrno.h" + +typedef unsigned int uint; using namespace std; using namespace Eigen; @@ -25,20 +26,20 @@ void printUsage(); int main(int argn, char* argv[]) { - string conf = "/home/jonathan/Desktop/output/Percolacion/delta_center/conf_first_delta_perc.conf"; - + string conf = ""; if(argn == 2){ conf = argv[1]; } - if(argn != 2){ + else{ printUsage(); return -1; } - ParallelMCSimulation simulation_short_scheme(conf); - simulation_short_scheme.startSimulation(); + ParallelMCSimulation simulation(conf); + + simulation.startSimulation(); #ifdef __linux__ @@ -52,50 +53,34 @@ int main(int argn, char* argv[]) void printUsage(){ - cout << "// ███╗ ███╗ ██████╗ ██╗██████╗ ██████╗ ███████╗██╗███╗ ███╗██╗ ██╗██╗ █████╗ ████████╗ ██████╗ ██████╗ " << endl; - cout << "// ████╗ ████║██╔════╝ ██╔╝██╔══██╗██╔════╝ ██╔════╝██║████╗ ████║██║ ██║██║ ██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗ " << endl; - cout << "// ██╔████╔██║██║ ██╔╝ ██║ ██║██║ ███████╗██║██╔████╔██║██║ ██║██║ ███████║ ██║ ██║ ██║██████╔╝ " << endl; - cout << "// ██║╚██╔╝██║██║ ██╔╝ ██║ ██║██║ ╚════██║██║██║╚██╔╝██║██║ ██║██║ ██╔══██║ ██║ ██║ ██║██╔══██╗ " << endl; - cout << "// ██║ ╚═╝ ██║╚██████╗██╔╝ ██████╔╝╚██████╗ ███████║██║██║ ╚═╝ ██║╚██████╔╝███████╗██║ ██║ ██║ ╚██████╔╝██║ ██║ " << endl; - cout << "// ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ " << endl; - + cout << " ███╗ ███╗ ██████╗ ██╗██████╗ ██████╗" << endl; + cout << " ████╗ ████║██╔════╝ ██╔╝██╔══██╗██╔════╝" << endl; + cout << " ██╔████╔██║██║ ██╔╝ ██║ ██║██║ " << endl; + cout << " ██║╚██╔╝██║██║ ██╔╝ ██║ ██║██║ " << endl; + cout << " ██║ ╚═╝ ██║╚██████╗██╔╝ ██████╔╝╚██████╗" << endl; + cout << " ╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═════╝ ╚═════╝" << endl; cout << endl; cout << endl; - + cout << " Version: " << VERSION_ID << endl; cout << " Usage: MC-DC_Simulator \n\n"; - - cout << " Plain .txt file, may contain the following parameters (see doc for examples):\n"; - - cout << " N Number of particles.\n"; - cout << " T Number of time steps.\n"; - cout << " duration Diffusion duration in seconds.\n"; - cout << " out_file_index Simulation ouput path and prefix.\n"; - cout << " scheme_file Simulation protocol.\n"; - cout << " scale_from_stu not 0 if the protocol is in SU.\n"; - - cout << " write_txt not 0 for .txt ouput.\n"; - cout << " write_bin not 0 for .bin ouput.\n"; - cout << " write_traj_file not 0 to write the trajfile.\n"; - - cout << " Obstacle definition tag.\n"; - cout << " Gamma cylinders obstacles tag.\n"; - cout << " ply-mesh-model obstacle tag.\n"; - cout << " ini_walkers_pos Custom initial particles position (intra, extra).\n"; - cout << " num_process Number of processors to use.\n"; - - cout << " END of the conf-file parameters (needed).\n"; - - - - -// ifstream in("../misc/Params-ERROR.txt"); -// if(!in){ -// cout << "Error in the local Paths "<< endl; -// return; -// } -// string temp; -// while( std::getline(in, temp)){ -// cout << temp << endl; -// } -// in.close(); + cout << " Plain .txt file with the simulation parameters (see https://github.com/jonhrafe/MCDC_Simulator_public):\n\n"; + + cout << " N Number of particles.\n"; + cout << " T Number of time steps.\n"; + cout << " duration Diffusion duration in seconds.\n"; + cout << " out_file_index Simulation ouput path and prefix.\n"; + cout << " scheme_file Simulation protocol.\n"; + cout << " scale_from_stu not 0 if the protocol is in SU.\n"; + + cout << " write_txt not 0 for .txt ouput.\n"; + cout << " write_bin not 0 for .bin ouput.\n"; + cout << " write_traj_file not 0 to write the trajfile.\n"; + + cout << " Obstacle definition tag.\n"; + cout << " Gamma cylinders obstacles tag.\n"; + cout << " ply-mesh-model obstacle tag.\n"; + cout << " ini_walkers_pos Custom initial particles position (intra, extra).\n"; + cout << " num_process Number of processors to use.\n"; + + cout << " END of the conf-file parameters (needed).\n"; } diff --git a/src/mcsimulation.cpp b/src/mcsimulation.cpp index 56190ff..cfeb6a7 100644 --- a/src/mcsimulation.cpp +++ b/src/mcsimulation.cpp @@ -1,5 +1,5 @@ #include "mcsimulation.h" -#include +#include "Eigen/Dense" #include "simerrno.h" #include "pgsesequence.h" #include "gradientwaveform.h" @@ -8,8 +8,11 @@ int MCSimulation::count =0; MCSimulation::MCSimulation() { - dynamicsEngine = NULL; - dataSynth = NULL; + plyObstacles_list = nullptr; + dynamicsEngine = nullptr; + dataSynth = nullptr; + sphere_list = nullptr; + cylinders_list = nullptr; id = count; count++; } @@ -17,8 +20,11 @@ MCSimulation::MCSimulation() /*DEPRECATED*/ MCSimulation::MCSimulation(std::string config_file) { - dynamicsEngine = NULL; - dataSynth = NULL; + plyObstacles_list = nullptr; + dynamicsEngine = nullptr; + dataSynth = nullptr; + sphere_list = nullptr; + cylinders_list = nullptr; params.readSchemeFile(config_file); dynamicsEngine = new DynamicsSimulation(params); @@ -27,6 +33,7 @@ MCSimulation::MCSimulation(std::string config_file) scheme.readSchemeFile(params.scheme_file,params.scale_from_stu); } + if(scheme.type == "PGSE"){ dataSynth = new PGSESequence(scheme); dataSynth->setNumberOfSteps(dynamicsEngine->params.num_steps); @@ -38,6 +45,8 @@ MCSimulation::MCSimulation(std::string config_file) } } + dataSynth->separate_signal = params.separate_signals; + dynamicsEngine->id = count; id = count; count++; @@ -45,8 +54,12 @@ MCSimulation::MCSimulation(std::string config_file) MCSimulation::MCSimulation(Parameters& params_) { - dynamicsEngine = NULL; - dataSynth = NULL; + plyObstacles_list = nullptr; + dynamicsEngine = nullptr; + dataSynth = nullptr; + sphere_list = nullptr; + cylinders_list = nullptr; + params = params_; dynamicsEngine = new DynamicsSimulation(params); @@ -63,6 +76,7 @@ MCSimulation::MCSimulation(Parameters& params_) } dataSynth->setNumberOfSteps(dynamicsEngine->params.num_steps); + dataSynth->separate_signal = params.separate_signals; if(params.subdivision_flag){ dataSynth->subdivision_flag = true; @@ -70,6 +84,9 @@ MCSimulation::MCSimulation(Parameters& params_) dataSynth->initializeSubdivisionSignals(); } + if(params.separate_signals) + dataSynth->initializeIntraExtraSignals(); + dynamicsEngine->id = count; id = count; count++; @@ -81,7 +98,7 @@ void MCSimulation::startSimulation() iniObstacles(); - if(dataSynth != NULL){ + if(dataSynth != nullptr){ dynamicsEngine->startSimulation(dataSynth); } else{ @@ -103,92 +120,106 @@ double MCSimulation::getExpectedFreeeDecay(unsigned i) void MCSimulation::iniObstacles() { - addCylindersObstaclesFromFiles(); + addObstacles(); - addPLYObstaclesFromFiles(); + addPLYObstacles(); addVoxels(); - addCylindersConfigurations(); + // addCylindersConfigurations(); //Used only if there's a voxel (deprecated) //addExtraObstacles(); } - -//* Auxiliare method to split words in a line using the spaces*// -template -void split(const std::string &s, char delim, Out result) { - std::stringstream ss; - ss.str(s); - std::string item; - while (std::getline(ss, item, delim)) { - *(result++) = item; - } +void MCSimulation::addObstacles() +{ + this->dynamicsEngine->cylinders_list = this->cylinders_list; + this->dynamicsEngine->spheres_list = this->sphere_list; } -std::vector split(const std::string &s, char delim) { - std::vector elems; - split(s, delim, std::back_inserter(elems)); - return elems; -} - -void MCSimulation::addCylindersObstaclesFromFiles() +////* Auxiliare method to split words in a line using the spaces*// +//template +//void split(const std::string &s, char delim, Out result) { +// std::stringstream ss; +// ss.str(s); +// std::string item; +// while (std::getline(ss, item, delim)) { +// *(result++) = item; +// } +//} + + +//std::vector split(const std::string &s, char delim) { +// std::vector elems; +// split(s, delim, std::back_inserter(elems)); +// return elems; +//} + +//void MCSimulation::addCylindersObstaclesFromFiles() +//{ +// for(unsigned i = 0; i < params.cylinders_files.size(); i++){ + +// bool z_flag = false; +// std::ifstream in(params.cylinders_files[i]); + +// if(!in){ +// //std::cout << "\033[1;37m[INFO]\033[0m Sim: " << count << " " << "[ERROR] Unable to open:" << params.cylinders_files[i] << std::endl; +// return; +// } + +// bool first=true; +// for( std::string line; getline( in, line ); ) +// { +// if(first) {first-=1;continue;} + +// std::vector jkr = split(line,' '); +// if (jkr.size() != 7){ +// z_flag = true; +// //std::cout << "\033[1;33m[Warning]\033[0m Cylinder orientation was set towards the Z direction by default" << std::endl; +// } +// break; +// } +// in.close(); + +// in.open(params.cylinders_files[i]); + +// if(z_flag){ +// double x,y,z,r; +// double scale; +// in >> scale; +// while (in >> x >> y >> z >> r) +// { +// dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(x,y,z),Eigen::Vector3d(x,y,z+1.0),r,scale)); +// } +// in.close(); +// } +// else{ +// double x,y,z,ox,oy,oz,r; +// double scale; +// in >> scale; +// while (in >> x >> y >> z >> ox >> oy >> oz >> r) +// { +// dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(x,y,z),Eigen::Vector3d(ox,oy,oz),r,scale)); +// } +// in.close(); +// } +// } +//} + +void MCSimulation::addPLYObstacles() { - for(unsigned i = 0; i < params.cylinders_files.size(); i++){ - - bool z_flag = false; - std::ifstream in(params.cylinders_files[i]); - if(!in){ - //std::cout << "\033[1;37m[INFO]\033[0m Sim: " << count << " " << "[ERROR] Unable to open:" << params.cylinders_files[i] << std::endl; - return; - } +// //std::cout << params.img_signal << std::endl; +// for(unsigned i = 0; i < params.PLY_files.size(); i++){ +// //std::cout << i << std::endl; +// dynamicsEngine->plyObstacles_list.push_back(PLYObstacle(params.PLY_files[i],params.PLY_scales[i])); +// dynamicsEngine->plyObstacles_list.back().id=i; +// dynamicsEngine->plyObstacles_list.back().percolation = params.PLY_percolation[i]; +// } - bool first=true; - for( std::string line; getline( in, line ); ) - { - if(first) {first-=1;continue;} - - std::vector jkr = split(line,' '); - if (jkr.size() != 7){ - z_flag = true; - //std::cout << "\033[1;33m[Warning]\033[0m Cylinder orientation was set towards the Z direction by default" << std::endl; - } - break; - } - in.close(); - - in.open(params.cylinders_files[i]); - - if(z_flag){ - double x,y,z,r; - double scale; - in >> scale; - while (in >> x >> y >> z >> r) - { - dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(x,y,z),Eigen::Vector3d(x,y,z+1.0),r,scale)); - } - in.close(); - } - else{ - double x,y,z,ox,oy,oz,r; - double scale; - in >> scale; - while (in >> x >> y >> z >> ox >> oy >> oz >> r) - { - dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(x,y,z),Eigen::Vector3d(ox,oy,oz),r,scale)); - } - in.close(); - } - } -} -void MCSimulation::addPLYObstaclesFromFiles() -{ - for(unsigned i = 0; i < params.PLY_files.size(); i++){ - dynamicsEngine->plyObstacles_list.push_back(PLYObstacle(params.PLY_files[i],params.PLY_scales[i])); - } + dynamicsEngine->plyObstacles_list = this->plyObstacles_list; } void MCSimulation::addVoxels() @@ -198,34 +229,35 @@ void MCSimulation::addVoxels() } } -void MCSimulation::addCylindersConfigurations() -{ +//void MCSimulation::addCylindersConfigurations() +//{ - if(params.hex_packing){ - double rad = params.hex_packing_radius,sep = params.hex_packing_separation; +// if(params.hex_packing){ +// double rad = params.hex_packing_radius,sep = params.hex_packing_separation; - // h = sqrt(3)/2 * sep - double h = 0.866025404*sep; +// // h = sqrt(3)/2 * sep +// double h =0.8660254037844386*sep; - dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(0,0,0),Eigen::Vector3d(0,0,1.0),rad)); - dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(sep,0,0),Eigen::Vector3d(sep,0,1.0),rad)); +// dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(0,0,0),Eigen::Vector3d(0,0,1.0),rad)); +// dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(sep,0,0),Eigen::Vector3d(sep,0,1.0),rad)); - dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(0,2.0*h,0),Eigen::Vector3d(0,2.0*h,1.0),rad)); - dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(sep,2.0*h,0),Eigen::Vector3d(sep,2.0*h,1.0),rad)); +// dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(0,2.0*h,0),Eigen::Vector3d(0,2.0*h,1.0),rad)); +// dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(sep,2.0*h,0),Eigen::Vector3d(sep,2.0*h,1.0),rad)); - dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(0.5*sep,h,0),Eigen::Vector3d(0.5*sep,h,1.0),rad)); +// dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(0.5*sep,h,0),Eigen::Vector3d(0.5*sep,h,1.0),rad)); - // To avoid problems with the boundaries - dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(-0.5*sep,h,0),Eigen::Vector3d(-0.5*sep,h,1.0),rad)); - dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(1.5*sep,h,0),Eigen::Vector3d(1.5*sep,h,1.0),rad)); +// // To avoid problems with the boundaries +// dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(-0.5*sep,h,0),Eigen::Vector3d(-0.5*sep,h,1.0),rad)); +// dynamicsEngine->cylinders_list.push_back(Cylinder(Eigen::Vector3d(1.5*sep,h,0),Eigen::Vector3d(1.5*sep,h,1.0),rad)); - if(dynamicsEngine->voxels_list.size()>0) - dynamicsEngine->voxels_list.clear(); +// if(dynamicsEngine->voxels_list.size()>0) +// dynamicsEngine->voxels_list.clear(); - dynamicsEngine->voxels_list.push_back(Voxel(Eigen::Vector3d(0,0,0),Eigen::Vector3d(sep,2.0*h,2.0*h))); +// dynamicsEngine->voxels_list.push_back(Voxel(Eigen::Vector3d(0,0,0),Eigen::Vector3d(sep,2.0*h,2.0*h))); - } -} +// } + +//} bool cylinderIsCloseBoundery(Cylinder& cyl, Eigen::Vector3d min_limits,Eigen::Vector3d max_limits){ @@ -240,52 +272,50 @@ bool cylinderIsCloseBoundery(Cylinder& cyl, Eigen::Vector3d min_limits,Eigen::Ve return false; } -void MCSimulation::addExtraObstacles() -{ - if(dynamicsEngine->voxels_list.size() == 0) - return; +//void MCSimulation::addExtraObstacles() +//{ +// if(dynamicsEngine->voxels_list.size() == 0) +// return; - std::vector multipliers; +// std::vector multipliers; - Eigen::Vector3d gap = params.max_limits - params.min_limits; +// Eigen::Vector3d gap = params.max_limits - params.min_limits; - for(int i = -1 ;i <= 1; i++) - for(int j = -1 ;j <= 1; j++) - for(int k = -1 ;k <= 1; k++){ - Eigen::Vector3d jkr(i*gap[0],j*gap[1],k*gap[2]); - multipliers.push_back(jkr); - } +// for(int i = -1 ;i <= 1; i++) +// for(int j = -1 ;j <= 1; j++) +// for(int k = -1 ;k <= 1; k++){ +// Eigen::Vector3d jkr(i*gap[0],j*gap[1],k*gap[2]); +// multipliers.push_back(jkr); +// } - unsigned long cylinders_num = dynamicsEngine->cylinders_list.size(); +// unsigned long cylinders_num = dynamicsEngine->cylinders_list.size(); - for (unsigned c = 0; c < cylinders_num ;c++) - for (unsigned i = 0 ; i < multipliers.size(); i++) - if(multipliers[i][0]!=0.0 || multipliers[i][1]!=0.0 || multipliers[i][2]!=0.0) - { - Eigen::Vector3d P_ = dynamicsEngine->cylinders_list[c].P; - Eigen::Vector3d Q_ = dynamicsEngine->cylinders_list[c].Q; - P_[0]+= multipliers[i][0];P_[1]+=multipliers[i][1];P_[2]+=multipliers[i][2]; - Q_[0]+= multipliers[i][0];Q_[1]+=multipliers[i][1];Q_[2]+=multipliers[i][2]; - Cylinder tmp_cyl(P_,Q_,dynamicsEngine->cylinders_list[c].radius); +// for (unsigned c = 0; c < cylinders_num ;c++) +// for (unsigned i = 0 ; i < multipliers.size(); i++) +// if(multipliers[i][0]!=0.0 || multipliers[i][1]!=0.0 || multipliers[i][2]!=0.0) +// { +// Eigen::Vector3d P_ = dynamicsEngine->cylinders_list[c].P; +// Eigen::Vector3d Q_ = dynamicsEngine->cylinders_list[c].Q; +// P_[0]+= multipliers[i][0];P_[1]+=multipliers[i][1];P_[2]+=multipliers[i][2]; +// Q_[0]+= multipliers[i][0];Q_[1]+=multipliers[i][1];Q_[2]+=multipliers[i][2]; +// Cylinder tmp_cyl(P_,Q_,dynamicsEngine->cylinders_list[c].radius); - //if the obstacle is close enough - //if (cylinderIsCloseBoundery(tmp_cyl,params.min_limits,params.max_limits)) - dynamicsEngine->cylinders_list.push_back(tmp_cyl); - } +// //if the obstacle is close enough +// //if (cylinderIsCloseBoundery(tmp_cyl,params.min_limits,params.max_limits)) +// dynamicsEngine->cylinders_list.push_back(tmp_cyl); +// } - std::cout << dynamicsEngine->cylinders_list.size() << std::endl; -} +// std::cout << dynamicsEngine->cylinders_list.size() << std::endl; +//} MCSimulation::~MCSimulation() { - if(dynamicsEngine != NULL) + if(dynamicsEngine != nullptr) delete dynamicsEngine; - if(dataSynth != NULL) + if(dataSynth != nullptr) delete dataSynth; } - - diff --git a/src/mcsimulation.h b/src/mcsimulation.h index 7edf7a8..da640c3 100644 --- a/src/mcsimulation.h +++ b/src/mcsimulation.h @@ -1,10 +1,10 @@ -//███╗ ███╗ ██████╗ ██╗██████╗ ██████╗ ███████╗██╗███╗ ███╗██╗ ██╗██╗ █████╗ ████████╗ ██████╗ ██████╗ -//████╗ ████║██╔════╝ ██╔╝██╔══██╗██╔════╝ ██╔════╝██║████╗ ████║██║ ██║██║ ██╔══██╗╚══██╔══╝██╔═══██╗██╔══██╗ -//██╔████╔██║██║ ██╔╝ ██║ ██║██║ ███████╗██║██╔████╔██║██║ ██║██║ ███████║ ██║ ██║ ██║██████╔╝ -//██║╚██╔╝██║██║ ██╔╝ ██║ ██║██║ ╚════██║██║██║╚██╔╝██║██║ ██║██║ ██╔══██║ ██║ ██║ ██║██╔══██╗ -//██║ ╚═╝ ██║╚██████╗██╔╝ ██████╔╝╚██████╗ ███████║██║██║ ╚═╝ ██║╚██████╔╝███████╗██║ ██║ ██║ ╚██████╔╝██║ ██║ -//╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═════╝ ╚═════╝ ╚══════╝╚═╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝ +//███╗ ███╗ ██████╗ ██╗██████╗ ██████╗ +//████╗ ████║██╔════╝ ██╔╝██╔══██╗██╔════╝ +//██╔████╔██║██║ ██╔╝ ██║ ██║██║ +//██║╚██╔╝██║██║ ██╔╝ ██║ ██║██║ +//██║ ╚═╝ ██║╚██████╗██╔╝ ██████╔╝╚██████╗ +//╚═╝ ╚═╝ ╚═════╝╚═╝ ╚═════╝ ╚═════╝ //! Aplication Main Class ======================================================================================/ @@ -12,7 +12,7 @@ * \details Main implementation class. Incorporates the particle's dynamics and the data synthesis. * \author Jonathan Rafael * \date November 2016 -* \version 1.42.14_wf +* \version 1.44.00 *===============================================================================================================*/ #ifndef MCSIMULATION_H @@ -20,7 +20,7 @@ #include "dynamicsSimulation.h" #include "scheme.h" - +#include /*! \class MCSimulation * \brief Main implementation class. Incorporates the particle's dynamics and the data synthesis. @@ -38,7 +38,16 @@ class MCSimulation Parameters params; /*!< Parameters instance1 \see :Parameters: */ - SimulableSequence* dataSynth; /*!< Simuleable sequence instance, only PGSE is supported in 0.2 */ + SimulableSequence* dataSynth; /*!< Simuleable sequence instance, PGSE and General Wavefroms only */ + + std::vector> ini_walker_positions; /*!< patch for regular sampling in a subdivision */ + + std::vector * plyObstacles_list; /*!< pointer to a vector with all the instances of PLYObstacles */ + + std::vector * cylinders_list; /*!< pointer to a vector with all the instances of Cylinders */ + + std::vector * sphere_list; /*!< pointer to a vector with all the instances of Spheres */ + /*! \fn MCSimulation. @@ -82,15 +91,15 @@ class MCSimulation private: - void addCylindersObstaclesFromFiles(); + void addObstacles(); - void addPLYObstaclesFromFiles(); + void addPLYObstacles(); void addVoxels(); - void addCylindersConfigurations(); + // void addCylindersConfigurations(); - void addExtraObstacles(); + //void addExtraObstacles(); }; diff --git a/src/obstacle.cpp b/src/obstacle.cpp index f8b74dd..5697425 100644 --- a/src/obstacle.cpp +++ b/src/obstacle.cpp @@ -1,7 +1,7 @@ #include "obstacle.h" #include -Obstacle::Obstacle():percolation(0),T2(0) +Obstacle::Obstacle():percolation(0),T2(0),id(-1) { } diff --git a/src/obstacle.h b/src/obstacle.h index f7a9ac2..5a49168 100644 --- a/src/obstacle.h +++ b/src/obstacle.h @@ -10,12 +10,12 @@ #define OBSTACLE_H #include "collision.h" #include "walker.h" -#include +#include "Eigen/Core" class Obstacle { public: - int id; /*!< Unique id of the simulation */ + int id; /*!< Unique id of the simulation */ int count_perc_crossings; /*!< Auxiliar value to count the number of percolatin crossings in a simulation */ double percolation; /*!< Percolation value between 0 and 1. */ double T2; /*!< T2 decay, not used by default */ diff --git a/src/parallelmcsimulation.cpp b/src/parallelmcsimulation.cpp index 07746e6..6934994 100644 --- a/src/parallelmcsimulation.cpp +++ b/src/parallelmcsimulation.cpp @@ -1,14 +1,35 @@ #include "parallelmcsimulation.h" -#include +#include #include #include "constants.h" #include "simerrno.h" #include "cylindergammadistribution.h" +#include "spheregammadistribution.h" + +//* Auxiliare method to split words in a line using the spaces*// +template +void split_(const std::string &s, char delim, Out result) { + std::stringstream ss; + ss.str(s); + std::string item; + while (std::getline(ss, item, delim)) { + *(result++) = item; + } +} + + +std::vector split(const std::string &s, char delim) { + std::vector elems; + split_(s, delim, std::back_inserter(elems)); + return elems; +} + using namespace std; ParallelMCSimulation::ParallelMCSimulation(std::string config_file) { + mean_second_passed = 0; total_sim_particles = 0; @@ -17,12 +38,12 @@ ParallelMCSimulation::ParallelMCSimulation(std::string config_file) params.readSchemeFile(config_file); + SimErrno::checkSimulationParameters(params); //printSimulationInfo(); + initializeUnitSimulations(); - SimErrno::checkSimulationParameters(params); SimErrno::printSimulatinInfo(params,std::cout); - initializeUnitSimulations(); } ParallelMCSimulation::ParallelMCSimulation(Parameters ¶ms) @@ -31,9 +52,9 @@ ParallelMCSimulation::ParallelMCSimulation(Parameters ¶ms) mean_second_passed = 0; total_sim_particles = 0; SimErrno::checkSimulationParameters(params); - SimErrno::printSimulatinInfo(params,std::cout); this->params = params; initializeUnitSimulations(); + SimErrno::printSimulatinInfo(params,std::cout); icvf=0; } @@ -112,13 +133,21 @@ void ParallelMCSimulation::startSimulation() " " << params.max_sampling_area[2] << " )\n"; } + if((params.custom_sampling_area or params.voxels_list.size()>0) and (params.computeVolume)){ - string message="Estimated Intra-axonal volume from sampling (mm^2):"; + string message="Estimated Intra-axonal volume from sampling (mm^3):"; out << std::scientific; SimErrno::info(message,out,false); out << std::scientific; out << aprox_volumen << endl; } + + + if(params.hex_cyl_packing == true){ + SimErrno::info("Hex. packing radius: "+ to_string( params.hex_packing_radius) ,out,false); + SimErrno::info("Hex. packing separation: " + to_string( params.hex_packing_separation) ,out,false); + SimErrno::info("Hex. packing ICVF: " + to_string( params.hex_packing_icvf) ,out,false); + } out.close(); } @@ -130,6 +159,8 @@ void ParallelMCSimulation::initializeUnitSimulations() specialInitializations(); // The number of walker N devided between all the processes + + unsigned N_per_sim = params.num_walkers/params.num_proc; for(unsigned i = 0; i < params.num_proc-1; i++){ @@ -139,8 +170,11 @@ void ParallelMCSimulation::initializeUnitSimulations() params_temp.num_walkers = N_per_sim; params_temp.output_base_name+= "_"+std::to_string(i); - MCSimulation* simulation_ = new MCSimulation(params_temp); + MCSimulation* simulation_ = new MCSimulation(params_temp); + simulation_->plyObstacles_list = &this->plyObstacles_list; + simulation_->cylinders_list = &this->cylinders_list; + simulation_->sphere_list = &this->spheres_list; simulation_->dynamicsEngine->print_expected_time = 0; simulations.push_back(simulation_); @@ -155,8 +189,12 @@ void ParallelMCSimulation::initializeUnitSimulations() params_temp.num_walkers = params.num_walkers - N_per_sim *(params.num_proc-1); params_temp.output_base_name+= "_"+std::to_string(params.num_proc-1); + MCSimulation* simulation_ = new MCSimulation(params_temp); //simulation_->dynamicsEngine->print_expected_time = 0; + simulation_->plyObstacles_list = &this->plyObstacles_list; + simulation_->cylinders_list = &this->cylinders_list; + simulation_->sphere_list = &this->spheres_list; simulations.push_back(simulation_); if(params.verbatim) @@ -175,14 +213,19 @@ void ParallelMCSimulation::jointResults() std::string outDWI = params.output_base_name + "_DWI.txt"; + std::string outDWI_intra = params.output_base_name + "_DWI_intra.txt"; + std::string outDWI_extra = params.output_base_name + "_DWI_extra.txt"; std::string outDWIi = params.output_base_name + "_DWI_img.txt"; std::string outPhase = params.output_base_name + "_phase_shift.txt"; std::string boutDWI = params.output_base_name + "_DWI.bfloat"; + std::string boutDWI_intra = params.output_base_name + "_DWI_intra.bfloat"; + std::string boutDWI_extra = params.output_base_name + "_DWI_extra.bfloat"; std::string boutDWIi = params.output_base_name + "_DWI_img.bfloat"; std::string boutPhase = params.output_base_name + "_phase_shift.bfloat"; - std::ofstream phase_out,phase_bout, dwi_out, dwii_out, dwi_bout, dwii_bout; + std::ofstream phase_out,phase_bout, dwi_out, dwii_out, dwi_bout, dwii_bout, + dwi_intra_out,dwi_extra_out,dwi_intra_bout,dwi_extra_bout; if(params.log_phase_shift){ if(params.write_bin) @@ -194,27 +237,49 @@ void ParallelMCSimulation::jointResults() if(params.write_txt){ dwi_out.open(outDWI ,std::ofstream::out); //real part - dwii_out.open(outDWIi,std::ofstream::out); //img part + + + if(params.img_signal == true) + dwii_out.open(outDWIi,std::ofstream::out); //img part + + if(params.separate_signals == true){ + dwi_intra_out.open(outDWI_intra ,std::ofstream::out); //intra part + dwi_extra_out.open(outDWI_extra ,std::ofstream::out); //extra part + } } if(params.write_bin){ dwi_bout.open(boutDWI ,std::ofstream::binary); //real part (binary) - dwii_bout.open(boutDWIi,std::ofstream::binary); //img part (binary) - } + if(params.img_signal == true) + {dwii_bout.open(boutDWIi,std::ofstream::binary);} //img part (binary) + if(params.separate_signals == true){ + dwi_intra_bout.open(boutDWI_intra ,std::ofstream::binary); //intra part + dwi_extra_bout.open(boutDWI_extra ,std::ofstream::binary); //extra part + } + } for (unsigned i = 0 ; i < simulations[0]->dataSynth->DWI.size(); i++ ) { double DWI = 0; double DWIi = 0; + double DWI_intra = 0; + double DWI_extra = 0; std::vector phase(3600, 0); for(unsigned p = 0; p < params.num_proc; p++) { DWI+= simulations[p]->dataSynth->DWI[i]; //real part - DWIi+= simulations[p]->dataSynth->DWIi[i]; //img part + + if(params.img_signal == true) + DWIi+= simulations[p]->dataSynth->DWIi[i]; //img part + + if(params.separate_signals){ + DWI_intra+= simulations[p]->dataSynth->DWI_intra[i]; //intra part + DWI_extra+= simulations[p]->dataSynth->DWI_extra[i]; //extra part + } // for each histogram bin, 36000 fixed size for(unsigned h = 0; h < 3600; h++) @@ -227,14 +292,32 @@ void ParallelMCSimulation::jointResults() if(params.write_txt){ dwi_out << DWI << std::endl; - dwii_out << DWIi << std::endl; + + if(params.img_signal == true) + dwii_out << DWIi << std::endl; + + if(params.separate_signals){ + dwi_intra_out << DWI_intra << std::endl; + dwi_extra_out << DWI_extra << std::endl; + } } if(params.write_bin){ float holder = float(DWI); dwi_bout.write(reinterpret_cast(&holder), sizeof(float)); - holder = float(DWIi); - dwii_bout.write(reinterpret_cast(&holder), sizeof(float)); + + if(params.img_signal == true) + { + holder = float(DWIi); + dwii_bout.write(reinterpret_cast(&holder), sizeof(float)); + } + + if(params.separate_signals){ + float holder = float(DWI_intra); + dwi_intra_bout.write(reinterpret_cast(&holder), sizeof(float)); + holder = float(DWI_extra); + dwi_extra_bout.write(reinterpret_cast(&holder), sizeof(float)); + } } if(params.log_phase_shift){ @@ -264,11 +347,25 @@ void ParallelMCSimulation::jointResults() if(params.write_txt){ dwi_out.close(); - dwii_out.close(); + + if(params.img_signal == true) + dwii_out.close(); + + if(params.separate_signals){ + dwi_intra_out.close(); + dwi_extra_out.close(); + } } if(params.write_bin){ dwi_bout.close(); - dwii_bout.close(); + + if(params.img_signal == true) + dwii_bout.close(); + + if(params.separate_signals){ + dwi_intra_bout.close(); + dwi_extra_bout.close(); + } } if(params.log_phase_shift) @@ -277,12 +374,16 @@ void ParallelMCSimulation::jointResults() stuck_count = illegal_count = 0; + + // ICVF for subdivisions + for(unsigned i = 0 ; i < simulations.size();i++){ stuck_count += simulations[i]->dynamicsEngine->sentinela.stuck_count; illegal_count += simulations[i]->dynamicsEngine->sentinela.illegal_count; - icvf+= simulations[i]->dynamicsEngine->num_simulated_walkers*simulations[i]->dynamicsEngine->icvf; + icvf+= simulations[i]->dynamicsEngine->num_simulated_walkers*simulations[i]->dynamicsEngine->icvf; } - icvf/=float(this->total_sim_particles); + + icvf/= float(this->total_sim_particles); if(params.custom_sampling_area == false and params.voxels_list.size()>0){ for(auto i = 0; i<3;i++){ @@ -291,13 +392,14 @@ void ParallelMCSimulation::jointResults() } } - float sampling_area = 1; + float sampling_volume =1; for (auto i =0; i < 3;i++ ){ - sampling_area*= (params.max_sampling_area[i]-params.min_sampling_area[i]); + sampling_volume*= (params.max_sampling_area[i]-params.min_sampling_area[i]); } - aprox_volumen = (icvf)*sampling_area; + + aprox_volumen = (icvf)*sampling_volume; @@ -310,20 +412,39 @@ void ParallelMCSimulation::jointResults() { std::string out_vox_DWI = params.output_base_name + "_voxels_DWI.txt"; std::string out_vox_DWIi = params.output_base_name + "_voxels_DWI_img.txt"; + std::string out_vox_DWI_intra = params.output_base_name + "_voxels_DWI_intra.txt"; + std::string out_vox_DWI_extra = params.output_base_name + "_voxels_DWI_extra.txt"; std::string bout_vox_DWI = params.output_base_name + "_voxels_DWI.bfloat"; std::string bout_vox_DWIi = params.output_base_name + "_voxels_DWI_img.bfloat"; + std::string bout_vox_DWI_intra = params.output_base_name + "_voxels_DWI_intra.bfloat"; + std::string bout_vox_DWI_extra = params.output_base_name + "_voxels_DWI_extra.bfloat"; - std::ofstream dwi_out, dwii_out, dwi_bout, dwii_bout; + std::ofstream dwi_out, dwii_out, dwi_bout, dwii_bout, + dwi_intra_out, dwi_extra_out, dwi_intra_bout,dwi_extra_bout ; if(params.write_txt){ dwi_out.open(out_vox_DWI ,std::ofstream::out); //real part - dwii_out.open(out_vox_DWIi,std::ofstream::out); //img part + + if(params.img_signal == true) + dwii_out.open(out_vox_DWIi,std::ofstream::out); //img part + + if(params.separate_signals){ + dwi_intra_out.open(out_vox_DWI_intra ,std::ofstream::out); //intra part + dwi_extra_out.open(out_vox_DWI_extra ,std::ofstream::out); //extra part + } } if(params.write_bin){ dwi_bout.open(bout_vox_DWI ,std::ofstream::binary); //real part (binary) - dwii_bout.open(bout_vox_DWIi,std::ofstream::binary); //img part (binary) + if(params.img_signal == true) + dwii_bout.open(bout_vox_DWIi,std::ofstream::binary); //img part (binary) + + if(params.separate_signals){ + dwi_intra_bout.open(bout_vox_DWI_intra ,std::ofstream::binary); //intra part (binary) + dwi_extra_bout.open(bout_vox_DWI_extra ,std::ofstream::binary); //extra part (binary) + } + } @@ -332,23 +453,54 @@ void ParallelMCSimulation::jointResults() //## HEADER if(params.write_txt){ + // #Num_voxels dwi_out << simulations[0]->dataSynth->subdivisions.size() << endl; - dwii_out << simulations[0]->dataSynth->subdivisions.size() << endl; + + if(params.img_signal == true) + { + dwii_out << simulations[0]->dataSynth->subdivisions.size() << endl; + dwii_out << simulations[0]->dataSynth->DWI.size() << endl; + } + // #Size_DWI dwi_out << simulations[0]->dataSynth->DWI.size() << endl; - dwii_out << simulations[0]->dataSynth->DWI.size() << endl; + + if(params.separate_signals){ + // #Num_voxels + dwi_intra_out << simulations[0]->dataSynth->subdivisions.size() << endl; + dwi_extra_out << simulations[0]->dataSynth->subdivisions.size() << endl; + // #Size_DWI + dwi_intra_out << simulations[0]->dataSynth->DWI.size() << endl; + dwi_extra_out << simulations[0]->dataSynth->DWI.size() << endl; + } } //## HEADER (Binary) if(params.write_bin){ // #Num_voxels float holder = float(simulations[0]->dataSynth->subdivisions.size()); dwi_bout.write (reinterpret_cast(&holder), sizeof(float)); - dwii_bout.write(reinterpret_cast(&holder), sizeof(float)); + + if(params.img_signal == true) + dwii_bout.write(reinterpret_cast(&holder), sizeof(float)); + // #Size_DWI holder = float(simulations[0]->dataSynth->DWI.size()); dwi_bout.write (reinterpret_cast(&holder), sizeof(float)); - dwii_bout.write(reinterpret_cast(&holder), sizeof(float)); + + if(params.img_signal == true) + dwii_bout.write(reinterpret_cast(&holder), sizeof(float)); + + if(params.separate_signals){ + // #Num_voxels + float holder = float(simulations[0]->dataSynth->subdivisions.size()); + dwi_intra_bout.write(reinterpret_cast(&holder), sizeof(float)); + dwi_extra_bout.write(reinterpret_cast(&holder), sizeof(float)); + // #Size_DWI + holder = float(simulations[0]->dataSynth->DWI.size()); + dwi_intra_bout.write(reinterpret_cast(&holder), sizeof(float)); + dwi_extra_bout.write(reinterpret_cast(&holder), sizeof(float)); + } } for(uint s = 0; s < simulations[0]->dataSynth->subdivisions.size(); s++) @@ -372,34 +524,74 @@ void ParallelMCSimulation::jointResults() { double sub_DWI = 0; double sub_DWIi = 0; + double sub_DWI_intra = 0; + double sub_DWI_extra = 0; for(unsigned p = 0; p < params.num_proc; p++) { sub_DWI += simulations[p]->dataSynth->sub_DWI[s][i]; //real part - sub_DWIi+= simulations[p]->dataSynth->sub_DWIi[s][i]; //img part + + if(params.img_signal == true) + sub_DWIi+= simulations[p]->dataSynth->sub_DWIi[s][i]; //img part + + if(params.separate_signals){ + sub_DWI_intra += simulations[p]->dataSynth->sub_DWI_intra[s][i]; //intra part + sub_DWI_extra += simulations[p]->dataSynth->sub_DWI_extra[s][i]; //extra part + } } if(params.write_txt){ dwi_out << sub_DWI << std::endl; - dwii_out << sub_DWIi << std::endl; + + if(params.img_signal == true) + dwii_out << sub_DWIi << std::endl; + + if(params.separate_signals){ + dwi_intra_out << sub_DWI_intra << std::endl; + dwi_extra_out << sub_DWI_extra << std::endl; + } } if(params.write_bin){ float holder = float(sub_DWI); dwi_bout.write(reinterpret_cast(&holder), sizeof(float)); - holder = float(sub_DWIi); - dwii_bout.write(reinterpret_cast(&holder), sizeof(float)); + + if(params.img_signal == true) + { + holder = float(sub_DWIi); + dwii_bout.write(reinterpret_cast(&holder), sizeof(float)); + } + + if(params.separate_signals){ + float holder = float(sub_DWI_intra); + dwi_intra_bout.write(reinterpret_cast(&holder), sizeof(float)); + holder = float(sub_DWI_extra); + dwi_extra_bout.write(reinterpret_cast(&holder), sizeof(float)); + } } } } if(params.write_txt){ dwi_out.close(); - dwii_out.close(); + + if(params.img_signal == true) + dwii_out.close(); + + if(params.separate_signals){ + dwi_intra_out.close(); + dwi_extra_out.close(); + } } if(params.write_bin){ dwi_bout.close(); - dwii_bout.close(); + if(params.img_signal == true) + dwii_bout.close(); + + if(params.separate_signals){ + dwi_intra_bout.close(); + dwi_extra_bout.close(); + } } PDen_out.close(); @@ -435,15 +627,177 @@ void ParallelMCSimulation::jointResults() void ParallelMCSimulation::specialInitializations() { + addObstacleConfigurations(); + addObstaclesFromFiles(); + + if(params.number_subdivisions>1){ + params.addSubdivisions(); + } + + //std::cout << params.img_signal << std::endl; + for(unsigned i = 0; i < params.PLY_files.size(); i++){ + //std::cout << i << std::endl; + //plyObstacles_list.push_back(PLYObstacle(params.PLY_files[i],centers,max_distance,params.PLY_scales[i])); + plyObstacles_list.push_back(PLYObstacle(params.PLY_files[i],params.PLY_scales[i])); + plyObstacles_list.back().id=i; + plyObstacles_list.back().percolation = params.PLY_percolation[i]; + } +} + + +void ParallelMCSimulation::addObstaclesFromFiles() +{ + for(unsigned i = 0; i < params.cylinders_files.size(); i++){ + + bool z_flag = false; + std::ifstream in(params.cylinders_files[i]); + + if(!in){ + //std::cout << "\033[1;37m[INFO]\033[0m Sim: " << count << " " << "[ERROR] Unable to open:" << params.cylinders_files[i] << std::endl; + return; + } + + bool first=true; + for( std::string line; getline( in, line ); ) + { + if(first) {first-=1;continue;} + + std::vector jkr = split(line,' '); + if (jkr.size() != 7){ + z_flag = true; + //std::cout << "\033[1;33m[Warning]\033[0m Cylinder orientation was set towards the Z direction by default" << std::endl; + } + break; + } + in.close(); + + in.open(params.cylinders_files[i]); + + if(z_flag){ + double x,y,z,r; + double scale; + in >> scale; + while (in >> x >> y >> z >> r) + { + cylinders_list.push_back(Cylinder(Eigen::Vector3d(x,y,z),Eigen::Vector3d(x,y,z+1.0),r,scale)); + } + in.close(); + } + else{ + double x,y,z,ox,oy,oz,r; + double scale; + in >> scale; + while (in >> x >> y >> z >> ox >> oy >> oz >> r) + { + cylinders_list.push_back(Cylinder(Eigen::Vector3d(x,y,z),Eigen::Vector3d(ox,oy,oz),r,scale)); + } + in.close(); + } + } + + for(unsigned i = 0; i < params.spheres_files.size(); i++){ + std::ifstream in(params.spheres_files[i]); + if(!in){ + return; + } + + bool first=true; + for( std::string line; getline( in, line ); ) + { + if(first) {first-=1;continue;} + break; + } + in.close(); + + in.open(params.spheres_files[i]); + double x,y,z,r; + double scale; + in >> scale; + + while (in >> x >> y >> z >> r) + { + spheres_list.push_back(Sphere(Eigen::Vector3d(x,y,z),r,scale)); + } + in.close(); + } +} + +void ParallelMCSimulation::addObstacleConfigurations() +{ + + if(params.hex_cyl_packing){ + + double rad = params.hex_packing_radius,sep = params.hex_packing_separation; + + // h = sqrt(3)/2 * sep + double h =0.8660254037844386*sep; + + cylinders_list.push_back(Cylinder(Eigen::Vector3d(0,0,0),Eigen::Vector3d(0,0,1.0),rad)); + cylinders_list.push_back(Cylinder(Eigen::Vector3d(sep,0,0),Eigen::Vector3d(sep,0,1.0),rad)); - if(params.gamma_packing == true){ + cylinders_list.push_back(Cylinder(Eigen::Vector3d(0,2.0*h,0),Eigen::Vector3d(0,2.0*h,1.0),rad)); + cylinders_list.push_back(Cylinder(Eigen::Vector3d(sep,2.0*h,0),Eigen::Vector3d(sep,2.0*h,1.0),rad)); + + cylinders_list.push_back(Cylinder(Eigen::Vector3d(0.5*sep,h,0),Eigen::Vector3d(0.5*sep,h,1.0),rad)); + + // To avoid problems with the boundaries + cylinders_list.push_back(Cylinder(Eigen::Vector3d(-0.5*sep,h,0),Eigen::Vector3d(-0.5*sep,h,1.0),rad)); + cylinders_list.push_back(Cylinder(Eigen::Vector3d(1.5*sep,h,0),Eigen::Vector3d(1.5*sep,h,1.0),rad)); + + if(params.voxels_list.size()>0) + params.voxels_list.clear(); + + pair voxel_(Eigen::Vector3d(0,0,0),Eigen::Vector3d(sep,2.0*h,2.0*h)); + params.voxels_list.push_back(voxel_); + } + + if(params.hex_sphere_packing){ + + double rad = params.hex_packing_radius,sep = params.hex_packing_separation; + double h = sqrt(3.)/2.0*sep; + //double h = 0.866025404*sep; + + // // [0.0, 0.0, 0.0, 1.0],[s, 0.0, 0.0, 1.0], + spheres_list.push_back(Sphere(Eigen::Vector3d(0.0, 0.0, 0.0),rad)); + spheres_list.push_back(Sphere(Eigen::Vector3d(sep, 0.0, 0.0),rad)); + + // // [s/2.0, h, 0.0, 1.0], + spheres_list.push_back(Sphere(Eigen::Vector3d(sep/2.0, h, 0.0),rad)); + + // // [0.0, 2*h, 0.0, 1.0],[s, 2*h, 0.0, 1.0], + spheres_list.push_back(Sphere(Eigen::Vector3d(0.0, 2.*h, 0.0),rad)); + spheres_list.push_back(Sphere(Eigen::Vector3d(sep, 2.*h, 0.0),rad)); + + // // [0.0, h, h, 1.0],[s, h, h, 1.0], + spheres_list.push_back(Sphere(Eigen::Vector3d(0.0, h, h),rad)); + spheres_list.push_back(Sphere(Eigen::Vector3d(sep, h, h),rad)); + + // // [s/2, 0, h, 1.0],[s/2, 2*h, h, 1.0], + spheres_list.push_back(Sphere(Eigen::Vector3d(sep/2., 0.0, h),rad)); + spheres_list.push_back(Sphere(Eigen::Vector3d(sep/2., 2.0*h, h),rad)); + + // // [0.0, h, -h, 1.0],[s, h, -h, 1.0], + spheres_list.push_back(Sphere(Eigen::Vector3d(0.0, h, -h),rad)); + spheres_list.push_back(Sphere(Eigen::Vector3d(sep,h,-h),rad)); + + // // [s/2, 0, -h, 1.0],[s/2, 2*h, -h, 1.0], + spheres_list.push_back(Sphere(Eigen::Vector3d(sep/2.0 ,0.0 ,-h),rad)); + spheres_list.push_back(Sphere(Eigen::Vector3d(sep/2.0,2.0*h,-h),rad)); + + pair voxel_(Eigen::Vector3d(0,0,-h),Eigen::Vector3d(sep,2.0*h,h)); + params.voxels_list.push_back(voxel_); + + } + + + if(params.gamma_cyl_packing == true){ string message = "Initialializing Gamma distribution (" + std::to_string(params.gamma_packing_alpha) + "," + std::to_string(params.gamma_packing_beta) + ").\n"; SimErrno::info(message,cout); - CylinderGammaDistribution gamma_dist(params.gamma_num_cylinders,params.gamma_packing_alpha, params.gamma_packing_beta,params.gamma_icvf - ,params.min_limits, params.max_limits); + CylinderGammaDistribution gamma_dist(params.gamma_num_obstacles,params.gamma_packing_alpha, params.gamma_packing_beta,params.gamma_icvf + ,params.min_limits, params.max_limits,params.min_obstacle_radii); gamma_dist.displayGammaDistribution(); @@ -467,22 +821,53 @@ void ParallelMCSimulation::specialInitializations() gamma_dist.printSubstrate(out); - params.cylinders_files.push_back(file); + this->cylinders_list = gamma_dist.cylinders; + + //params.cylinders_files.push_back(file); + + out.close(); SimErrno::info("Done.\n",cout); } -} + if(params.gamma_sph_packing == true){ + string message = "Initialializing Gamma distribution (" + std::to_string(params.gamma_packing_alpha) + "," + + std::to_string(params.gamma_packing_beta) + ").\n"; + SimErrno::info(message,cout); + SphereGammaDistribution gamma_dist(params.gamma_num_obstacles,params.gamma_packing_alpha, params.gamma_packing_beta,params.gamma_icvf + ,params.min_limits, params.max_limits,params.min_obstacle_radii); + gamma_dist.displayGammaDistribution(); + gamma_dist.createGammaSubstrate(); + params.max_limits = gamma_dist.max_limits; + params.min_limits = gamma_dist.min_limits; + if(params.voxels_list.size()<=0){ + pair voxel_(params.min_limits,params.max_limits); + params.voxels_list.push_back(voxel_); + } + else{ + params.voxels_list[0].first = params.min_limits; + params.voxels_list[0].second = params.max_limits; + } + + string file = params.output_base_name + "_gamma_distributed_sphere_list.txt"; + ofstream out(file); + gamma_dist.printSubstrate(out); + this->spheres_list = gamma_dist.spheres; + //params.cylinders_files.push_back(file); + out.close(); + SimErrno::info("Done.\n",cout); + } +} diff --git a/src/parallelmcsimulation.h b/src/parallelmcsimulation.h index c217773..d011aac 100644 --- a/src/parallelmcsimulation.h +++ b/src/parallelmcsimulation.h @@ -19,17 +19,21 @@ class ParallelMCSimulation { public: - Parameters params; /*!< Parameters instance \see :Parameters: */ - - double mean_second_passed; /*!< Simualation total time in seconds */ - unsigned total_sim_particles; /*!< Total number of simulated particles */ - - unsigned stuck_count; /*!< Counts the number of particles stuck in the simulations */ - unsigned illegal_count; /*!< Counts the number of particles that attempt to cross */ - double icvf; /*!< Stores the ICVF based on the particles sampling */ - double aprox_volumen; /*!< Stores the volumen based on ICVF and the voxel size */ - std::vector simulations; /*!< vector of pointers to MCSimulation instances */ - std::vector sim_threads; /*!< Number of threads (instances and processors) to be used */ + Parameters params; /*!< Parameters instance \see :Parameters: */ + + double mean_second_passed; /*!< Simualation total time in seconds */ + unsigned total_sim_particles; /*!< Total number of simulated particles */ + unsigned stuck_count; /*!< Counts the number of particles stuck in the simulations */ + unsigned illegal_count; /*!< Counts the number of particles that attempt to cross */ + double icvf; /*!< Stores the ICVF based on the particles sampling */ + double aprox_volumen; /*!< Stores the volumen based on ICVF and the voxel size */ + std::vector simulations; /*!< vector of pointers to MCSimulation instances */ + std::vector sim_threads; /*!< Number of threads (instances and processors) to be used */ + std::vector plyObstacles_list; /*!< vector with all the instances of PLYObstacles */ + std::vector cylinders_list; /*!< vector with all the instances of cylinders */ + std::vector spheres_list; /*!< vector with all the instances of cylinders */ + + std::vector total_ini_walker_pos; /*!< Number of threads (instances and processors) to be used */ /*! * \param config_file .conf file name with the full set of experiments parameters. @@ -74,6 +78,16 @@ class ParallelMCSimulation */ void specialInitializations(); + /*! + * \brief Initialize all the Cylinders from a file. + */ + void addObstaclesFromFiles(); + + /*! + * \brief Used to initialize the hexagonal packing + */ + void addObstacleConfigurations(); + }; #endif // PARALLELMCSIMULATION_H diff --git a/src/parameters.cpp b/src/parameters.cpp index ce2bd6d..66fde67 100644 --- a/src/parameters.cpp +++ b/src/parameters.cpp @@ -15,19 +15,21 @@ Parameters::Parameters() write_txt = false; write_bin = true; - hex_packing = false; + hex_cyl_packing = false; + hex_sphere_packing = false; hex_packing_radius = 0; hex_packing_separation = 0; - gamma_packing = false; + gamma_cyl_packing = false; + gamma_sph_packing = false; gamma_packing_alpha = 0; gamma_packing_beta = 0; - gamma_num_cylinders = 0; - gamma_icvf = 0; + gamma_num_obstacles = 0; + gamma_icvf = 0; + min_obstacle_radii = 0; ini_walkers_file = ""; num_proc = 0; - hex_packing = false; verbatim = false; record_phase_times.clear(); @@ -36,6 +38,10 @@ Parameters::Parameters() computeVolume = false; custom_sampling_area = false; + separate_signals = false; + img_signal = false; + hex_sphere_packing = false; + for (auto i= 0;i<3; i++) min_sampling_area[i] = max_sampling_area[i] = 0.0; } @@ -134,11 +140,12 @@ void Parameters::readSchemeFile(std::string conf_file_path) assert(0); } } - else if(str_dist(tmp,"subdivisions_number") <= 1) + else if(str_dist(tmp,"subdivisions_number") <= 2) { in >> number_subdivisions; - subdivision_flag |= (number_subdivisions>1)?true:false; - if(number_subdivisions > 100){ + subdivision_flag = (number_subdivisions>1)?true:false; + + if(number_subdivisions > 500 || number_subdivisions <=0 ){ SimErrno::error("Unrealistic number of resulting subdivision voxels : " + std::to_string(number_subdivisions) + "^3",cout); assert(0); @@ -170,6 +177,11 @@ void Parameters::readSchemeFile(std::string conf_file_path) { this->computeVolume = true; } + else if( str_dist(tmp,"separate_signals") <= 1 ) + { + this->separate_signals = true; + this->computeVolume = true; + } else if( str_dist(tmp,"log_phase_shift") <= 2 ) { this->log_phase_shift = true; @@ -203,11 +215,10 @@ void Parameters::readSchemeFile(std::string conf_file_path) sim_duration*=s_to_ms; } - if(number_subdivisions>1){ - addSubdivisions(); - } + in.close(); + return; } @@ -348,6 +359,12 @@ void Parameters::readObstacles(ifstream& in) cylinders_files.push_back(path); num_obstacles++; } + if(str_dist(tmp,"spheres_list") <= 2){ + string path; + in >> path; + spheres_files.push_back(path); + num_obstacles++; + } if(str_dist(tmp,"oriented_cylinders_list") <= 2){ string path; in >> path; @@ -358,6 +375,7 @@ void Parameters::readObstacles(ifstream& in) string path; in >> path; PLY_files.push_back(path); + PLY_percolation.push_back(0); num_obstacles++; } if(str_dist(tmp,"ply_scale") <= 1){ @@ -365,12 +383,35 @@ void Parameters::readObstacles(ifstream& in) in >> scale_; PLY_scales.push_back(scale_); } + if(str_dist(tmp,"ply_file_list") <= 2){ + string path; + in >> path; + readPLYFileList(path); + num_obstacles++; + } + if(str_dist(tmp,"ply_file_list_scale_permeability") <= 3){ + string path; + in >> path; + readPLYFileListScalePercolation(path); + num_obstacles++; + } if(str_dist(tmp,"") <=1){ + this->hex_cyl_packing = true; + readHexagonalParams(in); + num_obstacles++; + } + if(str_dist(tmp,"") <=1){ + this->hex_sphere_packing = true; readHexagonalParams(in); num_obstacles++; } - if(str_dist(tmp,"") <=1){ + gamma_cyl_packing = true; + readGammaParams(in); + num_obstacles++; + } + if(str_dist(tmp,"") <=1){ + gamma_sph_packing = true; readGammaParams(in); num_obstacles++; } @@ -380,10 +421,6 @@ void Parameters::readObstacles(ifstream& in) SimErrno::warning(" tag initialized, but no valid obstacle tag found",cout); } - // if(PLY_scales.size() < PLY_files.size()){ - // for(unsigned int i = PLY_scales.size()-1; i < PLY_scales.size(); i++ ) - // PLY_scales[i] = 1; - // } } void Parameters::readVoxels(ifstream& in) @@ -522,11 +559,9 @@ void Parameters::readInfoGatheringParams(ifstream& in) void Parameters::readHexagonalParams(ifstream &in) { - hex_packing = true; - string tmp=""; - while(str_dist(tmp,"")) + while(true) { in >> tmp; std::transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower); @@ -537,17 +572,23 @@ void Parameters::readHexagonalParams(ifstream &in) if(str_dist(tmp,"separation") <= 1){ in >> hex_packing_separation; } + + if(str_dist(tmp,"icvf") <= 1){ + in >> hex_packing_icvf; + } + + if(str_dist(tmp,"") == 0 || str_dist(tmp,"") == 0){ + break; + } } } + void Parameters::readGammaParams(ifstream &in) { - - gamma_packing = true; - string tmp=""; - while(str_dist(tmp,"") > 0) + while(str_dist(tmp,"") > 0 || str_dist(tmp," 0 ) { in >> tmp; std::transform(tmp.begin(), tmp.end(), tmp.begin(), ::tolower); @@ -564,16 +605,22 @@ void Parameters::readGammaParams(ifstream &in) in >> gamma_packing_beta; } else if(str_dist(tmp,"num_cylinders") <= 1){ - in >> gamma_num_cylinders; + in >> gamma_num_obstacles; + } + else if(str_dist(tmp,"num_spheres") <= 1){ + in >> gamma_num_obstacles; } else if(str_dist(tmp,"icvf") <= 1){ in >> gamma_icvf; } + else if(str_dist(tmp,"min_radius") <= 1){ + in >> min_obstacle_radii; + } else if(str_dist(tmp,"") == 0){ in.clear(); //in.ignore(); } - else if(str_dist(tmp,"") ==0){ + else if(str_dist(tmp,"") ==0 || str_dist(tmp,"") == 0 ){ break; } @@ -631,9 +678,13 @@ void Parameters::addSubdivisions() tmp.max_limits[2] = tmp.min_limits[2] + gap[2]; subdivisions.push_back(tmp); + + //cout << ' ' << tmp.min_limits[0] << ' ' << tmp.min_limits[1] << ' ' <> scale; + + if(scale <=0.0){ + SimErrno::error("PLY scale must be a positive number",cout); + assert(0); + } + + if(scale >=1e6 || scale <= 1e-6){ + SimErrno::warning("PLY may be unsuitable for simulation.",cout); + assert(0); + } + + string ply_file; + while( in >> ply_file){ + PLY_files.push_back(ply_file); + PLY_scales.push_back(scale); + PLY_percolation.push_back(0.0); + } + in.close(); +} + +void Parameters::readPLYFileListScalePercolation(string path) +{ + ifstream in(path); + + if(in.fail()){ + SimErrno::error("PLY file list not found in:",cout); + cout << path << endl; + assert(0); + } + + float scale,percolation; + string ply_file; + while( in >> ply_file){ + in >> scale; + in >> percolation; + PLY_files.push_back(ply_file); + PLY_scales.push_back(scale); + PLY_percolation.push_back(percolation); + } + in.close(); +} diff --git a/src/parameters.h b/src/parameters.h index 804c0cc..3e66f4d 100644 --- a/src/parameters.h +++ b/src/parameters.h @@ -3,7 +3,7 @@ * \details Basic class to store and handle all the possible simulation parameters. * \author Jonathan Rafael * \date November 2016 -* \version 0.2 +* \version 1.5 *===========================================================================================================*/ #ifndef PARAMETERS_H #define PARAMETERS_H @@ -45,8 +45,11 @@ class Parameters std::vector cylinders_files; /*!< file paths with a list of cilinders obstacles */ std::vector PLY_files; /*!< file paths with PLY obstacle files */ + std::vector spheres_files; /*!< file paths with spheres obstacle files */ std::vector PLY_scales; /*!< Auxiliary vector to save PLY file scales */ - std::vector ini_delta_pos; /*!< Delta position for the wlakers */ + std::vector PLY_percolation; /*!< Auxiliary vector to save PLY percolation */ + + std::vector ini_delta_pos; /*!< Delta position for the walkers */ unsigned num_proc; /*!< Number of precessors/process to launch in parallel */ @@ -58,17 +61,21 @@ class Parameters std::vector record_phase_times; /*!< time indexes, used to save the phase shif of all walkers at certain time */ std::vector record_prop_times; /*!< time indexes, used to save the mean propagator of the walkers at c. times */ - bool hex_packing; /*!< flag, true if an haxagonal packing should be used */ - double hex_packing_radius; /*!< float, constant radius for the cylinders */ + bool hex_cyl_packing; /*!< flag, true if an haxagonal packing should be used */ + bool hex_sphere_packing; /*!< flag, true if an haxagonal packing OF SPHERES should be used */ + double hex_packing_radius; /*!< float, constant radius for the cylinders */ double hex_packing_separation; /*!< float, separation distance betwen cylinders (separation > 2*radius) */ + double hex_packing_icvf; /*!< float, ICVF computed or passed as parameter */ - bool gamma_packing; /*!< flag, true if a gamma distribution of cylinders will be initialized */ + bool gamma_cyl_packing; /*!< flag, true if a gamma distribution of cylinders will be initialized */ + bool gamma_sph_packing; /*!< flag, true if a gamma distribution of SPHERES will be initialized */ bool gamma_output_conf; double gamma_packing_alpha; double gamma_packing_beta; double gamma_icvf; double gamma_output_configuration; - unsigned gamma_num_cylinders; + unsigned gamma_num_obstacles; + float min_obstacle_radii; /*!< Minimum radii (in um) to be sampled */ bool subdivision_flag = false; /*!< flag to check if we have several voxel subdivision to compute the signal */ unsigned number_subdivisions = 0; /*!< saves the number of subdivisions for an initialzied voxel (needed) */ @@ -90,6 +97,10 @@ class Parameters Eigen::Vector3d max_sampling_area; /*!< Max defining point to delimiter the uniform sampling of walkers */ bool custom_sampling_area; /*!< True if a custom sampling area is defined (voxel for default) */ bool computeVolume; /*!< Forces the volumen computation (slower) even without custom sampling */ + bool separate_signals; /*!< Separate the signals into intra and extra (compute_volume on) */ + bool img_signal; /*!< True to save the img part of the dwi signal (false by default) */ + + /*! \fn Parameters * \brief Default constructor. Sets all the parameters to default and NULL values. */ @@ -241,6 +252,11 @@ class Parameters static int str_dist(std::string s, std::string t); + /*! \fn + * \brief adds the number of given subdivisions for the voxel + */ + void addSubdivisions(); + private: /*! \fn readObstacles @@ -281,15 +297,20 @@ class Parameters void readSubdivisionFile(); /*! \fn - * \brief adds the number of given subdivisions for the voxel + * \brief read the directions used to compute the propagator. */ - void addSubdivisions(); + void readPropagatorDirections(std::string dir_path); + /*! \fn + * \brief read a file with one ply scale value and then a list of ply files . + */ + void readPLYFileList(std::string path); /*! \fn - * \brief read the directions used to compute the propagator. + * \brief read a file with the path, scale and percolation of each ply + * */ - void readPropagatorDirections(std::string dir_path); + void readPLYFileListScalePercolation(std::string path); }; diff --git a/src/pgsesequence.cpp b/src/pgsesequence.cpp index 4640784..6dd6b5a 100644 --- a/src/pgsesequence.cpp +++ b/src/pgsesequence.cpp @@ -1,6 +1,6 @@ #include "pgsesequence.h" #include "constants.h" -#include +#include "Eigen/Dense" #include #include #include @@ -19,11 +19,13 @@ PGSESequence::PGSESequence() save_phase_shift = true; percent_steps_in = -1; T = 0; + separate_signal=false; } PGSESequence::PGSESequence(Scheme scheme_) { + num_rep=0; dynamic = false; save_phase_shift = true; percent_steps_in = -1; @@ -178,6 +180,7 @@ void PGSESequence::readSchemeParameters(Scheme scheme_){ for(unsigned i = 0 ; i < num_rep; i++){ DWI.push_back(0); DWIi.push_back(0); + phase_shift.push_back(0); scheme.push_back(scheme_.scheme[i]); } @@ -203,7 +206,15 @@ void PGSESequence::readSchemeFile() while( in >> tmp){ scheme_line.push_back(tmp); DWI.push_back(0); - DWIi.push_back(0); + + if(this->img_signal == true) + DWIi.push_back(0); + + if(separate_signal){ + DWI_extra.push_back(0); + DWI_intra.push_back(0); + } + num_rep++; for(int i = 0 ; i < 6; i++){ in >> tmp; @@ -276,7 +287,22 @@ void PGSESequence::update_DWI_signal(Walker& walker) double sin_phase_shift = sin(phase_shift[s]); DWI[s] += cos_phase_shift; // Real part - DWIi[s]+= sin_phase_shift; // Img part + + if(this->img_signal == true) + DWIi[s]+= sin_phase_shift; // Img part + + if(this->separate_signal){ + + if(walker.location == Walker::RelativeLocation::intra){ + DWI_intra[s]+=cos_phase_shift; + } + else if(walker.location == Walker::RelativeLocation::extra){ + DWI_extra[s]+=cos_phase_shift; + } + else{ + cout << walker.location << endl; + } + } if(save_phase_shift){ //Index between 0 and 3600, this give us a histogram with 3600 bins @@ -289,7 +315,19 @@ void PGSESequence::update_DWI_signal(Walker& walker) if( subdivisions[i].isInside(walker.pos_v)){ sub_DWI[i][s] += cos_phase_shift; // Real part - sub_DWIi[i][s]+= sin_phase_shift; // Img part + + if(this->img_signal) + sub_DWIi[i][s]+= sin_phase_shift; // Img part + + if(separate_signal){ + if(walker.location == Walker::RelativeLocation::intra){ + sub_DWI_intra[i][s]+=cos_phase_shift; + } + else if(walker.location == Walker::RelativeLocation::extra){ + sub_DWI_extra[i][s]+=cos_phase_shift; + } + } + break; //WARNING this break means that the subdivision are mutally exclusive } } @@ -469,7 +507,9 @@ void PGSESequence::getDWISignal() for(uint s=0; s < num_rep; s++){ DWI[s] += cos(phase_shift[s]); // Real part - DWIi[s]+= sin(phase_shift[s]); // Img part + + if(this->img_signal == true) + DWIi[s]+= sin(phase_shift[s]); // Img part phase_shift[s] = 0; } diff --git a/src/plyobstacle.cpp b/src/plyobstacle.cpp index 8f409a0..aca7c26 100644 --- a/src/plyobstacle.cpp +++ b/src/plyobstacle.cpp @@ -1,8 +1,8 @@ #include "plyobstacle.h" #include #include -#include -#include +#include "constants.h" +#include "Eigen/Dense" using namespace std; @@ -11,12 +11,11 @@ PLYObstacle::PLYObstacle() file_path = ""; vert_number = 0; face_number = 0; - vertices = NULL; - faces = NULL; + vertices = nullptr; + faces = nullptr; scale_factor = 1; percolation = 0; count_perc_crossings = 0; - } PLYObstacle::PLYObstacle(string path, double scale_factor_) @@ -24,20 +23,33 @@ PLYObstacle::PLYObstacle(string path, double scale_factor_) file_path = ""; vert_number = 0; face_number = 0; - vertices = NULL; - faces = NULL; + vertices = nullptr; + faces = nullptr; scale_factor = scale_factor_; percolation = 0; count_perc_crossings = 0; - readPLY_ASCII_triangles(path); } +PLYObstacle::PLYObstacle(string path, std::vector ¢ers, double max_distance, double scale_factor_) +{ + file_path = ""; + vert_number = 0; + face_number = 0; + vertices = nullptr; + faces = nullptr; + scale_factor = scale_factor_; + percolation = 0; + count_perc_crossings = 0; + readPLY_ASCII_trianglesSubdivitionDistance(path,centers,max_distance); +} + + void PLYObstacle::readPLY_ASCII_triangles(std::string ply_file) { - if (vertices != NULL) + if (vertices != nullptr) delete[] vertices; - if (faces != NULL) + if (faces != nullptr) delete[] faces; std::ifstream in(ply_file.c_str(),std::ifstream::in); @@ -91,6 +103,88 @@ void PLYObstacle::readPLY_ASCII_triangles(std::string ply_file) } +void PLYObstacle::readPLY_ASCII_trianglesSubdivitionDistance(string ply_file, vector& centers, double max_distance) +{ + + if (vertices != nullptr) + delete[] vertices; + if (faces != nullptr) + delete[] faces; + + std::ifstream in(ply_file.c_str(),std::ifstream::in); + + if(!in){ + std::cout << "Error opening file " << ply_file << std::endl; + assert(0); + return; + } + + std::string tmp = ""; + while(tmp.compare("end_header")){ + in >> tmp; + + if(!tmp.compare("vertex")){ + in >> vert_number; + } + if(!tmp.compare("face")){ + in >> face_number; + } + } + + vertices = new Vertex[vert_number]; + faces = new Triangle[face_number]; + + for (unsigned i =0; i< vert_number; i++){ + in >> vertices[i].points[0]; + in >> vertices[i].points[1]; + in >> vertices[i].points[2]; + + //cout << vertices[i].points[0] << " " << vertices[i].points[1] << " " << vertices[i].points[2] << " " << endl; + } + + + for (unsigned i =0; i< vert_number; i++){ + vertices[i].points[0]*=scale_factor; + vertices[i].points[1]*=scale_factor; + vertices[i].points[2]*=scale_factor; + } + + int in_index = 0; + double distance; + int num; + for (unsigned i = 0; i < face_number; ++i) { + in >> num; + //in >> faces[i].index; + in >> faces[in_index].indexes[0]; + in >> faces[in_index].indexes[1]; + in >> faces[in_index].indexes[2]; + faces[in_index].vertices = vertices; + faces[in_index].saveNormalAndAuxInfo(); + + if(centers.size()>0){ + for (auto c:centers ){ + //auto c= centers[j]; + distance = faces[in_index].minDistance(c); + + if(distance < max_distance){ + in_index++; + break; + } + } + } + else{ + in_index++; + } + + //cout << faces[i].indexes[0] << " " << faces[i].indexes[1] << " " << faces[i].indexes[2] << endl; + } + + cout << "before " << face_number << endl; + face_number = in_index; + cout << "after " << face_number << endl; + +} + bool PLYObstacle::checkCollision(Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision) { diff --git a/src/plyobstacle.h b/src/plyobstacle.h index be2bbc0..5ca6259 100644 --- a/src/plyobstacle.h +++ b/src/plyobstacle.h @@ -27,21 +27,24 @@ class PLYObstacle : public Obstacle Vertex* vertices; Triangle* faces; double scale_factor; + int id; PLYObstacle(); PLYObstacle(std::string path,double scale_factor_ = 1); + PLYObstacle(std::string path, std::vector ¢ers, double max_distance=INFINITY,double scale_factor_ = 1); void readPLY_ASCII_triangleFan(std::string ply_file); void readPLY_ASCII_triangles(std::string ply_file); + void readPLY_ASCII_trianglesSubdivitionDistance(std::string ply_file, std::vector ¢ers, double max_distance); + void setScaleFactor(double scale){scale_factor = scale;} -// bool computeStepCollition(Walker &w, double step[3], const double &step_length,double end_point[3], Collision& colision); +// bool computeStepCollition(Walker &w, double step[3], const double &step_length,double end_point[3], Collision& colision); bool checkCollision(Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision); bool checkCollision(Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision, std::vector &triangle_list, unsigned list_end); - double minDistance(Walker& w, unsigned t); private: diff --git a/src/propagator.h b/src/propagator.h index fb5647d..4acb7ec 100644 --- a/src/propagator.h +++ b/src/propagator.h @@ -1,14 +1,15 @@ #ifndef PROPAGATOR_H #define PROPAGATOR_H -#include +#include "constants.h" +#include "Eigen/Core" #include + class Propagator { public: - uint num_dirs =0; uint num_times = 0; Eigen::Matrix3Xf directions; diff --git a/src/public_MCDC.pro b/src/public_MCDC.pro deleted file mode 100644 index 1baa26d..0000000 --- a/src/public_MCDC.pro +++ /dev/null @@ -1,393 +0,0 @@ -TEMPLATE = app -CONFIG += console c++14 -CONFIG -= app_bundle -CONFIG -= qt -QMAKE_CXXFLAGS_RELEASE += -O3 -QMAKE_CXXFLAGS += -std=c++0x -pthread -LIBS += -pthread - -SOURCES += \ - collision.cpp \ - collisionsphere.cpp \ - cylinder.cpp \ - cylindergammadistribution.cpp \ - dynamicsSimulation.cpp \ - gradientwaveform.cpp \ - main.cpp \ - mcsimulation.cpp \ - obstacle.cpp \ - parallelmcsimulation.cpp \ - parameters.cpp \ - pgsesequence.cpp \ - plyobstacle.cpp \ - propagator.cpp \ - scheme.cpp \ - sentinel.cpp \ - simerrno.cpp \ - simulablesequence.cpp \ - subdivision.cpp \ - trajectory.cpp \ - triangle.cpp \ - vertex.cpp \ - voxel.cpp \ - walker.cpp - -DISTFILES += \ - Eigen/CMakeLists.txt \ - README.md \ - public_MCDC.pro.user - -HEADERS += \ - Eigen/Cholesky \ - Eigen/CholmodSupport \ - Eigen/Core \ - Eigen/Dense \ - Eigen/Eigen \ - Eigen/Eigenvalues \ - Eigen/Geometry \ - Eigen/Householder \ - Eigen/IterativeLinearSolvers \ - Eigen/Jacobi \ - Eigen/KLUSupport \ - Eigen/LU \ - Eigen/MetisSupport \ - Eigen/OrderingMethods \ - Eigen/PaStiXSupport \ - Eigen/PardisoSupport \ - Eigen/QR \ - Eigen/QtAlignedMalloc \ - Eigen/SPQRSupport \ - Eigen/SVD \ - Eigen/Sparse \ - Eigen/SparseCholesky \ - Eigen/SparseCore \ - Eigen/SparseLU \ - Eigen/SparseQR \ - Eigen/StdDeque \ - Eigen/StdList \ - Eigen/StdVector \ - Eigen/SuperLUSupport \ - Eigen/UmfPackSupport \ - Eigen/src/Cholesky/LDLT.h \ - Eigen/src/Cholesky/LLT.h \ - Eigen/src/Cholesky/LLT_LAPACKE.h \ - Eigen/src/CholmodSupport/CholmodSupport.h \ - Eigen/src/Core/ArithmeticSequence.h \ - Eigen/src/Core/Array.h \ - Eigen/src/Core/ArrayBase.h \ - Eigen/src/Core/ArrayWrapper.h \ - Eigen/src/Core/Assign.h \ - Eigen/src/Core/AssignEvaluator.h \ - Eigen/src/Core/Assign_MKL.h \ - Eigen/src/Core/BandMatrix.h \ - Eigen/src/Core/Block.h \ - Eigen/src/Core/BooleanRedux.h \ - Eigen/src/Core/CommaInitializer.h \ - Eigen/src/Core/ConditionEstimator.h \ - Eigen/src/Core/CoreEvaluators.h \ - Eigen/src/Core/CoreIterators.h \ - Eigen/src/Core/CwiseBinaryOp.h \ - Eigen/src/Core/CwiseNullaryOp.h \ - Eigen/src/Core/CwiseTernaryOp.h \ - Eigen/src/Core/CwiseUnaryOp.h \ - Eigen/src/Core/CwiseUnaryView.h \ - Eigen/src/Core/DenseBase.h \ - Eigen/src/Core/DenseCoeffsBase.h \ - Eigen/src/Core/DenseStorage.h \ - Eigen/src/Core/Diagonal.h \ - Eigen/src/Core/DiagonalMatrix.h \ - Eigen/src/Core/DiagonalProduct.h \ - Eigen/src/Core/Dot.h \ - Eigen/src/Core/EigenBase.h \ - Eigen/src/Core/ForceAlignedAccess.h \ - Eigen/src/Core/Fuzzy.h \ - Eigen/src/Core/GeneralProduct.h \ - Eigen/src/Core/GenericPacketMath.h \ - Eigen/src/Core/GlobalFunctions.h \ - Eigen/src/Core/IO.h \ - Eigen/src/Core/IndexedView.h \ - Eigen/src/Core/Inverse.h \ - Eigen/src/Core/Map.h \ - Eigen/src/Core/MapBase.h \ - Eigen/src/Core/MathFunctions.h \ - Eigen/src/Core/MathFunctionsImpl.h \ - Eigen/src/Core/Matrix.h \ - Eigen/src/Core/MatrixBase.h \ - Eigen/src/Core/NestByValue.h \ - Eigen/src/Core/NoAlias.h \ - Eigen/src/Core/NumTraits.h \ - Eigen/src/Core/PartialReduxEvaluator.h \ - Eigen/src/Core/PermutationMatrix.h \ - Eigen/src/Core/PlainObjectBase.h \ - Eigen/src/Core/Product.h \ - Eigen/src/Core/ProductEvaluators.h \ - Eigen/src/Core/Random.h \ - Eigen/src/Core/Redux.h \ - Eigen/src/Core/Ref.h \ - Eigen/src/Core/Replicate.h \ - Eigen/src/Core/Reshaped.h \ - Eigen/src/Core/ReturnByValue.h \ - Eigen/src/Core/Reverse.h \ - Eigen/src/Core/Select.h \ - Eigen/src/Core/SelfAdjointView.h \ - Eigen/src/Core/SelfCwiseBinaryOp.h \ - Eigen/src/Core/Solve.h \ - Eigen/src/Core/SolveTriangular.h \ - Eigen/src/Core/SolverBase.h \ - Eigen/src/Core/StableNorm.h \ - Eigen/src/Core/StlIterators.h \ - Eigen/src/Core/Stride.h \ - Eigen/src/Core/Swap.h \ - Eigen/src/Core/Transpose.h \ - Eigen/src/Core/Transpositions.h \ - Eigen/src/Core/TriangularMatrix.h \ - Eigen/src/Core/VectorBlock.h \ - Eigen/src/Core/VectorwiseOp.h \ - Eigen/src/Core/Visitor.h \ - Eigen/src/Core/arch/AVX/Complex.h \ - Eigen/src/Core/arch/AVX/MathFunctions.h \ - Eigen/src/Core/arch/AVX/PacketMath.h \ - Eigen/src/Core/arch/AVX/TypeCasting.h \ - Eigen/src/Core/arch/AVX512/Complex.h \ - Eigen/src/Core/arch/AVX512/MathFunctions.h \ - Eigen/src/Core/arch/AVX512/PacketMath.h \ - Eigen/src/Core/arch/AVX512/TypeCasting.h \ - Eigen/src/Core/arch/AltiVec/Complex.h \ - Eigen/src/Core/arch/AltiVec/MathFunctions.h \ - Eigen/src/Core/arch/AltiVec/PacketMath.h \ - Eigen/src/Core/arch/CUDA/Complex.h \ - Eigen/src/Core/arch/Default/ConjHelper.h \ - Eigen/src/Core/arch/Default/GenericPacketMathFunctions.h \ - Eigen/src/Core/arch/Default/GenericPacketMathFunctionsFwd.h \ - Eigen/src/Core/arch/Default/Half.h \ - Eigen/src/Core/arch/Default/Settings.h \ - Eigen/src/Core/arch/Default/TypeCasting.h \ - Eigen/src/Core/arch/GPU/MathFunctions.h \ - Eigen/src/Core/arch/GPU/PacketMath.h \ - Eigen/src/Core/arch/GPU/TypeCasting.h \ - Eigen/src/Core/arch/HIP/hcc/math_constants.h \ - Eigen/src/Core/arch/MSA/Complex.h \ - Eigen/src/Core/arch/MSA/MathFunctions.h \ - Eigen/src/Core/arch/MSA/PacketMath.h \ - Eigen/src/Core/arch/NEON/Complex.h \ - Eigen/src/Core/arch/NEON/MathFunctions.h \ - Eigen/src/Core/arch/NEON/PacketMath.h \ - Eigen/src/Core/arch/NEON/TypeCasting.h \ - Eigen/src/Core/arch/SSE/Complex.h \ - Eigen/src/Core/arch/SSE/MathFunctions.h \ - Eigen/src/Core/arch/SSE/PacketMath.h \ - Eigen/src/Core/arch/SSE/TypeCasting.h \ - Eigen/src/Core/arch/SYCL/InteropHeaders.h \ - Eigen/src/Core/arch/SYCL/MathFunctions.h \ - Eigen/src/Core/arch/SYCL/PacketMath.h \ - Eigen/src/Core/arch/SYCL/SyclMemoryModel.h \ - Eigen/src/Core/arch/SYCL/TypeCasting.h \ - Eigen/src/Core/arch/ZVector/Complex.h \ - Eigen/src/Core/arch/ZVector/MathFunctions.h \ - Eigen/src/Core/arch/ZVector/PacketMath.h \ - Eigen/src/Core/functors/AssignmentFunctors.h \ - Eigen/src/Core/functors/BinaryFunctors.h \ - Eigen/src/Core/functors/NullaryFunctors.h \ - Eigen/src/Core/functors/StlFunctors.h \ - Eigen/src/Core/functors/TernaryFunctors.h \ - Eigen/src/Core/functors/UnaryFunctors.h \ - Eigen/src/Core/products/GeneralBlockPanelKernel.h \ - Eigen/src/Core/products/GeneralMatrixMatrix.h \ - Eigen/src/Core/products/GeneralMatrixMatrixTriangular.h \ - Eigen/src/Core/products/GeneralMatrixMatrixTriangular_BLAS.h \ - Eigen/src/Core/products/GeneralMatrixMatrix_BLAS.h \ - Eigen/src/Core/products/GeneralMatrixVector.h \ - Eigen/src/Core/products/GeneralMatrixVector_BLAS.h \ - Eigen/src/Core/products/Parallelizer.h \ - Eigen/src/Core/products/SelfadjointMatrixMatrix.h \ - Eigen/src/Core/products/SelfadjointMatrixMatrix_BLAS.h \ - Eigen/src/Core/products/SelfadjointMatrixVector.h \ - Eigen/src/Core/products/SelfadjointMatrixVector_BLAS.h \ - Eigen/src/Core/products/SelfadjointProduct.h \ - Eigen/src/Core/products/SelfadjointRank2Update.h \ - Eigen/src/Core/products/TriangularMatrixMatrix.h \ - Eigen/src/Core/products/TriangularMatrixMatrix_BLAS.h \ - Eigen/src/Core/products/TriangularMatrixVector.h \ - Eigen/src/Core/products/TriangularMatrixVector_BLAS.h \ - Eigen/src/Core/products/TriangularSolverMatrix.h \ - Eigen/src/Core/products/TriangularSolverMatrix_BLAS.h \ - Eigen/src/Core/products/TriangularSolverVector.h \ - Eigen/src/Core/util/BlasUtil.h \ - Eigen/src/Core/util/ConfigureVectorization.h \ - Eigen/src/Core/util/Constants.h \ - Eigen/src/Core/util/DisableStupidWarnings.h \ - Eigen/src/Core/util/ForwardDeclarations.h \ - Eigen/src/Core/util/IndexedViewHelper.h \ - Eigen/src/Core/util/IntegralConstant.h \ - Eigen/src/Core/util/MKL_support.h \ - Eigen/src/Core/util/Macros.h \ - Eigen/src/Core/util/Memory.h \ - Eigen/src/Core/util/Meta.h \ - Eigen/src/Core/util/NonMPL2.h \ - Eigen/src/Core/util/ReenableStupidWarnings.h \ - Eigen/src/Core/util/ReshapedHelper.h \ - Eigen/src/Core/util/StaticAssert.h \ - Eigen/src/Core/util/SymbolicIndex.h \ - Eigen/src/Core/util/XprHelper.h \ - Eigen/src/Eigenvalues/ComplexEigenSolver.h \ - Eigen/src/Eigenvalues/ComplexSchur.h \ - Eigen/src/Eigenvalues/ComplexSchur_LAPACKE.h \ - Eigen/src/Eigenvalues/EigenSolver.h \ - Eigen/src/Eigenvalues/GeneralizedEigenSolver.h \ - Eigen/src/Eigenvalues/GeneralizedSelfAdjointEigenSolver.h \ - Eigen/src/Eigenvalues/HessenbergDecomposition.h \ - Eigen/src/Eigenvalues/MatrixBaseEigenvalues.h \ - Eigen/src/Eigenvalues/RealQZ.h \ - Eigen/src/Eigenvalues/RealSchur.h \ - Eigen/src/Eigenvalues/RealSchur_LAPACKE.h \ - Eigen/src/Eigenvalues/SelfAdjointEigenSolver.h \ - Eigen/src/Eigenvalues/SelfAdjointEigenSolver_LAPACKE.h \ - Eigen/src/Eigenvalues/Tridiagonalization.h \ - Eigen/src/Geometry/AlignedBox.h \ - Eigen/src/Geometry/AngleAxis.h \ - Eigen/src/Geometry/EulerAngles.h \ - Eigen/src/Geometry/Homogeneous.h \ - Eigen/src/Geometry/Hyperplane.h \ - Eigen/src/Geometry/OrthoMethods.h \ - Eigen/src/Geometry/ParametrizedLine.h \ - Eigen/src/Geometry/Quaternion.h \ - Eigen/src/Geometry/Rotation2D.h \ - Eigen/src/Geometry/RotationBase.h \ - Eigen/src/Geometry/Scaling.h \ - Eigen/src/Geometry/Transform.h \ - Eigen/src/Geometry/Translation.h \ - Eigen/src/Geometry/Umeyama.h \ - Eigen/src/Geometry/arch/Geometry_SSE.h \ - Eigen/src/Householder/BlockHouseholder.h \ - Eigen/src/Householder/Householder.h \ - Eigen/src/Householder/HouseholderSequence.h \ - Eigen/src/IterativeLinearSolvers/BasicPreconditioners.h \ - Eigen/src/IterativeLinearSolvers/BiCGSTAB.h \ - Eigen/src/IterativeLinearSolvers/ConjugateGradient.h \ - Eigen/src/IterativeLinearSolvers/IncompleteCholesky.h \ - Eigen/src/IterativeLinearSolvers/IncompleteLUT.h \ - Eigen/src/IterativeLinearSolvers/IterativeSolverBase.h \ - Eigen/src/IterativeLinearSolvers/LeastSquareConjugateGradient.h \ - Eigen/src/IterativeLinearSolvers/SolveWithGuess.h \ - Eigen/src/Jacobi/Jacobi.h \ - Eigen/src/KLUSupport/KLUSupport.h \ - Eigen/src/LU/Determinant.h \ - Eigen/src/LU/FullPivLU.h \ - Eigen/src/LU/InverseImpl.h \ - Eigen/src/LU/PartialPivLU.h \ - Eigen/src/LU/PartialPivLU_LAPACKE.h \ - Eigen/src/LU/arch/Inverse_SSE.h \ - Eigen/src/MetisSupport/MetisSupport.h \ - Eigen/src/OrderingMethods/Amd.h \ - Eigen/src/OrderingMethods/Eigen_Colamd.h \ - Eigen/src/OrderingMethods/Ordering.h \ - Eigen/src/PaStiXSupport/PaStiXSupport.h \ - Eigen/src/PardisoSupport/PardisoSupport.h \ - Eigen/src/QR/ColPivHouseholderQR.h \ - Eigen/src/QR/ColPivHouseholderQR_LAPACKE.h \ - Eigen/src/QR/CompleteOrthogonalDecomposition.h \ - Eigen/src/QR/FullPivHouseholderQR.h \ - Eigen/src/QR/HouseholderQR.h \ - Eigen/src/QR/HouseholderQR_LAPACKE.h \ - Eigen/src/SPQRSupport/SuiteSparseQRSupport.h \ - Eigen/src/SVD/BDCSVD.h \ - Eigen/src/SVD/JacobiSVD.h \ - Eigen/src/SVD/JacobiSVD_LAPACKE.h \ - Eigen/src/SVD/SVDBase.h \ - Eigen/src/SVD/UpperBidiagonalization.h \ - Eigen/src/SparseCholesky/SimplicialCholesky.h \ - Eigen/src/SparseCholesky/SimplicialCholesky_impl.h \ - Eigen/src/SparseCore/AmbiVector.h \ - Eigen/src/SparseCore/CompressedStorage.h \ - Eigen/src/SparseCore/ConservativeSparseSparseProduct.h \ - Eigen/src/SparseCore/MappedSparseMatrix.h \ - Eigen/src/SparseCore/SparseAssign.h \ - Eigen/src/SparseCore/SparseBlock.h \ - Eigen/src/SparseCore/SparseColEtree.h \ - Eigen/src/SparseCore/SparseCompressedBase.h \ - Eigen/src/SparseCore/SparseCwiseBinaryOp.h \ - Eigen/src/SparseCore/SparseCwiseUnaryOp.h \ - Eigen/src/SparseCore/SparseDenseProduct.h \ - Eigen/src/SparseCore/SparseDiagonalProduct.h \ - Eigen/src/SparseCore/SparseDot.h \ - Eigen/src/SparseCore/SparseFuzzy.h \ - Eigen/src/SparseCore/SparseMap.h \ - Eigen/src/SparseCore/SparseMatrix.h \ - Eigen/src/SparseCore/SparseMatrixBase.h \ - Eigen/src/SparseCore/SparsePermutation.h \ - Eigen/src/SparseCore/SparseProduct.h \ - Eigen/src/SparseCore/SparseRedux.h \ - Eigen/src/SparseCore/SparseRef.h \ - Eigen/src/SparseCore/SparseSelfAdjointView.h \ - Eigen/src/SparseCore/SparseSolverBase.h \ - Eigen/src/SparseCore/SparseSparseProductWithPruning.h \ - Eigen/src/SparseCore/SparseTranspose.h \ - Eigen/src/SparseCore/SparseTriangularView.h \ - Eigen/src/SparseCore/SparseUtil.h \ - Eigen/src/SparseCore/SparseVector.h \ - Eigen/src/SparseCore/SparseView.h \ - Eigen/src/SparseCore/TriangularSolver.h \ - Eigen/src/SparseLU/SparseLU.h \ - Eigen/src/SparseLU/SparseLUImpl.h \ - Eigen/src/SparseLU/SparseLU_Memory.h \ - Eigen/src/SparseLU/SparseLU_Structs.h \ - Eigen/src/SparseLU/SparseLU_SupernodalMatrix.h \ - Eigen/src/SparseLU/SparseLU_Utils.h \ - Eigen/src/SparseLU/SparseLU_column_bmod.h \ - Eigen/src/SparseLU/SparseLU_column_dfs.h \ - Eigen/src/SparseLU/SparseLU_copy_to_ucol.h \ - Eigen/src/SparseLU/SparseLU_gemm_kernel.h \ - Eigen/src/SparseLU/SparseLU_heap_relax_snode.h \ - Eigen/src/SparseLU/SparseLU_kernel_bmod.h \ - Eigen/src/SparseLU/SparseLU_panel_bmod.h \ - Eigen/src/SparseLU/SparseLU_panel_dfs.h \ - Eigen/src/SparseLU/SparseLU_pivotL.h \ - Eigen/src/SparseLU/SparseLU_pruneL.h \ - Eigen/src/SparseLU/SparseLU_relax_snode.h \ - Eigen/src/SparseQR/SparseQR.h \ - Eigen/src/StlSupport/StdDeque.h \ - Eigen/src/StlSupport/StdList.h \ - Eigen/src/StlSupport/StdVector.h \ - Eigen/src/StlSupport/details.h \ - Eigen/src/SuperLUSupport/SuperLUSupport.h \ - Eigen/src/UmfPackSupport/UmfPackSupport.h \ - Eigen/src/misc/Image.h \ - Eigen/src/misc/Kernel.h \ - Eigen/src/misc/RealSvd2x2.h \ - Eigen/src/misc/blas.h \ - Eigen/src/misc/lapack.h \ - Eigen/src/misc/lapacke.h \ - Eigen/src/misc/lapacke_mangling.h \ - Eigen/src/plugins/ArrayCwiseBinaryOps.h \ - Eigen/src/plugins/ArrayCwiseUnaryOps.h \ - Eigen/src/plugins/BlockMethods.h \ - Eigen/src/plugins/CommonCwiseBinaryOps.h \ - Eigen/src/plugins/CommonCwiseUnaryOps.h \ - Eigen/src/plugins/IndexedViewMethods.h \ - Eigen/src/plugins/MatrixCwiseBinaryOps.h \ - Eigen/src/plugins/MatrixCwiseUnaryOps.h \ - Eigen/src/plugins/ReshapedMethods.h \ - collision.h \ - collisionsphere.h \ - constants.h \ - cylinder.h \ - cylindergammadistribution.h \ - dynamicsSimulation.h \ - gradientwaveform.h \ - mcsimulation.h \ - obstacle.h \ - parallelmcsimulation.h \ - parameters.h \ - pgsesequence.h \ - plyobstacle.h \ - propagator.h \ - scheme.h \ - sentinel.h \ - simerrno.h \ - simulablesequence.h \ - subdivision.h \ - trajectory.h \ - triangle.h \ - vertex.h \ - voxel.h \ - walker.h diff --git a/src/public_MCDC.pro.user b/src/public_MCDC.pro.user deleted file mode 100644 index 8194c8d..0000000 --- a/src/public_MCDC.pro.user +++ /dev/null @@ -1,335 +0,0 @@ - - - - - - EnvironmentId - {a80f63d1-37b7-4b09-a9d0-be8dc975b1f4} - - - ProjectExplorer.Project.ActiveTarget - 0 - - - ProjectExplorer.Project.EditorSettings - - true - false - true - - Cpp - - CppGlobal - - - - QmlJS - - QmlJSGlobal - - - 2 - UTF-8 - false - 4 - false - 80 - true - true - 1 - true - false - 0 - true - true - 0 - 8 - true - 1 - true - true - true - false - - - - ProjectExplorer.Project.PluginSettings - - - true - - - - ProjectExplorer.Project.Target.0 - - Desktop - Desktop - {6265ed8d-d181-45f5-89ea-153bb6bcc1fe} - 0 - 0 - 0 - - /home/jonathan/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/build-public_MCDC-Desktop-Debug - - - true - qmake - - QtProjectManager.QMakeBuildStep - true - - false - false - false - - - true - Make - - Qt4ProjectManager.MakeStep - - false - - - false - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - true - clean - - false - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Debug - Debug - Qt4ProjectManager.Qt4BuildConfiguration - 2 - true - - - /home/jonathan/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/build-public_MCDC-Desktop-Release - - - true - qmake - - QtProjectManager.QMakeBuildStep - false - - false - false - false - - - true - Make - - Qt4ProjectManager.MakeStep - - false - - - false - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - true - clean - - false - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Release - Release - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - - /home/jonathan/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/build-public_MCDC-Desktop-Profile - - - true - qmake - - QtProjectManager.QMakeBuildStep - true - - false - true - false - - - true - Make - - Qt4ProjectManager.MakeStep - - false - - - false - - 2 - Build - - ProjectExplorer.BuildSteps.Build - - - - true - Make - - Qt4ProjectManager.MakeStep - - true - clean - - false - - 1 - Clean - - ProjectExplorer.BuildSteps.Clean - - 2 - false - - Profile - Profile - Qt4ProjectManager.Qt4BuildConfiguration - 0 - true - - 3 - - - 0 - Deploy - - ProjectExplorer.BuildSteps.Deploy - - 1 - Deploy Configuration - - ProjectExplorer.DefaultDeployConfiguration - - 1 - - - dwarf - - cpu-cycles - - - 250 - -F - true - 4096 - false - false - 1000 - - true - - false - false - false - false - true - 0.01 - 10 - true - kcachegrind - 1 - 25 - - 1 - true - false - true - valgrind - - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - - 2 - - public_MCDC - - Qt4ProjectManager.Qt4RunConfiguration:/home/jonathan/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/public_MCDC/public_MCDC.pro - - 3768 - false - true - true - false - false - true - - /home/jonathan/Documents/EPFL/Main_Studies/Simulators/MCDC_Simulator_public/build-public_MCDC-Desktop-Debug - - 1 - - - - ProjectExplorer.Project.TargetCount - 1 - - - ProjectExplorer.Project.Updater.FileVersion - 22 - - - Version - 22 - - diff --git a/src/scheme.cpp b/src/scheme.cpp index 5abd51e..ef8c50f 100644 --- a/src/scheme.cpp +++ b/src/scheme.cpp @@ -2,7 +2,7 @@ #include #include #include -#include +#include "constants.h" using namespace std; Scheme::Scheme() @@ -20,7 +20,7 @@ void Scheme::readSchemeFile(string scheme_file_,bool scale_from_stu) ifstream in(scheme_file_.c_str()); if(!in.is_open()){ - std::cout << "error al abrir archivo" << std::endl; + std::cout << "Error loading the file" << std::endl; in.close(); return; } diff --git a/src/simerrno.cpp b/src/simerrno.cpp index 1a9d5a4..9973e7d 100644 --- a/src/simerrno.cpp +++ b/src/simerrno.cpp @@ -87,6 +87,11 @@ bool SimErrno::checkSimulationParameters(Parameters ¶ms) checkCylindersListFile(params); info("Done...",cout); } + if(params.cylinders_files.size()>0){ + info("Checking Sphere list format...",cout); + checkCylindersListFile(params); + info("Done...",cout); + } if(params.ini_walkers_file.size() > 2){ info("Checking walker initial position list format...",cout); @@ -98,13 +103,63 @@ bool SimErrno::checkSimulationParameters(Parameters ¶ms) checkVoxelLimits(params); } - if(params.hex_packing == true){ + if(params.hex_cyl_packing == true){ if(params.hex_packing_radius<= 0){ error( "Cylinder radius incoherent: " + to_string(params.hex_packing_radius) ,cout); assert(0); return true; } + if(params.hex_packing_icvf > 0.90){ + error( "Max achievable ICVF is 0.9 ",cout); + assert(0); + return true; + } + + if(params.hex_packing_icvf <= 0.0){ + error( "ICVF must be greater than 0.0 ",cout); + assert(0); + return true; + }else{ + params.hex_packing_separation = sqrt( (2*M_PI*params.hex_packing_radius*params.hex_packing_radius)/(sqrt(3)*params.hex_packing_icvf)); + } + + + if(params.hex_packing_separation - 2.0*params.hex_packing_radius < 0.0){ + error( "Cylinder separation can't be less that twice the radius (or epsilon close): " + to_string(params.hex_packing_separation) ,cout); + assert(0); + return true; + } + + if(params.hex_packing_separation - 2.0*params.hex_packing_radius <= 1e-6){ + warning("Cylinder separation is too close (barrier collision): " + to_string(params.hex_packing_separation) ,cout); + } + + } + + if(params.hex_sphere_packing == true){ + + if(params.hex_packing_radius<= 0){ + error( "Spheres' radius incoherent: " + to_string(params.hex_packing_radius) ,cout); + assert(0); + return true; + } + + if(params.hex_packing_icvf > 0.69){ + error( "Max achievable ICVF is 0.69 ",cout); + assert(0); + return true; + } + + if(params.hex_packing_icvf <= 0.0){ + error( "ICVF must be greater than 0.0 ",cout); + assert(0); + return true; + }else{ + params.hex_packing_separation = pow((4.*4./3.*M_PI*params.hex_packing_radius*params.hex_packing_radius*params.hex_packing_radius)/(3*params.hex_packing_icvf),1./3.); + } + + if(params.hex_packing_separation - 2.0*params.hex_packing_radius < 0.0){ error( "Cylinder separation can't be less that twice the radius (or epsilon close): " + to_string(params.hex_packing_separation) ,cout); assert(0); @@ -117,7 +172,7 @@ bool SimErrno::checkSimulationParameters(Parameters ¶ms) } - if(params.gamma_packing){ + if(params.gamma_cyl_packing){ checkGammaDistributionParamaters(params); } @@ -132,7 +187,7 @@ bool SimErrno::checkSimulationParameters(Parameters ¶ms) return true; } - if( (params.number_subdivisions > 0) && (params.voxels_list.size() <=0) ){ + if( (params.number_subdivisions > 0) && (params.voxels_list.size() <=0) && params.gamma_cyl_packing ==false){ error("subdivisions_number parameter passed without a defined voxel.",cout); assert(0); return true; @@ -161,7 +216,7 @@ bool SimErrno::checkSimulationParameters(Parameters ¶ms) for(auto j = 0; j < 3; j++){ for (unsigned i=0; i < params.voxels_list.size();i++) - if((params.voxels_list[i].first[j] - params.min_sampling_area[j])>1e-8 or (params.max_sampling_area[j]-params.voxels_list[i].second[j])>1e-8) + if((params.voxels_list[i].first[j] - params.min_sampling_area[j])>1e-8 || (params.max_sampling_area[j]-params.voxels_list[i].second[j])>1e-8) { SimErrno::error("Custom sampling area cannot be outside the defined voxel\n",cout); assert(0); @@ -174,7 +229,7 @@ bool SimErrno::checkSimulationParameters(Parameters ¶ms) } } - if(params.computeVolume and params.voxels_list.size() <=0){ + if(params.computeVolume && params.voxels_list.size() <=0 && params.gamma_cyl_packing==false and params.hex_cyl_packing ==false and params.hex_sphere_packing ==false and params.gamma_sph_packing ==false){ warning(" Flag: 'compute_volume' ignored, no voxel." ,cout); } @@ -430,7 +485,7 @@ bool SimErrno::checkPLYFiles(Parameters ¶ms) //* Auxiliare method to split words in a line using the spaces*// template -void split_(const std::string &s, char delim, Out result) { +void split__(const std::string &s, char delim, Out result) { std::stringstream ss; ss.str(s); std::string item; @@ -442,7 +497,7 @@ void split_(const std::string &s, char delim, Out result) { std::vector split_(const std::string &s, char delim) { std::vector elems; - split_(s, delim, std::back_inserter(elems)); + split__(s, delim, std::back_inserter(elems)); return elems; } @@ -513,6 +568,47 @@ bool SimErrno::checkCylindersListFile(Parameters ¶ms) return true; } + +bool SimErrno::checkSphereListFile(Parameters ¶ms) +{ + for(unsigned i = 0; i < params.spheres_files.size(); i++){ + ifstream in(params.cylinders_files[i]); + + if(!in){ + error( "Spheres list file cannot be open." ,cout); + assert(0); + in.close(); + return true; + } + + bool first=true; + for( std::string line; getline( in, line ); ) + { + if(first) { + std::vector jkr = split_(line,' '); + if (jkr.size()!= 1){ + error( "First line must be only the overall scale factor: ",cout); + in.close(); + assert(0); + return true; + } + first-=1;continue; + } + + std::vector jkr = split_(line,' '); + + if(jkr.size() != 4){ + error( "Sphere list file is not in the correct format." ,cout); + in.close(); + assert(0); + return true; + } + } + in.close(); + } + return true; +} + bool SimErrno::checkInitWalkerFile(Parameters ¶ms) { @@ -638,6 +734,10 @@ bool SimErrno::checkConfigurationFile(const char* configuration_file) count_hexa_obstacle_tag++; fixed_configuration = true; } + else if(Parameters::str_dist(tmp,"") <= 0){ + count_hexa_obstacle_tag++; + fixed_configuration = true; + } else if(Parameters::str_dist(tmp,"") <= 0){ count_tag_log--; } @@ -656,6 +756,9 @@ bool SimErrno::checkConfigurationFile(const char* configuration_file) else if(Parameters::str_dist(tmp,"") <= 0){ count_hexa_obstacle_tag--; } + else if(Parameters::str_dist(tmp,"") <= 0){ + count_hexa_obstacle_tag--; + } else if(Parameters::str_dist(tmp,"") == 0){ count_tag_sampling_area++; } @@ -702,7 +805,7 @@ bool SimErrno::checkConfigurationFile(const char* configuration_file) return true; } if(count_hexa_obstacle_tag!= 0 ){ - error( " tag is not properly set in: " + string(configuration_file),cout); + error( " tag is not properly set in: " + string(configuration_file),cout); assert(0); return true; } @@ -755,14 +858,40 @@ void SimErrno::printSimulatinInfo(Parameters ¶ms, ostream &out,bool color) if(params.PLY_files.size() > 0) infoMenu(" Number of PLYs: ------", to_string( params.PLY_files.size()),out, color,35); - answer = (params.cylinders_files.size() > 0)?" true":" false"; + answer = (params.cylinders_files.size() > 0) || params.gamma_cyl_packing || params.hex_cyl_packing ?" true":" false"; infoMenu(" Cylinder obstacles: ------", answer, out, color,35); - if(params.hex_packing) + if(params.hex_cyl_packing){ infoMenu(" Hexagonal Configuration: ---", "true", out, color,35); + infoMenu(" Hex. radius: ------", " "+ to_string(params.hex_packing_radius*1e3)+" um",out, color,35); + infoMenu(" Hex. ICVF: ------", " "+ to_string(params.hex_packing_icvf),out, color,35); + //infoMenu(" Separation: ------", " "+ to_string(params.hex_packing_separation*1e3)+" um",out, color,35); + } - if(params.gamma_packing) - infoMenu(" Gamma Configuration: ------", "true", out, color,35); + answer = (params.spheres_files.size() > 0) || params.gamma_sph_packing || params.hex_sphere_packing ?" true":" false"; + infoMenu(" Spherical obstacles: ------", answer, out, color,34); + + if(params.hex_sphere_packing){ + infoMenu(" Hex. sph. configuration: ---", "true", out, color,35); + infoMenu(" Hex. radius: ------", " "+ to_string(params.hex_packing_radius*1e3)+" um",out, color,35); + infoMenu(" Hex. ICVF: ------", " "+ to_string(params.hex_packing_icvf),out, color,35); + //infoMenu(" Separation: ------", " "+ to_string(params.hex_packing_separation*1e3)+" um",out, color,35); + } + + if(params.gamma_cyl_packing){ + infoMenu(" Gamma Configuration: ------", " true", out, color,35); + infoMenu(" Gamma alpha: ------", " "+ to_string(params.gamma_packing_alpha)+" um",out, color,35); + infoMenu(" Gamma scale: ------", " "+ to_string(params.gamma_packing_beta),out, color,35); + infoMenu(" Target ICVF: ------", " "+ to_string(params.gamma_icvf),out, color,35); + infoMenu(" Min. radius: ------", " "+ to_string(params.min_obstacle_radii)+" um",out, color,35); + } + if(params.gamma_sph_packing){ + infoMenu(" Gamma sph configuration: ----", " true", out, color,35); + infoMenu(" Gamma alpha: ------", " "+ to_string(params.gamma_packing_alpha)+" um",out, color,35); + infoMenu(" Gamma scale: ------", " "+ to_string(params.gamma_packing_beta),out, color,35); + infoMenu(" Target ICVF: ------", " "+ to_string(params.gamma_icvf),out, color,35); + infoMenu(" Min. radius: ------", " "+ to_string(params.min_obstacle_radii)+" um",out, color,35); + } answer = (params.write_traj)?" true":" false"; infoMenu(" Write trajfile: ------", answer, out, color,35); @@ -773,6 +902,9 @@ void SimErrno::printSimulatinInfo(Parameters ¶ms, ostream &out,bool color) answer = (params.write_txt)?" true":" false"; infoMenu(" Write to txt: ------", answer, out, color,35); + answer = (params.separate_signals)?" true":" false"; + infoMenu(" Separated signals ------", answer, out, color,35); + answer = (params.scale_from_stu)?" true":" false"; infoMenu(" Standard units: ------", answer, out, color,35); @@ -833,7 +965,7 @@ void SimErrno::printSimulatinInfo(Parameters ¶ms, ostream &out,bool color) if(params.max_simulation_time > 1){ - infoMenu(" Max simulation time: --------", " " + to_string( params.max_simulation_time) +" secs",out, color,35); + infoMenu(" Max simulation time: --------", " " + to_string( params.max_simulation_time) +" secs",out, color,35); } if(params.scheme_file.length() > 1){ @@ -934,7 +1066,7 @@ bool SimErrno::checkGammaDistributionParamaters(Parameters ¶ms) } - if(params.gamma_num_cylinders >= 1e6){ + if(params.gamma_num_obstacles >= 1e6){ warning("Number of cylinders to sample might be erroneous",cout,true); } diff --git a/src/simerrno.h b/src/simerrno.h index 157aa52..3920652 100644 --- a/src/simerrno.h +++ b/src/simerrno.h @@ -62,6 +62,13 @@ class SimErrno */ static bool checkCylindersListFile(Parameters ¶ms); + //! \fn checks if the given cylinder list file make sense + /*! \param parameter instance + * \brief Return false if any of the cylinder list files are inconsistent or bugged. + * In may assert the program. + */ + static bool checkSphereListFile(Parameters ¶ms); + //! \fn checks if the given initial walker file make sense /*! \param parameter instance * \brief Return false if the initial position file is inconsistent or bugged. In may assert the diff --git a/src/simulablesequence.cpp b/src/simulablesequence.cpp index 92ab71e..1cf05b7 100644 --- a/src/simulablesequence.cpp +++ b/src/simulablesequence.cpp @@ -2,7 +2,7 @@ #include #include #include - +#include "constants.h" using namespace std; @@ -88,10 +88,26 @@ void SimulableSequence::cleanDWISignal(){ } void SimulableSequence::initializeSubdivisionSignals(){ + for(uint s = 0; s < subdivisions.size(); s++){ vector tmp_DWI(num_rep,0); vector tmp_DWIi(num_rep,0); this->sub_DWI.push_back(tmp_DWI); this->sub_DWIi.push_back(tmp_DWIi); + + if(separate_signal){ + vector tmp_DWI_intra(num_rep,0); + vector tmp_DWI_extra(num_rep,0); + this->sub_DWI_intra.push_back(tmp_DWI_intra); + this->sub_DWI_extra.push_back(tmp_DWI_extra); + } + } +} + +void SimulableSequence::initializeIntraExtraSignals() +{ + for(auto i =0; i < num_rep; i++){ + this->DWI_intra.push_back(0); + this->DWI_extra.push_back(0); } } diff --git a/src/simulablesequence.h b/src/simulablesequence.h index 9f61eb3..4ccaeae 100644 --- a/src/simulablesequence.h +++ b/src/simulablesequence.h @@ -20,7 +20,11 @@ class SimulableSequence{ std::vector DWI; /*!< Real part of the DWI signal */ - std::vector DWIi; /*!< imaginary partof the DWI signal */ + std::vector DWI_intra; /*!< Real part of the DWI signal intra axonal olny (if needed) */ + + std::vector DWI_extra; /*!< Real part of the DWI signal extra axonal only (if needed) */ + + std::vector DWIi; /*!< imaginary part of the DWI signal */ std::vector phase_shift; /*!< auxiliar phase shift for signal computations. */ @@ -38,10 +42,18 @@ class SimulableSequence{ std::vector> sub_DWI; /*!< Real part of the DWI signal for each subDivision */ + std::vector> sub_DWI_intra; /*!< Real part of the DWI intra signal for each subDivision */ + + std::vector> sub_DWI_extra; /*!< Real part of the DWI extra signal for each subDivision */ + std::vector> sub_DWIi; /*!< Imaginary part of the DWI signal for each subdivision */ bool subdivision_flag = false; /*!< flag to check if we have several voxel subdivision to compute the signal */ + bool separate_signal = false; /*!< flag to check if we will separate the signal in intra and extra */ + + bool img_signal = false; /*!< flag to check if the img part will be computed or not (false default */ + std::vector subdivisions; /*!< saves the actual positions of the subdivision to compute the signal */ SimulableSequence(){} @@ -96,6 +108,10 @@ class SimulableSequence{ * @brief Initialize the DWI signals for each subdivision. */ virtual void initializeSubdivisionSignals(); + /** + * @brief Initialize the DWI signals for each compartment (intra extra) + */ + virtual void initializeIntraExtraSignals(); virtual void writeResultingData(std::string output_base_name); diff --git a/src/sphere.cpp b/src/sphere.cpp new file mode 100644 index 0000000..383c198 --- /dev/null +++ b/src/sphere.cpp @@ -0,0 +1,145 @@ +#include "sphere.h" +#include "constants.h" +#include +#include + +using namespace Eigen; + +int Sphere::count = 0; + +Sphere::Sphere(const Sphere &sph) +{ + center = sph.center; + radius = sph.radius; + id = count++; +} + +bool Sphere::checkCollision(Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision) +{ + + //Origin of the ray + Vector3d O; + walker.getVoxelPosition(O); + Vector3d m = O - this->center; + + // total distance + double distance_to_sphere = m.norm(); + // collision distance + double d_ = distance_to_sphere - radius; + + //If the minimum distance from the walker to the cylinder is more than + // the actual step size, we can discard this collision. + if(d_> EPS_VAL){ + if(d_ > step_lenght+barrier_tickness){ + return false; + } + } + + double a = 1; + double b = m.dot(step); + double c = m.dot(m) - radius*radius; + if(b > EPS_VAL && c > EPS_VAL) + return false; + + + double discr = b*b - a*c; + // no real roots + if(discr <= 0.0){ + colision.type = Collision::null; + return false; + } + + //if we arrived here we need to compute the quadratic equation. + return handleCollition(walker,colision,step,a,b,c,discr,step_lenght); + +} + + +inline bool Sphere::handleCollition(Walker& walker, Collision &colision, Vector3d& step,double& a,double& b, double& c,double& discr,double& step_length){ + + double t1 = (-b - sqrt(discr))/a; + + double t2 = (-b + sqrt(discr))/a; + + + //if we are completely sure that no collision happened + if( ( (t1 < 0.0) || (t1 > step_length+barrier_tickness) ) && ( (t2 < 0.0) || (t2 > step_length+barrier_tickness)) ){ + colision.type = Collision::null; + return false; + } + + + //WARNING: Cuidar este patch + // Implementa Percolacion + if(percolation>0.0){ + double _percolation_ (double(rand())/RAND_MAX); + + if( percolation - _percolation_ > EPS_VAL ){ + count_perc_crossings++; + return false; + } + } + + // a spin that's bouncing ignores collision at 0 (is in a wall) + if(walker.status == Walker::bouncing){ + + //if the collision are too close or negative. + if( ( (t1 < EPS_VAL) || (t1 > step_length+barrier_tickness)) && (( t2 < EPS_VAL) || (t2 > step_length+barrier_tickness)) ){ + colision.type = Collision::null; + return false; + } + + if( t1 >= EPS_VAL && t1 < t2) + colision.t = fmin(t1,step_length); + else + colision.t = fmin(t2,step_length); + } + else{ + if( t1>0.0 && t1 1e-10){ + colision.col_location = Collision::outside; + } + else{ + colision.col_location = Collision::unknown; + } + + colision.rn = c; + colision.colision_point = walker.pos_v + colision.t*step; + + //Normal point + Eigen::Vector3d normal = (colision.colision_point-this->center).normalized(); + Eigen::Vector3d temp_step = step; + elasticBounceAgainsPlane(walker.pos_v,normal,colision.t,temp_step); + + colision.bounced_direction = temp_step.normalized(); + + return true; + +} + +double Sphere::minDistance(Walker &w){ + + //Origin of the ray + Vector3d O; + w.getVoxelPosition(O); + Vector3d m = O - this->center; + // minimum distance to the cylinder axis. + double distance_to_cylinder = m.norm(); + + //Minimum distance to the cylinders wall. + double d_ = (distance_to_cylinder - radius); + // return d_>0.0?d_:0.0; + return d_; +} diff --git a/src/sphere.h b/src/sphere.h new file mode 100644 index 0000000..ef55633 --- /dev/null +++ b/src/sphere.h @@ -0,0 +1,77 @@ +//! Sphere Obstacle Derived Class =============================================================/ +/*! +* \details Sphere obstacle class derived from an Obstacle. Defines a analyitical sphere of radius +* r and centered in center +* \author Jonathan Rafael +* \date 2020 +* \version 1.5 +=================================================================================================*/ + +#ifndef SPHERE_H +#define SPHERE_H + +#include "obstacle.h" + +class Sphere : public Obstacle +{ +public: + + static int count; + + Eigen::Vector3d center; /*!< Cilinder Axis reference Points, P should be the "center" */ + double radius; /*!< Radius of the Sphere */ + + /*! + * \brief Default constructor. Does nothing + */ + Sphere(){id = count++;} + /*! + * \brief Default destructor. Does nothing + */ + ~Sphere(){count--;} + + /*! + * \param center Sphere origin + * \param radius Sphere's radius + * \param scale overall scale for when reading files. + * \brief Initialize everything. + */ + Sphere(Eigen::Vector3d center_, double radius_,double scale =1):center(center_*scale),radius(radius_*scale){ + id = count++; + } + + /*! + * \brief constrcutor by copy + */ + Sphere(Sphere const &sph); + + /*! \fn checkCollision + * \param walker, Walker instance in the simulation. + * \param 3d step. Is assumed to be normalized. + * \param step_length, length used as the maximum step collision distance. + * \param collision, Collision instance to save the collision (if any) details. + * \return true only if there was a Collision::hit status. \see Collision. + * \brief Basic collision function. Returns the if there was any collision on against the obstacle. + */ + bool checkCollision(Walker &walker, Eigen::Vector3d &step, double &step_lenght, Collision &colision); + + /*! \fn minDistance + * \param walker, Walker instance in the simulation. + * \brief Returns the minimum distance from the walker to the Sphere. Used to set the reachable + * Spheres that a given walker can reach. + */ + double minDistance(Walker &w); + +private: + + /*! \fn handleCollition + * \param walker, Walker instance in the simulation. + * \param collision, Collision instance to save all the information. + * \param step, step vector where to move. + * \brief Returns true if it was any analytical collision to the infinite plane + */ + inline bool handleCollition(Walker& walker, Collision &colision, Eigen::Vector3d& step,double& a,double& b, double& c,double& discr,double& step_length); + +}; + +#endif // Sphere_H diff --git a/src/spheregammadistribution.cpp b/src/spheregammadistribution.cpp new file mode 100644 index 0000000..0c93fe1 --- /dev/null +++ b/src/spheregammadistribution.cpp @@ -0,0 +1,358 @@ +#include "spheregammadistribution.h" +#include // std::sort +#include + +using namespace std; +using namespace Eigen; + +SphereGammaDistribution::SphereGammaDistribution(unsigned num_obstacles, double a, double b,double icvf_ ,Eigen::Vector3d &min_l, Eigen::Vector3d &max_l, double min_radii) +{ + this->min_radius = min_radii; + this->num_obstacles = num_obstacles; + alpha = a; + beta = b; + icvf = icvf_; + min_limits = min_l; + max_limits = max_l; + spheres.clear(); + +} + +void SphereGammaDistribution::computeMinimalSize(std::vector radiis, double icvf_,Eigen::Vector3d& l){ + + + if(icvf_>= 0.7 && icvf_ < 0.99){ + icvf_+=0.01; + } + + double vol = 0; + + for(uint i = 0 ; i < radiis.size();i++){ + vol+= (4*M_PI/3)*radiis[i]*radiis[i]*radiis[i]; + } + + double l_ = fmax(pow(vol/icvf_, 1/3.), radiis[radiis.size()-1]*2/icvf_); + l = {l_,l_,l_}; +} + + + +void SphereGammaDistribution::createGammaSubstrate() +{ + // generate the gamma distribution + std::random_device rd; + std::default_random_engine generator(rd()); + std::gamma_distribution distribution(alpha,beta); + uint repetition = 40; + uint max_adjustments = 5; + double best_icvf = 0; + vector best_spheres; + Eigen::Vector3d best_max_limits; + min_limits = {0.,0.,0.}; + + std::mt19937 gen(rd()); + std::uniform_real_distribution udist(0,1); + std::vector radiis(num_obstacles,0); + + bool achieved = false; + + + int tried = 0; + + for (unsigned i=0; i< num_obstacles; ++i) { + + if(tried > 10000){ + string message = " Radii distribution cannot be sampled [Min. radius Error]\n"; + SimErrno::error(message,cout); + assert(0); + } + double jkr = distribution(generator); + + if(jkr< this->min_radius){ + i--; + tried++; + continue; + } + tried=0; + + radiis[i] = jkr*1e-3; //WE CONVERT FROM UM TO MM HERE + } + + // using a lambda function: + std::sort(radiis.begin(),radiis.end(),[](const double a, double b) -> bool + { + return a> b; + }); + + + uint adjustments = 0; + // We increease 1% the total area. (Is prefered to fit all the spheres than achieve a perfect ICVF.) + double adj_increase = icvf*0.01; + while(!achieved){ + + double target_icvf = this->icvf+adjustments*adj_increase; + computeMinimalSize(radiis,target_icvf,max_limits); + + for(uint t = 0 ; t < repetition; t++){ + vector spheres_to_add; + + spheres.clear(); + for(unsigned i = 0 ; i < num_obstacles; i++){ + unsigned stuck = 0; + + while(++stuck <= 1000){ + + double t = udist(gen); + double x = (t*max_limits[0]) + (1-t)*min_limits[0]; + t = udist(gen); + double y = (t*max_limits[1] + (1-t)*min_limits[1]); + t = udist(gen); + double z = (t*max_limits[2] + (1-t)*min_limits[2]); + + Eigen::Vector3d P = {x,y,z}; + Sphere sph(P,radiis[i]); + + + double min_distance; + + bool collision = checkForCollition(sph,min_limits,max_limits,spheres_to_add,min_distance); + + if(!collision){ + for (unsigned j = 0; j < spheres_to_add.size(); j++) + spheres.push_back(spheres_to_add[j]); + break; + } + } + + int dummy; + double icvf_current = computeICVF(spheres,min_limits, max_limits,dummy); + if(icvf_current > best_icvf ){ + best_icvf = icvf_current; + best_spheres.clear(); + best_spheres = spheres; + best_max_limits = max_limits; + } + } // end for spheres + + if(this->icvf - best_icvf < 0.0005){ + achieved = true; + break; + } + } + + + spheres.clear(); + adjustments++; + if(adjustments > max_adjustments){ + break; + } + } + + spheres = best_spheres; + max_limits = best_max_limits; + + //TODO cambiar a INFO + int perc_; + double icvf_current = computeICVF(spheres,min_limits, max_limits,perc_); + string message = "Percentage of spheres selected: "+ to_string(double(perc_)/radiis.size()*100.0) + + "%,\nICVF achieved: " + to_string(icvf_current*100) + " ("+ to_string( int((icvf_current/icvf*100))) + "% of the desired icvf)\n"; + SimErrno::info(message,cout); +} + + + +bool SphereGammaDistribution::checkForCollition(Sphere sph, Eigen::Vector3d min_limits, Eigen::Vector3d max_limits, std::vector& spheres_to_add,double &min_distance) +{ + spheres_to_add.clear(); + + checkBoundaryConditions(sph,spheres_to_add,min_limits,max_limits); + + min_distance = 1e10; + + bool collision = false; + + for(unsigned i = 0 ; i < spheres.size(); i++){ + for(unsigned j = 0 ; j < spheres_to_add.size(); j++){ + + double distance = (spheres[i].center - spheres_to_add[j].center).norm(); + + if(distance - (spheres[i].radius + spheres_to_add[j].radius) < 1e-15){ + min_distance = 0; + collision = true; + break; + } + if(distance < min_distance) + min_distance = distance; + } + } + + // we need to check that the spheres to add don't interse4ct each other (very small voxel sizes) + + for(unsigned i = 0 ; i < spheres_to_add.size()-1; i++){ + for(unsigned j = i+1 ; j < spheres_to_add.size(); j++){ + + double distance = (spheres_to_add[i].center - spheres_to_add[j].center).norm(); + + if(distance - (spheres_to_add[i].radius + spheres_to_add[j].radius) < EPS_VAL){ + min_distance = 0; + collision = true; + break; + } + if(distance < min_distance) + min_distance = distance; + } + } + + return collision; + +} + + + +/* +WARNING: The way we discard repeated cylinders is using radius. Repreated radius (like really the same) +are considered the same. This becasuse we don't track wich cylinders had to be replciated to mantain the voxel +symmetry +*/ + +double SphereGammaDistribution::computeICVF(std::vector& spheres, Vector3d& min_limits, Vector3d& max_limits,int& num_no_repeat) +{ + if (spheres.size() == 0) + return 0; + + double VolV = (max_limits[0] - min_limits[0])*(max_limits[1] - min_limits[1])*(max_limits[2] - min_limits[2]); + double VolS = 0; + + // using a lambda function: + std::sort(spheres.begin(),spheres.end(),[](const Sphere a, Sphere b) -> bool + { + return a.radius > b.radius; + }); + + double rad_holder = -1; + num_no_repeat = 0; + for (uint i = 0; i < spheres.size(); i++){ + + if( fabs(rad_holder - spheres[i].radius) < 1e-15 ){ + continue; + } + else{ + rad_holder = spheres[i].radius; + } + + double rad = spheres[i].radius; + VolS += 4./3.*M_PI * rad * rad * rad; + num_no_repeat++; + } + + return VolS/VolV; +} + + +void SphereGammaDistribution::checkBoundaryConditions(Sphere sph, std::vector& spheres_to_add, Vector3d min_limits, Vector3d max_limits){ + + vector to_add; + + to_add.push_back(sph); + + for(int i = 0 ; i < 3; i++){ + + double rad = sph.radius; + + if(sph.center[i]+rad >= max_limits[i]){ + + Sphere tmp = sph; + tmp.center[i]+= min_limits[i] - max_limits[i]; + to_add.push_back(tmp); + } + + if(sph.center[i] - rad <= min_limits[i]){ + Sphere tmp = sph; + tmp.center[i]+= max_limits[i] - min_limits[i]; + to_add.push_back(tmp); + } + } + + unsigned nb_s_first = to_add.size(); + if(nb_s_first >= 3){ + for(unsigned j = 1 ; j < nb_s_first; j++){ + Sphere jkr(to_add[j]); + for(int i = 0 ; i < 3; i++){ + double rad = jkr.radius; + + if(jkr.center[i]+rad >= max_limits[i]){ + Sphere tmp(jkr); + tmp.center[i]+= min_limits[i] - max_limits[i]; + to_add.push_back(tmp); + } + + if(jkr.center[i] - rad <= min_limits[i]){ + Sphere tmp(jkr); + tmp.center[i]+= max_limits[i] - min_limits[i]; + to_add.push_back(tmp); + } + } + } + } + + unsigned nb_s_second = to_add.size(); + if(nb_s_second > nb_s_first){ + for(unsigned j = nb_s_first-1 ; j < nb_s_second; j++){ + Sphere jkr(to_add[j]); + for(int i = 0 ; i < 3; i++){ + double rad = jkr.radius; + + if(jkr.center[i]+rad >= max_limits[i]){ + Sphere tmp(jkr); + tmp.center[i]+= min_limits[i] - max_limits[i]; + to_add.push_back(tmp); + } + + if(jkr.center[i] - rad <= min_limits[i]){ + Sphere tmp(jkr); + tmp.center[i]+= max_limits[i] - min_limits[i]; + to_add.push_back(tmp); + } + } + } + } + + unsigned nb_s_third = to_add.size(); + if(nb_s_third > nb_s_second){ + for(unsigned j = nb_s_second-1 ; j < nb_s_third; j++){ + Sphere jkr(to_add[j]); + for(int i = 0 ; i < 3; i++){ + double rad = jkr.radius; + + if(jkr.center[i]+rad >= max_limits[i]){ + Sphere tmp(jkr); + tmp.center[i]+= min_limits[i] - max_limits[i]; + to_add.push_back(tmp); + } + + if(jkr.center[i] - rad <= min_limits[i]){ + Sphere tmp(jkr); + tmp.center[i]+= max_limits[i] - min_limits[i]; + to_add.push_back(tmp); + } + } + } + } + + + for(unsigned i = 0 ; i < to_add.size(); i++) + { + bool rep = false; + for( unsigned j = 0; j < spheres_to_add.size(); j++){ + if( (fabs(to_add[i].center[0] - spheres_to_add[j].center[0]) < 1e-12) && (fabs(to_add[i].center[1] - spheres_to_add[j].center[1]) < 1e-12) && (fabs(to_add[i].center[2] - spheres_to_add[j].center[2]) < 1e-12) && (fabs(to_add[i].radius - spheres_to_add[j].radius) < 1e-14)) + { + rep = true; + break; + } + } + + if(rep == false){ + spheres_to_add.push_back(to_add[i]); + } + } +} diff --git a/src/spheregammadistribution.h b/src/spheregammadistribution.h new file mode 100644 index 0000000..cc9d62c --- /dev/null +++ b/src/spheregammadistribution.h @@ -0,0 +1,76 @@ +//! SphereGammaDistribution Class =============================================================/ +/*! +* \details Class to construct a substrate taken from a Gamma distribution of radiis placed in +* a single voxel structure. +* \author JR and Remy G +* \date January 2021 +* \version 1.5 +=================================================================================================*/ + + +#ifndef SPHEREGAMMADISTRIBUTION_H +#define SPHEREGAMMADISTRIBUTION_H + +#include "cylindergammadistribution.h" +#include "Eigen/Core" +#include +#include "constants.h" +#include "simerrno.h" +#include +#include "sphere.h" + + +class SphereGammaDistribution : public CylinderGammaDistribution +{ +public: + + std::vector spheres; /*!< Spheres vector */ + + /*! + * \param P_ Sphere origin + * \param radius_ sphere's radius + * \param scale scale factor for the values passed. Useful when reading a file. + * \brief Initialize everything. + */ + SphereGammaDistribution(unsigned ,double,double, double,Eigen::Vector3d &, Eigen::Vector3d &,double min_radii = 0.001); + + /*! + * \brief Samples and constructs a Gamma distribution + */ + void createGammaSubstrate(); + +private: + + /*! + * \brief Checks for collision between inside a voxel (with periodic boundaries) + * \param sph sphere to check collision with + * \param min_limits Voxel min limits. + * \param max_limits Voxel max limits. + * \param spheres_list spheres already added. + * \param min_distance that two spheres can be close to. + */ + bool checkForCollition(Sphere sph, Eigen::Vector3d min_limits, Eigen::Vector3d max_limits, std::vector& spheres_list, double &min_distance); + + /*! + * \brief Auxiliary function to check the BOundary collision + * \param sph sphere to check collision with. + * \param min_limits Voxel min limits. + * \param max_limits Voxel max limits. + * \param spheres_list spheres already added. + */ + void checkBoundaryConditions(Sphere sph, std::vector& spheres_list, Eigen::Vector3d min_limits, Eigen::Vector3d max_limits); + + /*! + * \brief Computes Intra Celular Volum Fraction given the voxel limits and the list of added spheres. + * \param spheres List of included spheres. + * \param min_limits voxel min limits. + * \param max_limits voxel max limits. + */ + double computeICVF(std::vector &spheres, Eigen::Vector3d &min_limits, Eigen::Vector3d &max_limits, int &num_no_repeat); + + void computeMinimalSize(std::vector radiis, double icvf_, Eigen::Vector3d& l); + + +}; + +#endif // SPHEREGAMMADISTRIBUTION_H diff --git a/src/trajectory.cpp b/src/trajectory.cpp index 8df945e..52bc198 100644 --- a/src/trajectory.cpp +++ b/src/trajectory.cpp @@ -2,8 +2,9 @@ #include // std::setprecision #include "simerrno.h" #include -#include -#include +#include "Eigen/Dense" +#include "Eigen/Geometry" +#include "constants.h" using namespace std; diff --git a/src/triangle.h b/src/triangle.h index 9db06df..fe901f3 100644 --- a/src/triangle.h +++ b/src/triangle.h @@ -11,7 +11,7 @@ #include "vertex.h" #include "collision.h" #include "walker.h" -#include +#include "Eigen/Core" class Triangle{ public: diff --git a/src/walker.cpp b/src/walker.cpp index 05770d6..1392b7a 100644 --- a/src/walker.cpp +++ b/src/walker.cpp @@ -1,11 +1,12 @@ /*! - * Basesd class Walker. + * Based class Walker. */ #include "walker.h" #include /* srand, rand */ #include /*random_device for MAC */ #include "cylinder.h" + Walker::Walker() { pos_r = pos_v.setZero(3,1); @@ -15,6 +16,8 @@ Walker::Walker() initial_location = location = unknown; intra_extra_consensus = intra_coll_count = extra_coll_count = rejection_count = steps_count = 0; steps_per_second = 0; + in_ply_index = -1; + in_obj_index =-1; } Walker::Walker(double xmin, double xmax, double ymin, double ymax, double zmin, double zmax) @@ -38,6 +41,8 @@ Walker::Walker(double xmin, double xmax, double ymin, double ymax, double zmin, initial_location = location = unknown; intra_extra_consensus = intra_coll_count = extra_coll_count =0; steps_per_second = 0; + in_ply_index = -1; + in_obj_index = -1; } void Walker::getRealPosition(double &x_, double &y_, double &z_) const diff --git a/src/walker.h b/src/walker.h index f78d51f..eb66ac0 100644 --- a/src/walker.h +++ b/src/walker.h @@ -52,9 +52,15 @@ class Walker { int in_obj_index; /*!< Auxiliar index to save if the walker was inside a convex object */ - CylinderCollisionSphere collision_sphere_cylinders; /*!< Collision sphere for collition against cylidners */ + int in_ply_index; /*!< Auxiliar index to save if the walker was inside a convex ply object */ - PLYCollisionSphere collision_sphere_ply; /*!< Collision sphere for collition against PLY meshes */ + int in_sph_index; /*!< Auxiliar index to save if the walker was inside a sphere */ + + ObstacleCollisionSphere cylinders_collision_sphere; /*!< Collision sphere for collition against cylidners */ + + ObstacleCollisionSphere spheres_collision_sphere; /*!< Collision sphere for collition against cylidners */ + + PLYCollisionSphere ply_collision_sphere; /*!< Collision sphere for collition against PLY meshes */ Eigen::Vector3d initial_sphere_pos_v; /*!< Saves the intial positioon of the walker inside the collition sphere */