Commit 0becb9e3 authored by Giovanni La Mura's avatar Giovanni La Mura
Browse files

Make Swap2::vec_vkzm directly accessible

parent 0f705d1e
Loading
Loading
Loading
Loading
+1 −9
Original line number Diff line number Diff line
@@ -132,8 +132,6 @@ protected:
  int _last_matrix;
  //! Number of beam description wave numbers.
  int _nkv;
  //! Contiguous vector of VKZM matrix.
  double *vec_vkzm;
  //! QUESTION: definition?
  double _apfafa;
  //! QUESTION: definition?
@@ -197,7 +195,7 @@ public:
  //! QUESTION: definition?
  double *vkv;
  //! QUESTION: definition?
  double **vkzm;
  double *vec_vkzm;
  //! QUESTION: definition?
  const double &apfafa = _apfafa;
  //! QUESTION: definition?
@@ -244,12 +242,6 @@ public:
   */
  static Swap2* from_binary(const std::string& file_name, const std::string& mode="LEGACY");

  /*! \brief Get the pointer to the VKZM matrix.
   *
   * \return value: `double **` Pointer to the VKZM matrix.
   */
  double **get_matrix() { return vkzm; }

  /*! \brief Calculate the necessary amount of memory to create a new instance.
   *
   * \param nkv: `int` Number of beam description wave numbers.
+7 −9
Original line number Diff line number Diff line
@@ -222,8 +222,6 @@ Swap2::Swap2(int nkv) {
  _nkv = nkv;
  vkv = new double[_nkv]();
  vec_vkzm = new double[_nkv * _nkv]();
  vkzm = new double*[nkv];
  for (int vi = 0; vi < _nkv; vi++) vkzm[vi] = vec_vkzm + vi * _nkv;
  _last_vector = 0;
  _last_matrix = 0;
}
@@ -231,7 +229,6 @@ Swap2::Swap2(int nkv) {
Swap2::~Swap2() {
  delete[] vkv;
  delete[] vec_vkzm;
  delete[] vkzm;
}

Swap2* Swap2::from_binary(const std::string& file_name, const std::string& mode) {
@@ -298,14 +295,14 @@ Swap2* Swap2::from_legacy(const std::string& file_name) {
  fstream input;
  Swap2 *instance = NULL;
  int fnkv, fnlmmt, fnrvc;
  double **fvkzm = NULL;
  double *fvkzm = NULL;
  double *fvkv = NULL;
  double value;
  input.open(file_name.c_str(), ios::in | ios::binary);
  if (input.is_open()) {
    input.read(reinterpret_cast<char *>(&fnkv), sizeof(int));
    instance = new Swap2(fnkv);
    fvkzm = instance->get_matrix();
    fvkzm = instance->vec_vkzm;
    fvkv = instance->get_vector();
    for (int vj = 0; vj < fnkv; vj++) {
      input.read(reinterpret_cast<char *>(&value), sizeof(double));
@@ -314,7 +311,7 @@ Swap2* Swap2::from_legacy(const std::string& file_name) {
    for (int mi = 0; mi < fnkv; mi++) {
      for (int mj = 0; mj < fnkv; mj++) {
	input.read(reinterpret_cast<char *>(&value), sizeof(double));
	fvkzm[mi][mj] = value;
	fvkzm[fnkv * mi + mj] = value;
      }
    }
    input.read(reinterpret_cast<char *>(&value), sizeof(double));
@@ -359,7 +356,7 @@ long Swap2::get_size(int nkv) {
void Swap2::push_matrix(double value) {
  int col = _last_matrix % (_nkv - 1);
  int row = _last_matrix - (_nkv * row);
  vkzm[row][col] = value;
  vec_vkzm[nkv * row + col] = value;
  _last_matrix++;
}

@@ -480,7 +477,7 @@ void Swap2::write_legacy(const std::string& file_name) {
    }
    for (int mi = 0; mi < _nkv; mi++) {
      for (int mj = 0; mj < _nkv; mj++) {
	value = vkzm[mi][mj];
	value = vec_vkzm[nkv * mi + mj];
	output.write(reinterpret_cast<const char*>(&value), sizeof(double));
      }
    }
@@ -552,8 +549,9 @@ bool Swap2::operator ==(Swap2 &other) {
    }
  }
  for (int mi = 0; mi < _nkv; mi++) {
    int nkvi = nkv * mi;
    for (int mj = 0; mj < _nkv; mj++) {
      if (vkzm[mi][mj] != other.vkzm[mi][mj]) {
      if (vec_vkzm[nkvi + mj] != other.vec_vkzm[nkvi + mj]) {
	return false;
      }
    }
+3 −3
Original line number Diff line number Diff line
@@ -273,7 +273,7 @@ dcomplex *frfmer(
  const dcomplex cc0 = 0.0 + 0.0 * I;
  double sq = vkm * vkm;
  double *_vkv = tt2->get_vector();
  double **_vkzm = tt2->get_matrix();
  double *vec_vkzm = tt2->vec_vkzm;
  dcomplex *wk = new dcomplex[nlemt]();
  for (int jy90 = 0; jy90 < nkv; jy90++) {
    double vky = _vkv[jy90];
@@ -287,10 +287,10 @@ dcomplex *frfmer(
	double vkz = sqrt(sq - sqn);
	wamff(wk, vkx, vky, vkz, le, apfafa, tra, spd, rir, ftcn, lmode, pmf);
	for (int j = 0; j < nlemt; j++) tt1->append(wk[j]);
	_vkzm[jx80][jy90] = vkz;
	vec_vkzm[nkv * jx80 + jy90] = vkz;
      } else { // label 50
	for (int j = 0; j < nlemt; j++) tt1->append(cc0);
	_vkzm[jx80][jy90] = 0.0;
	vec_vkzm[nkv * jx80 + jy90] = 0.0;
      }
    } // jx80 loop
  } // jy90 loop
+1 −4
Original line number Diff line number Diff line
@@ -151,7 +151,6 @@ void frfme(string data_file, string output_path) {
  double apfafa = 0.0, pmf = 0.0, spd = 0.0, rir = 0.0, ftcn = 0.0, fshmx = 0.0;
  double vxyzmx = 0.0, delxyz = 0.0, vknmx = 0.0, delk = 0.0, delks = 0.0;
  double frsh = 0.0, exril = 0.0;
  double **vkzm = NULL;
  double *vkv = NULL;
  int nlmmt = 0, nrvc = 0;
  // Vector size variables
@@ -183,7 +182,6 @@ void frfme(string data_file, string output_path) {
      if (tt2 == NULL) tt2 = Swap2::from_binary(tempname2, "HDF5");
      if (tt2 != NULL) {
	vkv = tt2->get_vector();
	vkzm = tt2->get_matrix();
	apfafa = tt2->apfafa;
	pmf = tt2->pmf;
	spd = tt2->spd;
@@ -353,7 +351,6 @@ void frfme(string data_file, string output_path) {
	logger.log(message);
	tt2 = new Swap2(nkv);
	vkv = tt2->get_vector();
	vkzm = tt2->get_matrix();
	// End of array initialization
	double vkm = vk * exri;
	vknmx = vk * an;
@@ -465,7 +462,7 @@ void frfme(string data_file, string output_path) {
	  int size_vec_tt1_wk = nkvs * nlmmt;
	  const dcomplex *vec_tt1_wk = tt1->wk;
	  dcomplex *vec_wsum = tfrfme->wsum[0];
	  double *vec_vkzm = vkzm[0];
	  double *vec_vkzm = tt2->vec_vkzm;
	  dcomplex *global_vec_w = new dcomplex[size_global_vec_w]();
	  message = "INFO: looping over " + to_string(jlml - jlmf + 1) + " J iterations.\n";
	  logger.log(message);