Quote:
Code:
newPatchValues[i] = -T.boundaryField()[patchID].snGrad()[i]; Code:
newPatchValues[i] = -T.boundaryField()[patchID].snGrad()()[i]; Code:
const scalarField patchTSnGrad = T.boundaryField()[patchID].snGrad(); |
Thank you very much. I have some more questions.
1) If I need to perform mathematical operations (like log, exp, etc) to calculate new T from grad and old T. I have errors because of the different kind of variables. How can i solve it? 2) wich solver I have to select in order to verify the convergence of the BC?. Or the only change is modifying while (simple.correct Non Orthogonal())? |
Quote:
Quote:
Philip |
Quote:
Quote:
|
hi Pillip,
Your posts on updating boundary condition on each iteration was very helpful to me. I am implementing a new solver using the icoFoam solver to handle the fluid-solid interaction (Vortex induced vibration). The vibration of the solid is taken into the account by assuming the fluid is in a non-inertial frame vibrate on opposite to the solid motion while the solid stay still. The solid motion due to the fluid forces are solve inside the solver and update the boundary condition accordingly in each iteration. My question: Since fluid is in a non-inertial frame the acceleration of the frame needs to add into the navier stokes equations. For that I defined a field variable ddy. This accelaration is a uniform value across the fluid. I can update the boundary condition as you said. Can you please tell me how to update the internal field as well? :( I have defined the internal field initially as a uniform value. Many thanks, Methma |
Hi,
This is an old thread but am trying to do the same thing, so posting my doubt here. I am using OpenFOAM 2.4.0 and using pisoFoam solver. I want to change the fixedGradient B.C at each time loop. So I followed what was suggested here: Code:
fixedGradientFvPatchVectorField& wallPatch = refCast<fixedGradientFvPatchVectorField>(U.boundaryField()[patchID]); dU_dy is some "double" variable for which I calculate something. But I get this error: "fixedGradientFvPatchVectorField’ was not declared in this scope" Please suggest where am I going wrong. Thank you. |
Quote:
|
Hi Bernhard,
I have in included in myfile: #include "fixedGradientFvPatchField.H" Still am gettinhe the error. Just for your reference an pasting the start part of my file here. insertModification.H is where I am trying my thing. Code:
|
Quote:
|
Quote:
Can you post your code segment? I think the problem is "snGrad()" returns a "tmp" of a field, so either you modify the code to be: Code:
newPatchValues[i] = -T.boundaryField()[patchID].snGrad()()[i]; Code:
const scalarField TsnGrad= T.boundaryField()[patchID].snGrad(); Philip |
Hi Bernhard,
It is working. Was indeed a spell typo. Thanks a lot for your help. Hi Philip, It seems the error was because of a typo. Here is a section of my code: Code:
label patchID = mesh.boundaryMesh().findPatchID("channelWall"); Thank you. |
Hi,
I have a doubt related to my last post. Code:
const fixedGradientFvPatchVectorField& wallPatch = refCast<fixedGradientFvPatchVectorField>(U.boundaryField()[patchID]); Code:
Face number 0 |
Quote:
The "==" operator is just necessary when assigning the value to an entire fixedValue-type boundary condition. Philip |
Hi Philip,
Thank you so much for the reply. I changed '==' to '=', then it gave me the following error: Code:
error: passing ‘const Foam::Vector<double>’ as ‘this’ argument discards qualifiers [-fpermissive] Code:
fixedGradientFvPatchVectorField& wallPatch = refCast<fixedGradientFvPatchVectorField>(U.boundaryField()[patchID]); Suman |
Modified pisoFoam for pitzDaily - solver blowing up !!
2 Attachment(s)
Hi there,
Am having some problem in solving flow over backward facing step in OpenFOAM. I am using LES and Smagorinsky Model. At start it all goes well but after some time utau values at the wall starts increasing and the deltaT of simulation goes on decreasing (till if falls to 10^-12 or so order). I cannot detect what is the problem. I have modified the pisoFoam solver so impose stress boundary condition using the 'fixedGradient' feature of OpenFOAM. Am attaching my required files here. Please have a look and suggest where am I going wrong. Will be waiting for a reply. Attachment 51068 Attachment 51069 |
Hi there,
I think the problems are coming with the pressure solver settings. At t=0.01 pressure values are about -120 at the inlet and then increases linearly to close to zero at the outlet. But at T=0.05, it falls down to -4000 approx. Obviously in an incompressible flow, the absolute value of pressure does not matter, it is the gradient that matters. But what I am not understanding are such low values. Considering inlet velocity has a magnitude of 10 in the x direction (which is max amongst all 3 directions), a value of -50 to -70 may still be understandable but -4000, am not getting at all. Not understanding why the pressure field is behaving such. Maybe that is triggering the problem. |
Hi,
Back again with an update on this same issue. So to start with, setting the gradient at the wall was not so much of a good idea it seems. Somehow the wall normal velocity was being calculated to be a non zero value at the wall. This might be one of the reasons for the solver to blow up in that manner. The modified code I am using now, uses fixedValue (0 0 0) as a boundary condition at the wall and in the modified solver, I calculate the velocity at the wall using the gradient and set the velocity. The solver now runs properly and does not blow up. The only issue am facing with this is, the reynolds stress when calculated comes out to be very less; flow is not becoming turbulent only. Am wondering if it's an issue with the gradient schemes being used or not. If anyone has any views on this, it will be really helpful. So the question is, what is the best gradient scheme to be used for solving incompressible turbulent flow (using LES) in openFOAM? Sorry for maintaining two threads for the same topic. I will from now on post the updates on one particular thread itself: Link: http://www.cfd-online.com/Forums/ope...tml#post623038 |
Dear Suman,
I have a similar problem, that is my piece of code Quote:
Quote:
error: no match for ‘operator==’ (operand types are ‘const Foam::fvPatchField<double>’ and ‘Foam::scalarField {aka Foam::Field<double>}’) Index[0][0].boundaryField()[patchi] == newPatchValues; If I substitute Quote:
Quote:
error: passing ‘const Foam::fvPatchField<double>’ as ‘this’ argument of ‘void Foam::fvPatchField<Type>::operator=(const Foam::UList<T>&) [with Type = double]’ discards qualifiers [-fpermissive] Index[0][0].boundaryField()[patchi] = newPatchValues; It seems to be the same problem as you, but I do not have any const! Any idea? Simone |
Quote:
I post here the same problem that I posted in an other thread since here it is older but seems more appropriate ... I have a similar problem, that is my piece of code Quote:
Quote:
error: no match for ‘operator==’ (operand types are ‘const Foam::fvPatchField<double>’ and ‘Foam::scalarField {aka Foam::Field<double>}’) Index[0][0].boundaryField()[patchi] == newPatchValues; If I substitute Quote:
Quote:
error: passing ‘const Foam::fvPatchField<double>’ as ‘this’ argument of ‘void Foam::fvPatchField<Type>::operator=(const Foam::UList<T>&) [with Type = double]’ discards qualifiers [-fpermissive] Index[0][0].boundaryField()[patchi] = newPatchValues; It seems to be the same problem as you, but I do not have any const! Any idea? Simone |
Hi Simone,
This error: Code:
error: passing ‘const Foam::fvPatchField<double>’ as ‘this’ argument of ‘void Foam::fvPatchField<Type>::operator=(const Foam::UList<T>&) [with Type = double]’ discards qualifiers [-fpermissive] From this code: Code:
PtrList<PtrList<volScalarField> > Index(yindex.size()); Are you sure this is the code you are compiling? did you, for example, post "simplified" code? If possible I would suggest making a very simple OpenFOAM utility that shows this compilation problem and then upload this for others to try. Philip |
All times are GMT -4. The time now is 23:55. |