125 Quantity(
const unsigned int index,
const string &name)
155 static void set_yaml_output();
162 Balance(
const std::string &file_prefix,
const Mesh *mesh);
182 void units(
const UnitSI &unit);
193 unsigned int add_quantity(
const string &name);
207 void allocate(
unsigned int n_loc_dofs,
208 unsigned int max_dofs_per_boundary);
218 void start_mass_assembly(
unsigned int quantity_idx);
223 for (
auto idx : q_idx_vec)
224 start_mass_assembly(idx);
231 void start_flux_assembly(
unsigned int quantity_idx);
236 for (
auto idx : q_idx_vec)
237 start_flux_assembly(idx);
244 void start_source_assembly(
unsigned int quantity_idx);
249 for (
auto idx : q_idx_vec)
250 start_source_assembly(idx);
260 void add_mass_matrix_values(
unsigned int quantity_idx,
261 unsigned int region_idx,
279 void add_flux_matrix_values(
unsigned int quantity_idx,
280 unsigned int boundary_idx,
291 void add_source_matrix_values(
unsigned int quantity_idx,
292 unsigned int region_idx,
302 void add_mass_vec_value(
unsigned int quantity_idx,
303 unsigned int region_idx,
314 void add_flux_vec_value(
unsigned int quantity_idx,
315 unsigned int boundary_idx,
325 void add_source_vec_values(
unsigned int quantity_idx,
326 unsigned int region_idx,
331 void finish_mass_assembly(
unsigned int quantity_idx);
336 for (
auto idx : q_idx_vec)
337 finish_mass_assembly(idx);
341 void finish_flux_assembly(
unsigned int quantity_idx);
346 for (
auto idx : q_idx_vec)
347 finish_flux_assembly(idx);
351 void finish_source_assembly(
unsigned int quantity_idx);
356 for (
auto idx : q_idx_vec)
357 finish_source_assembly(idx);
367 void calculate_cumulative(
unsigned int quantity_idx,
368 const Vec &solution);
376 void calculate_mass(
unsigned int quantity_idx,
385 void calculate_instant(
unsigned int quantity_idx,
386 const Vec &solution);
394 void add_cumulative_source(
unsigned int quantity_idx,
double source);
401 static const unsigned int output_column_width = 20;
409 void lazy_initialize();
412 void output_legacy(
double time);
415 void output_csv(
double time,
char delimiter,
const std::string& comment_string,
unsigned int repeat = 0);
418 void output_yaml(
double time);
421 std::string csv_zero_vals(
unsigned int cnt,
char delimiter);
424 void format_csv_output_header(
char delimiter,
const std::string& comment_string);
427 std::string format_csv_val(std::string val,
char delimiter,
bool initial =
false);
430 std::string format_csv_val(
double val,
char delimiter,
bool initial =
false);
575 #endif // BALANCE_HH_ UnitSI units_
Units of conserved quantities.
std::vector< double > integrated_sources_
std::vector< double > sum_fluxes_out_
TimeMark::Type output_mark_type_
TimeMark type for output of particular equation.
TimeMark::Type balance_output_type_
TimeMark type for balance output of particular equation.
bool initial_
true before calculating the mass at initial time, otherwise false
void start_mass_assembly(std::vector< unsigned int > q_idx_vec)
Variant of the start_mass_assembly() method for a set of quantities.
std::vector< std::vector< double > > sources_in_
void finish_mass_assembly(std::vector< unsigned int > q_idx_vec)
Variant of the finish_mass_assembly() method for a set of quantities.
std::vector< std::vector< double > > fluxes_in_
std::vector< double > sum_fluxes_in_
std::vector< std::vector< double > > fluxes_out_
const TimeGovernor * time_
Mat * region_source_rhs_
Matrices for calculation of signed source (n_dofs x n_bulk_regions).
Input::Record input_record_
Record for current balance.
ofstream output_
Handle for file for output in given OutputFormat of balance and total fluxes over individual regions ...
bool cumulative() const
Getter for cumulative_.
bool allocation_done_
true before allocating necessary internal structures (Petsc matrices etc.)
Basic time management functionality for unsteady (and steady) solvers (class Equation).
std::vector< double > sum_fluxes_
string name_
Name of quantity (for output).
bool balance_on_
If the balance is on. Balance is off in the case of no balance output time marks. ...
static constexpr bool value
std::vector< double > increment_sources_
const unsigned int index_
Internal index within list of quantities.
Vec * be_flux_vec_
Vectors for calculation of flux (n_boundary_edges).
std::vector< double > integrated_fluxes_
std::vector< Quantity > quantities_
Names of conserved quantities.
std::vector< std::vector< double > > sources_out_
Mat * be_flux_matrix_
Matrices for calculation of flux (n_boundary_edges x n_dofs).
double last_time_
time of last calculated balance
std::vector< std::vector< double > > fluxes_
void finish_flux_assembly(std::vector< unsigned int > q_idx_vec)
Variant of the finish_flux_assembly() method for a set of quantities.
void start_flux_assembly(std::vector< unsigned int > q_idx_vec)
Variant of the start_flux_assembly() method for a set of quantities.
Mat * region_mass_matrix_
Matrices for calculation of mass (n_dofs x n_bulk_regions).
std::vector< std::vector< double > > sources_
std::vector< double > sum_sources_out_
unsigned int max_dofs_per_boundary_
bool cumulative_
if true then cumulative balance is computed
Mat * region_source_matrix_
Matrices for calculation of source (n_dofs x n_bulk_regions).
std::vector< double > increment_fluxes_
void finish_source_assembly(std::vector< unsigned int > q_idx_vec)
Variant of the finish_source_assembly() method for a set of quantities.
static bool do_yaml_output_
Dedicated class for storing path to input and output files.
std::vector< double > sum_sources_
std::vector< double > initial_mass_
Quantity(const unsigned int index, const string &name)
std::vector< unsigned int > be_regions_
Number of boundary region for each local boundary edge.
OutputFormat output_format_
Format of output file.
int be_offset_
Offset for local part of vector of boundary edges.
std::vector< std::vector< double > > masses_
void start_source_assembly(std::vector< unsigned int > q_idx_vec)
Variant of the start_source_assembly() method for a set of quantities.
Vec * region_source_vec_
Vectors for calculation of source (n_bulk_regions).
std::vector< double > sum_masses_
Vec * region_mass_vec_
Vectors for calculation of mass (n_bulk_regions).
unsigned int output_line_counter_
hold count of line printed into output_
bool add_output_times_
Add output time marks to balance output time marks.
Class for representation SI units of Fields.
unsigned int n_loc_dofs_
Allocation parameters. Set by the allocate method used in the lazy_initialize.
FilePath balance_output_file_
File path for output_ stream.
std::string file_prefix_
Save prefix passed in in constructor.
bool output_yaml_header_
marks whether YAML output has printed header
std::vector< double > sum_sources_in_