50 int x0_,
int x1_,
int y0_,
int y1_,
int z0_,
int z1_,
51 const std::vector<T>& stoichiometricCoeff_,
52 const std::vector<T> latticeReactionCoeff_,
53 const std::vector<T>& react_order_,
55 : x0(x0_), x1(x1_), y0(y0_), y1(y1_), z0(z0_), z1(z1_), stoichiometricCoeff(stoichiometricCoeff_), latticeReactionCoeff(latticeReactionCoeff_),
56 react_order(react_order_), partners(partners_) {
57 this->
getName() =
"ConcentrationAdvectionDiffusionCouplingPostProcessor3D";
58 reaction_number =
static_cast<int>(latticeReactionCoeff.size());
59 component_number =
static_cast<int>(partners.size())+1;
60 for (
int i = 0; i<component_number;i++){
61 tpartners.emplace_back(
79 int x0_,
int x1_,
int y0_,
int y1_,
int z0_,
int z1_)
override {
81 int newX0, newX1, newY0, newY1, newZ0, newZ1;
83 x0, x1, y0, y1, z0, z1,
84 x0_, x1_, y0_, y1_, z0_, z1_,
85 newX0, newX1, newY0, newY1, newZ0, newZ1) ) {
87 for (
int iX=newX0; iX<=newX1; ++iX) {
88 for (
int iY=newY0; iY<=newY1; ++iY) {
89 for (
int iZ=newZ0; iZ<=newZ1; ++iZ) {
92 conc.emplace_back(blockLattice.
get(iX,iY, iZ).computeRho());
93 for (
int iter_component = 0; iter_component<component_number-1; ++ iter_component){
94 conc.emplace_back(tpartners[iter_component]->get(iX,iY,iZ).computeRho());
97 T lambda[reaction_number];
99 for (
int iter_reaction = 0; iter_reaction<reaction_number; ++ iter_reaction){
100 lambda[iter_reaction] = 0;
102 for(
int iter_component = 0; iter_component <component_number; ++ iter_component){
104 reaction_rate = reaction_rate*(
util::pow(conc[iter_component],react_order[iter_reaction*component_number+iter_component]));
107 lambda[iter_reaction] = reaction_rate*latticeReactionCoeff[iter_reaction];
110 for (
int iter_component = 0; iter_component<component_number; ++ iter_component){
112 for (
int iter_reaction = 0; iter_reaction<reaction_number; ++ iter_reaction){
113 temp_source = temp_source + stoichiometricCoeff[iter_reaction*component_number+iter_component]*lambda[iter_reaction];
115 if (iter_component == 0){
116 blockLattice.
get(iX,iY,iZ).template setField<descriptors::SOURCE>(
120 tpartners[iter_component-1]->get(iX,iY,iZ).template setField<descriptors::SOURCE>(