IGMPlot 3.16 Optimized IGMplot version able to use wfn/wfx/xyz files

Loading...
Searching...
No Matches
general.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 _GENERAL_H_
50#define _GENERAL_H_
51
52// STL
53#include <cmath>
54#include<string>
55#include <set>
56#include <sstream>
57#include <iostream>
58#include <fstream>
59#include <iomanip>
60#include <fstream>
61#include <cstdlib>
62#include <vector>
63
64
66 const double maxElecAccurlev1 = 0.999999; // default value is 0.999999for ELF, SELF, IGM
67 const double maxElecAccurlev2 = 0.9999999; // value for IBSI calculations
68 const double maxElecAccurlev3 = 0.999999999; // value for CRITIC calculations
69 const double maxElecAccurlev4 = 0.9999999999999999999; // full accuracy mode
70
71// epsilon in dgscaled = dg/(rho + epsilon)
72 const double epsrhodgscaled = 0.0005;
73
74// dg Threshold used to calculate dg/rho. Only
75// those points for which dg > dgThresholdForDGSCALED will be used
76// in dg/rho calculations (inter and intra) and then in Pauli calculations also
77// to avoid numerical inaccuracy in building dg/rho isosurfaces
78//const double dgThresholdForDGSCALED =0.0001;
79 const double dgThresholdForDGSCALED =0.00001;
80
81// Rho Threshold used to calculate dg/rho. Only
82// those points for which rho > rhoThresholdForDGSCALED will be used
83// in dg/rho calculations (inter and intra) and then To project steric repulsion regions
84// to avoid numerical inaccuracy in building dg/rho isosurfaces
85 const double rhoThresholdForDGSCALED =0.000001;
86
87
88// isovalue for dg/rho isovalues
89// Dividing by rho makes the dg/rho scale
90// in the range [0-2.5] (observed so far)
91// over the all spectrum of interactions ! (strong or weak)
92 const double dgSCALEDisovalue = 0.8;
93
94// ED threshold for calculating Pauli repulsion
95 const double PauliRhoThresh = 1E-5;
96
97// Local AO overlap (chi_a x chi_b) threshold for calculating Pauli repulsion
98 const double OV_thresh = 1E-5;
99
100// Local AO (chi_a) threshold for calculating Pauli repulsion
101 const double chi_thresh = 1E-5;
102
103
104// range for Pauli exchange repulsion (G - GW)
105// so far observed
106 const double pauliMIN = 0.0;
107 const double pauliMAX = 2.5;
108
109// conversion from Ekin in a.u to kcal/mol
110 const double ekin2kcal = 627.51;
111
112
113// threshold in dg/rho descriptor to integrate pauli repulsion
114 const double pauliDgOverRhoThreshold = 0.1;
115
116// ELF isovalue to draw ELF isosurfaces (default) with VMD
117 const double elfIsovalue = 0.83;
118
119// threshold used to know if the GTO is zero or not
120// based on the value of the exponent of the GTO
121// -40 is the original value
122 const double exponThreshold = -40.0;
123
124// pda epsilon for cylinder
125 const double epsCyl = 0.0001;
126
128 const double BOHRTOA = 0.52917720859;
129
130// MEDIUM grid increments used in the search of critical points with seeds
131// found from a promolecular IGM analysis:
132 const double incrCRITICMEDIUMx = 0.15*BOHRTOA; // in angstroms
133 const double incrCRITICMEDIUMy = 0.14*BOHRTOA; // no symetrical values are chosen on purpose
134 const double incrCRITICMEDIUMz = 0.12*BOHRTOA; // to avoid any problem during the search of qg max values in the grid
135
136// FINE grid increments used in the search of critical points with seeds
137// found from a promolecular IGM analysis (will take about 4 more times)
138 const double incrCRITICFINEx = incrCRITICMEDIUMx/1.5874; // in angstroms
139 const double incrCRITICFINEy = incrCRITICMEDIUMy/1.5874; // no symetrical values are chosen on purpose
140 const double incrCRITICFINEz = incrCRITICMEDIUMz/1.5874; // to avoid any problem during the search of qg max values in the grid
141
142// ULTRAFINE grid increments used in the search of critical points with seeds
143// found from a promolecular IGM analysis (will take about 10 more times)
144 const double incrCRITICULTRAFINEx = incrCRITICMEDIUMx/2.15443; // in angstroms
145 const double incrCRITICULTRAFINEy = incrCRITICMEDIUMy/2.15443; // no symetrical values are chosen on purpose
146 const double incrCRITICULTRAFINEz = incrCRITICMEDIUMz/2.15443; // to avoid any problem during the search of qg max values in the grid
147
148
149// threshold used to filter undesired drifted points during Newton-Raphson procedure for
150// critical points
151 const double qgThreshNR = 1.3;
152
153// lower distance threshold allowed between two critical points
154//const double cpSeparationThresh = 0.01; // in bohr
155//MODIF ERIC: 16081023
156 const double cpSeparationThresh = 0.01; // in bohr
157
158// ED gradient threshold for Newton-Raphson convergence
159// MODIF ERIC 16082023
160//const double gradThresholdNR = 0.0001;
161 const double gradThresholdNR = 0.000007;
162
163// Displacement threshold for Newton-Raphson convergence
164//const double normdisplactThreshNR = 0.0001;
165// MODIF ERIC 16082023
166//const double normdisplactThreshNR = 0.0000001;
167 const double normdisplactThreshNR = 0.00000007;
168
169// Maximum iteration number allowed for Newton-Raphson convergence
170 const int niterThreshNR=50;
171
172// Epsilon value to perturb a little bit the current position during the Newton-Raphson search
173// of critical points of the ED
174 const double epsXNR = 0.003;
175 const double epsYNR = 0.006;
176 const double epsZNR = 0.009;
177
178// Threshold for every ED Hessian eigenvalue
179 const double EVthreshCP=0.00008;
180
181// threshold to select those primitive to be used
182 const double cutoff_pri=1.0e-10; // original value from NCIPlot, save about 30%-40% CPU time
183
184// threshold to select those primitive gradient sufficently large
185// to calculate cpsi in IBSI calculations
186 const double cutoff_gradpri=1.0e-12;
187
188// ratio used to determine the isovalue selected to build 3D isosurface
189// The isovalue is defined as 40% of the maximum peak height of the signature:
190 const double ratioPeak = 0.4;
191
192// a threshold value for extracting peaks from dg signatures
193 const double qgThresh = 1.3;
194
195// a threshold to filter peaks in the analysis of dg for the ncc part
196 const double qgRhoThresh = -0.09;
197
198// an espilon value to apply to the qgRhoThresh to estimate the influence of
199// qgRhoThresh on dgAt contribution to NCC
200 const double EDepsilon = 0.01;
201
202// a constant indicating that no CHARGE keyword has been supplied in the param.igm input file
203 const int NOCHARGE = -99999;
204
205
206// upper limit for allowed atomic number for separating core from valence e-
207 const int COREAtomLimit= 53; // 0-based numbering -> calculation allowed up to Z=54 (including Xenon)
208
209// upper limit for allowed atomic number for HIRSHFELD treatment
210 const int HIRSHAtomLimit = 17; // 0-based numbering -> calculation allowed up to Z=18 (including Argon)
211
212// upper limit to allow critical point search treatment
213 const int CRITICPROMOLAtomLimit = 35; // 0-based numbering -> determination of seeds by promol IGM allowed up to Z=36
214
215
216// Lower IBSI limit to consider BDA calculation; above this threshold,
217// BDA value are considered uncertained (too small covalent character)
218 const double IBSILimitForBDA = 0.15;
219
220// For the BDA calculation the number of core orbital for each atom
221// is saved in the ATOM_COREORB array, but fobidden for atoms of periods
222// after 5 ==> the constant MAXCORE has been used in the ATOM_COREORB array
223// to specify those atoms unallowed
224 const unsigned int MAXCORE = 1000000000;
225
227// based on dgpair integration. In order for this IBSI index to match 1 for H2, Normation
228// coefficient has been computed :
229// (1) for the GTO level at the M062X 6-31G** level of theory
230// and with the cylinder increments: Pz=100, Pr=100, Ptheta=50;
231// dist HH = 0.737309086727
232// dg pair (gross)= 0.390519702115
233// dg/d^2 = 0.7183627045
234 const double NormCoeff_deltagd2GTO = 0.7183627045;// (=int_dg/d^2) in the case of H2
235// (2) for the STO level at the M062X/TZP level of theory (ADF)
236// and with the cylinder increments: Pz=100, Pr=100, Ptheta=50;
237// dist HH = 0.739598965
238// dg pair (gross)= 0.34644146941713405141
239// dg/d^2 = 0.63334692753492960460
240 const double NormCoeff_deltagd2STO = 0.63334692753492960460;// (=int_dg/d^2) in the case of H2
241
242
243
244// name of the file containing timing informations
245 const std::string runinfo="runinfo";
246
247
248// cylindrical grid steps default:
249 const unsigned int cylPz = 100;
250 const unsigned int cylPr = 100;
251 const unsigned int cylPtheta = 50; // must be an even number !
252
253
254// BDA detection threshold
255 const double pdaThreshold = 0.005;
256
258 const double scoredgThresh = 0.0001;
259
261 const double scoredg_over_rhoThresh = 0.0010; // sensible parameter
262
264 const double ratioIGMthresholdPRO = 2.0;
265 const double EDthreshold = 0.07;
266//const double gradrho_over_dgThreshWFN = 3.0;
267//const double gradrho_over_dgThreshPRO = 2.0;
268//const double gradrho_over_dgInterThreshPRO = 50.0;
269
270
272 const double interacThreshold = 0.00005;
273
275 const unsigned int NB_KNW_ATMS = 54;
276
278 const double ALPHA = 0.16162045967;
279
281 const double ONE_THIRD = 0.33333333333333;
282
284 const double FOUR_THIRD = 1.33333333333333;
285
287 const double FIVE_THIRD = 1.66666666666666;
288
290 const double R_MAX = 20.0;
291
292// the threshold used to test if an atom is exactly located on a grid node (in bohr)
293 const double R_TRESHOLD = 0.0000001;
294
296 const double DEFAULT_CUTOFF = 0.2;
297
299 const double LN_2 = 0.69314718056;
300
302 const double NaN = 0.0;
303
305 const double PI = 3.141592653589793;
306
307// constant used to obtain the RDG descriptor
308//const double constValue = 2.0*std::pow((3.0*std::pow(PI,2)),(ONE_THIRD));
309 const double constValue = 6.187335452560202;
310
311
313 const double THETA_MAX = 2*PI;
314
316 const double EPSILON_RAD = 0.00055*PI;
317
319 const double PI_2 = 6.28318530718;
320
322 const double PI_4 = 12.5663706144;
323
325 const double PI_squared = 9.86960440108936;
326
328 const double ELF_const = 2.871234000188192;// A. Savin, B. Silvi, F. Colonna Can. J. Chem. 74 (1996) 1088-1096 equation [5] independent on the spin.
329// equivalent to Thomas Fermi formula : C_F = (3/10)(3pi^2)^2/3 [h/(2pi)]^2 / me
330
331// The cte in front of the expression of the ED "slater", no unit
332 const double A1[NB_KNW_ATMS] = { //[1:2] 1s
333 0.2815, 2.437,
334 //[3:10] 2s 2p
335 11.84, 31.34, 67.82, 120.2,190.9, 289.5, 406.3, 561.3,
336 //[11:18] 3s 3p
337 760.8, 1016., 1319., 1658., 2042., 2501., 3024., 3625.,
338 //[19:20] 4s
339 422.685, 328.056,
340 //[21:30] 3d
341 369.212, 294.479, 525.536, 434.298, 9346.12, 579.606, 665.791, 793.8, 897.784, 1857.03,
342 //[31:36] 4p
343 898.009, 1001.24, 1101.35, 1272.92, 1333.8, 1459.53,
344 //[37:51] 5s NOT AVAILABLE
345 0.0, 0.0,
346 //4d NOT AVAILABLE
347 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
348 //[52:54] 5p
349 0.0, 0.0, 0.0, 457.406, 3.23589, 643.098
350};
351
352
353// The cte in front of the expression of the ED "slater", no unit
354 const double A2[NB_KNW_ATMS] = { //[1:2] 1s
355 0.0, 0.0,
356 //[3:10] 2s 2p
357 0.06332, 0.3694, 0.8527, 1.172, 2.247, 2.879, 3.049, 6.984,
358 //[11:18] 3s 3p
359 22.42, 37.17, 57.95, 87.16, 115.7, 158.0, 205.5, 260.0,
360 //[19:20] 4s
361 104.678, 48.1693,
362 //[21:30] 3d
363 66.7813, 64.3627, 97.5552, 37.8524, 166.393, 50.2383, 51.7033, 60.5725, 58.8879, 135.027,
364 //[31:36] 4p
365 1.10777, 0.855815, 901.893, 1.20778, 1.0722, 1.95028,
366 //[37:51] 5s NOT AVAILABLE
367 0.0, 0.0,
368 //4d NOT AVAILABLE
369 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
370 //[52:54] 5p
371 0.0, 0.0, 0.0, 0.0648533, 4.1956, 0.133996
372};
373
374// The cte in front of the expression of the ED "slater", no unit
375 const double A3[NB_KNW_ATMS] = { //1s
376 0.0, 0.0,
377 //2s 2p
378 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
379 //3s 3p
380 0.06358, 0.3331, 0.8878, 0.7888, 1.465, 2.170, 3.369, 5.211,
381 //4s
382 0.0305251, 0.137293,
383 //3d
384 0.217304, 0.312378, 0.288164, 0.216041, 0.428442, 0.301226, 0.358959, 0.384414, 0.446463, 0.664027,
385 //4p
386 0.178217, 0.271045, 1.43271, 0.548474, 1.52238, 3.12305,
387 //5s NOT AVAILABLE
388 0.0, 0.0,
389 //4d NOT AVAILABLE
390 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
391 //5p
392 0.0, 0.0, 0.0, 0.0273883, 0.0347855, 0.0499776
393};
394
395// exponent in the expression of the ED "slater", given in bohr^-1 (to be multiplied by the distance
396// between the current grid node and the considered atom --> the distance hs to be expressed in bohr)
397 const double B1[NB_KNW_ATMS] = { //1s
398 1.8910741301059, 2.95945546019532,
399 //2s 2p
400 5.23012552301255, 7.19424460431655, 9.44287063267233, 11.3122171945701, 13.0378096479791, 14.9476831091181, 16.4473684210526, 18.2149362477231,
401 //3s 3p
402 20.1612903225806, 22.271714922049, 24.330900243309, 26.1780104712042, 27.9329608938547, 29.8507462686567, 31.7460317460318, 33.7837837837838,
403 //4s
404 61.3085, 13.6033,
405 //3d
406 15.1828, 8.87333, 18.4925, 12.2138, 47.0758, 13.6638, 14.1117, 15.1832, 15.4177, 23.5312,
407 //4p
408 12.4217, 12.8073, 13.0865, 13.8734, 13.8227, 14.1814,
409 //5s NOT AVAILABLE
410 0.0, 0.0,
411 //4d NOT AVAILABLE
412 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
413 //5p
414 0.0, 0.0, 0.0, 3.82753, 23.9761, 4.10166
415};
416
417// exponent in the expression of the ED "slater", given in bohr^-1 (to be multiplied by the distance
418// between the current grid node and the considered atom --> the distance hs to be expressed in bohr)
419 const double B2[NB_KNW_ATMS] = { //1s
420 1.000000, 1.000000,
421 //2s 2p
422 1.00080064051241, 1.43988480921526, 1.88679245283019, 1.82481751824818, 2.20653133274492, 2.51635631605435, 2.50375563345018, 2.90107339715695,
423 //3s 3p
424 3.98247710075667, 4.65116279069767, 5.33617929562433, 6.0459492140266, 6.62690523525514, 7.30460189919649, 7.9428117553614, 8.56164383561644,
425 //4s
426 3.81272, 3.94253,
427 //3d
428 4.24199, 4.33369, 4.58656, 3.81061, 5.07878, 4.09039, 4.17018, 4.30955, 4.35337, 5.19033,
429 //4p
430 2.00145, 1.85496, 7.70162, 1.88584, 2.12925, 2.35537,
431 //5s NOT AVAILABLE
432 0.0, 0.0,
433 //4d NOT AVAILABLE
434 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
435 //5p
436 0.0, 0.0, 0.0, 1.19985, 2.24851, 1.25439
437};
438
439// exponent in the expression of the ED "slater", given in bohr^-1 (to be multiplied by the distance
440// between the current grid node and the considered atom --> the distance hs to be expressed in bohr)
441 const double B3[NB_KNW_ATMS] = { //1s
442 1.000000, 1.000000,
443 //2s 2p
444 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000, 1.000000,
445 //3s 3p
446 0.9769441187964, 1.28982329420869, 1.67728950016773, 1.42959256611866, 1.70910955392241, 1.94212468440474, 2.01045436268597, 2.26654578422484,
447 //4s
448 0.760211, 0.972271,
449 //3d
450 1.08807, 1.18612, 1.19053, 1.22212, 1.3246, 1.32999, 1.38735, 1.42114, 1.48338, 1.54071,
451 //4p
452 1.19489, 1.31783, 1.64735, 1.57665, 1.79153, 1.99148,
453 //5s NOT AVAILABLE
454 0.0, 0.0,
455 //4d NOT AVAILABLE
456 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
457 //5p
458 0.0, 0.0, 0.0, 0.906738, 0.856995, 1.02511
459};
460
462//const double vdW_VALUES[NB_KNW_ATMS] = { 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0 };
463
465 typedef enum PARAM_TYPES
466 {
467 TYPE_INCREMENTS,
468 TYPE_INTERMOLECULAR,
469 TYPE_RADIUS,
470 TYPE_OUTPUT_NAME,
471 TYPE_CUBE,
472 TYPE_CUTOFFS,
473 TYPE_CUTPLOT,
474 TYPE_CUTPLOT_IGM,
475 TYPE_VMD_COLRANG_IGM,
476 TYPE_LIGAND,
477 TYPE_OUTPUT,
478 FRAG1,
479 FRAG2,
480 BONDS,
481 IBSI,
482 CUBEFRAG,
483 //CHARGE,
484 HIRSH,
485 CRITIC,
486 CRITICFINE,
487 CRITICULTRAFINE,
488 CRITICaddSEEDS,
489 TYPE_PEAKFOCUSINTRA,
490 TYPE_PEAKFOCUSINTER,
491 ELF,
492 DGSCALED,
493 PARSERKF,
494 SELF,
495 SELFATOMIC,
496 FULLAOACC,
497 SIZE_PARAM
498 } param_types_t;
499
503 const std::string PARAM_NAMES [] =
504 {
505 "INCREMENTS",
506 "INTERMOLECULAR",
507 "RADIUS",
508 "ONAME",
509 "CUBE",
510 "CUTOFFS",
511 "CUTPLOT",
512 "CUTPLOT_IGM",
513 "VMD_COLRANG_IGM",
514 "LIGAND",
515 "OUTPUT",
516 "FRAG1",
517 "FRAG2",
518 "BONDS",
519 "IBSI",
520 "CUBEFRAG",
521 //"CHARGE",
522 "HIRSH",
523 "CRITIC",
524 "CRITICFINE",
525 "CRITICULTRAFINE",
526 "CRITICADDSEEDS",
527 "PEAKFOCUSINTRA",
528 "PEAKFOCUSINTER",
529 "ELF",
530 "DGSCALED",
531 "PARSERKF",
532 "SELF",
533 "SELFATOMIC",
534 "FULLAOACC"
535 };
536
537
539 typedef struct
540{
542 double grad;
543
545 double gradIGM;
546
548 double gradIGMInter;
549
551 double gradIGMInter2;
552
554 double gradIGMInter3;
555}norms_t;
556
559 typedef struct
560{
562 std::string molAFileName;
563
565 std::string molBFileName;
566
568 std::string outputName;
569
571 double radiusRoundLigand;
572
574 double intermolecular;
575
577 int numLigand;
578
580 int nbFiles;
581
583 int outputType;
584
586 double radius[4];
587
589 double cutoffs[2];
590
592 double cutplot[2];
593
595 double cutplotIGM[2];
596
598 double vmdcolrangIGM[2];
599
601 double cube[6];
602
604 double increments[3];
605
607 bool cubeUsed;
608
610 bool radiusUsed;
611
613 bool cubefrag;
614
616 double bondcut;
617
619 bool paramFound[SIZE_PARAM];
620
622 unsigned int coremo;
623
625 int CHARGE;
626
628 double cutpeakIntra[2];
629 double cutpeakInter[2];
630
631}param_t;
632
634 typedef enum CUBE_TYPES
635 {
636 TYPE_DELTA_G_INTRA,
637 TYPE_DELTA_G_INTER,
638 SIZE_CUBE_DELTA,
639 TYPE_RHO,
640 TYPE_RDG,
641 TYPE_DELTA_G_INTRAFC,
642 TYPE_DELTA_G_INTERFC
643 }cube_types_t;
644
646 typedef enum OUTPUT_TYPES
647 {
648 OUTPUT_NONE,
649 OUTPUT_DAT,
650 OUTPUT_RHO_RDG,
651 OUTPUT_DELTA,
652 OUTPUT_PERCENT,
653 OUTPUT_ALL
654 }output_types_t;
655
657 typedef struct
658{
659
661 std::pair< unsigned int, unsigned int> atomPair;
662
664 double length; // in bohr
665
667 double ibsi; // no unit
668
670 double baf; // unit of ED gradient
671
673 double ABx,ABy,ABz;
674
675}bond_t;
676
678 typedef struct
679{
681 double x;
682
684 double y;
685
687 double z;
688}position_t;
689
690/* JC: the definition of axis_t and position_t are similar
691 * but have different documentation ...*/
693 typedef struct
694{
696 double x;
698 double y;
700 double z;
701}axis_t;
702
704 typedef struct
705{
707 double * __restrict xValues;
708
710 double * __restrict yValues;
711
713 double * __restrict zValues;
714}positions_t;
715
717 typedef struct criticalpoint
718 {
719 double pos[3], L123[3]; // array containing coordinates of found critical points and ED hessian eigenval.
720 double H, V, G, laplac, RHO, GRADRHO; // and local energy density and kinetic energy density and ED and and ED gradient magn. and laplacian
721 double dg, qg; // local dg and qd descriptors
722 int type; // -3=NCP, -1=BCP, 1=RCP, 3=CCP
723
724 } criticalpoint;
725
726
727#endif
R_MAX
const double R_MAX
cylinder diameter (in bohr)
Definition general.h:290
BOHRTOA
const double BOHRTOA
Value to transform to Bohr to Anstgrom.
Definition general.h:128
maxElecAccurlev1
const double maxElecAccurlev1
accuracy for primitive calculation according to the J. Pilme procedure
Definition general.h:66
interacThreshold
const double interacThreshold
intermolecular detection threshold (for the sum of dgInter)
Definition general.h:272
FIVE_THIRD
const double FIVE_THIRD
Value of 5/3.
Definition general.h:287
param_types_t
enum PARAM_TYPES param_types_t
TO DOCUMENT.
THETA_MAX
const double THETA_MAX
2pi rad to go around the cylind
Definition general.h:313
NormCoeff_deltagd2GTO
const double NormCoeff_deltagd2GTO
in the Cylindrical version of IGMPLOT, a Bond Strngth Index is computed
Definition general.h:234
ALPHA
const double ALPHA
TO DOCUMENT.
Definition general.h:278
ratioIGMthresholdPRO
const double ratioIGMthresholdPRO
threshold used to limit the integration for estimating internal non-cov interactions
Definition general.h:264
ONE_THIRD
const double ONE_THIRD
Value of 1/3.
Definition general.h:281
LN_2
const double LN_2
TO DOCUMENT.
Definition general.h:299
PARAM_NAMES
const std::string PARAM_NAMES[]
Definition general.h:503
PI_squared
const double PI_squared
Value of PI**2.
Definition general.h:325
EPSILON_RAD
const double EPSILON_RAD
Constant for getRotationMatrix.
Definition general.h:316
FOUR_THIRD
const double FOUR_THIRD
Value of 4/3.
Definition general.h:284
OUTPUT_TYPES
OUTPUT_TYPES
The outputs' types.
Definition general.h:647
CUBE_TYPES
CUBE_TYPES
The cubes' types.
Definition general.h:635
ELF_const
const double ELF_const
ELF constant (denominator) (3/10) * (3*PI_squared)^(2/3) = Thomas-Fermi cte.
Definition general.h:328
PI
const double PI
Value of PI.
Definition general.h:305
PI_4
const double PI_4
Value of 4*PI.
Definition general.h:322
output_types_t
enum OUTPUT_TYPES output_types_t
The outputs' types.
cube_types_t
enum CUBE_TYPES cube_types_t
The cubes' types.
scoredgThresh
const double scoredgThresh
dgInter threshold used to limit the integration
Definition general.h:258
DEFAULT_CUTOFF
const double DEFAULT_CUTOFF
TO DOCUMENT.
Definition general.h:296
NaN
const double NaN
TO DOCUMENT.
Definition general.h:302
PARAM_TYPES
PARAM_TYPES
TO DOCUMENT.
Definition general.h:466
NB_KNW_ATMS
const unsigned int NB_KNW_ATMS
TO DOCUMENT.
Definition general.h:275
scoredg_over_rhoThresh
const double scoredg_over_rhoThresh
other threshold used to limit the integration
Definition general.h:261
PI_2
const double PI_2
Value of 2*PI.
Definition general.h:319
axis_t
Structure describing one axis.
Definition general.h:694
axis_t::y
double y
TO DOCUMENT.
Definition general.h:698
axis_t::z
double z
TO DOCUMENT.
Definition general.h:700
axis_t::x
double x
TO DOCUMENT.
Definition general.h:696
bond_t
Structure describing studied bond (QM treatment)
Definition general.h:658
bond_t::length
double length
bond length
Definition general.h:664
bond_t::atomPair
std::pair< unsigned int, unsigned int > atomPair
atom indexes
Definition general.h:661
bond_t::ABx
double ABx
AB vector from first to second atom.
Definition general.h:673
bond_t::baf
double baf
baf value
Definition general.h:670
bond_t::ibsi
double ibsi
IBSI value.
Definition general.h:667
criticalpoint
structure to save critical points
Definition general.h:718
norms_t
Structure used for the storage of all vectors' norms for the gradients (PROMOL treatment)
Definition general.h:540
norms_t::gradIGMInter2
double gradIGMInter2
TO DOCUMENT.
Definition general.h:551
norms_t::grad
double grad
TO DOCUMENT.
Definition general.h:542
norms_t::gradIGMInter3
double gradIGMInter3
TO DOCUMENT.
Definition general.h:554
norms_t::gradIGM
double gradIGM
TO DOCUMENT.
Definition general.h:545
norms_t::gradIGMInter
double gradIGMInter
TO DOCUMENT.
Definition general.h:548
param_t
Structure used for the storage of the parameters read from the parameter file param....
Definition general.h:560
param_t::cutplot
double cutplot[2]
The arguments of the option CUTLOT.
Definition general.h:592
param_t::cubefrag
bool cubefrag
True if CUBEFRAG has been used.
Definition general.h:613
param_t::cubeUsed
bool cubeUsed
True if CUBE has been used.
Definition general.h:607
param_t::cutplotIGM
double cutplotIGM[2]
The arguments of the option CUTPLOT_IGM.
Definition general.h:595
param_t::bondcut
double bondcut
Bond environement cutoff (primitive cutoff) used for IBSI.
Definition general.h:616
param_t::outputName
std::string outputName
The output name.
Definition general.h:568
param_t::numLigand
int numLigand
The number of the molecule.
Definition general.h:577
param_t::cutpeakIntra
double cutpeakIntra[2]
The arguments of the option PEAKFOCUS.
Definition general.h:628
param_t::nbFiles
int nbFiles
The number of files.
Definition general.h:580
param_t::intermolecular
double intermolecular
The intermolecular value.
Definition general.h:574
param_t::molAFileName
std::string molAFileName
The name of the files of the molecule A.
Definition general.h:562
param_t::cube
double cube[6]
The argument of the option CUBE.
Definition general.h:601
param_t::coremo
unsigned int coremo
Number of core Molecular Orbitals excluded from BDA calculations.
Definition general.h:622
param_t::outputType
int outputType
The type of the option OUTPUT.
Definition general.h:583
param_t::paramFound
bool paramFound[SIZE_PARAM]
Array used to know which parameters were given *‍/.
Definition general.h:619
param_t::radiusRoundLigand
double radiusRoundLigand
The radius around the molecule (in angstrom)
Definition general.h:571
param_t::CHARGE
int CHARGE
The CHARGE (>0 <-> CATION or <0 <-> ANION) of the system studied.
Definition general.h:625
param_t::molBFileName
std::string molBFileName
The name of the files of the molecule B.
Definition general.h:565
param_t::radiusUsed
bool radiusUsed
True if RADIUS has beed used.
Definition general.h:610
param_t::cutoffs
double cutoffs[2]
The arguments of the option CUTOFFS.
Definition general.h:589
param_t::vmdcolrangIGM
double vmdcolrangIGM[2]
The arguments of the option VMD_COLRANG_IGM.
Definition general.h:598
param_t::radius
double radius[4]
The arguments of the option RADIUS.
Definition general.h:586
param_t::increments
double increments[3]
The increments for xyz dimensions.
Definition general.h:604
position_t
Structure describing one 3D position.
Definition general.h:679
position_t::z
double z
TO DOCUMENT.
Definition general.h:687
position_t::x
double x
TO DOCUMENT.
Definition general.h:681
position_t::y
double y
TO DOCUMENT.
Definition general.h:684
positions_t
Structure containing a serie of 3D position.
Definition general.h:705
positions_t::xValues
double *__restrict xValues
X value of each position.
Definition general.h:707
positions_t::yValues
double *__restrict yValues
Y value of each position.
Definition general.h:710
positions_t::zValues
double *__restrict zValues
Z value of each position.
Definition general.h:713