Commit d117ed2b authored by alxvov's avatar alxvov
Browse files

remove unnecessary operations. calloc only if rho is positive

parent fc108179
Loading
Loading
Loading
Loading
+8 −16
Original line number Diff line number Diff line
@@ -372,9 +372,6 @@ void MinSpinLBFGS::calc_search_direction()
    factor = 1.0;
  }

  q = (double *) calloc(3*nlocal, sizeof(double));
  alpha = (double *) calloc(num_mem, sizeof(double));

  if (local_iter == 0){ 	// steepest descent direction

    //if no line search then calculate maximum rotation
@@ -387,9 +384,11 @@ void MinSpinLBFGS::calc_search_direction()
      for (int k = 0; k < num_mem; k++){
        ds[k][i] = 0.0;
        dy[k][i] = 0.0;
        rho[k] = 0.0;
      }
    }
    for (int k = 0; k < num_mem; k++)
      rho[k] = 0.0;

    } else {
    dyds = 0.0;
    for (int i = 0; i < 3 * nlocal; i++) {
@@ -410,15 +409,10 @@ void MinSpinLBFGS::calc_search_direction()

    if (rho[m_index] < 0.0){
      local_iter = 0;
      for (int k = 0; k < num_mem; k++){
	      for (int i = 0; i < nlocal; i ++){
      ds[k][i] = 0.0;
      dy[k][i] = 0.0;
        }
      }
      return calc_search_direction();
    }

    q = (double *) calloc(3*nlocal, sizeof(double));
    alpha = (double *) calloc(num_mem, sizeof(double));
    // set the q vector

    for (int i = 0; i < 3 * nlocal; i++) {
@@ -511,12 +505,10 @@ void MinSpinLBFGS::calc_search_direction()
      p_s[i] = - factor * p_s[i] * scaling;
      g_old[i] = g_cur[i] * factor;
    }
  }

  local_iter++;
    free(q);
    free(alpha);

  }
  local_iter++;
}

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