OPALX (Object Oriented Parallel Accelerator Library for Exascal) master (dc2a29eed580)
OPALX
Loading...
Searching...
No Matches
FromFile.h
Go to the documentation of this file.
1
6#ifndef OPALX_FROM_FILE_H
7#define OPALX_FROM_FILE_H
8
9#include <fstream>
10#include <memory>
11#include <sstream>
12#include <string>
13#include <vector>
14#include "Distribution.h"
15#include "Ippl.h"
16#include "OPALTypes.h"
17#include "SamplingBase.hpp"
19
31class FromFile : public SamplingBase {
32public:
33 using size_type = ippl::detail::size_type;
34
42 std::shared_ptr<ParticleContainer_t> pc, std::shared_ptr<FieldContainer_t> fc,
43 Distribution_t* opalDist);
44
53 std::shared_ptr<ParticleContainer_t> pc, std::shared_ptr<FieldContainer_t> fc,
54 const std::string& filename);
55
61 void generateParticles(size_t& numberOfParticles, Vector_t<double, 3> nr) override;
62
70 void emitParticles(double t, double dt) override;
71
72private:
79 void readFile(const std::string& filename);
80
87 std::vector<size_t> parseHeader(const std::string& headerLine);
88
94 std::string normalizeColumnName(const std::string& name);
95
97 std::string filename_m;
98
100 std::vector<std::vector<double>> particleData_m;
101
104
106 std::vector<size_t> columnIndices_m;
107};
108
109#endif // OPALX_FROM_FILE_H
ippl::Vector< T, Dim > Vector_t
const int nr
Implements the sampling method for reading particle phase space from ASCII files.
Definition FromFile.h:31
std::vector< size_t > parseHeader(const std::string &headerLine)
Parses the header line to get column indices. Header must contain all of x, y, z, px,...
Definition FromFile.cpp:169
size_t numParticles_m
Number of particles in the file.
Definition FromFile.h:103
ippl::detail::size_type size_type
Definition FromFile.h:33
void readFile(const std::string &filename)
Reads and parses the particle file. Format must be: N (particle count), then header line (column name...
Definition FromFile.cpp:60
std::string normalizeColumnName(const std::string &name)
Normalizes column name for comparison (case-insensitive, whitespace handling).
Definition FromFile.cpp:214
void generateParticles(size_t &numberOfParticles, Vector_t< double, 3 > nr) override
Generates particles by reading from file.
Definition FromFile.cpp:234
std::string filename_m
File path to read particle data from.
Definition FromFile.h:97
std::vector< size_t > columnIndices_m
Column indices mapping: [x_idx, y_idx, z_idx, px_idx, py_idx, pz_idx].
Definition FromFile.h:106
std::vector< std::vector< double > > particleData_m
Stored particle data: each element is a 6D phase space vector [x, y, z, px, py, pz].
Definition FromFile.h:100
void emitParticles(double t, double dt) override
Time-stepped emission hook for one-shot delayed file-based injection.
Definition FromFile.cpp:350