49 "Identifier of the isotope.")
51 "Half life parameter.");
56 "Identifier of the isotope.")
58 "Half life parameter.");
64 "How accurate should the simulation be, decimal places(?).")
66 "Isothermal reaction, thermodynamic temperature.")
68 "Thermodynamic parameter.")
70 "Thermodynamic parameter.")
72 "Thermodynamic parameter.")
74 "Thermodynamic parameter.")
76 "Simulation parameter.")
78 "Simulation parameter.");
82 :semchem_on(false), dual_porosity_on(false), fw_chem(NULL), mesh_(NULL), cross_section(NULL)
87 xprintf(
Msg,
"Semchem output file name is %s\n",semchem_output_fname.c_str());
134 double celkova_molalita;
136 double **conc_mob_arr = conc[
MOBILE];
137 double **conc_immob_arr = conc[
IMMOBILE];
148 OLD_ASSERT(P_lat != NULL,
"\nP_lat NENI ALOKOVANE\n");
153 switch (ppelm->
dim()) {
156 case 3 : pomoc = ppelm->
measure() *
165 G_prm.
splocha = (pomoc / el_por_m) * (el_phi) * (1 - el_por_m - el_por_imm);
166 celkova_molalita=0.0;
172 P_lat[i].
m0 = (double)((conc_mob_arr[i][poradi])) / (P_lat[i].M);
173 celkova_molalita += (P_lat[i].
m0);
178 if (celkova_molalita > 1e-16)
184 P_lat[i].
m0 = P_lat[i].
m;
192 conc_mob_arr[i][poradi] = (double)(P_lat[i].m0 * P_lat[i].M);
200 switch (ppelm->
dim()) {
203 case 3 : pomoc = ppelm->
measure() *
211 G_prm.
splocha = (pomoc / el_por_imm) * (1 - el_phi) * (1 - el_por_m - el_por_imm);
212 celkova_molalita = 0.0;
218 P_lat[i].
m0 = (double)(conc_immob_arr[i][poradi] / P_lat[i].M);
219 celkova_molalita += P_lat[i].
m0;
223 if (celkova_molalita > 1e-16)
234 conc_immob_arr[i][poradi] = (P_lat[i].
m0 * P_lat[i].
M);
287 fw_chem = (
char*)xmalloc(semchem_output_file.length()+1);
288 strcpy(
fw_chem,semchem_output_file.c_str());
double measure() const
Computes the measure of the element.
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)
Class ReactionTerm is an abstract class representing reaction term in transport.
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 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
Computes the barycenter.
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