[Pw_forum] B_field

Gabriele Sclauzero sclauzer at sissa.it
Tue Jun 16 09:34:36 CEST 2009



孙阳 wrote:
> Dear Gabriele and any other pwscf users:
> 
> Thank you for all of the informations. I do read the script of "add B_field",
> one thing that makes me confused is that: the main structure of the
> Program was written using conditional pattern, of which, I never find the
> "i_cons == 5" case (which should be there, you can look it up in the
> input.f90), which is, I guess, a core problem with my input.  In my "nspin=2"
> calculation, there turns out a reminder in the output file: "i_cons
> not programmed".
> This is a reminder also in the "add_bfield.f90" to warn that "icons"
> is out of range.
> 
> Actually, we just want to do a simple noncollinear calculation toward the
> bulk Pd. We hope to use something may be more straightfowrd (just a hope).
> 
> The following is my input file:

Your input for me works just fine. This problem was fixed in v. 4.0.2, so you might need
to update QE to the latest version (you can retrieve v. 4.0.5 from qe-forge.org website).

There should be this line:

  IF (nspin ==1 .or. i_cons==0 .or. i_cons==5 ) RETURN

and the subroutine does nothing for i_cons==5, since in that case the calculation is done
using two Fermi energies, so that you don't need to add a magnetic field to constrain the
magnetization.


If you really want to add a magnetic field to the XC potential (though I'm not sure
is the correct thing to do), you have to look at i_cons==4 (not i_cons==5) in add_bfield.
This type of "constraint" is not considered in input.f90, but you want to reenable that
option, simply add

 i_cons==4

just after

  IF ( B_field(1) /= 0.D0 .OR. &
       B_field(2) /= 0.D0 .OR. &
       B_field(3) /= 0.D0 ) THEN

and it should be handled properly by add_bfield.



GS



