Program Listing for File thread_data_write.hpp

Return to documentation for file (include/dish2/run/thread_data_write.hpp)

#pragma once
#ifndef DISH2_RUN_THREAD_DATA_WRITE_HPP_INCLUDE
#define DISH2_RUN_THREAD_DATA_WRITE_HPP_INCLUDE

#include <limits>

#include "../../../third-party/conduit/include/uitsl/countdown/Timer.hpp"

#include "../config/cfg.hpp"
#include "../record/try_write_all_drawings.hpp"
#include "../record/write_cell_census.hpp"
#include "../record/write_demographic_phenotypic_phylogenetic_metrics.hpp"
#include "../record/write_phylogenetic_root_abundances.hpp"
#include "../record/write_selected_drawings.hpp"
#include "../world/ThreadWorld.hpp"

namespace dish2 {

// data collection tasks that could be run multiple times
template<typename Spec>
void thread_data_write( const dish2::ThreadWorld<Spec>& thread_world ) {

  if ( cfg.CENSUS_WRITE() ) dish2::write_cell_census<Spec>( thread_world );
  dish2::write_demographic_phenotypic_phylogenetic_metrics<Spec>(thread_world);
  dish2::write_phylogenetic_root_abundances<Spec>( thread_world );

  if ( dish2::cfg.ALL_DRAWINGS_WRITE() ) {
    dish2::try_write_all_drawings<Spec>( thread_world );
  }
  if (
    !dish2::cfg.SELECTED_DRAWINGS().empty()
    && cfg.SELECTED_DRAWINGS_FREQ() == 0
  ) {
    dish2::write_selected_drawings<Spec>(thread_world);
  }

}

} // namespace dish2

#endif // #ifndef DISH2_RUN_THREAD_DATA_WRITE_HPP_INCLUDE