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, &
|
||||
psfile, pseudo_dir)
|
||||
starting_magnetization, angle1, angle2, psfile, pseudo_dir)
|
||||
!--------------------------------------------------------------------------- !
|
||||
USE qes_types_module, ONLY : atomic_species_type
|
||||
!
|
||||
|
@ -110,8 +110,10 @@ CONTAINS
|
|||
TYPE ( atomic_species_type ),INTENT(IN) :: atomic_species
|
||||
INTEGER, INTENT(out) :: nsp
|
||||
CHARACTER(LEN=*), INTENT(out) :: atm(:)
|
||||
CHARACTER(LEN=*), OPTIONAL, INTENT(out) :: psfile(:), pseudo_dir
|
||||
REAL(dp), INTENT(out) :: amass(:)
|
||||
REAL(dp), OPTIONAL, INTENT(out) :: starting_magnetization(:), &
|
||||
angle1(:), angle2(:)
|
||||
CHARACTER(LEN=*), OPTIONAL, INTENT(out) :: psfile(:), pseudo_dir
|
||||
!
|
||||
INTEGER :: isp
|
||||
!
|
||||
|
@ -124,6 +126,21 @@ CONTAINS
|
|||
IF ( PRESENT (psfile) ) THEN
|
||||
psfile(isp) = TRIM ( atomic_species%species(isp)%pseudo_file)
|
||||
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
|
||||
!
|
||||
! ... this is where PP files were originally found (if available)
|
||||
|
@ -556,8 +573,9 @@ CONTAINS
|
|||
TYPE ( electric_field_type),OPTIONAL, INTENT(IN) :: efield_obj
|
||||
LOGICAL, INTENT(OUT) :: tefield, dipfield
|
||||
INTEGER, INTENT(INOUT) :: edir
|
||||
REAL(dp), INTENT(INOUT) :: emaxpos, eopreg, eamp, gate, zgate, &
|
||||
block_, block_1, block_2, block_height, relaxz
|
||||
LOGICAL, INTENT(INOUT) :: gate, block_, relaxz
|
||||
REAL(dp), INTENT(INOUT) :: emaxpos, eopreg, eamp, &
|
||||
zgate, block_1, block_2, block_height
|
||||
!
|
||||
!
|
||||
tefield = .FALSE.
|
||||
|
|
|
@ -1056,7 +1056,7 @@ MODULE pw_restart_new
|
|||
TYPE ( magnetization_type ) ,INTENT(IN) :: magnetization_obj
|
||||
!
|
||||
REAL(DP) :: tot_mag_, nelec_, theta, phi, fixed_magnetization(3)
|
||||
INTEGER :: nsp_, isp
|
||||
INTEGER :: isp
|
||||
!
|
||||
bfield = 0.d0
|
||||
nelec_ = band_structure_obj%nelec
|
||||
|
@ -1069,35 +1069,22 @@ MODULE pw_restart_new
|
|||
CALL set_nelup_neldw(tot_magnetization, nelec_, nelup, neldw)
|
||||
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
|
||||
DO isp = 1, nsp_
|
||||
IF ( atomic_specs_obj%species(isp)%starting_magnetization_ispresent) THEN
|
||||
starting_magnetization(isp) = atomic_specs_obj%species(isp)%starting_magnetization
|
||||
END IF
|
||||
!
|
||||
DO isp = 1, atomic_specs_obj%ntyp
|
||||
IF ( band_structure_obj%noncolin ) THEN
|
||||
IF ( atomic_specs_obj%species(isp)%spin_teta_ispresent ) THEN
|
||||
theta = atomic_specs_obj%species(isp)%spin_teta
|
||||
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
|
||||
!
|
||||
angle1(isp) = theta
|
||||
angle2(isp) = phi
|
||||
IF ( atomic_specs_obj%species(isp)%starting_magnetization_ispresent .AND. &
|
||||
i_cons == 1 ) THEN
|
||||
!
|
||||
mcons(1,isp) = starting_magnetization(isp) * sin( theta ) * cos( phi )
|
||||
mcons(2,isp) = starting_magnetization(isp) * sin( theta ) * sin( phi )
|
||||
mcons(3,isp) = starting_magnetization(isp) * cos( theta )
|
||||
i_cons == 1 ) THEN
|
||||
mcons(1,isp) = starting_magnetization(isp) * sin(angle1(isp)) * cos(angle2(isp))
|
||||
mcons(2,isp) = starting_magnetization(isp) * sin(angle1(isp)) * sin(angle2(isp))
|
||||
mcons(3,isp) = starting_magnetization(isp) * cos(angle1(isp))
|
||||
ELSE IF ( i_cons == 2) THEN
|
||||
mcons(3,isp) = cos(theta)
|
||||
mcons(3,isp) = cos(angle1(isp))
|
||||
END IF
|
||||
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)
|
||||
END IF
|
||||
END DO
|
||||
|
|
|
@ -128,9 +128,9 @@ SUBROUTINE read_xml_file ( wfc_is_collected )
|
|||
USE control_flags, ONLY : noinv, gamma_only, tqr, llondon, ldftd3, &
|
||||
lxdm, ts_vdw
|
||||
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 lsda_mod, ONLY : isk, lsda
|
||||
USE lsda_mod, ONLY : isk, lsda, starting_magnetization
|
||||
USE realus, ONLY : real_space
|
||||
USE basis, ONLY : natomwfc
|
||||
USE uspp, ONLY : okvan
|
||||
|
@ -220,7 +220,8 @@ SUBROUTINE read_xml_file ( wfc_is_collected )
|
|||
!
|
||||
pseudo_dir_cur = TRIM( tmp_dir ) // TRIM( prefix ) // postfix
|
||||
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
|
||||
!! Atomic structure section
|
||||
CALL qexsd_copy_atomic_structure (output_obj%atomic_structure, nsp, &
|
||||
|
|
Loading…
Reference in New Issue