Commit 55bbb629 authored by gbalduzz's avatar gbalduzz
Browse files

Pass writer as a shared pointer around.

parent 73f5abe6
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -137,12 +137,13 @@ DcaLoop<ParametersType, DcaDataType, MCIntegratorType>::DcaLoop(ParametersType&

      update_chemical_potential_obj(parameters, MOMS, cluster_mapping_obj),

      monte_carlo_integrator_(parameters_ref, MOMS_ref) {
      output_file_(concurrency.id() == concurrency.first() ? std::make_shared<io::HDF5Writer>(false)
                                                           : nullptr),

      monte_carlo_integrator_(parameters_ref, MOMS_ref, output_file_) {
  if (concurrency.id() == concurrency.first()) {
    file_name_ = parameters.get_directory() + parameters.get_filename_dca();

    output_file_ = std::make_shared<io::HDF5Writer>(false);

    dca::util::SignalHandler::registerFile(output_file_);

    std::cout << "\n\n\t" << __FUNCTION__ << " has started \t" << dca::util::print_time() << "\n\n";
+3 −4
Original line number Diff line number Diff line
@@ -82,7 +82,7 @@ private:

public:
  CtauxClusterSolver(Parameters& parameters_ref, Data& MOMS_ref,
                     io::HDF5Writer* /*writer*/ = nullptr);
                     const std::shared_ptr<io::HDF5Writer>& /*writer*/ = nullptr);

  template <typename Writer>
  void write(Writer& writer);
@@ -162,9 +162,8 @@ private:
};

template <dca::linalg::DeviceType device_t, class Parameters, class Data>
CtauxClusterSolver<device_t, Parameters, Data>::CtauxClusterSolver(Parameters& parameters_ref,
                                                                   Data& data_ref,
                                                                   io::HDF5Writer* /*writer*/)
CtauxClusterSolver<device_t, Parameters, Data>::CtauxClusterSolver(
    Parameters& parameters_ref, Data& data_ref, const std::shared_ptr<io::HDF5Writer>& /*writer*/)
    : parameters_(parameters_ref),
      data_(data_ref),
      concurrency_(parameters_.get_concurrency()),
+4 −3
Original line number Diff line number Diff line
@@ -53,7 +53,8 @@ public:
  using Data = DcaData<Parameters>;
  static constexpr linalg::DeviceType device = device_t;

  CtintClusterSolver(Parameters& parameters_ref, Data& Data_ref);
  CtintClusterSolver(Parameters& parameters_ref, Data& Data_ref,
                     const std::shared_ptr<io::HDF5Writer>& = nullptr);

  ~CtintClusterSolver();

@@ -147,8 +148,8 @@ private:
};

template <dca::linalg::DeviceType device_t, class Parameters, bool use_submatrix>
CtintClusterSolver<device_t, Parameters, use_submatrix>::CtintClusterSolver(Parameters& parameters_ref,
                                                                            Data& data_ref)
CtintClusterSolver<device_t, Parameters, use_submatrix>::CtintClusterSolver(
    Parameters& parameters_ref, Data& data_ref, const std::shared_ptr<io::HDF5Writer>& /*writer*/)
    : parameters_(parameters_ref),
      concurrency_(parameters_.get_concurrency()),
      data_(data_ref),
+6 −5
Original line number Diff line number Diff line
@@ -61,7 +61,8 @@ public:
  static constexpr linalg::DeviceType device = device_t;

public:
  SsCtHybClusterSolver(parameters_type& parameters_ref, Data& MOMS_ref);
  SsCtHybClusterSolver(parameters_type& parameters_ref, Data& MOMS_ref,
                       const std::shared_ptr<io::HDF5Writer>& = nullptr);

  void initialize(int dca_iteration);

@@ -144,7 +145,7 @@ private:

template <dca::linalg::DeviceType device_t, class parameters_type, class Data>
SsCtHybClusterSolver<device_t, parameters_type, Data>::SsCtHybClusterSolver(
    parameters_type& parameters_ref, Data& data_ref)
    parameters_type& parameters_ref, Data& data_ref, const std::shared_ptr<io::HDF5Writer>& /*writer*/)
    : cthyb::ss_hybridization_solver_routines<parameters_type, Data>(parameters_ref, data_ref),

      parameters_(parameters_ref),
@@ -570,8 +571,8 @@ auto SsCtHybClusterSolver<device_t, parameters_type, Data>::local_GS_r_w() const
  return GS_r_w;
}

}  // solver
}  // phys
}  // dca
}  // namespace solver
}  // namespace phys
}  // namespace dca

#endif  // DCA_PHYS_DCA_STEP_CLUSTER_SOLVER_SS_CT_HYB_SS_CT_HYB_CLUSTER_SOLVER_HPP
+5 −6
Original line number Diff line number Diff line
@@ -55,7 +55,7 @@ public:
  using StdThreadAccumulatorType = stdthreadqmci::StdThreadQmciAccumulator<Accumulator>;

  StdThreadQmciClusterSolver(Parameters& parameters_ref, Data& data_ref,
                             io::HDF5Writer* file = nullptr);
                             const std::shared_ptr<io::HDF5Writer>& file = nullptr);

  void initialize(int dca_iteration);

@@ -107,16 +107,15 @@ private:
  std::vector<dca::io::Buffer> config_dump_;
  stdthreadqmci::QmciAutocorrelationData<typename BaseClass::Walker> autocorrelation_data_;

  io::HDF5Writer* writer_ = nullptr;
  std::shared_ptr<io::HDF5Writer> writer_;

  bool last_iteration_ = false;
  unsigned measurements_ = 0;
};

template <class QmciSolver>
StdThreadQmciClusterSolver<QmciSolver>::StdThreadQmciClusterSolver(Parameters& parameters_ref,
                                                                   Data& data_ref,
                                                                   io::HDF5Writer* writer)
StdThreadQmciClusterSolver<QmciSolver>::StdThreadQmciClusterSolver(
    Parameters& parameters_ref, Data& data_ref, const std::shared_ptr<io::HDF5Writer>& writer)
    : BaseClass(parameters_ref, data_ref),

      nr_walkers_(parameters_.get_walkers()),
@@ -232,7 +231,7 @@ double StdThreadQmciClusterSolver<QmciSolver>::finalize(dca_info_struct_t& dca_i

  // Write and reset autocorrelation.
  autocorrelation_data_.sumConcurrency(concurrency_);
  if (writer_)
  if (writer_ && *writer_) // Writer exists and it is open.
    autocorrelation_data_.write(*writer_, dca_iteration_);
  autocorrelation_data_.reset();

Loading