Skip to content
Snippets Groups Projects
Commit 3a30d53f authored by Nicolas Essing's avatar Nicolas Essing
Browse files

Cleaning up the subroutine call.

parent 3621b681
No related branches found
No related tags found
No related merge requests found
...@@ -64,7 +64,7 @@ module ProcessKKRresults_mod ...@@ -64,7 +64,7 @@ module ProcessKKRresults_mod
type(EnergyResults), pointer :: energies type(EnergyResults), pointer :: energies
type(RadialMeshData), pointer :: mesh type(RadialMeshData), pointer :: mesh
integer :: atom_id, ila, num_local_atoms, ierr, r1fu integer :: atom_id, ila, num_local_atoms, ierr
processKKRresults = 0 processKKRresults = 0
num_local_atoms = calc%num_local_atoms num_local_atoms = calc%num_local_atoms
...@@ -78,26 +78,7 @@ module ProcessKKRresults_mod ...@@ -78,26 +78,7 @@ module ProcessKKRresults_mod
! write to 'results1' - only to be read in in results.f ! write to 'results1' - only to be read in in results.f
! necessary for density of states calculation, otherwise ! necessary for density of states calculation, otherwise
! only for informative reasons ! only for informative reasons
if (params%KTE >= 0) then call writeResults1File(num_local_atoms, params, dims, calc, emesh)
r1fu = openResults1File(dims%IEMXD, dims%LMAXD, emesh%NPOL)
do ila = 1, num_local_atoms
atomdata => getAtomData(calc, ila)
densities => getDensities(calc, ila)
atom_id = calc%atom_ids(ila) ! get global atom_id from local index
call writeResults1File(r1fu, densities%CATOM, densities%CHARGE, densities%DEN, &
atomdata%core%ECORE, atom_id, emesh%NPOL, &
atomdata%core%QC_corecharge, densities%MUORB, &
calc%noco_data%phi_noco(atom_id), calc%noco_data%theta_noco(atom_id), &
calc%noco_data%phi_noco_old(atom_id), calc%noco_data%theta_noco_old(atom_id), &
calc%noco_data%angle_fix_mode(atom_id), &
calc%noco_data%moment_x(atom_id),calc%noco_data%moment_y(atom_id), &
calc%noco_data%moment_z(atom_id))
enddo
close(r1fu)
endif
! | ! |
! v ! v
...@@ -183,6 +164,9 @@ module ProcessKKRresults_mod ...@@ -183,6 +164,9 @@ module ProcessKKRresults_mod
! ----------------------------------------------------------------- ! -----------------------------------------------------------------
if (mp%isMasterRank) then if (mp%isMasterRank) then
! Just use any one
densities => getDensities(calc, 1)
! DOS was written to file 'results1' and read out here just ! DOS was written to file 'results1' and read out here just
! to be written in routine wrldos (new: file complex.dos only) ! to be written in routine wrldos (new: file complex.dos only)
! also other stuff is read from results1 (and results2) ! also other stuff is read from results1 (and results2)
...@@ -1077,35 +1061,64 @@ module ProcessKKRresults_mod ...@@ -1077,35 +1061,64 @@ module ProcessKKRresults_mod
!---------------------------------------------------------------------------- !----------------------------------------------------------------------------
!> Write some stuff to the 'results1' file !> Write some stuff to the 'results1' file
subroutine writeResults1File(fu, catom, charge, den, ecore, i1, npol, qc, & subroutine writeResults1File(num_local_atoms, params, dims, calc, emesh)
muorb, phi_soc, theta_soc, phi_soc_old, & use InputParams_mod, only: InputParams
theta_soc_old, angle_fix_mode, & use DimParams_mod, only: DimParams
moment_x, moment_y, moment_z) use CalculationData_mod, only: CalculationData, getAtomData, getDensities
use EnergyMesh_mod, only: EnergyMesh
integer, intent(in) :: fu !< file unit use BasisAtom_mod, only: BasisAtom
double precision, intent(in) :: catom(:), charge(:,:) use DensityResults_mod, only: DensityResults
double complex, intent(in) :: den(:,:,:)
double precision, intent(in) :: ecore(20,2) integer, intent(in) :: num_local_atoms
integer, intent(in) :: i1, npol type(InputParams), intent(in) :: params
double precision, intent(in) :: qc type(DimParams), intent(in) :: dims
double precision, intent(in) :: muorb(:,:) ! NOCO type(CalculationData), intent(in) :: calc
double precision, intent(in) :: phi_soc ! NOCO type(EnergyMesh), intent(in) :: emesh
double precision, intent(in) :: theta_soc ! NOCO
double precision, intent(in) :: phi_soc_old ! NOCO integer :: r1fu, atom_id, ila
double precision, intent(in) :: theta_soc_old ! NOCO type(BasisAtom), pointer :: atomdata
integer (kind=1), intent(in) :: angle_fix_mode ! NOCO type(DensityResults), pointer :: densities
double precision, intent(in) :: moment_x ! NOCO
double precision, intent(in) :: moment_y ! NOCO if (params%kte >= 0) then
double precision, intent(in) :: moment_z ! NOCO
r1fu = openResults1File(dims%IEMXD, dims%LMAXD, emesh%NPOL)
if (npol == 0) then
write(unit=fu, rec=i1) qc,catom,charge,ecore,muorb,phi_soc,theta_soc,phi_soc_old,theta_soc_old,angle_fix_mode, & do ila = 1, num_local_atoms
moment_x,moment_y,moment_z,den ! write density of states (den) only when certain options set atomdata => getAtomData(calc, ila)
else densities => getDensities(calc, ila)
write(unit=fu, rec=i1) qc,catom,charge,ecore,muorb,phi_soc,theta_soc,phi_soc_old,theta_soc_old,angle_fix_mode, & atom_id = calc%atom_ids(ila) ! get global atom_id from local index
moment_x,moment_y,moment_z
endif if (emesh%NPOL == 0) then
endsubroutine ! write write(unit=r1fu, rec=atom_id) atomdata%core%QC_corecharge, &
densities%CATOM, densities%CHARGE, atomdata%core%ECORE, &
densities%MUORB, calc%noco_data%phi_noco(atom_id), &
calc%noco_data%theta_noco(atom_id), &
calc%noco_data%phi_noco_old(atom_id), &
calc%noco_data%theta_noco_old(atom_id), &
calc%noco_data%angle_fix_mode(atom_id), &
calc%noco_data%moment_x(atom_id), &
calc%noco_data%moment_y(atom_id), &
calc%noco_data%moment_z(atom_id), &
densities%DEN ! write density of states (den) only when certain options set
else
write(unit=r1fu, rec=atom_id) atomdata%core%QC_corecharge, &
densities%CATOM, densities%CHARGE, atomdata%core%ECORE, &
densities%MUORB, calc%noco_data%phi_noco(atom_id), &
calc%noco_data%theta_noco(atom_id), &
calc%noco_data%phi_noco_old(atom_id), &
calc%noco_data%theta_noco_old(atom_id), &
calc%noco_data%angle_fix_mode(atom_id), &
calc%noco_data%moment_x(atom_id), &
calc%noco_data%moment_y(atom_id), &
calc%noco_data%moment_z(atom_id)
endif
end do
close(r1fu)
end if
end subroutine
!---------------------------------------------------------------------------- !----------------------------------------------------------------------------
!> Communicate and sum up contributions for charge neutrality and !> Communicate and sum up contributions for charge neutrality and
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment