Commit JT 021318

This commit is contained in:
julient31
2018-02-13 07:23:48 -07:00
parent 3d18f55155
commit b422480002
14 changed files with 45281 additions and 96 deletions

View File

@ -16,13 +16,12 @@ ID, group-ID are documented in "fix"_fix.html command :ulb,l
langevin/spin = style name of this fix command :l
T = desired temperature of the bath (temperature units, K in metal units) :l
Tdamp = transverse magnetic damping parameter (adim) :l
Ldamp = longitudinal magnetic damping parameter (adim) :l
seed = random number seed to use for white noise (positive integer) :l
:ule
[Examples:]
fix 2 all langevin/spin 300.0 0.01 0.0 21 :pre
fix 2 all langevin/spin 300.0 0.01 21 :pre
[Description:]
@ -36,6 +35,8 @@ the following stochastic differential equation:
:c,image(Eqs/fix_langevin_spin_sLLG.jpg)
with lambda the transverse damping, and eta a random verctor.
This equation is referred to as the stochastic Landau-Lifshitz-Gilbert (sLLG)
equation.
The components of eta are drawn from a Gaussian probability law. Their amplitude
is defined as a proportion of the temperature of the external thermostat T (in K
@ -43,6 +44,16 @@ in metal units).
More details about this implementation are reported in "(Tranchida)"_#Tranchida1.
Note: due to the form of the sLLG equation, this fix has to be the last defined
magnetic fix before the integration/spin fix. As an example:
fix 1 all force/spin zeeman 0.01 0.0 0.0 1.0
fix 2 all langevin/spin 300.0 0.01 21
fix 3 all integration/spin lattice yes :pre
is correct, but defining a force/spin command after the langevin/spin command
would send an error message.
Note: The random # {seed} must be a positive integer. A Marsaglia random
number generator is used. Each processor uses the input seed to
generate its own unique seed and its own stream of random numbers.
@ -71,6 +82,9 @@ See the "Making LAMMPS"_Section_start.html#start_3 section for more info.
The numerical integration has to be performed with {fix/integration/spin}
when {langevin/spin} is enabled.
This fix has to be the last defined magnetic fix before the integration fix
("fix integration spin"_fix_integration_spin.html).
[Related commands:]
"fix integration spin"_fix_integration_spin.html,

View File

@ -1,55 +1,55 @@
# sc iron atoms in bismuth oxide
# layer sc iron atoms (in the [001] plane) in bismuth oxide
clear
units metal
atom_style spin
units metal
atom_style spin
dimension 3
boundary p p p
dimension 3
boundary p p f
# check why?
atom_modify map array
atom_modify map array
lattice sc 3.96
region box block 0.0 34.0 0.0 34.0 0.0 5.0
create_box 1 box
create_atoms 1 box
lattice sc 3.96
region box block 0.0 34.0 0.0 34.0 0.0 5.0
create_box 1 box
create_atoms 1 box
# setting mass, mag. moments, and interactions for bfo
mass 1 1.0
set group all spin/random 11 2.50
set group all spin/random 11 2.50
pair_style hybrid/overlay pair/spin/exchange 6.0 pair/spin/me 4.5
pair_coeff * * pair/spin/exchange exchange 6.0 -0.01575 0.0 1.965
pair_coeff * * pair/spin/me me 4.5 0.000109 1.0 1.0 1.0
pair_style hybrid/overlay pair/spin/exchange 6.0 pair/spin/me 4.5
pair_coeff * * pair/spin/exchange exchange 6.0 -0.01575 0.0 1.965
#pair_coeff * * pair/spin/me me 4.5 0.000109 1.0 1.0 1.0
pair_coeff * * pair/spin/me me 4.5 0.00109 1.0 1.0 1.0
neighbor 0.1 bin
neigh_modify every 10 check yes delay 20
neighbor 0.1 bin
neigh_modify every 10 check yes delay 20
fix 1 all force/spin anisotropy 0.0000035 0.0 0.0 1.0
fix 2 all langevin/spin 0.0 0.1 0.0 21
fix 1 all force/spin anisotropy 0.0000033 0.0 0.0 1.0
fix 2 all langevin/spin 0.0 0.1 21
fix 3 all integration/spin lattice no
fix 3 all integration/spin lattice no
timestep 0.0002
timestep 0.0001
compute out_mag all compute/spin
compute out_pe all pe
compute out_ke all ke
compute out_temp all temp
compute out_mag all compute/spin
compute out_pe all pe
compute out_ke all ke
compute out_temp all temp
variable magz equal c_out_mag[4]
variable magnorm equal c_out_mag[5]
variable emag equal c_out_mag[6]
variable tmag equal c_out_mag[7]
variable mag_force equal f_1
variable magz equal c_out_mag[4]
variable magnorm equal c_out_mag[5]
variable emag equal c_out_mag[6]
variable tmag equal c_out_mag[7]
variable mag_force equal f_1
thermo_style custom step time v_magnorm v_emag temp etotal
thermo 10
thermo 50
#dump 1 all custom 100 dump_spin_BFO.lammpstrj type x y z spx spy spz
dump 1 all custom 100 dump_spin_BFO.lammpstrj type x y z spx spy spz
run 10000
run 20000

