scalarTransportFoam for arbitrary number of transported scalars
Hi,
I am just taking my first steps programming OF, so please pardon my awkwardly foolish question. The only thing I want to do is extend scalarTransportFoam so that it can solve for an arbitrary number of transported (and independent) scalars. That means, T should not be a volScalarField, but a field of vectors of length N, and accordingly the user should provide the diffusivities also as a vector of length N. Of course it would be possible to solve the different transport equations one after another. But I don't want to do that, since I might need coupling between the different scalars some time later. So how could I achieve that? I tried to define T as a volVectorField, but that seems to always expect a vector of length 3. Is that true? I'd appreciate any help to get me on the right track. Thanks in advance! Andreas |
I don't think it would work as you hope. First of all, the vector idea is not suitable: vectors have direction, and the X vector of T will coincide with the X direction of velocity.
What you are suggesting would require defining a new Type for fvScalarMatrix<Type>, which would be an involved process (a nightmare, actually... you'd have to add to all the fvc, fvm namespaces, and create all the field operators for starters...). Furthermore, I suspect that the algorithm would ultimately need to solve each component individually, so I don't think you'd be saving any computation time by defining this new Type. I wrote a scalarTransportFoam version that solves for an arbitirary number of scalars (individually), listed in a dictionary file. Let me know if you want more details about that. |
Thanks for your quick reply.
Quote:
Quote:
Thanks! Andreas |
1 Attachment(s)
Here's some of the code. I wrote it before I was very comfortable with OF, so it's a little awkward in places. It uses a custom class called "admScalar", which I can't seem to find anymore, but it was just a container - I'm sure you can guess what it was supposed to do.
Also, I grouped all the scalars together to use the same fvSchemes - this simplifies the fvSchemes file, but you don't have to do that. (This is what all that admConvection, admLaplacian, etc.. stuff is all about.) This should at least give you an idea of what to do - especially the part about reading the variables in from a dictionary, and creating a pointer list of the volScalarFields. |
Quote:
Best, |
Now that you mention that, Alberto, I think that's what I used for inspiration when I wrote that code.
|
Thanks for your code snippets!
I'll take a look at them and at the other foam solvers mentioned, and I'll come back if I run into problems... :D |
All times are GMT -4. The time now is 05:14. |