18 :
public StdDataLinker< SmartKd<dim>, number, dim>
46 m_spDH =
m_spH.template cast_dynamic<DependentUserData<number, dim> >();
47 m_spDS =
m_spS.template cast_dynamic<DependentUserData<number, dim> >();
48 m_spDCa =
m_spCa.template cast_dynamic<DependentUserData<number, dim> >();
49 m_spDDIC =
m_spDIC.template cast_dynamic<DependentUserData<number, dim> >();
50 m_spDSO4 =
m_spSO4.template cast_dynamic<DependentUserData<number, dim> >();
51 m_spDAl =
m_spAl.template cast_dynamic<DependentUserData<number, dim> >();
65 (*m_spH) (H, globIP,
time, si);
67 (*m_spS) (
s, globIP,
time, si);
69 (*m_spCa) (Ca, globIP,
time, si);
71 (*m_spDIC)(DIC, globIP,
time, si);
73 (*m_spSO4)(SO4, globIP,
time, si);
75 (*m_spAl)(Al, globIP,
time, si);
81 x[0] = pH; x[1] = DIC; x[2] = I; x[3] = Ca; x[4] = Al; x[5] = SO4;
97 std::vector<number> vH(nip);
98 (*m_spH) (&vH[0], vGlobIP,
time, si, elem, vCornerCoords, vLocIP, nip, u, vJT);
99 std::vector<number> vS(nip);
100 (*m_spS) (&vS[0], vGlobIP,
time, si, elem, vCornerCoords, vLocIP, nip, u, vJT);
101 std::vector<number> vCa(nip);
102 (*m_spCa) (&vCa[0], vGlobIP,
time, si, elem, vCornerCoords, vLocIP, nip, u, vJT);
103 std::vector<number> vDIC(nip);
104 (*m_spDIC)(&vDIC[0], vGlobIP,
time, si, elem, vCornerCoords, vLocIP, nip, u, vJT);
105 std::vector<number> vSO4(nip);
106 (*m_spSO4)(&vSO4[0], vGlobIP,
time, si, elem, vCornerCoords, vLocIP, nip, u, vJT);
107 std::vector<number> vAl(nip);
108 (*m_spAl) (&vAl[0], vGlobIP,
time, si, elem, vCornerCoords, vLocIP, nip, u, vJT);
110 for(
size_t ip = 0;
ip < nip; ++
ip)
116 x[0] = pH; x[1] = vDIC[
ip]; x[2] = I; x[3] = vCa[
ip]; x[4] = vAl[
ip]; x[5] = vSO4[
ip];
122 template <
int refDim>
133 std::vector<std::vector<number> > vvvDeriv[],
143 for(
size_t ip = 0;
ip < nip; ++
ip)
149 x[0] = pH; x[1] = vDIC[
ip]; x[2] = I; x[3] = vCa[
ip]; x[4] = vAl[
ip]; x[5] = vSO4[
ip];
157 this->set_zero(vvvDeriv, nip);
161 for(
size_t ip = 0;
ip < nip; ++
ip)
162 for(
size_t fct = 0; fct <
m_spDH->num_fct(); ++fct)
166 for(
size_t sh = 0; sh < this->num_sh(commonFct); ++sh)
174 x[0] = pH; x[1] = vDIC[
ip]; x[2] = I; x[3] = vCa[
ip]; x[4] = vAl[
ip]; x[5] = vSO4[
ip];
179 x[0] = pH; x[1] = vDIC[
ip]; x[2] = I; x[3] = vCa[
ip]; x[4] = vAl[
ip]; x[5] = vSO4[
ip];
182 vvvDeriv[
ip][commonFct][sh] += vDH[sh]*(Kd1 - Kd2)/(2*eps);
188 for(
size_t ip = 0;
ip < nip; ++
ip)
189 for(
size_t fct = 0; fct <
m_spDS->num_fct(); ++fct)
193 for(
size_t sh = 0; sh < this->num_sh(commonFct); ++sh)
197 eps1 = eps2 = 1e-3*vS[
ip];
207 x[0] = pH; x[1] = vDIC[
ip]; x[2] = I; x[3] = vCa[
ip]; x[4] = vAl[
ip]; x[5] = vSO4[
ip];
212 x[0] = pH; x[1] = vDIC[
ip]; x[2] = I; x[3] = vCa[
ip]; x[4] = vAl[
ip]; x[5] = vSO4[
ip];
215 vvvDeriv[
ip][commonFct][sh] += vDS[sh]*(Kd1 - Kd2)/(eps1 + eps2);
221 for(
size_t ip = 0;
ip < nip; ++
ip)
222 for(
size_t fct = 0; fct <
m_spDCa->num_fct(); ++fct)
226 for(
size_t sh = 0; sh < this->num_sh(commonFct); ++sh)
234 x[0] = pH; x[1] = vDIC[
ip]; x[2] = I; x[3] = vCa[
ip] + eps; x[4] = vAl[
ip]; x[5] = vSO4[
ip];
239 x[0] = pH; x[1] = vDIC[
ip]; x[2] = I; x[3] = vCa[
ip] - eps; x[4] = vAl[
ip]; x[5] = vSO4[
ip];
242 vvvDeriv[
ip][commonFct][sh] += vDCa[sh]*(Kd1 - Kd2)/(2*eps);
248 for(
size_t ip = 0;
ip < nip; ++
ip)
249 for(
size_t fct = 0; fct <
m_spDDIC->num_fct(); ++fct)
253 for(
size_t sh = 0; sh < this->num_sh(commonFct); ++sh)
261 x[0] = pH; x[1] = vDIC[
ip] + eps; x[2] = I; x[3] = vCa[
ip]; x[4] = vAl[
ip]; x[5] = vSO4[
ip];
266 x[0] = pH; x[1] = vDIC[
ip] - eps; x[2] = I; x[3] = vCa[
ip]; x[4] = vAl[
ip]; x[5] = vSO4[
ip];
269 vvvDeriv[
ip][commonFct][sh] += vDDIC[sh]*(Kd1 - Kd2)/(2*eps);
275 for(
size_t ip = 0;
ip < nip; ++
ip)
276 for(
size_t fct = 0; fct <
m_spDSO4->num_fct(); ++fct)
280 for(
size_t sh = 0; sh < this->num_sh(commonFct); ++sh)
284 eps1 = eps2 = 1e-3*vSO4[
ip];
294 x[0] = pH; x[1] = vDIC[
ip]; x[2] = I; x[3] = vCa[
ip]; x[4] = vAl[
ip]; x[5] = vSO4[
ip] + eps1;
299 x[0] = pH; x[1] = vDIC[
ip]; x[2] = I; x[3] = vCa[
ip]; x[4] = vAl[
ip]; x[5] = vSO4[
ip] - eps2;
302 vvvDeriv[
ip][commonFct][sh] += vDSO4[sh]*(Kd1 - Kd2)/(eps1 + eps2);
308 for(
size_t ip = 0;
ip < nip; ++
ip)
309 for(
size_t fct = 0; fct <
m_spDAl->num_fct(); ++fct)
313 for(
size_t sh = 0; sh < this->num_sh(commonFct); ++sh)
317 eps1 = eps2 = 1e-3*vAl[
ip];
327 x[0] = pH; x[1] = vDIC[
ip]; x[2] = I; x[3] = vCa[
ip]; x[4] = vAl[
ip] + eps1; x[5] = vSO4[
ip];
332 x[0] = pH; x[1] = vDIC[
ip]; x[2] = I; x[3] = vCa[
ip]; x[4] = vAl[
ip] - eps2; x[5] = vSO4[
ip];
335 vvvDeriv[
ip][commonFct][sh] += vDDIC[sh]*(Kd1 - Kd2)/(eps1 + eps2);
parameterString s
Definition Biogas.lua:2
const MathVector< dim > & ip(size_t s, size_t ip) const
void set_num_input(size_t num)
size_t input_common_fct(size_t i, size_t fct) const
virtual void set_input(size_t i, SmartPtr< ICplUserData< dim > > input, SmartPtr< UserDataInfo > info)
Definition smile_cloud.hpp:15
double interpolate(double *x, int k)
Definition smile_cloud.cpp:68
SmartPtr< DependentUserData< number, dim > > m_spDCa
Definition smile_Kd.hpp:343
SmartPtr< CplUserData< number, dim > > m_spS
Definition smile_Kd.hpp:340
SmartPtr< CplUserData< number, dim > > m_spSO4
Definition smile_Kd.hpp:346
const number m_entry
Definition smile_Kd.hpp:350
StdDataLinker< SmartKd< dim >, number, dim > base_type
Definition smile_Kd_eps.hpp:20
SmartPtr< DependentUserData< number, dim > > m_spDAl
Definition smile_Kd.hpp:349
SmartPtr< CplUserData< number, dim > > m_spDIC
Definition smile_Kd.hpp:344
SmartPtr< CplUserData< number, dim > > m_spCa
Definition smile_Kd.hpp:342
SmartPtr< CplUserData< number, dim > > m_spH
Definition smile_Kd.hpp:338
void evaluate(number &Kd, const MathVector< dim > &globIP, number time, int si) const
Definition smile_Kd_eps.hpp:60
static void compute_I_pH_m3(number s, number H, number Ca, number Al, number DIC, number SO4, number &I, number &pH)
Recompute the concentration from per m^3 to per l.
Definition smile_Kd_eps.hpp:24
void evaluate(number vKd[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< refDim > vLocIP[], const size_t nip, LocalVector *u, const MathMatrix< refDim, dim > *vJT=NULL) const
Definition smile_Kd_eps.hpp:87
SmartKd(Cloud *cloud, SmartPtr< CplUserData< number, dim > > spH, SmartPtr< CplUserData< number, dim > > spS, SmartPtr< CplUserData< number, dim > > spCa, SmartPtr< CplUserData< number, dim > > spDIC, SmartPtr< CplUserData< number, dim > > spSO4, SmartPtr< CplUserData< number, dim > > spAl, number entry)
Definition smile_Kd_eps.hpp:33
SmartPtr< CplUserData< number, dim > > m_spAl
Definition smile_Kd.hpp:348
void eval_and_deriv(number vKd[], const MathVector< dim > vGlobIP[], number time, int si, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< refDim > vLocIP[], const size_t nip, LocalVector *u, bool bDeriv, int s, std::vector< std::vector< number > > vvvDeriv[], const MathMatrix< refDim, dim > *vJT=NULL) const
Definition smile_Kd_eps.hpp:123
SmartPtr< DependentUserData< number, dim > > m_spDS
Definition smile_Kd.hpp:341
SmartPtr< DependentUserData< number, dim > > m_spDDIC
Definition smile_Kd.hpp:345
SmartPtr< DependentUserData< number, dim > > m_spDH
Definition smile_Kd.hpp:339
SmartPtr< DependentUserData< number, dim > > m_spDSO4
Definition smile_Kd.hpp:347
Cloud * m_cloud
Definition smile_Kd.hpp:337
value_type & entry(std::size_t row, std::size_t col)
void Compute_I_pH(number s, number H, number Ca, number Al, number DIC, number SO4, number &I, number &pH)
Definition smile_chem_eq.cpp:24
const double NaCl_sat
Definition smile_chem_eq.hpp:55