CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Bugs (https://www.cfd-online.com/Forums/openfoam-bugs/)
-   -   reconstructParMesh not working with an axisymetric case (https://www.cfd-online.com/Forums/openfoam-bugs/64223-reconstructparmesh-not-working-axisymetric-case.html)

francesco May 4, 2009 06:09

reconstructParMesh not working with an axisymetric case
 
Hi everyone,

I'm trying to solve a problem with the computation of an internal combustion engine. I'm using an axisymetric geometry (with wedge boundary type for front and back).

I have tested this geometry with engineFoam and everything is working fine. Then I tested the reconstructParMesh tool (test for another application based on engineFoam but using layering) and it gives me the following error:

Code:

Create time

This is an experimental tool which tries to merge individual processor
meshes back into one master mesh. Use it if the original master mesh has
been deleted or if the processor meshes have been modified (topology change).
This tool will write the resulting mesh to a new time step and construct
xxxxProcAddressing files in the processor meshes so reconstructPar can be
used to regenerate the fields on the master mesh.

Not well tested & use at your own risk!

Merge tolerance : 1e-06
Write tolerance : 1e-06
Doing geometric matching on correct procBoundaries only.
This assumes a correct decomposition.
Found 2 processor directories

Reading database "kivaAxis/processor0"
Reading database "kivaAxis/processor1"
Setting master time to -15

Reading points from "kivaAxis/processor0" for time = -15

Reading points from "kivaAxis/processor1" for time = -15

Overall mesh bounding box  : (0 -0.01 0.0823903) (0.1 0.01 0.1)
Relative tolerance        : 1e-06
Absolute matching distance : 1.0349e-07

Constructing empty mesh to add to.

--> FOAM Warning :
    From function boundBox::boundBox(const pointField& points)
    in file meshes/boundBox/boundBox.C at line 52
    Cannot find bounding box for zero sized pointField, returning zero
Reading mesh to add from "kivaAxis/processor0" for time = -15

Adding to master mesh

Segmentation fault

I have tested the exact same geometry but only replacing wedge by empty and the reconstructParMesh works fine.

Any idea of what is going wrong?

francesco May 6, 2009 11:33

I've slightly modified the wedgePolyPatch.C file to avoid using the initTransform function when cloning the empty mesh.
But now that reconstructParMesh is working, reconstructPar is not with again a segmentation fault. Perhaps, it is link to the layering now.
Does someone have any idea?

Thank you.

Francesco.

francesco May 7, 2009 05:18

There is still a problem when reconstructPar is rereading the topology when it changes.

Does anyone see where it comes from?

francesco May 8, 2009 03:28

Here is what I have when I run reconstructPar with gdb.

Any help would be greatly appreciated.

Program received signal SIGSEGV, Segmentation fault.
0x00002ab21f33223a in Foam::HashTable<Foam::regIOobject*, Foam::word, Foam::string::hash>::find (this=0x13aabc60, key=@0x13ad8d48) at lnInclude/HashTable.C:138
138 for (hashedEntry* n=table_[ii]; n; n=n->next_)
(gdb) n
Foam::sigSegv::sigSegvHandler () at signals/sigSegv.C:38
38 void Foam::sigSegv::sigSegvHandler(int)
(gdb) where
#0 Foam::sigSegv::sigSegvHandler () at signals/sigSegv.C:38
#1 <signal handler called>
#2 0x00002ab21f33223a in Foam::HashTable<Foam::regIOobject*, Foam::word, Foam::string::hash>::find (this=0x13aabc60, key=@0x13ad8d48) at lnInclude/HashTable.C:138
#3 0x00002ab21f33099c in Foam::objectRegistry::checkOut (this=0x13aabc00, io=@0x13ad8d40) at db/objectRegistry/objectRegistry.C:156
#4 0x00002ab21f32b229 in Foam::regIOobject::checkOut (this=0x13ad8d40) at db/regIOobject/regIOobject.C:160
#5 0x00002ab21f32b890 in ~regIOobject (this=0x13ad8d40) at db/regIOobject/regIOobject.C:121
#6 0x0000000000469176 in ~IOList (this=0x13ad8d40) at /home/term/contino/OpenFOAM/OpenFOAM-1.5-dev/src/OpenFOAM/lnInclude/IOList.C:95
#7 0x0000000000465d10 in Foam::autoPtr<Foam::IOList<int> >::reset (this=0x7fff8ddebd70, p=0x0) at /home/term/contino/OpenFOAM/OpenFOAM-1.5-dev/src/OpenFOAM/lnInclude/autoPtrI.H:91
#8 0x0000000000465d38 in Foam::autoPtr<Foam::IOList<int> >::clear (this=0x7fff8ddebd70) at /home/term/contino/OpenFOAM/OpenFOAM-1.5-dev/src/OpenFOAM/lnInclude/autoPtrI.H:101
#9 0x0000000000465d4f in ~autoPtr (this=0x7fff8ddebd70) at /home/term/contino/OpenFOAM/OpenFOAM-1.5-dev/src/OpenFOAM/lnInclude/autoPtrI.H:50
#10 0x00000000004643fa in Foam::processorMeshes::read (this=0x7fff8dded5c0) at processorMeshes.C:83
#11 0x0000000000464c13 in Foam::processorMeshes::readUpdate (this=0x7fff8dded5c0) at processorMeshes.C:192
#12 0x00000000004764b0 in main (argc=1, argv=0x7fff8ddee068) at reconstructPar.C:131


Francesco.

francesco May 8, 2009 05:49

Here are the few lines before the segmentation fault when activating the debug switch on objectRegistry.

Code:

Constructing IOobject called region0 of type IOobject
objectRegistry::checkIn(regIOobject&) : Hesselprocessor0 : checking in region0
Constructing IOobject called points of type IOobject
Constructing IOobject called points of type IOobject
objectRegistry::checkIn(regIOobject&) : region0 : checking in points
Constructing IOobject called faces of type IOobject
Constructing IOobject called faces of type IOobject
objectRegistry::checkIn(regIOobject&) : region0 : checking in faces
Constructing IOobject called faces of type IOobject
Constructing IOobject called owner of type IOobject
objectRegistry::checkIn(regIOobject&) : region0 : checking in owner
Constructing IOobject called faces of type IOobject
Constructing IOobject called neighbour of type IOobject
objectRegistry::checkIn(regIOobject&) : region0 : checking in neighbour
Constructing IOobject called boundary of type IOobject
Constructing IOobject called boundary of type IOobject
objectRegistry::checkIn(regIOobject&) : region0 : checking in boundary
Constructing IOobject called pointZones of type IOobject
Constructing IOobject called pointZones of type IOobject
objectRegistry::checkIn(regIOobject&) : region0 : checking in pointZones
Constructing IOobject called faceZones of type IOobject
Constructing IOobject called faceZones of type IOobject
objectRegistry::checkIn(regIOobject&) : region0 : checking in faceZones
Constructing IOobject called cellZones of type IOobject
Constructing IOobject called cellZones of type IOobject
objectRegistry::checkIn(regIOobject&) : region0 : checking in cellZones
Constructing IOobject called fvSchemes of type IOobject
objectRegistry::checkIn(regIOobject&) : region0 : checking in fvSchemes
Constructing IOobject called fvSolution of type IOobject
objectRegistry::checkIn(regIOobject&) : region0 : checking in fvSolution
Constructing IOobject called meshPhi of type IOobject
objectRegistry::checkIn(regIOobject&) : region0 : checking in meshPhi
Constructing IOobject called meshPhi_0 of type IOobject
IOobject::headerOk() : file "/home/term/bberger/OpenFOAM/bberger-1.5-dev/run/tutorials/dieselEngineFoamLayered/Hessel/processor0/-155/meshPhi_0" could not be opened
Constructing IOobject called V0 of type IOobject
Constructing IOobject called V of type IOobject
objectRegistry::checkIn(regIOobject&) : region0 : checking in V
Destroying regIOobject called fvSolution of type regIOobject in directory "/home/term/bberger/OpenFOAM/bberger-1.5-dev/run/tutorials/dieselEngineFoamLayered/Hessel/processor0/system"
objectRegistry::checkOut(regIOobject&) : region0 : checking out fvSolution
Destroying regIOobject called fvSchemes of type regIOobject in directory "/home/term/bberger/OpenFOAM/bberger-1.5-dev/run/tutorials/dieselEngineFoamLayered/Hessel/processor0/system"
objectRegistry::checkOut(regIOobject&) : region0 : checking out fvSchemes
Destroying regIOobject called cellZones of type regIOobject in directory "/home/term/bberger/OpenFOAM/bberger-1.5-dev/run/tutorials/dieselEngineFoamLayered/Hessel/processor0/-155/polyMesh"
objectRegistry::checkOut(regIOobject&) : region0 : checking out cellZones
Destroying regIOobject called faceZones of type regIOobject in directory "/home/term/bberger/OpenFOAM/bberger-1.5-dev/run/tutorials/dieselEngineFoamLayered/Hessel/processor0/-155/polyMesh"
objectRegistry::checkOut(regIOobject&) : region0 : checking out faceZones
Destroying regIOobject called pointZones of type regIOobject in directory "/home/term/bberger/OpenFOAM/bberger-1.5-dev/run/tutorials/dieselEngineFoamLayered/Hessel/processor0/-155/polyMesh"
objectRegistry::checkOut(regIOobject&) : region0 : checking out pointZones
Destroying regIOobject called boundary of type regIOobject in directory "/home/term/bberger/OpenFOAM/bberger-1.5-dev/run/tutorials/dieselEngineFoamLayered/Hessel/processor0/-155/polyMesh"
objectRegistry::checkOut(regIOobject&) : region0 : checking out boundary
Destroying regIOobject called neighbour of type regIOobject in directory "/home/term/bberger/OpenFOAM/bberger-1.5-dev/run/tutorials/dieselEngineFoamLayered/Hessel/processor0/-155/polyMesh"
objectRegistry::checkOut(regIOobject&) : region0 : checking out neighbour
Destroying regIOobject called owner of type regIOobject in directory "/home/term/bberger/OpenFOAM/bberger-1.5-dev/run/tutorials/dieselEngineFoamLayered/Hessel/processor0/-155/polyMesh"
objectRegistry::checkOut(regIOobject&) : region0 : checking out owner
Destroying regIOobject called faces of type regIOobject in directory "/home/term/bberger/OpenFOAM/bberger-1.5-dev/run/tutorials/dieselEngineFoamLayered/Hessel/processor0/-155/polyMesh"
objectRegistry::checkOut(regIOobject&) : region0 : checking out faces
Destroying regIOobject called points of type regIOobject in directory "/home/term/bberger/OpenFOAM/bberger-1.5-dev/run/tutorials/dieselEngineFoamLayered/Hessel/processor0/-155/polyMesh"
objectRegistry::checkOut(regIOobject&) : region0 : checking out points
Destroying regIOobject called region0 of type regIOobject in directory "/home/term/bberger/OpenFOAM/bberger-1.5-dev/run/tutorials/dieselEngineFoamLayered/Hessel/processor0/-180"
objectRegistry::checkOut(regIOobject&) : Hesselprocessor0 : checking out region0
Constructing IOobject called pointProcAddressing of type IOobject
objectRegistry::checkIn(regIOobject&) : region0 : checking in pointProcAddressing
Segmentation fault


Here is also another piece of information: in the read function of processorMeshes.C, when I switch the pointProcAdressing (ln 52-67) block with the faceProcAdressing (ln 70-85) one, reconstructPar works for two more directories then crash again with a segmentation fault.

I definetely don't know where this comes from. Anyone to help? Please.


All times are GMT -4. The time now is 07:39.