Unverified Commit b055837f authored by Axel Kohlmeyer's avatar Axel Kohlmeyer Committed by GitHub
Browse files

Merge pull request #1372 from julient31/minprec_spin

Add min_post_force in fix_precession_spin
parents 34d1ed9b 86810c2d
Loading
Loading
Loading
Loading
+13 −4
Original line number Diff line number Diff line
@@ -115,6 +115,7 @@ int FixPrecessionSpin::setmask()
{
  int mask = 0;
  mask |= POST_FORCE;
  mask |= MIN_POST_FORCE;
  mask |= THERMO_ENERGY;
  mask |= POST_FORCE_RESPA;
  return mask;
@@ -171,6 +172,7 @@ void FixPrecessionSpin::setup(int vflag)

void FixPrecessionSpin::post_force(int /*vflag*/)
{

  // update mag field with time (potential improvement)

  if (varflag != CONSTANT) {
@@ -200,7 +202,7 @@ void FixPrecessionSpin::post_force(int /*vflag*/)

    if (aniso_flag) {           // compute magnetic anisotropy
      compute_anisotropy(spi,fmi);
      emag -= (spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]);
      emag -= 0.5*(spi[0]*fmi[0] + spi[1]*fmi[1] + spi[2]*fmi[2]);
    }

    fm[i][0] += fmi[0];
@@ -228,9 +230,9 @@ void FixPrecessionSpin::compute_single_precession(int i, double spi[3], double f
void FixPrecessionSpin::compute_zeeman(int i, double fmi[3])
{
  double **sp = atom->sp;
  fmi[0] -= sp[i][3]*hx;
  fmi[1] -= sp[i][3]*hy;
  fmi[2] -= sp[i][3]*hz;
  fmi[0] += sp[i][3]*hx;
  fmi[1] += sp[i][3]*hy;
  fmi[2] += sp[i][3]*hz;
}

/* ---------------------------------------------------------------------- */
@@ -280,3 +282,10 @@ double FixPrecessionSpin::compute_scalar()
  }
  return emag_all;
}

/* ---------------------------------------------------------------------- */

void FixPrecessionSpin::min_post_force(int vflag)
{
  post_force(vflag);
}
+3 −2
Original line number Diff line number Diff line
@@ -33,8 +33,9 @@ class FixPrecessionSpin : public Fix {
  int setmask();
  void init();
  void setup(int);
  virtual void post_force(int);
  virtual void post_force_respa(int, int, int);
  void post_force(int);
  void post_force_respa(int, int, int);
  void min_post_force(int);
  double compute_scalar();

  int zeeman_flag, aniso_flag;