OSHUN  beta
Arbitrary Order Spherical-Harmonic 1D-3P Vlasov-Fokker-Planck-Maxwell code
Export_Files::Restart_Facility Class Reference

#include <export.h>

Public Member Functions

 Restart_Facility (const int rank, string homedir="")
 
void Read (const int rank, const size_t re_step, State1D &Y)
 
void Write (const int rank, const size_t re_step, State1D &Y)
 

Private Member Functions

string rFextension (const int rank, const size_t rstep)
 

Private Attributes

string hdir
 

Detailed Description

Definition at line 213 of file export.h.

Constructor & Destructor Documentation

◆ Restart_Facility()

Export_Files::Restart_Facility::Restart_Facility ( const int  rank,
string  homedir = "" 
)

Definition at line 708 of file export.cpp.

References Export_Files::Makefolder().

708  {
709  hdir = homedir;
710 
711  if (!rank) Makefolder(hdir+"RESTART/");
712 
713 // if (Makefolder(hdir+"RESTART/") != 0) cout<<"Warning: Folder "<< hdir+"RESTART/"<<" exists\n";
714 }
int Makefolder(string _name)
Definition: export.cpp:51
Here is the call graph for this function:

Member Function Documentation

◆ Read()

void Export_Files::Restart_Facility::Read ( const int  rank,
const size_t  re_step,
State1D Y 
)

Definition at line 718 of file export.cpp.

References State1D::DF(), DistFunc1D::dim(), State1D::EMF(), EMF1D::Ex(), Field1D::numx(), and State1D::Species().

718  {
719 
720 // Generate filename
721  string filename(hdir+"RESTART/re_1D_");
722  filename.append(rFextension(rank,re_step));
723 
724 // Open file
725  ifstream fin(filename.c_str(), ios::binary);
726 
727  if (fin)
728  {
729  // Read distribution functions
730  for(size_t s(0); s < Y.Species(); ++s) {
731  for(size_t nh(0); nh < Y.DF(s).dim(); ++nh) {
732  for(size_t i(0); i < (Y.DF(s))(nh).dim(); ++i) {
733  fin.read((char *)&(Y.DF(s))(nh)(i), sizeof((Y.DF(s))(nh)(i)));
734  }
735  }
736  }
737  }
738  else {
739 
740  if (!rank) std::cout << "\n\n ERROR :: No files to read! \n\n";
741  exit(1);
742 
743  }
744 
745 // Read Ex
746  for(size_t i(0); i < Y.EMF().Ex().numx(); ++i){
747  fin.read((char *)(&Y.EMF().Ex()(i)), sizeof(Y.EMF().Ex()(i)));
748  }
749 
750  fin.close();
751 }
size_t numx() const
Definition: state.h:197
size_t dim() const
Definition: state.h:395
DistFunc1D & DF(size_t s)
Definition: state.h:602
Field1D & Ex()
Definition: state.h:290
string rFextension(const int rank, const size_t rstep)
Definition: export.cpp:789
size_t Species() const
Definition: state.h:596
EMF1D & EMF() const
Definition: state.h:610
Here is the call graph for this function:

◆ rFextension()

string Export_Files::Restart_Facility::rFextension ( const int  rank,
const size_t  rstep 
)
private

Definition at line 789 of file export.cpp.

References Export_Files::ofconventions::rank_digits, Export_Files::ofconventions::rfile_digits, Export_Files::ofconventions::rfile_extension, and Export_Files::stringify().

789  {
790  stringstream sFilename;
791 
792  // Number of zeros to add to the filename
793  int Nzeros(ofconventions::rank_digits - stringify(rank).length());
794  while (Nzeros-- > 0) {
795  sFilename << "0";
796  }
797 
798  sFilename << rank << "_";
799 
800  // Number of zeros to add to the filename
801  Nzeros = ofconventions::rfile_digits - stringify(rstep).length();
802  while (Nzeros-- > 0) {
803  sFilename << "0";
804  }
805 
806  sFilename << rstep << ofconventions::rfile_extension;
807 
808  return sFilename.str();
809 }
std::string stringify(T const &x)
Definition: export.h:30
const string rfile_extension
Definition: export.h:23
Here is the call graph for this function:

◆ Write()

void Export_Files::Restart_Facility::Write ( const int  rank,
const size_t  re_step,
State1D Y 
)

Definition at line 756 of file export.cpp.

References State1D::DF(), DistFunc1D::dim(), State1D::EMF(), EMF1D::Ex(), Field1D::numx(), and State1D::Species().

756  {
757 
758 // Generate filename
759  string filename(hdir+"RESTART/re_1D_");
760  filename.append(rFextension(rank,re_step));
761 
762 // Open file
763  ofstream fout(filename.c_str(), ios::binary);
764 
765 // Write distribution functions
766  for(size_t s(0); s < Y.Species(); ++s) {
767  for (size_t s(0); s < Y.Species(); ++s) {
768  for (size_t nh(0); nh < Y.DF(s).dim(); ++nh) {
769  for (size_t i(0); i < (Y.DF(s))(nh).dim(); ++i) {
770  fout.write((char *) &(Y.DF(s))(nh)(i), sizeof((Y.DF(s))(nh)(i)));
771  }
772  }
773  }
774  }
775 
776 // Write Ex
777  for(size_t i(0); i < Y.EMF().Ex().numx(); ++i) {
778  fout.write((char *)(&Y.EMF().Ex()(i)), sizeof(Y.EMF().Ex()(i)));
779  }
780 
781  fout.flush();
782  fout.close();
783 }
size_t numx() const
Definition: state.h:197
size_t dim() const
Definition: state.h:395
DistFunc1D & DF(size_t s)
Definition: state.h:602
Field1D & Ex()
Definition: state.h:290
string rFextension(const int rank, const size_t rstep)
Definition: export.cpp:789
size_t Species() const
Definition: state.h:596
EMF1D & EMF() const
Definition: state.h:610
Here is the call graph for this function:

Field Documentation

◆ hdir

string Export_Files::Restart_Facility::hdir
private

Definition at line 222 of file export.h.


The documentation for this class was generated from the following files: