-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSeparatorCeKernel.C
63 lines (50 loc) · 1.99 KB
/
SeparatorCeKernel.C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
// Created by Armin on 29.10.2020
#include "SeparatorCeKernel.h"
registerMooseObject("BabblerApp", SeparatorCeKernel);
InputParameters SeparatorCeKernel::validParams()
{
InputParameters params = Kernel::validParams();
params.addRequiredParam<Real>("D", "diffusivity");
params.addRequiredParam<Real>("eps", "porosity");
params.addRequiredParam<Real>("K", "conductivity");
params.addRequiredCoupledVar("PhiE", "potential of electrolyte");
return params;
}
SeparatorCeKernel::SeparatorCeKernel(const InputParameters ¶meters)
: Kernel(parameters),
_D(getParam<Real>("D")),
_eps(getParam<Real>("eps")),
_K(getParam<Real>("K")),
_grad_couple_phi2(coupledGradient("PhiE")),
_couple_phi2_var(coupled("PhiE"))
{
Deff = _D * _eps;
Keff = _K * _eps * sqrt(_eps);
}
Real SeparatorCeKernel::computeQpResidual()
{
Real t0 = 0.0107907 + _u[_qp] * 1.48837e-4;
Real dt0 = 1.48837e-4;
return Deff * _grad_u[_qp] * _grad_test[_i][_qp]
- dt0 * Keff * (_grad_couple_phi2[_qp] - (1 - t0) * _grad_u[_qp] / _u[_qp]) * _grad_u[_qp] * _test[_i][_qp];
}
Real SeparatorCeKernel::computeQpJacobian()
{
Real t0 = 0.0107907 + _u[_qp] * 1.48837e-4;
Real dt0 = 1.48837e-4;
return Deff * _grad_phi[_j][_qp] * _grad_test[_i][_qp]
- dt0 * Keff * dt0 * (_grad_u[_qp] / _u[_qp]) * _grad_u[_qp] * _phi[_j][_qp] * _test[_i][_qp]
- dt0 * Keff * (1 - t0) * (_grad_u[_qp] * _grad_u[_qp] / (_u[_qp] * _u[_qp])) * _phi[_j][_qp] * _test[_i][_qp]
+ dt0 * Keff * (1 - t0) * (_grad_u[_qp] / _u[_qp]) * _grad_phi[_j][_qp] * _test[_i][_qp]
- dt0 * Keff * (_grad_couple_phi2[_qp] - (1 - t0) * _grad_u[_qp] / _u[_qp]) * _grad_phi[_j][_qp] * _test[_i][_qp];
}
Real SeparatorCeKernel::computeQpOffDiagJacobian(unsigned int jvar)
{
Real t0 = 0.0107907 + _u[_qp] * 1.48837e-4;
Real dt0 = 1.48837e-4;
if (jvar == _couple_phi2_var)
{
return -dt0 * Keff * _grad_phi[_j][_qp] * _grad_u[_qp] * _test[_i][_qp];
}
return 0.0;
}