1!
2! Copyright (C) 2001-2009 Quantum ESPRESSO group
3! This file is distributed under the terms of the
4! GNU General Public License. See the file `License'
5! in the root directory of the present distribution,
6! or http://www.gnu.org/copyleft/gpl.txt .
7!
8!
9MODULE qes_types_module
10  !
11  ! Auto-generated code: don't edit this file
12  !
13  ! Quantum Espresso XSD namespace: http://www.quantum-espresso.org/ns/qes/qes-1.0
14  !
15  USE kinds, only: DP
16  !
17  IMPLICIT NONE
18  !
19  TYPE :: xml_format_type
20    !
21    CHARACTER(len=100) :: tagname
22    LOGICAL  :: lwrite = .FALSE.
23    LOGICAL  :: lread  = .FALSE.
24    !
25    CHARACTER(len=256) :: NAME
26    CHARACTER(len=256) :: VERSION
27    !
28    CHARACTER(len=256) :: xml_format
29    !
30  END TYPE xml_format_type
31  !
32  TYPE :: creator_type
33    !
34    CHARACTER(len=100) :: tagname
35    LOGICAL  :: lwrite = .FALSE.
36    LOGICAL  :: lread  = .FALSE.
37    !
38    CHARACTER(len=256) :: NAME
39    CHARACTER(len=256) :: VERSION
40    !
41    CHARACTER(len=256) :: creator
42    !
43  END TYPE creator_type
44  !
45  TYPE :: created_type
46    !
47    CHARACTER(len=100) :: tagname
48    LOGICAL  :: lwrite = .FALSE.
49    LOGICAL  :: lread  = .FALSE.
50    !
51    CHARACTER(len=256) :: DATE
52    CHARACTER(len=256) :: TIME
53    !
54    CHARACTER(len=256) :: created
55    !
56  END TYPE created_type
57  !
58  TYPE :: atom_type
59    !
60    CHARACTER(len=100) :: tagname
61    LOGICAL  :: lwrite = .FALSE.
62    LOGICAL  :: lread  = .FALSE.
63    !
64    CHARACTER(len=256) :: name
65    CHARACTER(len=256) :: position
66    LOGICAL :: position_ispresent = .FALSE.
67    INTEGER :: index
68    LOGICAL :: index_ispresent = .FALSE.
69    !
70    REAL(DP), DIMENSION(3) :: atom
71    !
72  END TYPE atom_type
73  !
74  TYPE :: qpoint_grid_type
75    !
76    CHARACTER(len=100) :: tagname
77    LOGICAL  :: lwrite = .FALSE.
78    LOGICAL  :: lread  = .FALSE.
79    !
80    INTEGER :: nqx1
81    INTEGER :: nqx2
82    INTEGER :: nqx3
83    !
84    CHARACTER(len=256) :: qpoint_grid
85    !
86  END TYPE qpoint_grid_type
87  !
88  TYPE :: HubbardCommon_type
89    !
90    CHARACTER(len=100) :: tagname
91    LOGICAL  :: lwrite = .FALSE.
92    LOGICAL  :: lread  = .FALSE.
93    !
94    CHARACTER(len=256) :: specie
95    CHARACTER(len=256) :: label
96    LOGICAL :: label_ispresent = .FALSE.
97    !
98    REAL(DP) :: HubbardCommon
99    !
100  END TYPE HubbardCommon_type
101  !
102  TYPE :: HubbardJ_type
103    !
104    CHARACTER(len=100) :: tagname
105    LOGICAL  :: lwrite = .FALSE.
106    LOGICAL  :: lread  = .FALSE.
107    !
108    CHARACTER(len=256) :: specie
109    CHARACTER(len=256) :: label
110    !
111    REAL(DP), DIMENSION(3) :: HubbardJ
112    !
113  END TYPE HubbardJ_type
114  !
115  TYPE :: starting_ns_type
116    !
117    CHARACTER(len=100) :: tagname
118    LOGICAL  :: lwrite = .FALSE.
119    LOGICAL  :: lread  = .FALSE.
120    !
121    CHARACTER(len=256) :: specie
122    CHARACTER(len=256) :: label
123    INTEGER :: spin
124    INTEGER :: size
125    !
126    REAL(DP), DIMENSION(:), ALLOCATABLE :: starting_ns
127    !
128  END TYPE starting_ns_type
129  !
130  TYPE :: Hubbard_ns_type
131    !
132    CHARACTER(len=100) :: tagname
133    LOGICAL  :: lwrite = .FALSE.
134    LOGICAL  :: lread  = .FALSE.
135    !
136    CHARACTER(len=256) :: specie
137    CHARACTER(len=256) :: label
138    INTEGER :: spin
139    INTEGER :: index
140    INTEGER :: rank
141    INTEGER, DIMENSION(:), ALLOCATABLE :: dims
142    CHARACTER(len=256) :: order
143    !
144    REAL(DP), DIMENSION(:), ALLOCATABLE :: Hubbard_ns
145    !
146  END TYPE Hubbard_ns_type
147  !
148  TYPE :: backL_type
149    !
150    CHARACTER(len=100) :: tagname
151    LOGICAL  :: lwrite = .FALSE.
152    LOGICAL  :: lread  = .FALSE.
153    !
154    INTEGER :: l_index
155    !
156    INTEGER :: backL
157    !
158  END TYPE backL_type
159  !
160  TYPE :: smearing_type
161    !
162    CHARACTER(len=100) :: tagname
163    LOGICAL  :: lwrite = .FALSE.
164    LOGICAL  :: lread  = .FALSE.
165    !
166    REAL(DP) :: degauss
167    !
168    CHARACTER(len=256) :: smearing
169    !
170  END TYPE smearing_type
171  !
172  TYPE :: occupations_type
173    !
174    CHARACTER(len=100) :: tagname
175    LOGICAL  :: lwrite = .FALSE.
176    LOGICAL  :: lread  = .FALSE.
177    !
178    INTEGER :: spin
179    LOGICAL :: spin_ispresent = .FALSE.
180    !
181    CHARACTER(len=256) :: occupations
182    !
183  END TYPE occupations_type
184  !
185  TYPE :: basisSetItem_type
186    !
187    CHARACTER(len=100) :: tagname
188    LOGICAL  :: lwrite = .FALSE.
189    LOGICAL  :: lread  = .FALSE.
190    !
191    INTEGER :: nr1
192    INTEGER :: nr2
193    INTEGER :: nr3
194    !
195    CHARACTER(len=256) :: basisSetItem
196    !
197  END TYPE basisSetItem_type
198  !
199  TYPE :: monkhorst_pack_type
200    !
201    CHARACTER(len=100) :: tagname
202    LOGICAL  :: lwrite = .FALSE.
203    LOGICAL  :: lread  = .FALSE.
204    !
205    INTEGER :: nk1
206    INTEGER :: nk2
207    INTEGER :: nk3
208    INTEGER :: k1
209    INTEGER :: k2
210    INTEGER :: k3
211    !
212    CHARACTER(len=256) :: monkhorst_pack
213    !
214  END TYPE monkhorst_pack_type
215  !
216  TYPE :: k_point_type
217    !
218    CHARACTER(len=100) :: tagname
219    LOGICAL  :: lwrite = .FALSE.
220    LOGICAL  :: lread  = .FALSE.
221    !
222    REAL(DP) :: weight
223    LOGICAL :: weight_ispresent = .FALSE.
224    CHARACTER(len=256) :: label
225    LOGICAL :: label_ispresent = .FALSE.
226    !
227    REAL(DP), DIMENSION(3) :: k_point
228    !
229  END TYPE k_point_type
230  !
231  TYPE :: inputOccupations_type
232    !
233    CHARACTER(len=100) :: tagname
234    LOGICAL  :: lwrite = .FALSE.
235    LOGICAL  :: lread  = .FALSE.
236    !
237    INTEGER :: ispin
238    REAL(DP) :: spin_factor
239    INTEGER :: size
240    !
241    REAL(DP), DIMENSION(:), ALLOCATABLE :: inputOccupations
242    !
243  END TYPE inputOccupations_type
244  !
245  TYPE :: phase_type
246    !
247    CHARACTER(len=100) :: tagname
248    LOGICAL  :: lwrite = .FALSE.
249    LOGICAL  :: lread  = .FALSE.
250    !
251    REAL(DP) :: ionic
252    LOGICAL :: ionic_ispresent = .FALSE.
253    REAL(DP) :: electronic
254    LOGICAL :: electronic_ispresent = .FALSE.
255    CHARACTER(len=256) :: modulus
256    LOGICAL :: modulus_ispresent = .FALSE.
257    !
258    REAL(DP) :: phase
259    !
260  END TYPE phase_type
261  !
262  TYPE :: equivalent_atoms_type
263    !
264    CHARACTER(len=100) :: tagname
265    LOGICAL  :: lwrite = .FALSE.
266    LOGICAL  :: lread  = .FALSE.
267    !
268    INTEGER :: nat
269    INTEGER :: size
270    !
271    INTEGER, DIMENSION(:), ALLOCATABLE :: equivalent_atoms
272    !
273  END TYPE equivalent_atoms_type
274  !
275  TYPE :: info_type
276    !
277    CHARACTER(len=100) :: tagname
278    LOGICAL  :: lwrite = .FALSE.
279    LOGICAL  :: lread  = .FALSE.
280    !
281    CHARACTER(len=256) :: name
282    LOGICAL :: name_ispresent = .FALSE.
283    CHARACTER(len=256) :: class
284    LOGICAL :: class_ispresent = .FALSE.
285    LOGICAL :: time_reversal
286    LOGICAL :: time_reversal_ispresent = .FALSE.
287    !
288    CHARACTER(len=256) :: info
289    !
290  END TYPE info_type
291  !
292  TYPE :: closed_type
293    !
294    CHARACTER(len=100) :: tagname
295    LOGICAL  :: lwrite = .FALSE.
296    LOGICAL  :: lread  = .FALSE.
297    !
298    CHARACTER(len=256) :: DATE
299    CHARACTER(len=256) :: TIME
300    !
301    CHARACTER(len=256) :: closed
302    !
303  END TYPE closed_type
304  !
305  TYPE :: vector_type
306    !
307    CHARACTER(len=100) :: tagname
308    LOGICAL  :: lwrite = .FALSE.
309    LOGICAL  :: lread  = .FALSE.
310    !
311    INTEGER :: size
312    !
313    REAL(DP), DIMENSION(:), ALLOCATABLE :: vector
314    !
315  END TYPE vector_type
316  !
317  TYPE :: integerVector_type
318    !
319    CHARACTER(len=100) :: tagname
320    LOGICAL  :: lwrite = .FALSE.
321    LOGICAL  :: lread  = .FALSE.
322    !
323    INTEGER :: size
324    !
325    INTEGER, DIMENSION(:), ALLOCATABLE :: integerVector
326    !
327  END TYPE integerVector_type
328  !
329  TYPE :: matrix_type
330    !
331    CHARACTER(len=100) :: tagname
332    LOGICAL  :: lwrite = .FALSE.
333    LOGICAL  :: lread  = .FALSE.
334    !
335    INTEGER :: rank
336    INTEGER, DIMENSION(:), ALLOCATABLE :: dims
337    CHARACTER(len=256) :: order
338    !
339    REAL(DP), DIMENSION(:), ALLOCATABLE :: matrix
340    !
341  END TYPE matrix_type
342  !
343  TYPE :: integerMatrix_type
344    !
345    CHARACTER(len=100) :: tagname
346    LOGICAL  :: lwrite = .FALSE.
347    LOGICAL  :: lread  = .FALSE.
348    !
349    INTEGER :: rank
350    INTEGER, DIMENSION(:), ALLOCATABLE :: dims
351    CHARACTER(len=256) :: order
352    !
353    INTEGER, DIMENSION(:), ALLOCATABLE :: integerMatrix
354    !
355  END TYPE integerMatrix_type
356  !
357  TYPE :: scalarQuantity_type
358    !
359    CHARACTER(len=100) :: tagname
360    LOGICAL  :: lwrite = .FALSE.
361    LOGICAL  :: lread  = .FALSE.
362    !
363    CHARACTER(len=256) :: Units
364    !
365    REAL(DP) :: scalarQuantity
366    !
367  END TYPE scalarQuantity_type
368  !
369  TYPE :: general_info_type
370    !
371    CHARACTER(len=100) :: tagname
372    LOGICAL  :: lwrite = .FALSE.
373    LOGICAL  :: lread  = .FALSE.
374    !
375    TYPE(xml_format_type) :: xml_format
376    TYPE(creator_type) :: creator
377    TYPE(created_type) :: created
378    CHARACTER(len=256) :: job
379    !
380  END TYPE general_info_type
381  !
382  TYPE :: parallel_info_type
383    !
384    CHARACTER(len=100) :: tagname
385    LOGICAL  :: lwrite = .FALSE.
386    LOGICAL  :: lread  = .FALSE.
387    !
388    INTEGER :: nprocs
389    INTEGER :: nthreads
390    INTEGER :: ntasks
391    INTEGER :: nbgrp
392    INTEGER :: npool
393    INTEGER :: ndiag
394    !
395  END TYPE parallel_info_type
396  !
397  TYPE :: clock_type
398    !
399    CHARACTER(len=100) :: tagname
400    LOGICAL  :: lwrite = .FALSE.
401    LOGICAL  :: lread  = .FALSE.
402    !
403    CHARACTER(len=256) :: label
404    INTEGER :: calls
405    LOGICAL :: calls_ispresent = .FALSE.
406    REAL(DP) :: cpu
407    REAL(DP) :: wall
408    !
409  END TYPE clock_type
410  !
411  TYPE :: control_variables_type
412    !
413    CHARACTER(len=100) :: tagname
414    LOGICAL  :: lwrite = .FALSE.
415    LOGICAL  :: lread  = .FALSE.
416    !
417    CHARACTER(len=256) :: title
418    CHARACTER(len=256) :: calculation
419    CHARACTER(len=256) :: restart_mode
420    CHARACTER(len=256) :: prefix
421    CHARACTER(len=256) :: pseudo_dir
422    CHARACTER(len=256) :: outdir
423    LOGICAL :: stress
424    LOGICAL :: forces
425    LOGICAL :: wf_collect
426    CHARACTER(len=256) :: disk_io
427    INTEGER :: max_seconds
428    LOGICAL  :: nstep_ispresent = .FALSE.
429    INTEGER :: nstep
430    REAL(DP) :: etot_conv_thr
431    REAL(DP) :: forc_conv_thr
432    REAL(DP) :: press_conv_thr
433    CHARACTER(len=256) :: verbosity
434    INTEGER :: print_every
435    !
436  END TYPE control_variables_type
437  !
438  TYPE :: species_type
439    !
440    CHARACTER(len=100) :: tagname
441    LOGICAL  :: lwrite = .FALSE.
442    LOGICAL  :: lread  = .FALSE.
443    !
444    CHARACTER(len=256) :: name
445    LOGICAL  :: mass_ispresent = .FALSE.
446    REAL(DP) :: mass
447    CHARACTER(len=256) :: pseudo_file
448    LOGICAL  :: starting_magnetization_ispresent = .FALSE.
449    REAL(DP) :: starting_magnetization
450    LOGICAL  :: spin_teta_ispresent = .FALSE.
451    REAL(DP) :: spin_teta
452    LOGICAL  :: spin_phi_ispresent = .FALSE.
453    REAL(DP) :: spin_phi
454    !
455  END TYPE species_type
456  !
457  TYPE :: atomic_positions_type
458    !
459    CHARACTER(len=100) :: tagname
460    LOGICAL  :: lwrite = .FALSE.
461    LOGICAL  :: lread  = .FALSE.
462    !
463    TYPE(atom_type), DIMENSION(:), ALLOCATABLE :: atom
464    INTEGER   :: ndim_atom
465    !
466  END TYPE atomic_positions_type
467  !
468  TYPE :: wyckoff_positions_type
469    !
470    CHARACTER(len=100) :: tagname
471    LOGICAL  :: lwrite = .FALSE.
472    LOGICAL  :: lread  = .FALSE.
473    !
474    INTEGER :: space_group
475    CHARACTER(len=256) :: more_options
476    LOGICAL :: more_options_ispresent = .FALSE.
477    TYPE(atom_type), DIMENSION(:), ALLOCATABLE :: atom
478    INTEGER   :: ndim_atom
479    !
480  END TYPE wyckoff_positions_type
481  !
482  TYPE :: cell_type
483    !
484    CHARACTER(len=100) :: tagname
485    LOGICAL  :: lwrite = .FALSE.
486    LOGICAL  :: lread  = .FALSE.
487    !
488    REAL(DP), DIMENSION(3) :: a1
489    REAL(DP), DIMENSION(3) :: a2
490    REAL(DP), DIMENSION(3) :: a3
491    !
492  END TYPE cell_type
493  !
494  TYPE :: hybrid_type
495    !
496    CHARACTER(len=100) :: tagname
497    LOGICAL  :: lwrite = .FALSE.
498    LOGICAL  :: lread  = .FALSE.
499    !
500    LOGICAL  :: qpoint_grid_ispresent = .FALSE.
501    TYPE(qpoint_grid_type) :: qpoint_grid
502    LOGICAL  :: ecutfock_ispresent = .FALSE.
503    REAL(DP) :: ecutfock
504    LOGICAL  :: exx_fraction_ispresent = .FALSE.
505    REAL(DP) :: exx_fraction
506    LOGICAL  :: screening_parameter_ispresent = .FALSE.
507    REAL(DP) :: screening_parameter
508    LOGICAL  :: exxdiv_treatment_ispresent = .FALSE.
509    CHARACTER(len=256) :: exxdiv_treatment
510    LOGICAL  :: x_gamma_extrapolation_ispresent = .FALSE.
511    LOGICAL :: x_gamma_extrapolation
512    LOGICAL  :: ecutvcut_ispresent = .FALSE.
513    REAL(DP) :: ecutvcut
514    LOGICAL  :: localization_threshold_ispresent = .FALSE.
515    REAL(DP) :: localization_threshold
516    !
517  END TYPE hybrid_type
518  !
519  TYPE :: HubbardBack_type
520    !
521    CHARACTER(len=100) :: tagname
522    LOGICAL  :: lwrite = .FALSE.
523    LOGICAL  :: lread  = .FALSE.
524    !
525    CHARACTER(len=256) :: species
526    CHARACTER(len=256) :: background
527    TYPE(backL_type), DIMENSION(:), ALLOCATABLE :: l_number
528    INTEGER   :: ndim_l_number
529    !
530  END TYPE HubbardBack_type
531  !
532  TYPE :: vdW_type
533    !
534    CHARACTER(len=100) :: tagname
535    LOGICAL  :: lwrite = .FALSE.
536    LOGICAL  :: lread  = .FALSE.
537    !
538    LOGICAL  :: vdw_corr_ispresent = .FALSE.
539    CHARACTER(len=256) :: vdw_corr
540    LOGICAL  :: dftd3_version_ispresent = .FALSE.
541    INTEGER :: dftd3_version
542    LOGICAL  :: dftd3_threebody_ispresent = .FALSE.
543    LOGICAL :: dftd3_threebody
544    LOGICAL  :: non_local_term_ispresent = .FALSE.
545    CHARACTER(len=256) :: non_local_term
546    LOGICAL  :: functional_ispresent = .FALSE.
547    CHARACTER(len=256) :: functional
548    LOGICAL  :: total_energy_term_ispresent = .FALSE.
549    REAL(DP) :: total_energy_term
550    LOGICAL  :: london_s6_ispresent = .FALSE.
551    REAL(DP) :: london_s6
552    LOGICAL  :: ts_vdw_econv_thr_ispresent = .FALSE.
553    REAL(DP) :: ts_vdw_econv_thr
554    LOGICAL  :: ts_vdw_isolated_ispresent = .FALSE.
555    LOGICAL :: ts_vdw_isolated
556    LOGICAL  :: london_rcut_ispresent = .FALSE.
557    REAL(DP) :: london_rcut
558    LOGICAL  :: xdm_a1_ispresent = .FALSE.
559    REAL(DP) :: xdm_a1
560    LOGICAL  :: xdm_a2_ispresent = .FALSE.
561    REAL(DP) :: xdm_a2
562    LOGICAL  :: london_c6_ispresent = .FALSE.
563    TYPE(HubbardCommon_type), DIMENSION(:), ALLOCATABLE :: london_c6
564    INTEGER   :: ndim_london_c6
565    !
566  END TYPE vdW_type
567  !
568  TYPE :: spin_type
569    !
570    CHARACTER(len=100) :: tagname
571    LOGICAL  :: lwrite = .FALSE.
572    LOGICAL  :: lread  = .FALSE.
573    !
574    LOGICAL :: lsda
575    LOGICAL :: noncolin
576    LOGICAL :: spinorbit
577    !
578  END TYPE spin_type
579  !
580  TYPE :: bands_type
581    !
582    CHARACTER(len=100) :: tagname
583    LOGICAL  :: lwrite = .FALSE.
584    LOGICAL  :: lread  = .FALSE.
585    !
586    LOGICAL  :: nbnd_ispresent = .FALSE.
587    INTEGER :: nbnd
588    LOGICAL  :: smearing_ispresent = .FALSE.
589    TYPE(smearing_type) :: smearing
590    LOGICAL  :: tot_charge_ispresent = .FALSE.
591    REAL(DP) :: tot_charge
592    LOGICAL  :: tot_magnetization_ispresent = .FALSE.
593    REAL(DP) :: tot_magnetization
594    TYPE(occupations_type) :: occupations
595    LOGICAL  :: inputOccupations_ispresent = .FALSE.
596    TYPE(inputOccupations_type), DIMENSION(:), ALLOCATABLE :: inputOccupations
597    INTEGER   :: ndim_inputOccupations
598    !
599  END TYPE bands_type
600  !
601  TYPE :: basis_type
602    !
603    CHARACTER(len=100) :: tagname
604    LOGICAL  :: lwrite = .FALSE.
605    LOGICAL  :: lread  = .FALSE.
606    !
607    LOGICAL  :: gamma_only_ispresent = .FALSE.
608    LOGICAL :: gamma_only
609    REAL(DP) :: ecutwfc
610    LOGICAL  :: ecutrho_ispresent = .FALSE.
611    REAL(DP) :: ecutrho
612    LOGICAL  :: fft_grid_ispresent = .FALSE.
613    TYPE(basisSetItem_type) :: fft_grid
614    LOGICAL  :: fft_smooth_ispresent = .FALSE.
615    TYPE(basisSetItem_type) :: fft_smooth
616    LOGICAL  :: fft_box_ispresent = .FALSE.
617    TYPE(basisSetItem_type) :: fft_box
618    !
619  END TYPE basis_type
620  !
621  TYPE :: reciprocal_lattice_type
622    !
623    CHARACTER(len=100) :: tagname
624    LOGICAL  :: lwrite = .FALSE.
625    LOGICAL  :: lread  = .FALSE.
626    !
627    REAL(DP), DIMENSION(3) :: b1
628    REAL(DP), DIMENSION(3) :: b2
629    REAL(DP), DIMENSION(3) :: b3
630    !
631  END TYPE reciprocal_lattice_type
632  !
633  TYPE :: electron_control_type
634    !
635    CHARACTER(len=100) :: tagname
636    LOGICAL  :: lwrite = .FALSE.
637    LOGICAL  :: lread  = .FALSE.
638    !
639    CHARACTER(len=256) :: diagonalization
640    CHARACTER(len=256) :: mixing_mode
641    REAL(DP) :: mixing_beta
642    REAL(DP) :: conv_thr
643    INTEGER :: mixing_ndim
644    INTEGER :: max_nstep
645    LOGICAL  :: real_space_q_ispresent = .FALSE.
646    LOGICAL :: real_space_q
647    LOGICAL  :: real_space_beta_ispresent = .FALSE.
648    LOGICAL :: real_space_beta
649    LOGICAL :: tq_smoothing
650    LOGICAL :: tbeta_smoothing
651    REAL(DP) :: diago_thr_init
652    LOGICAL :: diago_full_acc
653    LOGICAL  :: diago_cg_maxiter_ispresent = .FALSE.
654    INTEGER :: diago_cg_maxiter
655    LOGICAL  :: diago_ppcg_maxiter_ispresent = .FALSE.
656    INTEGER :: diago_ppcg_maxiter
657    LOGICAL  :: diago_david_ndim_ispresent = .FALSE.
658    INTEGER :: diago_david_ndim
659    !
660  END TYPE electron_control_type
661  !
662  TYPE :: k_points_IBZ_type
663    !
664    CHARACTER(len=100) :: tagname
665    LOGICAL  :: lwrite = .FALSE.
666    LOGICAL  :: lread  = .FALSE.
667    !
668    LOGICAL  :: monkhorst_pack_ispresent = .FALSE.
669    TYPE(monkhorst_pack_type) :: monkhorst_pack
670    LOGICAL  :: nk_ispresent = .FALSE.
671    INTEGER :: nk
672    LOGICAL  :: k_point_ispresent = .FALSE.
673    TYPE(k_point_type), DIMENSION(:), ALLOCATABLE :: k_point
674    INTEGER   :: ndim_k_point
675    !
676  END TYPE k_points_IBZ_type
677  !
678  TYPE :: bfgs_type
679    !
680    CHARACTER(len=100) :: tagname
681    LOGICAL  :: lwrite = .FALSE.
682    LOGICAL  :: lread  = .FALSE.
683    !
684    INTEGER :: ndim
685    REAL(DP) :: trust_radius_min
686    REAL(DP) :: trust_radius_max
687    REAL(DP) :: trust_radius_init
688    REAL(DP) :: w1
689    REAL(DP) :: w2
690    !
691  END TYPE bfgs_type
692  !
693  TYPE :: md_type
694    !
695    CHARACTER(len=100) :: tagname
696    LOGICAL  :: lwrite = .FALSE.
697    LOGICAL  :: lread  = .FALSE.
698    !
699    CHARACTER(len=256) :: pot_extrapolation
700    CHARACTER(len=256) :: wfc_extrapolation
701    CHARACTER(len=256) :: ion_temperature
702    REAL(DP) :: timestep
703    REAL(DP) :: tempw
704    REAL(DP) :: tolp
705    REAL(DP) :: deltaT
706    INTEGER :: nraise
707    !
708  END TYPE md_type
709  !
710  TYPE :: cell_control_type
711    !
712    CHARACTER(len=100) :: tagname
713    LOGICAL  :: lwrite = .FALSE.
714    LOGICAL  :: lread  = .FALSE.
715    !
716    CHARACTER(len=256) :: cell_dynamics
717    REAL(DP) :: pressure
718    LOGICAL  :: wmass_ispresent = .FALSE.
719    REAL(DP) :: wmass
720    LOGICAL  :: cell_factor_ispresent = .FALSE.
721    REAL(DP) :: cell_factor
722    LOGICAL  :: fix_volume_ispresent = .FALSE.
723    LOGICAL :: fix_volume
724    LOGICAL  :: fix_area_ispresent = .FALSE.
725    LOGICAL :: fix_area
726    LOGICAL  :: isotropic_ispresent = .FALSE.
727    LOGICAL :: isotropic
728    LOGICAL  :: free_cell_ispresent = .FALSE.
729    TYPE(integerMatrix_type) :: free_cell
730    !
731  END TYPE cell_control_type
732  !
733  TYPE :: symmetry_flags_type
734    !
735    CHARACTER(len=100) :: tagname
736    LOGICAL  :: lwrite = .FALSE.
737    LOGICAL  :: lread  = .FALSE.
738    !
739    LOGICAL :: nosym
740    LOGICAL :: nosym_evc
741    LOGICAL :: noinv
742    LOGICAL :: no_t_rev
743    LOGICAL :: force_symmorphic
744    LOGICAL :: use_all_frac
745    !
746  END TYPE symmetry_flags_type
747  !
748  TYPE :: esm_type
749    !
750    CHARACTER(len=100) :: tagname
751    LOGICAL  :: lwrite = .FALSE.
752    LOGICAL  :: lread  = .FALSE.
753    !
754    CHARACTER(len=256) :: bc
755    INTEGER :: nfit
756    REAL(DP) :: w
757    REAL(DP) :: efield
758    !
759  END TYPE esm_type
760  !
761  TYPE :: ekin_functional_type
762    !
763    CHARACTER(len=100) :: tagname
764    LOGICAL  :: lwrite = .FALSE.
765    LOGICAL  :: lread  = .FALSE.
766    !
767    REAL(DP) :: ecfixed
768    REAL(DP) :: qcutz
769    REAL(DP) :: q2sigma
770    !
771  END TYPE ekin_functional_type
772  !
773  TYPE :: spin_constraints_type
774    !
775    CHARACTER(len=100) :: tagname
776    LOGICAL  :: lwrite = .FALSE.
777    LOGICAL  :: lread  = .FALSE.
778    !
779    CHARACTER(len=256) :: spin_constraints
780    REAL(DP) :: lagrange_multiplier
781    LOGICAL  :: target_magnetization_ispresent = .FALSE.
782    REAL(DP), DIMENSION(3) :: target_magnetization
783    !
784  END TYPE spin_constraints_type
785  !
786  TYPE :: gate_settings_type
787    !
788    CHARACTER(len=100) :: tagname
789    LOGICAL  :: lwrite = .FALSE.
790    LOGICAL  :: lread  = .FALSE.
791    !
792    LOGICAL :: use_gate
793    LOGICAL  :: zgate_ispresent = .FALSE.
794    REAL(DP) :: zgate
795    LOGICAL  :: relaxz_ispresent = .FALSE.
796    LOGICAL :: relaxz
797    LOGICAL  :: block_ispresent = .FALSE.
798    LOGICAL :: block
799    LOGICAL  :: block_1_ispresent = .FALSE.
800    REAL(DP) :: block_1
801    LOGICAL  :: block_2_ispresent = .FALSE.
802    REAL(DP) :: block_2
803    LOGICAL  :: block_height_ispresent = .FALSE.
804    REAL(DP) :: block_height
805    !
806  END TYPE gate_settings_type
807  !
808  TYPE :: atomic_constraint_type
809    !
810    CHARACTER(len=100) :: tagname
811    LOGICAL  :: lwrite = .FALSE.
812    LOGICAL  :: lread  = .FALSE.
813    !
814    REAL(DP), DIMENSION(4) :: constr_parms
815    CHARACTER(len=256) :: constr_type
816    REAL(DP) :: constr_target
817    !
818  END TYPE atomic_constraint_type
819  !
820  TYPE :: dipoleOutput_type
821    !
822    CHARACTER(len=100) :: tagname
823    LOGICAL  :: lwrite = .FALSE.
824    LOGICAL  :: lread  = .FALSE.
825    !
826    INTEGER :: idir
827    TYPE(scalarQuantity_type) :: dipole
828    TYPE(scalarQuantity_type) :: ion_dipole
829    TYPE(scalarQuantity_type) :: elec_dipole
830    TYPE(scalarQuantity_type) :: dipoleField
831    TYPE(scalarQuantity_type) :: potentialAmp
832    TYPE(scalarQuantity_type) :: totalLength
833    !
834  END TYPE dipoleOutput_type
835  !
836  TYPE :: finiteFieldOut_type
837    !
838    CHARACTER(len=100) :: tagname
839    LOGICAL  :: lwrite = .FALSE.
840    LOGICAL  :: lread  = .FALSE.
841    !
842    REAL(DP), DIMENSION(3) :: electronicDipole
843    REAL(DP), DIMENSION(3) :: ionicDipole
844    !
845  END TYPE finiteFieldOut_type
846  !
847  TYPE :: polarization_type
848    !
849    CHARACTER(len=100) :: tagname
850    LOGICAL  :: lwrite = .FALSE.
851    LOGICAL  :: lread  = .FALSE.
852    !
853    TYPE(scalarQuantity_type) :: polarization
854    REAL(DP) :: modulus
855    REAL(DP), DIMENSION(3) :: direction
856    !
857  END TYPE polarization_type
858  !
859  TYPE :: ionicPolarization_type
860    !
861    CHARACTER(len=100) :: tagname
862    LOGICAL  :: lwrite = .FALSE.
863    LOGICAL  :: lread  = .FALSE.
864    !
865    TYPE(atom_type) :: ion
866    REAL(DP) :: charge
867    TYPE(phase_type) :: phase
868    !
869  END TYPE ionicPolarization_type
870  !
871  TYPE :: electronicPolarization_type
872    !
873    CHARACTER(len=100) :: tagname
874    LOGICAL  :: lwrite = .FALSE.
875    LOGICAL  :: lread  = .FALSE.
876    !
877    TYPE(k_point_type) :: firstKeyPoint
878    LOGICAL  :: spin_ispresent = .FALSE.
879    INTEGER :: spin
880    TYPE(phase_type) :: phase
881    !
882  END TYPE electronicPolarization_type
883  !
884  TYPE :: gateInfo_type
885    !
886    CHARACTER(len=100) :: tagname
887    LOGICAL  :: lwrite = .FALSE.
888    LOGICAL  :: lread  = .FALSE.
889    !
890    REAL(DP) :: pot_prefactor
891    REAL(DP) :: gate_zpos
892    REAL(DP) :: gate_gate_term
893    REAL(DP) :: gatefieldEnergy
894    !
895  END TYPE gateInfo_type
896  !
897  TYPE :: scf_conv_type
898    !
899    CHARACTER(len=100) :: tagname
900    LOGICAL  :: lwrite = .FALSE.
901    LOGICAL  :: lread  = .FALSE.
902    !
903    LOGICAL :: convergence_achieved
904    INTEGER :: n_scf_steps
905    REAL(DP) :: scf_error
906    !
907  END TYPE scf_conv_type
908  !
909  TYPE :: opt_conv_type
910    !
911    CHARACTER(len=100) :: tagname
912    LOGICAL  :: lwrite = .FALSE.
913    LOGICAL  :: lread  = .FALSE.
914    !
915    LOGICAL :: convergence_achieved
916    INTEGER :: n_opt_steps
917    REAL(DP) :: grad_norm
918    !
919  END TYPE opt_conv_type
920  !
921  TYPE :: algorithmic_info_type
922    !
923    CHARACTER(len=100) :: tagname
924    LOGICAL  :: lwrite = .FALSE.
925    LOGICAL  :: lread  = .FALSE.
926    !
927    LOGICAL :: real_space_q
928    LOGICAL  :: real_space_beta_ispresent = .FALSE.
929    LOGICAL :: real_space_beta
930    LOGICAL :: uspp
931    LOGICAL :: paw
932    !
933  END TYPE algorithmic_info_type
934  !
935  TYPE :: symmetry_type
936    !
937    CHARACTER(len=100) :: tagname
938    LOGICAL  :: lwrite = .FALSE.
939    LOGICAL  :: lread  = .FALSE.
940    !
941    TYPE(info_type) :: info
942    TYPE(matrix_type) :: rotation
943    LOGICAL  :: fractional_translation_ispresent = .FALSE.
944    REAL(DP), DIMENSION(3) :: fractional_translation
945    LOGICAL  :: equivalent_atoms_ispresent = .FALSE.
946    TYPE(equivalent_atoms_type) :: equivalent_atoms
947    !
948  END TYPE symmetry_type
949  !
950  TYPE :: outputPBC_type
951    !
952    CHARACTER(len=100) :: tagname
953    LOGICAL  :: lwrite = .FALSE.
954    LOGICAL  :: lread  = .FALSE.
955    !
956    CHARACTER(len=256) :: assume_isolated
957    !
958  END TYPE outputPBC_type
959  !
960  TYPE :: magnetization_type
961    !
962    CHARACTER(len=100) :: tagname
963    LOGICAL  :: lwrite = .FALSE.
964    LOGICAL  :: lread  = .FALSE.
965    !
966    LOGICAL :: lsda
967    LOGICAL :: noncolin
968    LOGICAL :: spinorbit
969    REAL(DP) :: total
970    REAL(DP) :: absolute
971    LOGICAL  :: do_magnetization_ispresent = .FALSE.
972    LOGICAL :: do_magnetization
973    !
974  END TYPE magnetization_type
975  !
976  TYPE :: total_energy_type
977    !
978    CHARACTER(len=100) :: tagname
979    LOGICAL  :: lwrite = .FALSE.
980    LOGICAL  :: lread  = .FALSE.
981    !
982    REAL(DP) :: etot
983    LOGICAL  :: eband_ispresent = .FALSE.
984    REAL(DP) :: eband
985    LOGICAL  :: ehart_ispresent = .FALSE.
986    REAL(DP) :: ehart
987    LOGICAL  :: vtxc_ispresent = .FALSE.
988    REAL(DP) :: vtxc
989    LOGICAL  :: etxc_ispresent = .FALSE.
990    REAL(DP) :: etxc
991    LOGICAL  :: ewald_ispresent = .FALSE.
992    REAL(DP) :: ewald
993    LOGICAL  :: demet_ispresent = .FALSE.
994    REAL(DP) :: demet
995    LOGICAL  :: efieldcorr_ispresent = .FALSE.
996    REAL(DP) :: efieldcorr
997    LOGICAL  :: potentiostat_contr_ispresent = .FALSE.
998    REAL(DP) :: potentiostat_contr
999    LOGICAL  :: gatefield_contr_ispresent = .FALSE.
1000    REAL(DP) :: gatefield_contr
1001    LOGICAL  :: vdW_term_ispresent = .FALSE.
1002    REAL(DP) :: vdW_term
1003    !
1004  END TYPE total_energy_type
1005  !
1006  TYPE :: ks_energies_type
1007    !
1008    CHARACTER(len=100) :: tagname
1009    LOGICAL  :: lwrite = .FALSE.
1010    LOGICAL  :: lread  = .FALSE.
1011    !
1012    TYPE(k_point_type) :: k_point
1013    INTEGER :: npw
1014    TYPE(vector_type) :: eigenvalues
1015    TYPE(vector_type) :: occupations
1016    !
1017  END TYPE ks_energies_type
1018  !
1019  TYPE :: timing_type
1020    !
1021    CHARACTER(len=100) :: tagname
1022    LOGICAL  :: lwrite = .FALSE.
1023    LOGICAL  :: lread  = .FALSE.
1024    !
1025    TYPE(clock_type) :: total
1026    LOGICAL  :: partial_ispresent = .FALSE.
1027    TYPE(clock_type), DIMENSION(:), ALLOCATABLE :: partial
1028    INTEGER   :: ndim_partial
1029    !
1030  END TYPE timing_type
1031  !
1032  TYPE :: atomic_species_type
1033    !
1034    CHARACTER(len=100) :: tagname
1035    LOGICAL  :: lwrite = .FALSE.
1036    LOGICAL  :: lread  = .FALSE.
1037    !
1038    INTEGER :: ntyp
1039    CHARACTER(len=256) :: pseudo_dir
1040    LOGICAL :: pseudo_dir_ispresent = .FALSE.
1041    TYPE(species_type), DIMENSION(:), ALLOCATABLE :: species
1042    INTEGER   :: ndim_species
1043    !
1044  END TYPE atomic_species_type
1045  !
1046  TYPE :: atomic_structure_type
1047    !
1048    CHARACTER(len=100) :: tagname
1049    LOGICAL  :: lwrite = .FALSE.
1050    LOGICAL  :: lread  = .FALSE.
1051    !
1052    INTEGER :: nat
1053    REAL(DP) :: alat
1054    LOGICAL :: alat_ispresent = .FALSE.
1055    INTEGER :: bravais_index
1056    LOGICAL :: bravais_index_ispresent = .FALSE.
1057    CHARACTER(len=256) :: alternative_axes
1058    LOGICAL :: alternative_axes_ispresent = .FALSE.
1059    LOGICAL  :: atomic_positions_ispresent = .FALSE.
1060    TYPE(atomic_positions_type) :: atomic_positions
1061    LOGICAL  :: wyckoff_positions_ispresent = .FALSE.
1062    TYPE(wyckoff_positions_type) :: wyckoff_positions
1063    LOGICAL  :: crystal_positions_ispresent = .FALSE.
1064    TYPE(atomic_positions_type) :: crystal_positions
1065    TYPE(cell_type) :: cell
1066    !
1067  END TYPE atomic_structure_type
1068  !
1069  TYPE :: dftU_type
1070    !
1071    CHARACTER(len=100) :: tagname
1072    LOGICAL  :: lwrite = .FALSE.
1073    LOGICAL  :: lread  = .FALSE.
1074    !
1075    LOGICAL  :: lda_plus_u_kind_ispresent = .FALSE.
1076    INTEGER :: lda_plus_u_kind
1077    LOGICAL  :: Hubbard_U_ispresent = .FALSE.
1078    TYPE(HubbardCommon_type), DIMENSION(:), ALLOCATABLE :: Hubbard_U
1079    INTEGER   :: ndim_Hubbard_U
1080    LOGICAL  :: Hubbard_J0_ispresent = .FALSE.
1081    TYPE(HubbardCommon_type), DIMENSION(:), ALLOCATABLE :: Hubbard_J0
1082    INTEGER   :: ndim_Hubbard_J0
1083    LOGICAL  :: Hubbard_alpha_ispresent = .FALSE.
1084    TYPE(HubbardCommon_type), DIMENSION(:), ALLOCATABLE :: Hubbard_alpha
1085    INTEGER   :: ndim_Hubbard_alpha
1086    LOGICAL  :: Hubbard_beta_ispresent = .FALSE.
1087    TYPE(HubbardCommon_type), DIMENSION(:), ALLOCATABLE :: Hubbard_beta
1088    INTEGER   :: ndim_Hubbard_beta
1089    LOGICAL  :: Hubbard_J_ispresent = .FALSE.
1090    TYPE(HubbardJ_type), DIMENSION(:), ALLOCATABLE :: Hubbard_J
1091    INTEGER   :: ndim_Hubbard_J
1092    LOGICAL  :: starting_ns_ispresent = .FALSE.
1093    TYPE(starting_ns_type), DIMENSION(:), ALLOCATABLE :: starting_ns
1094    INTEGER   :: ndim_starting_ns
1095    LOGICAL  :: Hubbard_ns_ispresent = .FALSE.
1096    TYPE(Hubbard_ns_type), DIMENSION(:), ALLOCATABLE :: Hubbard_ns
1097    INTEGER   :: ndim_Hubbard_ns
1098    LOGICAL  :: U_projection_type_ispresent = .FALSE.
1099    CHARACTER(len=256) :: U_projection_type
1100    LOGICAL  :: Hubbard_back_ispresent = .FALSE.
1101    TYPE(HubbardBack_type), DIMENSION(:), ALLOCATABLE :: Hubbard_back
1102    INTEGER   :: ndim_Hubbard_back
1103    LOGICAL  :: Hubbard_U_back_ispresent = .FALSE.
1104    TYPE(HubbardCommon_type), DIMENSION(:), ALLOCATABLE :: Hubbard_U_back
1105    INTEGER   :: ndim_Hubbard_U_back
1106    LOGICAL  :: Hubbard_alpha_back_ispresent = .FALSE.
1107    TYPE(HubbardCommon_type), DIMENSION(:), ALLOCATABLE :: Hubbard_alpha_back
1108    INTEGER   :: ndim_Hubbard_alpha_back
1109    LOGICAL  :: Hubbard_ns_nc_ispresent = .FALSE.
1110    TYPE(Hubbard_ns_type), DIMENSION(:), ALLOCATABLE :: Hubbard_ns_nc
1111    INTEGER   :: ndim_Hubbard_ns_nc
1112    !
1113  END TYPE dftU_type
1114  !
1115  TYPE :: basis_set_type
1116    !
1117    CHARACTER(len=100) :: tagname
1118    LOGICAL  :: lwrite = .FALSE.
1119    LOGICAL  :: lread  = .FALSE.
1120    !
1121    LOGICAL  :: gamma_only_ispresent = .FALSE.
1122    LOGICAL :: gamma_only
1123    REAL(DP) :: ecutwfc
1124    LOGICAL  :: ecutrho_ispresent = .FALSE.
1125    REAL(DP) :: ecutrho
1126    TYPE(basisSetItem_type) :: fft_grid
1127    LOGICAL  :: fft_smooth_ispresent = .FALSE.
1128    TYPE(basisSetItem_type) :: fft_smooth
1129    LOGICAL  :: fft_box_ispresent = .FALSE.
1130    TYPE(basisSetItem_type) :: fft_box
1131    INTEGER :: ngm
1132    LOGICAL  :: ngms_ispresent = .FALSE.
1133    INTEGER :: ngms
1134    INTEGER :: npwx
1135    TYPE(reciprocal_lattice_type) :: reciprocal_lattice
1136    !
1137  END TYPE basis_set_type
1138  !
1139  TYPE :: ion_control_type
1140    !
1141    CHARACTER(len=100) :: tagname
1142    LOGICAL  :: lwrite = .FALSE.
1143    LOGICAL  :: lread  = .FALSE.
1144    !
1145    CHARACTER(len=256) :: ion_dynamics
1146    LOGICAL  :: upscale_ispresent = .FALSE.
1147    REAL(DP) :: upscale
1148    LOGICAL  :: remove_rigid_rot_ispresent = .FALSE.
1149    LOGICAL :: remove_rigid_rot
1150    LOGICAL  :: refold_pos_ispresent = .FALSE.
1151    LOGICAL :: refold_pos
1152    LOGICAL  :: bfgs_ispresent = .FALSE.
1153    TYPE(bfgs_type) :: bfgs
1154    LOGICAL  :: md_ispresent = .FALSE.
1155    TYPE(md_type) :: md
1156    !
1157  END TYPE ion_control_type
1158  !
1159  TYPE :: boundary_conditions_type
1160    !
1161    CHARACTER(len=100) :: tagname
1162    LOGICAL  :: lwrite = .FALSE.
1163    LOGICAL  :: lread  = .FALSE.
1164    !
1165    CHARACTER(len=256) :: assume_isolated
1166    LOGICAL  :: esm_ispresent = .FALSE.
1167    TYPE(esm_type) :: esm
1168    LOGICAL  :: fcp_opt_ispresent = .FALSE.
1169    LOGICAL :: fcp_opt
1170    LOGICAL  :: fcp_mu_ispresent = .FALSE.
1171    REAL(DP) :: fcp_mu
1172    !
1173  END TYPE boundary_conditions_type
1174  !
1175  TYPE :: electric_field_type
1176    !
1177    CHARACTER(len=100) :: tagname
1178    LOGICAL  :: lwrite = .FALSE.
1179    LOGICAL  :: lread  = .FALSE.
1180    !
1181    CHARACTER(len=256) :: electric_potential
1182    LOGICAL  :: dipole_correction_ispresent = .FALSE.
1183    LOGICAL :: dipole_correction
1184    LOGICAL  :: gate_settings_ispresent = .FALSE.
1185    TYPE(gate_settings_type) :: gate_settings
1186    LOGICAL  :: electric_field_direction_ispresent = .FALSE.
1187    INTEGER :: electric_field_direction
1188    LOGICAL  :: potential_max_position_ispresent = .FALSE.
1189    REAL(DP) :: potential_max_position
1190    LOGICAL  :: potential_decrease_width_ispresent = .FALSE.
1191    REAL(DP) :: potential_decrease_width
1192    LOGICAL  :: electric_field_amplitude_ispresent = .FALSE.
1193    REAL(DP) :: electric_field_amplitude
1194    LOGICAL  :: electric_field_vector_ispresent = .FALSE.
1195    REAL(DP), DIMENSION(3) :: electric_field_vector
1196    LOGICAL  :: nk_per_string_ispresent = .FALSE.
1197    INTEGER :: nk_per_string
1198    LOGICAL  :: n_berry_cycles_ispresent = .FALSE.
1199    INTEGER :: n_berry_cycles
1200    !
1201  END TYPE electric_field_type
1202  !
1203  TYPE :: atomic_constraints_type
1204    !
1205    CHARACTER(len=100) :: tagname
1206    LOGICAL  :: lwrite = .FALSE.
1207    LOGICAL  :: lread  = .FALSE.
1208    !
1209    INTEGER :: num_of_constraints
1210    REAL(DP) :: tolerance
1211    TYPE(atomic_constraint_type), DIMENSION(:), ALLOCATABLE :: atomic_constraint
1212    INTEGER   :: ndim_atomic_constraint
1213    !
1214  END TYPE atomic_constraints_type
1215  !
1216  TYPE :: BerryPhaseOutput_type
1217    !
1218    CHARACTER(len=100) :: tagname
1219    LOGICAL  :: lwrite = .FALSE.
1220    LOGICAL  :: lread  = .FALSE.
1221    !
1222    TYPE(polarization_type) :: totalPolarization
1223    TYPE(phase_type) :: totalPhase
1224    TYPE(ionicPolarization_type), DIMENSION(:), ALLOCATABLE :: ionicPolarization
1225    INTEGER   :: ndim_ionicPolarization
1226    TYPE(electronicPolarization_type), DIMENSION(:), ALLOCATABLE :: electronicPolarization
1227    INTEGER   :: ndim_electronicPolarization
1228    !
1229  END TYPE BerryPhaseOutput_type
1230  !
1231  TYPE :: convergence_info_type
1232    !
1233    CHARACTER(len=100) :: tagname
1234    LOGICAL  :: lwrite = .FALSE.
1235    LOGICAL  :: lread  = .FALSE.
1236    !
1237    TYPE(scf_conv_type) :: scf_conv
1238    LOGICAL  :: opt_conv_ispresent = .FALSE.
1239    TYPE(opt_conv_type) :: opt_conv
1240    !
1241  END TYPE convergence_info_type
1242  !
1243  TYPE :: symmetries_type
1244    !
1245    CHARACTER(len=100) :: tagname
1246    LOGICAL  :: lwrite = .FALSE.
1247    LOGICAL  :: lread  = .FALSE.
1248    !
1249    INTEGER :: nsym
1250    INTEGER :: nrot
1251    INTEGER :: space_group
1252    TYPE(symmetry_type), DIMENSION(:), ALLOCATABLE :: symmetry
1253    INTEGER   :: ndim_symmetry
1254    !
1255  END TYPE symmetries_type
1256  !
1257  TYPE :: band_structure_type
1258    !
1259    CHARACTER(len=100) :: tagname
1260    LOGICAL  :: lwrite = .FALSE.
1261    LOGICAL  :: lread  = .FALSE.
1262    !
1263    LOGICAL :: lsda
1264    LOGICAL :: noncolin
1265    LOGICAL :: spinorbit
1266    LOGICAL  :: nbnd_ispresent = .FALSE.
1267    INTEGER :: nbnd
1268    LOGICAL  :: nbnd_up_ispresent = .FALSE.
1269    INTEGER :: nbnd_up
1270    LOGICAL  :: nbnd_dw_ispresent = .FALSE.
1271    INTEGER :: nbnd_dw
1272    REAL(DP) :: nelec
1273    LOGICAL  :: num_of_atomic_wfc_ispresent = .FALSE.
1274    INTEGER :: num_of_atomic_wfc
1275    LOGICAL :: wf_collected
1276    LOGICAL  :: fermi_energy_ispresent = .FALSE.
1277    REAL(DP) :: fermi_energy
1278    LOGICAL  :: highestOccupiedLevel_ispresent = .FALSE.
1279    REAL(DP) :: highestOccupiedLevel
1280    LOGICAL  :: lowestUnoccupiedLevel_ispresent = .FALSE.
1281    REAL(DP) :: lowestUnoccupiedLevel
1282    LOGICAL  :: two_fermi_energies_ispresent = .FALSE.
1283    REAL(DP), DIMENSION(2) :: two_fermi_energies
1284    TYPE(k_points_IBZ_type) :: starting_k_points
1285    INTEGER :: nks
1286    TYPE(occupations_type) :: occupations_kind
1287    LOGICAL  :: smearing_ispresent = .FALSE.
1288    TYPE(smearing_type) :: smearing
1289    TYPE(ks_energies_type), DIMENSION(:), ALLOCATABLE :: ks_energies
1290    INTEGER   :: ndim_ks_energies
1291    !
1292  END TYPE band_structure_type
1293  !
1294  TYPE :: step_type
1295    !
1296    CHARACTER(len=100) :: tagname
1297    LOGICAL  :: lwrite = .FALSE.
1298    LOGICAL  :: lread  = .FALSE.
1299    !
1300    INTEGER :: n_step
1301    TYPE(scf_conv_type) :: scf_conv
1302    TYPE(atomic_structure_type) :: atomic_structure
1303    TYPE(total_energy_type) :: total_energy
1304    TYPE(matrix_type) :: forces
1305    LOGICAL  :: stress_ispresent = .FALSE.
1306    TYPE(matrix_type) :: stress
1307    LOGICAL  :: FCP_force_ispresent = .FALSE.
1308    REAL(DP) :: FCP_force
1309    LOGICAL  :: FCP_tot_charge_ispresent = .FALSE.
1310    REAL(DP) :: FCP_tot_charge
1311    !
1312  END TYPE step_type
1313  !
1314  TYPE :: dft_type
1315    !
1316    CHARACTER(len=100) :: tagname
1317    LOGICAL  :: lwrite = .FALSE.
1318    LOGICAL  :: lread  = .FALSE.
1319    !
1320    CHARACTER(len=256) :: functional
1321    LOGICAL  :: hybrid_ispresent = .FALSE.
1322    TYPE(hybrid_type) :: hybrid
1323    LOGICAL  :: dftU_ispresent = .FALSE.
1324    TYPE(dftU_type) :: dftU
1325    LOGICAL  :: vdW_ispresent = .FALSE.
1326    TYPE(vdW_type) :: vdW
1327    !
1328  END TYPE dft_type
1329  !
1330  TYPE :: outputElectricField_type
1331    !
1332    CHARACTER(len=100) :: tagname
1333    LOGICAL  :: lwrite = .FALSE.
1334    LOGICAL  :: lread  = .FALSE.
1335    !
1336    LOGICAL  :: BerryPhase_ispresent = .FALSE.
1337    TYPE(BerryPhaseOutput_type) :: BerryPhase
1338    LOGICAL  :: finiteElectricFieldInfo_ispresent = .FALSE.
1339    TYPE(finiteFieldOut_type) :: finiteElectricFieldInfo
1340    LOGICAL  :: dipoleInfo_ispresent = .FALSE.
1341    TYPE(dipoleOutput_type) :: dipoleInfo
1342    LOGICAL  :: gateInfo_ispresent = .FALSE.
1343    TYPE(gateInfo_type) :: gateInfo
1344    !
1345  END TYPE outputElectricField_type
1346  !
1347  TYPE :: input_type
1348    !
1349    CHARACTER(len=100) :: tagname
1350    LOGICAL  :: lwrite = .FALSE.
1351    LOGICAL  :: lread  = .FALSE.
1352    !
1353    TYPE(control_variables_type) :: control_variables
1354    TYPE(atomic_species_type) :: atomic_species
1355    TYPE(atomic_structure_type) :: atomic_structure
1356    TYPE(dft_type) :: dft
1357    TYPE(spin_type) :: spin
1358    TYPE(bands_type) :: bands
1359    TYPE(basis_type) :: basis
1360    TYPE(electron_control_type) :: electron_control
1361    TYPE(k_points_IBZ_type) :: k_points_IBZ
1362    TYPE(ion_control_type) :: ion_control
1363    TYPE(cell_control_type) :: cell_control
1364    LOGICAL  :: symmetry_flags_ispresent = .FALSE.
1365    TYPE(symmetry_flags_type) :: symmetry_flags
1366    LOGICAL  :: boundary_conditions_ispresent = .FALSE.
1367    TYPE(boundary_conditions_type) :: boundary_conditions
1368    LOGICAL  :: ekin_functional_ispresent = .FALSE.
1369    TYPE(ekin_functional_type) :: ekin_functional
1370    LOGICAL  :: external_atomic_forces_ispresent = .FALSE.
1371    TYPE(matrix_type) :: external_atomic_forces
1372    LOGICAL  :: free_positions_ispresent = .FALSE.
1373    TYPE(integerMatrix_type) :: free_positions
1374    LOGICAL  :: starting_atomic_velocities_ispresent = .FALSE.
1375    TYPE(matrix_type) :: starting_atomic_velocities
1376    LOGICAL  :: electric_field_ispresent = .FALSE.
1377    TYPE(electric_field_type) :: electric_field
1378    LOGICAL  :: atomic_constraints_ispresent = .FALSE.
1379    TYPE(atomic_constraints_type) :: atomic_constraints
1380    LOGICAL  :: spin_constraints_ispresent = .FALSE.
1381    TYPE(spin_constraints_type) :: spin_constraints
1382    !
1383  END TYPE input_type
1384  !
1385  TYPE :: output_type
1386    !
1387    CHARACTER(len=100) :: tagname
1388    LOGICAL  :: lwrite = .FALSE.
1389    LOGICAL  :: lread  = .FALSE.
1390    !
1391    LOGICAL  :: convergence_info_ispresent = .FALSE.
1392    TYPE(convergence_info_type) :: convergence_info
1393    TYPE(algorithmic_info_type) :: algorithmic_info
1394    TYPE(atomic_species_type) :: atomic_species
1395    TYPE(atomic_structure_type) :: atomic_structure
1396    LOGICAL  :: symmetries_ispresent = .FALSE.
1397    TYPE(symmetries_type) :: symmetries
1398    TYPE(basis_set_type) :: basis_set
1399    TYPE(dft_type) :: dft
1400    LOGICAL  :: boundary_conditions_ispresent = .FALSE.
1401    TYPE(outputPBC_type) :: boundary_conditions
1402    TYPE(magnetization_type) :: magnetization
1403    TYPE(total_energy_type) :: total_energy
1404    TYPE(band_structure_type) :: band_structure
1405    LOGICAL  :: forces_ispresent = .FALSE.
1406    TYPE(matrix_type) :: forces
1407    LOGICAL  :: stress_ispresent = .FALSE.
1408    TYPE(matrix_type) :: stress
1409    LOGICAL  :: electric_field_ispresent = .FALSE.
1410    TYPE(outputElectricField_type) :: electric_field
1411    LOGICAL  :: FCP_force_ispresent = .FALSE.
1412    REAL(DP) :: FCP_force
1413    LOGICAL  :: FCP_tot_charge_ispresent = .FALSE.
1414    REAL(DP) :: FCP_tot_charge
1415    !
1416  END TYPE output_type
1417  !
1418  TYPE :: espresso_type
1419    !
1420    CHARACTER(len=100) :: tagname
1421    LOGICAL  :: lwrite = .FALSE.
1422    LOGICAL  :: lread  = .FALSE.
1423    !
1424    CHARACTER(len=256) :: Units
1425    LOGICAL :: Units_ispresent = .FALSE.
1426    LOGICAL  :: general_info_ispresent = .FALSE.
1427    TYPE(general_info_type) :: general_info
1428    LOGICAL  :: parallel_info_ispresent = .FALSE.
1429    TYPE(parallel_info_type) :: parallel_info
1430    TYPE(input_type) :: input
1431    LOGICAL  :: step_ispresent = .FALSE.
1432    TYPE(step_type), DIMENSION(:), ALLOCATABLE :: step
1433    INTEGER   :: ndim_step
1434    LOGICAL  :: output_ispresent = .FALSE.
1435    TYPE(output_type) :: output
1436    LOGICAL  :: status_ispresent = .FALSE.
1437    INTEGER :: status
1438    LOGICAL  :: cputime_ispresent = .FALSE.
1439    INTEGER :: cputime
1440    LOGICAL  :: timing_info_ispresent = .FALSE.
1441    TYPE(timing_type) :: timing_info
1442    LOGICAL  :: closed_ispresent = .FALSE.
1443    TYPE(closed_type) :: closed
1444    !
1445  END TYPE espresso_type
1446  !
1447  !
1448END MODULE qes_types_module