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

Introduced the input parameters to control the constraint bfields.

The parameters are taken from Sascha Brinkers presentation and should
match what is implemented in KKRhost.
The names are kept as close as possible to the inputcard keywords in
KKRhost, thus they might differ from what they are called in the
KKRhost code.

Added the parameters to datastructures/InputParamsNew.txt and
generated a new datastructures/InputParams_mod.F90 using
the generate.sh skript.
parent cc099999
No related branches found
No related tags found
No related merge requests found
...@@ -124,3 +124,23 @@ d r_log 0.1D0 ...@@ -124,3 +124,23 @@ d r_log 0.1D0
d a_log 0.025D0 d a_log 0.025D0
### unknown ### unknown
l enable_quad_prec .FALSE. l enable_quad_prec .FALSE.
### [bfields] external magnetic field, non-collinear magnetic field (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] 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)
i itbfield0 0
### [bfields] stop applying magnetic field after iteration itscf1 (called ibfield_itscf1 in KKRhost code)
i itbfield1 10000
...@@ -78,6 +78,16 @@ module InputParams_mod ...@@ -78,6 +78,16 @@ module InputParams_mod
double precision :: r_log double precision :: r_log
double precision :: a_log double precision :: a_log
logical :: enable_quad_prec logical :: enable_quad_prec
logical :: noncobfield
logical :: constr_field
logical :: same_bfield
logical :: trans_bfield
logical :: mt_bfield
logical :: torque
integer :: ibfield
integer :: iconstr
integer :: itbfield0
integer :: itbfield1
endtype ! InputParams endtype ! InputParams
...@@ -638,6 +648,96 @@ integer function getValues(filename, self) result(ierror) ...@@ -638,6 +648,96 @@ integer function getValues(filename, self) result(ierror)
destroy_and_return destroy_and_return
endif endif
ierror = getValue(cr, "noncobfield", self%noncobfield , def=.FALSE.)
if (ierror == use_default) then
write(*,*) "WARNING: Bad/no value given for noncobfield. Set noncobfield to .FALSE."
ierror = 0 ! ok, no error
elseif (ierror /= 0) then
write(*,*) "Bad/no value given for noncobfield."
destroy_and_return
endif
ierror = getValue(cr, "constr_field", self%constr_field , def=.FALSE.)
if (ierror == use_default) then
write(*,*) "WARNING: Bad/no value given for constr_field. Set constr_field 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."
destroy_and_return
endif
ierror = getValue(cr, "trans_bfield", self%trans_bfield , def=.FALSE.)
if (ierror == use_default) then
write(*,*) "WARNING: Bad/no value given for trans_bfield. Set trans_bfield to .FALSE."
ierror = 0 ! ok, no error
elseif (ierror /= 0) then
write(*,*) "Bad/no value given for trans_bfield."
destroy_and_return
endif
ierror = getValue(cr, "mt_bfield", self%mt_bfield , def=.FALSE.)
if (ierror == use_default) then
write(*,*) "WARNING: Bad/no value given for mt_bfield. Set mt_bfield to .FALSE."
ierror = 0 ! ok, no error
elseif (ierror /= 0) then
write(*,*) "Bad/no value given for mt_bfield."
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"
ierror = 0 ! ok, no error
elseif (ierror /= 0) then
write(*,*) "Bad/no value given for itbfield0."
destroy_and_return
endif
ierror = getValue(cr, "itbfield1", self%itbfield1 , def=10000)
if (ierror == use_default) then
write(*,*) "WARNING: Bad/no value given for itbfield1. Set itbfield1 to 10000"
ierror = 0 ! ok, no error
elseif (ierror /= 0) then
write(*,*) "Bad/no value given for itbfield1."
destroy_and_return
endif
write(*,*) "Finished reading information from input.conf" write(*,*) "Finished reading information from input.conf"
destroy_and_return destroy_and_return
#undef destroy_and_return #undef destroy_and_return
......
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