codedFixedValue boundaries in parallel
Hello,
I'm using the codedFixedValue to set the pressure on the outlet on my case (flowRate at the inlet, pressure on the outlets). I used the flowRate on the outlets to set the pressure. When the run is sequential, everything works fine but in parallel, the pressure isn't applied correctly. My codeDict: Code:
Code:
--> FOAM Warning : I guess I'm reading and writing the pressure and flowRate correctly but I don't really know what to do. edit : I think the problem is only the access of the data on the processor patch and not the whole BC ; how can I get these data ? If someone is able to help, thank you a lot. Florian |
I think you have to use the OpenFOAM reduce functions to collect the data of all processors. These examples should help:
http://www.cfd-online.com/Forums/ope...tml#post429245 https://github.com/OpenFOAM/OpenFOAM...patchAverage.C |
Thank you for the answer.
Actually, I'm a bit lost : I'm using the codedFixedValue BC and the structure of the code is quite different from what I see in the "real" BCs codes. For example, to get the patch area, I do : Code:
dimensionedScalar area("area",dimless, gSum(patch().magSf())); I tried to assign on cpu for each outlets but it simply crashes... |
Quote:
|
Ahem, I totally missed that obviously... Thank you for noticing, I'll try with the global sum and see how it behaves.
---------- edit Thank you very much, my results are identical between sequential and parallel runs. Best regards, Florian |
I am using codedFixedValue bc for implementing ΔV=0 ;where V=x2+y2+z2
my boundarycondition at 0/phi is: inlet { type codedFixedValue; value uniform 0; redirectType velocitySquareInlet; code #{ const fvPatch& boundaryPatch = patch(); const vectorField& Cf = boundaryPatch.Cf(); scalarField& field = *this; forAll(Cf, faceI) { ( (Cf[faceI].x()=0) && (Cf[faceI].y()=0) && (Cf[faceI].z()=0) ) { field[faceI] = ((Cf[faceI].x()*Cf[faceI].x()) +(Cf[faceI].y()*Cf[faceI].y()) +(Cf[faceI].z()*Cf[faceI].z())); } } #}; and I will have following error at terminal Using dynamicCode for patch inlet on field phi at line 25 in "/home/sachin/OpenFOAM/Conduction/charge-20/0/phi.boundaryField.inlet" Creating new library in "dynamicCode/velocitySquareInlet/platforms/linux64GccDPInt32Opt/lib/libvelocitySquareInlet_f5eecc7ba736b15b9d60f3aa108 fc0cf20d513de.so" Invoking "wmake -s libso /home/sachin/OpenFOAM/Conduction/charge-20/dynamicCode/velocitySquareInlet" wmakeLnInclude: linking include files to ./lnInclude Making dependency list for source file fixedValueFvPatchFieldTemplate.C /home/sachin/OpenFOAM/Conduction/charge-20/0/phi.boundaryField.inlet: In member function virtual void Foam::velocitySquareInletFixedValueFvPatchScalarFi eld::updateCoeffs(): /home/sachin/OpenFOAM/Conduction/charge-20/0/phi.boundaryField.inlet:39:35: error: assignment of read-only location (&(& Cf)->Foam::Field<Foam::Vector<double> >::<anonymous>.Foam::List<Foam::Vector<double> >::<anonymous>.Foam::UList<T>:perator[]<Foam::Vector<double> >(faceI))->Foam::Vector<Cmpt>::x<double>() /home/sachin/OpenFOAM/Conduction/charge-20/0/phi.boundaryField.inlet:40:35: error: assignment of read-only location (&(& Cf)->Foam::Field<Foam::Vector<double> >::<anonymous>.Foam::List<Foam::Vector<double> >::<anonymous>.Foam::UList<T>:perator[]<Foam::Vector<double> >(faceI))->Foam::Vector<Cmpt>::y<double>() /home/sachin/OpenFOAM/Conduction/charge-20/0/phi.boundaryField.inlet:41:35: error: assignment of read-only location (&(& Cf)->Foam::Field<Foam::Vector<double> >::<anonymous>.Foam::List<Foam::Vector<double> >::<anonymous>.Foam::UList<T>:perator[]<Foam::Vector<double> >(faceI))->Foam::Vector<Cmpt>::z<double>() /home/sachin/OpenFOAM/Conduction/charge-20/0/phi.boundaryField.inlet:43:17: error: expected ; before { token /home/sachin/OpenFOAM/Conduction/charge-20/0/phi.boundaryField.inlet:34:26: warning: unused variable field [-Wunused-variable] /opt/openfoam4/wmake/rules/General/transform:8: recipe for target 'Make/linux64GccDPInt32Opt/fixedValueFvPatchFieldTemplate.o' failed make: *** [Make/linux64GccDPInt32Opt/fixedValueFvPatchFieldTemplate.o] Error 1 --> FOAM FATAL IO ERROR: Failed wmake "dynamicCode/velocitySquareInlet/platforms/linux64GccDPInt32Opt/lib/libvelocitySquareInlet_f5eecc7ba736b15b9d60f3aa108 fc0cf20d513de.so" file: /home/sachin/OpenFOAM/Conduction/charge-20/0/phi.boundaryField.inlet from line 25 to line 30. From function void Foam::codedBase::createLibrary(Foam::dynamicCode&, const Foam::dynamicCodeContext&) const in file db/dynamicLibrary/codedBase/codedBase.C at line 206. FOAM exiting Does anyone know the solution? Thanks in advance!!!!! |
solve the problem....
inlet { type codedFixedValue; value uniform 0; redirectType velocitySquareInlet; code #{ const fvPatch& boundaryPatch = patch(); const vectorField& Cf = boundaryPatch.Cf(); scalarField& field = *this; forAll(Cf, faceI) { { field[faceI] = ((Cf[faceI].x()*Cf[faceI].x()) +(Cf[faceI].y()*Cf[faceI].y()) +(Cf[faceI].z()*Cf[faceI].z())); } } #}; solve it!!!! |
All times are GMT -4. The time now is 16:02. |