View File

@ -31,8 +31,8 @@ pair_coeff * * pair/spin/exchange exchange 4.0 0.0446928 0.003496 1.4885
neighbor 0.1 bin
neigh_modify every 10 check yes delay 20
fix 1 all force/spin zeeman 0.1 0.0 0.0 1.0
fix 2 all langevin/spin 0.0 0.1 0.0 21
fix 1 all force/spin zeeman 0.01 0.0 0.0 1.0
fix 2 all langevin/spin 0.0 0.0 21
fix 3 all integration/spin lattice yes

View File

@ -32,7 +32,7 @@ neighbor 0.1 bin
neigh_modify every 10 check yes delay 20
fix 1 all force/spin zeeman 0.1 0.0 0.0 1.0
fix 2 all langevin/spin 0.0 0.1 0.0 21
fix 2 all langevin/spin 0.0 0.1 21
fix 3 all integration/spin lattice yes

View File

@ -48,10 +48,10 @@ velocity all create 200 4928459 rot yes dist gaussian
#Magneto-mechanic interactions for bulk fcc Cobalt
#pair_style pair/spin/exchange 4.0
#pair_style eam/alloy
#pair_style hybrid/overlay eam/alloy pair/spin/exchange 4.0 pair/spin/soc/neel 4.0
pair_style hybrid/overlay eam/alloy pair/spin/exchange 4.0
pair_style hybrid/overlay eam/alloy pair/spin/exchange 4.0 pair/spin/soc/neel 4.0
#pair_style hybrid/overlay eam/alloy pair/spin/exchange 4.0
pair_coeff * * eam/alloy ../examples/SPIN/Co_PurjaPun_2012.eam.alloy Co
pair_coeff * * eam/alloy ../examples/SPIN/dev/Co_PurjaPun_2012.eam.alloy Co
#pair_coeff * * ../Co_PurjaPun_2012.eam.alloy Co
#pair_style pair/spin/exchange 4.0
@ -67,7 +67,7 @@ pair_coeff * * pair/spin/exchange exchange 4.0 0.0446928 0.003496 1.4885
#pair_coeff * * me 2.6 0.01 1.0 1.0 1.0
#type i and j | interaction type | cutoff | K1 (eV) | K2 (adim) | K3 (Ang) (for SOC)
#pair_coeff * * pair/spin/soc/neel neel 4.0 0.003330282 0.864159 2.13731
pair_coeff * * pair/spin/soc/neel neel 4.0 0.003330282 0.864159 2.13731
#pair_coeff * * pair/spin/soc/neel neel 4.0 0.0 0.864159 2.13731
#Define a skin distance, update neigh list every
@ -78,13 +78,13 @@ neigh_modify every 10 check yes delay 20
#Magnetic field fix
#Type | Intensity (T or eV) | Direction
#fix 1 all force/spin zeeman 0.0 0.0 0.0 1.0
fix 1 all force/spin zeeman 0.0 0.0 0.0 1.0
#fix 1 all force/spin anisotropy 0.01 0.0 0.0 1.0
#Fix Langevin spins (merging damping and temperature)
#Temp | Alpha_trans | Alpha_long | Seed
#fix 2 all langevin/spin 0.0 0.1 0.0 21
#fix 2 all langevin/spin 0.0 0.0 0.0 21
fix 2 all langevin/spin 0.0 0.0 21
#Magnetic integration fix
fix 3 all integration/spin lattice yes
@ -112,14 +112,15 @@ variable tmag equal c_out_mag[7]
variable mag_force equal f_1
#variable test equal etotal-0.5*c_out_mag[6]
thermo 10
thermo_style custom step time v_magnorm v_emag temp etotal
thermo 50
#thermo_style custom step time v_magnorm v_tmag temp etotal
thermo_style custom step time pe ke v_emag etotal
thermo_modify format float %20.15g
#Dump the positions and spin directions of magnetic particles (vmd format)
dump 1 all custom 50 dump_cobalt.lammpstrj type x y z spx spy spz
#dump 1 all custom 50 dump_cobalt.lammpstrj type x y z spx spy spz
#Running the simulations for N timesteps
run 10
#run 1000
#run 10
run 200000

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,19 @@
6 8
Optimal parameter set
1 4.100199340884814 F
2 1.565647547483517 F
1 0.9332056681088162 T 3.000000000000000
2 -1.162558782567700 T 2.866666666666670
3 -0.3502026949249225 T 2.733333333333330
4 0.4287820835430028 T 2.600000000000000
5 4.907925057809273 T 2.400000000000000
6 -5.307049068415304 T 2.300000000000000
1 -0.1960674387419232 F 4.100000000000000
2 0.3687525935422963 F 3.800000000000000
3 -1.505333614924853 F 3.500000000000000
4 4.948907078156191 T 3.200000000000000
5 -4.894613262753399 T 2.900000000000000
6 3.468897724782442 T 2.600000000000000
7 -1.792218099820337 T 2.400000000000000
8 80.22069592246987 T 2.300000000000000

