diff --git a/source/KKRnano/source/CalculationData_mod.F90 b/source/KKRnano/source/CalculationData_mod.F90 index 7c2e39df92d5acc4749af9ee72419237ba484cba..0ff9ee4431894f5110b2b4c1f9551a6a436884b2 100644 --- a/source/KKRnano/source/CalculationData_mod.F90 +++ b/source/KKRnano/source/CalculationData_mod.F90 @@ -295,6 +295,7 @@ module CalculationData_mod integer, intent(in) :: voronano integer :: atom_id, ila, irmd + integer :: verbosity call create(self%lattice_vectors, arrays%bravais) ! createLatticeVectors @@ -385,8 +386,14 @@ module CalculationData_mod call setup_iguess(self, dims, arrays%nofks, kmesh) ! setup storage for iguess if (params%noncobfield) then + ! Output only as master, in that case copy the input parameter + verbosity = -1 + if (mp%isMasterRank) verbosity = params%bfield_verbosity + ! Initialize the noncolinear magnetic field. If present, read from disk - call load_bfields_from_disk(self%bfields, params%constr_field, dims%naez, self%atom_ids) + call load_bfields_from_disk(self%bfields, params%external_bfield, & + verbosity, dims%naez, self%atom_ids, & + self%noco_data%angle_fix_mode) ! Initialize the fields do ila = 1, self%num_local_atoms call init_bfield(self%bfields(ila), dims%lmaxd, & diff --git a/source/KKRnano/source/NonCollinearMagnetism_mod.F90 b/source/KKRnano/source/NonCollinearMagnetism_mod.F90 index cf586ae2e2d4487fc7993aed656e7c9792eff197..6b5da416ebed6f86a012f723495f734235694ed6 100644 --- a/source/KKRnano/source/NonCollinearMagnetism_mod.F90 +++ b/source/KKRnano/source/NonCollinearMagnetism_mod.F90 @@ -33,7 +33,7 @@ SUBROUTINE tmat_newsolver(ie,nspin,lmax,zat,socscale, & ! lly, & lmpotd,irmd_new,TmatN,soc,enable_quad_prec, & bfield, imt, iteration_number, itscf0, itscf1, & - lbfield, lbfield_constr, lbfield_trans, lbfield_mt) + lbfield, lbfield_trans, lbfield_mt) ! Code converted using TO_F90 by Alan Miller ! Date: 2016-04-18 Time: 14:58:02 @@ -68,7 +68,7 @@ type(bfield_data), intent(in) :: bfield !! Information on the noncoll integer, intent(in) :: imt !! MT radius (index in cheb mesh) integer, intent(in) :: iteration_number !! Current iteration number integer, intent(in) :: itscf0, itscf1 !! Window of iterations when to apply fields -logical, intent(in) :: lbfield, lbfield_constr !! Wheter to apply the fields +logical, intent(in) :: lbfield !! Wheter to apply nonco bfields logical, intent(in) :: lbfield_trans ! Apply only transveral logical, intent(in) :: lbfield_mt ! Apply only up do MT radius @@ -167,8 +167,7 @@ allocate(ull(nsra*lmmaxso,lmmaxso,irmdnew)) ! add bfield if (lbfield) then call add_bfield(bfield, vnspll1, theta, phi, imt, iteration_number, & - itscf0, itscf1, lbfield_constr, lbfield_trans, & - lbfield_mt, .false.) + itscf0, itscf1, lbfield_trans, lbfield_mt, .false.) end if !c extend matrix for the SRA treatment @@ -339,7 +338,7 @@ SUBROUTINE rhovalnew(ldorhoef,ielast,nsra,nspin,lmax,ez,wez,zat, & den_out,espv,rho2ns,r2nef,gmatn, muorb, & lpotd,lmaxd,irmd,irmd_new,iemxd,soc,enable_quad_prec, & bfield, imt, iteration_number, itscf0, itscf1, & - lbfield, lbfield_constr, ltorque, lbfield_trans, lbfield_mt) + lbfield, lbfield_trans, lbfield_mt) ! Code converted using TO_F90 by Alan Miller ! Date: 2016-04-21 Time: 11:39:57 @@ -395,8 +394,7 @@ type(bfield_data), intent(inout) :: bfield !! Information on the noncoll integer, intent(in) :: imt !! MT radius (index in cheb mesh) integer, intent(in) :: iteration_number !! Current iteration number integer, intent(in) :: itscf0, itscf1 !! Window of iterations when to apply fields -logical, intent(in) :: lbfield, lbfield_constr !! Wheter to apply the fields -logical, intent(in) :: ltorque !! Whether to calculate torques +logical, intent(in) :: lbfield !! Wheter to apply nonco bfields logical, intent(in) :: lbfield_trans ! Apply only transveral logical, intent(in) :: lbfield_mt ! Apply only up do MT radius @@ -559,8 +557,7 @@ DO ie=1,ielast ! Add bfield if (lbfield) then call add_bfield(bfield, vnspll1, theta, phi, imt, iteration_number, & - itscf0, itscf1, lbfield_constr, lbfield_trans, & - lbfield_mt, .false.) + itscf0, itscf1, lbfield_trans, lbfield_mt, .false.) end if !c extend matrix for the SRA treatment @@ -625,8 +622,7 @@ DO ie=1,ielast ! Add bfield if (lbfield) then call add_bfield(bfield, vnspll1, theta, phi, imt, iteration_number, & - itscf0, itscf1, lbfield_constr, lbfield_trans, & - lbfield_mt, .true.) + itscf0, itscf1, lbfield_trans, lbfield_mt, .true.) end if !c extend matrix for the SRA treatment @@ -823,10 +819,10 @@ END DO ! Calculate torque ! Compare this position to KKhost: calling after the rho2nsc_loop, before cheb2oldgrid -if (ltorque) then +if (lbfield) then call calc_torque(bfield, vins, rho2nsc, theta, phi, lmax, rpan_intervall, ipan_intervall, & npan_tot, ncheb, imt1, iend, icleb, cleb, ifunm, thetasnew, & - lbfield_constr, lbfield_mt, itscf0, itscf1, iteration_number, angle_fix_mode) + lbfield_mt, itscf0, itscf1, iteration_number, angle_fix_mode) end if allocate(rhotemp(irmdnew,lmpotd)) diff --git a/source/KKRnano/source/ScatteringCalculation_mod.F90 b/source/KKRnano/source/ScatteringCalculation_mod.F90 index 7e33e5c347278c7a211125f91e4ad6c190eafc05..31a4b6c8edb98f826f8440f53d4c0061ddd299c4 100644 --- a/source/KKRnano/source/ScatteringCalculation_mod.F90 +++ b/source/KKRnano/source/ScatteringCalculation_mod.F90 @@ -274,7 +274,7 @@ implicit none kkr(ila)%TmatN(:,:,ispin),params%soc,params%enable_quad_prec, & calc%bfields(ila), get_muffin_tin_index(atomdata%chebmesh_ptr), & iter, params%itbfield0, params%itbfield1, & - params%noncobfield, params%constr_field, params%trans_bfield, params%mt_bfield) + params%noncobfield, params%trans_bfield, params%mt_bfield) call rotatematrix(kkr(ila)%TmatN(:,:,ispin),noco%theta_noco(i1),noco%phi_noco(i1),lmmaxd,0) else diff --git a/source/KKRnano/source/bfield/bfield.f90 b/source/KKRnano/source/bfield/bfield.f90 index 3dc12d5b51550b0ca2e18d70679c11bbddf91440..4dd30e397a625a893ca27a0b28d8dfd837ebc9ea 100644 --- a/source/KKRnano/source/bfield/bfield.f90 +++ b/source/KKRnano/source/bfield/bfield.f90 @@ -38,16 +38,18 @@ module mod_bfield contains - !> Load the external noncollinear magnetic field (if a file is present) and - !> the initial guess for the constraining fields (if constraint magnetism is - !> used and a file is present) from disk. - !> This subroutine loads information for the locally treated atoms into an - !> array of structs. - subroutine load_bfields_from_disk(bfields, lbfield_constr, naez, atom_ids) + !> Load the external noncollinear magnetic field (if used) and the initial + !> guess for the constraining fields from disk. + !> This subroutine loads information for the locally treated atoms into a + !> given array of structs of the right size. + subroutine load_bfields_from_disk(bfields, external_bfield, verbosity, naez, & + atom_ids, fix_angle_modes) type(bfield_data), intent(inout) :: bfields(:) !! Array for the read fields - logical, intent(in) :: lbfield_constr !! Wheter constraint magnetism is used + logical, intent(in) :: external_bfield !! Whether to apply external nonco fields + integer, intent(in) :: verbosity !! Output verbosity integer, intent(in) :: naez !! Number of atoms in the unit cell integer(kind=4), dimension(:), intent(in) :: atom_ids !! Locally treated atoms + integer(kind=1), dimension(:), intent(in) :: fix_angle_modes integer :: num_local_atoms ! number of atoms treated in this MPI rank integer :: ila ! atom index @@ -61,10 +63,8 @@ contains allocate(all_bfields(naez)) ! Read the files - call read_bfield(all_bfields) - if (lbfield_constr) then - call read_bconstr(all_bfields) - end if + call read_external_bfield(all_bfields, external_bfield, verbosity) + call read_constr_bfield_initial_guess(all_bfields, verbosity, fix_angle_modes) ! Copy the locally treated atoms to the output do ila = 1, num_local_atoms @@ -105,18 +105,19 @@ contains end subroutine init_bfield - !TODO save_bconst() - !------------------------------------------------------------------------------- - !> Summary: Reads the atom-wise constraining field from bconstr.dat + !> Summary: Reads the atom-wise initial guess for the constraining magnetic + !> field from bconstr.dat !> Author: MdSD, Nicolas Essing !> !> The file should contain three floating point values in each line and a line !> for each atom. The first line is treated as a header and skipped. !> Intepreted as initial constraining bfield in cartesian coordinates, in Ry. !------------------------------------------------------------------------------- - subroutine read_bconstr(bfields) + subroutine read_constr_bfield_initial_guess(bfields, verbosity, fix_angle_modes) type(bfield_data), dimension(:), intent(inout) :: bfields + integer, intent(in) :: verbosity + integer(kind=1), dimension(:), intent(in) :: fix_angle_modes integer :: number_of_atoms integer :: iatom @@ -136,6 +137,19 @@ contains write(*,*) "Error reading bconstr_in.dat" stop end if + + ! In case constraint magnetism is not used for this atom, set the initial + ! guess to zero. Will not be updated in that case and can be added to the + ! potential without further checking on input parameters. + ! If an initial guess was provided that is not zero, give a warning. + if (.not. (fix_angle_modes(iatom) == 2 .or. fix_angle_modes(iatom) == 3)) then + if (any(bfields(iatom)%bfield_constr /= 0) .and. verbosity >= 0) then + write(*,'(2A,I3,2A)') 'Warning: Initial guess for constraint magnetic field ', & + 'for atom ', iatom, ' was not zero, but no constraint magnetism is ', & + 'used for this atom. Will be set to zero.' + end if + bfields(iatom)%bfield_constr(:) = 0 + end if end do close(57493215) else @@ -145,43 +159,65 @@ contains end do end if - write(*,*) ' ############################################################' - write(*,*) ' input constraining fields' - write(*,*) ' ############################################################' - write(*,*) ' iatom Bx By Bz (in Ry)' - do iatom = 1, number_of_atoms - write(*,'(2X,I4,3(E16.8))') iatom, bfields(iatom)%bfield_constr(:) - end do - end subroutine read_bconstr + if (verbosity >= 3) then + ! Write detailed information + write(*,'(79("#"))') + write(*,'(2X,A)') 'Initial guess for constraining fields' + write(*,'(79("#"))') + write(*,'(2X,A4,3(7X,A7,3X))') 'atom','Bx [Ry]','By [Ry]','Bz [Ry]' + do iatom = 1, number_of_atoms + write(*,'(2X,I4,3(2X,E15.8))') iatom, bfields(iatom)%bfield_constr(:) + end do + write(*,'(79("#"))') + else if (verbosity >= 2) then + ! Give an overview + if (file_exists) then + write(*,'(A)') 'Initial constraining magnetic fields read from file.' + else + write(*,'(A)') 'Initial constraining magnetic fields set to zero.' + end if + else + ! No output + end if + end subroutine !------------------------------------------------------------------------------- - !> Summary: Reads the atom-wise magnetic field from bfield.dat + !> Summary: Reads the atom-wise external magnetic field from bfield.dat, + !> if it should be used according to the input parameters. !> Author: Nicolas Essing !> + !> If external fields shall not be used, the external field is set to zero and + !> an eventually present file is ignored. + !> If external fields shall be used and no file is present, the program stops + !> with an error. !> The file should contain three numbers per line and one line per atom. !> Read as 'theta phi bfield_strength' with the angles in degrees and the - !> strength in Ry ( ! might get changed to Tesla ! ) + !> strength in Ry. !> Lines can be commented out with a # as first character. !>------------------------------------------------------------------------------ - subroutine read_bfield(bfields) + subroutine read_external_bfield(bfields, external_bfield, verbosity) type(bfield_data), dimension(:), intent(inout) :: bfields + logical, intent(in) :: external_bfield + integer, intent(in) :: verbosity integer :: number_of_atoms integer :: iatom, iostat character(256) :: linebuffer - logical :: file_exists double precision, dimension(:), allocatable :: phi, theta, strength number_of_atoms = size(bfields) - inquire(file='bfield.dat', exist=file_exists) - allocate(phi(number_of_atoms), theta(number_of_atoms), strength(number_of_atoms)) - if (file_exists) then + if (external_bfield) then open(unit=57493215, file='bfield.dat', iostat=iostat) - + if (iostat /= 0) then + write(*,*) "I/O Error opening bfield.dat" + write(*,*) "If you do not want external nonco bfields, turn it of in the input.conf" + stop + end if + ! manual loop over iatom because comments are allowed iatom = 1 do while (iatom <= number_of_atoms) @@ -214,14 +250,28 @@ contains bfields(iatom)%bfield_ext(3) = strength(iatom) * cos(theta(iatom)) end do - write(*,*) ' ###############################################' - write(*,*) ' external non-collinear magnetic fields' - write(*,*) ' ###############################################' - write(*,*) ' iatom theta phi bfield (in Ry)' - do iatom = 1, number_of_atoms - write(*,'(2X,I4,3(E16.8))') iatom, theta(iatom), phi(iatom), strength(iatom) - end do - end subroutine read_bfield + if (verbosity >= 3) then + ! Write detailed information + write(*,'(79("#"))') + write(*,'(16X,A)') 'external non-collinear magnetic fields' + write(*,'(79("#"))') + write(*,'(2X,A4,3(5X,A11,1X))') 'atom', ' theta ', ' phi ', 'bfield [Ry]' + do iatom = 1, number_of_atoms + write(*,'(2X,I4,3(2X,E15.8))') iatom, theta(iatom), phi(iatom), strength(iatom) + end do + write(*,'(79("#"))') + else if (verbosity >= 2) then + ! Give an overview + if (external_bfield) then + write(*,'(A)') 'External non-collinear magnetic fields loaded from file.' + write(*,'(2X,A,E16.8)') 'Mean magnitude [Ry]:', sum(abs(strength)) / number_of_atoms + else + write(*,'(A)') 'Not applying external non-collinear magnetic fields.' + end if + else + ! No output + end if + end subroutine !>------------------------------------------------------------------------------ @@ -234,7 +284,7 @@ contains !> pauli matrices and B the combined bfield. !>------------------------------------------------------------------------------ subroutine add_bfield(bfield, vnspll, theta, phi, imt, iteration_number, & - itscf0, itscf1, lbfield_constr, lbfield_trans, & + itscf0, itscf1, lbfield_trans, & lbfield_mt, transpose_bfield) type(bfield_data), intent(in) :: bfield double complex, dimension(:,:,:), intent(inout) :: vnspll ! The potential to add to @@ -242,7 +292,6 @@ contains integer, intent(in) :: imt ! MT radius (index in cheb mesh) integer, intent(in) :: iteration_number !TODO this, or just a logical and do the check outside? integer, intent(in) :: itscf0, itscf1 !TODO ^ - logical, intent(in) :: lbfield_constr !! Wheter to use constraint fields logical, intent(in) :: lbfield_trans ! Apply only transveral logical, intent(in) :: lbfield_mt ! Apply only up do MT radius logical, intent(in) :: transpose_bfield ! Transpose the bfield (for left solutions) @@ -262,11 +311,10 @@ contains lmmax = size(bfield%thetallmat, 1) ! size(vnspll, 1) is 2*lmmax irmd = size(vnspll, 3) - combined_bfields(:) = bfield%bfield_ext(:) ! start with external, is zero if unused - if (lbfield_constr) then - ! Add constraint field - combined_bfields(:) = combined_bfields(:) + bfield%bfield_constr(:) - end if + ! Add external and constraint field. If one of them is tured off by input + ! parameters or mode, it is zero, so this distinction does not have to be + ! done here. + combined_bfields(:) = bfield%bfield_ext(:) + bfield%bfield_constr(:) if (lbfield_trans) then dir(1) = sin(theta) * cos(phi) @@ -312,8 +360,6 @@ contains !------------------------------------------------------------------------------------ !> Summary: Shape function LL' expansion !> Author: Sascha Brinker - !> Category: KKRhost, geometry, new-mesh, shapefun - !> Deprecated: False !> Calculates the LL' expansion of the shape function similarly to vllmat_new.f90 !> @note The input shapefunction (single L) uses pointer arrays for the lm index. !> The output does not need pointers! diff --git a/source/KKRnano/source/bfield/torque.f90 b/source/KKRnano/source/bfield/torque.f90 index 7a3a704f3ea44d9ddf998d881cea034c08d7a296..485515e17495bb7bc56351ce7fa9fe563d365828 100644 --- a/source/KKRnano/source/bfield/torque.f90 +++ b/source/KKRnano/source/bfield/torque.f90 @@ -23,7 +23,7 @@ contains !------------------------------------------------------------------------------- subroutine calc_torque(bfield, vpot, rho2nsc, theta, phi, lmax, rpan_intervall, ipan_intervall, & npan_tot, ncheb, imt, iend, icleb, cleb, ifunm, thetasnew, & - lbfield_constr, lbfield_mt, itscf0, itscf1, iteration, constr_mode) + lbfield_mt, itscf0, itscf1, iteration, constr_mode) type(bfield_data), intent(inout) :: bfield !! Information on the magnetic field double precision, dimension(:,:,:), intent(in) :: vpot !! The potential double complex, dimension(:,:,:), intent(in) :: rho2nsc !! complex density matrix @@ -39,7 +39,6 @@ contains double precision, dimension(:), intent(in) :: cleb !! Gaunt coefficients integer , dimension(:), intent(in) :: ifunm !! pointer array for shapefun double precision, dimension(:, :), intent(in) :: thetasnew !! shapefun on the Cheby mesh - logical, intent(in) :: lbfield_constr !! Use constraint fields logical, intent(in) :: lbfield_mt !! Use magnetic fields only inside the muffin tin integer, intent(in) :: itscf0, itscf1 !! Apply magnetic fields between these iterations integer, intent(in) :: iteration !! Current iteration @@ -159,7 +158,7 @@ contains end if ! Scf-cycle for constraint fields, based either on torque or on fields alone - if (lbfield_constr .and. itscf0 <= iteration .and. iteration <= itscf1) then + if (itscf0 <= iteration .and. iteration <= itscf1) then if (constr_mode == 3) then bfield%bfield_constr(:) = bfield%bfield_constr(:) - bfield%mag_torque(:) / mag_mom_len else if (constr_mode == 2) then diff --git a/source/KKRnano/source/datastructures/InputParamsNew.txt b/source/KKRnano/source/datastructures/InputParamsNew.txt index 20f704c84e87aa334142e4b9ae0fa300dc6a6419..14f9192109ecc9b44d5bd4454f6ad5630a49a784 100644 --- a/source/KKRnano/source/datastructures/InputParamsNew.txt +++ b/source/KKRnano/source/datastructures/InputParamsNew.txt @@ -126,21 +126,15 @@ d a_log 0.025D0 l enable_quad_prec .FALSE. ### [bfields] turn on or off everything concerning non-collinear magnetic fields (called lbfield in KKRhost code) l noncobfield .FALSE. -### [bfields] constraining fields, non-collinear magnetic field (called lbfield_constr in KKRhost code) -l constr_field .FALSE. -### [bfields] apply same field to all atoms (True) or individual fields to each atom (called lbfield_all in KKRhost code) -l same_bfield .FALSE. +### [bfields] turn on or off external non-collinear magnetic fields +l external_bfield .FALSE. ### [bfields] apply only transversal bfield (called lbfield_trans in KKRhost code) l trans_bfield .FALSE. ### [bfields] apply magnetic field only in the muffin-tin (called lbfield_mt in KKRhost code) l mt_bfield .FALSE. -### [bfields] calculate magnetic torque (called ltorque in KKRhost code) -l torque .FALSE. -### [bfields] spin (0), orbital (1), spin+orbial (2) fields (called ibfield in KKRhost code) -i ibfield 0 -### [bfields] type of contraint (0 = torque, 1 = magnetic moment) (called ibfield_constr in KKRhost code) -i iconstr 0 -### [bfields] start magnetic field at iteration itscf0 (called ibfield_itscf0 in KKRhost code) +### [bfields] start applying magnetic field at iteration (called ibfield_itscf0 in KKRhost code) i itbfield0 0 ### [bfields] stop applying magnetic field after iteration itscf1 (called ibfield_itscf1 in KKRhost code) i itbfield1 10000 +### [bfields] control verbosity concerning non-collinear magnetic fields +i bfield_verbosity 2 diff --git a/source/KKRnano/source/datastructures/InputParams_mod.F90 b/source/KKRnano/source/datastructures/InputParams_mod.F90 index 73ebc527a28768c8bd95886b30f8f8af5d06ce50..a20d148244e721fd139264beef3e65d0af80f738 100644 --- a/source/KKRnano/source/datastructures/InputParams_mod.F90 +++ b/source/KKRnano/source/datastructures/InputParams_mod.F90 @@ -79,15 +79,12 @@ module InputParams_mod double precision :: a_log logical :: enable_quad_prec logical :: noncobfield - logical :: constr_field - logical :: same_bfield + logical :: external_bfield logical :: trans_bfield logical :: mt_bfield - logical :: torque - integer :: ibfield - integer :: iconstr integer :: itbfield0 integer :: itbfield1 + integer :: bfield_verbosity endtype ! InputParams @@ -657,21 +654,12 @@ integer function getValues(filename, self) result(ierror) destroy_and_return endif - ierror = getValue(cr, "constr_field", self%constr_field , def=.FALSE.) + ierror = getValue(cr, "external_bfield", self%external_bfield , def=.FALSE.) if (ierror == use_default) then - write(*,*) "WARNING: Bad/no value given for constr_field. Set constr_field to .FALSE." + write(*,*) "WARNING: Bad/no value given for external_bfield. Set external_bfield to .FALSE." ierror = 0 ! ok, no error elseif (ierror /= 0) then - write(*,*) "Bad/no value given for constr_field." - destroy_and_return - endif - - ierror = getValue(cr, "same_bfield", self%same_bfield , def=.FALSE.) - if (ierror == use_default) then - write(*,*) "WARNING: Bad/no value given for same_bfield. Set same_bfield to .FALSE." - ierror = 0 ! ok, no error - elseif (ierror /= 0) then - write(*,*) "Bad/no value given for same_bfield." + write(*,*) "Bad/no value given for external_bfield." destroy_and_return endif @@ -693,33 +681,6 @@ integer function getValues(filename, self) result(ierror) destroy_and_return endif - ierror = getValue(cr, "torque", self%torque , def=.FALSE.) - if (ierror == use_default) then - write(*,*) "WARNING: Bad/no value given for torque. Set torque to .FALSE." - ierror = 0 ! ok, no error - elseif (ierror /= 0) then - write(*,*) "Bad/no value given for torque." - destroy_and_return - endif - - ierror = getValue(cr, "ibfield", self%ibfield , def=0) - if (ierror == use_default) then - write(*,*) "WARNING: Bad/no value given for ibfield. Set ibfield to 0" - ierror = 0 ! ok, no error - elseif (ierror /= 0) then - write(*,*) "Bad/no value given for ibfield." - destroy_and_return - endif - - ierror = getValue(cr, "iconstr", self%iconstr , def=0) - if (ierror == use_default) then - write(*,*) "WARNING: Bad/no value given for iconstr. Set iconstr to 0" - ierror = 0 ! ok, no error - elseif (ierror /= 0) then - write(*,*) "Bad/no value given for iconstr." - destroy_and_return - endif - ierror = getValue(cr, "itbfield0", self%itbfield0 , def=0) if (ierror == use_default) then write(*,*) "WARNING: Bad/no value given for itbfield0. Set itbfield0 to 0" @@ -738,6 +699,15 @@ integer function getValues(filename, self) result(ierror) destroy_and_return endif + ierror = getValue(cr, "bfield_verbosity", self%bfield_verbosity , def=2) + if (ierror == use_default) then + write(*,*) "WARNING: Bad/no value given for bfield_verbosity. Set bfield_verbosity to 2" + ierror = 0 ! ok, no error + elseif (ierror /= 0) then + write(*,*) "Bad/no value given for bfield_verbosity." + destroy_and_return + endif + write(*,*) "Finished reading information from input.conf" destroy_and_return #undef destroy_and_return diff --git a/source/KKRnano/source/wrappers_mod.F90 b/source/KKRnano/source/wrappers_mod.F90 index 88f360b1beea6e07d3b59c51878441e20247c083..261a31d9959af303444e936072b0d50760ecea31 100644 --- a/source/KKRnano/source/wrappers_mod.F90 +++ b/source/KKRnano/source/wrappers_mod.F90 @@ -99,7 +99,7 @@ module wrappers_mod den,espv,rho2ns,r2nef, gmatn(:,:,:,1), muorb, & ! just one spin component of gmatn needed atomdata%potential%lpot,lmaxd,mesh%irmd,chebmesh%irmd_new,iemxd, params%soc,params%enable_quad_prec, & bfield, imt, iteration_number, params%itbfield0, params%itbfield1, & - params%noncobfield, params%constr_field, params%torque, params%trans_bfield, params%mt_bfield) + params%noncobfield, params%trans_bfield, params%mt_bfield) ! calculate correct orbital moment do ispin=1,nspind