IGMPlot 3.16
Optimized IGMplot version able to use wfn/wfx/xyz files
Loading...
Searching...
No Matches
Node.h
Go to the documentation of this file.
1/*
2 * Copyright University of Reims Champagne-Ardenne
3 * Authors and Contributors: Akilan RAJAMANI, Corentin LEFEBVRE, Johanna KLEIN,
4 * Emmanuel PLUOT, Hugo ROUSSEL, Gaetan RUBEZ, Hassan KHARTABIL,
5 * Jean-Charles BOISSON and Eric HENON
6 * (24/07/2017)
7 * jean-charles.boisson@univ-reims.fr, eric.henon@univ-reims.fr
8 *
9 * This software is a computer program whose purpose is to
10 * detect and quantify interactions from electron density
11 * obtained either internally from promolecular density or
12 * calculated from an input wave function input file. It also
13 * prepares for the visualization of isosurfaces representing
14 * several descriptors (dg) coming from the IGM methodology.
15 *
16 * This software is governed by the CeCILL-C license under French law and
17 * abiding by the rules of distribution of free software. You can use,
18 * modify and/ or redistribute the software under the terms of the CeCILL-C
19 * license as circulated by CEA, CNRS and INRIA at the following URL
20 * "http://www.cecill.info".
21 *
22 * As a counterpart to the access to the source code and rights to copy,
23 * modify and redistribute granted by the license, users are provided only
24 * with a limited warranty and the software's author, the holder of the
25 * economic rights, and the successive licensors have only limited
26 * liability.
27 *
28 * In this respect, the user's attention is drawn to the risks associated
29 * with loading, using, modifying and/or developing or reproducing the
30 * software by the user in light of its specific status of free software,
31 * that may mean that it is complicated to manipulate, and that also
32 * therefore means that it is reserved for developers and experienced
33 * professionals having in-depth computer knowledge. Users are therefore
34 * encouraged to load and test the software's suitability as regards their
35 * requirements in conditions enabling the security of their systems and/or
36 * data to be ensured and, more generally, to use and operate it in the
37 * same conditions as regards security.
38 *
39 * The fact that you are presently reading this means that you have had
40 * knowledge of the CeCILL-C license and that you accept its terms.
41 *
42 * */
43
48
49#ifndef _NODE_H_
50#define _NODE_H_
51
52// LOCAL
53#include <Results.h>
54//#include <ProgData.h>
55
58class Node
59{
60
61 private :
62
63 // Variables relevant to the node itself
64
66 int nbAtom;
67
70
73
76
77 // Variables relevant in the computing of density and, therefore, gradiant and hessian values
78
80 double * __restrict diffX;
81
83 double * __restrict diffY;
84
86 double * __restrict diffZ;
87
89 double * __restrict squareX;
90
92 double * __restrict squareY;
93
95 double * __restrict squareZ;
96
98 double * __restrict rho1;
99
101 double * __restrict rho2;
102
104 double * __restrict rho3;
105
107 double * __restrict distance;
108
110 double rho;
111
114
115 // Determinant value
116 // NOT USED
117 //double determinant;
118
121
122 // Variables relevant in the computing of the gradient and hessian values
123
125 double hess[6];
126
128 double lambdas[3];
129
131 double eigV[3][3]; // a static ARRAY
132
135
137 double sumBRho;
138
141
143 double multInvR;
144
147
148 // Lambda processing values : a (TO DOCUMENT)
149 // NOT USED
150 //double a;
151
152 // Lambda processing values : b (TO DOCUMENT)
153 // NOT USED
154 //double b;
155
156 // Lambda processing values : c (TO DOCUMENT)
157 // NOT USED
158 //double c;
159
160 // Lambda processing values : p (TO DOCUMENT)
161 // NOT USED
162 //double p;
163
164 // Lambda processing values : q (TO DOCUMENT)
165 // NOT USED
166 //double q;
167
169 // double opti;array over atoms
170 double * __restrict opti;
171
173 double opti2;
174
175 // Optimization value 3
176 // NOT USED
177 //double opti3;
178
180 double tmp;
181
182 // Miscealenous constants
183
185 static const int X = 0;
186
188 static const int Y = 1;
189
191 static const int Z = 2;
192
194 int lol2;
195
196 public :
197
204 Node(int nbAtomParam, int nbAtomMolAParam, ProgData &pdataParam);
205
209 ~Node();
210
217 void computeDensity(axis_t & __restrict posGrid, param_t & __restrict params);
218
222 void computeGradHess();
226 void reComputeGrad();
227
231 void sortLambdas();
232
236 void computeSortLambdas();
237
245 void process( axis_t & posGrid, int index, Results &results, param_t & params );
246
250 void diagonalizeHessian();
251
256 void basisChange(double matrixHessianEigVec[3][3]);
257
258
259}; // end of class Node
260
261#endif
Manage the results of the application.
Class designed to store Gradient related values and provide some utilities concerning those.
Definition LocalData.h:61
double sumBRho
Sum multiplications of rhos' values and B values.
Definition Node.h:137
void process(axis_t &posGrid, int index, Results &results, param_t &params)
Process all the information for an entire line of the grid.
Definition Node.cpp:366
double hess[6]
Six hessian values.
Definition Node.h:125
double *__restrict diffX
Differences between node position and atom's position over x axis.
Definition Node.h:80
static const int Y
Constant used for accessing y axis in three element's array.
Definition Node.h:188
double *__restrict distance
Distance value between the node position and the atom.
Definition Node.h:107
double *__restrict squareZ
Square of difference value "diffZ" over the z axis.
Definition Node.h:95
double multInvR
Multiplicative inverse of the distance.
Definition Node.h:143
double *__restrict rho1
Rho value processed over the x axis.
Definition Node.h:98
double opti2
Optimization value 2.
Definition Node.h:173
double *__restrict diffZ
Differences between node position and atom's position over z axis.
Definition Node.h:86
void computeSortLambdas()
Function used to compute and sort lambdas' values.
Definition Node.cpp:323
double tmp
Temporary value.
Definition Node.h:180
int nbAtomMolA
The number of atom in molecule A.
Definition Node.h:69
void reComputeGrad()
Computes gradient only, ig ED gradiet have already been computed before.
Definition Node.cpp:259
double *__restrict rho3
Rho value processed over the z axis.
Definition Node.h:104
static const int Z
Constant used for accessing z axis in three element's array.
Definition Node.h:191
double *__restrict squareX
Square of difference value "diffX" over the x axis.
Definition Node.h:89
double squareMultInvR
Square of the multiplicative inverse of the distance.
Definition Node.h:146
ProgData & pdata
The program's data.
Definition Node.h:75
double rho
Rho value processed during density processing.
Definition Node.h:110
void computeDensity(axis_t &__restrict posGrid, param_t &__restrict params)
Computes density.
Definition Node.cpp:107
int lol2
TO DOCUMENT.
Definition Node.h:194
axis_t partialGradient
Partial gradients added to process gradient values.
Definition Node.h:134
double *__restrict rho2
Rho value processed over the y axis.
Definition Node.h:101
static const int X
Constant used for accessing x axis in three element's array.
Definition Node.h:185
~Node()
Destructor.
Definition Node.cpp:81
double *__restrict diffY
Differences between node position and atom's position over y axis.
Definition Node.h:83
void sortLambdas()
Sorting function used to sort lambdas' values.
Definition Node.cpp:292
Node(int nbAtomParam, int nbAtomMolAParam, ProgData &pdataParam)
Main constructor.
Definition Node.cpp:55
double contribution
Contribution value processed during density processing.
Definition Node.h:113
void basisChange(double matrixHessianEigVec[3][3])
basis change for every vector of the IGM approach : ED gradient, ED IGM gradient, ....
Definition Node.cpp:522
double lambdas[3]
Three lambda's values (eigenvalues of the ED hessian)
Definition Node.h:128
bool shouldCompute
Tells if the density matched the desired values.
Definition Node.h:120
double sumSquareBRho
Sum multiplications of rhos' values and squares of B values.
Definition Node.h:140
LocalData * data
The local data' values.
Definition Node.h:72
double *__restrict squareY
Square of difference value "diffY" over the y axis.
Definition Node.h:92
int nbAtom
The number of atom, both molecule combined.
Definition Node.h:66
void computeGradHess()
Computes gradient and hessian's values.
Definition Node.cpp:192
double eigV[3][3]
Three eigenvectors.
Definition Node.h:131
double *__restrict opti
Optimization value 1.
Definition Node.h:170
Class designed to store the program's main dataprovide some utilities concerning those.
Definition ProgData.h:65
Class designed to store all results that can be used as output by the program.
Definition Results.h:67
Structure describing one axis.
Definition general.h:694
Structure used for the storage of the parameters read from the parameter file param....
Definition general.h:560