View File

@ -0,0 +1,59 @@
# bcc iron in a 3d periodic box
clear
units metal
atom_style spin
dimension 3
boundary p p p
# check why?
atom_modify map array
lattice bcc 2.8665
region box block 0.0 5.0 0.0 5.0 0.0 5.0
create_box 1 box
create_atoms 1 box
# setting mass, mag. moments, and interactions for bcc iron
mass 1 55.845
set group all spin/random 31 2.2
velocity all create 100 4928459 rot yes dist gaussian
#pair_style hybrid/overlay eam/alloy pair/spin/exchange 4.0 pair/spin/soc/neel 4.0
pair_style hybrid/overlay eam/alloy pair/spin/exchange 3.5
pair_coeff * * eam/alloy ../examples/SPIN/iron/Fe_Mishin2006.eam.alloy Fe
pair_coeff * * pair/spin/exchange exchange 4.0 0.025498 0.281 1.999
#pair_coeff * * pair/spin/soc/neel neel 4.0 0.003330282 0.864159 2.13731
neighbor 0.1 bin
neigh_modify every 10 check yes delay 20
fix 1 all force/spin zeeman 0.1 0.0 0.0 1.0
fix 2 all langevin/spin 0.0 0.0 21
fix 3 all integration/spin lattice yes
timestep 0.0001
compute out_mag all compute/spin
compute out_pe all pe
compute out_ke all ke
compute out_temp all temp
variable magz equal c_out_mag[4]
variable magnorm equal c_out_mag[5]
variable emag equal c_out_mag[6]
variable tmag equal c_out_mag[7]
variable mag_force equal f_1
thermo_style custom step time v_magnorm v_emag temp etotal
thermo 50
dump 1 all custom 50 dump_iron.lammpstrj type x y z spx spy spz
run 10000

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,59 @@
# fcc cobalt in a 3d periodic box
clear
units metal
atom_style spin
dimension 3
boundary p p p
# check why?
atom_modify map array
lattice fcc 3.54
region box block 0.0 5.0 0.0 5.0 0.0 5.0
create_box 1 box
create_atoms 1 box
# setting mass, mag. moments, and interactions for cobalt
mass 1 58.93
set group all spin/random 31 1.72
velocity all create 100 4928459 rot yes dist gaussian
#pair_style hybrid/overlay eam/alloy pair/spin/exchange 4.0 pair/spin/soc/neel 4.0
pair_style hybrid/overlay eam/alloy pair/spin/exchange 4.0
pair_coeff * * eam/alloy ../examples/SPIN/cobalt/Co_PurjaPun_2012.eam.alloy Co
pair_coeff * * pair/spin/exchange exchange 4.0 0.0446928 0.003496 1.4885
#pair_coeff * * pair/spin/soc/neel neel 4.0 0.003330282 0.864159 2.13731
neighbor 0.1 bin
neigh_modify every 10 check yes delay 20
fix 1 all force/spin zeeman 0.1 0.0 0.0 1.0
fix 2 all langevin/spin 0.0 0.1 21
fix 3 all integration/spin lattice yes
timestep 0.0001
compute out_mag all compute/spin
compute out_pe all pe
compute out_ke all ke
compute out_temp all temp
variable magz equal c_out_mag[4]
variable magnorm equal c_out_mag[5]
variable emag equal c_out_mag[6]
variable tmag equal c_out_mag[7]
variable mag_force equal f_1
thermo_style custom step time v_magnorm v_emag temp etotal
thermo 10
#dump 1 all custom 50 dump_cobalt.lammpstrj type x y z spx spy spz
run 1000

