Commit afc18ed5 authored by gbalduzz's avatar gbalduzz
Browse files

Shrink configuration storage.

Stump of python analysis.
parent 0f8a9152
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -130,6 +130,18 @@ public:
  }
};

template <>
class HDF5_TYPE<std::uint16_t> {
public:
  static hid_t get() {
    return H5T_NATIVE_UINT16;
  }

  static H5::PredType get_PredType() {
    return H5::PredType::NATIVE_UINT16;
  }
};

template <>
class HDF5_TYPE<float> {
public:
+10 −9
Original line number Diff line number Diff line
@@ -885,26 +885,27 @@ void CT_AUX_HS_configuration<parameters_type>::write(io::HDF5Writer& file,

  const auto n = configuration.size();
  std::vector<double> times(n);
  std::vector<std::array<int, 2>> bands(n);
  std::vector<std::array<int, 2>> e_spins(n);
  std::vector<std::array<int, 2>> sites(n);
  std::vector<std::array<std::uint8_t, 2>> bands(n);
  std::vector<std::array<std::int8_t, 2>> e_spins(n);
  std::vector<std::array<std::uint16_t, 2>> sites(n);
  std::vector<std::int8_t> hs_spin(n);

  auto to_array = [](const std::pair<int, int>& pair) {
    return std::array<int, 2>{pair.first, pair.second};
  auto to_array = [](auto& arr, const std::pair<int, int>& pair) {
    arr[0] = pair.first;
    arr[1] = pair.second;
  };

  for (int i = 0; i < configuration.size(); ++i) {
    times[i] = configuration[i].get_tau();
    bands[i] = to_array(configuration[i].get_bands());
    e_spins[i] = to_array(configuration[i].get_e_spins());
    sites[i] = to_array(configuration[i].get_r_sites());
    to_array(bands[i], configuration[i].get_bands());
    to_array(e_spins[i], configuration[i].get_e_spins());
    to_array(sites[i], configuration[i].get_r_sites());
    hs_spin[i] = configuration[i].get_HS_spin();
  }

  file.execute("times", times);
  file.execute("bands", bands);
  file.execute("e_spinds", e_spins);
  file.execute("e_spins", e_spins);
  file.execute("sites", sites);
  file.execute("hs_spin", hs_spin);

+24 −0
Original line number Diff line number Diff line
# Author: Giovanni Balduzzi
# Usage: python3 visualize_configuration.py <configuration file> <time stamp>

import numpy as np
import h5py
from sys import argv

if(len(argv) != 3) :
    print("Arguments: <file name> <time stamp>")
    exit(-1)

filename = argv[1]
stamp = argv[2]

file = h5py.File(filename,'r')[stamp]

times = file['times'][:]
sites = file['sites'][:, 0]
spins = file['hs_spin'][:]

# remove non-interacting spins
times = times[spins != 0]
sites = sites[spins != 0]
spins = spins[spins != 0]