CFD Online Discussion Forums (http://www.cfd-online.com/Forums/)
-   OpenFOAM (http://www.cfd-online.com/Forums/openfoam/)
-   -   Transport of active scalars wihtin Operator Splitting Approach (http://www.cfd-online.com/Forums/openfoam/93076-transport-active-scalars-wihtin-operator-splitting-approach.html)

 pbe_cfd October 4, 2011 12:02

Transport of active scalars wihtin Operator Splitting Approach

Hi,

I need to transport n (>>1) active scalar within Oper. Split. Approach. I have a code to solve the reaction step so, what I do is first solving the reaction step for cell based values then solving the transport step. A pseudo code is given here

1. Step: Solve reaction for each cell

for (i=0; i<C[0].size(); i++) // C := PtrList<volScalarField>
// Assign values of all the scalars at the i'th cell to Ci
for ( j=0; j<n; j++)
{
Ci[j]=C[j].internalField()[i]; Ci: is an array of length n, for the values of n Scalar at the i'th cell
}
solveReaction(Ci) // Ci: is an in/output and updated in the routine solveReaction
for ( j=0; j<n; j++)
{
C[j].internalField()[i]=Ci[j]=; Updating the values of C at the i'th cell with the updated values of Ci
}

end

2. Step: Transport each scalar field, C[i]
for (i=0; i<n; i++)
{
solve
(
fvm::ddt(C[i])
+ fvm::div(phi, C[i])
- fvm::laplacian(nuT, C[i]),
mesh.solver("class")
);
}

I implemented this pseudo code by extending scalarTranportFoam. The problem is, although each step works fine independently:
1) Cancel 2. step and update the scalar fields by reaction. Result: OK
2) Cancel 1. step and solve the passive transport problem for n Scalar. Result: OK

When I calculate them together, the results are as if I had not performed the reaction step. What can be the problem??? And, how can it be fixed ???

Evren

PS. I can post or can send the piece of code via e-mail to whom are interested in.

PPS. Boundary values are another problem which is hacked by using symmetryPlane BC for the moment.

 All times are GMT -4. The time now is 02:39.