IGMPlot 3.16
Optimized IGMplot version able to use wfn/wfx/xyz files
Loading...
Searching...
No Matches
reader.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 _READER_H_
50#define _READER_H_
51
52// LOCAL
53//#include <ProgData.h>
54#include <Results.h>
55#include <WFreader.h>
56
57// JC IBSI
58// Already included by Results.h
59//#include <vector>
60
62typedef enum ATOM_TYPES
63 {
64 HYDROGEN, HELIUM, LITHIUM, BERYLLIUM, BORON, CARBON, NITROGEN, OXYGEN, FLUORINE, NEON, SODIUM, MAGNESIUM, ALUMINIUM, SILICON, PHOSPHORUS, SULFUR, CHLORINE, ARGON, POTASSIUM, CALCIUM, SCANDIUM,
65 TITANIUM, VANADIUM, CHROMIUM, MANGANESE, IRON, COBALT, NICKEL, COPPER, ZINC, GALLIUM, GERMANIUM, ARSENIC, SELENIUM, BROMINE, KRYPTON, RUBIDIUM, STRONTIUM, YTTRIUM, ZIRCONIUM, NIOBIUM, MOLYBDENUM,
66 TECHNETIUM, RUTHENIUM, RHODIUM, PALLADIUM, SILVER, CADMIUM, INDIUM, TIN, ANTIMONY, TELLURIUM, IODINE, XENON, CESIUM, BARIUM, LANTHANUM, CERIUM, PRASEODYMIUM, NEODYMIUM, PROMETHIUM, SAMARIUM, EUROPIUM, GADOLINIUM, TERBIUM, DYSPROSIUM, HOLMIUM, ERBIUM, THULIUM, YTTERBIUM, LUTETIUM,
67 HAFNIUM, TANTALUM, TUNGSTEN, RHENIUM, OSMIUM, IRIDIUM, PLATINIUM, GOLD, MERCURY, THALLIUM, LEAD, BISMUTH, POLONIUM, ASTATINE, RADON, FRANCIUM, RADIUM,
68ACTINIUM, THORIUM, PROTACTINIUM, URANIUM, NEPTUNIUM, PLUTONIUM, AMERICIUM, CURIUM, BERKELIUM, CALIFORNIUM, EINSTEINIUM, FERMIUM, MENDELEVIUM, NOVELIUM, LAWRENCIUM, SIZE_ATOM
70
72// modif Eric : 20/04/2019: atom name list in the range [0:SIZE_ATOM-1]
73const std::string ATOM_NAMES [] =
74 {
75 "H","He","Li","Be","B","C","N","O","F","Ne","Na","Mg","Al","Si","P","S","Cl","Ar","K","Ca","Sc","Ti","V","Cr","Mn","Fe","Co","Ni","Cu","Zn","Ga","Ge","As","Se","Br","Kr","Rb","Sr", "Y","Zr","Nb","Mo","Tc", "Ru","Rh","Pd","Ag","Cd","In","Sn","Sb","Te","I" ,"Xe","Cs","Ba","La","Ce","Pr","Nd","Pm","Sm","Eu","Gd","Tb","Dy","Ho","Er","Tm","Yb","Lu","Hf","Ta","W","Re","Os","Ir","Pt","Au","Hg","Tl","Pb","Bi","Po","At","Rn","Fr","Ra","Ac","Th","Pa","U","Np","Pu","Am","Cm","Bk","Cf","Es","Fm","Md","No","Lr"
76 };
77
79// modif Eric : 04/04/2021:
80const unsigned int ATOM_COREORB [] =
81 {
82 0 , 0 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 5 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 9 , 14 , 14 , 14 , 14 , 14 , 14 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 23 , 23 , 23 , 23 , 23 , 23 ,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE
83 };
84
86const unsigned int ATOM_ELECTRONS [] =
87 {
88 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15, 16 , 17 , 18, 19, 20 , 21 , 22 , 23, 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 , 50 , 51 , 52 , 53 , 54 ,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE,MAXCORE
89 };
90
98void setFrag(const std::string definition, const param_types_t FRAG, const int nbAtoms);
99
100
107bool isANumber(const std::string &s);
108
114int conversionAtom(std::string& tmp);
115
122int conversionParam(std::string& param);
123
130void readParam(const char* parameterFileName, param_t* params);
131
139
145bool isWFmodeActivated();
146
152bool isWFXmodeActivated();
153
154
160bool isWFNmodeActivated();
161
167bool isRKFmodeActivated();
168
174std::string getMoleculeAatomDefinition();
175
176
182std::string getMoleculeBatomDefinition();
183
184
185
191unsigned int wfn_getMoleculeAnbAtoms();
192
198unsigned int wfn_getMoleculeBnbAtoms();
199
208void analyseSetFRAG1FRAG2(const std::string definition1, const std::string definition2, const int nbAtoms, param_t *params);
209
215bool isInMoleculeA(unsigned int atomNaturalIndex);
216
222bool isInMoleculeB(unsigned int atomNaturalIndex);
223
224
230
236
240void howUsingIGMplot();
241
248
254bool isELFmodeActivated();
255
262
269
276
277
283bool isParseRKF();
284// the RKF binary file will be parsed no grid calculation
285// useful to read the content of an RKF binary file
286
292bool isPauli();
293
299bool isPauliAtomic();
300
306bool isdgSCALED();
307
308
315
322
329
336
337
344
351
358
364std::vector< std::pair< unsigned int, unsigned int > > & getChosenBonds();
365
371void checkKeywords(param_t *params);
372
373#endif
Manage the results of the application.
Procedure/Function to manage wave function files (WFN V1.0 and WFX V2.0)
Class designed to store the program's main dataprovide some utilities concerning those.
Definition ProgData.h:65
enum PARAM_TYPES param_types_t
TO DOCUMENT.
bool isInMoleculeB(unsigned int atomNaturalIndex)
Function which indicated if the given atom (natural index coming from WFN file) belongs to molecule B...
Definition reader.cpp:2092
ATOM_TYPES
The atoms' types.
Definition reader.h:63
bool isCriticAddSeedsmodeActivated()
Tool function which indicates if additional seeds are use for cp search.
Definition reader.cpp:1639
std::string getMoleculeBatomDefinition()
Tool function which returns a string description of the FRAG2 atoms (given in param....
Definition reader.cpp:2121
void howUsingIGMplot()
Tool function which prints how the application can be launched.
Definition reader.cpp:2151
int conversionAtom(std::string &tmp)
This function is used to convert an atom name in char into an integer. Note that the integer correspo...
Definition reader.cpp:160
bool atomBondsHaveBeenRegistered()
Tool function which indicates if atom bonds have been registered.
Definition reader.cpp:2167
unsigned int wfn_getMoleculeBnbAtoms()
Tool function which indicates the number of atoms in molecule B.
Definition reader.cpp:2133
bool isIBSImodeActivated()
Tool function which indicates if the current calculus uses IBSI mode.
Definition reader.cpp:1550
bool isfullAOAccActivated()
Indicates if full accuracy is used for AO calculations.
Definition reader.cpp:1564
bool isCriticULTRAFINEmodeActivated()
Tool function which indicates if the current calculus uses CriticULTRAFINE mode.
Definition reader.cpp:1632
bool isANumber(const std::string &s)
This function is used to check whether a string is a number or not.
Definition reader.cpp:234
bool isInMoleculeA(unsigned int atomNaturalIndex)
Function which indicated if the given atom (natural index coming from WFN file) belongs to molecule A...
Definition reader.cpp:2066
bool isELFmodeActivated()
Tool function which indicates if ELF analysis is to be performed.
Definition reader.cpp:1557
bool isPeakFocusIntraActivated()
Tool function which indicates if a peakFocusIntra has been required by user.
Definition reader.cpp:1647
bool isHirshmodeActivated()
Tool function which indicates if the current calculus uses Hirsh mode.
Definition reader.cpp:1572
bool isPauli()
Tool function which indicates if The Pauli exchange has to be estimated.
Definition reader.cpp:1602
bool isCriticFINEmodeActivated()
Tool function which indicates if the current calculus uses CriticFINE mode.
Definition reader.cpp:1625
bool isPauliAtomic()
Tool function which indicates if The Pauli exchange has to be estimated with atomic contrib.
Definition reader.cpp:1610
bool isWFNmodeActivated()
Tool function which indicates if the current calculus is based on wfn file.
Definition reader.cpp:1535
ProgData * readxyzMinMax(param_t *params)
Reads files (.xyz) and find the Min (MinX,MinY,MinZ) and the Max (MinX,MinY,MinZ)
Definition reader.cpp:1388
bool isPeakFocusInterActivated()
Tool function which indicates if a peakFocusInter has been required by user.
Definition reader.cpp:1654
unsigned int wfn_getMoleculeAnbAtoms()
Tool function which indicates the number of atoms in molecule A.
Definition reader.cpp:2127
void setFrag(const std::string definition, const param_types_t FRAG, const int nbAtoms)
This function is used to ascribe FRAG atom indexes from string definition given in param....
Definition reader.cpp:1849
bool isdgSCALED()
Tool function which indicates if the dgSCALED mode is enabled.
Definition reader.cpp:1587
void checkKeywords(param_t *params)
Function to check the keywords compatibility.
Definition reader.cpp:2174
std::string getCondensedDescriptionOfMoleculeB()
Function which returns the description of atoms included in molecule B.
Definition reader.cpp:2145
std::string getMoleculeAatomDefinition()
Tool function which returns a string description of the FRAG1 atoms (given in param....
Definition reader.cpp:2115
bool isWFmodeActivated()
Tool function which indicates if the current calculus is based on wfn/wfx/rkf files.
Definition reader.cpp:1520
bool isWFXmodeActivated()
Tool function which indicates if the current calculus is based on wfx file.
Definition reader.cpp:1528
std::vector< std::pair< unsigned int, unsigned int > > & getChosenBonds()
Function to gain access to the chosen bonds.
Definition reader.cpp:2161
bool isRKFmodeActivated()
Tool function which indicates if the current calculus is based on rkf file.
Definition reader.cpp:1542
std::string getCondensedDescriptionOfMoleculeA()
Function which returns the description of atoms included in molecule A.
Definition reader.cpp:2139
bool isCriticmodeActivated()
Tool function which indicates if the current calculus uses Critic mode.
Definition reader.cpp:1579
int conversionParam(std::string &param)
This function is used to convert a type of parameter from string to int so it may be used in a switch...
Definition reader.cpp:197
void readParam(const char *parameterFileName, param_t *params)
Read the file param.nci.
Definition reader.cpp:248
bool isCriticMEDIUMmodeActivated()
Tool function which indicates if the current calculus uses CriticMEDIUM mode.
Definition reader.cpp:1618
bool isParseRKF()
Tool function which indicates if RKF has to be parsed without grid calculation.
Definition reader.cpp:1595
enum ATOM_TYPES atom_types_t
The atoms' types.
const unsigned int ATOM_COREORB[]
Number of CORE ORBITALS for each atom ! will serve to compute the BDA for valence MOs.
Definition reader.h:80
const std::string ATOM_NAMES[]
The atoms' names.
Definition reader.h:73
const unsigned int ATOM_ELECTRONS[]
Total number of electrons for each atom.
Definition reader.h:86
Structure used for the storage of the parameters read from the parameter file param....
Definition general.h:560