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!
8MODULE qes_bcast_module
9  !
10  ! Auto-generated code: don't edit this file
11  !
12  ! Quantum Espresso XSD namespace: http://www.quantum-espresso.org/ns/qes/qes-1.0
13  !
14  USE qes_types_module
15  USE io_global, ONLY : ionode
16  USE mp, ONLY : mp_bcast
17  !
18  IMPLICIT NONE
19  !
20  PUBLIC qes_bcast
21  !
22  INTERFACE qes_bcast
23    MODULE PROCEDURE qes_bcast_espresso
24    MODULE PROCEDURE qes_bcast_general_info
25    MODULE PROCEDURE qes_bcast_parallel_info
26    MODULE PROCEDURE qes_bcast_input
27    MODULE PROCEDURE qes_bcast_step
28    MODULE PROCEDURE qes_bcast_output
29    MODULE PROCEDURE qes_bcast_timing
30    MODULE PROCEDURE qes_bcast_clock
31    MODULE PROCEDURE qes_bcast_control_variables
32    MODULE PROCEDURE qes_bcast_xml_format
33    MODULE PROCEDURE qes_bcast_creator
34    MODULE PROCEDURE qes_bcast_created
35    MODULE PROCEDURE qes_bcast_atomic_species
36    MODULE PROCEDURE qes_bcast_species
37    MODULE PROCEDURE qes_bcast_atomic_structure
38    MODULE PROCEDURE qes_bcast_atomic_positions
39    MODULE PROCEDURE qes_bcast_atom
40    MODULE PROCEDURE qes_bcast_wyckoff_positions
41    MODULE PROCEDURE qes_bcast_cell
42    MODULE PROCEDURE qes_bcast_dft
43    MODULE PROCEDURE qes_bcast_hybrid
44    MODULE PROCEDURE qes_bcast_qpoint_grid
45    MODULE PROCEDURE qes_bcast_dftU
46    MODULE PROCEDURE qes_bcast_HubbardCommon
47    MODULE PROCEDURE qes_bcast_HubbardJ
48    MODULE PROCEDURE qes_bcast_starting_ns
49    MODULE PROCEDURE qes_bcast_Hubbard_ns
50    MODULE PROCEDURE qes_bcast_HubbardBack
51    MODULE PROCEDURE qes_bcast_backL
52    MODULE PROCEDURE qes_bcast_vdW
53    MODULE PROCEDURE qes_bcast_spin
54    MODULE PROCEDURE qes_bcast_bands
55    MODULE PROCEDURE qes_bcast_smearing
56    MODULE PROCEDURE qes_bcast_occupations
57    MODULE PROCEDURE qes_bcast_basis
58    MODULE PROCEDURE qes_bcast_basis_set
59    MODULE PROCEDURE qes_bcast_basisSetItem
60    MODULE PROCEDURE qes_bcast_reciprocal_lattice
61    MODULE PROCEDURE qes_bcast_electron_control
62    MODULE PROCEDURE qes_bcast_k_points_IBZ
63    MODULE PROCEDURE qes_bcast_monkhorst_pack
64    MODULE PROCEDURE qes_bcast_k_point
65    MODULE PROCEDURE qes_bcast_ion_control
66    MODULE PROCEDURE qes_bcast_bfgs
67    MODULE PROCEDURE qes_bcast_md
68    MODULE PROCEDURE qes_bcast_cell_control
69    MODULE PROCEDURE qes_bcast_symmetry_flags
70    MODULE PROCEDURE qes_bcast_boundary_conditions
71    MODULE PROCEDURE qes_bcast_esm
72    MODULE PROCEDURE qes_bcast_ekin_functional
73    MODULE PROCEDURE qes_bcast_spin_constraints
74    MODULE PROCEDURE qes_bcast_electric_field
75    MODULE PROCEDURE qes_bcast_gate_settings
76    MODULE PROCEDURE qes_bcast_atomic_constraints
77    MODULE PROCEDURE qes_bcast_atomic_constraint
78    MODULE PROCEDURE qes_bcast_inputOccupations
79    MODULE PROCEDURE qes_bcast_outputElectricField
80    MODULE PROCEDURE qes_bcast_BerryPhaseOutput
81    MODULE PROCEDURE qes_bcast_dipoleOutput
82    MODULE PROCEDURE qes_bcast_finiteFieldOut
83    MODULE PROCEDURE qes_bcast_polarization
84    MODULE PROCEDURE qes_bcast_ionicPolarization
85    MODULE PROCEDURE qes_bcast_electronicPolarization
86    MODULE PROCEDURE qes_bcast_phase
87    MODULE PROCEDURE qes_bcast_gateInfo
88    MODULE PROCEDURE qes_bcast_convergence_info
89    MODULE PROCEDURE qes_bcast_scf_conv
90    MODULE PROCEDURE qes_bcast_opt_conv
91    MODULE PROCEDURE qes_bcast_algorithmic_info
92    MODULE PROCEDURE qes_bcast_symmetries
93    MODULE PROCEDURE qes_bcast_symmetry
94    MODULE PROCEDURE qes_bcast_equivalent_atoms
95    MODULE PROCEDURE qes_bcast_info
96    MODULE PROCEDURE qes_bcast_outputPBC
97    MODULE PROCEDURE qes_bcast_magnetization
98    MODULE PROCEDURE qes_bcast_total_energy
99    MODULE PROCEDURE qes_bcast_band_structure
100    MODULE PROCEDURE qes_bcast_ks_energies
101    MODULE PROCEDURE qes_bcast_closed
102    MODULE PROCEDURE qes_bcast_vector
103    MODULE PROCEDURE qes_bcast_integerVector
104    MODULE PROCEDURE qes_bcast_matrix
105    MODULE PROCEDURE qes_bcast_integerMatrix
106    MODULE PROCEDURE qes_bcast_scalarQuantity
107  END INTERFACE qes_bcast
108  !
109  CONTAINS
110  !
111  !
112  SUBROUTINE qes_bcast_espresso(obj, ionode_id, comm )
113    !
114    IMPLICIT NONE
115    !
116    TYPE(espresso_type), INTENT(INOUT) :: obj
117    INTEGER, INTENT(IN) :: ionode_id, comm
118    INTEGER :: i
119    !
120    CALL mp_bcast(obj%tagname, ionode_id, comm)
121    CALL mp_bcast(obj%lwrite, ionode_id, comm)
122    CALL mp_bcast(obj%lread, ionode_id, comm)
123    !
124    CALL mp_bcast(obj%Units_ispresent, ionode_id, comm)
125    IF (obj%Units_ispresent) &
126      CALL mp_bcast(obj%Units, ionode_id, comm)
127    CALL mp_bcast(obj%general_info_ispresent, ionode_id, comm)
128    IF (obj%general_info_ispresent) &
129      CALL qes_bcast_general_info(obj%general_info, ionode_id, comm)
130    CALL mp_bcast(obj%parallel_info_ispresent, ionode_id, comm)
131    IF (obj%parallel_info_ispresent) &
132      CALL qes_bcast_parallel_info(obj%parallel_info, ionode_id, comm)
133    CALL qes_bcast_input(obj%input, ionode_id, comm)
134    CALL mp_bcast(obj%step_ispresent, ionode_id, comm)
135    IF (obj%step_ispresent) THEN
136      CALL mp_bcast(obj%ndim_step, ionode_id, comm)
137      IF (.NOT.ionode) ALLOCATE(obj%step(obj%ndim_step))
138      DO i=1, obj%ndim_step
139        CALL qes_bcast_step(obj%step(i), ionode_id, comm)
140      ENDDO
141    ENDIF
142    CALL mp_bcast(obj%output_ispresent, ionode_id, comm)
143    IF (obj%output_ispresent) &
144      CALL qes_bcast_output(obj%output, ionode_id, comm)
145    CALL mp_bcast(obj%status_ispresent, ionode_id, comm)
146    IF (obj%status_ispresent) &
147      CALL mp_bcast(obj%status, ionode_id, comm)
148    CALL mp_bcast(obj%cputime_ispresent, ionode_id, comm)
149    IF (obj%cputime_ispresent) &
150      CALL mp_bcast(obj%cputime, ionode_id, comm)
151    CALL mp_bcast(obj%timing_info_ispresent, ionode_id, comm)
152    IF (obj%timing_info_ispresent) &
153      CALL qes_bcast_timing(obj%timing_info, ionode_id, comm)
154    CALL mp_bcast(obj%closed_ispresent, ionode_id, comm)
155    IF (obj%closed_ispresent) &
156      CALL qes_bcast_closed(obj%closed, ionode_id, comm)
157    !
158  END SUBROUTINE qes_bcast_espresso
159  !
160  !
161  SUBROUTINE qes_bcast_general_info(obj, ionode_id, comm )
162    !
163    IMPLICIT NONE
164    !
165    TYPE(general_info_type), INTENT(INOUT) :: obj
166    INTEGER, INTENT(IN) :: ionode_id, comm
167    !
168    CALL mp_bcast(obj%tagname, ionode_id, comm)
169    CALL mp_bcast(obj%lwrite, ionode_id, comm)
170    CALL mp_bcast(obj%lread, ionode_id, comm)
171    !
172    CALL qes_bcast_xml_format(obj%xml_format, ionode_id, comm)
173    CALL qes_bcast_creator(obj%creator, ionode_id, comm)
174    CALL qes_bcast_created(obj%created, ionode_id, comm)
175    CALL mp_bcast(obj%job, ionode_id, comm)
176    !
177  END SUBROUTINE qes_bcast_general_info
178  !
179  !
180  SUBROUTINE qes_bcast_parallel_info(obj, ionode_id, comm )
181    !
182    IMPLICIT NONE
183    !
184    TYPE(parallel_info_type), INTENT(INOUT) :: obj
185    INTEGER, INTENT(IN) :: ionode_id, comm
186    !
187    CALL mp_bcast(obj%tagname, ionode_id, comm)
188    CALL mp_bcast(obj%lwrite, ionode_id, comm)
189    CALL mp_bcast(obj%lread, ionode_id, comm)
190    !
191    CALL mp_bcast(obj%nprocs, ionode_id, comm)
192    CALL mp_bcast(obj%nthreads, ionode_id, comm)
193    CALL mp_bcast(obj%ntasks, ionode_id, comm)
194    CALL mp_bcast(obj%nbgrp, ionode_id, comm)
195    CALL mp_bcast(obj%npool, ionode_id, comm)
196    CALL mp_bcast(obj%ndiag, ionode_id, comm)
197    !
198  END SUBROUTINE qes_bcast_parallel_info
199  !
200  !
201  SUBROUTINE qes_bcast_input(obj, ionode_id, comm )
202    !
203    IMPLICIT NONE
204    !
205    TYPE(input_type), INTENT(INOUT) :: obj
206    INTEGER, INTENT(IN) :: ionode_id, comm
207    !
208    CALL mp_bcast(obj%tagname, ionode_id, comm)
209    CALL mp_bcast(obj%lwrite, ionode_id, comm)
210    CALL mp_bcast(obj%lread, ionode_id, comm)
211    !
212    CALL qes_bcast_control_variables(obj%control_variables, ionode_id, comm)
213    CALL qes_bcast_atomic_species(obj%atomic_species, ionode_id, comm)
214    CALL qes_bcast_atomic_structure(obj%atomic_structure, ionode_id, comm)
215    CALL qes_bcast_dft(obj%dft, ionode_id, comm)
216    CALL qes_bcast_spin(obj%spin, ionode_id, comm)
217    CALL qes_bcast_bands(obj%bands, ionode_id, comm)
218    CALL qes_bcast_basis(obj%basis, ionode_id, comm)
219    CALL qes_bcast_electron_control(obj%electron_control, ionode_id, comm)
220    CALL qes_bcast_k_points_IBZ(obj%k_points_IBZ, ionode_id, comm)
221    CALL qes_bcast_ion_control(obj%ion_control, ionode_id, comm)
222    CALL qes_bcast_cell_control(obj%cell_control, ionode_id, comm)
223    CALL mp_bcast(obj%symmetry_flags_ispresent, ionode_id, comm)
224    IF (obj%symmetry_flags_ispresent) &
225      CALL qes_bcast_symmetry_flags(obj%symmetry_flags, ionode_id, comm)
226    CALL mp_bcast(obj%boundary_conditions_ispresent, ionode_id, comm)
227    IF (obj%boundary_conditions_ispresent) &
228      CALL qes_bcast_boundary_conditions(obj%boundary_conditions, ionode_id, comm)
229    CALL mp_bcast(obj%ekin_functional_ispresent, ionode_id, comm)
230    IF (obj%ekin_functional_ispresent) &
231      CALL qes_bcast_ekin_functional(obj%ekin_functional, ionode_id, comm)
232    CALL mp_bcast(obj%external_atomic_forces_ispresent, ionode_id, comm)
233    IF (obj%external_atomic_forces_ispresent) &
234      CALL qes_bcast_matrix(obj%external_atomic_forces, ionode_id, comm)
235    CALL mp_bcast(obj%free_positions_ispresent, ionode_id, comm)
236    IF (obj%free_positions_ispresent) &
237      CALL qes_bcast_integerMatrix(obj%free_positions, ionode_id, comm)
238    CALL mp_bcast(obj%starting_atomic_velocities_ispresent, ionode_id, comm)
239    IF (obj%starting_atomic_velocities_ispresent) &
240      CALL qes_bcast_matrix(obj%starting_atomic_velocities, ionode_id, comm)
241    CALL mp_bcast(obj%electric_field_ispresent, ionode_id, comm)
242    IF (obj%electric_field_ispresent) &
243      CALL qes_bcast_electric_field(obj%electric_field, ionode_id, comm)
244    CALL mp_bcast(obj%atomic_constraints_ispresent, ionode_id, comm)
245    IF (obj%atomic_constraints_ispresent) &
246      CALL qes_bcast_atomic_constraints(obj%atomic_constraints, ionode_id, comm)
247    CALL mp_bcast(obj%spin_constraints_ispresent, ionode_id, comm)
248    IF (obj%spin_constraints_ispresent) &
249      CALL qes_bcast_spin_constraints(obj%spin_constraints, ionode_id, comm)
250    !
251  END SUBROUTINE qes_bcast_input
252  !
253  !
254  SUBROUTINE qes_bcast_step(obj, ionode_id, comm )
255    !
256    IMPLICIT NONE
257    !
258    TYPE(step_type), INTENT(INOUT) :: obj
259    INTEGER, INTENT(IN) :: ionode_id, comm
260    !
261    CALL mp_bcast(obj%tagname, ionode_id, comm)
262    CALL mp_bcast(obj%lwrite, ionode_id, comm)
263    CALL mp_bcast(obj%lread, ionode_id, comm)
264    !
265    CALL mp_bcast(obj%n_step, ionode_id, comm)
266    CALL qes_bcast_scf_conv(obj%scf_conv, ionode_id, comm)
267    CALL qes_bcast_atomic_structure(obj%atomic_structure, ionode_id, comm)
268    CALL qes_bcast_total_energy(obj%total_energy, ionode_id, comm)
269    CALL qes_bcast_matrix(obj%forces, ionode_id, comm)
270    CALL mp_bcast(obj%stress_ispresent, ionode_id, comm)
271    IF (obj%stress_ispresent) &
272      CALL qes_bcast_matrix(obj%stress, ionode_id, comm)
273    CALL mp_bcast(obj%FCP_force_ispresent, ionode_id, comm)
274    IF (obj%FCP_force_ispresent) &
275      CALL mp_bcast(obj%FCP_force, ionode_id, comm)
276    CALL mp_bcast(obj%FCP_tot_charge_ispresent, ionode_id, comm)
277    IF (obj%FCP_tot_charge_ispresent) &
278      CALL mp_bcast(obj%FCP_tot_charge, ionode_id, comm)
279    !
280  END SUBROUTINE qes_bcast_step
281  !
282  !
283  SUBROUTINE qes_bcast_output(obj, ionode_id, comm )
284    !
285    IMPLICIT NONE
286    !
287    TYPE(output_type), INTENT(INOUT) :: obj
288    INTEGER, INTENT(IN) :: ionode_id, comm
289    !
290    CALL mp_bcast(obj%tagname, ionode_id, comm)
291    CALL mp_bcast(obj%lwrite, ionode_id, comm)
292    CALL mp_bcast(obj%lread, ionode_id, comm)
293    !
294    CALL mp_bcast(obj%convergence_info_ispresent, ionode_id, comm)
295    IF (obj%convergence_info_ispresent) &
296      CALL qes_bcast_convergence_info(obj%convergence_info, ionode_id, comm)
297    CALL qes_bcast_algorithmic_info(obj%algorithmic_info, ionode_id, comm)
298    CALL qes_bcast_atomic_species(obj%atomic_species, ionode_id, comm)
299    CALL qes_bcast_atomic_structure(obj%atomic_structure, ionode_id, comm)
300    CALL mp_bcast(obj%symmetries_ispresent, ionode_id, comm)
301    IF (obj%symmetries_ispresent) &
302      CALL qes_bcast_symmetries(obj%symmetries, ionode_id, comm)
303    CALL qes_bcast_basis_set(obj%basis_set, ionode_id, comm)
304    CALL qes_bcast_dft(obj%dft, ionode_id, comm)
305    CALL mp_bcast(obj%boundary_conditions_ispresent, ionode_id, comm)
306    IF (obj%boundary_conditions_ispresent) &
307      CALL qes_bcast_outputPBC(obj%boundary_conditions, ionode_id, comm)
308    CALL qes_bcast_magnetization(obj%magnetization, ionode_id, comm)
309    CALL qes_bcast_total_energy(obj%total_energy, ionode_id, comm)
310    CALL qes_bcast_band_structure(obj%band_structure, ionode_id, comm)
311    CALL mp_bcast(obj%forces_ispresent, ionode_id, comm)
312    IF (obj%forces_ispresent) &
313      CALL qes_bcast_matrix(obj%forces, ionode_id, comm)
314    CALL mp_bcast(obj%stress_ispresent, ionode_id, comm)
315    IF (obj%stress_ispresent) &
316      CALL qes_bcast_matrix(obj%stress, ionode_id, comm)
317    CALL mp_bcast(obj%electric_field_ispresent, ionode_id, comm)
318    IF (obj%electric_field_ispresent) &
319      CALL qes_bcast_outputElectricField(obj%electric_field, ionode_id, comm)
320    CALL mp_bcast(obj%FCP_force_ispresent, ionode_id, comm)
321    IF (obj%FCP_force_ispresent) &
322      CALL mp_bcast(obj%FCP_force, ionode_id, comm)
323    CALL mp_bcast(obj%FCP_tot_charge_ispresent, ionode_id, comm)
324    IF (obj%FCP_tot_charge_ispresent) &
325      CALL mp_bcast(obj%FCP_tot_charge, ionode_id, comm)
326    !
327  END SUBROUTINE qes_bcast_output
328  !
329  !
330  SUBROUTINE qes_bcast_timing(obj, ionode_id, comm )
331    !
332    IMPLICIT NONE
333    !
334    TYPE(timing_type), INTENT(INOUT) :: obj
335    INTEGER, INTENT(IN) :: ionode_id, comm
336    INTEGER :: i
337    !
338    CALL mp_bcast(obj%tagname, ionode_id, comm)
339    CALL mp_bcast(obj%lwrite, ionode_id, comm)
340    CALL mp_bcast(obj%lread, ionode_id, comm)
341    !
342    CALL qes_bcast_clock(obj%total, ionode_id, comm)
343    CALL mp_bcast(obj%partial_ispresent, ionode_id, comm)
344    IF (obj%partial_ispresent) THEN
345      CALL mp_bcast(obj%ndim_partial, ionode_id, comm)
346      IF (.NOT.ionode) ALLOCATE(obj%partial(obj%ndim_partial))
347      DO i=1, obj%ndim_partial
348        CALL qes_bcast_clock(obj%partial(i), ionode_id, comm)
349      ENDDO
350    ENDIF
351    !
352  END SUBROUTINE qes_bcast_timing
353  !
354  !
355  SUBROUTINE qes_bcast_clock(obj, ionode_id, comm )
356    !
357    IMPLICIT NONE
358    !
359    TYPE(clock_type), INTENT(INOUT) :: obj
360    INTEGER, INTENT(IN) :: ionode_id, comm
361    !
362    CALL mp_bcast(obj%tagname, ionode_id, comm)
363    CALL mp_bcast(obj%lwrite, ionode_id, comm)
364    CALL mp_bcast(obj%lread, ionode_id, comm)
365    !
366    CALL mp_bcast(obj%label, ionode_id, comm)
367    CALL mp_bcast(obj%calls_ispresent, ionode_id, comm)
368    IF (obj%calls_ispresent) &
369      CALL mp_bcast(obj%calls, ionode_id, comm)
370    CALL mp_bcast(obj%cpu, ionode_id, comm)
371    CALL mp_bcast(obj%wall, ionode_id, comm)
372    !
373  END SUBROUTINE qes_bcast_clock
374  !
375  !
376  SUBROUTINE qes_bcast_control_variables(obj, ionode_id, comm )
377    !
378    IMPLICIT NONE
379    !
380    TYPE(control_variables_type), INTENT(INOUT) :: obj
381    INTEGER, INTENT(IN) :: ionode_id, comm
382    !
383    CALL mp_bcast(obj%tagname, ionode_id, comm)
384    CALL mp_bcast(obj%lwrite, ionode_id, comm)
385    CALL mp_bcast(obj%lread, ionode_id, comm)
386    !
387    CALL mp_bcast(obj%title, ionode_id, comm)
388    CALL mp_bcast(obj%calculation, ionode_id, comm)
389    CALL mp_bcast(obj%restart_mode, ionode_id, comm)
390    CALL mp_bcast(obj%prefix, ionode_id, comm)
391    CALL mp_bcast(obj%pseudo_dir, ionode_id, comm)
392    CALL mp_bcast(obj%outdir, ionode_id, comm)
393    CALL mp_bcast(obj%stress, ionode_id, comm)
394    CALL mp_bcast(obj%forces, ionode_id, comm)
395    CALL mp_bcast(obj%wf_collect, ionode_id, comm)
396    CALL mp_bcast(obj%disk_io, ionode_id, comm)
397    CALL mp_bcast(obj%max_seconds, ionode_id, comm)
398    CALL mp_bcast(obj%nstep_ispresent, ionode_id, comm)
399    IF (obj%nstep_ispresent) &
400      CALL mp_bcast(obj%nstep, ionode_id, comm)
401    CALL mp_bcast(obj%etot_conv_thr, ionode_id, comm)
402    CALL mp_bcast(obj%forc_conv_thr, ionode_id, comm)
403    CALL mp_bcast(obj%press_conv_thr, ionode_id, comm)
404    CALL mp_bcast(obj%verbosity, ionode_id, comm)
405    CALL mp_bcast(obj%print_every, ionode_id, comm)
406    !
407  END SUBROUTINE qes_bcast_control_variables
408  !
409  !
410  SUBROUTINE qes_bcast_xml_format(obj, ionode_id, comm )
411    !
412    IMPLICIT NONE
413    !
414    TYPE(xml_format_type), INTENT(INOUT) :: obj
415    INTEGER, INTENT(IN) :: ionode_id, comm
416    !
417    CALL mp_bcast(obj%tagname, ionode_id, comm)
418    CALL mp_bcast(obj%lwrite, ionode_id, comm)
419    CALL mp_bcast(obj%lread, ionode_id, comm)
420    !
421    CALL mp_bcast(obj%NAME, ionode_id, comm)
422    CALL mp_bcast(obj%VERSION, ionode_id, comm)
423    CALL mp_bcast(obj%xml_format, ionode_id, comm)
424    !
425  END SUBROUTINE qes_bcast_xml_format
426  !
427  !
428  SUBROUTINE qes_bcast_creator(obj, ionode_id, comm )
429    !
430    IMPLICIT NONE
431    !
432    TYPE(creator_type), INTENT(INOUT) :: obj
433    INTEGER, INTENT(IN) :: ionode_id, comm
434    !
435    CALL mp_bcast(obj%tagname, ionode_id, comm)
436    CALL mp_bcast(obj%lwrite, ionode_id, comm)
437    CALL mp_bcast(obj%lread, ionode_id, comm)
438    !
439    CALL mp_bcast(obj%NAME, ionode_id, comm)
440    CALL mp_bcast(obj%VERSION, ionode_id, comm)
441    CALL mp_bcast(obj%creator, ionode_id, comm)
442    !
443  END SUBROUTINE qes_bcast_creator
444  !
445  !
446  SUBROUTINE qes_bcast_created(obj, ionode_id, comm )
447    !
448    IMPLICIT NONE
449    !
450    TYPE(created_type), INTENT(INOUT) :: obj
451    INTEGER, INTENT(IN) :: ionode_id, comm
452    !
453    CALL mp_bcast(obj%tagname, ionode_id, comm)
454    CALL mp_bcast(obj%lwrite, ionode_id, comm)
455    CALL mp_bcast(obj%lread, ionode_id, comm)
456    !
457    CALL mp_bcast(obj%DATE, ionode_id, comm)
458    CALL mp_bcast(obj%TIME, ionode_id, comm)
459    CALL mp_bcast(obj%created, ionode_id, comm)
460    !
461  END SUBROUTINE qes_bcast_created
462  !
463  !
464  SUBROUTINE qes_bcast_atomic_species(obj, ionode_id, comm )
465    !
466    IMPLICIT NONE
467    !
468    TYPE(atomic_species_type), INTENT(INOUT) :: obj
469    INTEGER, INTENT(IN) :: ionode_id, comm
470    INTEGER :: i
471    !
472    CALL mp_bcast(obj%tagname, ionode_id, comm)
473    CALL mp_bcast(obj%lwrite, ionode_id, comm)
474    CALL mp_bcast(obj%lread, ionode_id, comm)
475    !
476    CALL mp_bcast(obj%ntyp, ionode_id, comm)
477    CALL mp_bcast(obj%pseudo_dir_ispresent, ionode_id, comm)
478    IF (obj%pseudo_dir_ispresent) &
479      CALL mp_bcast(obj%pseudo_dir, ionode_id, comm)
480    CALL mp_bcast(obj%ndim_species, ionode_id, comm)
481    IF (.NOT.ionode) ALLOCATE(obj%species(obj%ndim_species))
482    DO i=1, obj%ndim_species
483      CALL qes_bcast_species(obj%species(i), ionode_id, comm)
484    ENDDO
485    !
486  END SUBROUTINE qes_bcast_atomic_species
487  !
488  !
489  SUBROUTINE qes_bcast_species(obj, ionode_id, comm )
490    !
491    IMPLICIT NONE
492    !
493    TYPE(species_type), INTENT(INOUT) :: obj
494    INTEGER, INTENT(IN) :: ionode_id, comm
495    !
496    CALL mp_bcast(obj%tagname, ionode_id, comm)
497    CALL mp_bcast(obj%lwrite, ionode_id, comm)
498    CALL mp_bcast(obj%lread, ionode_id, comm)
499    !
500    CALL mp_bcast(obj%name, ionode_id, comm)
501    CALL mp_bcast(obj%mass_ispresent, ionode_id, comm)
502    IF (obj%mass_ispresent) &
503      CALL mp_bcast(obj%mass, ionode_id, comm)
504    CALL mp_bcast(obj%pseudo_file, ionode_id, comm)
505    CALL mp_bcast(obj%starting_magnetization_ispresent, ionode_id, comm)
506    IF (obj%starting_magnetization_ispresent) &
507      CALL mp_bcast(obj%starting_magnetization, ionode_id, comm)
508    CALL mp_bcast(obj%spin_teta_ispresent, ionode_id, comm)
509    IF (obj%spin_teta_ispresent) &
510      CALL mp_bcast(obj%spin_teta, ionode_id, comm)
511    CALL mp_bcast(obj%spin_phi_ispresent, ionode_id, comm)
512    IF (obj%spin_phi_ispresent) &
513      CALL mp_bcast(obj%spin_phi, ionode_id, comm)
514    !
515  END SUBROUTINE qes_bcast_species
516  !
517  !
518  SUBROUTINE qes_bcast_atomic_structure(obj, ionode_id, comm )
519    !
520    IMPLICIT NONE
521    !
522    TYPE(atomic_structure_type), INTENT(INOUT) :: obj
523    INTEGER, INTENT(IN) :: ionode_id, comm
524    !
525    CALL mp_bcast(obj%tagname, ionode_id, comm)
526    CALL mp_bcast(obj%lwrite, ionode_id, comm)
527    CALL mp_bcast(obj%lread, ionode_id, comm)
528    !
529    CALL mp_bcast(obj%nat, ionode_id, comm)
530    CALL mp_bcast(obj%alat_ispresent, ionode_id, comm)
531    IF (obj%alat_ispresent) &
532      CALL mp_bcast(obj%alat, ionode_id, comm)
533    CALL mp_bcast(obj%bravais_index_ispresent, ionode_id, comm)
534    IF (obj%bravais_index_ispresent) &
535      CALL mp_bcast(obj%bravais_index, ionode_id, comm)
536    CALL mp_bcast(obj%alternative_axes_ispresent, ionode_id, comm)
537    IF (obj%alternative_axes_ispresent) &
538      CALL mp_bcast(obj%alternative_axes, ionode_id, comm)
539    CALL mp_bcast(obj%atomic_positions_ispresent, ionode_id, comm)
540    IF (obj%atomic_positions_ispresent) &
541      CALL qes_bcast_atomic_positions(obj%atomic_positions, ionode_id, comm)
542    CALL mp_bcast(obj%wyckoff_positions_ispresent, ionode_id, comm)
543    IF (obj%wyckoff_positions_ispresent) &
544      CALL qes_bcast_wyckoff_positions(obj%wyckoff_positions, ionode_id, comm)
545    CALL mp_bcast(obj%crystal_positions_ispresent, ionode_id, comm)
546    IF (obj%crystal_positions_ispresent) &
547      CALL qes_bcast_atomic_positions(obj%crystal_positions, ionode_id, comm)
548    CALL qes_bcast_cell(obj%cell, ionode_id, comm)
549    !
550  END SUBROUTINE qes_bcast_atomic_structure
551  !
552  !
553  SUBROUTINE qes_bcast_atomic_positions(obj, ionode_id, comm )
554    !
555    IMPLICIT NONE
556    !
557    TYPE(atomic_positions_type), INTENT(INOUT) :: obj
558    INTEGER, INTENT(IN) :: ionode_id, comm
559    INTEGER :: i
560    !
561    CALL mp_bcast(obj%tagname, ionode_id, comm)
562    CALL mp_bcast(obj%lwrite, ionode_id, comm)
563    CALL mp_bcast(obj%lread, ionode_id, comm)
564    !
565    CALL mp_bcast(obj%ndim_atom, ionode_id, comm)
566    IF (.NOT.ionode) ALLOCATE(obj%atom(obj%ndim_atom))
567    DO i=1, obj%ndim_atom
568      CALL qes_bcast_atom(obj%atom(i), ionode_id, comm)
569    ENDDO
570    !
571  END SUBROUTINE qes_bcast_atomic_positions
572  !
573  !
574  SUBROUTINE qes_bcast_atom(obj, ionode_id, comm )
575    !
576    IMPLICIT NONE
577    !
578    TYPE(atom_type), INTENT(INOUT) :: obj
579    INTEGER, INTENT(IN) :: ionode_id, comm
580    !
581    CALL mp_bcast(obj%tagname, ionode_id, comm)
582    CALL mp_bcast(obj%lwrite, ionode_id, comm)
583    CALL mp_bcast(obj%lread, ionode_id, comm)
584    !
585    CALL mp_bcast(obj%name, ionode_id, comm)
586    CALL mp_bcast(obj%position_ispresent, ionode_id, comm)
587    IF (obj%position_ispresent) &
588      CALL mp_bcast(obj%position, ionode_id, comm)
589    CALL mp_bcast(obj%index_ispresent, ionode_id, comm)
590    IF (obj%index_ispresent) &
591      CALL mp_bcast(obj%index, ionode_id, comm)
592    CALL mp_bcast(obj%atom, ionode_id, comm)
593    !
594  END SUBROUTINE qes_bcast_atom
595  !
596  !
597  SUBROUTINE qes_bcast_wyckoff_positions(obj, ionode_id, comm )
598    !
599    IMPLICIT NONE
600    !
601    TYPE(wyckoff_positions_type), INTENT(INOUT) :: obj
602    INTEGER, INTENT(IN) :: ionode_id, comm
603    INTEGER :: i
604    !
605    CALL mp_bcast(obj%tagname, ionode_id, comm)
606    CALL mp_bcast(obj%lwrite, ionode_id, comm)
607    CALL mp_bcast(obj%lread, ionode_id, comm)
608    !
609    CALL mp_bcast(obj%space_group, ionode_id, comm)
610    CALL mp_bcast(obj%more_options_ispresent, ionode_id, comm)
611    IF (obj%more_options_ispresent) &
612      CALL mp_bcast(obj%more_options, ionode_id, comm)
613    CALL mp_bcast(obj%ndim_atom, ionode_id, comm)
614    IF (.NOT.ionode) ALLOCATE(obj%atom(obj%ndim_atom))
615    DO i=1, obj%ndim_atom
616      CALL qes_bcast_atom(obj%atom(i), ionode_id, comm)
617    ENDDO
618    !
619  END SUBROUTINE qes_bcast_wyckoff_positions
620  !
621  !
622  SUBROUTINE qes_bcast_cell(obj, ionode_id, comm )
623    !
624    IMPLICIT NONE
625    !
626    TYPE(cell_type), INTENT(INOUT) :: obj
627    INTEGER, INTENT(IN) :: ionode_id, comm
628    !
629    CALL mp_bcast(obj%tagname, ionode_id, comm)
630    CALL mp_bcast(obj%lwrite, ionode_id, comm)
631    CALL mp_bcast(obj%lread, ionode_id, comm)
632    !
633    CALL mp_bcast(obj%a1, ionode_id, comm)
634    CALL mp_bcast(obj%a2, ionode_id, comm)
635    CALL mp_bcast(obj%a3, ionode_id, comm)
636    !
637  END SUBROUTINE qes_bcast_cell
638  !
639  !
640  SUBROUTINE qes_bcast_dft(obj, ionode_id, comm )
641    !
642    IMPLICIT NONE
643    !
644    TYPE(dft_type), INTENT(INOUT) :: obj
645    INTEGER, INTENT(IN) :: ionode_id, comm
646    !
647    CALL mp_bcast(obj%tagname, ionode_id, comm)
648    CALL mp_bcast(obj%lwrite, ionode_id, comm)
649    CALL mp_bcast(obj%lread, ionode_id, comm)
650    !
651    CALL mp_bcast(obj%functional, ionode_id, comm)
652    CALL mp_bcast(obj%hybrid_ispresent, ionode_id, comm)
653    IF (obj%hybrid_ispresent) &
654      CALL qes_bcast_hybrid(obj%hybrid, ionode_id, comm)
655    CALL mp_bcast(obj%dftU_ispresent, ionode_id, comm)
656    IF (obj%dftU_ispresent) &
657      CALL qes_bcast_dftU(obj%dftU, ionode_id, comm)
658    CALL mp_bcast(obj%vdW_ispresent, ionode_id, comm)
659    IF (obj%vdW_ispresent) &
660      CALL qes_bcast_vdW(obj%vdW, ionode_id, comm)
661    !
662  END SUBROUTINE qes_bcast_dft
663  !
664  !
665  SUBROUTINE qes_bcast_hybrid(obj, ionode_id, comm )
666    !
667    IMPLICIT NONE
668    !
669    TYPE(hybrid_type), INTENT(INOUT) :: obj
670    INTEGER, INTENT(IN) :: ionode_id, comm
671    !
672    CALL mp_bcast(obj%tagname, ionode_id, comm)
673    CALL mp_bcast(obj%lwrite, ionode_id, comm)
674    CALL mp_bcast(obj%lread, ionode_id, comm)
675    !
676    CALL mp_bcast(obj%qpoint_grid_ispresent, ionode_id, comm)
677    IF (obj%qpoint_grid_ispresent) &
678      CALL qes_bcast_qpoint_grid(obj%qpoint_grid, ionode_id, comm)
679    CALL mp_bcast(obj%ecutfock_ispresent, ionode_id, comm)
680    IF (obj%ecutfock_ispresent) &
681      CALL mp_bcast(obj%ecutfock, ionode_id, comm)
682    CALL mp_bcast(obj%exx_fraction_ispresent, ionode_id, comm)
683    IF (obj%exx_fraction_ispresent) &
684      CALL mp_bcast(obj%exx_fraction, ionode_id, comm)
685    CALL mp_bcast(obj%screening_parameter_ispresent, ionode_id, comm)
686    IF (obj%screening_parameter_ispresent) &
687      CALL mp_bcast(obj%screening_parameter, ionode_id, comm)
688    CALL mp_bcast(obj%exxdiv_treatment_ispresent, ionode_id, comm)
689    IF (obj%exxdiv_treatment_ispresent) &
690      CALL mp_bcast(obj%exxdiv_treatment, ionode_id, comm)
691    CALL mp_bcast(obj%x_gamma_extrapolation_ispresent, ionode_id, comm)
692    IF (obj%x_gamma_extrapolation_ispresent) &
693      CALL mp_bcast(obj%x_gamma_extrapolation, ionode_id, comm)
694    CALL mp_bcast(obj%ecutvcut_ispresent, ionode_id, comm)
695    IF (obj%ecutvcut_ispresent) &
696      CALL mp_bcast(obj%ecutvcut, ionode_id, comm)
697    CALL mp_bcast(obj%localization_threshold_ispresent, ionode_id, comm)
698    IF (obj%localization_threshold_ispresent) &
699      CALL mp_bcast(obj%localization_threshold, ionode_id, comm)
700    !
701  END SUBROUTINE qes_bcast_hybrid
702  !
703  !
704  SUBROUTINE qes_bcast_qpoint_grid(obj, ionode_id, comm )
705    !
706    IMPLICIT NONE
707    !
708    TYPE(qpoint_grid_type), INTENT(INOUT) :: obj
709    INTEGER, INTENT(IN) :: ionode_id, comm
710    !
711    CALL mp_bcast(obj%tagname, ionode_id, comm)
712    CALL mp_bcast(obj%lwrite, ionode_id, comm)
713    CALL mp_bcast(obj%lread, ionode_id, comm)
714    !
715    CALL mp_bcast(obj%nqx1, ionode_id, comm)
716    CALL mp_bcast(obj%nqx2, ionode_id, comm)
717    CALL mp_bcast(obj%nqx3, ionode_id, comm)
718    CALL mp_bcast(obj%qpoint_grid, ionode_id, comm)
719    !
720  END SUBROUTINE qes_bcast_qpoint_grid
721  !
722  !
723  SUBROUTINE qes_bcast_dftU(obj, ionode_id, comm )
724    !
725    IMPLICIT NONE
726    !
727    TYPE(dftU_type), INTENT(INOUT) :: obj
728    INTEGER, INTENT(IN) :: ionode_id, comm
729    INTEGER :: i
730    !
731    CALL mp_bcast(obj%tagname, ionode_id, comm)
732    CALL mp_bcast(obj%lwrite, ionode_id, comm)
733    CALL mp_bcast(obj%lread, ionode_id, comm)
734    !
735    CALL mp_bcast(obj%lda_plus_u_kind_ispresent, ionode_id, comm)
736    IF (obj%lda_plus_u_kind_ispresent) &
737      CALL mp_bcast(obj%lda_plus_u_kind, ionode_id, comm)
738    CALL mp_bcast(obj%Hubbard_U_ispresent, ionode_id, comm)
739    IF (obj%Hubbard_U_ispresent) THEN
740      CALL mp_bcast(obj%ndim_Hubbard_U, ionode_id, comm)
741      IF (.NOT.ionode) ALLOCATE(obj%Hubbard_U(obj%ndim_Hubbard_U))
742      DO i=1, obj%ndim_Hubbard_U
743        CALL qes_bcast_HubbardCommon(obj%Hubbard_U(i), ionode_id, comm)
744      ENDDO
745    ENDIF
746    CALL mp_bcast(obj%Hubbard_J0_ispresent, ionode_id, comm)
747    IF (obj%Hubbard_J0_ispresent) THEN
748      CALL mp_bcast(obj%ndim_Hubbard_J0, ionode_id, comm)
749      IF (.NOT.ionode) ALLOCATE(obj%Hubbard_J0(obj%ndim_Hubbard_J0))
750      DO i=1, obj%ndim_Hubbard_J0
751        CALL qes_bcast_HubbardCommon(obj%Hubbard_J0(i), ionode_id, comm)
752      ENDDO
753    ENDIF
754    CALL mp_bcast(obj%Hubbard_alpha_ispresent, ionode_id, comm)
755    IF (obj%Hubbard_alpha_ispresent) THEN
756      CALL mp_bcast(obj%ndim_Hubbard_alpha, ionode_id, comm)
757      IF (.NOT.ionode) ALLOCATE(obj%Hubbard_alpha(obj%ndim_Hubbard_alpha))
758      DO i=1, obj%ndim_Hubbard_alpha
759        CALL qes_bcast_HubbardCommon(obj%Hubbard_alpha(i), ionode_id, comm)
760      ENDDO
761    ENDIF
762    CALL mp_bcast(obj%Hubbard_beta_ispresent, ionode_id, comm)
763    IF (obj%Hubbard_beta_ispresent) THEN
764      CALL mp_bcast(obj%ndim_Hubbard_beta, ionode_id, comm)
765      IF (.NOT.ionode) ALLOCATE(obj%Hubbard_beta(obj%ndim_Hubbard_beta))
766      DO i=1, obj%ndim_Hubbard_beta
767        CALL qes_bcast_HubbardCommon(obj%Hubbard_beta(i), ionode_id, comm)
768      ENDDO
769    ENDIF
770    CALL mp_bcast(obj%Hubbard_J_ispresent, ionode_id, comm)
771    IF (obj%Hubbard_J_ispresent) THEN
772      CALL mp_bcast(obj%ndim_Hubbard_J, ionode_id, comm)
773      IF (.NOT.ionode) ALLOCATE(obj%Hubbard_J(obj%ndim_Hubbard_J))
774      DO i=1, obj%ndim_Hubbard_J
775        CALL qes_bcast_HubbardJ(obj%Hubbard_J(i), ionode_id, comm)
776      ENDDO
777    ENDIF
778    CALL mp_bcast(obj%starting_ns_ispresent, ionode_id, comm)
779    IF (obj%starting_ns_ispresent) THEN
780      CALL mp_bcast(obj%ndim_starting_ns, ionode_id, comm)
781      IF (.NOT.ionode) ALLOCATE(obj%starting_ns(obj%ndim_starting_ns))
782      DO i=1, obj%ndim_starting_ns
783        CALL qes_bcast_starting_ns(obj%starting_ns(i), ionode_id, comm)
784      ENDDO
785    ENDIF
786    CALL mp_bcast(obj%Hubbard_ns_ispresent, ionode_id, comm)
787    IF (obj%Hubbard_ns_ispresent) THEN
788      CALL mp_bcast(obj%ndim_Hubbard_ns, ionode_id, comm)
789      IF (.NOT.ionode) ALLOCATE(obj%Hubbard_ns(obj%ndim_Hubbard_ns))
790      DO i=1, obj%ndim_Hubbard_ns
791        CALL qes_bcast_Hubbard_ns(obj%Hubbard_ns(i), ionode_id, comm)
792      ENDDO
793    ENDIF
794    CALL mp_bcast(obj%U_projection_type_ispresent, ionode_id, comm)
795    IF (obj%U_projection_type_ispresent) &
796      CALL mp_bcast(obj%U_projection_type, ionode_id, comm)
797    CALL mp_bcast(obj%Hubbard_back_ispresent, ionode_id, comm)
798    IF (obj%Hubbard_back_ispresent) THEN
799      CALL mp_bcast(obj%ndim_Hubbard_back, ionode_id, comm)
800      IF (.NOT.ionode) ALLOCATE(obj%Hubbard_back(obj%ndim_Hubbard_back))
801      DO i=1, obj%ndim_Hubbard_back
802        CALL qes_bcast_HubbardBack(obj%Hubbard_back(i), ionode_id, comm)
803      ENDDO
804    ENDIF
805    CALL mp_bcast(obj%Hubbard_U_back_ispresent, ionode_id, comm)
806    IF (obj%Hubbard_U_back_ispresent) THEN
807      CALL mp_bcast(obj%ndim_Hubbard_U_back, ionode_id, comm)
808      IF (.NOT.ionode) ALLOCATE(obj%Hubbard_U_back(obj%ndim_Hubbard_U_back))
809      DO i=1, obj%ndim_Hubbard_U_back
810        CALL qes_bcast_HubbardCommon(obj%Hubbard_U_back(i), ionode_id, comm)
811      ENDDO
812    ENDIF
813    CALL mp_bcast(obj%Hubbard_alpha_back_ispresent, ionode_id, comm)
814    IF (obj%Hubbard_alpha_back_ispresent) THEN
815      CALL mp_bcast(obj%ndim_Hubbard_alpha_back, ionode_id, comm)
816      IF (.NOT.ionode) ALLOCATE(obj%Hubbard_alpha_back(obj%ndim_Hubbard_alpha_back))
817      DO i=1, obj%ndim_Hubbard_alpha_back
818        CALL qes_bcast_HubbardCommon(obj%Hubbard_alpha_back(i), ionode_id, comm)
819      ENDDO
820    ENDIF
821    CALL mp_bcast(obj%Hubbard_ns_nc_ispresent, ionode_id, comm)
822    IF (obj%Hubbard_ns_nc_ispresent) THEN
823      CALL mp_bcast(obj%ndim_Hubbard_ns_nc, ionode_id, comm)
824      IF (.NOT.ionode) ALLOCATE(obj%Hubbard_ns_nc(obj%ndim_Hubbard_ns_nc))
825      DO i=1, obj%ndim_Hubbard_ns_nc
826        CALL qes_bcast_Hubbard_ns(obj%Hubbard_ns_nc(i), ionode_id, comm)
827      ENDDO
828    ENDIF
829    !
830  END SUBROUTINE qes_bcast_dftU
831  !
832  !
833  SUBROUTINE qes_bcast_HubbardCommon(obj, ionode_id, comm )
834    !
835    IMPLICIT NONE
836    !
837    TYPE(HubbardCommon_type), INTENT(INOUT) :: obj
838    INTEGER, INTENT(IN) :: ionode_id, comm
839    !
840    CALL mp_bcast(obj%tagname, ionode_id, comm)
841    CALL mp_bcast(obj%lwrite, ionode_id, comm)
842    CALL mp_bcast(obj%lread, ionode_id, comm)
843    !
844    CALL mp_bcast(obj%specie, ionode_id, comm)
845    CALL mp_bcast(obj%label_ispresent, ionode_id, comm)
846    IF (obj%label_ispresent) &
847      CALL mp_bcast(obj%label, ionode_id, comm)
848    CALL mp_bcast(obj%HubbardCommon, ionode_id, comm)
849    !
850  END SUBROUTINE qes_bcast_HubbardCommon
851  !
852  !
853  SUBROUTINE qes_bcast_HubbardJ(obj, ionode_id, comm )
854    !
855    IMPLICIT NONE
856    !
857    TYPE(HubbardJ_type), INTENT(INOUT) :: obj
858    INTEGER, INTENT(IN) :: ionode_id, comm
859    !
860    CALL mp_bcast(obj%tagname, ionode_id, comm)
861    CALL mp_bcast(obj%lwrite, ionode_id, comm)
862    CALL mp_bcast(obj%lread, ionode_id, comm)
863    !
864    CALL mp_bcast(obj%specie, ionode_id, comm)
865    CALL mp_bcast(obj%label, ionode_id, comm)
866    CALL mp_bcast(obj%HubbardJ, ionode_id, comm)
867    !
868  END SUBROUTINE qes_bcast_HubbardJ
869  !
870  !
871  SUBROUTINE qes_bcast_starting_ns(obj, ionode_id, comm )
872    !
873    IMPLICIT NONE
874    !
875    TYPE(starting_ns_type), INTENT(INOUT) :: obj
876    INTEGER, INTENT(IN) :: ionode_id, comm
877    !
878    CALL mp_bcast(obj%tagname, ionode_id, comm)
879    CALL mp_bcast(obj%lwrite, ionode_id, comm)
880    CALL mp_bcast(obj%lread, ionode_id, comm)
881    !
882    CALL mp_bcast(obj%specie, ionode_id, comm)
883    CALL mp_bcast(obj%label, ionode_id, comm)
884    CALL mp_bcast(obj%spin, ionode_id, comm)
885    CALL mp_bcast(obj%size, ionode_id, comm)
886    IF (.NOT.ionode) ALLOCATE(obj%starting_ns(obj%size))
887    CALL mp_bcast(obj%starting_ns, ionode_id, comm)
888    !
889  END SUBROUTINE qes_bcast_starting_ns
890  !
891  !
892  SUBROUTINE qes_bcast_Hubbard_ns(obj, ionode_id, comm )
893    !
894    IMPLICIT NONE
895    !
896    TYPE(Hubbard_ns_type), INTENT(INOUT) :: obj
897    INTEGER, INTENT(IN) :: ionode_id, comm
898    INTEGER :: length
899    INTEGER :: i
900    !
901    CALL mp_bcast(obj%tagname, ionode_id, comm)
902    CALL mp_bcast(obj%lwrite, ionode_id, comm)
903    CALL mp_bcast(obj%lread, ionode_id, comm)
904    !
905    CALL mp_bcast(obj%specie, ionode_id, comm)
906    CALL mp_bcast(obj%label, ionode_id, comm)
907    CALL mp_bcast(obj%spin, ionode_id, comm)
908    CALL mp_bcast(obj%index, ionode_id, comm)
909    CALL mp_bcast(obj%rank, ionode_id, comm)
910    IF (.NOT.ionode) ALLOCATE(obj%dims(obj%rank))
911    CALL mp_bcast(obj%dims, ionode_id, comm)
912    CALL mp_bcast(obj%order, ionode_id, comm)
913    IF (.NOT. ionode) THEN
914      length = 1
915      DO i=1, obj%rank
916        length = length * obj%dims(i)
917      END DO
918      ALLOCATE (obj%Hubbard_ns(length) )
919    ENDIF
920    CALL mp_bcast(obj%Hubbard_ns, ionode_id, comm)
921    !
922  END SUBROUTINE qes_bcast_Hubbard_ns
923  !
924  !
925  SUBROUTINE qes_bcast_HubbardBack(obj, ionode_id, comm )
926    !
927    IMPLICIT NONE
928    !
929    TYPE(HubbardBack_type), INTENT(INOUT) :: obj
930    INTEGER, INTENT(IN) :: ionode_id, comm
931    INTEGER :: i
932    !
933    CALL mp_bcast(obj%tagname, ionode_id, comm)
934    CALL mp_bcast(obj%lwrite, ionode_id, comm)
935    CALL mp_bcast(obj%lread, ionode_id, comm)
936    !
937    CALL mp_bcast(obj%species, ionode_id, comm)
938    CALL mp_bcast(obj%background, ionode_id, comm)
939    CALL mp_bcast(obj%ndim_l_number, ionode_id, comm)
940    IF (.NOT.ionode) ALLOCATE(obj%l_number(obj%ndim_l_number))
941    DO i=1, obj%ndim_l_number
942      CALL qes_bcast_backL(obj%l_number(i), ionode_id, comm)
943    ENDDO
944    !
945  END SUBROUTINE qes_bcast_HubbardBack
946  !
947  !
948  SUBROUTINE qes_bcast_backL(obj, ionode_id, comm )
949    !
950    IMPLICIT NONE
951    !
952    TYPE(backL_type), INTENT(INOUT) :: obj
953    INTEGER, INTENT(IN) :: ionode_id, comm
954    !
955    CALL mp_bcast(obj%tagname, ionode_id, comm)
956    CALL mp_bcast(obj%lwrite, ionode_id, comm)
957    CALL mp_bcast(obj%lread, ionode_id, comm)
958    !
959    CALL mp_bcast(obj%l_index, ionode_id, comm)
960    CALL mp_bcast(obj%backL, ionode_id, comm)
961    !
962  END SUBROUTINE qes_bcast_backL
963  !
964  !
965  SUBROUTINE qes_bcast_vdW(obj, ionode_id, comm )
966    !
967    IMPLICIT NONE
968    !
969    TYPE(vdW_type), INTENT(INOUT) :: obj
970    INTEGER, INTENT(IN) :: ionode_id, comm
971    INTEGER :: i
972    !
973    CALL mp_bcast(obj%tagname, ionode_id, comm)
974    CALL mp_bcast(obj%lwrite, ionode_id, comm)
975    CALL mp_bcast(obj%lread, ionode_id, comm)
976    !
977    CALL mp_bcast(obj%vdw_corr_ispresent, ionode_id, comm)
978    IF (obj%vdw_corr_ispresent) &
979      CALL mp_bcast(obj%vdw_corr, ionode_id, comm)
980    CALL mp_bcast(obj%dftd3_version_ispresent, ionode_id, comm)
981    IF (obj%dftd3_version_ispresent) &
982      CALL mp_bcast(obj%dftd3_version, ionode_id, comm)
983    CALL mp_bcast(obj%dftd3_threebody_ispresent, ionode_id, comm)
984    IF (obj%dftd3_threebody_ispresent) &
985      CALL mp_bcast(obj%dftd3_threebody, ionode_id, comm)
986    CALL mp_bcast(obj%non_local_term_ispresent, ionode_id, comm)
987    IF (obj%non_local_term_ispresent) &
988      CALL mp_bcast(obj%non_local_term, ionode_id, comm)
989    CALL mp_bcast(obj%functional_ispresent, ionode_id, comm)
990    IF (obj%functional_ispresent) &
991      CALL mp_bcast(obj%functional, ionode_id, comm)
992    CALL mp_bcast(obj%total_energy_term_ispresent, ionode_id, comm)
993    IF (obj%total_energy_term_ispresent) &
994      CALL mp_bcast(obj%total_energy_term, ionode_id, comm)
995    CALL mp_bcast(obj%london_s6_ispresent, ionode_id, comm)
996    IF (obj%london_s6_ispresent) &
997      CALL mp_bcast(obj%london_s6, ionode_id, comm)
998    CALL mp_bcast(obj%ts_vdw_econv_thr_ispresent, ionode_id, comm)
999    IF (obj%ts_vdw_econv_thr_ispresent) &
1000      CALL mp_bcast(obj%ts_vdw_econv_thr, ionode_id, comm)
1001    CALL mp_bcast(obj%ts_vdw_isolated_ispresent, ionode_id, comm)
1002    IF (obj%ts_vdw_isolated_ispresent) &
1003      CALL mp_bcast(obj%ts_vdw_isolated, ionode_id, comm)
1004    CALL mp_bcast(obj%london_rcut_ispresent, ionode_id, comm)
1005    IF (obj%london_rcut_ispresent) &
1006      CALL mp_bcast(obj%london_rcut, ionode_id, comm)
1007    CALL mp_bcast(obj%xdm_a1_ispresent, ionode_id, comm)
1008    IF (obj%xdm_a1_ispresent) &
1009      CALL mp_bcast(obj%xdm_a1, ionode_id, comm)
1010    CALL mp_bcast(obj%xdm_a2_ispresent, ionode_id, comm)
1011    IF (obj%xdm_a2_ispresent) &
1012      CALL mp_bcast(obj%xdm_a2, ionode_id, comm)
1013    CALL mp_bcast(obj%london_c6_ispresent, ionode_id, comm)
1014    IF (obj%london_c6_ispresent) THEN
1015      CALL mp_bcast(obj%ndim_london_c6, ionode_id, comm)
1016      IF (.NOT.ionode) ALLOCATE(obj%london_c6(obj%ndim_london_c6))
1017      DO i=1, obj%ndim_london_c6
1018        CALL qes_bcast_HubbardCommon(obj%london_c6(i), ionode_id, comm)
1019      ENDDO
1020    ENDIF
1021    !
1022  END SUBROUTINE qes_bcast_vdW
1023  !
1024  !
1025  SUBROUTINE qes_bcast_spin(obj, ionode_id, comm )
1026    !
1027    IMPLICIT NONE
1028    !
1029    TYPE(spin_type), INTENT(INOUT) :: obj
1030    INTEGER, INTENT(IN) :: ionode_id, comm
1031    !
1032    CALL mp_bcast(obj%tagname, ionode_id, comm)
1033    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1034    CALL mp_bcast(obj%lread, ionode_id, comm)
1035    !
1036    CALL mp_bcast(obj%lsda, ionode_id, comm)
1037    CALL mp_bcast(obj%noncolin, ionode_id, comm)
1038    CALL mp_bcast(obj%spinorbit, ionode_id, comm)
1039    !
1040  END SUBROUTINE qes_bcast_spin
1041  !
1042  !
1043  SUBROUTINE qes_bcast_bands(obj, ionode_id, comm )
1044    !
1045    IMPLICIT NONE
1046    !
1047    TYPE(bands_type), INTENT(INOUT) :: obj
1048    INTEGER, INTENT(IN) :: ionode_id, comm
1049    INTEGER :: i
1050    !
1051    CALL mp_bcast(obj%tagname, ionode_id, comm)
1052    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1053    CALL mp_bcast(obj%lread, ionode_id, comm)
1054    !
1055    CALL mp_bcast(obj%nbnd_ispresent, ionode_id, comm)
1056    IF (obj%nbnd_ispresent) &
1057      CALL mp_bcast(obj%nbnd, ionode_id, comm)
1058    CALL mp_bcast(obj%smearing_ispresent, ionode_id, comm)
1059    IF (obj%smearing_ispresent) &
1060      CALL qes_bcast_smearing(obj%smearing, ionode_id, comm)
1061    CALL mp_bcast(obj%tot_charge_ispresent, ionode_id, comm)
1062    IF (obj%tot_charge_ispresent) &
1063      CALL mp_bcast(obj%tot_charge, ionode_id, comm)
1064    CALL mp_bcast(obj%tot_magnetization_ispresent, ionode_id, comm)
1065    IF (obj%tot_magnetization_ispresent) &
1066      CALL mp_bcast(obj%tot_magnetization, ionode_id, comm)
1067    CALL qes_bcast_occupations(obj%occupations, ionode_id, comm)
1068    CALL mp_bcast(obj%inputOccupations_ispresent, ionode_id, comm)
1069    IF (obj%inputOccupations_ispresent) THEN
1070      CALL mp_bcast(obj%ndim_inputOccupations, ionode_id, comm)
1071      IF (.NOT.ionode) ALLOCATE(obj%inputOccupations(obj%ndim_inputOccupations))
1072      DO i=1, obj%ndim_inputOccupations
1073        CALL qes_bcast_inputOccupations(obj%inputOccupations(i), ionode_id, comm)
1074      ENDDO
1075    ENDIF
1076    !
1077  END SUBROUTINE qes_bcast_bands
1078  !
1079  !
1080  SUBROUTINE qes_bcast_smearing(obj, ionode_id, comm )
1081    !
1082    IMPLICIT NONE
1083    !
1084    TYPE(smearing_type), INTENT(INOUT) :: obj
1085    INTEGER, INTENT(IN) :: ionode_id, comm
1086    !
1087    CALL mp_bcast(obj%tagname, ionode_id, comm)
1088    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1089    CALL mp_bcast(obj%lread, ionode_id, comm)
1090    !
1091    CALL mp_bcast(obj%degauss, ionode_id, comm)
1092    CALL mp_bcast(obj%smearing, ionode_id, comm)
1093    !
1094  END SUBROUTINE qes_bcast_smearing
1095  !
1096  !
1097  SUBROUTINE qes_bcast_occupations(obj, ionode_id, comm )
1098    !
1099    IMPLICIT NONE
1100    !
1101    TYPE(occupations_type), INTENT(INOUT) :: obj
1102    INTEGER, INTENT(IN) :: ionode_id, comm
1103    !
1104    CALL mp_bcast(obj%tagname, ionode_id, comm)
1105    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1106    CALL mp_bcast(obj%lread, ionode_id, comm)
1107    !
1108    CALL mp_bcast(obj%spin_ispresent, ionode_id, comm)
1109    IF (obj%spin_ispresent) &
1110      CALL mp_bcast(obj%spin, ionode_id, comm)
1111    CALL mp_bcast(obj%occupations, ionode_id, comm)
1112    !
1113  END SUBROUTINE qes_bcast_occupations
1114  !
1115  !
1116  SUBROUTINE qes_bcast_basis(obj, ionode_id, comm )
1117    !
1118    IMPLICIT NONE
1119    !
1120    TYPE(basis_type), INTENT(INOUT) :: obj
1121    INTEGER, INTENT(IN) :: ionode_id, comm
1122    !
1123    CALL mp_bcast(obj%tagname, ionode_id, comm)
1124    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1125    CALL mp_bcast(obj%lread, ionode_id, comm)
1126    !
1127    CALL mp_bcast(obj%gamma_only_ispresent, ionode_id, comm)
1128    IF (obj%gamma_only_ispresent) &
1129      CALL mp_bcast(obj%gamma_only, ionode_id, comm)
1130    CALL mp_bcast(obj%ecutwfc, ionode_id, comm)
1131    CALL mp_bcast(obj%ecutrho_ispresent, ionode_id, comm)
1132    IF (obj%ecutrho_ispresent) &
1133      CALL mp_bcast(obj%ecutrho, ionode_id, comm)
1134    CALL mp_bcast(obj%fft_grid_ispresent, ionode_id, comm)
1135    IF (obj%fft_grid_ispresent) &
1136      CALL qes_bcast_basisSetItem(obj%fft_grid, ionode_id, comm)
1137    CALL mp_bcast(obj%fft_smooth_ispresent, ionode_id, comm)
1138    IF (obj%fft_smooth_ispresent) &
1139      CALL qes_bcast_basisSetItem(obj%fft_smooth, ionode_id, comm)
1140    CALL mp_bcast(obj%fft_box_ispresent, ionode_id, comm)
1141    IF (obj%fft_box_ispresent) &
1142      CALL qes_bcast_basisSetItem(obj%fft_box, ionode_id, comm)
1143    !
1144  END SUBROUTINE qes_bcast_basis
1145  !
1146  !
1147  SUBROUTINE qes_bcast_basis_set(obj, ionode_id, comm )
1148    !
1149    IMPLICIT NONE
1150    !
1151    TYPE(basis_set_type), INTENT(INOUT) :: obj
1152    INTEGER, INTENT(IN) :: ionode_id, comm
1153    !
1154    CALL mp_bcast(obj%tagname, ionode_id, comm)
1155    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1156    CALL mp_bcast(obj%lread, ionode_id, comm)
1157    !
1158    CALL mp_bcast(obj%gamma_only_ispresent, ionode_id, comm)
1159    IF (obj%gamma_only_ispresent) &
1160      CALL mp_bcast(obj%gamma_only, ionode_id, comm)
1161    CALL mp_bcast(obj%ecutwfc, ionode_id, comm)
1162    CALL mp_bcast(obj%ecutrho_ispresent, ionode_id, comm)
1163    IF (obj%ecutrho_ispresent) &
1164      CALL mp_bcast(obj%ecutrho, ionode_id, comm)
1165    CALL qes_bcast_basisSetItem(obj%fft_grid, ionode_id, comm)
1166    CALL mp_bcast(obj%fft_smooth_ispresent, ionode_id, comm)
1167    IF (obj%fft_smooth_ispresent) &
1168      CALL qes_bcast_basisSetItem(obj%fft_smooth, ionode_id, comm)
1169    CALL mp_bcast(obj%fft_box_ispresent, ionode_id, comm)
1170    IF (obj%fft_box_ispresent) &
1171      CALL qes_bcast_basisSetItem(obj%fft_box, ionode_id, comm)
1172    CALL mp_bcast(obj%ngm, ionode_id, comm)
1173    CALL mp_bcast(obj%ngms_ispresent, ionode_id, comm)
1174    IF (obj%ngms_ispresent) &
1175      CALL mp_bcast(obj%ngms, ionode_id, comm)
1176    CALL mp_bcast(obj%npwx, ionode_id, comm)
1177    CALL qes_bcast_reciprocal_lattice(obj%reciprocal_lattice, ionode_id, comm)
1178    !
1179  END SUBROUTINE qes_bcast_basis_set
1180  !
1181  !
1182  SUBROUTINE qes_bcast_basisSetItem(obj, ionode_id, comm )
1183    !
1184    IMPLICIT NONE
1185    !
1186    TYPE(basisSetItem_type), INTENT(INOUT) :: obj
1187    INTEGER, INTENT(IN) :: ionode_id, comm
1188    !
1189    CALL mp_bcast(obj%tagname, ionode_id, comm)
1190    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1191    CALL mp_bcast(obj%lread, ionode_id, comm)
1192    !
1193    CALL mp_bcast(obj%nr1, ionode_id, comm)
1194    CALL mp_bcast(obj%nr2, ionode_id, comm)
1195    CALL mp_bcast(obj%nr3, ionode_id, comm)
1196    CALL mp_bcast(obj%basisSetItem, ionode_id, comm)
1197    !
1198  END SUBROUTINE qes_bcast_basisSetItem
1199  !
1200  !
1201  SUBROUTINE qes_bcast_reciprocal_lattice(obj, ionode_id, comm )
1202    !
1203    IMPLICIT NONE
1204    !
1205    TYPE(reciprocal_lattice_type), INTENT(INOUT) :: obj
1206    INTEGER, INTENT(IN) :: ionode_id, comm
1207    !
1208    CALL mp_bcast(obj%tagname, ionode_id, comm)
1209    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1210    CALL mp_bcast(obj%lread, ionode_id, comm)
1211    !
1212    CALL mp_bcast(obj%b1, ionode_id, comm)
1213    CALL mp_bcast(obj%b2, ionode_id, comm)
1214    CALL mp_bcast(obj%b3, ionode_id, comm)
1215    !
1216  END SUBROUTINE qes_bcast_reciprocal_lattice
1217  !
1218  !
1219  SUBROUTINE qes_bcast_electron_control(obj, ionode_id, comm )
1220    !
1221    IMPLICIT NONE
1222    !
1223    TYPE(electron_control_type), INTENT(INOUT) :: obj
1224    INTEGER, INTENT(IN) :: ionode_id, comm
1225    !
1226    CALL mp_bcast(obj%tagname, ionode_id, comm)
1227    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1228    CALL mp_bcast(obj%lread, ionode_id, comm)
1229    !
1230    CALL mp_bcast(obj%diagonalization, ionode_id, comm)
1231    CALL mp_bcast(obj%mixing_mode, ionode_id, comm)
1232    CALL mp_bcast(obj%mixing_beta, ionode_id, comm)
1233    CALL mp_bcast(obj%conv_thr, ionode_id, comm)
1234    CALL mp_bcast(obj%mixing_ndim, ionode_id, comm)
1235    CALL mp_bcast(obj%max_nstep, ionode_id, comm)
1236    CALL mp_bcast(obj%real_space_q_ispresent, ionode_id, comm)
1237    IF (obj%real_space_q_ispresent) &
1238      CALL mp_bcast(obj%real_space_q, ionode_id, comm)
1239    CALL mp_bcast(obj%real_space_beta_ispresent, ionode_id, comm)
1240    IF (obj%real_space_beta_ispresent) &
1241      CALL mp_bcast(obj%real_space_beta, ionode_id, comm)
1242    CALL mp_bcast(obj%tq_smoothing, ionode_id, comm)
1243    CALL mp_bcast(obj%tbeta_smoothing, ionode_id, comm)
1244    CALL mp_bcast(obj%diago_thr_init, ionode_id, comm)
1245    CALL mp_bcast(obj%diago_full_acc, ionode_id, comm)
1246    CALL mp_bcast(obj%diago_cg_maxiter_ispresent, ionode_id, comm)
1247    IF (obj%diago_cg_maxiter_ispresent) &
1248      CALL mp_bcast(obj%diago_cg_maxiter, ionode_id, comm)
1249    CALL mp_bcast(obj%diago_ppcg_maxiter_ispresent, ionode_id, comm)
1250    IF (obj%diago_ppcg_maxiter_ispresent) &
1251      CALL mp_bcast(obj%diago_ppcg_maxiter, ionode_id, comm)
1252    CALL mp_bcast(obj%diago_david_ndim_ispresent, ionode_id, comm)
1253    IF (obj%diago_david_ndim_ispresent) &
1254      CALL mp_bcast(obj%diago_david_ndim, ionode_id, comm)
1255    !
1256  END SUBROUTINE qes_bcast_electron_control
1257  !
1258  !
1259  SUBROUTINE qes_bcast_k_points_IBZ(obj, ionode_id, comm )
1260    !
1261    IMPLICIT NONE
1262    !
1263    TYPE(k_points_IBZ_type), INTENT(INOUT) :: obj
1264    INTEGER, INTENT(IN) :: ionode_id, comm
1265    INTEGER :: i
1266    !
1267    CALL mp_bcast(obj%tagname, ionode_id, comm)
1268    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1269    CALL mp_bcast(obj%lread, ionode_id, comm)
1270    !
1271    CALL mp_bcast(obj%monkhorst_pack_ispresent, ionode_id, comm)
1272    IF (obj%monkhorst_pack_ispresent) &
1273      CALL qes_bcast_monkhorst_pack(obj%monkhorst_pack, ionode_id, comm)
1274    CALL mp_bcast(obj%nk_ispresent, ionode_id, comm)
1275    IF (obj%nk_ispresent) &
1276      CALL mp_bcast(obj%nk, ionode_id, comm)
1277    CALL mp_bcast(obj%k_point_ispresent, ionode_id, comm)
1278    IF (obj%k_point_ispresent) THEN
1279      CALL mp_bcast(obj%ndim_k_point, ionode_id, comm)
1280      IF (.NOT.ionode) ALLOCATE(obj%k_point(obj%ndim_k_point))
1281      DO i=1, obj%ndim_k_point
1282        CALL qes_bcast_k_point(obj%k_point(i), ionode_id, comm)
1283      ENDDO
1284    ENDIF
1285    !
1286  END SUBROUTINE qes_bcast_k_points_IBZ
1287  !
1288  !
1289  SUBROUTINE qes_bcast_monkhorst_pack(obj, ionode_id, comm )
1290    !
1291    IMPLICIT NONE
1292    !
1293    TYPE(monkhorst_pack_type), INTENT(INOUT) :: obj
1294    INTEGER, INTENT(IN) :: ionode_id, comm
1295    !
1296    CALL mp_bcast(obj%tagname, ionode_id, comm)
1297    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1298    CALL mp_bcast(obj%lread, ionode_id, comm)
1299    !
1300    CALL mp_bcast(obj%nk1, ionode_id, comm)
1301    CALL mp_bcast(obj%nk2, ionode_id, comm)
1302    CALL mp_bcast(obj%nk3, ionode_id, comm)
1303    CALL mp_bcast(obj%k1, ionode_id, comm)
1304    CALL mp_bcast(obj%k2, ionode_id, comm)
1305    CALL mp_bcast(obj%k3, ionode_id, comm)
1306    CALL mp_bcast(obj%monkhorst_pack, ionode_id, comm)
1307    !
1308  END SUBROUTINE qes_bcast_monkhorst_pack
1309  !
1310  !
1311  SUBROUTINE qes_bcast_k_point(obj, ionode_id, comm )
1312    !
1313    IMPLICIT NONE
1314    !
1315    TYPE(k_point_type), INTENT(INOUT) :: obj
1316    INTEGER, INTENT(IN) :: ionode_id, comm
1317    !
1318    CALL mp_bcast(obj%tagname, ionode_id, comm)
1319    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1320    CALL mp_bcast(obj%lread, ionode_id, comm)
1321    !
1322    CALL mp_bcast(obj%weight_ispresent, ionode_id, comm)
1323    IF (obj%weight_ispresent) &
1324      CALL mp_bcast(obj%weight, ionode_id, comm)
1325    CALL mp_bcast(obj%label_ispresent, ionode_id, comm)
1326    IF (obj%label_ispresent) &
1327      CALL mp_bcast(obj%label, ionode_id, comm)
1328    CALL mp_bcast(obj%k_point, ionode_id, comm)
1329    !
1330  END SUBROUTINE qes_bcast_k_point
1331  !
1332  !
1333  SUBROUTINE qes_bcast_ion_control(obj, ionode_id, comm )
1334    !
1335    IMPLICIT NONE
1336    !
1337    TYPE(ion_control_type), INTENT(INOUT) :: obj
1338    INTEGER, INTENT(IN) :: ionode_id, comm
1339    !
1340    CALL mp_bcast(obj%tagname, ionode_id, comm)
1341    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1342    CALL mp_bcast(obj%lread, ionode_id, comm)
1343    !
1344    CALL mp_bcast(obj%ion_dynamics, ionode_id, comm)
1345    CALL mp_bcast(obj%upscale_ispresent, ionode_id, comm)
1346    IF (obj%upscale_ispresent) &
1347      CALL mp_bcast(obj%upscale, ionode_id, comm)
1348    CALL mp_bcast(obj%remove_rigid_rot_ispresent, ionode_id, comm)
1349    IF (obj%remove_rigid_rot_ispresent) &
1350      CALL mp_bcast(obj%remove_rigid_rot, ionode_id, comm)
1351    CALL mp_bcast(obj%refold_pos_ispresent, ionode_id, comm)
1352    IF (obj%refold_pos_ispresent) &
1353      CALL mp_bcast(obj%refold_pos, ionode_id, comm)
1354    CALL mp_bcast(obj%bfgs_ispresent, ionode_id, comm)
1355    IF (obj%bfgs_ispresent) &
1356      CALL qes_bcast_bfgs(obj%bfgs, ionode_id, comm)
1357    CALL mp_bcast(obj%md_ispresent, ionode_id, comm)
1358    IF (obj%md_ispresent) &
1359      CALL qes_bcast_md(obj%md, ionode_id, comm)
1360    !
1361  END SUBROUTINE qes_bcast_ion_control
1362  !
1363  !
1364  SUBROUTINE qes_bcast_bfgs(obj, ionode_id, comm )
1365    !
1366    IMPLICIT NONE
1367    !
1368    TYPE(bfgs_type), INTENT(INOUT) :: obj
1369    INTEGER, INTENT(IN) :: ionode_id, comm
1370    !
1371    CALL mp_bcast(obj%tagname, ionode_id, comm)
1372    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1373    CALL mp_bcast(obj%lread, ionode_id, comm)
1374    !
1375    CALL mp_bcast(obj%ndim, ionode_id, comm)
1376    CALL mp_bcast(obj%trust_radius_min, ionode_id, comm)
1377    CALL mp_bcast(obj%trust_radius_max, ionode_id, comm)
1378    CALL mp_bcast(obj%trust_radius_init, ionode_id, comm)
1379    CALL mp_bcast(obj%w1, ionode_id, comm)
1380    CALL mp_bcast(obj%w2, ionode_id, comm)
1381    !
1382  END SUBROUTINE qes_bcast_bfgs
1383  !
1384  !
1385  SUBROUTINE qes_bcast_md(obj, ionode_id, comm )
1386    !
1387    IMPLICIT NONE
1388    !
1389    TYPE(md_type), INTENT(INOUT) :: obj
1390    INTEGER, INTENT(IN) :: ionode_id, comm
1391    !
1392    CALL mp_bcast(obj%tagname, ionode_id, comm)
1393    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1394    CALL mp_bcast(obj%lread, ionode_id, comm)
1395    !
1396    CALL mp_bcast(obj%pot_extrapolation, ionode_id, comm)
1397    CALL mp_bcast(obj%wfc_extrapolation, ionode_id, comm)
1398    CALL mp_bcast(obj%ion_temperature, ionode_id, comm)
1399    CALL mp_bcast(obj%timestep, ionode_id, comm)
1400    CALL mp_bcast(obj%tempw, ionode_id, comm)
1401    CALL mp_bcast(obj%tolp, ionode_id, comm)
1402    CALL mp_bcast(obj%deltaT, ionode_id, comm)
1403    CALL mp_bcast(obj%nraise, ionode_id, comm)
1404    !
1405  END SUBROUTINE qes_bcast_md
1406  !
1407  !
1408  SUBROUTINE qes_bcast_cell_control(obj, ionode_id, comm )
1409    !
1410    IMPLICIT NONE
1411    !
1412    TYPE(cell_control_type), INTENT(INOUT) :: obj
1413    INTEGER, INTENT(IN) :: ionode_id, comm
1414    !
1415    CALL mp_bcast(obj%tagname, ionode_id, comm)
1416    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1417    CALL mp_bcast(obj%lread, ionode_id, comm)
1418    !
1419    CALL mp_bcast(obj%cell_dynamics, ionode_id, comm)
1420    CALL mp_bcast(obj%pressure, ionode_id, comm)
1421    CALL mp_bcast(obj%wmass_ispresent, ionode_id, comm)
1422    IF (obj%wmass_ispresent) &
1423      CALL mp_bcast(obj%wmass, ionode_id, comm)
1424    CALL mp_bcast(obj%cell_factor_ispresent, ionode_id, comm)
1425    IF (obj%cell_factor_ispresent) &
1426      CALL mp_bcast(obj%cell_factor, ionode_id, comm)
1427    CALL mp_bcast(obj%fix_volume_ispresent, ionode_id, comm)
1428    IF (obj%fix_volume_ispresent) &
1429      CALL mp_bcast(obj%fix_volume, ionode_id, comm)
1430    CALL mp_bcast(obj%fix_area_ispresent, ionode_id, comm)
1431    IF (obj%fix_area_ispresent) &
1432      CALL mp_bcast(obj%fix_area, ionode_id, comm)
1433    CALL mp_bcast(obj%isotropic_ispresent, ionode_id, comm)
1434    IF (obj%isotropic_ispresent) &
1435      CALL mp_bcast(obj%isotropic, ionode_id, comm)
1436    CALL mp_bcast(obj%free_cell_ispresent, ionode_id, comm)
1437    IF (obj%free_cell_ispresent) &
1438      CALL qes_bcast_integerMatrix(obj%free_cell, ionode_id, comm)
1439    !
1440  END SUBROUTINE qes_bcast_cell_control
1441  !
1442  !
1443  SUBROUTINE qes_bcast_symmetry_flags(obj, ionode_id, comm )
1444    !
1445    IMPLICIT NONE
1446    !
1447    TYPE(symmetry_flags_type), INTENT(INOUT) :: obj
1448    INTEGER, INTENT(IN) :: ionode_id, comm
1449    !
1450    CALL mp_bcast(obj%tagname, ionode_id, comm)
1451    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1452    CALL mp_bcast(obj%lread, ionode_id, comm)
1453    !
1454    CALL mp_bcast(obj%nosym, ionode_id, comm)
1455    CALL mp_bcast(obj%nosym_evc, ionode_id, comm)
1456    CALL mp_bcast(obj%noinv, ionode_id, comm)
1457    CALL mp_bcast(obj%no_t_rev, ionode_id, comm)
1458    CALL mp_bcast(obj%force_symmorphic, ionode_id, comm)
1459    CALL mp_bcast(obj%use_all_frac, ionode_id, comm)
1460    !
1461  END SUBROUTINE qes_bcast_symmetry_flags
1462  !
1463  !
1464  SUBROUTINE qes_bcast_boundary_conditions(obj, ionode_id, comm )
1465    !
1466    IMPLICIT NONE
1467    !
1468    TYPE(boundary_conditions_type), INTENT(INOUT) :: obj
1469    INTEGER, INTENT(IN) :: ionode_id, comm
1470    !
1471    CALL mp_bcast(obj%tagname, ionode_id, comm)
1472    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1473    CALL mp_bcast(obj%lread, ionode_id, comm)
1474    !
1475    CALL mp_bcast(obj%assume_isolated, ionode_id, comm)
1476    CALL mp_bcast(obj%esm_ispresent, ionode_id, comm)
1477    IF (obj%esm_ispresent) &
1478      CALL qes_bcast_esm(obj%esm, ionode_id, comm)
1479    CALL mp_bcast(obj%fcp_opt_ispresent, ionode_id, comm)
1480    IF (obj%fcp_opt_ispresent) &
1481      CALL mp_bcast(obj%fcp_opt, ionode_id, comm)
1482    CALL mp_bcast(obj%fcp_mu_ispresent, ionode_id, comm)
1483    IF (obj%fcp_mu_ispresent) &
1484      CALL mp_bcast(obj%fcp_mu, ionode_id, comm)
1485    !
1486  END SUBROUTINE qes_bcast_boundary_conditions
1487  !
1488  !
1489  SUBROUTINE qes_bcast_esm(obj, ionode_id, comm )
1490    !
1491    IMPLICIT NONE
1492    !
1493    TYPE(esm_type), INTENT(INOUT) :: obj
1494    INTEGER, INTENT(IN) :: ionode_id, comm
1495    !
1496    CALL mp_bcast(obj%tagname, ionode_id, comm)
1497    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1498    CALL mp_bcast(obj%lread, ionode_id, comm)
1499    !
1500    CALL mp_bcast(obj%bc, ionode_id, comm)
1501    CALL mp_bcast(obj%nfit, ionode_id, comm)
1502    CALL mp_bcast(obj%w, ionode_id, comm)
1503    CALL mp_bcast(obj%efield, ionode_id, comm)
1504    !
1505  END SUBROUTINE qes_bcast_esm
1506  !
1507  !
1508  SUBROUTINE qes_bcast_ekin_functional(obj, ionode_id, comm )
1509    !
1510    IMPLICIT NONE
1511    !
1512    TYPE(ekin_functional_type), INTENT(INOUT) :: obj
1513    INTEGER, INTENT(IN) :: ionode_id, comm
1514    !
1515    CALL mp_bcast(obj%tagname, ionode_id, comm)
1516    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1517    CALL mp_bcast(obj%lread, ionode_id, comm)
1518    !
1519    CALL mp_bcast(obj%ecfixed, ionode_id, comm)
1520    CALL mp_bcast(obj%qcutz, ionode_id, comm)
1521    CALL mp_bcast(obj%q2sigma, ionode_id, comm)
1522    !
1523  END SUBROUTINE qes_bcast_ekin_functional
1524  !
1525  !
1526  SUBROUTINE qes_bcast_spin_constraints(obj, ionode_id, comm )
1527    !
1528    IMPLICIT NONE
1529    !
1530    TYPE(spin_constraints_type), INTENT(INOUT) :: obj
1531    INTEGER, INTENT(IN) :: ionode_id, comm
1532    !
1533    CALL mp_bcast(obj%tagname, ionode_id, comm)
1534    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1535    CALL mp_bcast(obj%lread, ionode_id, comm)
1536    !
1537    CALL mp_bcast(obj%spin_constraints, ionode_id, comm)
1538    CALL mp_bcast(obj%lagrange_multiplier, ionode_id, comm)
1539    CALL mp_bcast(obj%target_magnetization_ispresent, ionode_id, comm)
1540    IF (obj%target_magnetization_ispresent) &
1541      CALL mp_bcast(obj%target_magnetization, ionode_id, comm)
1542    !
1543  END SUBROUTINE qes_bcast_spin_constraints
1544  !
1545  !
1546  SUBROUTINE qes_bcast_electric_field(obj, ionode_id, comm )
1547    !
1548    IMPLICIT NONE
1549    !
1550    TYPE(electric_field_type), INTENT(INOUT) :: obj
1551    INTEGER, INTENT(IN) :: ionode_id, comm
1552    !
1553    CALL mp_bcast(obj%tagname, ionode_id, comm)
1554    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1555    CALL mp_bcast(obj%lread, ionode_id, comm)
1556    !
1557    CALL mp_bcast(obj%electric_potential, ionode_id, comm)
1558    CALL mp_bcast(obj%dipole_correction_ispresent, ionode_id, comm)
1559    IF (obj%dipole_correction_ispresent) &
1560      CALL mp_bcast(obj%dipole_correction, ionode_id, comm)
1561    CALL mp_bcast(obj%gate_settings_ispresent, ionode_id, comm)
1562    IF (obj%gate_settings_ispresent) &
1563      CALL qes_bcast_gate_settings(obj%gate_settings, ionode_id, comm)
1564    CALL mp_bcast(obj%electric_field_direction_ispresent, ionode_id, comm)
1565    IF (obj%electric_field_direction_ispresent) &
1566      CALL mp_bcast(obj%electric_field_direction, ionode_id, comm)
1567    CALL mp_bcast(obj%potential_max_position_ispresent, ionode_id, comm)
1568    IF (obj%potential_max_position_ispresent) &
1569      CALL mp_bcast(obj%potential_max_position, ionode_id, comm)
1570    CALL mp_bcast(obj%potential_decrease_width_ispresent, ionode_id, comm)
1571    IF (obj%potential_decrease_width_ispresent) &
1572      CALL mp_bcast(obj%potential_decrease_width, ionode_id, comm)
1573    CALL mp_bcast(obj%electric_field_amplitude_ispresent, ionode_id, comm)
1574    IF (obj%electric_field_amplitude_ispresent) &
1575      CALL mp_bcast(obj%electric_field_amplitude, ionode_id, comm)
1576    CALL mp_bcast(obj%electric_field_vector_ispresent, ionode_id, comm)
1577    IF (obj%electric_field_vector_ispresent) &
1578      CALL mp_bcast(obj%electric_field_vector, ionode_id, comm)
1579    CALL mp_bcast(obj%nk_per_string_ispresent, ionode_id, comm)
1580    IF (obj%nk_per_string_ispresent) &
1581      CALL mp_bcast(obj%nk_per_string, ionode_id, comm)
1582    CALL mp_bcast(obj%n_berry_cycles_ispresent, ionode_id, comm)
1583    IF (obj%n_berry_cycles_ispresent) &
1584      CALL mp_bcast(obj%n_berry_cycles, ionode_id, comm)
1585    !
1586  END SUBROUTINE qes_bcast_electric_field
1587  !
1588  !
1589  SUBROUTINE qes_bcast_gate_settings(obj, ionode_id, comm )
1590    !
1591    IMPLICIT NONE
1592    !
1593    TYPE(gate_settings_type), INTENT(INOUT) :: obj
1594    INTEGER, INTENT(IN) :: ionode_id, comm
1595    !
1596    CALL mp_bcast(obj%tagname, ionode_id, comm)
1597    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1598    CALL mp_bcast(obj%lread, ionode_id, comm)
1599    !
1600    CALL mp_bcast(obj%use_gate, ionode_id, comm)
1601    CALL mp_bcast(obj%zgate_ispresent, ionode_id, comm)
1602    IF (obj%zgate_ispresent) &
1603      CALL mp_bcast(obj%zgate, ionode_id, comm)
1604    CALL mp_bcast(obj%relaxz_ispresent, ionode_id, comm)
1605    IF (obj%relaxz_ispresent) &
1606      CALL mp_bcast(obj%relaxz, ionode_id, comm)
1607    CALL mp_bcast(obj%block_ispresent, ionode_id, comm)
1608    IF (obj%block_ispresent) &
1609      CALL mp_bcast(obj%block, ionode_id, comm)
1610    CALL mp_bcast(obj%block_1_ispresent, ionode_id, comm)
1611    IF (obj%block_1_ispresent) &
1612      CALL mp_bcast(obj%block_1, ionode_id, comm)
1613    CALL mp_bcast(obj%block_2_ispresent, ionode_id, comm)
1614    IF (obj%block_2_ispresent) &
1615      CALL mp_bcast(obj%block_2, ionode_id, comm)
1616    CALL mp_bcast(obj%block_height_ispresent, ionode_id, comm)
1617    IF (obj%block_height_ispresent) &
1618      CALL mp_bcast(obj%block_height, ionode_id, comm)
1619    !
1620  END SUBROUTINE qes_bcast_gate_settings
1621  !
1622  !
1623  SUBROUTINE qes_bcast_atomic_constraints(obj, ionode_id, comm )
1624    !
1625    IMPLICIT NONE
1626    !
1627    TYPE(atomic_constraints_type), INTENT(INOUT) :: obj
1628    INTEGER, INTENT(IN) :: ionode_id, comm
1629    INTEGER :: i
1630    !
1631    CALL mp_bcast(obj%tagname, ionode_id, comm)
1632    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1633    CALL mp_bcast(obj%lread, ionode_id, comm)
1634    !
1635    CALL mp_bcast(obj%num_of_constraints, ionode_id, comm)
1636    CALL mp_bcast(obj%tolerance, ionode_id, comm)
1637    CALL mp_bcast(obj%ndim_atomic_constraint, ionode_id, comm)
1638    IF (.NOT.ionode) ALLOCATE(obj%atomic_constraint(obj%ndim_atomic_constraint))
1639    DO i=1, obj%ndim_atomic_constraint
1640      CALL qes_bcast_atomic_constraint(obj%atomic_constraint(i), ionode_id, comm)
1641    ENDDO
1642    !
1643  END SUBROUTINE qes_bcast_atomic_constraints
1644  !
1645  !
1646  SUBROUTINE qes_bcast_atomic_constraint(obj, ionode_id, comm )
1647    !
1648    IMPLICIT NONE
1649    !
1650    TYPE(atomic_constraint_type), INTENT(INOUT) :: obj
1651    INTEGER, INTENT(IN) :: ionode_id, comm
1652    !
1653    CALL mp_bcast(obj%tagname, ionode_id, comm)
1654    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1655    CALL mp_bcast(obj%lread, ionode_id, comm)
1656    !
1657    CALL mp_bcast(obj%constr_parms, ionode_id, comm)
1658    CALL mp_bcast(obj%constr_type, ionode_id, comm)
1659    CALL mp_bcast(obj%constr_target, ionode_id, comm)
1660    !
1661  END SUBROUTINE qes_bcast_atomic_constraint
1662  !
1663  !
1664  SUBROUTINE qes_bcast_inputOccupations(obj, ionode_id, comm )
1665    !
1666    IMPLICIT NONE
1667    !
1668    TYPE(inputOccupations_type), INTENT(INOUT) :: obj
1669    INTEGER, INTENT(IN) :: ionode_id, comm
1670    !
1671    CALL mp_bcast(obj%tagname, ionode_id, comm)
1672    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1673    CALL mp_bcast(obj%lread, ionode_id, comm)
1674    !
1675    CALL mp_bcast(obj%ispin, ionode_id, comm)
1676    CALL mp_bcast(obj%spin_factor, ionode_id, comm)
1677    CALL mp_bcast(obj%size, ionode_id, comm)
1678    IF (.NOT.ionode) ALLOCATE(obj%inputOccupations(obj%size))
1679    CALL mp_bcast(obj%inputOccupations, ionode_id, comm)
1680    !
1681  END SUBROUTINE qes_bcast_inputOccupations
1682  !
1683  !
1684  SUBROUTINE qes_bcast_outputElectricField(obj, ionode_id, comm )
1685    !
1686    IMPLICIT NONE
1687    !
1688    TYPE(outputElectricField_type), INTENT(INOUT) :: obj
1689    INTEGER, INTENT(IN) :: ionode_id, comm
1690    !
1691    CALL mp_bcast(obj%tagname, ionode_id, comm)
1692    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1693    CALL mp_bcast(obj%lread, ionode_id, comm)
1694    !
1695    CALL mp_bcast(obj%BerryPhase_ispresent, ionode_id, comm)
1696    IF (obj%BerryPhase_ispresent) &
1697      CALL qes_bcast_BerryPhaseOutput(obj%BerryPhase, ionode_id, comm)
1698    CALL mp_bcast(obj%finiteElectricFieldInfo_ispresent, ionode_id, comm)
1699    IF (obj%finiteElectricFieldInfo_ispresent) &
1700      CALL qes_bcast_finiteFieldOut(obj%finiteElectricFieldInfo, ionode_id, comm)
1701    CALL mp_bcast(obj%dipoleInfo_ispresent, ionode_id, comm)
1702    IF (obj%dipoleInfo_ispresent) &
1703      CALL qes_bcast_dipoleOutput(obj%dipoleInfo, ionode_id, comm)
1704    CALL mp_bcast(obj%gateInfo_ispresent, ionode_id, comm)
1705    IF (obj%gateInfo_ispresent) &
1706      CALL qes_bcast_gateInfo(obj%gateInfo, ionode_id, comm)
1707    !
1708  END SUBROUTINE qes_bcast_outputElectricField
1709  !
1710  !
1711  SUBROUTINE qes_bcast_BerryPhaseOutput(obj, ionode_id, comm )
1712    !
1713    IMPLICIT NONE
1714    !
1715    TYPE(BerryPhaseOutput_type), INTENT(INOUT) :: obj
1716    INTEGER, INTENT(IN) :: ionode_id, comm
1717    INTEGER :: i
1718    !
1719    CALL mp_bcast(obj%tagname, ionode_id, comm)
1720    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1721    CALL mp_bcast(obj%lread, ionode_id, comm)
1722    !
1723    CALL qes_bcast_polarization(obj%totalPolarization, ionode_id, comm)
1724    CALL qes_bcast_phase(obj%totalPhase, ionode_id, comm)
1725    CALL mp_bcast(obj%ndim_ionicPolarization, ionode_id, comm)
1726    IF (.NOT.ionode) ALLOCATE(obj%ionicPolarization(obj%ndim_ionicPolarization))
1727    DO i=1, obj%ndim_ionicPolarization
1728      CALL qes_bcast_ionicPolarization(obj%ionicPolarization(i), ionode_id, comm)
1729    ENDDO
1730    CALL mp_bcast(obj%ndim_electronicPolarization, ionode_id, comm)
1731    IF (.NOT.ionode) ALLOCATE(obj%electronicPolarization(obj%ndim_electronicPolarization))
1732    DO i=1, obj%ndim_electronicPolarization
1733      CALL qes_bcast_electronicPolarization(obj%electronicPolarization(i), ionode_id, comm)
1734    ENDDO
1735    !
1736  END SUBROUTINE qes_bcast_BerryPhaseOutput
1737  !
1738  !
1739  SUBROUTINE qes_bcast_dipoleOutput(obj, ionode_id, comm )
1740    !
1741    IMPLICIT NONE
1742    !
1743    TYPE(dipoleOutput_type), INTENT(INOUT) :: obj
1744    INTEGER, INTENT(IN) :: ionode_id, comm
1745    !
1746    CALL mp_bcast(obj%tagname, ionode_id, comm)
1747    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1748    CALL mp_bcast(obj%lread, ionode_id, comm)
1749    !
1750    CALL mp_bcast(obj%idir, ionode_id, comm)
1751    CALL qes_bcast_scalarQuantity(obj%dipole, ionode_id, comm)
1752    CALL qes_bcast_scalarQuantity(obj%ion_dipole, ionode_id, comm)
1753    CALL qes_bcast_scalarQuantity(obj%elec_dipole, ionode_id, comm)
1754    CALL qes_bcast_scalarQuantity(obj%dipoleField, ionode_id, comm)
1755    CALL qes_bcast_scalarQuantity(obj%potentialAmp, ionode_id, comm)
1756    CALL qes_bcast_scalarQuantity(obj%totalLength, ionode_id, comm)
1757    !
1758  END SUBROUTINE qes_bcast_dipoleOutput
1759  !
1760  !
1761  SUBROUTINE qes_bcast_finiteFieldOut(obj, ionode_id, comm )
1762    !
1763    IMPLICIT NONE
1764    !
1765    TYPE(finiteFieldOut_type), INTENT(INOUT) :: obj
1766    INTEGER, INTENT(IN) :: ionode_id, comm
1767    !
1768    CALL mp_bcast(obj%tagname, ionode_id, comm)
1769    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1770    CALL mp_bcast(obj%lread, ionode_id, comm)
1771    !
1772    CALL mp_bcast(obj%electronicDipole, ionode_id, comm)
1773    CALL mp_bcast(obj%ionicDipole, ionode_id, comm)
1774    !
1775  END SUBROUTINE qes_bcast_finiteFieldOut
1776  !
1777  !
1778  SUBROUTINE qes_bcast_polarization(obj, ionode_id, comm )
1779    !
1780    IMPLICIT NONE
1781    !
1782    TYPE(polarization_type), INTENT(INOUT) :: obj
1783    INTEGER, INTENT(IN) :: ionode_id, comm
1784    !
1785    CALL mp_bcast(obj%tagname, ionode_id, comm)
1786    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1787    CALL mp_bcast(obj%lread, ionode_id, comm)
1788    !
1789    CALL qes_bcast_scalarQuantity(obj%polarization, ionode_id, comm)
1790    CALL mp_bcast(obj%modulus, ionode_id, comm)
1791    CALL mp_bcast(obj%direction, ionode_id, comm)
1792    !
1793  END SUBROUTINE qes_bcast_polarization
1794  !
1795  !
1796  SUBROUTINE qes_bcast_ionicPolarization(obj, ionode_id, comm )
1797    !
1798    IMPLICIT NONE
1799    !
1800    TYPE(ionicPolarization_type), INTENT(INOUT) :: obj
1801    INTEGER, INTENT(IN) :: ionode_id, comm
1802    !
1803    CALL mp_bcast(obj%tagname, ionode_id, comm)
1804    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1805    CALL mp_bcast(obj%lread, ionode_id, comm)
1806    !
1807    CALL qes_bcast_atom(obj%ion, ionode_id, comm)
1808    CALL mp_bcast(obj%charge, ionode_id, comm)
1809    CALL qes_bcast_phase(obj%phase, ionode_id, comm)
1810    !
1811  END SUBROUTINE qes_bcast_ionicPolarization
1812  !
1813  !
1814  SUBROUTINE qes_bcast_electronicPolarization(obj, ionode_id, comm )
1815    !
1816    IMPLICIT NONE
1817    !
1818    TYPE(electronicPolarization_type), INTENT(INOUT) :: obj
1819    INTEGER, INTENT(IN) :: ionode_id, comm
1820    !
1821    CALL mp_bcast(obj%tagname, ionode_id, comm)
1822    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1823    CALL mp_bcast(obj%lread, ionode_id, comm)
1824    !
1825    CALL qes_bcast_k_point(obj%firstKeyPoint, ionode_id, comm)
1826    CALL mp_bcast(obj%spin_ispresent, ionode_id, comm)
1827    IF (obj%spin_ispresent) &
1828      CALL mp_bcast(obj%spin, ionode_id, comm)
1829    CALL qes_bcast_phase(obj%phase, ionode_id, comm)
1830    !
1831  END SUBROUTINE qes_bcast_electronicPolarization
1832  !
1833  !
1834  SUBROUTINE qes_bcast_phase(obj, ionode_id, comm )
1835    !
1836    IMPLICIT NONE
1837    !
1838    TYPE(phase_type), INTENT(INOUT) :: obj
1839    INTEGER, INTENT(IN) :: ionode_id, comm
1840    !
1841    CALL mp_bcast(obj%tagname, ionode_id, comm)
1842    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1843    CALL mp_bcast(obj%lread, ionode_id, comm)
1844    !
1845    CALL mp_bcast(obj%ionic_ispresent, ionode_id, comm)
1846    IF (obj%ionic_ispresent) &
1847      CALL mp_bcast(obj%ionic, ionode_id, comm)
1848    CALL mp_bcast(obj%electronic_ispresent, ionode_id, comm)
1849    IF (obj%electronic_ispresent) &
1850      CALL mp_bcast(obj%electronic, ionode_id, comm)
1851    CALL mp_bcast(obj%modulus_ispresent, ionode_id, comm)
1852    IF (obj%modulus_ispresent) &
1853      CALL mp_bcast(obj%modulus, ionode_id, comm)
1854    CALL mp_bcast(obj%phase, ionode_id, comm)
1855    !
1856  END SUBROUTINE qes_bcast_phase
1857  !
1858  !
1859  SUBROUTINE qes_bcast_gateInfo(obj, ionode_id, comm )
1860    !
1861    IMPLICIT NONE
1862    !
1863    TYPE(gateInfo_type), INTENT(INOUT) :: obj
1864    INTEGER, INTENT(IN) :: ionode_id, comm
1865    !
1866    CALL mp_bcast(obj%tagname, ionode_id, comm)
1867    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1868    CALL mp_bcast(obj%lread, ionode_id, comm)
1869    !
1870    CALL mp_bcast(obj%pot_prefactor, ionode_id, comm)
1871    CALL mp_bcast(obj%gate_zpos, ionode_id, comm)
1872    CALL mp_bcast(obj%gate_gate_term, ionode_id, comm)
1873    CALL mp_bcast(obj%gatefieldEnergy, ionode_id, comm)
1874    !
1875  END SUBROUTINE qes_bcast_gateInfo
1876  !
1877  !
1878  SUBROUTINE qes_bcast_convergence_info(obj, ionode_id, comm )
1879    !
1880    IMPLICIT NONE
1881    !
1882    TYPE(convergence_info_type), INTENT(INOUT) :: obj
1883    INTEGER, INTENT(IN) :: ionode_id, comm
1884    !
1885    CALL mp_bcast(obj%tagname, ionode_id, comm)
1886    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1887    CALL mp_bcast(obj%lread, ionode_id, comm)
1888    !
1889    CALL qes_bcast_scf_conv(obj%scf_conv, ionode_id, comm)
1890    CALL mp_bcast(obj%opt_conv_ispresent, ionode_id, comm)
1891    IF (obj%opt_conv_ispresent) &
1892      CALL qes_bcast_opt_conv(obj%opt_conv, ionode_id, comm)
1893    !
1894  END SUBROUTINE qes_bcast_convergence_info
1895  !
1896  !
1897  SUBROUTINE qes_bcast_scf_conv(obj, ionode_id, comm )
1898    !
1899    IMPLICIT NONE
1900    !
1901    TYPE(scf_conv_type), INTENT(INOUT) :: obj
1902    INTEGER, INTENT(IN) :: ionode_id, comm
1903    !
1904    CALL mp_bcast(obj%tagname, ionode_id, comm)
1905    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1906    CALL mp_bcast(obj%lread, ionode_id, comm)
1907    !
1908    CALL mp_bcast(obj%convergence_achieved, ionode_id, comm)
1909    CALL mp_bcast(obj%n_scf_steps, ionode_id, comm)
1910    CALL mp_bcast(obj%scf_error, ionode_id, comm)
1911    !
1912  END SUBROUTINE qes_bcast_scf_conv
1913  !
1914  !
1915  SUBROUTINE qes_bcast_opt_conv(obj, ionode_id, comm )
1916    !
1917    IMPLICIT NONE
1918    !
1919    TYPE(opt_conv_type), INTENT(INOUT) :: obj
1920    INTEGER, INTENT(IN) :: ionode_id, comm
1921    !
1922    CALL mp_bcast(obj%tagname, ionode_id, comm)
1923    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1924    CALL mp_bcast(obj%lread, ionode_id, comm)
1925    !
1926    CALL mp_bcast(obj%convergence_achieved, ionode_id, comm)
1927    CALL mp_bcast(obj%n_opt_steps, ionode_id, comm)
1928    CALL mp_bcast(obj%grad_norm, ionode_id, comm)
1929    !
1930  END SUBROUTINE qes_bcast_opt_conv
1931  !
1932  !
1933  SUBROUTINE qes_bcast_algorithmic_info(obj, ionode_id, comm )
1934    !
1935    IMPLICIT NONE
1936    !
1937    TYPE(algorithmic_info_type), INTENT(INOUT) :: obj
1938    INTEGER, INTENT(IN) :: ionode_id, comm
1939    !
1940    CALL mp_bcast(obj%tagname, ionode_id, comm)
1941    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1942    CALL mp_bcast(obj%lread, ionode_id, comm)
1943    !
1944    CALL mp_bcast(obj%real_space_q, ionode_id, comm)
1945    CALL mp_bcast(obj%real_space_beta_ispresent, ionode_id, comm)
1946    IF (obj%real_space_beta_ispresent) &
1947      CALL mp_bcast(obj%real_space_beta, ionode_id, comm)
1948    CALL mp_bcast(obj%uspp, ionode_id, comm)
1949    CALL mp_bcast(obj%paw, ionode_id, comm)
1950    !
1951  END SUBROUTINE qes_bcast_algorithmic_info
1952  !
1953  !
1954  SUBROUTINE qes_bcast_symmetries(obj, ionode_id, comm )
1955    !
1956    IMPLICIT NONE
1957    !
1958    TYPE(symmetries_type), INTENT(INOUT) :: obj
1959    INTEGER, INTENT(IN) :: ionode_id, comm
1960    INTEGER :: i
1961    !
1962    CALL mp_bcast(obj%tagname, ionode_id, comm)
1963    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1964    CALL mp_bcast(obj%lread, ionode_id, comm)
1965    !
1966    CALL mp_bcast(obj%nsym, ionode_id, comm)
1967    CALL mp_bcast(obj%nrot, ionode_id, comm)
1968    CALL mp_bcast(obj%space_group, ionode_id, comm)
1969    CALL mp_bcast(obj%ndim_symmetry, ionode_id, comm)
1970    IF (.NOT.ionode) ALLOCATE(obj%symmetry(obj%ndim_symmetry))
1971    DO i=1, obj%ndim_symmetry
1972      CALL qes_bcast_symmetry(obj%symmetry(i), ionode_id, comm)
1973    ENDDO
1974    !
1975  END SUBROUTINE qes_bcast_symmetries
1976  !
1977  !
1978  SUBROUTINE qes_bcast_symmetry(obj, ionode_id, comm )
1979    !
1980    IMPLICIT NONE
1981    !
1982    TYPE(symmetry_type), INTENT(INOUT) :: obj
1983    INTEGER, INTENT(IN) :: ionode_id, comm
1984    !
1985    CALL mp_bcast(obj%tagname, ionode_id, comm)
1986    CALL mp_bcast(obj%lwrite, ionode_id, comm)
1987    CALL mp_bcast(obj%lread, ionode_id, comm)
1988    !
1989    CALL qes_bcast_info(obj%info, ionode_id, comm)
1990    CALL qes_bcast_matrix(obj%rotation, ionode_id, comm)
1991    CALL mp_bcast(obj%fractional_translation_ispresent, ionode_id, comm)
1992    IF (obj%fractional_translation_ispresent) &
1993      CALL mp_bcast(obj%fractional_translation, ionode_id, comm)
1994    CALL mp_bcast(obj%equivalent_atoms_ispresent, ionode_id, comm)
1995    IF (obj%equivalent_atoms_ispresent) &
1996      CALL qes_bcast_equivalent_atoms(obj%equivalent_atoms, ionode_id, comm)
1997    !
1998  END SUBROUTINE qes_bcast_symmetry
1999  !
2000  !
2001  SUBROUTINE qes_bcast_equivalent_atoms(obj, ionode_id, comm )
2002    !
2003    IMPLICIT NONE
2004    !
2005    TYPE(equivalent_atoms_type), INTENT(INOUT) :: obj
2006    INTEGER, INTENT(IN) :: ionode_id, comm
2007    !
2008    CALL mp_bcast(obj%tagname, ionode_id, comm)
2009    CALL mp_bcast(obj%lwrite, ionode_id, comm)
2010    CALL mp_bcast(obj%lread, ionode_id, comm)
2011    !
2012    CALL mp_bcast(obj%nat, ionode_id, comm)
2013    CALL mp_bcast(obj%size, ionode_id, comm)
2014    IF (.NOT.ionode) ALLOCATE(obj%equivalent_atoms(obj%size))
2015    CALL mp_bcast(obj%equivalent_atoms, ionode_id, comm)
2016    !
2017  END SUBROUTINE qes_bcast_equivalent_atoms
2018  !
2019  !
2020  SUBROUTINE qes_bcast_info(obj, ionode_id, comm )
2021    !
2022    IMPLICIT NONE
2023    !
2024    TYPE(info_type), INTENT(INOUT) :: obj
2025    INTEGER, INTENT(IN) :: ionode_id, comm
2026    !
2027    CALL mp_bcast(obj%tagname, ionode_id, comm)
2028    CALL mp_bcast(obj%lwrite, ionode_id, comm)
2029    CALL mp_bcast(obj%lread, ionode_id, comm)
2030    !
2031    CALL mp_bcast(obj%name_ispresent, ionode_id, comm)
2032    IF (obj%name_ispresent) &
2033      CALL mp_bcast(obj%name, ionode_id, comm)
2034    CALL mp_bcast(obj%class_ispresent, ionode_id, comm)
2035    IF (obj%class_ispresent) &
2036      CALL mp_bcast(obj%class, ionode_id, comm)
2037    CALL mp_bcast(obj%time_reversal_ispresent, ionode_id, comm)
2038    IF (obj%time_reversal_ispresent) &
2039      CALL mp_bcast(obj%time_reversal, ionode_id, comm)
2040    CALL mp_bcast(obj%info, ionode_id, comm)
2041    !
2042  END SUBROUTINE qes_bcast_info
2043  !
2044  !
2045  SUBROUTINE qes_bcast_outputPBC(obj, ionode_id, comm )
2046    !
2047    IMPLICIT NONE
2048    !
2049    TYPE(outputPBC_type), INTENT(INOUT) :: obj
2050    INTEGER, INTENT(IN) :: ionode_id, comm
2051    !
2052    CALL mp_bcast(obj%tagname, ionode_id, comm)
2053    CALL mp_bcast(obj%lwrite, ionode_id, comm)
2054    CALL mp_bcast(obj%lread, ionode_id, comm)
2055    !
2056    CALL mp_bcast(obj%assume_isolated, ionode_id, comm)
2057    !
2058  END SUBROUTINE qes_bcast_outputPBC
2059  !
2060  !
2061  SUBROUTINE qes_bcast_magnetization(obj, ionode_id, comm )
2062    !
2063    IMPLICIT NONE
2064    !
2065    TYPE(magnetization_type), INTENT(INOUT) :: obj
2066    INTEGER, INTENT(IN) :: ionode_id, comm
2067    !
2068    CALL mp_bcast(obj%tagname, ionode_id, comm)
2069    CALL mp_bcast(obj%lwrite, ionode_id, comm)
2070    CALL mp_bcast(obj%lread, ionode_id, comm)
2071    !
2072    CALL mp_bcast(obj%lsda, ionode_id, comm)
2073    CALL mp_bcast(obj%noncolin, ionode_id, comm)
2074    CALL mp_bcast(obj%spinorbit, ionode_id, comm)
2075    CALL mp_bcast(obj%total, ionode_id, comm)
2076    CALL mp_bcast(obj%absolute, ionode_id, comm)
2077    CALL mp_bcast(obj%do_magnetization_ispresent, ionode_id, comm)
2078    IF (obj%do_magnetization_ispresent) &
2079      CALL mp_bcast(obj%do_magnetization, ionode_id, comm)
2080    !
2081  END SUBROUTINE qes_bcast_magnetization
2082  !
2083  !
2084  SUBROUTINE qes_bcast_total_energy(obj, ionode_id, comm )
2085    !
2086    IMPLICIT NONE
2087    !
2088    TYPE(total_energy_type), INTENT(INOUT) :: obj
2089    INTEGER, INTENT(IN) :: ionode_id, comm
2090    !
2091    CALL mp_bcast(obj%tagname, ionode_id, comm)
2092    CALL mp_bcast(obj%lwrite, ionode_id, comm)
2093    CALL mp_bcast(obj%lread, ionode_id, comm)
2094    !
2095    CALL mp_bcast(obj%etot, ionode_id, comm)
2096    CALL mp_bcast(obj%eband_ispresent, ionode_id, comm)
2097    IF (obj%eband_ispresent) &
2098      CALL mp_bcast(obj%eband, ionode_id, comm)
2099    CALL mp_bcast(obj%ehart_ispresent, ionode_id, comm)
2100    IF (obj%ehart_ispresent) &
2101      CALL mp_bcast(obj%ehart, ionode_id, comm)
2102    CALL mp_bcast(obj%vtxc_ispresent, ionode_id, comm)
2103    IF (obj%vtxc_ispresent) &
2104      CALL mp_bcast(obj%vtxc, ionode_id, comm)
2105    CALL mp_bcast(obj%etxc_ispresent, ionode_id, comm)
2106    IF (obj%etxc_ispresent) &
2107      CALL mp_bcast(obj%etxc, ionode_id, comm)
2108    CALL mp_bcast(obj%ewald_ispresent, ionode_id, comm)
2109    IF (obj%ewald_ispresent) &
2110      CALL mp_bcast(obj%ewald, ionode_id, comm)
2111    CALL mp_bcast(obj%demet_ispresent, ionode_id, comm)
2112    IF (obj%demet_ispresent) &
2113      CALL mp_bcast(obj%demet, ionode_id, comm)
2114    CALL mp_bcast(obj%efieldcorr_ispresent, ionode_id, comm)
2115    IF (obj%efieldcorr_ispresent) &
2116      CALL mp_bcast(obj%efieldcorr, ionode_id, comm)
2117    CALL mp_bcast(obj%potentiostat_contr_ispresent, ionode_id, comm)
2118    IF (obj%potentiostat_contr_ispresent) &
2119      CALL mp_bcast(obj%potentiostat_contr, ionode_id, comm)
2120    CALL mp_bcast(obj%gatefield_contr_ispresent, ionode_id, comm)
2121    IF (obj%gatefield_contr_ispresent) &
2122      CALL mp_bcast(obj%gatefield_contr, ionode_id, comm)
2123    CALL mp_bcast(obj%vdW_term_ispresent, ionode_id, comm)
2124    IF (obj%vdW_term_ispresent) &
2125      CALL mp_bcast(obj%vdW_term, ionode_id, comm)
2126    !
2127  END SUBROUTINE qes_bcast_total_energy
2128  !
2129  !
2130  SUBROUTINE qes_bcast_band_structure(obj, ionode_id, comm )
2131    !
2132    IMPLICIT NONE
2133    !
2134    TYPE(band_structure_type), INTENT(INOUT) :: obj
2135    INTEGER, INTENT(IN) :: ionode_id, comm
2136    INTEGER :: i
2137    !
2138    CALL mp_bcast(obj%tagname, ionode_id, comm)
2139    CALL mp_bcast(obj%lwrite, ionode_id, comm)
2140    CALL mp_bcast(obj%lread, ionode_id, comm)
2141    !
2142    CALL mp_bcast(obj%lsda, ionode_id, comm)
2143    CALL mp_bcast(obj%noncolin, ionode_id, comm)
2144    CALL mp_bcast(obj%spinorbit, ionode_id, comm)
2145    CALL mp_bcast(obj%nbnd_ispresent, ionode_id, comm)
2146    IF (obj%nbnd_ispresent) &
2147      CALL mp_bcast(obj%nbnd, ionode_id, comm)
2148    CALL mp_bcast(obj%nbnd_up_ispresent, ionode_id, comm)
2149    IF (obj%nbnd_up_ispresent) &
2150      CALL mp_bcast(obj%nbnd_up, ionode_id, comm)
2151    CALL mp_bcast(obj%nbnd_dw_ispresent, ionode_id, comm)
2152    IF (obj%nbnd_dw_ispresent) &
2153      CALL mp_bcast(obj%nbnd_dw, ionode_id, comm)
2154    CALL mp_bcast(obj%nelec, ionode_id, comm)
2155    CALL mp_bcast(obj%num_of_atomic_wfc_ispresent, ionode_id, comm)
2156    IF (obj%num_of_atomic_wfc_ispresent) &
2157      CALL mp_bcast(obj%num_of_atomic_wfc, ionode_id, comm)
2158    CALL mp_bcast(obj%wf_collected, ionode_id, comm)
2159    CALL mp_bcast(obj%fermi_energy_ispresent, ionode_id, comm)
2160    IF (obj%fermi_energy_ispresent) &
2161      CALL mp_bcast(obj%fermi_energy, ionode_id, comm)
2162    CALL mp_bcast(obj%highestOccupiedLevel_ispresent, ionode_id, comm)
2163    IF (obj%highestOccupiedLevel_ispresent) &
2164      CALL mp_bcast(obj%highestOccupiedLevel, ionode_id, comm)
2165    CALL mp_bcast(obj%lowestUnoccupiedLevel_ispresent, ionode_id, comm)
2166    IF (obj%lowestUnoccupiedLevel_ispresent) &
2167      CALL mp_bcast(obj%lowestUnoccupiedLevel, ionode_id, comm)
2168    CALL mp_bcast(obj%two_fermi_energies_ispresent, ionode_id, comm)
2169    IF (obj%two_fermi_energies_ispresent) &
2170      CALL mp_bcast(obj%two_fermi_energies, ionode_id, comm)
2171    CALL qes_bcast_k_points_IBZ(obj%starting_k_points, ionode_id, comm)
2172    CALL mp_bcast(obj%nks, ionode_id, comm)
2173    CALL qes_bcast_occupations(obj%occupations_kind, ionode_id, comm)
2174    CALL mp_bcast(obj%smearing_ispresent, ionode_id, comm)
2175    IF (obj%smearing_ispresent) &
2176      CALL qes_bcast_smearing(obj%smearing, ionode_id, comm)
2177    CALL mp_bcast(obj%ndim_ks_energies, ionode_id, comm)
2178    IF (.NOT.ionode) ALLOCATE(obj%ks_energies(obj%ndim_ks_energies))
2179    DO i=1, obj%ndim_ks_energies
2180      CALL qes_bcast_ks_energies(obj%ks_energies(i), ionode_id, comm)
2181    ENDDO
2182    !
2183  END SUBROUTINE qes_bcast_band_structure
2184  !
2185  !
2186  SUBROUTINE qes_bcast_ks_energies(obj, ionode_id, comm )
2187    !
2188    IMPLICIT NONE
2189    !
2190    TYPE(ks_energies_type), INTENT(INOUT) :: obj
2191    INTEGER, INTENT(IN) :: ionode_id, comm
2192    !
2193    CALL mp_bcast(obj%tagname, ionode_id, comm)
2194    CALL mp_bcast(obj%lwrite, ionode_id, comm)
2195    CALL mp_bcast(obj%lread, ionode_id, comm)
2196    !
2197    CALL qes_bcast_k_point(obj%k_point, ionode_id, comm)
2198    CALL mp_bcast(obj%npw, ionode_id, comm)
2199    CALL qes_bcast_vector(obj%eigenvalues, ionode_id, comm)
2200    CALL qes_bcast_vector(obj%occupations, ionode_id, comm)
2201    !
2202  END SUBROUTINE qes_bcast_ks_energies
2203  !
2204  !
2205  SUBROUTINE qes_bcast_closed(obj, ionode_id, comm )
2206    !
2207    IMPLICIT NONE
2208    !
2209    TYPE(closed_type), INTENT(INOUT) :: obj
2210    INTEGER, INTENT(IN) :: ionode_id, comm
2211    !
2212    CALL mp_bcast(obj%tagname, ionode_id, comm)
2213    CALL mp_bcast(obj%lwrite, ionode_id, comm)
2214    CALL mp_bcast(obj%lread, ionode_id, comm)
2215    !
2216    CALL mp_bcast(obj%DATE, ionode_id, comm)
2217    CALL mp_bcast(obj%TIME, ionode_id, comm)
2218    CALL mp_bcast(obj%closed, ionode_id, comm)
2219    !
2220  END SUBROUTINE qes_bcast_closed
2221  !
2222  !
2223  SUBROUTINE qes_bcast_vector(obj, ionode_id, comm )
2224    !
2225    IMPLICIT NONE
2226    !
2227    TYPE(vector_type), INTENT(INOUT) :: obj
2228    INTEGER, INTENT(IN) :: ionode_id, comm
2229    !
2230    CALL mp_bcast(obj%tagname, ionode_id, comm)
2231    CALL mp_bcast(obj%lwrite, ionode_id, comm)
2232    CALL mp_bcast(obj%lread, ionode_id, comm)
2233    !
2234    CALL mp_bcast(obj%size, ionode_id, comm)
2235    IF (.NOT.ionode) ALLOCATE(obj%vector(obj%size))
2236    CALL mp_bcast(obj%vector, ionode_id, comm)
2237    !
2238  END SUBROUTINE qes_bcast_vector
2239  !
2240  !
2241  SUBROUTINE qes_bcast_integerVector(obj, ionode_id, comm )
2242    !
2243    IMPLICIT NONE
2244    !
2245    TYPE(integerVector_type), INTENT(INOUT) :: obj
2246    INTEGER, INTENT(IN) :: ionode_id, comm
2247    !
2248    CALL mp_bcast(obj%tagname, ionode_id, comm)
2249    CALL mp_bcast(obj%lwrite, ionode_id, comm)
2250    CALL mp_bcast(obj%lread, ionode_id, comm)
2251    !
2252    CALL mp_bcast(obj%size, ionode_id, comm)
2253    IF (.NOT.ionode) ALLOCATE(obj%integerVector(obj%size))
2254    CALL mp_bcast(obj%integerVector, ionode_id, comm)
2255    !
2256  END SUBROUTINE qes_bcast_integerVector
2257  !
2258  !
2259  SUBROUTINE qes_bcast_matrix(obj, ionode_id, comm )
2260    !
2261    IMPLICIT NONE
2262    !
2263    TYPE(matrix_type), INTENT(INOUT) :: obj
2264    INTEGER, INTENT(IN) :: ionode_id, comm
2265    INTEGER :: length
2266    INTEGER :: i
2267    !
2268    CALL mp_bcast(obj%tagname, ionode_id, comm)
2269    CALL mp_bcast(obj%lwrite, ionode_id, comm)
2270    CALL mp_bcast(obj%lread, ionode_id, comm)
2271    !
2272    CALL mp_bcast(obj%rank, ionode_id, comm)
2273    IF (.NOT.ionode) ALLOCATE(obj%dims(obj%rank))
2274    CALL mp_bcast(obj%dims, ionode_id, comm)
2275    CALL mp_bcast(obj%order, ionode_id, comm)
2276    IF (.NOT. ionode) THEN
2277      length = 1
2278      DO i=1, obj%rank
2279        length = length * obj%dims(i)
2280      END DO
2281      ALLOCATE (obj%matrix(length) )
2282    ENDIF
2283    CALL mp_bcast(obj%matrix, ionode_id, comm)
2284    !
2285  END SUBROUTINE qes_bcast_matrix
2286  !
2287  !
2288  SUBROUTINE qes_bcast_integerMatrix(obj, ionode_id, comm )
2289    !
2290    IMPLICIT NONE
2291    !
2292    TYPE(integerMatrix_type), INTENT(INOUT) :: obj
2293    INTEGER, INTENT(IN) :: ionode_id, comm
2294    INTEGER :: length
2295    INTEGER :: i
2296    !
2297    CALL mp_bcast(obj%tagname, ionode_id, comm)
2298    CALL mp_bcast(obj%lwrite, ionode_id, comm)
2299    CALL mp_bcast(obj%lread, ionode_id, comm)
2300    !
2301    CALL mp_bcast(obj%rank, ionode_id, comm)
2302    IF (.NOT.ionode) ALLOCATE(obj%dims(obj%rank))
2303    CALL mp_bcast(obj%dims, ionode_id, comm)
2304    CALL mp_bcast(obj%order, ionode_id, comm)
2305    IF (.NOT. ionode) THEN
2306      length = 1
2307      DO i=1, obj%rank
2308        length = length * obj%dims(i)
2309      END DO
2310      ALLOCATE (obj%integerMatrix(length) )
2311    ENDIF
2312    CALL mp_bcast(obj%integerMatrix, ionode_id, comm)
2313    !
2314  END SUBROUTINE qes_bcast_integerMatrix
2315  !
2316  !
2317  SUBROUTINE qes_bcast_scalarQuantity(obj, ionode_id, comm )
2318    !
2319    IMPLICIT NONE
2320    !
2321    TYPE(scalarQuantity_type), INTENT(INOUT) :: obj
2322    INTEGER, INTENT(IN) :: ionode_id, comm
2323    !
2324    CALL mp_bcast(obj%tagname, ionode_id, comm)
2325    CALL mp_bcast(obj%lwrite, ionode_id, comm)
2326    CALL mp_bcast(obj%lread, ionode_id, comm)
2327    !
2328    CALL mp_bcast(obj%Units, ionode_id, comm)
2329    CALL mp_bcast(obj%scalarQuantity, ionode_id, comm)
2330    !
2331  END SUBROUTINE qes_bcast_scalarQuantity
2332  !
2333  !
2334END MODULE qes_bcast_module