Quandary
Loading...
Searching...
No Matches
output.hpp
Go to the documentation of this file.
1#include <sys/stat.h>
2#include <petscmat.h>
3#include <iostream>
4#include "config.hpp"
5#include "mastereq.hpp"
6#pragma once
7
15class Output{
16 protected:
17
22
23 bool quietmode;
24
27 std::vector<OutputType> output_observables;
28
29 size_t noscillators;
37 std::vector<FILE *>expectedfile;
38 std::vector<FILE *>populationfile;
41
42 // VecScatter scat; ///< PETSc's scatter context for state communication across cores
43 // Vec xseq; ///< Sequential vector for I/O operations
44
45 public:
46 std::string output_dir;
48
49 public:
50 Output();
51
60 Output(const Config& config, MPI_Comm comm_petsc, MPI_Comm comm_init, bool quietmode=false);
61
62 ~Output();
63
83 void writeOptimFile(int optim_iter, double objective, double gnorm, double stepsize, double Favg, double cost, double tikh_regul, double penalty_leakage, double penalty_dpdm, double penalty_energy, double penalty_variation, double penalty_weightedcost);
84
97 void writeControls(Vec params, MasterEq* mastereq, int ntime, double dt);
98
106 void writeGradient(Vec grad);
107
116 void openTrajectoryDataFiles(std::string prefix, int initid);
117
128 void writeTrajectoryDataFiles(int timestep, double time, const Vec state, MasterEq* mastereq);
129
136
137};
Configuration class containing all validated settings.
Definition config.hpp:57
Implementation of the real-valued right-hand-side (RHS) system matrix of the quantum dynamical equati...
Definition mastereq.hpp:92
Output management for quantum control simulations and optimization.
Definition output.hpp:15
void closeTrajectoryDataFiles()
Closes open time evolution data files.
Definition output.cpp:322
bool writeFullState
Flag to determine if evolution of full state vector should be written to file.
Definition output.hpp:30
FILE * vfile
File for writing imaginary part of fullstate evolution.
Definition output.hpp:36
FILE * expectedfile_comp
File for expected energy evolution of the full composite system.
Definition output.hpp:39
void writeGradient(Vec grad)
Writes gradient vector for debugging adjoint calculations.
Definition output.cpp:99
bool writeExpectedEnergy_comp
Flag to determine if evolution of expected energy of the full composite system should be written to f...
Definition output.hpp:32
FILE * optimfile
Output file for logging optimization progress.
Definition output.hpp:25
std::string output_dir
Directory path for output data files.
Definition output.hpp:46
bool writePopulation_comp
Flag to determine if the evolution of the energy level occupations of the full composite system shoul...
Definition output.hpp:34
FILE * ufile
File for writing real part of fullstate evolution.
Definition output.hpp:35
void writeTrajectoryDataFiles(int timestep, double time, const Vec state, MasterEq *mastereq)
Writes time evolution data to files.
Definition output.cpp:250
std::vector< FILE * > expectedfile
Files for expected energy evolution per oscillator.
Definition output.hpp:37
Output()
Definition output.cpp:5
size_t noscillators
Number of oscillators in the system.
Definition output.hpp:29
bool writePopulation
Flag to determine if the evolution of the energy level occupations per oscillator should be written t...
Definition output.hpp:33
int output_optimization_stride
Write output files every N optimization iterations.
Definition output.hpp:47
~Output()
Definition output.cpp:85
FILE * populationfile_comp
File for population evolution of the full composite system.
Definition output.hpp:40
int mpisize_petsc
Size of communicator for PETSc parallelization.
Definition output.hpp:20
int mpirank_init
Rank of processor for initial condition parallelization.
Definition output.hpp:21
bool quietmode
Flag for reduced screen output.
Definition output.hpp:23
int mpirank_petsc
Rank of processor for PETSc parallelization.
Definition output.hpp:19
void openTrajectoryDataFiles(std::string prefix, int initid)
Opens data files for time evolution output for one oscillator.
Definition output.cpp:182
bool writeExpectedEnergy
Flag to determine if evolution of expected energy per oscillator should be written to files.
Definition output.hpp:31
void writeControls(Vec params, MasterEq *mastereq, int ntime, double dt)
Writes current control pulses per oscillator and control parameters.
Definition output.cpp:126
void writeOptimFile(int optim_iter, double objective, double gnorm, double stepsize, double Favg, double cost, double tikh_regul, double penalty_leakage, double penalty_dpdm, double penalty_energy, double penalty_variation, double penalty_weightedcost)
Writes optimization progress to history file.
Definition output.cpp:91
std::vector< FILE * > populationfile
Files for population evolution per oscillator.
Definition output.hpp:38
int output_timestep_stride
Time domain output frequency (write every N time steps)
Definition output.hpp:26
int mpirank_world
Rank of processor in MPI_COMM_WORLD.
Definition output.hpp:18
std::vector< OutputType > output_observables
List of output types applied to all oscillators.
Definition output.hpp:27