40 using namespace Input::Type;
50 ADD_FIELD(
bc_conc,
"Dirichlet boundary condition (for each substance).",
"0.0");
53 ADD_FIELD(
disp_l,
"Longitudal dispersivity (for each substance).",
"0.0");
54 ADD_FIELD(
disp_t,
"Transversal dispersivity (for each substance).",
"0.0");
55 ADD_FIELD(
diff_m,
"Molecular diffusivity (for each substance).",
"0.0");
69 "Names of transported substances.");
142 vector<double> elem_csec(point_list.size()), por_m(point_list.size());
147 for (
unsigned int i=0; i<point_list.size(); i++)
148 mm_coef[i] = elem_csec[i]*por_m[i];
153 double Dm,
double alphaL,
double alphaT,
double porosity,
double cross_cut,
arma::mat33 &K)
155 double vnorm = arma::norm(velocity, 2);
158 for (
int i=0; i<3; i++)
159 for (
int j=0; j<3; j++)
160 K(i,j) = velocity[i]*velocity[j]/(vnorm*vnorm)*(alphaL-alphaT) + alphaT*(i==j?1:0);
166 K = (vnorm*K + (Dm*pow(porosity, 1./3)*porosity*cross_cut)*arma::eye(3,3));
176 const unsigned int qsize = point_list.size();
177 const unsigned int n_subst = dif_coef.size();
187 for (
unsigned int i=0; i<qsize; i++) {
188 for (
int sbi=0; sbi<n_subst; sbi++) {
189 ad_coef[sbi][i] = velocity[i];
218 const unsigned int qsize = point_list.size();
225 for (
unsigned int k=0; k<qsize; k++)
227 sources_density[k] *= csection[k];
228 sources_sigma[k] *= csection[k];
237 const unsigned int qsize = point_list.size();
242 for (
unsigned int k=0; k<qsize; k++)
243 sources_sigma[k] *= csection[k];