28 namespace it = Input::Type;
32 "Identifier of the isotope.")
34 "Half life parameter.");
39 "Identifier of the isotope.")
41 "Half life parameter.");
47 "How accurate should the simulation be, decimal places(?).")
49 "Isothermal reaction, thermodynamic temperature.")
51 "Thermodynamic parameter.")
53 "Thermodynamic parameter.")
55 "Thermodynamic parameter.")
57 "Thermodynamic parameter.")
59 "Simulation parameter.")
61 "Simulation parameter.");
65 :semchem_on(false), dual_porosity_on(false), fw_chem(NULL), mesh_(NULL), cross_section(NULL)
70 xprintf(
Msg,
"Semchem output file name is %s\n",semchem_output_fname.c_str());
117 double celkova_molalita;
119 double **conc_mob_arr = conc[
MOBILE];
120 double **conc_immob_arr = conc[
IMMOBILE];
136 switch (ppelm->
dim()) {
139 case 3 : pomoc = ppelm->
measure() *
148 G_prm.
splocha = (pomoc / el_por_m) * (el_phi) * (1 - el_por_m - el_por_imm);
149 celkova_molalita=0.0;
155 P_lat[i].
m0 = (double)((conc_mob_arr[i][poradi])) / (
P_lat[i].M);
156 celkova_molalita += (
P_lat[i].
m0);
161 if (celkova_molalita > 1e-16)
175 conc_mob_arr[i][poradi] = (double)(
P_lat[i].m0 *
P_lat[i].M);
183 switch (ppelm->
dim()) {
186 case 3 : pomoc = ppelm->
measure() *
194 G_prm.
splocha = (pomoc / el_por_imm) * (1 - el_phi) * (1 - el_por_m - el_por_imm);
195 celkova_molalita = 0.0;
201 P_lat[i].
m0 = (double)(conc_immob_arr[i][poradi] /
P_lat[i].M);
202 celkova_molalita +=
P_lat[i].
m0;
206 if (celkova_molalita > 1e-16)
271 strcpy(
fw_chem,semchem_output_file.c_str());
void set_el_4_loc(int *el_for_loc)
Semchem_interface(double timeStep, Mesh *mesh, int nrOfSpecies, bool dualPorosity)
void che_presun_poc_p_(void)
Class template representing a field with values dependent on: point, element, and region...
void compute_reaction(bool porTyp, ElementIter ppelm, int poradi, double ***conc)
void update_solution(void)
bool OptGetBool(const char *section, const char *key, const char *defval)
Distribution * distribution
void set_nr_of_elements(int nrOfElements)
void set_cross_section(Field< 3, FieldValue< 3 >::Scalar > *cross_section)
Sets pointer to data of other equations.
void che_pocitej_soubor(char *soubor, int *poc_krok)
static Input::Type::AbstractRecord input_type
static Input::Type::Record input_type
unsigned int n_elements() const
static Input::Type::Record input_type
Field< 3, FieldValue< 3 >::Scalar > * por_imm
void set_dual_porosity(void)
#define START_TIMER(tag)
Starts a timer with specified tag.
Field< 3, FieldValue< 3 >::Scalar > * phi
void set_mesh_(Mesh *mesh)
virtual Value::return_type const & value(const Point &p, const ElementAccessor< spacedim > &elm) const
static Input::Type::Record input_type
double *** concentration_matrix
void * xmalloc(size_t size)
Memory allocation with checking.
void set_sorption_fields(Field< 3, FieldValue< 3 >::Scalar > *por_m_, Field< 3, FieldValue< 3 >::Scalar > *por_imm_, Field< 3, FieldValue< 3 >::Scalar > *phi_)
void set_timestep(double new_timestep)
Dedicated class for storing path to input and output files.
arma::vec3 centre() const
void set_fw_chem(std::string semchem_output_file)
Field< 3, FieldValue< 3 >::Scalar > * por_m
pointers to sorption fields from transport
void set_chemistry_computation(void)
#define END_TIMER(tag)
Ends a timer with specified tag.
ElementAccessor< 3 > element_accessor() const
Gets ElementAccessor of this element.
void set_concentration_matrix(double ***ConcentrationsMatrix, Distribution *conc_distr, int *el_4_loc)
ElementVector element
Vector of elements of the mesh.
Field< 3, FieldValue< 3 >::Scalar > * cross_section
unsigned int lsize(int proc) const
get local size