|
[Sponsors] | |||||
dividing a dimensioned vectorfield by a dimensioned scalar |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
|
|
|
#1 |
|
New Member
Wiebke Scholz
Join Date: Feb 2021
Posts: 2
Rep Power: 0 ![]() |
Hi,
I am aiming to write a chemistry-solver (I am still with OpenFoam v4.1) , that is solving the reaction and scalar transport on a (RANS averaged turbulent) incompressible flow field, that is already in steady state. Therefore I need to solve the YEqn only, but adjust it by giving it a reaction source term. Since I am working with incompressible flow, the dimensions of the terms are all in s⁻¹. But dimension of reaction->R(Yi) is in kgm⁻³s⁻¹. Therefore I would like to calculate volScalarField& reactionRate = (reaction->R(Yi)) / rhoRef; with 'rhoRef' being a scalar with dimensions kgm⁻³ to end up with reactionRate in dimension s⁻¹. But when I try, it doesn't compile and gives me the error no match for ‘operator/’ (operand types are ‘Foam::tmp<Foam::fvMatrix<double> >’ and ‘Foam::dimensionedScalar {aka Foam::dimensioned<double>}’) Because I didn't find a lot of information on this in the OpenFOAM programmers' guide, I naively thought, this should work, but it seems like I was wrong. Maybe you have an idea, on how to fix this? Thanks already in advance! Wiebke |
|
|
|
|
|
|
|
|
#2 |
|
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Bad Wörishofen
Posts: 2,716
Blog Entries: 6
Rep Power: 53 ![]() ![]() ![]() |
The problem you encounter here is that the ::R() function will not return a volScalarField but it will rather be a fvScalarMatrix and for the fvScalarMatrix we don´t have the operator/ defined. Out of the box, I am not sure about the conversions implemented. However, I don´t think that even this line will work:
Code:
volScalarField& reactionRate = reaction->R(Yi)
__________________
Keep foaming, Tobias Holzmann |
|
|
|
|
|
|
|
|
#3 |
|
New Member
Wiebke Scholz
Join Date: Feb 2021
Posts: 2
Rep Power: 0 ![]() |
Hi Tobias,
thanks for the quick answer. In that case, it is probably best to leave the result of ::R() as it is and multiply all the other fields in the equation with a constant density. I just tried it and that seems to work. Thanks for clarifying the types there. Wiebke |
|
|
|
|
|
|
|
|
#4 |
|
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Bad Wörishofen
Posts: 2,716
Blog Entries: 6
Rep Power: 53 ![]() ![]() ![]() |
A work around could be to make it in that way:
Code:
fvScalarMatrix reactionRates = reaction->R();
fvScalarMatrix tmp(reactionRates.size(), dimensionSet("tmp", dimensions(Your Dimensions), scalar(0)); // Not sure about the constructor of that class right now
// Create loop and copy only the data without the units into the new one.
__________________
Keep foaming, Tobias Holzmann |
|
|
|
|
|
![]() |
| Tags |
| dimensioned scalars, dimensioned vectorfields, incompressible flow, reaction |
| Thread Tools | Search this Thread |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| problem during mpi in server: expected Scalar, found on line 0 the word 'nan' | muth | OpenFOAM Running, Solving & CFD | 3 | August 27, 2018 05:18 |
| Division by zero exception - loop over scalarField | Pat84 | OpenFOAM Programming & Development | 6 | February 18, 2017 06:57 |
| Issue symmetryPlane 2.5d extruded airfoil simulation | 281419 | OpenFOAM Running, Solving & CFD | 5 | November 28, 2015 14:09 |
| Diverging solution in transonicMRFDyMFoam | tsalter | OpenFOAM Running, Solving & CFD | 30 | July 7, 2014 07:20 |
| compressible flow in turbocharger | riesotto | OpenFOAM | 50 | May 26, 2014 02:47 |