10 #ifndef SORPTION_BASE_H
11 #define SORPTION_BASE_H
29 <<
" does not match the number of substances.");
61 EqData(
const string &output_field_name);
219 #endif //SORPTION_BASE_H
void allocate_output_mpi(void)
Allocates petsc vectors, prepares them for output and creates vector scatter.
Container for various descendants of FieldCommonBase.
MultiField< 3, FieldValue< 3 >::Scalar > conc_solid
Calculated sorbed concentrations, for output only.
std::vector< VectorSeqDouble > conc_solid_out
sorbed concentration array output (gathered - sequential)
Sorption model in immobile zone of dual porosity model is considered.
ReactionTerm * reaction_liquid
std::vector< std::vector< Isotherm > > isotherms
virtual ~SorptionBase(void)
DECLARE_INPUT_EXCEPTION(ExcSubstanceCountMatch,<< "The size of the input array "<< EI_ArrayName::qval<< " does not match the number of substances.")
void initialize_substance_ids()
Reads names of substances from input and creates indexing to global vector of substance.
Field< 3, FieldValue< 3 >::EnumVector > sorption_type
Discrete need Selection for initialization.
EqData(const string &output_field_name)
Collect all fields.
Field< 3, FieldValue< 3 >::Vector > isotherm_other
Langmuir sorption coeficients alpha (in fraction c_s = omega * (alpha*c_a)/(1- alpha*c_a)).
Class template representing a field with values dependent on: point, element, and region...
Input::Type::Selection output_selection
double ** compute_reaction(double **concentrations, int loc_el)
void zero_time_step() override
static Input::Type::Record input_type
Field< 3, FieldValue< 3 >::Scalar > rock_density
Rock matrix density.
static Input::Type::Selection sorption_type_selection
Field< 3, FieldValue< 3 >::Vector > init_conc_solid
Initial sorbed concentrations.
std::vector< double > table_limit_
Field< 3, FieldValue< 3 >::Vector > isotherm_mult
Multiplication coefficients (k, omega) for all types of isotherms.
std::vector< unsigned int > substance_global_idx_
Mapping from local indexing of substances to global.
void initialize_fields()
Initializes field sets.
void output_data(void) override
Output method.
Field< 3, FieldValue< 3 >::Scalar > porosity
Porosity field copied from transport.
Vec * vconc_solid
PETSC sorbed concentration vector (parallel).
FieldSet output_fields
Fields indended for output, i.e. all input fields plus those representing solution.
void initialize_from_input()
Initializes private members of sorption from the input record.
std::vector< double > solubility_vec_
unsigned int n_interpolation_steps_
virtual void isotherm_reinit(std::vector< Isotherm > &isotherms, const ElementAccessor< 3 > &elm)=0
Reinitializes the isotherm.
ReactionTerm * reaction_solid
static Input::Type::Record record_factory(SorptionRecord::Type)
Creates the input record for different cases of sorption model (simple or in dual porosity)...
void output_vector_gather(void) override
Gathers all the parallel vectors to enable them to be output.
static Input::Type::Selection make_output_selection(const string &output_field_name, const string &selection_name)
Input::Array output_array
void update_solution(void) override
Updates the solution.
void set_initial_condition()
Reads and sets initial condition for concentration in solid.
Input::Type::Selection make_output_field_selection(const string &name, const string &desc="")
Sorption model in mobile zone of dual porosity model is considered.
VecScatter vconc_out_scatter
Output vector scatter.
Class for representation of a vector of fields of the same physical quantity.
unsigned int n_substances_
EqData * data_
Pointer to equation data. The object is constructed in descendants.
TYPEDEF_ERR_INFO(EI_ArrayName, std::string)
Only sorption model is considered in transport.
FieldSet input_data_set_
Input data set - fields in this set are read from the input file.
void initialize() override
Prepares the object to usage.