mirror of https://gitlab.com/QEF/q-e.git
More I/O cleanup, fix to previous commit
This commit is contained in:
parent
71b828d306
commit
9bda6a81a3
|
@ -101,7 +101,7 @@ CONTAINS
|
||||||
!
|
!
|
||||||
!--------------------------------------------------------------------------
|
!--------------------------------------------------------------------------
|
||||||
SUBROUTINE qexsd_copy_atomic_species (atomic_species, nsp, atm, amass, &
|
SUBROUTINE qexsd_copy_atomic_species (atomic_species, nsp, atm, amass, &
|
||||||
psfile, pseudo_dir)
|
starting_magnetization, angle1, angle2, psfile, pseudo_dir)
|
||||||
!--------------------------------------------------------------------------- !
|
!--------------------------------------------------------------------------- !
|
||||||
USE qes_types_module, ONLY : atomic_species_type
|
USE qes_types_module, ONLY : atomic_species_type
|
||||||
!
|
!
|
||||||
|
@ -110,8 +110,10 @@ CONTAINS
|
||||||
TYPE ( atomic_species_type ),INTENT(IN) :: atomic_species
|
TYPE ( atomic_species_type ),INTENT(IN) :: atomic_species
|
||||||
INTEGER, INTENT(out) :: nsp
|
INTEGER, INTENT(out) :: nsp
|
||||||
CHARACTER(LEN=*), INTENT(out) :: atm(:)
|
CHARACTER(LEN=*), INTENT(out) :: atm(:)
|
||||||
CHARACTER(LEN=*), OPTIONAL, INTENT(out) :: psfile(:), pseudo_dir
|
|
||||||
REAL(dp), INTENT(out) :: amass(:)
|
REAL(dp), INTENT(out) :: amass(:)
|
||||||
|
REAL(dp), OPTIONAL, INTENT(out) :: starting_magnetization(:), &
|
||||||
|
angle1(:), angle2(:)
|
||||||
|
CHARACTER(LEN=*), OPTIONAL, INTENT(out) :: psfile(:), pseudo_dir
|
||||||
!
|
!
|
||||||
INTEGER :: isp
|
INTEGER :: isp
|
||||||
!
|
!
|
||||||
|
@ -124,6 +126,21 @@ CONTAINS
|
||||||
IF ( PRESENT (psfile) ) THEN
|
IF ( PRESENT (psfile) ) THEN
|
||||||
psfile(isp) = TRIM ( atomic_species%species(isp)%pseudo_file)
|
psfile(isp) = TRIM ( atomic_species%species(isp)%pseudo_file)
|
||||||
END IF
|
END IF
|
||||||
|
IF ( PRESENT (starting_magnetization) ) THEN
|
||||||
|
IF ( atomic_species%species(isp)%starting_magnetization_ispresent) THEN
|
||||||
|
starting_magnetization(isp) = atomic_species%species(isp)%starting_magnetization
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
|
IF ( PRESENT (angle1) ) THEN
|
||||||
|
IF ( atomic_species%species(isp)%spin_teta_ispresent ) THEN
|
||||||
|
angle1(isp) = atomic_species%species(isp)%spin_teta
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
|
IF ( PRESENT (angle2) ) THEN
|
||||||
|
IF ( atomic_species%species(isp)%spin_phi_ispresent ) THEN
|
||||||
|
angle2(isp) = atomic_species%species(isp)%spin_phi
|
||||||
|
END IF
|
||||||
|
END IF
|
||||||
END DO
|
END DO
|
||||||
!
|
!
|
||||||
! ... this is where PP files were originally found (if available)
|
! ... this is where PP files were originally found (if available)
|
||||||
|
@ -556,8 +573,9 @@ CONTAINS
|
||||||
TYPE ( electric_field_type),OPTIONAL, INTENT(IN) :: efield_obj
|
TYPE ( electric_field_type),OPTIONAL, INTENT(IN) :: efield_obj
|
||||||
LOGICAL, INTENT(OUT) :: tefield, dipfield
|
LOGICAL, INTENT(OUT) :: tefield, dipfield
|
||||||
INTEGER, INTENT(INOUT) :: edir
|
INTEGER, INTENT(INOUT) :: edir
|
||||||
REAL(dp), INTENT(INOUT) :: emaxpos, eopreg, eamp, gate, zgate, &
|
LOGICAL, INTENT(INOUT) :: gate, block_, relaxz
|
||||||
block_, block_1, block_2, block_height, relaxz
|
REAL(dp), INTENT(INOUT) :: emaxpos, eopreg, eamp, &
|
||||||
|
zgate, block_1, block_2, block_height
|
||||||
!
|
!
|
||||||
!
|
!
|
||||||
tefield = .FALSE.
|
tefield = .FALSE.
|
||||||
|
|
|
@ -1056,7 +1056,7 @@ MODULE pw_restart_new
|
||||||
TYPE ( magnetization_type ) ,INTENT(IN) :: magnetization_obj
|
TYPE ( magnetization_type ) ,INTENT(IN) :: magnetization_obj
|
||||||
!
|
!
|
||||||
REAL(DP) :: tot_mag_, nelec_, theta, phi, fixed_magnetization(3)
|
REAL(DP) :: tot_mag_, nelec_, theta, phi, fixed_magnetization(3)
|
||||||
INTEGER :: nsp_, isp
|
INTEGER :: isp
|
||||||
!
|
!
|
||||||
bfield = 0.d0
|
bfield = 0.d0
|
||||||
nelec_ = band_structure_obj%nelec
|
nelec_ = band_structure_obj%nelec
|
||||||
|
@ -1069,35 +1069,22 @@ MODULE pw_restart_new
|
||||||
CALL set_nelup_neldw(tot_magnetization, nelec_, nelup, neldw)
|
CALL set_nelup_neldw(tot_magnetization, nelec_, nelup, neldw)
|
||||||
END IF
|
END IF
|
||||||
END IF
|
END IF
|
||||||
nsp_ = atomic_specs_obj%ntyp
|
! FIXME: doesn't belong here and doesn't work because i_cons is set to 0
|
||||||
!
|
|
||||||
i_cons = 0
|
i_cons = 0
|
||||||
DO isp = 1, nsp_
|
DO isp = 1, atomic_specs_obj%ntyp
|
||||||
IF ( atomic_specs_obj%species(isp)%starting_magnetization_ispresent) THEN
|
|
||||||
starting_magnetization(isp) = atomic_specs_obj%species(isp)%starting_magnetization
|
|
||||||
END IF
|
|
||||||
!
|
|
||||||
IF ( band_structure_obj%noncolin ) THEN
|
IF ( band_structure_obj%noncolin ) THEN
|
||||||
IF ( atomic_specs_obj%species(isp)%spin_teta_ispresent ) THEN
|
angle1(isp) = theta
|
||||||
theta = atomic_specs_obj%species(isp)%spin_teta
|
angle2(isp) = phi
|
||||||
angle1(isp) = theta
|
|
||||||
END IF
|
|
||||||
IF ( atomic_specs_obj%species(isp)%spin_phi_ispresent ) THEN
|
|
||||||
phi = atomic_specs_obj%species(isp)%spin_phi
|
|
||||||
angle2(isp) = phi
|
|
||||||
END IF
|
|
||||||
!
|
|
||||||
IF ( atomic_specs_obj%species(isp)%starting_magnetization_ispresent .AND. &
|
IF ( atomic_specs_obj%species(isp)%starting_magnetization_ispresent .AND. &
|
||||||
i_cons == 1 ) THEN
|
i_cons == 1 ) THEN
|
||||||
!
|
mcons(1,isp) = starting_magnetization(isp) * sin(angle1(isp)) * cos(angle2(isp))
|
||||||
mcons(1,isp) = starting_magnetization(isp) * sin( theta ) * cos( phi )
|
mcons(2,isp) = starting_magnetization(isp) * sin(angle1(isp)) * sin(angle2(isp))
|
||||||
mcons(2,isp) = starting_magnetization(isp) * sin( theta ) * sin( phi )
|
mcons(3,isp) = starting_magnetization(isp) * cos(angle1(isp))
|
||||||
mcons(3,isp) = starting_magnetization(isp) * cos( theta )
|
|
||||||
ELSE IF ( i_cons == 2) THEN
|
ELSE IF ( i_cons == 2) THEN
|
||||||
mcons(3,isp) = cos(theta)
|
mcons(3,isp) = cos(angle1(isp))
|
||||||
END IF
|
END IF
|
||||||
ELSE IF ( atomic_specs_obj%species(isp)%starting_magnetization_ispresent .AND. &
|
ELSE IF ( atomic_specs_obj%species(isp)%starting_magnetization_ispresent .AND. &
|
||||||
i_cons == 1 ) THEN
|
i_cons == 1 ) THEN
|
||||||
mcons(1,isp) = starting_magnetization(isp)
|
mcons(1,isp) = starting_magnetization(isp)
|
||||||
END IF
|
END IF
|
||||||
END DO
|
END DO
|
||||||
|
|
|
@ -128,9 +128,9 @@ SUBROUTINE read_xml_file ( wfc_is_collected )
|
||||||
USE control_flags, ONLY : noinv, gamma_only, tqr, llondon, ldftd3, &
|
USE control_flags, ONLY : noinv, gamma_only, tqr, llondon, ldftd3, &
|
||||||
lxdm, ts_vdw
|
lxdm, ts_vdw
|
||||||
USE Coul_cut_2D, ONLY : do_cutoff_2D
|
USE Coul_cut_2D, ONLY : do_cutoff_2D
|
||||||
USE noncollin_module,ONLY : noncolin
|
USE noncollin_module,ONLY : noncolin, angle1, angle2
|
||||||
USE spin_orb, ONLY : domag
|
USE spin_orb, ONLY : domag
|
||||||
USE lsda_mod, ONLY : isk, lsda
|
USE lsda_mod, ONLY : isk, lsda, starting_magnetization
|
||||||
USE realus, ONLY : real_space
|
USE realus, ONLY : real_space
|
||||||
USE basis, ONLY : natomwfc
|
USE basis, ONLY : natomwfc
|
||||||
USE uspp, ONLY : okvan
|
USE uspp, ONLY : okvan
|
||||||
|
@ -220,7 +220,8 @@ SUBROUTINE read_xml_file ( wfc_is_collected )
|
||||||
!
|
!
|
||||||
pseudo_dir_cur = TRIM( tmp_dir ) // TRIM( prefix ) // postfix
|
pseudo_dir_cur = TRIM( tmp_dir ) // TRIM( prefix ) // postfix
|
||||||
CALL qexsd_copy_atomic_species ( output_obj%atomic_species, &
|
CALL qexsd_copy_atomic_species ( output_obj%atomic_species, &
|
||||||
nsp, atm, amass, psfile, pseudo_dir )
|
nsp, atm, amass, angle1, angle2, starting_magnetization, &
|
||||||
|
psfile, pseudo_dir )
|
||||||
IF ( pseudo_dir == ' ' ) pseudo_dir=pseudo_dir_cur
|
IF ( pseudo_dir == ' ' ) pseudo_dir=pseudo_dir_cur
|
||||||
!! Atomic structure section
|
!! Atomic structure section
|
||||||
CALL qexsd_copy_atomic_structure (output_obj%atomic_structure, nsp, &
|
CALL qexsd_copy_atomic_structure (output_obj%atomic_structure, nsp, &
|
||||||
|
|
Loading…
Reference in New Issue