|
Flow123d
|
#include <transport.h>


Classes | |
| class | EqData |
Public Member Functions | |
| ConvectionTransport (Mesh &init_mesh, const Input::Record &in_rec) | |
| virtual | ~ConvectionTransport () |
| void | zero_time_step () override |
| void | update_solution () override |
| void | set_target_time (double target_time) |
| void | output_vector_gather () |
| virtual void | output_data () |
| Write computed fields. More... | |
| EqData * | get_data () |
| OutputTime * | output_stream () |
| double *** | get_concentration_matrix () |
| void | get_par_info (int *&el_4_loc, Distribution *&el_ds) |
| int * | get_el_4_loc () |
| int * | get_row_4_el () |
| virtual void | get_parallel_solution_vector (Vec &vc) |
| virtual void | get_solution_vector (double *&vector, unsigned int &size) |
| TimeIntegrationScheme | time_scheme () |
| Returns the time integration scheme of the equation. More... | |
Public Member Functions inherited from TransportBase | |
| TransportBase (Mesh &mesh, const Input::Record in_rec) | |
| virtual | ~TransportBase () |
| virtual void | set_velocity_field (const MH_DofHandler &dh) |
| MassBalance * | mass_balance () |
| Sets pointer to data of other equations. TODO: there should be also passed the sigma parameter between dimensions. More... | |
| unsigned int | n_substances () |
| Returns number of trnasported substances. More... | |
| vector< string > & | substance_names () |
| Returns reference to the vector of substnace names. More... | |
| virtual void | set_concentration_vector (Vec &vec) |
Public Member Functions inherited from AdvectionProcessBase | |
| AdvectionProcessBase (Mesh &mesh, const Input::Record in_rec) | |
Public Member Functions inherited from EquationBase | |
| EquationBase () | |
| EquationBase (Mesh &mesh, const Input::Record in_rec) | |
| virtual | ~EquationBase () |
| virtual void | choose_next_time () |
| virtual void | set_time_upper_constraint (double dt) |
| virtual void | set_time_lower_constraint (double dt) |
| TimeGovernor const & | time () |
| virtual void | set_time_governor (TimeGovernor &time) |
| double | planned_time () |
| double | solved_time () |
| Mesh & | mesh () |
| TimeMark::Type | mark_type () |
| FieldSet & | data () |
Public Member Functions inherited from EquationForMassBalance | |
| virtual | ~EquationForMassBalance () |
Private Member Functions | |
| void | create_transport_matrix_mpi () |
| void | make_transport_partitioning () |
| void | set_initial_condition () |
| void | read_concentration_sources () |
| void | set_boundary_conditions () |
| void | compute_concentration_sources (unsigned int sbi) |
| void | compute_concentration_sources_for_mass_balance (unsigned int sbi) |
| void | transport_matrix_step_mpi (double time_step) |
| void | alloc_transport_vectors () |
| void | alloc_transport_structs_mpi () |
| void | calc_fluxes (vector< vector< double > > &bcd_balance, vector< vector< double > > &bcd_plus_balance, vector< vector< double > > &bcd_minus_balance) |
| void | calc_elem_sources (vector< vector< double > > &mass, vector< vector< double > > &src_balance) |
Private Attributes | |
| EqData | data_ |
| bool | is_convection_matrix_scaled |
| bool | need_time_rescaling |
| int | sub_problem |
| double * | sources_corr |
| Vec | v_sources_corr |
| double ** | sources_density |
| temporary arrays to store constant values of fields over time interval More... | |
| double ** | sources_conc |
| double ** | sources_sigma |
| TimeMark::Type | target_mark_type |
| TimeMark type for time marks denoting end of every time interval where transport matrix remains constant. More... | |
| double | cfl_max_step |
| VecScatter | vconc_out_scatter |
| Mat | tm |
| double | transport_matrix_time |
| Vec * | vconc |
| Concentration vectors for mobile phase. More... | |
| double *** | conc |
| Concentrations for phase, substance, element. More... | |
| Vec * | vpconc |
| Vec * | bcvcorr |
| Vec * | vcumulative_corr |
| double ** | cumulative_corr |
| Vec * | vconc_out |
| double *** | out_conc |
| Input::Record | output_rec |
| Record with output specification. More... | |
| OutputTime * | output_stream_ |
| int * | row_4_el |
| int * | el_4_loc |
| Distribution * | el_ds |
Friends | |
| class | TransportOperatorSplitting |
Additional Inherited Members | |
Public Types inherited from EquationForMassBalance | |
| enum | TimeIntegrationScheme { none, explicit_euler, implicit_euler, crank_nicholson } |
Static Public Attributes inherited from TransportBase | |
| static Input::Type::Record | input_type_output_record |
Protected Member Functions inherited from TransportBase | |
| const RegionDB * | region_db () |
| Returns the region database. More... | |
Protected Attributes inherited from TransportBase | |
| unsigned int | n_subst_ |
| Number of transported substances. More... | |
| std::vector< string > | subst_names_ |
| Names of transported substances. More... | |
| const MH_DofHandler * | mh_dh |
| MassBalance * | mass_balance_ |
| object for calculation and writing the mass balance to file. More... | |
TODO:
Definition at line 82 of file transport.h.
| ConvectionTransport::ConvectionTransport | ( | Mesh & | init_mesh, |
| const Input::Record & | in_rec | ||
| ) |
Constructor.
Definition at line 110 of file transport.cc.
|
virtual |
TODO: destructor
Definition at line 216 of file transport.cc.
|
private |
|
private |
|
private |
Implements the virtual method EquationForMassBalance::calc_elem_sources().
Definition at line 1354 of file transport.cc.
|
private |
Implements the virtual method EquationForMassBalance::calc_fluxes().
Definition at line 1313 of file transport.cc.
|
private |
|
private |
|
private |
Assembly convection term part of the matrix and boundary matrix for application of boundary conditions.
Discretization of the convection term use explicit time scheme and finite volumes with full upwinding. We count on with exchange between dimensions and mixing on edges where more then two elements connect (can happen for 2D and 1D elements in 3D embedding space)
In order to get multiplication matrix for explicit transport one have to scale the convection part by the acctual time step and add time term, i. e. unit matrix (see. transport_matrix_step_mpi)
Updates CFL time step constrain.
Definition at line 800 of file transport.cc.

