Flow123d
release_3.0.0-968-gc87a28e79
|
Go to the documentation of this file.
25 #include <unordered_map>
127 Quantity(
const unsigned int index,
const string &name)
164 Balance(
const std::string &file_prefix,
const Mesh *mesh);
209 void allocate(
unsigned int n_loc_dofs,
210 unsigned int max_dofs_per_boundary);
225 for (
auto idx : q_idx_vec)
238 for (
auto idx : q_idx_vec)
251 for (
auto idx : q_idx_vec)
263 unsigned int region_idx,
290 unsigned int region_idx,
301 unsigned int region_idx,
323 unsigned int region_idx,
333 for (
auto idx : q_idx_vec)
343 for (
auto idx : q_idx_vec)
353 for (
auto idx : q_idx_vec)
365 const Vec &solution);
383 const Vec &solution);
412 void output_csv(
double time,
char delimiter,
const std::string& comment_string,
unsigned int repeat = 0);
424 std::string
format_csv_val(std::string val,
char delimiter,
bool initial =
false);
427 std::string
format_csv_val(
double val,
char delimiter,
bool initial =
false);
585 #endif // BALANCE_HH_
void calculate_instant(unsigned int quantity_idx, const Vec &solution)
void add_mass_vec_value(unsigned int quantity_idx, unsigned int region_idx, double value)
static const unsigned int output_column_width
Size of column in output (used if delimiter is space)
void start_flux_assembly(std::vector< unsigned int > q_idx_vec)
Variant of the start_flux_assembly() method for a set of quantities.
std::vector< unsigned int > be_regions_
Maps local boundary edge to its region boundary index.
std::vector< double > sum_fluxes_out_
Balance(const std::string &file_prefix, const Mesh *mesh)
UnitSI units_
Units of conserved quantities.
const TimeGovernor * time_
ofstream output_
Handle for file for output in given OutputFormat of balance and total fluxes over individual regions ...
void start_mass_assembly(std::vector< unsigned int > q_idx_vec)
Variant of the start_mass_assembly() method for a set of quantities.
std::string csv_zero_vals(unsigned int cnt, char delimiter)
Return part of output represented by zero values. Count of zero values is given by cnt parameter.
const unsigned int index_
Internal index within list of quantities.
int LongIdx
Define type that represents indices of large arrays (elements, nodes, dofs etc.)
TimeMark::Type balance_output_type_
TimeMark type for balance output of particular equation.
unsigned int add_quantity(const string &name)
Vec * region_source_vec_
Vectors for calculation of source (n_bulk_regions).
std::vector< double > integrated_sources_
void format_csv_output_header(char delimiter, const std::string &comment_string)
Print output header.
std::vector< double > sum_sources_
void finish_source_assembly(unsigned int quantity_idx)
This method must be called after assembling the matrix and vectors for computing source.
static constexpr bool value
void add_flux_matrix_values(unsigned int quantity_idx, SideIter side, const std::vector< LongIdx > &dof_indices, const std::vector< double > &values)
Dedicated class for storing path to input and output files.
bool output_yaml_header_
marks whether YAML output has printed header
void start_flux_assembly(unsigned int quantity_idx)
std::vector< double > increment_fluxes_
unsigned int elem_idx() const
bool cumulative() const
Getter for cumulative_.
void init_from_input(const Input::Record &in_rec, TimeGovernor &tg)
static bool do_yaml_output_
std::vector< Quantity > quantities_
Names of conserved quantities.
void units(const UnitSI &unit)
Setter for units of conserved quantities.
void finish_mass_assembly(std::vector< unsigned int > q_idx_vec)
Variant of the finish_mass_assembly() method for a set of quantities.
void finish_flux_assembly(std::vector< unsigned int > q_idx_vec)
Variant of the finish_flux_assembly() method for a set of quantities.
void add_mass_matrix_values(unsigned int quantity_idx, unsigned int region_idx, const std::vector< LongIdx > &dof_indices, const std::vector< double > &values)
void start_mass_assembly(unsigned int quantity_idx)
Vec * region_mass_vec_
Vectors for calculation of mass (n_bulk_regions).
Mat * be_flux_matrix_
Matrices for calculation of flux (n_boundary_edges x n_dofs).
void finish_mass_assembly(unsigned int quantity_idx)
This method must be called after assembling the matrix for computing mass.
string name_
Name of quantity (for output).
void add_flux_vec_value(unsigned int quantity_idx, SideIter side, double value)
void output_yaml(double time)
Perform output in yaml format.
Mat * region_mass_matrix_
Matrices for calculation of mass (n_dofs x n_bulk_regions).
bool balance_on_
If the balance is on. Balance is off in the case of no balance output time marks.
bool cumulative_
if true then cumulative balance is computed
std::vector< std::vector< double > > masses_
Basic time management functionality for unsteady (and steady) solvers (class Equation).
Vec * be_flux_vec_
Vectors for calculation of flux (n_boundary_edges).
std::vector< double > sum_fluxes_in_
Class for representation SI units of Fields.
std::vector< double > sum_masses_
std::vector< std::vector< double > > fluxes_
void start_source_assembly(std::vector< unsigned int > q_idx_vec)
Variant of the start_source_assembly() method for a set of quantities.
unsigned int output_line_counter_
hold count of line printed into output_
void output()
Perform output to file for given time instant.
std::vector< double > initial_mass_
bool add_output_times_
Add output time marks to balance output time marks.
void allocate(unsigned int n_loc_dofs, unsigned int max_dofs_per_boundary)
void calculate_mass(unsigned int quantity_idx, const Vec &solution, vector< double > &output_array)
unsigned int side_idx() const
Mat * region_source_matrix_
Matrices for calculation of source (n_dofs x n_bulk_regions).
bool is_current()
Returns true if the current time step is marked for the balance output.
std::string format_csv_val(std::string val, char delimiter, bool initial=false)
Format string value of csv output. Wrap string into quotes and if delimiter is space,...
void calculate_cumulative(unsigned int quantity_idx, const Vec &solution)
OutputFormat output_format_
Format of output file.
std::vector< std::vector< double > > fluxes_in_
int be_offset_
Offset for local part of vector of boundary edges.
std::vector< std::vector< double > > sources_in_
std::vector< double > sum_fluxes_
std::vector< double > increment_sources_
std::string file_prefix_
Save prefix passed in in constructor.
double last_time_
time of last calculated balance
static void set_yaml_output()
Set global variable to output balance files into YAML format (in addition to the table format).
void output_csv(double time, char delimiter, const std::string &comment_string, unsigned int repeat=0)
Perform output in csv format.
std::vector< std::vector< double > > fluxes_out_
static const Input::Type::Selection & get_format_selection_input_type()
Input selection for file format.
void add_source_vec_values(unsigned int quantity_idx, unsigned int region_idx, const std::vector< LongIdx > &dof_values, const std::vector< double > &values)
LongIdx get_boundary_edge_uid(SideIter side)
Vec ones_
auxiliary vectors for summation of matrix columns
void add_source_matrix_values(unsigned int quantity_idx, unsigned int region_idx, const std::vector< LongIdx > &dof_indices, const std::vector< double > &values)
Input::Record input_record_
Record for current balance.
TimeMark::Type output_mark_type_
TimeMark type for output of particular equation.
void start_source_assembly(unsigned int quantity_idx)
unsigned int n_loc_dofs_
Allocation parameters. Set by the allocate method used in the lazy_initialize.
std::vector< double > sum_sources_in_
void finish_source_assembly(std::vector< unsigned int > q_idx_vec)
Variant of the finish_source_assembly() method for a set of quantities.
std::vector< std::vector< double > > sources_
bool allocation_done_
true before allocating necessary internal structures (Petsc matrices etc.)
std::vector< double > sum_sources_out_
Quantity(const unsigned int index, const string &name)
FilePath balance_output_file_
File path for output_ stream.
bool initial_
true before calculating the mass at initial time, otherwise false
unsigned int max_dofs_per_boundary_
void add_cumulative_source(unsigned int quantity_idx, double source)
void finish_flux_assembly(unsigned int quantity_idx)
This method must be called after assembling the matrix and vector for computing flux.
std::vector< double > integrated_fluxes_
Mat * region_source_rhs_
Matrices for calculation of signed source (n_dofs x n_bulk_regions).
std::vector< std::vector< double > > sources_out_
std::unordered_map< LongIdx, unsigned int > be_id_map_
static const Input::Type::Record & get_input_type()
Main balance input record type.
void output_legacy(double time)
Perform output in old format (for compatibility)
std::vector< unsigned int > add_quantities(const std::vector< string > &names)