Statistiques
| Révision :

root / src / Io_module.f90 @ 12

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