View File

@ -52,7 +52,7 @@ fix 1 all force/spin zeeman 0.0 0.0 0.0 1.0
#Fix Langevin spins (merging damping and temperature)
#Temp | Alpha_trans | Alpha_long | Seed
fix 2 all langevin/spin 0.0 0.0 0.0 21
fix 2 all langevin/spin 0.0 0.0 21
#Magnetic integration fix
fix 3 all integration/spin serial

View File

@ -1,55 +1,81 @@
# fcc cobalt in a 3d box
# initial variables
clear
units metal
atom_style spin
# dimensions of the box and of each layer
variable box_size equal 50.0
variable ir_thick equal 4.0
variable fe_thick equal 0.5
variable pd_thick equal 0.5
dimension 3
boundary p p f
variable fe_hi equal ${ir_thick}+${fe_thick}
variable pd_hi equal ${ir_thick}+${fe_thick}+${pd_thick}
units metal
atom_style spin
dimension 3
boundary p p f
# check why?
atom_modify map array
atom_modify map array
lattice fcc 3.54
region box block 0.0 50.0 0.0 50.0 0.0 4.0
create_box 1 box
create_atoms 1 box
lattice fcc 3.839 orient x 1 -1 0 orient y 1 1 -2 orient z 1 1 1
region box block 0.0 ${box_size} 0.0 ${box_size} 0.0 ${pd_hi}
region box_ir block 0.0 ${box_size} 0.0 ${box_size} 0.0 ${ir_thick}
region box_fe block 0.0 ${box_size} 0.0 ${box_size} ${ir_thick} ${fe_hi}
region box_pd block 0.0 ${box_size} 0.0 ${box_size} ${fe_hi} ${pd_hi}
create_box 3 box
create_atoms 1 region box_ir
create_atoms 2 region box_fe
create_atoms 3 region box_pd
group ir_atoms region box_ir
group fe_atoms region box_fe
group pd_atoms region box_pd
# setting mass, mag. moments, and interactions for cobalt
mass 1 58.93
mass 1 192.217 # mass of Ir atoms
mass 2 55.845 # mass of Fe atoms
mass 3 106.42 # mass of Pd atoms
set group all spin/random 31 1.72
set group ir_atoms spin/random 31 0.01 # has to set a length for LAMMPS to be happy
set group fe_atoms spin/random 89 2.7
set group pd_atoms spin/random 55 0.3
#pair_style hybrid/overlay eam/alloy pair/spin/exchange 4.0 pair/spin/soc/neel 4.0
pair_style hybrid/overlay pair/spin/exchange 4.0 pair/spin/soc/dmi 2.6
pair_coeff * * pair/spin/exchange exchange 4.0 0.0446928 0.003496 1.4885
pair_coeff * * pair/spin/soc/dmi dmi 2.6 0.01 0.0 0.0 1.0
#pair_coeff * * pair/spin/soc/neel neel 4.0 0.003330282 0.864159 2.13731
#pair_style hybrid/overlay eam/alloy pair/spin/exchange 4.0 pair/spin/soc/neel 4.0
pair_style hybrid/overlay pair/spin/exchange 4.0
#pair_style hybrid/overlay pair/spin/exchange 4.0 pair/spin/soc/dmi 2.6
pair_coeff * * pair/spin/exchange exchange 4.0 0.0 0.003496 1.4885
pair_coeff 2 2 pair/spin/exchange exchange 4.0 0.0446928 0.003496 1.4885
#pair_coeff * * pair/spin/soc/dmi dmi 2.6 0.01 0.0 0.0 1.0
#pair_coeff * * pair/spin/soc/neel neel 4.0 0.003330282 0.864159 2.13731
neighbor 0.1 bin
neigh_modify every 10 check yes delay 20
neighbor 0.1 bin
neigh_modify every 10 check yes delay 20
fix 1 all force/spin anisotropy 0.0001 0.0 0.0 1.0
fix 2 all langevin/spin 0.0 0.1 0.0 21
fix 3 all integration/spin lattice no
fix 1 fe_atoms force/spin anisotropy 0.0001 0.0 0.0 1.0
fix 2 all force/spin zeeman 0.1 0.0 0.0 1.0
fix 3 all langevin/spin 0.0 0.1 21
fix 4 all integration/spin lattice no
timestep 0.0002
# define output and run
compute out_mag all compute/spin
variable magz equal c_out_mag[4]
variable magnorm equal c_out_mag[5]
variable emag equal c_out_mag[6]
variable tmag equal c_out_mag[7]
variable mag_force equal f_1
compute out_mag all compute/spin
variable magz equal c_out_mag[4]
variable magnorm equal c_out_mag[5]
variable emag equal c_out_mag[6]
variable tmag equal c_out_mag[7]
variable mag_force equal f_1
thermo_style custom step time v_magnorm v_emag etotal
thermo 50
thermo 10
dump 1 all custom 50 dump_skyrmion.lammpstrj type x y z spx spy spz
dump 1 all custom 50 dump_skyrmion.lammpstrj type x y z spx spy spz
run 10000
run 1000