> 
> ****************************************************************************************
> 
>  &control
>     calculation='scf'
>     restart_mode='from_scratch',
>     pseudo_dir = '$PSEUDO_DIR/',
>     outdir='$TMP_DIR/'
>     prefix='Pd'
> 
> 
>  /
>  &system
>     ibrav = 2
>     celldm(1) = 7.33361
>     constrained_magnetization = 'total'
>     nspin = 2
>     fixed_magnetization(3) = 0.01
>     ntyp = 1
>     nat=1
>     ecutwfc = 30.0
>     ecutrho = 500.0
>     occupations='tetrahedra'
>     lambda=1
>  /
> 
>  &electrons
>     conv_thr = 1.0e-8
>     mixing_beta = 0.1
>  /
> ATOMIC_SPECIES
>  Pd  1.0  Pd.pz-nd-rrkjus.UPF
> 
> ATOMIC_POSITIONS
>  Pd  0.0000 0.0000 0.000
> K_POINTS (automatic)
>  8 8 8 0 0 0
> EOF
> echo
> echo "#######################################################################"
> echo Running PW.x for the scf calculation ...
> $PW_COMMAND < scf.in > scf.out
> echo done
> 
> *****************************************************************************************
> 
> The report is:
> 
>  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>      from add_bfield : error #         1
>      i_cons not programmed
>  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> 
> 
> Overall, we just would like to add an B field to a bulk system. As
> Gabriele pointed out that
> the flag of "B_field(i)" might have been out of date. Any one has an
> idea about this, your suggestion
> is highly appreciated.
> 
> Thank you so much!!
> 
> Yang
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> 2009/6/15 Gabriele Sclauzero <sclauzer at sissa.it>:
>> Dear Yang (from???, please sign including your affiliation, since this is
>> the "policy" of the PW forum),
>>
>> 孙阳 wrote:
>>> Hi, Gabriele, I think you are right. I've already performed the
>>> constrained magnetization
>>> calculation. Would there be anyone introduce the way using
>>> "constrained magnetizatio".
>>> Is it fully equivalent to applying an external field?
>> I'm not sure about this, but, since H (magnetic field) and M (magnetization) are
>> conjugated variables, you can pass from one to the other as independent variable
>> in the Hamiltonian via a Legendre transform. When you constrain the magnetization,
>> the magnetic field will appear as a Lagrange multiplier, so if you use Lagrange
>>  technique you get it automatically (see PRL 53,2512 about constrained DFT).
>> In QE things are done in a different way, actually, and Lagrange multipliers are not
>> used. If you fix the total magnetization in collinear LSDA, the "two Fermi energies"
>> technique is used, while in the other cases a penalty functional is added (you have to
>> tweak a bit with the "lambda" parameter: have a look at INPUT_PW and add_bfield.f90 for
>> more detail).
>> Anyway the code always gives you the "Hellman-Feynman" Magnetic field, H(M), as output at
>> the end of the run. If you build the E(M) curve you should find, in principle, the same
>> magnetic field by computing the derivative of E(M) w.r.t. M and thus get the same H(M) curve.
>>
>>
>> HTH
>>
>> GS
>>
>>
>>
>>> Thanks,
>>>
>>> Yang
>>>
>>> 2009/6/15 Gabriele Sclauzero <sclauzer at sissa.it>:
>>>> It seems to me that B_field can be read from input, but then is not used in the
>>>> calculation. Maybe it was an older option which has been replaced by another solution. In
>>>> fact I think that a better way to see the effect of an external magnetic field is to do a
>>>> calculation with constrained magnetization (see INPUT_PW for documentation): this should
>>>> ensure to reach the ground states, while I suspect that applying a magnetic field you
>>>> could end in a metastable state, depending on the starting conditions.
>>>>
>>>> Regards
>>>>
>>>> GS
>>>>
>>>> 孙阳 wrote:
>>>>> Dear everyone:
>>>>>
>>>>> I try to appy an external magnetic field about 0.01 Ry to a bulk of
>>>>> paramagnetic material. By either looking at the spin polarization and
>>>>> the density of states, I could not find any polarization induced.
>>>>> Any one has an idea. It will be highly appreciated!
>>>>>
>>>>> Yang
>>>>>
>>>> --
>>>>
>>>>
>>>> o ------------------------------------------------ o
>>>> | Gabriele Sclauzero, PhD Student                  |
>>>> | c/o:   SISSA & CNR-INFM Democritos,              |
>>>> |        via Beirut 2-4, 34014 Trieste (Italy)     |
>>>> | email: sclauzer at sissa.it                         |
>>>> | phone: +39 040 3787 511                          |
>>>> | skype: gurlonotturno                             |
>>>> o ------------------------------------------------ o
>>>> _______________________________________________
>>>> Pw_forum mailing list
>>>> Pw_forum at pwscf.org
>>>> http://www.democritos.it/mailman/listinfo/pw_forum
>>>>
>>>
>>>
>> --
>>
>>
>> o ------------------------------------------------ o
>> | Gabriele Sclauzero, PhD Student                  |
>> | c/o:   SISSA & CNR-INFM Democritos,              |
>> |        via Beirut 2-4, 34014 Trieste (Italy)     |
>> | email: sclauzer at sissa.it                         |
>> | phone: +39 040 3787 511                          |
>> | skype: gurlonotturno                             |
>> o ------------------------------------------------ o
>> _______________________________________________
>> Pw_forum mailing list
>> Pw_forum at pwscf.org
>> http://www.democritos.it/mailman/listinfo/pw_forum
>>
> 
> 
> 

-- 


o ------------------------------------------------ o
| Gabriele Sclauzero, PhD Student                  |
| c/o:   SISSA & CNR-INFM Democritos,              |
|        via Beirut 2-4, 34014 Trieste (Italy)     |
| email: sclauzer at sissa.it                         |
| phone: +39 040 3787 511                          |
| skype: gurlonotturno                             |
o ------------------------------------------------ o



More information about the users mailing list