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_reset_module
10  !
11  ! Auto-generated code: don't edit or at least don't commit changes
12  !
13  ! Quantum Espresso XSD namespace: http://www.quantum-espresso.org/ns/qes/qes-1.0
14  !
15  USE qes_types_module
16  !
17  IMPLICIT NONE
18  !
19  PRIVATE
20  !
21  PUBLIC qes_reset
22  !
23  INTERFACE qes_reset
24    MODULE PROCEDURE qes_reset_espresso
25    MODULE PROCEDURE qes_reset_general_info
26    MODULE PROCEDURE qes_reset_parallel_info
27    MODULE PROCEDURE qes_reset_input
28    MODULE PROCEDURE qes_reset_step
29    MODULE PROCEDURE qes_reset_output
30    MODULE PROCEDURE qes_reset_timing
31    MODULE PROCEDURE qes_reset_clock
32    MODULE PROCEDURE qes_reset_control_variables
33    MODULE PROCEDURE qes_reset_xml_format
34    MODULE PROCEDURE qes_reset_creator
35    MODULE PROCEDURE qes_reset_created
36    MODULE PROCEDURE qes_reset_atomic_species
37    MODULE PROCEDURE qes_reset_species
38    MODULE PROCEDURE qes_reset_atomic_structure
39    MODULE PROCEDURE qes_reset_atomic_positions
40    MODULE PROCEDURE qes_reset_atom
41    MODULE PROCEDURE qes_reset_wyckoff_positions
42    MODULE PROCEDURE qes_reset_cell
43    MODULE PROCEDURE qes_reset_dft
44    MODULE PROCEDURE qes_reset_hybrid
45    MODULE PROCEDURE qes_reset_qpoint_grid
46    MODULE PROCEDURE qes_reset_dftU
47    MODULE PROCEDURE qes_reset_HubbardCommon
48    MODULE PROCEDURE qes_reset_HubbardJ
49    MODULE PROCEDURE qes_reset_starting_ns
50    MODULE PROCEDURE qes_reset_Hubbard_ns
51    MODULE PROCEDURE qes_reset_HubbardBack
52    MODULE PROCEDURE qes_reset_backL
53    MODULE PROCEDURE qes_reset_vdW
54    MODULE PROCEDURE qes_reset_spin
55    MODULE PROCEDURE qes_reset_bands
56    MODULE PROCEDURE qes_reset_smearing
57    MODULE PROCEDURE qes_reset_occupations
58    MODULE PROCEDURE qes_reset_basis
59    MODULE PROCEDURE qes_reset_basis_set
60    MODULE PROCEDURE qes_reset_basisSetItem
61    MODULE PROCEDURE qes_reset_reciprocal_lattice
62    MODULE PROCEDURE qes_reset_electron_control
63    MODULE PROCEDURE qes_reset_k_points_IBZ
64    MODULE PROCEDURE qes_reset_monkhorst_pack
65    MODULE PROCEDURE qes_reset_k_point
66    MODULE PROCEDURE qes_reset_ion_control
67    MODULE PROCEDURE qes_reset_bfgs
68    MODULE PROCEDURE qes_reset_md
69    MODULE PROCEDURE qes_reset_cell_control
70    MODULE PROCEDURE qes_reset_symmetry_flags
71    MODULE PROCEDURE qes_reset_boundary_conditions
72    MODULE PROCEDURE qes_reset_esm
73    MODULE PROCEDURE qes_reset_ekin_functional
74    MODULE PROCEDURE qes_reset_spin_constraints
75    MODULE PROCEDURE qes_reset_electric_field
76    MODULE PROCEDURE qes_reset_gate_settings
77    MODULE PROCEDURE qes_reset_atomic_constraints
78    MODULE PROCEDURE qes_reset_atomic_constraint
79    MODULE PROCEDURE qes_reset_inputOccupations
80    MODULE PROCEDURE qes_reset_outputElectricField
81    MODULE PROCEDURE qes_reset_BerryPhaseOutput
82    MODULE PROCEDURE qes_reset_dipoleOutput
83    MODULE PROCEDURE qes_reset_finiteFieldOut
84    MODULE PROCEDURE qes_reset_polarization
85    MODULE PROCEDURE qes_reset_ionicPolarization
86    MODULE PROCEDURE qes_reset_electronicPolarization
87    MODULE PROCEDURE qes_reset_phase
88    MODULE PROCEDURE qes_reset_gateInfo
89    MODULE PROCEDURE qes_reset_convergence_info
90    MODULE PROCEDURE qes_reset_scf_conv
91    MODULE PROCEDURE qes_reset_opt_conv
92    MODULE PROCEDURE qes_reset_algorithmic_info
93    MODULE PROCEDURE qes_reset_symmetries
94    MODULE PROCEDURE qes_reset_symmetry
95    MODULE PROCEDURE qes_reset_equivalent_atoms
96    MODULE PROCEDURE qes_reset_info
97    MODULE PROCEDURE qes_reset_outputPBC
98    MODULE PROCEDURE qes_reset_magnetization
99    MODULE PROCEDURE qes_reset_total_energy
100    MODULE PROCEDURE qes_reset_band_structure
101    MODULE PROCEDURE qes_reset_ks_energies
102    MODULE PROCEDURE qes_reset_closed
103    MODULE PROCEDURE qes_reset_vector
104    MODULE PROCEDURE qes_reset_integerVector
105    MODULE PROCEDURE qes_reset_matrix
106    MODULE PROCEDURE qes_reset_integerMatrix
107    MODULE PROCEDURE qes_reset_scalarQuantity
108  END INTERFACE qes_reset
109  !
110  CONTAINS
111  !
112  !
113  SUBROUTINE qes_reset_espresso(obj)
114    !
115    IMPLICIT NONE
116    TYPE(espresso_type),INTENT(INOUT)    :: obj
117    INTEGER :: i
118    !
119    obj%tagname = ""
120    obj%lwrite  = .FALSE.
121    obj%lread  = .FALSE.
122    !
123    IF (obj%general_info_ispresent) &
124      CALL qes_reset_general_info(obj%general_info)
125    obj%general_info_ispresent = .FALSE.
126    IF (obj%parallel_info_ispresent) &
127      CALL qes_reset_parallel_info(obj%parallel_info)
128    obj%parallel_info_ispresent = .FALSE.
129    CALL qes_reset_input(obj%input)
130    IF (obj%step_ispresent) THEN
131      IF (ALLOCATED(obj%step)) THEN
132        DO i=1, SIZE(obj%step)
133          CALL qes_reset_step(obj%step(i))
134        ENDDO
135        DEALLOCATE(obj%step)
136      ENDIF
137      obj%ndim_step = 0
138      obj%step_ispresent = .FALSE.
139    ENDIF
140    IF (obj%output_ispresent) &
141      CALL qes_reset_output(obj%output)
142    obj%output_ispresent = .FALSE.
143    obj%status_ispresent = .FALSE.
144    obj%cputime_ispresent = .FALSE.
145    IF (obj%timing_info_ispresent) &
146      CALL qes_reset_timing(obj%timing_info)
147    obj%timing_info_ispresent = .FALSE.
148    IF (obj%closed_ispresent) &
149      CALL qes_reset_closed(obj%closed)
150    obj%closed_ispresent = .FALSE.
151    obj%Units_ispresent = .FALSE.
152    !
153  END SUBROUTINE qes_reset_espresso
154  !
155  !
156  SUBROUTINE qes_reset_general_info(obj)
157    !
158    IMPLICIT NONE
159    TYPE(general_info_type),INTENT(INOUT)    :: obj
160    !
161    obj%tagname = ""
162    obj%lwrite  = .FALSE.
163    obj%lread  = .FALSE.
164    !
165    CALL qes_reset_xml_format(obj%xml_format)
166    CALL qes_reset_creator(obj%creator)
167    CALL qes_reset_created(obj%created)
168    !
169  END SUBROUTINE qes_reset_general_info
170  !
171  !
172  SUBROUTINE qes_reset_parallel_info(obj)
173    !
174    IMPLICIT NONE
175    TYPE(parallel_info_type),INTENT(INOUT)    :: obj
176    !
177    obj%tagname = ""
178    obj%lwrite  = .FALSE.
179    obj%lread  = .FALSE.
180    !
181    !
182  END SUBROUTINE qes_reset_parallel_info
183  !
184  !
185  SUBROUTINE qes_reset_input(obj)
186    !
187    IMPLICIT NONE
188    TYPE(input_type),INTENT(INOUT)    :: obj
189    !
190    obj%tagname = ""
191    obj%lwrite  = .FALSE.
192    obj%lread  = .FALSE.
193    !
194    CALL qes_reset_control_variables(obj%control_variables)
195    CALL qes_reset_atomic_species(obj%atomic_species)
196    CALL qes_reset_atomic_structure(obj%atomic_structure)
197    CALL qes_reset_dft(obj%dft)
198    CALL qes_reset_spin(obj%spin)
199    CALL qes_reset_bands(obj%bands)
200    CALL qes_reset_basis(obj%basis)
201    CALL qes_reset_electron_control(obj%electron_control)
202    CALL qes_reset_k_points_IBZ(obj%k_points_IBZ)
203    CALL qes_reset_ion_control(obj%ion_control)
204    CALL qes_reset_cell_control(obj%cell_control)
205    IF (obj%symmetry_flags_ispresent) &
206      CALL qes_reset_symmetry_flags(obj%symmetry_flags)
207    obj%symmetry_flags_ispresent = .FALSE.
208    IF (obj%boundary_conditions_ispresent) &
209      CALL qes_reset_boundary_conditions(obj%boundary_conditions)
210    obj%boundary_conditions_ispresent = .FALSE.
211    IF (obj%ekin_functional_ispresent) &
212      CALL qes_reset_ekin_functional(obj%ekin_functional)
213    obj%ekin_functional_ispresent = .FALSE.
214    IF (obj%external_atomic_forces_ispresent) &
215      CALL qes_reset_matrix(obj%external_atomic_forces)
216    obj%external_atomic_forces_ispresent = .FALSE.
217    IF (obj%free_positions_ispresent) &
218      CALL qes_reset_integerMatrix(obj%free_positions)
219    obj%free_positions_ispresent = .FALSE.
220    IF (obj%starting_atomic_velocities_ispresent) &
221      CALL qes_reset_matrix(obj%starting_atomic_velocities)
222    obj%starting_atomic_velocities_ispresent = .FALSE.
223    IF (obj%electric_field_ispresent) &
224      CALL qes_reset_electric_field(obj%electric_field)
225    obj%electric_field_ispresent = .FALSE.
226    IF (obj%atomic_constraints_ispresent) &
227      CALL qes_reset_atomic_constraints(obj%atomic_constraints)
228    obj%atomic_constraints_ispresent = .FALSE.
229    IF (obj%spin_constraints_ispresent) &
230      CALL qes_reset_spin_constraints(obj%spin_constraints)
231    obj%spin_constraints_ispresent = .FALSE.
232    !
233  END SUBROUTINE qes_reset_input
234  !
235  !
236  SUBROUTINE qes_reset_step(obj)
237    !
238    IMPLICIT NONE
239    TYPE(step_type),INTENT(INOUT)    :: obj
240    !
241    obj%tagname = ""
242    obj%lwrite  = .FALSE.
243    obj%lread  = .FALSE.
244    !
245    CALL qes_reset_scf_conv(obj%scf_conv)
246    CALL qes_reset_atomic_structure(obj%atomic_structure)
247    CALL qes_reset_total_energy(obj%total_energy)
248    CALL qes_reset_matrix(obj%forces)
249    IF (obj%stress_ispresent) &
250      CALL qes_reset_matrix(obj%stress)
251    obj%stress_ispresent = .FALSE.
252    obj%FCP_force_ispresent = .FALSE.
253    obj%FCP_tot_charge_ispresent = .FALSE.
254    !
255  END SUBROUTINE qes_reset_step
256  !
257  !
258  SUBROUTINE qes_reset_output(obj)
259    !
260    IMPLICIT NONE
261    TYPE(output_type),INTENT(INOUT)    :: obj
262    !
263    obj%tagname = ""
264    obj%lwrite  = .FALSE.
265    obj%lread  = .FALSE.
266    !
267    IF (obj%convergence_info_ispresent) &
268      CALL qes_reset_convergence_info(obj%convergence_info)
269    obj%convergence_info_ispresent = .FALSE.
270    CALL qes_reset_algorithmic_info(obj%algorithmic_info)
271    CALL qes_reset_atomic_species(obj%atomic_species)
272    CALL qes_reset_atomic_structure(obj%atomic_structure)
273    IF (obj%symmetries_ispresent) &
274      CALL qes_reset_symmetries(obj%symmetries)
275    obj%symmetries_ispresent = .FALSE.
276    CALL qes_reset_basis_set(obj%basis_set)
277    CALL qes_reset_dft(obj%dft)
278    IF (obj%boundary_conditions_ispresent) &
279      CALL qes_reset_outputPBC(obj%boundary_conditions)
280    obj%boundary_conditions_ispresent = .FALSE.
281    CALL qes_reset_magnetization(obj%magnetization)
282    CALL qes_reset_total_energy(obj%total_energy)
283    CALL qes_reset_band_structure(obj%band_structure)
284    IF (obj%forces_ispresent) &
285      CALL qes_reset_matrix(obj%forces)
286    obj%forces_ispresent = .FALSE.
287    IF (obj%stress_ispresent) &
288      CALL qes_reset_matrix(obj%stress)
289    obj%stress_ispresent = .FALSE.
290    IF (obj%electric_field_ispresent) &
291      CALL qes_reset_outputElectricField(obj%electric_field)
292    obj%electric_field_ispresent = .FALSE.
293    obj%FCP_force_ispresent = .FALSE.
294    obj%FCP_tot_charge_ispresent = .FALSE.
295    !
296  END SUBROUTINE qes_reset_output
297  !
298  !
299  SUBROUTINE qes_reset_timing(obj)
300    !
301    IMPLICIT NONE
302    TYPE(timing_type),INTENT(INOUT)    :: obj
303    INTEGER :: i
304    !
305    obj%tagname = ""
306    obj%lwrite  = .FALSE.
307    obj%lread  = .FALSE.
308    !
309    CALL qes_reset_clock(obj%total)
310    IF (obj%partial_ispresent) THEN
311      IF (ALLOCATED(obj%partial)) THEN
312        DO i=1, SIZE(obj%partial)
313          CALL qes_reset_clock(obj%partial(i))
314        ENDDO
315        DEALLOCATE(obj%partial)
316      ENDIF
317      obj%ndim_partial = 0
318      obj%partial_ispresent = .FALSE.
319    ENDIF
320    !
321  END SUBROUTINE qes_reset_timing
322  !
323  !
324  SUBROUTINE qes_reset_clock(obj)
325    !
326    IMPLICIT NONE
327    TYPE(clock_type),INTENT(INOUT)    :: obj
328    !
329    obj%tagname = ""
330    obj%lwrite  = .FALSE.
331    obj%lread  = .FALSE.
332    !
333    obj%calls_ispresent = .FALSE.
334    !
335  END SUBROUTINE qes_reset_clock
336  !
337  !
338  SUBROUTINE qes_reset_control_variables(obj)
339    !
340    IMPLICIT NONE
341    TYPE(control_variables_type),INTENT(INOUT)    :: obj
342    !
343    obj%tagname = ""
344    obj%lwrite  = .FALSE.
345    obj%lread  = .FALSE.
346    !
347    obj%nstep_ispresent = .FALSE.
348    !
349  END SUBROUTINE qes_reset_control_variables
350  !
351  !
352  SUBROUTINE qes_reset_xml_format(obj)
353    !
354    IMPLICIT NONE
355    TYPE(xml_format_type),INTENT(INOUT)    :: obj
356    !
357    obj%tagname = ""
358    obj%lwrite  = .FALSE.
359    obj%lread  = .FALSE.
360    !
361    !
362  END SUBROUTINE qes_reset_xml_format
363  !
364  !
365  SUBROUTINE qes_reset_creator(obj)
366    !
367    IMPLICIT NONE
368    TYPE(creator_type),INTENT(INOUT)    :: obj
369    !
370    obj%tagname = ""
371    obj%lwrite  = .FALSE.
372    obj%lread  = .FALSE.
373    !
374    !
375  END SUBROUTINE qes_reset_creator
376  !
377  !
378  SUBROUTINE qes_reset_created(obj)
379    !
380    IMPLICIT NONE
381    TYPE(created_type),INTENT(INOUT)    :: obj
382    !
383    obj%tagname = ""
384    obj%lwrite  = .FALSE.
385    obj%lread  = .FALSE.
386    !
387    !
388  END SUBROUTINE qes_reset_created
389  !
390  !
391  SUBROUTINE qes_reset_atomic_species(obj)
392    !
393    IMPLICIT NONE
394    TYPE(atomic_species_type),INTENT(INOUT)    :: obj
395    INTEGER :: i
396    !
397    obj%tagname = ""
398    obj%lwrite  = .FALSE.
399    obj%lread  = .FALSE.
400    !
401    IF (ALLOCATED(obj%species)) THEN
402      DO i=1, SIZE(obj%species)
403        CALL qes_reset_species(obj%species(i))
404      ENDDO
405      DEALLOCATE(obj%species)
406    ENDIF
407    obj%ndim_species = 0
408    obj%pseudo_dir_ispresent = .FALSE.
409    !
410  END SUBROUTINE qes_reset_atomic_species
411  !
412  !
413  SUBROUTINE qes_reset_species(obj)
414    !
415    IMPLICIT NONE
416    TYPE(species_type),INTENT(INOUT)    :: obj
417    !
418    obj%tagname = ""
419    obj%lwrite  = .FALSE.
420    obj%lread  = .FALSE.
421    !
422    obj%mass_ispresent = .FALSE.
423    obj%starting_magnetization_ispresent = .FALSE.
424    obj%spin_teta_ispresent = .FALSE.
425    obj%spin_phi_ispresent = .FALSE.
426    !
427  END SUBROUTINE qes_reset_species
428  !
429  !
430  SUBROUTINE qes_reset_atomic_structure(obj)
431    !
432    IMPLICIT NONE
433    TYPE(atomic_structure_type),INTENT(INOUT)    :: obj
434    !
435    obj%tagname = ""
436    obj%lwrite  = .FALSE.
437    obj%lread  = .FALSE.
438    !
439    IF (obj%atomic_positions_ispresent) &
440      CALL qes_reset_atomic_positions(obj%atomic_positions)
441    obj%atomic_positions_ispresent = .FALSE.
442    IF (obj%wyckoff_positions_ispresent) &
443      CALL qes_reset_wyckoff_positions(obj%wyckoff_positions)
444    obj%wyckoff_positions_ispresent = .FALSE.
445    IF (obj%crystal_positions_ispresent) &
446      CALL qes_reset_atomic_positions(obj%crystal_positions)
447    obj%crystal_positions_ispresent = .FALSE.
448    CALL qes_reset_cell(obj%cell)
449    obj%alat_ispresent = .FALSE.
450    obj%bravais_index_ispresent = .FALSE.
451    obj%alternative_axes_ispresent = .FALSE.
452    !
453  END SUBROUTINE qes_reset_atomic_structure
454  !
455  !
456  SUBROUTINE qes_reset_atomic_positions(obj)
457    !
458    IMPLICIT NONE
459    TYPE(atomic_positions_type),INTENT(INOUT)    :: obj
460    INTEGER :: i
461    !
462    obj%tagname = ""
463    obj%lwrite  = .FALSE.
464    obj%lread  = .FALSE.
465    !
466    IF (ALLOCATED(obj%atom)) THEN
467      DO i=1, SIZE(obj%atom)
468        CALL qes_reset_atom(obj%atom(i))
469      ENDDO
470      DEALLOCATE(obj%atom)
471    ENDIF
472    obj%ndim_atom = 0
473    !
474  END SUBROUTINE qes_reset_atomic_positions
475  !
476  !
477  SUBROUTINE qes_reset_atom(obj)
478    !
479    IMPLICIT NONE
480    TYPE(atom_type),INTENT(INOUT)    :: obj
481    !
482    obj%tagname = ""
483    obj%lwrite  = .FALSE.
484    obj%lread  = .FALSE.
485    !
486    obj%position_ispresent = .FALSE.
487    obj%index_ispresent = .FALSE.
488    !
489  END SUBROUTINE qes_reset_atom
490  !
491  !
492  SUBROUTINE qes_reset_wyckoff_positions(obj)
493    !
494    IMPLICIT NONE
495    TYPE(wyckoff_positions_type),INTENT(INOUT)    :: obj
496    INTEGER :: i
497    !
498    obj%tagname = ""
499    obj%lwrite  = .FALSE.
500    obj%lread  = .FALSE.
501    !
502    IF (ALLOCATED(obj%atom)) THEN
503      DO i=1, SIZE(obj%atom)
504        CALL qes_reset_atom(obj%atom(i))
505      ENDDO
506      DEALLOCATE(obj%atom)
507    ENDIF
508    obj%ndim_atom = 0
509    obj%more_options_ispresent = .FALSE.
510    !
511  END SUBROUTINE qes_reset_wyckoff_positions
512  !
513  !
514  SUBROUTINE qes_reset_cell(obj)
515    !
516    IMPLICIT NONE
517    TYPE(cell_type),INTENT(INOUT)    :: obj
518    !
519    obj%tagname = ""
520    obj%lwrite  = .FALSE.
521    obj%lread  = .FALSE.
522    !
523    !
524  END SUBROUTINE qes_reset_cell
525  !
526  !
527  SUBROUTINE qes_reset_dft(obj)
528    !
529    IMPLICIT NONE
530    TYPE(dft_type),INTENT(INOUT)    :: obj
531    !
532    obj%tagname = ""
533    obj%lwrite  = .FALSE.
534    obj%lread  = .FALSE.
535    !
536    IF (obj%hybrid_ispresent) &
537      CALL qes_reset_hybrid(obj%hybrid)
538    obj%hybrid_ispresent = .FALSE.
539    IF (obj%dftU_ispresent) &
540      CALL qes_reset_dftU(obj%dftU)
541    obj%dftU_ispresent = .FALSE.
542    IF (obj%vdW_ispresent) &
543      CALL qes_reset_vdW(obj%vdW)
544    obj%vdW_ispresent = .FALSE.
545    !
546  END SUBROUTINE qes_reset_dft
547  !
548  !
549  SUBROUTINE qes_reset_hybrid(obj)
550    !
551    IMPLICIT NONE
552    TYPE(hybrid_type),INTENT(INOUT)    :: obj
553    !
554    obj%tagname = ""
555    obj%lwrite  = .FALSE.
556    obj%lread  = .FALSE.
557    !
558    IF (obj%qpoint_grid_ispresent) &
559      CALL qes_reset_qpoint_grid(obj%qpoint_grid)
560    obj%qpoint_grid_ispresent = .FALSE.
561    obj%ecutfock_ispresent = .FALSE.
562    obj%exx_fraction_ispresent = .FALSE.
563    obj%screening_parameter_ispresent = .FALSE.
564    obj%exxdiv_treatment_ispresent = .FALSE.
565    obj%x_gamma_extrapolation_ispresent = .FALSE.
566    obj%ecutvcut_ispresent = .FALSE.
567    obj%localization_threshold_ispresent = .FALSE.
568    !
569  END SUBROUTINE qes_reset_hybrid
570  !
571  !
572  SUBROUTINE qes_reset_qpoint_grid(obj)
573    !
574    IMPLICIT NONE
575    TYPE(qpoint_grid_type),INTENT(INOUT)    :: obj
576    !
577    obj%tagname = ""
578    obj%lwrite  = .FALSE.
579    obj%lread  = .FALSE.
580    !
581    !
582  END SUBROUTINE qes_reset_qpoint_grid
583  !
584  !
585  SUBROUTINE qes_reset_dftU(obj)
586    !
587    IMPLICIT NONE
588    TYPE(dftU_type),INTENT(INOUT)    :: obj
589    INTEGER :: i
590    !
591    obj%tagname = ""
592    obj%lwrite  = .FALSE.
593    obj%lread  = .FALSE.
594    !
595    obj%lda_plus_u_kind_ispresent = .FALSE.
596    IF (obj%Hubbard_U_ispresent) THEN
597      IF (ALLOCATED(obj%Hubbard_U)) THEN
598        DO i=1, SIZE(obj%Hubbard_U)
599          CALL qes_reset_HubbardCommon(obj%Hubbard_U(i))
600        ENDDO
601        DEALLOCATE(obj%Hubbard_U)
602      ENDIF
603      obj%ndim_Hubbard_U = 0
604      obj%Hubbard_U_ispresent = .FALSE.
605    ENDIF
606    IF (obj%Hubbard_J0_ispresent) THEN
607      IF (ALLOCATED(obj%Hubbard_J0)) THEN
608        DO i=1, SIZE(obj%Hubbard_J0)
609          CALL qes_reset_HubbardCommon(obj%Hubbard_J0(i))
610        ENDDO
611        DEALLOCATE(obj%Hubbard_J0)
612      ENDIF
613      obj%ndim_Hubbard_J0 = 0
614      obj%Hubbard_J0_ispresent = .FALSE.
615    ENDIF
616    IF (obj%Hubbard_alpha_ispresent) THEN
617      IF (ALLOCATED(obj%Hubbard_alpha)) THEN
618        DO i=1, SIZE(obj%Hubbard_alpha)
619          CALL qes_reset_HubbardCommon(obj%Hubbard_alpha(i))
620        ENDDO
621        DEALLOCATE(obj%Hubbard_alpha)
622      ENDIF
623      obj%ndim_Hubbard_alpha = 0
624      obj%Hubbard_alpha_ispresent = .FALSE.
625    ENDIF
626    IF (obj%Hubbard_beta_ispresent) THEN
627      IF (ALLOCATED(obj%Hubbard_beta)) THEN
628        DO i=1, SIZE(obj%Hubbard_beta)
629          CALL qes_reset_HubbardCommon(obj%Hubbard_beta(i))
630        ENDDO
631        DEALLOCATE(obj%Hubbard_beta)
632      ENDIF
633      obj%ndim_Hubbard_beta = 0
634      obj%Hubbard_beta_ispresent = .FALSE.
635    ENDIF
636    IF (obj%Hubbard_J_ispresent) THEN
637      IF (ALLOCATED(obj%Hubbard_J)) THEN
638        DO i=1, SIZE(obj%Hubbard_J)
639          CALL qes_reset_HubbardJ(obj%Hubbard_J(i))
640        ENDDO
641        DEALLOCATE(obj%Hubbard_J)
642      ENDIF
643      obj%ndim_Hubbard_J = 0
644      obj%Hubbard_J_ispresent = .FALSE.
645    ENDIF
646    IF (obj%starting_ns_ispresent) THEN
647      IF (ALLOCATED(obj%starting_ns)) THEN
648        DO i=1, SIZE(obj%starting_ns)
649          CALL qes_reset_starting_ns(obj%starting_ns(i))
650        ENDDO
651        DEALLOCATE(obj%starting_ns)
652      ENDIF
653      obj%ndim_starting_ns = 0
654      obj%starting_ns_ispresent = .FALSE.
655    ENDIF
656    IF (obj%Hubbard_ns_ispresent) THEN
657      IF (ALLOCATED(obj%Hubbard_ns)) THEN
658        DO i=1, SIZE(obj%Hubbard_ns)
659          CALL qes_reset_Hubbard_ns(obj%Hubbard_ns(i))
660        ENDDO
661        DEALLOCATE(obj%Hubbard_ns)
662      ENDIF
663      obj%ndim_Hubbard_ns = 0
664      obj%Hubbard_ns_ispresent = .FALSE.
665    ENDIF
666    obj%U_projection_type_ispresent = .FALSE.
667    IF (obj%Hubbard_back_ispresent) THEN
668      IF (ALLOCATED(obj%Hubbard_back)) THEN
669        DO i=1, SIZE(obj%Hubbard_back)
670          CALL qes_reset_HubbardBack(obj%Hubbard_back(i))
671        ENDDO
672        DEALLOCATE(obj%Hubbard_back)
673      ENDIF
674      obj%ndim_Hubbard_back = 0
675      obj%Hubbard_back_ispresent = .FALSE.
676    ENDIF
677    IF (obj%Hubbard_U_back_ispresent) THEN
678      IF (ALLOCATED(obj%Hubbard_U_back)) THEN
679        DO i=1, SIZE(obj%Hubbard_U_back)
680          CALL qes_reset_HubbardCommon(obj%Hubbard_U_back(i))
681        ENDDO
682        DEALLOCATE(obj%Hubbard_U_back)
683      ENDIF
684      obj%ndim_Hubbard_U_back = 0
685      obj%Hubbard_U_back_ispresent = .FALSE.
686    ENDIF
687    IF (obj%Hubbard_alpha_back_ispresent) THEN
688      IF (ALLOCATED(obj%Hubbard_alpha_back)) THEN
689        DO i=1, SIZE(obj%Hubbard_alpha_back)
690          CALL qes_reset_HubbardCommon(obj%Hubbard_alpha_back(i))
691        ENDDO
692        DEALLOCATE(obj%Hubbard_alpha_back)
693      ENDIF
694      obj%ndim_Hubbard_alpha_back = 0
695      obj%Hubbard_alpha_back_ispresent = .FALSE.
696    ENDIF
697    IF (obj%Hubbard_ns_nc_ispresent) THEN
698      IF (ALLOCATED(obj%Hubbard_ns_nc)) THEN
699        DO i=1, SIZE(obj%Hubbard_ns_nc)
700          CALL qes_reset_Hubbard_ns(obj%Hubbard_ns_nc(i))
701        ENDDO
702        DEALLOCATE(obj%Hubbard_ns_nc)
703      ENDIF
704      obj%ndim_Hubbard_ns_nc = 0
705      obj%Hubbard_ns_nc_ispresent = .FALSE.
706    ENDIF
707    !
708  END SUBROUTINE qes_reset_dftU
709  !
710  !
711  SUBROUTINE qes_reset_HubbardCommon(obj)
712    !
713    IMPLICIT NONE
714    TYPE(HubbardCommon_type),INTENT(INOUT)    :: obj
715    !
716    obj%tagname = ""
717    obj%lwrite  = .FALSE.
718    obj%lread  = .FALSE.
719    !
720    obj%label_ispresent = .FALSE.
721    !
722  END SUBROUTINE qes_reset_HubbardCommon
723  !
724  !
725  SUBROUTINE qes_reset_HubbardJ(obj)
726    !
727    IMPLICIT NONE
728    TYPE(HubbardJ_type),INTENT(INOUT)    :: obj
729    !
730    obj%tagname = ""
731    obj%lwrite  = .FALSE.
732    obj%lread  = .FALSE.
733    !
734    !
735  END SUBROUTINE qes_reset_HubbardJ
736  !
737  !
738  SUBROUTINE qes_reset_starting_ns(obj)
739    !
740    IMPLICIT NONE
741    TYPE(starting_ns_type),INTENT(INOUT)    :: obj
742    !
743    obj%tagname = ""
744    obj%lwrite  = .FALSE.
745    obj%lread  = .FALSE.
746    !
747    obj%size = 0
748    IF (ALLOCATED(obj%starting_ns)) THEN
749      DEALLOCATE(obj%starting_ns)
750    ENDIF
751    !
752  END SUBROUTINE qes_reset_starting_ns
753  !
754  !
755  SUBROUTINE qes_reset_Hubbard_ns(obj)
756    !
757    IMPLICIT NONE
758    TYPE(Hubbard_ns_type),INTENT(INOUT)    :: obj
759    !
760    obj%tagname = ""
761    obj%lwrite  = .FALSE.
762    obj%lread  = .FALSE.
763    !
764    IF (ALLOCATED(obj%dims)) THEN
765      DEALLOCATE(obj%dims)
766    ENDIF
767    obj%rank = 0
768    obj%order = 'F'
769    IF (ALLOCATED(obj%Hubbard_ns)) THEN
770      DEALLOCATE(obj%Hubbard_ns)
771    ENDIF
772    !
773  END SUBROUTINE qes_reset_Hubbard_ns
774  !
775  !
776  SUBROUTINE qes_reset_HubbardBack(obj)
777    !
778    IMPLICIT NONE
779    TYPE(HubbardBack_type),INTENT(INOUT)    :: obj
780    INTEGER :: i
781    !
782    obj%tagname = ""
783    obj%lwrite  = .FALSE.
784    obj%lread  = .FALSE.
785    !
786    IF (ALLOCATED(obj%l_number)) THEN
787      DO i=1, SIZE(obj%l_number)
788        CALL qes_reset_backL(obj%l_number(i))
789      ENDDO
790      DEALLOCATE(obj%l_number)
791    ENDIF
792    obj%ndim_l_number = 0
793    !
794  END SUBROUTINE qes_reset_HubbardBack
795  !
796  !
797  SUBROUTINE qes_reset_backL(obj)
798    !
799    IMPLICIT NONE
800    TYPE(backL_type),INTENT(INOUT)    :: obj
801    !
802    obj%tagname = ""
803    obj%lwrite  = .FALSE.
804    obj%lread  = .FALSE.
805    !
806    !
807  END SUBROUTINE qes_reset_backL
808  !
809  !
810  SUBROUTINE qes_reset_vdW(obj)
811    !
812    IMPLICIT NONE
813    TYPE(vdW_type),INTENT(INOUT)    :: obj
814    INTEGER :: i
815    !
816    obj%tagname = ""
817    obj%lwrite  = .FALSE.
818    obj%lread  = .FALSE.
819    !
820    obj%vdw_corr_ispresent = .FALSE.
821    obj%dftd3_version_ispresent = .FALSE.
822    obj%dftd3_threebody_ispresent = .FALSE.
823    obj%non_local_term_ispresent = .FALSE.
824    obj%functional_ispresent = .FALSE.
825    obj%total_energy_term_ispresent = .FALSE.
826    obj%london_s6_ispresent = .FALSE.
827    obj%ts_vdw_econv_thr_ispresent = .FALSE.
828    obj%ts_vdw_isolated_ispresent = .FALSE.
829    obj%london_rcut_ispresent = .FALSE.
830    obj%xdm_a1_ispresent = .FALSE.
831    obj%xdm_a2_ispresent = .FALSE.
832    IF (obj%london_c6_ispresent) THEN
833      IF (ALLOCATED(obj%london_c6)) THEN
834        DO i=1, SIZE(obj%london_c6)
835          CALL qes_reset_HubbardCommon(obj%london_c6(i))
836        ENDDO
837        DEALLOCATE(obj%london_c6)
838      ENDIF
839      obj%ndim_london_c6 = 0
840      obj%london_c6_ispresent = .FALSE.
841    ENDIF
842    !
843  END SUBROUTINE qes_reset_vdW
844  !
845  !
846  SUBROUTINE qes_reset_spin(obj)
847    !
848    IMPLICIT NONE
849    TYPE(spin_type),INTENT(INOUT)    :: obj
850    !
851    obj%tagname = ""
852    obj%lwrite  = .FALSE.
853    obj%lread  = .FALSE.
854    !
855    !
856  END SUBROUTINE qes_reset_spin
857  !
858  !
859  SUBROUTINE qes_reset_bands(obj)
860    !
861    IMPLICIT NONE
862    TYPE(bands_type),INTENT(INOUT)    :: obj
863    INTEGER :: i
864    !
865    obj%tagname = ""
866    obj%lwrite  = .FALSE.
867    obj%lread  = .FALSE.
868    !
869    obj%nbnd_ispresent = .FALSE.
870    IF (obj%smearing_ispresent) &
871      CALL qes_reset_smearing(obj%smearing)
872    obj%smearing_ispresent = .FALSE.
873    obj%tot_charge_ispresent = .FALSE.
874    obj%tot_magnetization_ispresent = .FALSE.
875    CALL qes_reset_occupations(obj%occupations)
876    IF (obj%inputOccupations_ispresent) THEN
877      IF (ALLOCATED(obj%inputOccupations)) THEN
878        DO i=1, SIZE(obj%inputOccupations)
879          CALL qes_reset_inputOccupations(obj%inputOccupations(i))
880        ENDDO
881        DEALLOCATE(obj%inputOccupations)
882      ENDIF
883      obj%ndim_inputOccupations = 0
884      obj%inputOccupations_ispresent = .FALSE.
885    ENDIF
886    !
887  END SUBROUTINE qes_reset_bands
888  !
889  !
890  SUBROUTINE qes_reset_smearing(obj)
891    !
892    IMPLICIT NONE
893    TYPE(smearing_type),INTENT(INOUT)    :: obj
894    !
895    obj%tagname = ""
896    obj%lwrite  = .FALSE.
897    obj%lread  = .FALSE.
898    !
899    !
900  END SUBROUTINE qes_reset_smearing
901  !
902  !
903  SUBROUTINE qes_reset_occupations(obj)
904    !
905    IMPLICIT NONE
906    TYPE(occupations_type),INTENT(INOUT)    :: obj
907    !
908    obj%tagname = ""
909    obj%lwrite  = .FALSE.
910    obj%lread  = .FALSE.
911    !
912    obj%spin_ispresent = .FALSE.
913    !
914  END SUBROUTINE qes_reset_occupations
915  !
916  !
917  SUBROUTINE qes_reset_basis(obj)
918    !
919    IMPLICIT NONE
920    TYPE(basis_type),INTENT(INOUT)    :: obj
921    !
922    obj%tagname = ""
923    obj%lwrite  = .FALSE.
924    obj%lread  = .FALSE.
925    !
926    obj%gamma_only_ispresent = .FALSE.
927    obj%ecutrho_ispresent = .FALSE.
928    IF (obj%fft_grid_ispresent) &
929      CALL qes_reset_basisSetItem(obj%fft_grid)
930    obj%fft_grid_ispresent = .FALSE.
931    IF (obj%fft_smooth_ispresent) &
932      CALL qes_reset_basisSetItem(obj%fft_smooth)
933    obj%fft_smooth_ispresent = .FALSE.
934    IF (obj%fft_box_ispresent) &
935      CALL qes_reset_basisSetItem(obj%fft_box)
936    obj%fft_box_ispresent = .FALSE.
937    !
938  END SUBROUTINE qes_reset_basis
939  !
940  !
941  SUBROUTINE qes_reset_basis_set(obj)
942    !
943    IMPLICIT NONE
944    TYPE(basis_set_type),INTENT(INOUT)    :: obj
945    !
946    obj%tagname = ""
947    obj%lwrite  = .FALSE.
948    obj%lread  = .FALSE.
949    !
950    obj%gamma_only_ispresent = .FALSE.
951    obj%ecutrho_ispresent = .FALSE.
952    CALL qes_reset_basisSetItem(obj%fft_grid)
953    IF (obj%fft_smooth_ispresent) &
954      CALL qes_reset_basisSetItem(obj%fft_smooth)
955    obj%fft_smooth_ispresent = .FALSE.
956    IF (obj%fft_box_ispresent) &
957      CALL qes_reset_basisSetItem(obj%fft_box)
958    obj%fft_box_ispresent = .FALSE.
959    obj%ngms_ispresent = .FALSE.
960    CALL qes_reset_reciprocal_lattice(obj%reciprocal_lattice)
961    !
962  END SUBROUTINE qes_reset_basis_set
963  !
964  !
965  SUBROUTINE qes_reset_basisSetItem(obj)
966    !
967    IMPLICIT NONE
968    TYPE(basisSetItem_type),INTENT(INOUT)    :: obj
969    !
970    obj%tagname = ""
971    obj%lwrite  = .FALSE.
972    obj%lread  = .FALSE.
973    !
974    !
975  END SUBROUTINE qes_reset_basisSetItem
976  !
977  !
978  SUBROUTINE qes_reset_reciprocal_lattice(obj)
979    !
980    IMPLICIT NONE
981    TYPE(reciprocal_lattice_type),INTENT(INOUT)    :: obj
982    !
983    obj%tagname = ""
984    obj%lwrite  = .FALSE.
985    obj%lread  = .FALSE.
986    !
987    !
988  END SUBROUTINE qes_reset_reciprocal_lattice
989  !
990  !
991  SUBROUTINE qes_reset_electron_control(obj)
992    !
993    IMPLICIT NONE
994    TYPE(electron_control_type),INTENT(INOUT)    :: obj
995    !
996    obj%tagname = ""
997    obj%lwrite  = .FALSE.
998    obj%lread  = .FALSE.
999    !
1000    obj%real_space_q_ispresent = .FALSE.
1001    obj%real_space_beta_ispresent = .FALSE.
1002    obj%diago_cg_maxiter_ispresent = .FALSE.
1003    obj%diago_ppcg_maxiter_ispresent = .FALSE.
1004    obj%diago_david_ndim_ispresent = .FALSE.
1005    !
1006  END SUBROUTINE qes_reset_electron_control
1007  !
1008  !
1009  SUBROUTINE qes_reset_k_points_IBZ(obj)
1010    !
1011    IMPLICIT NONE
1012    TYPE(k_points_IBZ_type),INTENT(INOUT)    :: obj
1013    INTEGER :: i
1014    !
1015    obj%tagname = ""
1016    obj%lwrite  = .FALSE.
1017    obj%lread  = .FALSE.
1018    !
1019    IF (obj%monkhorst_pack_ispresent) &
1020      CALL qes_reset_monkhorst_pack(obj%monkhorst_pack)
1021    obj%monkhorst_pack_ispresent = .FALSE.
1022    obj%nk_ispresent = .FALSE.
1023    IF (obj%k_point_ispresent) THEN
1024      IF (ALLOCATED(obj%k_point)) THEN
1025        DO i=1, SIZE(obj%k_point)
1026          CALL qes_reset_k_point(obj%k_point(i))
1027        ENDDO
1028        DEALLOCATE(obj%k_point)
1029      ENDIF
1030      obj%ndim_k_point = 0
1031      obj%k_point_ispresent = .FALSE.
1032    ENDIF
1033    !
1034  END SUBROUTINE qes_reset_k_points_IBZ
1035  !
1036  !
1037  SUBROUTINE qes_reset_monkhorst_pack(obj)
1038    !
1039    IMPLICIT NONE
1040    TYPE(monkhorst_pack_type),INTENT(INOUT)    :: obj
1041    !
1042    obj%tagname = ""
1043    obj%lwrite  = .FALSE.
1044    obj%lread  = .FALSE.
1045    !
1046    !
1047  END SUBROUTINE qes_reset_monkhorst_pack
1048  !
1049  !
1050  SUBROUTINE qes_reset_k_point(obj)
1051    !
1052    IMPLICIT NONE
1053    TYPE(k_point_type),INTENT(INOUT)    :: obj
1054    !
1055    obj%tagname = ""
1056    obj%lwrite  = .FALSE.
1057    obj%lread  = .FALSE.
1058    !
1059    obj%weight_ispresent = .FALSE.
1060    obj%label_ispresent = .FALSE.
1061    !
1062  END SUBROUTINE qes_reset_k_point
1063  !
1064  !
1065  SUBROUTINE qes_reset_ion_control(obj)
1066    !
1067    IMPLICIT NONE
1068    TYPE(ion_control_type),INTENT(INOUT)    :: obj
1069    !
1070    obj%tagname = ""
1071    obj%lwrite  = .FALSE.
1072    obj%lread  = .FALSE.
1073    !
1074    obj%upscale_ispresent = .FALSE.
1075    obj%remove_rigid_rot_ispresent = .FALSE.
1076    obj%refold_pos_ispresent = .FALSE.
1077    IF (obj%bfgs_ispresent) &
1078      CALL qes_reset_bfgs(obj%bfgs)
1079    obj%bfgs_ispresent = .FALSE.
1080    IF (obj%md_ispresent) &
1081      CALL qes_reset_md(obj%md)
1082    obj%md_ispresent = .FALSE.
1083    !
1084  END SUBROUTINE qes_reset_ion_control
1085  !
1086  !
1087  SUBROUTINE qes_reset_bfgs(obj)
1088    !
1089    IMPLICIT NONE
1090    TYPE(bfgs_type),INTENT(INOUT)    :: obj
1091    !
1092    obj%tagname = ""
1093    obj%lwrite  = .FALSE.
1094    obj%lread  = .FALSE.
1095    !
1096    !
1097  END SUBROUTINE qes_reset_bfgs
1098  !
1099  !
1100  SUBROUTINE qes_reset_md(obj)
1101    !
1102    IMPLICIT NONE
1103    TYPE(md_type),INTENT(INOUT)    :: obj
1104    !
1105    obj%tagname = ""
1106    obj%lwrite  = .FALSE.
1107    obj%lread  = .FALSE.
1108    !
1109    !
1110  END SUBROUTINE qes_reset_md
1111  !
1112  !
1113  SUBROUTINE qes_reset_cell_control(obj)
1114    !
1115    IMPLICIT NONE
1116    TYPE(cell_control_type),INTENT(INOUT)    :: obj
1117    !
1118    obj%tagname = ""
1119    obj%lwrite  = .FALSE.
1120    obj%lread  = .FALSE.
1121    !
1122    obj%wmass_ispresent = .FALSE.
1123    obj%cell_factor_ispresent = .FALSE.
1124    obj%fix_volume_ispresent = .FALSE.
1125    obj%fix_area_ispresent = .FALSE.
1126    obj%isotropic_ispresent = .FALSE.
1127    IF (obj%free_cell_ispresent) &
1128      CALL qes_reset_integerMatrix(obj%free_cell)
1129    obj%free_cell_ispresent = .FALSE.
1130    !
1131  END SUBROUTINE qes_reset_cell_control
1132  !
1133  !
1134  SUBROUTINE qes_reset_symmetry_flags(obj)
1135    !
1136    IMPLICIT NONE
1137    TYPE(symmetry_flags_type),INTENT(INOUT)    :: obj
1138    !
1139    obj%tagname = ""
1140    obj%lwrite  = .FALSE.
1141    obj%lread  = .FALSE.
1142    !
1143    !
1144  END SUBROUTINE qes_reset_symmetry_flags
1145  !
1146  !
1147  SUBROUTINE qes_reset_boundary_conditions(obj)
1148    !
1149    IMPLICIT NONE
1150    TYPE(boundary_conditions_type),INTENT(INOUT)    :: obj
1151    !
1152    obj%tagname = ""
1153    obj%lwrite  = .FALSE.
1154    obj%lread  = .FALSE.
1155    !
1156    IF (obj%esm_ispresent) &
1157      CALL qes_reset_esm(obj%esm)
1158    obj%esm_ispresent = .FALSE.
1159    obj%fcp_opt_ispresent = .FALSE.
1160    obj%fcp_mu_ispresent = .FALSE.
1161    !
1162  END SUBROUTINE qes_reset_boundary_conditions
1163  !
1164  !
1165  SUBROUTINE qes_reset_esm(obj)
1166    !
1167    IMPLICIT NONE
1168    TYPE(esm_type),INTENT(INOUT)    :: obj
1169    !
1170    obj%tagname = ""
1171    obj%lwrite  = .FALSE.
1172    obj%lread  = .FALSE.
1173    !
1174    !
1175  END SUBROUTINE qes_reset_esm
1176  !
1177  !
1178  SUBROUTINE qes_reset_ekin_functional(obj)
1179    !
1180    IMPLICIT NONE
1181    TYPE(ekin_functional_type),INTENT(INOUT)    :: obj
1182    !
1183    obj%tagname = ""
1184    obj%lwrite  = .FALSE.
1185    obj%lread  = .FALSE.
1186    !
1187    !
1188  END SUBROUTINE qes_reset_ekin_functional
1189  !
1190  !
1191  SUBROUTINE qes_reset_spin_constraints(obj)
1192    !
1193    IMPLICIT NONE
1194    TYPE(spin_constraints_type),INTENT(INOUT)    :: obj
1195    !
1196    obj%tagname = ""
1197    obj%lwrite  = .FALSE.
1198    obj%lread  = .FALSE.
1199    !
1200    obj%target_magnetization_ispresent = .FALSE.
1201    !
1202  END SUBROUTINE qes_reset_spin_constraints
1203  !
1204  !
1205  SUBROUTINE qes_reset_electric_field(obj)
1206    !
1207    IMPLICIT NONE
1208    TYPE(electric_field_type),INTENT(INOUT)    :: obj
1209    !
1210    obj%tagname = ""
1211    obj%lwrite  = .FALSE.
1212    obj%lread  = .FALSE.
1213    !
1214    obj%dipole_correction_ispresent = .FALSE.
1215    IF (obj%gate_settings_ispresent) &
1216      CALL qes_reset_gate_settings(obj%gate_settings)
1217    obj%gate_settings_ispresent = .FALSE.
1218    obj%electric_field_direction_ispresent = .FALSE.
1219    obj%potential_max_position_ispresent = .FALSE.
1220    obj%potential_decrease_width_ispresent = .FALSE.
1221    obj%electric_field_amplitude_ispresent = .FALSE.
1222    obj%electric_field_vector_ispresent = .FALSE.
1223    obj%nk_per_string_ispresent = .FALSE.
1224    obj%n_berry_cycles_ispresent = .FALSE.
1225    !
1226  END SUBROUTINE qes_reset_electric_field
1227  !
1228  !
1229  SUBROUTINE qes_reset_gate_settings(obj)
1230    !
1231    IMPLICIT NONE
1232    TYPE(gate_settings_type),INTENT(INOUT)    :: obj
1233    !
1234    obj%tagname = ""
1235    obj%lwrite  = .FALSE.
1236    obj%lread  = .FALSE.
1237    !
1238    obj%zgate_ispresent = .FALSE.
1239    obj%relaxz_ispresent = .FALSE.
1240    obj%block_ispresent = .FALSE.
1241    obj%block_1_ispresent = .FALSE.
1242    obj%block_2_ispresent = .FALSE.
1243    obj%block_height_ispresent = .FALSE.
1244    !
1245  END SUBROUTINE qes_reset_gate_settings
1246  !
1247  !
1248  SUBROUTINE qes_reset_atomic_constraints(obj)
1249    !
1250    IMPLICIT NONE
1251    TYPE(atomic_constraints_type),INTENT(INOUT)    :: obj
1252    INTEGER :: i
1253    !
1254    obj%tagname = ""
1255    obj%lwrite  = .FALSE.
1256    obj%lread  = .FALSE.
1257    !
1258    IF (ALLOCATED(obj%atomic_constraint)) THEN
1259      DO i=1, SIZE(obj%atomic_constraint)
1260        CALL qes_reset_atomic_constraint(obj%atomic_constraint(i))
1261      ENDDO
1262      DEALLOCATE(obj%atomic_constraint)
1263    ENDIF
1264    obj%ndim_atomic_constraint = 0
1265    !
1266  END SUBROUTINE qes_reset_atomic_constraints
1267  !
1268  !
1269  SUBROUTINE qes_reset_atomic_constraint(obj)
1270    !
1271    IMPLICIT NONE
1272    TYPE(atomic_constraint_type),INTENT(INOUT)    :: obj
1273    !
1274    obj%tagname = ""
1275    obj%lwrite  = .FALSE.
1276    obj%lread  = .FALSE.
1277    !
1278    !
1279  END SUBROUTINE qes_reset_atomic_constraint
1280  !
1281  !
1282  SUBROUTINE qes_reset_inputOccupations(obj)
1283    !
1284    IMPLICIT NONE
1285    TYPE(inputOccupations_type),INTENT(INOUT)    :: obj
1286    !
1287    obj%tagname = ""
1288    obj%lwrite  = .FALSE.
1289    obj%lread  = .FALSE.
1290    !
1291    obj%size = 0
1292    IF (ALLOCATED(obj%inputOccupations)) THEN
1293      DEALLOCATE(obj%inputOccupations)
1294    ENDIF
1295    !
1296  END SUBROUTINE qes_reset_inputOccupations
1297  !
1298  !
1299  SUBROUTINE qes_reset_outputElectricField(obj)
1300    !
1301    IMPLICIT NONE
1302    TYPE(outputElectricField_type),INTENT(INOUT)    :: obj
1303    !
1304    obj%tagname = ""
1305    obj%lwrite  = .FALSE.
1306    obj%lread  = .FALSE.
1307    !
1308    IF (obj%BerryPhase_ispresent) &
1309      CALL qes_reset_BerryPhaseOutput(obj%BerryPhase)
1310    obj%BerryPhase_ispresent = .FALSE.
1311    IF (obj%finiteElectricFieldInfo_ispresent) &
1312      CALL qes_reset_finiteFieldOut(obj%finiteElectricFieldInfo)
1313    obj%finiteElectricFieldInfo_ispresent = .FALSE.
1314    IF (obj%dipoleInfo_ispresent) &
1315      CALL qes_reset_dipoleOutput(obj%dipoleInfo)
1316    obj%dipoleInfo_ispresent = .FALSE.
1317    IF (obj%gateInfo_ispresent) &
1318      CALL qes_reset_gateInfo(obj%gateInfo)
1319    obj%gateInfo_ispresent = .FALSE.
1320    !
1321  END SUBROUTINE qes_reset_outputElectricField
1322  !
1323  !
1324  SUBROUTINE qes_reset_BerryPhaseOutput(obj)
1325    !
1326    IMPLICIT NONE
1327    TYPE(BerryPhaseOutput_type),INTENT(INOUT)    :: obj
1328    INTEGER :: i
1329    !
1330    obj%tagname = ""
1331    obj%lwrite  = .FALSE.
1332    obj%lread  = .FALSE.
1333    !
1334    CALL qes_reset_polarization(obj%totalPolarization)
1335    CALL qes_reset_phase(obj%totalPhase)
1336    IF (ALLOCATED(obj%ionicPolarization)) THEN
1337      DO i=1, SIZE(obj%ionicPolarization)
1338        CALL qes_reset_ionicPolarization(obj%ionicPolarization(i))
1339      ENDDO
1340      DEALLOCATE(obj%ionicPolarization)
1341    ENDIF
1342    obj%ndim_ionicPolarization = 0
1343    IF (ALLOCATED(obj%electronicPolarization)) THEN
1344      DO i=1, SIZE(obj%electronicPolarization)
1345        CALL qes_reset_electronicPolarization(obj%electronicPolarization(i))
1346      ENDDO
1347      DEALLOCATE(obj%electronicPolarization)
1348    ENDIF
1349    obj%ndim_electronicPolarization = 0
1350    !
1351  END SUBROUTINE qes_reset_BerryPhaseOutput
1352  !
1353  !
1354  SUBROUTINE qes_reset_dipoleOutput(obj)
1355    !
1356    IMPLICIT NONE
1357    TYPE(dipoleOutput_type),INTENT(INOUT)    :: obj
1358    !
1359    obj%tagname = ""
1360    obj%lwrite  = .FALSE.
1361    obj%lread  = .FALSE.
1362    !
1363    CALL qes_reset_scalarQuantity(obj%dipole)
1364    CALL qes_reset_scalarQuantity(obj%ion_dipole)
1365    CALL qes_reset_scalarQuantity(obj%elec_dipole)
1366    CALL qes_reset_scalarQuantity(obj%dipoleField)
1367    CALL qes_reset_scalarQuantity(obj%potentialAmp)
1368    CALL qes_reset_scalarQuantity(obj%totalLength)
1369    !
1370  END SUBROUTINE qes_reset_dipoleOutput
1371  !
1372  !
1373  SUBROUTINE qes_reset_finiteFieldOut(obj)
1374    !
1375    IMPLICIT NONE
1376    TYPE(finiteFieldOut_type),INTENT(INOUT)    :: obj
1377    !
1378    obj%tagname = ""
1379    obj%lwrite  = .FALSE.
1380    obj%lread  = .FALSE.
1381    !
1382    !
1383  END SUBROUTINE qes_reset_finiteFieldOut
1384  !
1385  !
1386  SUBROUTINE qes_reset_polarization(obj)
1387    !
1388    IMPLICIT NONE
1389    TYPE(polarization_type),INTENT(INOUT)    :: obj
1390    !
1391    obj%tagname = ""
1392    obj%lwrite  = .FALSE.
1393    obj%lread  = .FALSE.
1394    !
1395    CALL qes_reset_scalarQuantity(obj%polarization)
1396    !
1397  END SUBROUTINE qes_reset_polarization
1398  !
1399  !
1400  SUBROUTINE qes_reset_ionicPolarization(obj)
1401    !
1402    IMPLICIT NONE
1403    TYPE(ionicPolarization_type),INTENT(INOUT)    :: obj
1404    !
1405    obj%tagname = ""
1406    obj%lwrite  = .FALSE.
1407    obj%lread  = .FALSE.
1408    !
1409    CALL qes_reset_atom(obj%ion)
1410    CALL qes_reset_phase(obj%phase)
1411    !
1412  END SUBROUTINE qes_reset_ionicPolarization
1413  !
1414  !
1415  SUBROUTINE qes_reset_electronicPolarization(obj)
1416    !
1417    IMPLICIT NONE
1418    TYPE(electronicPolarization_type),INTENT(INOUT)    :: obj
1419    !
1420    obj%tagname = ""
1421    obj%lwrite  = .FALSE.
1422    obj%lread  = .FALSE.
1423    !
1424    CALL qes_reset_k_point(obj%firstKeyPoint)
1425    obj%spin_ispresent = .FALSE.
1426    CALL qes_reset_phase(obj%phase)
1427    !
1428  END SUBROUTINE qes_reset_electronicPolarization
1429  !
1430  !
1431  SUBROUTINE qes_reset_phase(obj)
1432    !
1433    IMPLICIT NONE
1434    TYPE(phase_type),INTENT(INOUT)    :: obj
1435    !
1436    obj%tagname = ""
1437    obj%lwrite  = .FALSE.
1438    obj%lread  = .FALSE.
1439    !
1440    obj%ionic_ispresent = .FALSE.
1441    obj%electronic_ispresent = .FALSE.
1442    obj%modulus_ispresent = .FALSE.
1443    !
1444  END SUBROUTINE qes_reset_phase
1445  !
1446  !
1447  SUBROUTINE qes_reset_gateInfo(obj)
1448    !
1449    IMPLICIT NONE
1450    TYPE(gateInfo_type),INTENT(INOUT)    :: obj
1451    !
1452    obj%tagname = ""
1453    obj%lwrite  = .FALSE.
1454    obj%lread  = .FALSE.
1455    !
1456    !
1457  END SUBROUTINE qes_reset_gateInfo
1458  !
1459  !
1460  SUBROUTINE qes_reset_convergence_info(obj)
1461    !
1462    IMPLICIT NONE
1463    TYPE(convergence_info_type),INTENT(INOUT)    :: obj
1464    !
1465    obj%tagname = ""
1466    obj%lwrite  = .FALSE.
1467    obj%lread  = .FALSE.
1468    !
1469    CALL qes_reset_scf_conv(obj%scf_conv)
1470    IF (obj%opt_conv_ispresent) &
1471      CALL qes_reset_opt_conv(obj%opt_conv)
1472    obj%opt_conv_ispresent = .FALSE.
1473    !
1474  END SUBROUTINE qes_reset_convergence_info
1475  !
1476  !
1477  SUBROUTINE qes_reset_scf_conv(obj)
1478    !
1479    IMPLICIT NONE
1480    TYPE(scf_conv_type),INTENT(INOUT)    :: obj
1481    !
1482    obj%tagname = ""
1483    obj%lwrite  = .FALSE.
1484    obj%lread  = .FALSE.
1485    !
1486    !
1487  END SUBROUTINE qes_reset_scf_conv
1488  !
1489  !
1490  SUBROUTINE qes_reset_opt_conv(obj)
1491    !
1492    IMPLICIT NONE
1493    TYPE(opt_conv_type),INTENT(INOUT)    :: obj
1494    !
1495    obj%tagname = ""
1496    obj%lwrite  = .FALSE.
1497    obj%lread  = .FALSE.
1498    !
1499    !
1500  END SUBROUTINE qes_reset_opt_conv
1501  !
1502  !
1503  SUBROUTINE qes_reset_algorithmic_info(obj)
1504    !
1505    IMPLICIT NONE
1506    TYPE(algorithmic_info_type),INTENT(INOUT)    :: obj
1507    !
1508    obj%tagname = ""
1509    obj%lwrite  = .FALSE.
1510    obj%lread  = .FALSE.
1511    !
1512    obj%real_space_beta_ispresent = .FALSE.
1513    !
1514  END SUBROUTINE qes_reset_algorithmic_info
1515  !
1516  !
1517  SUBROUTINE qes_reset_symmetries(obj)
1518    !
1519    IMPLICIT NONE
1520    TYPE(symmetries_type),INTENT(INOUT)    :: obj
1521    INTEGER :: i
1522    !
1523    obj%tagname = ""
1524    obj%lwrite  = .FALSE.
1525    obj%lread  = .FALSE.
1526    !
1527    IF (ALLOCATED(obj%symmetry)) THEN
1528      DO i=1, SIZE(obj%symmetry)
1529        CALL qes_reset_symmetry(obj%symmetry(i))
1530      ENDDO
1531      DEALLOCATE(obj%symmetry)
1532    ENDIF
1533    obj%ndim_symmetry = 0
1534    !
1535  END SUBROUTINE qes_reset_symmetries
1536  !
1537  !
1538  SUBROUTINE qes_reset_symmetry(obj)
1539    !
1540    IMPLICIT NONE
1541    TYPE(symmetry_type),INTENT(INOUT)    :: obj
1542    !
1543    obj%tagname = ""
1544    obj%lwrite  = .FALSE.
1545    obj%lread  = .FALSE.
1546    !
1547    CALL qes_reset_info(obj%info)
1548    CALL qes_reset_matrix(obj%rotation)
1549    obj%fractional_translation_ispresent = .FALSE.
1550    IF (obj%equivalent_atoms_ispresent) &
1551      CALL qes_reset_equivalent_atoms(obj%equivalent_atoms)
1552    obj%equivalent_atoms_ispresent = .FALSE.
1553    !
1554  END SUBROUTINE qes_reset_symmetry
1555  !
1556  !
1557  SUBROUTINE qes_reset_equivalent_atoms(obj)
1558    !
1559    IMPLICIT NONE
1560    TYPE(equivalent_atoms_type),INTENT(INOUT)    :: obj
1561    !
1562    obj%tagname = ""
1563    obj%lwrite  = .FALSE.
1564    obj%lread  = .FALSE.
1565    !
1566    obj%size = 0
1567    IF (ALLOCATED(obj%equivalent_atoms)) THEN
1568      DEALLOCATE(obj%equivalent_atoms)
1569    ENDIF
1570    !
1571  END SUBROUTINE qes_reset_equivalent_atoms
1572  !
1573  !
1574  SUBROUTINE qes_reset_info(obj)
1575    !
1576    IMPLICIT NONE
1577    TYPE(info_type),INTENT(INOUT)    :: obj
1578    !
1579    obj%tagname = ""
1580    obj%lwrite  = .FALSE.
1581    obj%lread  = .FALSE.
1582    !
1583    obj%name_ispresent = .FALSE.
1584    obj%class_ispresent = .FALSE.
1585    obj%time_reversal_ispresent = .FALSE.
1586    !
1587  END SUBROUTINE qes_reset_info
1588  !
1589  !
1590  SUBROUTINE qes_reset_outputPBC(obj)
1591    !
1592    IMPLICIT NONE
1593    TYPE(outputPBC_type),INTENT(INOUT)    :: obj
1594    !
1595    obj%tagname = ""
1596    obj%lwrite  = .FALSE.
1597    obj%lread  = .FALSE.
1598    !
1599    !
1600  END SUBROUTINE qes_reset_outputPBC
1601  !
1602  !
1603  SUBROUTINE qes_reset_magnetization(obj)
1604    !
1605    IMPLICIT NONE
1606    TYPE(magnetization_type),INTENT(INOUT)    :: obj
1607    !
1608    obj%tagname = ""
1609    obj%lwrite  = .FALSE.
1610    obj%lread  = .FALSE.
1611    !
1612    obj%do_magnetization_ispresent = .FALSE.
1613    !
1614  END SUBROUTINE qes_reset_magnetization
1615  !
1616  !
1617  SUBROUTINE qes_reset_total_energy(obj)
1618    !
1619    IMPLICIT NONE
1620    TYPE(total_energy_type),INTENT(INOUT)    :: obj
1621    !
1622    obj%tagname = ""
1623    obj%lwrite  = .FALSE.
1624    obj%lread  = .FALSE.
1625    !
1626    obj%eband_ispresent = .FALSE.
1627    obj%ehart_ispresent = .FALSE.
1628    obj%vtxc_ispresent = .FALSE.
1629    obj%etxc_ispresent = .FALSE.
1630    obj%ewald_ispresent = .FALSE.
1631    obj%demet_ispresent = .FALSE.
1632    obj%efieldcorr_ispresent = .FALSE.
1633    obj%potentiostat_contr_ispresent = .FALSE.
1634    obj%gatefield_contr_ispresent = .FALSE.
1635    obj%vdW_term_ispresent = .FALSE.
1636    !
1637  END SUBROUTINE qes_reset_total_energy
1638  !
1639  !
1640  SUBROUTINE qes_reset_band_structure(obj)
1641    !
1642    IMPLICIT NONE
1643    TYPE(band_structure_type),INTENT(INOUT)    :: obj
1644    INTEGER :: i
1645    !
1646    obj%tagname = ""
1647    obj%lwrite  = .FALSE.
1648    obj%lread  = .FALSE.
1649    !
1650    obj%nbnd_ispresent = .FALSE.
1651    obj%nbnd_up_ispresent = .FALSE.
1652    obj%nbnd_dw_ispresent = .FALSE.
1653    obj%num_of_atomic_wfc_ispresent = .FALSE.
1654    obj%fermi_energy_ispresent = .FALSE.
1655    obj%highestOccupiedLevel_ispresent = .FALSE.
1656    obj%lowestUnoccupiedLevel_ispresent = .FALSE.
1657    obj%two_fermi_energies_ispresent = .FALSE.
1658    CALL qes_reset_k_points_IBZ(obj%starting_k_points)
1659    CALL qes_reset_occupations(obj%occupations_kind)
1660    IF (obj%smearing_ispresent) &
1661      CALL qes_reset_smearing(obj%smearing)
1662    obj%smearing_ispresent = .FALSE.
1663    IF (ALLOCATED(obj%ks_energies)) THEN
1664      DO i=1, SIZE(obj%ks_energies)
1665        CALL qes_reset_ks_energies(obj%ks_energies(i))
1666      ENDDO
1667      DEALLOCATE(obj%ks_energies)
1668    ENDIF
1669    obj%ndim_ks_energies = 0
1670    !
1671  END SUBROUTINE qes_reset_band_structure
1672  !
1673  !
1674  SUBROUTINE qes_reset_ks_energies(obj)
1675    !
1676    IMPLICIT NONE
1677    TYPE(ks_energies_type),INTENT(INOUT)    :: obj
1678    !
1679    obj%tagname = ""
1680    obj%lwrite  = .FALSE.
1681    obj%lread  = .FALSE.
1682    !
1683    CALL qes_reset_k_point(obj%k_point)
1684    CALL qes_reset_vector(obj%eigenvalues)
1685    CALL qes_reset_vector(obj%occupations)
1686    !
1687  END SUBROUTINE qes_reset_ks_energies
1688  !
1689  !
1690  SUBROUTINE qes_reset_closed(obj)
1691    !
1692    IMPLICIT NONE
1693    TYPE(closed_type),INTENT(INOUT)    :: obj
1694    !
1695    obj%tagname = ""
1696    obj%lwrite  = .FALSE.
1697    obj%lread  = .FALSE.
1698    !
1699    !
1700  END SUBROUTINE qes_reset_closed
1701  !
1702  !
1703  SUBROUTINE qes_reset_vector(obj)
1704    !
1705    IMPLICIT NONE
1706    TYPE(vector_type),INTENT(INOUT)    :: obj
1707    !
1708    obj%tagname = ""
1709    obj%lwrite  = .FALSE.
1710    obj%lread  = .FALSE.
1711    !
1712    IF (ALLOCATED(obj%vector)) THEN
1713      DEALLOCATE(obj%vector)
1714    ENDIF
1715    obj%size = 0
1716    !
1717  END SUBROUTINE qes_reset_vector
1718  !
1719  !
1720  SUBROUTINE qes_reset_integerVector(obj)
1721    !
1722    IMPLICIT NONE
1723    TYPE(integerVector_type),INTENT(INOUT)    :: obj
1724    !
1725    obj%tagname = ""
1726    obj%lwrite  = .FALSE.
1727    obj%lread  = .FALSE.
1728    !
1729    IF (ALLOCATED(obj%integerVector)) THEN
1730      DEALLOCATE(obj%integerVector)
1731    ENDIF
1732    obj%size = 0
1733    !
1734  END SUBROUTINE qes_reset_integerVector
1735  !
1736  !
1737  SUBROUTINE qes_reset_matrix(obj)
1738    !
1739    IMPLICIT NONE
1740    TYPE(matrix_type),INTENT(INOUT)    :: obj
1741    !
1742    obj%tagname = ""
1743    obj%lwrite  = .FALSE.
1744    obj%lread  = .FALSE.
1745    !
1746    IF (ALLOCATED(obj%matrix)) THEN
1747      DEALLOCATE(obj%matrix)
1748    ENDIF
1749    IF (ALLOCATED(obj%dims)) THEN
1750      DEALLOCATE(obj%dims)
1751    ENDIF
1752    obj%rank = 0
1753    obj%order = 'F'
1754    !
1755  END SUBROUTINE qes_reset_matrix
1756  !
1757  !
1758  SUBROUTINE qes_reset_integerMatrix(obj)
1759    !
1760    IMPLICIT NONE
1761    TYPE(integerMatrix_type),INTENT(INOUT)    :: obj
1762    !
1763    obj%tagname = ""
1764    obj%lwrite  = .FALSE.
1765    obj%lread  = .FALSE.
1766    !
1767    IF (ALLOCATED(obj%integerMatrix)) THEN
1768      DEALLOCATE(obj%integerMatrix)
1769    ENDIF
1770    IF (ALLOCATED(obj%dims)) THEN
1771      DEALLOCATE(obj%dims)
1772    ENDIF
1773    obj%rank = 0
1774    obj%order = 'F'
1775    !
1776  END SUBROUTINE qes_reset_integerMatrix
1777  !
1778  !
1779  SUBROUTINE qes_reset_scalarQuantity(obj)
1780    !
1781    IMPLICIT NONE
1782    TYPE(scalarQuantity_type),INTENT(INOUT)    :: obj
1783    !
1784    obj%tagname = ""
1785    obj%lwrite  = .FALSE.
1786    obj%lread  = .FALSE.
1787    !
1788    !
1789  END SUBROUTINE qes_reset_scalarQuantity
1790  !
1791  !
1792END MODULE qes_reset_module