| double *** ConvectionTransport::get_concentration_matrix | ( | ) |
|
inline |
| int * ConvectionTransport::get_el_4_loc | ( | ) |
Definition at line 1298 of file transport.cc.
| void ConvectionTransport::get_par_info | ( | int *& | el_4_loc, |
| Distribution *& | el_ds | ||
| ) |
|
virtual |
Child class have to implement getter for parallel solution vector. OBSOLETE
Implements EquationBase.
Definition at line 1279 of file transport.cc.
| int * ConvectionTransport::get_row_4_el | ( | ) |
|
virtual |
Child class have to implement getter for sequential solution vector. OBSOLETE
Implements EquationBase.
Definition at line 1283 of file transport.cc.
|
private |
|
virtual |
Write computed fields.
Implements EquationBase.
Definition at line 1386 of file transport.cc.

|
inline |
| void ConvectionTransport::output_vector_gather | ( | void | ) |
Communicate parallel concentration vectors into sequential output vector.
Definition at line 1254 of file transport.cc.

|
private |
|
private |
|
private |
| void ConvectionTransport::set_target_time | ( | double | target_time) |
Use new flow field vector for construction of convection matrix. Updates CFL time step constrain. TODO: Just set the new velocity, postpone update till compute_one_step Set cross section of fractures from the Flow equation.
TODO: Make this and previous part of Transport interface in TransportBase. Set time interval which is considered as one time step by TransportOperatorSplitting. In particular the velocity field dosn't change over this interval.
Dependencies:
velocity, porosity -> matrix, source_vector matrix -> time_step
data_read_times -> time_step (not necessary if we won't stick to jump times) data -> source_vector time_step -> scaling
Definition at line 730 of file transport.cc.

|
inlinevirtual |
Returns the time integration scheme of the equation.
Implements EquationForMassBalance.
Definition at line 195 of file transport.h.
|
private |
Finish explicit transport matrix (time step scaling)
|
overridevirtual |
Calculates one time step of explicit transport.
Reimplemented from EquationBase.
Definition at line 600 of file transport.cc.

|
overridevirtual |
Initialize solution at zero time.
Reimplemented from EquationBase.
Definition at line 584 of file transport.cc.

|
friend |
Definition at line 311 of file transport.h.
|
private |
Definition at line 294 of file transport.h.
|
private |
Definition at line 273 of file transport.h.
|
private |
Concentrations for phase, substance, element.
Definition at line 289 of file transport.h.
|
private |
Definition at line 296 of file transport.h.
|
private |
Parameters of the equation, some are shared with other implementations since EqData is derived from TransportBase::TransportEqData
Definition at line 250 of file transport.h.
|
private |
Definition at line 308 of file transport.h.
|
private |
Definition at line 309 of file transport.h.
|
private |
Indicates if we finished the matrix and add vector by scaling with timestep factor.
Definition at line 255 of file transport.h.
|
private |
Definition at line 255 of file transport.h.
|
private |
Definition at line 299 of file transport.h.
|
private |
Record with output specification.
Definition at line 302 of file transport.h.
|
private |
Definition at line 304 of file transport.h.
|
private |
Definition at line 307 of file transport.h.
|
private |
Definition at line 268 of file transport.h.
|
private |
Definition at line 263 of file transport.h.
|
private |
temporary arrays to store constant values of fields over time interval
Definition at line 268 of file transport.h.
|
private |
Definition at line 268 of file transport.h.
|
private |
Definition at line 258 of file transport.h.
|
private |
TimeMark type for time marks denoting end of every time interval where transport matrix remains constant.
Definition at line 272 of file transport.h.
|
private |
Definition at line 279 of file transport.h.
|
private |
Time when the transport matrix was created. TODO: when we have our own classes for LA objects, we can use lazy dependence to check necessity for matrix update
Definition at line 284 of file transport.h.
|
private |
Definition at line 264 of file transport.h.
|
private |
Concentration vectors for mobile phase.
Definition at line 287 of file transport.h.
|
private |
Definition at line 298 of file transport.h.
|
private |
Definition at line 278 of file transport.h.
|
private |
Definition at line 295 of file transport.h.
|
private |
Definition at line 292 of file transport.h.
1.8.4