root / src / Io_module.f90
Historique | Voir | Annoter | Télécharger (5,39 ko)
1 | 1 | pfleura2 | MODULE Io_Module |
---|---|---|---|
2 | 1 | pfleura2 | ! This module contains all variables related to IO |
3 | 1 | pfleura2 | |
4 | 12 | pfleura2 | !---------------------------------------------------------------------- |
5 | 12 | pfleura2 | ! Copyright 2003-2014 Ecole Normale Supérieure de Lyon, |
6 | 12 | pfleura2 | ! Centre National de la Recherche Scientifique, |
7 | 12 | pfleura2 | ! Université Claude Bernard Lyon 1. All rights reserved. |
8 | 12 | pfleura2 | ! |
9 | 12 | pfleura2 | ! This work is registered with the Agency for the Protection of Programs |
10 | 12 | pfleura2 | ! as IDDN.FR.001.100009.000.S.P.2014.000.30625 |
11 | 12 | pfleura2 | ! |
12 | 12 | pfleura2 | ! Authors: P. Fleurat-Lessard, P. Dayal |
13 | 12 | pfleura2 | ! Contact: optnpath@gmail.com |
14 | 12 | pfleura2 | ! |
15 | 12 | pfleura2 | ! This file is part of "Opt'n Path". |
16 | 12 | pfleura2 | ! |
17 | 12 | pfleura2 | ! "Opt'n Path" is free software: you can redistribute it and/or modify |
18 | 12 | pfleura2 | ! it under the terms of the GNU Affero General Public License as |
19 | 12 | pfleura2 | ! published by the Free Software Foundation, either version 3 of the License, |
20 | 12 | pfleura2 | ! or (at your option) any later version. |
21 | 12 | pfleura2 | ! |
22 | 12 | pfleura2 | ! "Opt'n Path" is distributed in the hope that it will be useful, |
23 | 12 | pfleura2 | ! but WITHOUT ANY WARRANTY; without even the implied warranty of |
24 | 12 | pfleura2 | ! |
25 | 12 | pfleura2 | ! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
26 | 12 | pfleura2 | ! GNU Affero General Public License for more details. |
27 | 12 | pfleura2 | ! |
28 | 12 | pfleura2 | ! You should have received a copy of the GNU Affero General Public License |
29 | 12 | pfleura2 | ! along with "Opt'n Path". If not, see <http://www.gnu.org/licenses/>. |
30 | 12 | pfleura2 | ! |
31 | 12 | pfleura2 | ! Contact The Office of Technology Licensing, valorisation@ens-lyon.fr, |
32 | 12 | pfleura2 | ! for commercial licensing opportunities. |
33 | 12 | pfleura2 | !---------------------------------------------------------------------- |
34 | 12 | pfleura2 | |
35 | 1 | pfleura2 | use VarTypes |
36 | 1 | pfleura2 | |
37 | 1 | pfleura2 | IMPLICIT NONE |
38 | 1 | pfleura2 | |
39 | 1 | pfleura2 | SAVE |
40 | 1 | pfleura2 | |
41 | 1 | pfleura2 | INTEGER(KINT) :: IOIN=11, IOOUT=12, IOCART=14 |
42 | 8 | pfleura2 | INTEGER(KINT) :: IOGEOM=15, IODAT=16,IoGplot=17 |
43 | 1 | pfleura2 | INTEGER(KINT), PARAMETER :: IOTMP=21,IOTMP2=22, IOTMP3=23 |
44 | 10 | pfleura2 | INTEGER(KINT), PARAMETER :: IOERR=0 |
45 | 1 | pfleura2 | CHARACTER(SCHARS) :: RunMode |
46 | 1 | pfleura2 | |
47 | 12 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
48 | 12 | pfleura2 | ! |
49 | 12 | pfleura2 | ! System dependent delimiter for filename |
50 | 12 | pfleura2 | ! / on Linux; \ on windows, ... |
51 | 12 | pfleura2 | CHARACTER :: FileDelim |
52 | 12 | pfleura2 | |
53 | 12 | pfleura2 | |
54 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
55 | 1 | pfleura2 | ! |
56 | 1 | pfleura2 | ! Some parameters for unit conversion |
57 | 1 | pfleura2 | ! |
58 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
59 | 1 | pfleura2 | |
60 | 8 | pfleura2 | REAL(KREAL), PARAMETER :: au2eV=27.21183d0 |
61 | 8 | pfleura2 | REAL(KREAL), PARAMETER :: ev2au= 1.d0/au2eV |
62 | 8 | pfleura2 | REAL(KREAL), PARAMETER :: au2kcal=627.509608d0 |
63 | 8 | pfleura2 | REAL(KREAL), PARAMETER :: eV2kcal=23.06035d0 |
64 | 1 | pfleura2 | |
65 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
66 | 1 | pfleura2 | ! |
67 | 1 | pfleura2 | ! Variables for Gaussian input |
68 | 1 | pfleura2 | ! |
69 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
70 | 1 | pfleura2 | TYPE (Input_line), POINTER :: Gauss_Root, Gauss_End, Gauss_Comment |
71 | 1 | pfleura2 | TYPE (Input_Line), POINTER :: Current, Previous |
72 | 1 | pfleura2 | |
73 | 1 | pfleura2 | CHARACTER(LCHARS) :: Gauss_Charge |
74 | 1 | pfleura2 | CHARACTER(LCHARS), ALLOCATABLE :: Gauss_paste(:) |
75 | 1 | pfleura2 | |
76 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
77 | 1 | pfleura2 | ! |
78 | 1 | pfleura2 | ! Variables for MOPAC input |
79 | 1 | pfleura2 | ! |
80 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
81 | 1 | pfleura2 | TYPE (Input_line), POINTER :: Mopac_Root, Mopac_End, Mopac_Comment |
82 | 1 | pfleura2 | TYPE (Input_Line), POINTER :: CurCom |
83 | 1 | pfleura2 | CHARACTER(LCHARS) :: Mopac_EndGeom |
84 | 1 | pfleura2 | |
85 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
86 | 1 | pfleura2 | ! |
87 | 1 | pfleura2 | ! Variables for VASP input/output |
88 | 1 | pfleura2 | ! |
89 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
90 | 1 | pfleura2 | CHARACTER(LCHARS) :: Vasp_Title, Vasp_Types, Vasp_comment, Vasp_direct |
91 | 12 | pfleura2 | CHARACTER(LCHARS) :: Vasp_Types_User |
92 | 1 | pfleura2 | REAL(KREAL) :: vasp_Param |
93 | 1 | pfleura2 | CHARACTER(4), ALLOCATABLE :: FFF(:,:) !(3,na) |
94 | 1 | pfleura2 | INTEGER(KINT) :: NbTypes |
95 | 1 | pfleura2 | INTEGER(KINT), PARAMETER :: MaxType=100 |
96 | 1 | pfleura2 | CHARACTER(2) :: Attypes(MaxType)=' ' |
97 | 12 | pfleura2 | ! VASP5 is true when the POSCAR is in the new POSCAR file |
98 | 12 | pfleura2 | LOGICAL :: VASP5 |
99 | 12 | pfleura2 | ! VASP_SelectD is true if Selective Dynamic is selected |
100 | 12 | pfleura2 | LOGICAL :: VASP_SelectD |
101 | 12 | pfleura2 | |
102 | 12 | pfleura2 | |
103 | 1 | pfleura2 | ! WriteVasp controls the printing of the images coordinates in POSCAR files. |
104 | 1 | pfleura2 | LOGICAL :: WriteVasp |
105 | 1 | pfleura2 | |
106 | 5 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
107 | 5 | pfleura2 | ! |
108 | 5 | pfleura2 | ! Variables for SIESTA input |
109 | 5 | pfleura2 | ! |
110 | 5 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
111 | 5 | pfleura2 | TYPE (Input_line), POINTER :: Siesta_Input |
112 | 5 | pfleura2 | TYPE (Input_line), POINTER :: Siesta_Comment_Species,Siesta_Comment_Coord |
113 | 5 | pfleura2 | TYPE (Input_Line), POINTER :: CurComSpec, CurComCoord |
114 | 5 | pfleura2 | CHARACTER(LCHARS) :: Siesta_Label, Siesta_CoordFile |
115 | 5 | pfleura2 | ! Number of species used in Siesta |
116 | 5 | pfleura2 | INTEGER(KINT) :: Siesta_NbSpecies |
117 | 9 | pfleura2 | ! Mass number for each species (atomic number) |
118 | 9 | pfleura2 | INTEGER(KINT), ALLOCATABLE :: Siesta_SpeciesMass(:) ! NbSpecies |
119 | 5 | pfleura2 | ! Name of each species |
120 | 5 | pfleura2 | CHARACTER(LCHARS), ALLOCATABLE :: Siesta_SpeciesName(:) ! NbSpecies |
121 | 5 | pfleura2 | ! Species for each atom |
122 | 5 | pfleura2 | INTEGER(KINT), ALLOCATABLE :: IdxSpecies(:) ! NAt |
123 | 5 | pfleura2 | ! What to add at the end of each coordinate line |
124 | 5 | pfleura2 | CHARACTER(LCHARS), ALLOCATABLE :: Siesta_Paste(:) ! Nat |
125 | 5 | pfleura2 | ! This is the unit (ang or bohr) to read/write the coordinates |
126 | 5 | pfleura2 | REAL(KREAL) :: Siesta_Unit_Read, Siesta_Unit_Write |
127 | 5 | pfleura2 | ! The lattice constant in case we are in periodic calculation |
128 | 5 | pfleura2 | REAL(KREAL) :: Siesta_LatticeConstant,Siesta_lat_unit |
129 | 1 | pfleura2 | |
130 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
131 | 1 | pfleura2 | ! |
132 | 1 | pfleura2 | ! For debug |
133 | 1 | pfleura2 | ! |
134 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
135 | 1 | pfleura2 | CHARACTER(132) :: DebugFile='Path.valid' |
136 | 1 | pfleura2 | |
137 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
138 | 1 | pfleura2 | ! |
139 | 1 | pfleura2 | ! For Printing |
140 | 1 | pfleura2 | ! |
141 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
142 | 1 | pfleura2 | CHARACTER(LCHARS) :: PathName |
143 | 1 | pfleura2 | |
144 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
145 | 1 | pfleura2 | ! |
146 | 1 | pfleura2 | ! For Energy+Gradient calculations |
147 | 1 | pfleura2 | ! |
148 | 1 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
149 | 1 | pfleura2 | ! CalcName: Prefix for the files used for the energy and gradient calculations |
150 | 1 | pfleura2 | CHARACTER(LCHARS) :: CalcName |
151 | 1 | pfleura2 | |
152 | 1 | pfleura2 | ! ISuffix: Suffix for the input file |
153 | 1 | pfleura2 | CHARACTER(LCHARS) :: ISuffix |
154 | 1 | pfleura2 | ! OSuffix: suffix for the output file. |
155 | 1 | pfleura2 | CHARACTER(LCHARS) :: OSuffix |
156 | 1 | pfleura2 | |
157 | 8 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
158 | 8 | pfleura2 | ! |
159 | 8 | pfleura2 | ! For printing energies |
160 | 8 | pfleura2 | ! |
161 | 8 | pfleura2 | !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! |
162 | 8 | pfleura2 | ! Name of the unit used by internally by the 'engine' program |
163 | 8 | pfleura2 | CHARACTER(SCHARS) :: UnitProg="au" |
164 | 8 | pfleura2 | ! Conversion factor from energy program to kcal/mol |
165 | 8 | pfleura2 | REAL(KREAL) :: ConvE |
166 | 1 | pfleura2 | |
167 | 1 | pfleura2 | END MODULE IO_MODULE |