Commit 7cc4bd3d authored by Marco Drache's avatar Marco Drache
Browse files

feature: add .csv export

parent 7e57e193
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -73,6 +73,7 @@ public:
	void initConcentrationNumMoleculesExport() const;
	void initReactionsCountExport() const;
	void exportConcentrationNumMolecules(double _reactionTime) const;
	void exportLogToCSV(mcPolymerParameter _simulationParameter, const vector<speciesObject>& _speciesList, vector<logInformation>& _collectedLogInformations);
	void exportReactionsCount(double _reactionTime) const;
	void exportPolymers(std::string _prefixFilename, double _reactionTime, bool _binaryExport, bool _writeHeader);
	void exportPolymerSegments(std::string _filename, int _speciesID, double _molPolymerSegments);
+35 −0
Original line number Diff line number Diff line
@@ -212,6 +212,40 @@ void SimulationController::amendLog(MnMw _currentMnMw) {
void SimulationController::exportLogJSON() {
	exportLogToJSON(simulationParameter, currentModel->getSpecies(), collectedLogInformations);
}
void SimulationController::exportLogToCSV(mcPolymerParameter _simulationParameter, const vector<speciesObject>& _speciesList, vector<logInformation>& _collectedLogInformations) {
	ofstream concentration_file(_simulationParameter.modelFile_export + ".concentrations.csv", std::ios::binary);
	if (!concentration_file.is_open()) {
		cout << "error open file: " << _simulationParameter.modelFile_export + ".concentrations.csv" << endl;
		return;
	}
	ofstream numMolecules_file(_simulationParameter.modelFile_export + ".numMolecules.csv", std::ios::binary);
	if (!numMolecules_file.is_open()) {
		cout << "error open file: " << _simulationParameter.modelFile_export + ".numMolecules.csv" << endl;
		return;
	}
	concentration_file << "time";
	numMolecules_file << "time";
	for (size_t idxSpecies = 0; idxSpecies < _speciesList.size(); idxSpecies++) {
		concentration_file << ",";
		numMolecules_file << ",";
		concentration_file << _speciesList.at(idxSpecies).name;
		numMolecules_file << _speciesList.at(idxSpecies).name;
	}
	concentration_file << "\r\n";
	numMolecules_file << "\r\n";
	for (size_t idxLogRecords = 0; idxLogRecords < _collectedLogInformations.size(); idxLogRecords++) {
		concentration_file << _collectedLogInformations.at(idxLogRecords).time;
		numMolecules_file << _collectedLogInformations.at(idxLogRecords).time;
		for (size_t idxConcentration = 0; idxConcentration < _collectedLogInformations.back().concentrations.size(); idxConcentration++) {
			concentration_file << ",";
			numMolecules_file << ",";
			concentration_file << _collectedLogInformations.at(idxLogRecords).concentrations.at(idxConcentration);
			numMolecules_file << _collectedLogInformations.at(idxLogRecords).numMolecules.at(idxConcentration);
		}
		concentration_file << "\r\n";
		numMolecules_file << "\r\n";
	}
}
void SimulationController::initCurrentModel() {
	if (simulationParameter.controlVolume == 0.0) {
		currentState = new macroState(simulationParameter.temperature, simulationParameter.pressure, simulationParameter.volume, static_cast <uint64_t>(simulationParameter.numMolecules));
@@ -287,6 +321,7 @@ void SimulationController::runSimulation() {
	if (simulationParameter.CmdlSetLogJSON) {
		exportLogJSON();
	}
	exportLogToCSV(simulationParameter, currentModel->getSpecies(), collectedLogInformations);
	exportComplete(timerStart, terminationConditions);
	randBufferInstance->setExit();
}