(git:374b731)
Loading...
Searching...
No Matches
mc_control.F
Go to the documentation of this file.
1!--------------------------------------------------------------------------------------------------!
2! CP2K: A general program to perform molecular dynamics simulations !
3! Copyright 2000-2024 CP2K developers group <https://cp2k.org> !
4! !
5! SPDX-License-Identifier: GPL-2.0-or-later !
6!--------------------------------------------------------------------------------------------------!
7
8! **************************************************************************************************
9!> \brief contains some general routines for dealing with the restart
10!> files and creating force_env for MC use
11!> \par History
12!> none
13!> \author MJM
14! **************************************************************************************************
17 USE cell_types, ONLY: cell_type,&
19 USE cp_files, ONLY: close_file,&
34 USE kinds, ONLY: default_path_length,&
36 dp
44 USE message_passing, ONLY: mp_comm_type,&
52 USE physcon, ONLY: angstrom
53#include "../../base/base_uses.f90"
54
55 IMPLICIT NONE
56
57 PRIVATE
58 ! *** Global parameters ***
59
60 CHARACTER(len=*), PARAMETER, PRIVATE :: moduleN = 'mc_control'
61
64
65CONTAINS
66
67! **************************************************************************************************
68!> \brief writes the coordinates of the current step to a file that can
69!> be read in at the start of the next simulation
70!> \param nnstep how many steps the simulation has run
71!>
72!> Only use in serial.
73!> \param mc_par the mc parameters for the force env
74!> \param nchains ...
75!> \param force_env the force environment to write the coords from
76!> \author MJM
77! **************************************************************************************************
78 SUBROUTINE write_mc_restart(nnstep, mc_par, nchains, force_env)
79
80 INTEGER, INTENT(IN) :: nnstep
81 TYPE(mc_simpar_type), POINTER :: mc_par
82 INTEGER, DIMENSION(:), INTENT(IN) :: nchains
83 TYPE(force_env_type), POINTER :: force_env
84
85 CHARACTER(len=*), PARAMETER :: routinen = 'write_mc_restart'
86
87 CHARACTER(LEN=20) :: ensemble
88 CHARACTER(LEN=default_path_length) :: restart_file_name
89 CHARACTER(LEN=default_string_length) :: name
90 INTEGER :: handle, ichain, imol_type, iparticle, &
91 iunit, natom, nmol_types, nmolecule, &
92 nunits_tot, unit
93 REAL(kind=dp) :: temperature
94 REAL(kind=dp), DIMENSION(1:3) :: abc
95 TYPE(atom_type), DIMENSION(:), POINTER :: atom_list
96 TYPE(cell_type), POINTER :: cell
97 TYPE(cp_subsys_type), POINTER :: subsys
98 TYPE(molecule_kind_list_type), POINTER :: molecule_kinds
99 TYPE(molecule_kind_type), POINTER :: molecule_kind
100 TYPE(particle_list_type), POINTER :: particles
101
102 CALL timeset(routinen, handle)
103
104 ! get some data from mc_par
105 CALL get_mc_par(mc_par, restart_file_name=restart_file_name, temperature=temperature, &
106 ensemble=ensemble)
107
108 ! open the file and write some simulation parameters
109 CALL open_file(file_name=restart_file_name, unit_number=unit, &
110 file_action='WRITE', file_status='REPLACE')
111
112 ! get the cell length and coordinates
113 CALL force_env_get(force_env, cell=cell, subsys=subsys)
114 CALL get_cell(cell, abc=abc)
115 CALL cp_subsys_get(subsys, &
116 molecule_kinds=molecule_kinds, &
117 particles=particles)
118
119 nunits_tot = SIZE(particles%els(:))
120 IF (sum(nchains(:)) == 0) nunits_tot = 0
121 WRITE (unit, *) nnstep
122 WRITE (unit, *) temperature, nunits_tot
123 WRITE (unit, *) ensemble
124 WRITE (unit, *) nchains(:)
125 WRITE (unit, '(3(F10.6,3X))') abc(1:3)*angstrom ! in angstroms
126 WRITE (unit, *)
127
128 ! can't do a simple particles%els%atomic_kind%element_symbol because
129 ! of the classical force_env
130 IF (nunits_tot .GT. 0) THEN
131 nmol_types = SIZE(molecule_kinds%els(:))
132 iparticle = 1
133 DO imol_type = 1, nmol_types
134 molecule_kind => molecule_kinds%els(imol_type)
135 CALL get_molecule_kind(molecule_kind, atom_list=atom_list, &
136 nmolecule=nmolecule, natom=natom)
137 ! write the coordinates out
138 DO ichain = 1, nmolecule
139 DO iunit = 1, natom
140 CALL get_atomic_kind(atom_list(iunit)%atomic_kind, name=name)
141 WRITE (unit, '(1X,A,1X,3(F15.10,3X))') &
142 trim(adjustl(name)), &
143 particles%els(iparticle)%r(1:3)*angstrom
144 iparticle = iparticle + 1
145 END DO
146 END DO
147 END DO
148 END IF
149
150 CALL close_file(unit_number=unit)
151
152 ! end the timing
153 CALL timestop(handle)
154
155 END SUBROUTINE write_mc_restart
156
157! **************************************************************************************************
158!> \brief reads the input coordinates of the simulation from a file written above
159!> \param mc_par the mc parameters for the force env
160!> \param force_env the force environment to write the coords from
161!> \param iw the unit to write an error message to, in case current
162!> simulation parameters don't match what's in the restart file
163!> \param mc_nunits_tot ...
164!> \param rng_stream the stream we pull random numbers from
165!>
166!> Used in parallel.
167!> \author MJM
168! **************************************************************************************************
169 SUBROUTINE read_mc_restart(mc_par, force_env, iw, mc_nunits_tot, rng_stream)
170
171 TYPE(mc_simpar_type), POINTER :: mc_par
172 TYPE(force_env_type), POINTER :: force_env
173 INTEGER, INTENT(IN) :: iw
174 INTEGER, INTENT(INOUT) :: mc_nunits_tot
175 TYPE(rng_stream_type), INTENT(INOUT) :: rng_stream
176
177 CHARACTER(len=*), PARAMETER :: routinen = 'read_mc_restart'
178
179 CHARACTER(5), ALLOCATABLE, DIMENSION(:) :: atom_symbols
180 CHARACTER(default_string_length), &
181 DIMENSION(:, :), POINTER :: atom_names
182 CHARACTER(LEN=20) :: ensemble, mc_ensemble
183 CHARACTER(LEN=default_path_length) :: dat_file, restart_file_name
184 INTEGER :: handle, i, ipart, iunit, nmol_types, &
185 nstart, nunits_tot, print_level, &
186 source, unit
187 INTEGER, DIMENSION(:), POINTER :: nchains, nunits
188 LOGICAL :: ionode
189 REAL(kind=dp) :: mc_temp, rand, temperature
190 REAL(kind=dp), ALLOCATABLE, DIMENSION(:, :) :: r
191 REAL(kind=dp), DIMENSION(1:3) :: abc, box_length
192 TYPE(cell_type), POINTER :: cell
193 TYPE(cp_subsys_type), POINTER :: subsys
194 TYPE(mc_input_file_type), POINTER :: mc_input_file
195 TYPE(mc_molecule_info_type), POINTER :: mc_molecule_info
196 TYPE(mp_comm_type) :: group
197 TYPE(particle_list_type), POINTER :: particles
198
199 CALL timeset(routinen, handle)
200
201 ! get some stuff from the mc_par
202 CALL get_mc_par(mc_par, restart_file_name=restart_file_name, temperature=mc_temp, &
203 ensemble=mc_ensemble, mc_molecule_info=mc_molecule_info, &
204 ionode=ionode, dat_file=dat_file, &
205 group=group, source=source, mc_input_file=mc_input_file)
206 CALL get_mc_molecule_info(mc_molecule_info, nunits=nunits, &
207 nmol_types=nmol_types, atom_names=atom_names)
208
209 ALLOCATE (nchains(1:nmol_types))
210
211 ! currently a hack, printlevel should be intern to the print_keys
212 print_level = 1
213
214 IF (ionode) THEN
215 ! open the file and read some simulation parameters
216 CALL open_file(file_name=restart_file_name, unit_number=unit, &
217 file_action='READ', file_status='OLD')
218
219 READ (unit, *) nstart
220 READ (unit, *) temperature, nunits_tot
221 READ (unit, *) ensemble
222 READ (unit, *) nchains(1:nmol_types)
223 END IF
224 CALL group%bcast(nstart, source)
225 CALL group%bcast(temperature, source)
226 CALL group%bcast(nunits_tot, source)
227 CALL group%bcast(ensemble, source)
228 CALL group%bcast(nchains, source)
229
230 ! do some checking
231 IF (abs(temperature - mc_temp) .GT. 0.01e0_dp) THEN
232 IF (ionode) THEN
233 WRITE (iw, *) 'The temperature in the restart file is ', &
234 'not the same as the input file.'
235 WRITE (iw, *) 'Input file temperature =', mc_temp
236 WRITE (iw, *) 'Restart file temperature =', temperature
237 END IF
238 cpabort("Temperature difference between restart and input")
239 END IF
240 IF (nunits_tot .NE. mc_nunits_tot) THEN
241 IF (ionode) THEN
242 WRITE (iw, *) 'The total number of units in the restart ', &
243 'file is not the same as the input file.'
244 WRITE (iw, *) 'Input file units =', mc_nunits_tot
245 WRITE (iw, *) 'Restart file units =', nunits_tot
246 END IF
247 mc_nunits_tot = nunits_tot
248 END IF
249 IF (ensemble .NE. mc_ensemble) THEN
250 IF (ionode) THEN
251 WRITE (iw, *) 'The ensemble in the restart file is ', &
252 'not the same as the input file.'
253 WRITE (iw, *) 'Input file ensemble =', mc_ensemble
254 WRITE (iw, *) 'Restart file ensemble =', ensemble
255 END IF
256 cpabort("Ensembles different between restart and input")
257 END IF
258
259 ! get the cell length and coordinates
260 CALL force_env_get(force_env, cell=cell, subsys=subsys)
261 CALL get_cell(cell, abc=abc)
262 CALL cp_subsys_get(subsys, &
263 particles=particles)
264
265 IF (ionode) THEN
266 READ (unit, *) box_length(1:3) ! in angstroms
267 READ (unit, *)
268 box_length(1:3) = box_length(1:3)/angstrom ! convert to a.u.
269 END IF
270 CALL group%bcast(box_length, source)
271 IF (abs(box_length(1) - abc(1)) .GT. 0.0001e0_dp .OR. &
272 abs(box_length(2) - abc(2)) .GT. 0.0001e0_dp .OR. &
273 abs(box_length(3) - abc(3)) .GT. 0.0001e0_dp) THEN
274 IF (ionode) THEN
275 WRITE (iw, *) 'The cell length in the restart file is ', &
276 'not the same as the input file.'
277 WRITE (iw, *) 'Input file cell length =', abc(1:3)*angstrom
278 WRITE (iw, *) 'Restart file cell length =', box_length(1:3)*angstrom
279 END IF
280 END IF
281
282 ! allocate the array holding the coordinates, and read in the coordinates,
283 ! and write the dat file so we can make a new force_env
284 IF (sum(nchains(:)) == 0) THEN
285 ALLOCATE (r(3, nunits(1)))
286 ALLOCATE (atom_symbols(nunits(1)))
287
288 DO iunit = 1, nunits(1)
289 r(1:3, iunit) = (/real(iunit, dp), real(iunit, dp), real(iunit, dp)/)
290 atom_symbols(iunit) = atom_names(iunit, 1)
291 END DO
292
293 IF (ionode) THEN
294 CALL mc_make_dat_file_new(r(:, :), atom_symbols, 0, &
295 box_length(:), dat_file, nchains(:), mc_input_file)
296 CALL close_file(unit_number=unit)
297 END IF
298 ELSE
299 ALLOCATE (r(3, nunits_tot))
300 ALLOCATE (atom_symbols(nunits_tot))
301
302 IF (ionode) THEN
303 DO ipart = 1, nunits_tot
304 READ (unit, *) atom_symbols(ipart), r(1:3, ipart)
305 r(1:3, ipart) = r(1:3, ipart)/angstrom
306 END DO
307
308 CALL close_file(unit_number=unit)
309
310 CALL mc_make_dat_file_new(r(:, :), atom_symbols, nunits_tot, &
311 box_length(:), dat_file, nchains(:), mc_input_file)
312
313 END IF
314 END IF
315
316 CALL set_mc_par(mc_par, nstart=nstart)
317
318 ! advance the random number sequence based on the restart step
319 IF (ionode) THEN
320 DO i = 1, nstart + 1
321 rand = rng_stream%next()
322 END DO
323 END IF
324
325 ! end the timing
326 CALL timestop(handle)
327
328 ! deallcoate
329 DEALLOCATE (nchains)
330 DEALLOCATE (r)
331 DEALLOCATE (atom_symbols)
332
333 END SUBROUTINE read_mc_restart
334
335! **************************************************************************************************
336!> \brief creates a force environment for any of the different kinds of
337!> MC simulations we can do (FIST, QS)
338!> \param force_env the force environment to create
339!> \param input_declaration ...
340!> \param para_env ...
341!> \param input_file_name ...
342!> \param globenv_new the global environment parameters
343!> \author MJM
344!> \note Suitable for parallel.
345! **************************************************************************************************
346 SUBROUTINE mc_create_force_env(force_env, input_declaration, para_env, input_file_name, &
347 globenv_new)
348
349 TYPE(force_env_type), POINTER :: force_env
350 TYPE(section_type), POINTER :: input_declaration
351 TYPE(mp_para_env_type), POINTER :: para_env
352 CHARACTER(LEN=*), INTENT(IN) :: input_file_name
353 TYPE(global_environment_type), OPTIONAL, POINTER :: globenv_new
354
355 INTEGER :: f_env_id, ierr, output_unit
356 TYPE(f_env_type), POINTER :: f_env
357
358 output_unit = cp_logger_get_default_unit_nr()
359 CALL create_force_env(f_env_id, &
360 input_declaration=input_declaration, &
361 input_path=input_file_name, &
362 output_unit=output_unit, &
363 mpi_comm=para_env)
364
365 CALL f_env_add_defaults(f_env_id, f_env)
366 force_env => f_env%force_env
367 CALL force_env_retain(force_env)
368 CALL f_env_rm_defaults(f_env)
369 CALL destroy_force_env(f_env_id, ierr, .false.)
370 IF (ierr /= 0) cpabort("mc_create_force_env: destroy_force_env failed")
371
372 IF (PRESENT(globenv_new)) &
373 CALL force_env_get(force_env, globenv=globenv_new)
374
375 END SUBROUTINE mc_create_force_env
376
377! **************************************************************************************************
378!> \brief essentially copies the cell size and coordinates of one force env
379!> to another that we will use to bias some moves with
380!> \param bias_env the force environment to create
381!> \param r ...
382!> \param atom_symbols ...
383!> \param nunits_tot ...
384!> \param para_env ...
385!> \param box_length ...
386!> \param nchains ...
387!> \param input_declaration ...
388!> \param mc_input_file ...
389!> \param ionode ...
390!> \author MJM
391!> \note Suitable for parallel.
392! **************************************************************************************************
393 SUBROUTINE mc_create_bias_force_env(bias_env, r, atom_symbols, nunits_tot, &
394 para_env, box_length, nchains, input_declaration, mc_input_file, ionode)
395
396 TYPE(force_env_type), POINTER :: bias_env
397 REAL(dp), DIMENSION(:, :), INTENT(INOUT) :: r
398 CHARACTER(default_string_length), DIMENSION(:), &
399 INTENT(IN) :: atom_symbols
400 INTEGER, INTENT(IN) :: nunits_tot
401 TYPE(mp_para_env_type), POINTER :: para_env
402 REAL(kind=dp), DIMENSION(1:3), INTENT(IN) :: box_length
403 INTEGER, DIMENSION(:), POINTER :: nchains
404 TYPE(section_type), POINTER :: input_declaration
405 TYPE(mc_input_file_type), POINTER :: mc_input_file
406 LOGICAL, INTENT(IN) :: ionode
407
408 IF (ionode) &
409 CALL mc_make_dat_file_new(r(:, :), atom_symbols, nunits_tot, &
410 box_length(:), 'bias_temp.dat', nchains(:), mc_input_file)
411
412 CALL mc_create_force_env(bias_env, input_declaration, para_env, 'bias_temp.dat')
413
414 END SUBROUTINE mc_create_bias_force_env
415
416END MODULE mc_control
Define the atomic kind types and their sub types.
subroutine, public get_atomic_kind(atomic_kind, fist_potential, element_symbol, name, mass, kind_number, natom, atom_list, rcov, rvdw, z, qeff, apol, cpol, mm_radius, shell, shell_active, damping)
Get attributes of an atomic kind.
Handles all functions related to the CELL.
Definition cell_types.F:15
subroutine, public get_cell(cell, alpha, beta, gamma, deth, orthorhombic, abc, periodic, h, h_inv, symmetry_id, tag)
Get informations about a simulation cell.
Definition cell_types.F:195
Utility routines to open and close files. Tracking of preconnections.
Definition cp_files.F:16
subroutine, public open_file(file_name, file_status, file_form, file_action, file_position, file_pad, unit_number, debug, skip_get_unit_number, file_access)
Opens the requested file using a free unit number.
Definition cp_files.F:308
subroutine, public close_file(unit_number, file_status, keep_preconnection)
Close an open file given by its logical unit number. Optionally, keep the file and unit preconnected.
Definition cp_files.F:119
various routines to log and control the output. The idea is that decisions about where to log should ...
recursive integer function, public cp_logger_get_default_unit_nr(logger, local, skip_not_ionode)
asks the default unit number of the given logger. try to use cp_logger_get_unit_nr
types that represent a subsys, i.e. a part of the system
subroutine, public cp_subsys_get(subsys, ref_count, atomic_kinds, atomic_kind_set, particles, particle_set, local_particles, molecules, molecule_set, molecule_kinds, molecule_kind_set, local_molecules, para_env, colvar_p, shell_particles, core_particles, gci, multipoles, natom, nparticle, ncore, nshell, nkind, atprop, virial, results, cell)
returns information about various attributes of the given subsys
interface to use cp2k as library
recursive subroutine, public destroy_force_env(env_id, ierr, q_finalize)
deallocates the force_env with the given id
subroutine, public f_env_add_defaults(f_env_id, f_env, handle)
adds the default environments of the f_env to the stack of the defaults, and returns a new error and ...
subroutine, public get_cell(env_id, cell, per, ierr)
gets a cell
recursive subroutine, public create_force_env(new_env_id, input_declaration, input_path, output_path, mpi_comm, output_unit, owns_out_unit, input, ierr, work_dir, initial_variables)
creates a new force environment using the given input, and writing the output to the given output uni...
subroutine, public f_env_rm_defaults(f_env, ierr, handle)
removes the default environments of the f_env to the stack of the defaults, and sets ierr accordingly...
Interface for the force calculations.
recursive subroutine, public force_env_get(force_env, in_use, fist_env, qs_env, meta_env, fp_env, subsys, para_env, potential_energy, additional_potential, kinetic_energy, harmonic_shell, kinetic_shell, cell, sub_force_env, qmmm_env, qmmmx_env, eip_env, pwdft_env, globenv, input, force_env_section, method_name_id, root_section, mixed_env, nnp_env, embed_env)
returns various attributes about the force environment
subroutine, public force_env_retain(force_env)
retains the given force env
Define type storing the global information of a run. Keep the amount of stored data small....
objects that represent the structure of input sections and the data contained in an input section
Defines the basic variable types.
Definition kinds.F:23
integer, parameter, public dp
Definition kinds.F:34
integer, parameter, public default_string_length
Definition kinds.F:57
integer, parameter, public default_path_length
Definition kinds.F:58
contains some general routines for dealing with the restart files and creating force_env for MC use
Definition mc_control.F:15
subroutine, public write_mc_restart(nnstep, mc_par, nchains, force_env)
writes the coordinates of the current step to a file that can be read in at the start of the next sim...
Definition mc_control.F:79
subroutine, public read_mc_restart(mc_par, force_env, iw, mc_nunits_tot, rng_stream)
reads the input coordinates of the simulation from a file written above
Definition mc_control.F:170
subroutine, public mc_create_force_env(force_env, input_declaration, para_env, input_file_name, globenv_new)
creates a force environment for any of the different kinds of MC simulations we can do (FIST,...
Definition mc_control.F:348
subroutine, public mc_create_bias_force_env(bias_env, r, atom_symbols, nunits_tot, para_env, box_length, nchains, input_declaration, mc_input_file, ionode)
essentially copies the cell size and coordinates of one force env to another that we will use to bias...
Definition mc_control.F:395
contains miscellaneous subroutines used in the Monte Carlo runs, mostly I/O stuff
Definition mc_misc.F:13
subroutine, public mc_make_dat_file_new(coordinates, atom_names, nunits_tot, box_length, filename, nchains, mc_input_file)
writes a new input file that CP2K can read in for when we want to change a force env (change molecule...
Definition mc_misc.F:461
holds all the structure types needed for Monte Carlo, except the mc_environment_type
Definition mc_types.F:15
subroutine, public get_mc_par(mc_par, nstep, nvirial, iuptrans, iupcltrans, iupvolume, nmoves, nswapmoves, rm, cl, diff, nstart, source, group, lbias, ionode, lrestart, lstop, rmvolume, rmcltrans, rmbond, rmangle, rmrot, rmtrans, temperature, pressure, rclus, beta, pmswap, pmvolume, pmtraion, pmtrans, pmcltrans, ensemble, program, restart_file_name, molecules_file, moves_file, coords_file, energy_file, displacement_file, cell_file, dat_file, data_file, box2_file, fft_lib, iprint, rcut, ldiscrete, discrete_step, pmavbmc, pbias, avbmc_atom, avbmc_rmin, avbmc_rmax, rmdihedral, input_file, mc_molecule_info, pmswap_mol, pmavbmc_mol, pmtrans_mol, pmrot_mol, pmtraion_mol, mc_input_file, mc_bias_file, pmvol_box, pmclus_box, virial_temps, exp_min_val, exp_max_val, min_val, max_val, eta, pmhmc, pmhmc_box, lhmc, rand2skip)
...
Definition mc_types.F:405
subroutine, public get_mc_molecule_info(mc_molecule_info, nmol_types, nchain_total, nboxes, names, conf_prob, nchains, nunits, mol_type, nunits_tot, in_box, atom_names, mass)
...
Definition mc_types.F:554
subroutine, public set_mc_par(mc_par, rm, cl, diff, nstart, rmvolume, rmcltrans, rmbond, rmangle, rmdihedral, rmrot, rmtrans, program, nmoves, nswapmoves, lstop, temperature, pressure, rclus, iuptrans, iupcltrans, iupvolume, pmswap, pmvolume, pmtraion, pmtrans, pmcltrans, beta, rcut, iprint, lbias, nstep, lrestart, ldiscrete, discrete_step, pmavbmc, mc_molecule_info, pmavbmc_mol, pmtrans_mol, pmrot_mol, pmtraion_mol, pmswap_mol, avbmc_rmin, avbmc_rmax, avbmc_atom, pbias, ensemble, pmvol_box, pmclus_box, eta, mc_input_file, mc_bias_file, exp_max_val, exp_min_val, min_val, max_val, pmhmc, pmhmc_box, lhmc, ionode, source, group, rand2skip)
changes the private elements of the mc_parameters_type
Definition mc_types.F:667
Interface to the message passing library MPI.
represent a simple array based list of the given type
Define the molecule kind structure types and the corresponding functionality.
subroutine, public get_molecule_kind(molecule_kind, atom_list, bond_list, bend_list, ub_list, impr_list, opbend_list, colv_list, fixd_list, g3x3_list, g4x6_list, vsite_list, torsion_list, shell_list, name, mass, charge, kind_number, natom, nbend, nbond, nub, nimpr, nopbend, nconstraint, nconstraint_fixd, nfixd, ncolv, ng3x3, ng4x6, nvsite, nfixd_restraint, ng3x3_restraint, ng4x6_restraint, nvsite_restraint, nrestraints, nmolecule, nsgf, nshell, ntorsion, molecule_list, nelectron, nelectron_alpha, nelectron_beta, bond_kind_set, bend_kind_set, ub_kind_set, impr_kind_set, opbend_kind_set, torsion_kind_set, molname_generated)
Get informations about a molecule kind.
Parallel (pseudo)random number generator (RNG) for multiple streams and substreams of random numbers.
represent a simple array based list of the given type
Definition of physical constants:
Definition physcon.F:68
real(kind=dp), parameter, public angstrom
Definition physcon.F:144
Type defining parameters related to the simulation cell.
Definition cell_types.F:55
represents a system: atoms, molecules, their pos,vel,...
wrapper to abstract the force evaluation of the various methods
contains the initially parsed file and the initial parallel environment
represent a section of the input file
stores all the informations relevant to an mpi environment