|
[Sponsors] |
April 7, 2009, 04:48 |
MRFSimpleFoam with cyclicGgi in parallel
|
#1 |
Senior Member
Hannes Kröger
Join Date: Mar 2009
Location: Rostock, Germany
Posts: 124
Rep Power: 18 |
Hello to everyone,
I encounter a problem when I try to use the the cyclicGgi in MRFSimpleFoam in a parallel run (using the latest OF-1.5-dev from SVN). As I have found out, the new GGI-Implementation requires the two cyclic patches to be in two different zones whereas the MRF solver requires them to be in the rotor zone. So, I have defined the two cyclic face zones in the constant/MRFZones dict to be rotating as well (symmm and symmp are the cyclic patch face zones, the corresponding cellZones are empty): 3 ( rotor { patches (PROP); origin origin [0 1 0 0 0 0 0] (0 0 0); axis axis [0 0 0 0 0 0 0] (0 0 1); omega omega [0 0 -1 0 0 0 0] 58.6431; } symmm { patches (); origin origin [0 1 0 0 0 0 0] (0 0 0); axis axis [0 0 0 0 0 0 0] (0 0 1); omega omega [0 0 -1 0 0 0 0] 58.6431; } symmp { patches (); origin origin [0 1 0 0 0 0 0] (0 0 0); axis axis [0 0 0 0 0 0 0] (0 0 1); omega omega [0 0 -1 0 0 0 0] 58.6431; } ) This seems to work in serial, but when I try to run the case in parallel, the following error occurs: Starting time loop Time = 1 smoothSolver: Solving for Ux, Initial residual = 1, Final residual = 0.0591515, No Iterations 2 smoothSolver: Solving for Uy, Initial residual = 1, Final residual = 0.0426731, No Iterations 2 smoothSolver: Solving for Uz, Initial residual = 1, Final residual = 0.0704887, No Iterations 2 [1] [1] [1] given label greater than the number of geometric faces #0 Foam::error:rintStack(Foam::Ostream&) in "/home/kroegeh/OpenFOAM/OpenFOAM-1.5-dev/lib/linux64GccDPOpt/libOpenFOAM.so" #1 Foam::error::abort() in "/home/kroegeh/OpenFOAM/OpenFOAM-1.5-dev/lib/linux64GccDPOpt/libOpenFOAM.so" #2 Foam:olyBoundaryMesh::whichPatch(int) const in "/home/kroegeh/OpenFOAM/OpenFOAM-1.5-dev/lib/linux64GccDPOpt/libOpenFOAM.so" #3 Foam::MRFZone::relativeFlux(Foam::GeometricField<d ouble, Foam::fvsPatchField, Foam::surfaceMesh>&) const in "/home/kroegeh/OpenFOAM/OpenFOAM-1.5-dev/lib/linux64GccDPOpt/libfiniteVolume.so" #4 Foam::MRFZones::relativeFlux(Foam::GeometricField< double, Foam::fvsPatchField, Foam::surfaceMesh>&) const in "/home/kroegeh/OpenFOAM/OpenFOAM-1.5-dev/lib/linux64GccDPOpt/libfiniteVolume.so" #5 main in "/home/kroegeh/OpenFOAM/kroegeh-1.5-dev/applications/bin/linux64GccDPOpt/MRFSimpleFoam" #6 __libc_start_main in "/lib/libc.so.6" #7 Foam::regIOobject::writeObject(Foam::IOstream::str eamFormat, Foam::IOstream::versionNumber, Foam::IOstream::compressionType) const in "/home/kroegeh/OpenFOAM/kroegeh-1.5-dev/applications/bin/linux64GccDPOpt/MRFSimpleFoam" It seems that the MRFZones-Code tries to access some faces that are not present. Is there a nice and elegant way to fix that? Best regards, Hannes |
|
April 9, 2009, 05:55 |
|
#2 |
Senior Member
Hannes Kröger
Join Date: Mar 2009
Location: Rostock, Germany
Posts: 124
Rep Power: 18 |
For those who are interested: I have fixed it by inserting the marked statement below in MRFZones.C (in function "relativeFlux"):
forAll(faces, i) { label facei = faces; if (facei < mesh_.nInternalFaces()) { phi[facei] -= (Omega ^ (Cf[facei] - origin)) & Sf[facei]; } [i] else if (facei < mesh_.nFaces()) { label patchi = mesh_.boundaryMesh().whichPatch(facei); label patchFacei = mesh_.boundaryMesh()[patchi].whichFace(facei); phi.boundaryField()[patchi][patchFacei] -= (Omega ^ (Cf.boundaryField()[patchi][patchFacei] - origin)) & Sf.boundaryField()[patchi][patchFacei]; } } |
|
April 14, 2009, 04:51 |
|
#3 |
Senior Member
BastiL
Join Date: Mar 2009
Posts: 530
Rep Power: 20 |
Hannes,
take into account using the MRF from 1.5.x combined with ggi from 1.5-dev. The latest MRF can use cellZones without Facezones so you can form a cellzone for your mrf and a faceZone for the ggi. Regards. |
|
April 30, 2009, 07:49 |
|
#4 |
New Member
Ravi
Join Date: Apr 2009
Posts: 1
Rep Power: 0 |
Hanes
I am trying to setup a MRF simulaton with ggi. Will it be possible for you to send me your system dictionaries, constant/dictionaries, boundary file and 0/files? Thanks |
|
May 1, 2009, 05:02 |
|
#5 |
Senior Member
Hrvoje Jasak
Join Date: Mar 2009
Location: London, England
Posts: 1,907
Rep Power: 33 |
Fixed - thank you for the bug fix. Apologies - there may be a few more problems like this because the mesh is now a bit more complex.
Hrv
__________________
Hrvoje Jasak Providing commercial FOAM/OpenFOAM and CFD Consulting: http://wikki.co.uk |
|
April 29, 2010, 09:52 |
|
#6 |
Member
Timo K.
Join Date: Feb 2010
Location: University of Stuttgart
Posts: 66
Rep Power: 16 |
Hello everybody,
I also want to run MRFSimpleFoam with cyclicGgi (latest OF-1.5-dev version). Running this job in parallel doesn't work, a single run works. Is there a mistake in my setup or is it a generell problem to run MRF with cyclicGgi in parallel? Thanks in advance Timo |
|
April 29, 2010, 12:21 |
|
#7 |
Senior Member
BastiL
Join Date: Mar 2009
Posts: 530
Rep Power: 20 |
Parallel run should work. Without knowing you setup I would suspect it is more likely to have an error in this than a problem with Paralleisation. How doues your setup look like? How did you decompose your case?
Regards. |
|
April 29, 2010, 13:50 |
|
#8 |
Member
Timo K.
Join Date: Feb 2010
Location: University of Stuttgart
Posts: 66
Rep Power: 16 |
The steps of my setup are:
I. the "makeMesh" file for the setup ####for MRF: cellSet ###choose all cells of rotor setsToZones -noFlipMap cp system/faceSetDict_rotorFaces system/faceSetDict faceSet ###choose all faces of set rotor cp system/faceSetDict_delInlet system/faceSetDict faceSet ###delete faces of patch inlet cp system/faceSetDict_delOutlet system/faceSetDict faceSet ###delete faces of patch outlet ####for cyclicGgi: cp system/faceSetDict_per1 system/faceSetDict faceSet ###create face-zone per1_zone cp system/faceSetDict_per2 system/faceSetDict faceSet ###create face-zone per2_zone setsToZones -noFlipMap II: my constant/MRFzones: 1 ( rotor { patches (hub per1 per2 shroud blade); origin origin [0 1 0 0 0 0 0] (0 0 0); axis axis [0 0 0 0 0 0 0] (0 0 1); omega omega [0 0 -1 0 0 0 0] 100.81; } ) III: my system/decomposeParDict: numberOfSubdomains 2; method metis; globalFaceZones ( per1_zone per2_zone ); metisCoeffs { processorWeights ( 1 1 ); } ... Btw: I checked one setup possibility, I want to tell (single run): if I delete the periodic faces of my set rotor (I), the results at the ggi are nonsens (velocity and pressure profile) If you need some more info, let me know! |
|
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
MRFSimpleFoam Tutorial | bastil | OpenFOAM Running, Solving & CFD | 48 | August 1, 2012 11:00 |
Script to Run Parallel Jobs in Rocks Cluster | asaha | OpenFOAM Running, Solving & CFD | 12 | July 4, 2012 23:51 |
HP MPI warning...Distributed parallel processing | Peter | CFX | 10 | May 14, 2011 07:17 |
IcoFoam parallel woes | msrinath80 | OpenFOAM Running, Solving & CFD | 9 | July 22, 2007 03:58 |
Parallel Computing Classes at San Diego Supercomputer Center Jan. 20-22 | Amitava Majumdar | Main CFD Forum | 0 | January 5, 1999 13:00 |