IGMPlot 3.17.3
Optimized IGMplot version able to use wfn/wfx/rkf/xyz files
Loading...
Searching...
No Matches
NCISolver.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, 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 _NCI_SOLVER_H_
50#define _NCI_SOLVER_H_
51
52// Local
53#include <output.h>
54//#include <reader.h>
55#include <Node.h>
56#include <map>
57
59#define THREE std::setw(3) << std::setfill(' ')
60
62#define FOUR std::setw(4) << std::setfill(' ')
63
65#define FIVE std::setw(5) << std::setfill(' ')
66
68#define SIX std::setw(6) << std::setfill(' ')
69
71#define SEVEN std::setw(7) << std::setfill(' ')
72
74#define HEIGHT std::setw(8) << std::setfill(' ')
75
77#define NINE std::setw(9) << std::setfill(' ')
78
79
80
86{
87
88 private :
89
90 // ENTRY DATA
91
94
97
98 // MAIN DATA
99
102
105
108
109 // MISCEALENOUS DATA
110
112 struct timeval start, interm, stop;
113
115 // printCurrentState
117
120
122 unsigned long int fullSize;
123
126
128 bool log;
129
131 double total;
132
134 double max;
135
137 unsigned int LI[35][3];
138
140 unsigned int L3[35];
141
144
146 unsigned int nbThreads;
147
149 unsigned int fragNbPrim;
150
151
153 unsigned int* fragPrim; // to store the primitives indexes;
154 // primitives indexes are in the range [0:n-1]
155 // They are stored at the fragPrim index in the range [0:nA+nB-1]
156 // !! nA+nB <= n
157
159 unsigned int* fragAPrim; // to store the primitives indexes of fragment A
160 // primitives indexes are in the range [0:n-1]
161 // They are stored at the fragAPrim index in the range [0:nA-1]
162
164 unsigned int* fragBPrim; // to store the primitives indexes of fragment B
165 // primitives indexes are in the range [0:n-1]
166 // They are stored at the fragBPrim index in the range [0:nB-1]
167
169 unsigned int* allPrim ; // to store the primitives indexes of the whole system
170 // primitives indexes are in the range [0:n-1]
171 // i.e. allPrim[i] = i, simply (to be used for dgscaled option)
172
174 unsigned int* fragAIndexToFragPrimIndex; // input = integer in the range [0:nA-1]
175 // returns an index in the range[0:nA+nB-1]
176
178 unsigned int* fragBIndexToFragPrimIndex; // input = integer in the range [0:nB-1]
179 // returns an index in the range[0:nA+nB-1]
180
182 static double maxElectron;
183
186
189
191 unsigned int nbPrimInA;
192
194 unsigned int nbPrimInB;
195
198 unsigned int* nprimbond;
199
201 double* primRmin;
202
203 // NOT USED
204 // The number of core ATOMIC orbitals (BDA calculations only account for valence orbitals)
205 //unsigned int coreAONumber;
206
207 // NOT USED
208 // The number of core orbitals read from WFX/WFN (BDA calculations only account for valence orbitals)
209 //unsigned int coreMOWFN;
210
213
215 double elecNumb;
216
219
222
225
226 // NOT USED
227 //A boolean to say if the Mos have been reorganized or not by IGMPlot
228 //double MOSorted;
229
230
232 std::vector<int> atomTypeList; // a list of atom types (integer from IGM atom listR in the range 0:SIZE_ATOM-1)
233
235 std::vector<int> atomTypeNb;
236
238 unsigned int** primbond;
239
241 double *maxc;
242
244 unsigned int npri;
245
247 std::vector<moleculeOrbital> molecularOrbitals;
248
249
250 // a vector containing properties of all found critical points
251 std::vector<criticalpoint> cpList;
252
253 // a boolean to tell if the IGM promolecular determination of seeds is activated
254 bool IGMSeeds;
255
259 void calcprops_wfn(); // IGM dg dgInter dgIntra CUBE calculations
260
264 void calcprops_wfn_cyl();
265
270 void setDensityMatrixForPauli(double** D);
271
275 void setPrimList();
276
280 void setIBSIPrimList();
281
285 void setCOREMOandELEC(); // count the number of core MOs and electrons
286
290 void setChemFormula();
291
307 void IGM(double** chi, double** phi,
308 double* dx, double* dy, double* dz, double** gradPrim,
309 double &deltagIntraCURRENT, double &deltagInterCURRENT, double &qgIntraCURRENT, double &qgInterCURRENT);
310
311
330void gradAtomHirsh(bool fullRHOGRAD, unsigned int threadID, double rho, double gradrho[3],
331 double*** dx, double*** dy, double*** dz, int ip,
332 double* rhoFree, double *pregradFree, double** gradAtom, double* rhoAtom);
333
341void gradAtomGBP(unsigned int nbPrim, unsigned int* prim, double** gradPrim, double** gradAtom);
342
343
344
353void IGMH(double** gradAtom, double &deltagIntraCURRENT, double &deltagInterCURRENT,double &qgIntraCURRENT, double &qgInterCURRENT);
354
361void IGMBDA(double *gradAtom1QM, double *gradAtom2QM, double &bda);
362
369void rhoFree__pregradFree(double* dist, double* rhoFree, double* pregradFree);
370
379// P R O M O L E C U L A R
380void rhoFree_gradFree_lapFree(double* dist, double* dx, double* dy, double* dz,
381 double* rhoFree, double** gradFree, double* lapFree);
382
383
391void rhoFree__pregradFree_sumSquareBRho(double* dist, double* rhoFree, double* pregradFree, double* sumSquareBRho);
392
393
398double rhopromolFRAG1FRAG2(double* rhoFree);
399
400// rhoQM : input --> the true rho obtained by means of QM for the WHOLE system
401// rhoFree : input --> the free promol ED for every atom (calculated previously for every atom in the WHOLE system)
402// RETURN : estimated QM ED for the FRAG1+FRAG2 system from HIRSHFELD partition
403
404
405
411double rhoHIRSHFRAG1FRAG2(double rhoQM, double* rhoFree);
412
413
414 public :
415
416// Define a GTO function type f(r, alpha) (to sort non-nul atomic orbital(with exponent alpha) at a given
417// distance r of the current grid node)
418using FunctionType = double (*)(double, double);
419static FunctionType functions[];
420static FunctionType derivatives[];
421
422
424typedef struct point
425 {
427 double x,y,z;
429
430
432typedef struct basinProperties
433 {
434 double electrons;
435 double volume;
436 double KinExcess;
437
438 // Constructor to facilitate initialization
439 basinProperties(double e = 0.0, double v = 0.0, double k = 0.0) : electrons(e), volume(v), KinExcess(k) {}
441
447 NCISolver(const char* parameterFileName, bool logParam = true);
448
449
453 ~NCISolver();
454
458 void solve();
459
466 void lineProcessing(int posY, int posZ, int cubePosYZ);
467
471 void output();
472
477 std::string score();
478
484 unsigned int* index0(const unsigned int i);
485
491 unsigned int index1(const unsigned int i);
492
496 void initializeLI();
497
501 void initializeL3();
502
503
510 void getLambdaOfHessian(double** hessian,double* eigenValues, double** eigenVect);
511
516 double getPredictedSize();
517
522 bool getRuninfostate();
523
532void calcQMAO(unsigned int nbPrim, unsigned int* prim, double* d2, double* dx, double* dy, double* dz, double** chi);
533
534
545void calcQMPROP(unsigned int nbPrim, unsigned int* prim, double** chi, double** phi, double &rho, double* grad, double** hess);
546
550void findmaxc();
551
563bool NewtonRaphson(unsigned int nbPrim, unsigned int* prim, double rcurr[3], double L[3], double &G, double &rhocp, double &gradrhocp);
564
570int cptype(double L123[3]);
571
582void basischange(unsigned int nbPrim, unsigned int* prim, double matrixHessianEigVec[3][3],
583 double **chi, double* dx, double* dy, double* dz, double **phi, double gg[3]);
584
593void IGMPRO(double *dx, double *dy, double *dz, double &deltag, double &qg);
594
603void dgdgAtPRO(double *dx, double *dy, double *dz, double &deltag, std::vector<double>& dgAt);
604
605
613void gradPRO(double *dx, double *dy, double *dz, double **gradAtom);
614
615
616
630// ========= PROMOLECULAR G2 MODE ONLY ================ //
631void rhogradlap(unsigned int at1, unsigned int at2, double* rhoFree, double** gradFree, double* lapFree,
632 double &rhopro, double* gradpro, double &normgradpro, double &lap);
633
634// ========= PROMOLECULAR MODE ONLY ================ //
635
636// functions used to limit the number of GTO to be calculated
637// (speedup test, Hugo ROUSSEL work)
638// Function 0 : for GTO(0,0,0) <-> s
643static double func0(double r, double alpha);
644
645
646
647// Function 1 : for GTO(1,0,0) ot (0,1,0) or (0,0,1) <-> p
652static double func1(double r, double alpha);
653
654
655
656
657// Function 2 : for GTO(2,0,0) or (1,1,0) or ... <-> d
662static double func2(double r, double alpha);
663
664
665// Function 3 : for GTO(3,0,0) or (1,1,1) or ... <-> f
670static double func3(double r, double alpha);
671
672// Function 4 : for GTO(4,0,0) or (2,2,0) or ... <-> g
677static double func4(double r, double alpha);
678
679
680
685double findRmin(
686 int GTOType, // integer [0:4] coding for s,p,d,f or g INPUT
687 double alpha, // alpha exponent of the GTO INPUT
688 double tolerance = 0.010, // in bohr, convergence threshold INPUT
689 int maxIterations = 100, // Maximum number of iteration INPUT
690 double initialGuess = 0.01 // initial guess of rmin (bohr) for which f(r,alpha) = 0.999 INPUT
691);
692
696void findRminAllPrim();
697
703double encodeBasin(int a, int b);
704
710std::vector<int> decodeBasin(double n);
711
722std::map<std::pair<int, int>, basinProperties> computeBasinProperties(double*** ELFbasin, double*** KE, double*** rho, const unsigned int dimX, const unsigned int dimY, const unsigned int dimZ);
723
729std::pair<size_t, size_t> find2max(const std::vector<double>& dgAt);
730
737// ========= PROMOLECULAR MODE ONLY ================ //
738double gradnormIGM(double* pregradFree,
739 double* dx, double* dy, double* dz);
740
741#endif
742
743
744};
Worker for one Node of the NCI grid.
double getPredictedSize()
Return the predicted size of the ouput in MB.
Definition NCISolver.cpp:9051
void IGMPRO(double *dx, double *dy, double *dz, double &deltag, double &qg)
compute the deltag descriptor at current point
Definition NCISolver.cpp:11646
double * primRmin
Array to store the minimum radius below which a primitive has to be computed (scalProd speedup test)
Definition NCISolver.h:201
void solve()
Solves the problem.
Definition NCISolver.cpp:7627
double MOoccupied
The number of MO occupied with occupancy >=0.1.
Definition NCISolver.h:224
void rhoFree__pregradFree(double *dist, double *rhoFree, double *pregradFree)
Compute quantities needed to compute next rho and gradrho at the promol level.
Definition NCISolver.cpp:10172
unsigned int * nprimbond
Definition NCISolver.h:198
void IGMBDA(double *gradAtom1QM, double *gradAtom2QM, double &bda)
Compute the deltagInter quantity between two given atoms of a bond and the associated BDA based on HI...
Definition NCISolver.cpp:10711
bool runinfostate
runinfo file state (timing info for users printed by
Definition NCISolver.h:116
int cptype(double L123[3])
determine the signature of the critical point (algebrix sum of the signs of the three eigenvalues)
Definition NCISolver.cpp:11532
unsigned int * fragAIndexToFragPrimIndex
An array converting indexes of fragAPrim to indexes of fragPrim.
Definition NCISolver.h:174
void IGMH(double **gradAtom, double &deltagIntraCURRENT, double &deltagInterCURRENT, double &qgIntraCURRENT, double &qgInterCURRENT)
Compute the deltagIntra and deltagInter quantities.
Definition NCISolver.cpp:10589
~NCISolver()
Destructor.
Definition NCISolver.cpp:1918
param_t params
Problem's parameters.
Definition NCISolver.h:93
static double func2(double r, double alpha)
function that used to limit the number of GTO to be calculated (speedup test, Hugo ROUSSEL work)Funct...
Definition NCISolver.cpp:11973
struct NCISolver::basinProperties basinProperties
structure to save ELF basin population and volume
unsigned int LI[35][3]
For index0.
Definition NCISolver.h:137
void findmaxc()
find the maximum value for primitive coefficients accross the MOs
Definition NCISolver.cpp:11253
std::map< std::pair< int, int >, basinProperties > computeBasinProperties(double ***ELFbasin, double ***KE, double ***rho, const unsigned int dimX, const unsigned int dimY, const unsigned int dimZ)
function to compute the number of electron in each ELF basin
Definition NCISolver.cpp:12084
bool * inMoleculeA
Array to store the membership of each primitives of Fragment A.
Definition NCISolver.h:185
std::string score()
Return a string with the interaction's score.
Definition NCISolver.cpp:8854
Node ** nodes
A program node used by threads.
Definition NCISolver.h:104
static double maxElectron
The accuracy required for atomic orbitals calculation (speed-up procedure by J. Pilme)
Definition NCISolver.h:182
std::vector< int > decodeBasin(double n)
function decode an atom index pair
Definition NCISolver.cpp:12074
std::vector< int > atomTypeNb
List of the number of atoms for each atom type.
Definition NCISolver.h:235
void rhoFree_gradFree_lapFree(double *dist, double *dx, double *dy, double *dz, double *rhoFree, double **gradFree, double *lapFree)
Compute quantities needed to compute next rho and gradrho anf laplacian at the promol level G2.
Definition NCISolver.cpp:10229
double rhopromolFRAG1FRAG2(double *rhoFree)
Compute the free promol ED for FRAG1+FRAG2 system.
Definition NCISolver.cpp:10205
unsigned int * fragBPrim
the list (array) of primitives of fragment B
Definition NCISolver.h:164
unsigned int * allPrim
the list (array) of ALL primitives
Definition NCISolver.h:169
NCISolver(const char *parameterFileName, bool logParam=true)
Main constructor.
Definition NCISolver.cpp:59
unsigned int nbPrimInA
the number of primitives in fragment A (Cube mode)
Definition NCISolver.h:191
unsigned int * index0(const unsigned int i)
get the triplet (i,j,k) defining a GTO (or STO) from a code in the range [0:34]
Definition NCISolver.cpp:8861
void dgdgAtPRO(double *dx, double *dy, double *dz, double &deltag, std::vector< double > &dgAt)
compute the deltag descriptor at current point as well as every atomic contribution
Definition NCISolver.cpp:11761
int currentPercentage
Current completion in percent.
Definition NCISolver.h:125
void calcQMAO(unsigned int nbPrim, unsigned int *prim, double *d2, double *dx, double *dy, double *dz, double **chi)
Compute primitives from WFX/WFN data at current grid point.
Definition NCISolver.cpp:10728
static double func1(double r, double alpha)
function that used to limit the number of GTO to be calculated (speedup test, Hugo ROUSSEL work)Funct...
Definition NCISolver.cpp:11963
std::pair< size_t, size_t > find2max(const std::vector< double > &dgAt)
function to find the two largest values of a vector of numbers
Definition NCISolver.cpp:12158
double rhoHIRSHFRAG1FRAG2(double rhoQM, double *rhoFree)
estimated QM ED for the FRAG1+FRAG2 system from HIRSHFELD partition
Definition NCISolver.cpp:10513
Results * results
Results' values.
Definition NCISolver.h:101
void gradPRO(double *dx, double *dy, double *dz, double **gradAtom)
compute the promolecular ED gradient at current point
Definition NCISolver.cpp:11713
void calcQMPROP(unsigned int nbPrim, unsigned int *prim, double **chi, double **phi, double &rho, double *grad, double **hess)
Compute primitives and MOs from WFX/WFN data at current grid point.
Definition NCISolver.cpp:11141
void initializeL3()
Tool procedure that initializes L3 array (s,p,d,f,g GTOs)
Definition NCISolver.cpp:8975
static double func0(double r, double alpha)
function that used to limit the number of GTO to be calculated (speedup test, Hugo ROUSSEL work)Funct...
Definition NCISolver.cpp:11952
struct NCISolver::point point
structure to save 3D point (triplet of doubles)
double coreElecWFN
The number of core electrons (BDA calculations only account for valence orbitals)
Definition NCISolver.h:221
axis_t * posGrid
Array with current grid position.
Definition NCISolver.h:107
static double func3(double r, double alpha)
function that used to limit the number of GTO to be calculated (speedup test, Hugo ROUSSEL work)Funct...
Definition NCISolver.cpp:11983
unsigned int COREHeavyAtomWarning
Boolean flag to indicate if one atom exceeds the upper atomic number limit for BDA treatment.
Definition NCISolver.h:212
void rhoFree__pregradFree_sumSquareBRho(double *dist, double *rhoFree, double *pregradFree, double *sumSquareBRho)
Compute quantities needed to compute next rho and gradrho at the promol level.
Definition NCISolver.cpp:10133
static double func4(double r, double alpha)
function that used to limit the number of GTO to be calculated (speedup test, Hugo ROUSSEL work)Funct...
Definition NCISolver.cpp:11995
void basischange(unsigned int nbPrim, unsigned int *prim, double matrixHessianEigVec[3][3], double **chi, double *dx, double *dy, double *dz, double **phi, double gg[3])
changes the basis for several vectors of the QM calculation
Definition NCISolver.cpp:11556
double gradnormIGM(double *pregradFree, double *dx, double *dy, double *dz)
function to compute the norm of the IGM ED gradient in PROMOLECULAR mode
Definition NCISolver.cpp:10449
unsigned int nbThreads
The number of threads for the current run.
Definition NCISolver.h:146
void setChemFormula()
establish the chemical formula of the studied system
Definition NCISolver.cpp:9589
double total
Total dg inter.
Definition NCISolver.h:131
unsigned int * fragPrim
the list (array) of primitives to be considered in the IGM QM calculations
Definition NCISolver.h:153
double elecNumb
The total theoretical number of electrons.
Definition NCISolver.h:215
bool NewtonRaphson(unsigned int nbPrim, unsigned int *prim, double rcurr[3], double L[3], double &G, double &rhocp, double &gradrhocp)
performs a Newton-Raphson procedure to get the Critical point closest to the guess passed in paramete...
Definition NCISolver.cpp:11273
void setCOREMOandELEC()
count the number of core MOs and electrons
Definition NCISolver.cpp:9382
ProgData * data
Problem's data.
Definition NCISolver.h:96
void calcprops_wfn_cyl()
IBSI + BDA calculations, no cube generated.
Definition NCISolver.cpp:6001
int zyAxisSize
Number of row in the grid.
Definition NCISolver.h:119
unsigned int * fragAPrim
the list (array) of primitives of fragment A
Definition NCISolver.h:159
unsigned int * fragBIndexToFragPrimIndex
An array converting indexes of fragAPrim to indexes of fragPrim.
Definition NCISolver.h:178
void getLambdaOfHessian(double **hessian, double *eigenValues, double **eigenVect)
Using the eig3 implementation of diagonalisation.
Definition NCISolver.cpp:9021
std::vector< moleculeOrbital > molecularOrbitals
the set of expressions of MOs read from the WFN/WFX
Definition NCISolver.h:247
void findRminAllPrim()
function that compute the minimum radius for all primitives
Definition NCISolver.cpp:12025
unsigned int L3[35]
For index1.
Definition NCISolver.h:140
double * maxc
the maximum value of primitive coefficient accross the MOs
Definition NCISolver.h:241
void setIBSIPrimList()
filtering primitives according to the cutoff radius around atom pairs
Definition NCISolver.cpp:9245
unsigned int npri
the size of the basis set read from WFN
Definition NCISolver.h:244
void lineProcessing(int posY, int posZ, int cubePosYZ)
Process all the information for an entire line of the grid.
Definition NCISolver.cpp:8675
void gradAtomGBP(unsigned int nbPrim, unsigned int *prim, double **gradPrim, double **gradAtom)
Compute the atomic contribution to the ED gradient according to the GBP partition.
Definition NCISolver.cpp:10545
unsigned int nbPrimInB
the number of primitives in fragment B (Cube mode)
Definition NCISolver.h:194
void setDensityMatrixForPauli(double **D)
compute matrix density elements from wave function
Definition NCISolver.cpp:9062
struct timeval start interm stop
start and stop time to provide timing info for the user
Definition NCISolver.h:112
unsigned long int fullSize
Number of nodes in the grid.
Definition NCISolver.h:122
unsigned int index1(const unsigned int i)
identify which kind of AO it is
Definition NCISolver.cpp:8879
double WFNelecNumb
The real number of electrons reac from WFN.
Definition NCISolver.h:218
unsigned int ** primbond
the list (array) of primitives to be considered in the IBSI calculation
Definition NCISolver.h:238
void initializeLI()
Tool procedure that initializes LI array (36 GTO types)
Definition NCISolver.cpp:8901
std::vector< int > atomTypeList
List of atom types present in the system.
Definition NCISolver.h:232
void setPrimList()
filtering primitives according to fragment definitions
Definition NCISolver.cpp:9106
void IGM(double **chi, double **phi, double *dx, double *dy, double *dz, double **gradPrim, double &deltagIntraCURRENT, double &deltagInterCURRENT, double &qgIntraCURRENT, double &qgInterCURRENT)
compute the deltagIntra and deltagIntrer in cartesian coordinates (not cylindrical)
Definition NCISolver.cpp:9624
bool * inMoleculeB
Array to store the membership of each primitives of Fragment B.
Definition NCISolver.h:188
double encodeBasin(int a, int b)
function Code an atom index pair
Definition NCISolver.cpp:12064
unsigned int fragNbPrim
The number of primitives to be considered in the IGM WFN( WFX) calculations (cube mode)
Definition NCISolver.h:149
void calcprops_wfn()
IGM dg dgInter dgIntra CUBE calculations.
Definition NCISolver.cpp:1948
bool getRuninfostate()
Return the runinfo state (true = built by printCurrentState)
Definition NCISolver.cpp:9056
double max
Maximum percent value.
Definition NCISolver.h:134
void gradAtomHirsh(bool fullRHOGRAD, unsigned int threadID, double rho, double gradrho[3], double ***dx, double ***dy, double ***dz, int ip, double *rhoFree, double *pregradFree, double **gradAtom, double *rhoAtom)
Compute the atomic contribution to the ED gradient according to the Hirschfeld partition.
Definition NCISolver.cpp:9956
void output()
Outputs according the output type given in the parameters.
Definition NCISolver.cpp:8704
bool log
Activates logs.
Definition NCISolver.h:128
double predictedSize
Predicted size of the data on HDD.
Definition NCISolver.h:143
void rhogradlap(unsigned int at1, unsigned int at2, double *rhoFree, double **gradFree, double *lapFree, double &rhopro, double *gradpro, double &normgradpro, double &lap)
compute the promolecular ED + gradient + hessien at current point
Definition NCISolver.cpp:10393
double findRmin(int GTOType, double alpha, double tolerance=0.010, int maxIterations=100, double initialGuess=0.01)
function that takes as input the type (s,p,d,f,g) of GTO and its alpha exponent and returns a radius ...
Definition NCISolver.cpp:11854
Class used to handle every node data storage and processing ; implemented for multiprocessing impleme...
Definition Node.h:59
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
Files writing functions.
structure to save 3D point (triplet of doubles)
Definition NCISolver.h:425
double x
x,y,z coordinates
Definition NCISolver.h:427
Structure describing one axis.
Definition general.h:2173
Structure used for the storage of the parameters read from the parameter file param....
Definition general.h:2039