View File

@ -51,7 +51,7 @@ using namespace MathConst;
FixLangevinSpin::FixLangevinSpin(LAMMPS *lmp, int narg, char **arg) :
Fix(lmp, narg, arg), id_temp(NULL), random(NULL)
{
if (narg != 7) error->all(FLERR,"Illegal langevin/spin command");
if (narg != 6) error->all(FLERR,"Illegal langevin/spin command");
dynamic_group_allow = 1;
scalar_flag = 1;
@ -61,8 +61,7 @@ FixLangevinSpin::FixLangevinSpin(LAMMPS *lmp, int narg, char **arg) :
temp = force->numeric(FLERR,arg[3]);
alpha_t = force->numeric(FLERR,arg[4]);
alpha_l = force->numeric(FLERR,arg[5]);
seed = force->inumeric(FLERR,arg[6]);
seed = force->inumeric(FLERR,arg[5]);
if (alpha_t < 0.0) {
error->all(FLERR,"Illegal langevin/spin command");
@ -72,14 +71,6 @@ FixLangevinSpin::FixLangevinSpin(LAMMPS *lmp, int narg, char **arg) :
tdamp_flag = 1;
}
if (alpha_l < 0.0) {
error->all(FLERR,"Illegal langevin/spin command");
} else if (alpha_l == 0.0) {
ldamp_flag = 0;
} else {
ldamp_flag = 1;
}
if (temp < 0.0) {
error->all(FLERR,"Illegal langevin/spin command");
} else if (temp == 0.0) {
@ -119,7 +110,8 @@ int FixLangevinSpin::setmask()
void FixLangevinSpin::init()
{
// warn if any fix comes after this one
// fix_langevin_spin has to be the last defined fix
int after = 0;
int flag_force = 0;
int flag_lang = 0;

View File

@ -39,7 +39,7 @@ class FixLangevinSpin : public Fix {
protected:
double *spi, *fmi;
double alpha_t, alpha_l; // transverse and longitudunal damping coeff.
double alpha_t; // transverse mag. damping
double dts; // magnetic timestep
double temp; // spin bath temperature
double D,sigma; // bath intensity var.