CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Post-Processing (https://www.cfd-online.com/Forums/openfoam-post-processing/)
-   -   Problems with reconstructParMesh and reconstructPar in 15 (https://www.cfd-online.com/Forums/openfoam-post-processing/61335-problems-reconstructparmesh-reconstructpar-15-a.html)

eberberovic January 15, 2009 09:01

Dear all, I have a problem
 
Dear all,

I have a problem in reconstructing a decomposed case of interDyMFoam solver. I calculated the tutorial case damBreakWithObstacle using 4 processors on a 64-bit machine. When doing reconstructParMesh, the mesh seems to be reconstructed, but I always get the following warning, e.g. for reconstructParMesh -time 0.02:

--> 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

Since the mesh seems to be reconstructed, I wonder what this warning is about?



The real problem starts afterwards. When I issue e.g. reconstructPar -time 0.02, I get the following:

Create time

Create mesh for time = 0.02

Time = 0.02

#0 Foam::error::printStack(Foam:http://www.cfd-online.com/OpenFOAM_D...part/proud.gifstream&) in "/home/eberberovic/OpenFOAM/OpenFOAM-1.5_64/lib/linux64GccDPOpt/libOpenFOAM.so"
#1 Foam::sigSegv::sigSegvHandler(int) in "/home/eberberovic/OpenFOAM/OpenFOAM-1.5_64/lib/linux64GccDPOpt/libOpenFOAM.so"
#2 ?? in "/lib64/libc.so.6"
#3 Foam::objectRegistry::checkOut(Foam::regIOobject&) const in "/home/eberberovic/OpenFOAM/OpenFOAM-1.5_64/lib/linux64GccDPOpt/libOpenFOAM.so"
#4 Foam::regIOobject::checkOut() in "/home/eberberovic/OpenFOAM/OpenFOAM-1.5_64/lib/linux64GccDPOpt/libOpenFOAM.so"
#5 Foam::regIOobject::~regIOobject() in "/home/eberberovic/OpenFOAM/OpenFOAM-1.5_64/lib/linux64GccDPOpt/libOpenFOAM.so"
#6 Foam::IOList<int>::~IOList() in "/home/eberberovic/OpenFOAM/OpenFOAM-1.5_64/applications/bin/linux64GccDPOpt/rec onstructPar"
#7 Foam::processorMeshes::read() in "/home/eberberovic/OpenFOAM/OpenFOAM-1.5_64/applications/bin/linux64GccDPOpt/rec onstructPar"
#8 Foam::processorMeshes::readUpdate() in "/home/eberberovic/OpenFOAM/OpenFOAM-1.5_64/applications/bin/linux64GccDPOpt/rec onstructPar"
#9 main in "/home/eberberovic/OpenFOAM/OpenFOAM-1.5_64/applications/bin/linux64GccDPOpt/rec onstructPar"
#10 __libc_start_main in "/lib64/libc.so.6"
#11 Foam::regIOobject::readIfModified() in "/home/eberberovic/OpenFOAM/OpenFOAM-1.5_64/applications/bin/linux64GccDPOpt/rec onstructPar"
./reconstruct: line 4: 19180 Segmentation fault reconstructPar -time 0.02

So I am not able to do the reconstruction of the case. I am asking for help as a not really experienced user. Does anyone know why this happens?

Thanks a lot in advance.

floooo January 15, 2009 11:54

Hi I use a lot reconstructP
 
Hi

I use a lot reconstructParMesh, but I've never seen this error.
I know that there is a option call 'nozero' and which is not documented.

Usage: reconstructParMesh [-noZero] [-region region name] [-fullMatch] [-mergeTol relative merge distance] [-case dir] [-constant] [-latestTime] [-time time] [-help] [-doc] [-srcDoc]

I have no idea of the usage of this option, but try it. There is may be a relation with your error message which talk about 'bounding box for zero'

Florian

mattijs January 15, 2009 14:25

The zero 'bounding box' comes
 
The zero 'bounding box' comes from the algorithm which starts with an empty mesh and adds all the other ones into it. 'noZero' is just a time option.

Do you see the problem in 1.5.x? If so could you put a bug report + testcase on OpenFOAM-bugs?

eberberovic January 16, 2009 08:44

Mattijs, thanks a lot for t
 
Mattijs,

thanks a lot for the response. Unfortunately at the moment I am still not able to update patches from 1.5.x. using git. When there are some changes, I copy them into my 1.5 version and compile manually. I hope that I will be provided with this possibility soon.

But I have found out something else, which might be a clue for you where this "bug" might reside. When I perform the reconstruction from outside the case directory, then I do not get any error messages while reconstructing the fields. For example reconstructParMesh &ndash; case damBreakWithObstacle -time xxx and afterwards reconstructParMesh &ndash; case damBreakWithObstacle -time xxx works fine. I use a small script with these lines for every time step and everything seems to work, only the warning from reconstructing the mesh still persists. But as I understood this is ok?

Reconstruction from inside the case directory always gives me the problem with printStack... in certain (not all) time directories.

Since I do not know if this is a bug, I am posting the case here (same as in the release, only the starting mesh is finer and the criterion for refining/unrefining is a bit different). If I find the same problem in 1.5.x, then I will report a bug.

Best Regards.

eberberovic January 16, 2009 08:47

Here is the case: http://w
 
Here is the case:

http://www.cfd-online.com/OpenFOAM_D...hment_icon.gif damBreakWithObstacle.tgz

francesco April 30, 2009 07:38

I have a similar problem running an application derived from dieselEngineFoam and using engineTopoChanger.

When using reconstructParMesh, I have the following error:


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-07
Write tolerance : 1e-08
Doing geometric matching on correct procBoundaries only.
This assumes a correct decomposition.
Found 2 processor directories

Reading database "Hessel/processor0"
Reading database "Hessel/processor1"
Setting master time to -175

Reading points from "Hessel/processor0" for time = -175

Reading points from "Hessel/processor1" for time = -175

Overall mesh bounding box : (0 -0.01 0.00011442647) (0.1 0.01 0.1)
Relative tolerance : 1e-07
Absolute matching distance : 1.4274848e-08

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 "Hessel/processor0" for time = -175

Adding to master mesh

Segmentation fault


I am not sure where this comes from. My case is axisymmetric does that have any influence?

Thank you for your help.

Francesco

francesco April 30, 2009 07:54

Does the use of engineTopoChanger have an impact on reconstructParMesh?

Francesco.

francesco May 3, 2009 05:28

If the reconstructParMesh doesn't work, is it possible to force writing the ***ProcAdressing during solving time?

Where can I find the files responsible for that part?

Thank you for your help.

Francesco.

francesco May 3, 2009 10:58

2 Attachment(s)
Here is the case directory where the application is not working:

Attachment 227

And the quite simple application derived from dieselEngineFoam and named dieselEngineFoamLayer:

Attachment 228

I hope that anybody will be able to help me.

Francesco.

francesco May 4, 2009 04:49

As I have the same problem with engineFoam, I've analyzed the mesh instead.

It seems that the use of a axisymetric mesh does not work.

I will post a message in the bug section.

WiWo March 8, 2010 12:32

Hello everyone,

I don't know if this thread is still active but I'm posting here because my problem resembles exactly the one Edin is reporting - just in OF-1.6.
I've been running the dambreakWithObstacle case on 6 processors in parallel to test the performance - everything fine so far. But the reconstruction of the result proved to be troublesome.
I can run "reconstructParMesh -mergeTol 1e-06 -time xxx" for every timestep from the case directory or from outside (like Edin explained). But I can not - neither from within the case directory nor from outside - run the reconstructPar utility for a time different than 0. I'm always ending up with the following error:

[cluster damBreakWithObstacleSave]$ reconstructPar
/*---------------------------------------------------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
Build : 1.6-f802ff2d6c5a
Exec : reconstructPar
Date : Mar 08 2010
Time : 18:26:29
Host : brutus2.ethz.ch
PID : 4879
Case : /cluster/home/mavt/wwiedema/OpenFOAM/wolfgang-1.6/tutorials/damBreakWithObstacleSave
nProcs : 1
SigFpe : Enabling floating point exception trapping (FOAM_SIGFPE).

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Create mesh for time = 0.041

Time = 0.001

Reconstructing FV fields

Reconstructing volScalarFields

alpha1
p
alpha1.org

Reconstructing volVectorFields

U

No point fields

No lagrangian fields

Time = 0.021

#0 Foam::error::printStack(Foam::Ostream&) in "/cluster/home/mavt/wwiedema/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so"
#1 Foam::sigSegv::sigSegvHandler(int) in "/cluster/home/mavt/wwiedema/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so"
#2 __restore_rt at sigaction.c:0
#3 Foam::objectRegistry::checkOut(Foam::regIOobject&) const in "/cluster/home/mavt/wwiedema/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so"
#4 Foam::regIOobject::~regIOobject() in "/cluster/home/mavt/wwiedema/OpenFOAM/OpenFOAM-1.6/lib/linux64GccDPOpt/libOpenFOAM.so"
#5 Foam::IOList<int>::~IOList() in "/cluster/home/mavt/wwiedema/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/reconstructPar"
#6 Foam::processorMeshes::read() in "/cluster/home/mavt/wwiedema/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/reconstructPar"
#7 Foam::processorMeshes::readUpdate() in "/cluster/home/mavt/wwiedema/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/reconstructPar"
#8 main in "/cluster/home/mavt/wwiedema/OpenFOAM/OpenFOAM-1.6/applications/bin/linux64GccDPOpt/reconstructPar"
#9 __libc_start_main in "/lib64/libc.so.6"
#10 _start at /usr/src/packages/BUILD/glibc-2.9/csu/../sysdeps/x86_64/elf/start.S:116
Segmentation fault

The odd thing is that there is always a folder 0.001 beeing created which does not contain a polyMesh directory before he screws up.
Does anybody have an idea what is going wrong here - or more likely what I'm doing wrong?

I would appreciate any advice or hint on this issue.
Cheers,
Wolfgang

sega March 9, 2010 16:17

Hi Wolfgang.

Did you use a dynamic mesh?

WiWo March 10, 2010 11:06

Hi Sebastian,

Yes, I used the damBreakWithObstacle tutorial case included in OF-1.6 which employs 'dynamicFvMesh dynamicRefineFvMesh'.
Everything works fine with the case - so decomposition into subdomains and parallel solving. Just when attempting to reconstruct the solution from the information in the subdomains things become tricky.

Best regards,
Wolfgang

sega March 10, 2010 11:24

Quote:

Originally Posted by WiWo (Post 249380)
Hi Sebastian,

Yes, I used the damBreakWithObstacle tutorial case included in OF-1.6 which employs 'dynamicFvMesh dynamicRefineFvMesh'.
Everything works fine with the case - so decomposition into subdomains and parallel solving. Just when attempting to reconstruct the solution from the information in the subdomains things become tricky.

Best regards,
Wolfgang

Yes. You have to apply the reconstructParMesh and reconstructPar alternating for each time step!

I have a small script for that.

Code:

#!/bin/bash
timeList=$(ls processor0/ | awk '$1!="constant"');

for line in $timeList
do
    echo "Recontructing mesh for t = "$line" s";
    reconstructParMesh -time $line > logTmp;

    echo "Reconstructing fields for t = "$line" s";
    reconstructPar -time $line > logTmp;

    echo "";
done

rm logTmp;

Try it!

WiWo March 18, 2010 11:29

Hi Sega,

That was the clue - thank's a lot! I didn't think of running it time step by time step in an alternating fashion.
Your script works also great :-)

Cheers,
Wolfgang

rcastilla June 15, 2010 11:27

Sebastian,

that was exactly wath I was looking for! Thanks a lot.

Robert

Hrushi April 15, 2012 06:25

Quote:

Originally Posted by sega (Post 249382)
Yes. You have to apply the reconstructParMesh and reconstructPar alternating for each time step!

I have a small script for that.

Code:

#!/bin/bash
timeList=$(ls processor0/ | awk '$1!="constant"');

for line in $timeList
do
    echo "Recontructing mesh for t = "$line" s";
    reconstructParMesh -time $line > logTmp;

    echo "Reconstructing fields for t = "$line" s";
    reconstructPar -time $line > logTmp;

    echo "";
done

rm logTmp;

Try it!

Hi Sebastian,

I ran the above script. It reconstructs the mesh but while reconstructing the fields it gives error. I am posting the output result of the script.

Recontructing mesh for t = 0 s


--> FOAM FATAL ERROR:
Your time was specified as 0 but there is no polyMesh/points in that time.
(there is a points file in "constant")
Please rerun with the correct time specified (through the -constant, -time or -latestTime (at your option).


From function reconstructParMesh
in file reconstructParMesh.C at line 449.

FOAM exiting

Reconstructing fields for t = 0 s


--> FOAM FATAL ERROR:
No times selected

From function reconstructPar
in file reconstructPar.C at line 139.

FOAM exiting


Recontructing mesh for t = 0.005 s
Reconstructing fields for t = 0.005 s
#0 Foam::error:rintStack(Foam::Ostream&) in "/Storage1/cfd/OpenFOAM/OpenFOAM-2.1.0/platforms/linux64Gcc45DPOpt/lib/libOpenFOAM.so"
#1 Foam::sigSegv::sigHandler(int) in "/Storage1/cfd/OpenFOAM/OpenFOAM-2.1.0/platforms/linux64Gcc45DPOpt/lib/libOpenFOAM.so"
#2 ?? in "/lib64/libc.so.6"
#3 Foam:bjectRegistry::checkOut(Foam::regIOobject&) const in "/Storage1/cfd/OpenFOAM/OpenFOAM-2.1.0/platforms/linux64Gcc45DPOpt/lib/libOpenFOAM.so"
#4 Foam::regIOobject::~regIOobject() in "/Storage1/cfd/OpenFOAM/OpenFOAM-2.1.0/platforms/linux64Gcc45DPOpt/lib/libOpenFOAM.so"
#5 Foam::IOList<int>::~IOList() in "/Storage1/cfd/OpenFOAM/OpenFOAM-2.1.0/platforms/linux64Gcc45DPOpt/lib/libfiniteVolume.so"
#6 Foam:rocessorMeshes::read() in "/Storage1/cfd/OpenFOAM/OpenFOAM-2.1.0/platforms/linux64Gcc45DPOpt/lib/libreconstruct.so"
#7 Foam:rocessorMeshes::readUpdate() in "/Storage1/cfd/OpenFOAM/OpenFOAM-2.1.0/platforms/linux64Gcc45DPOpt/lib/libreconstruct.so"
#8 main in "/Storage1/cfd/OpenFOAM/OpenFOAM-2.1.0/platforms/linux64Gcc45DPOpt/bin/reconstructPar"
#9 __libc_start_main in "/lib64/libc.so.6"
#10 _start in "/Storage1/cfd/OpenFOAM/OpenFOAM-2.1.0/platforms/linux64Gcc45DPOpt/bin/reconstructPar"
./recd: line 4: 5337 Segmentation fault (core dumped) reconstructPar -time $line >logTmp

Recontructing mesh for t = 0.01 s


After running the script, I have polyMesh directory in all time dumps in my case directory. But there are no fields.

What can be the reason for this?

Hrushikesh

idefix June 5, 2012 10:59

Hello,

Iīve got the same problem
I used interDyMFoam and 104 CPUs
but unfortunately reconstructPar didnīt work. After I realised that it doesnīt work I tried that way:
reconstructParMesh -constant --> worked well
reconstructPar -constant --> didnīt work.
Hereīs the mistake I got:

Create time

Create mesh for time = 1.4e-05

Time = constant


#0 Foam::error::PrintStack(Foam::Ostream&) in "/home/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#1 Foam::sigSegv::sigHandler(int) in "/home/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#2 in "/lib64/libc.so.6"
#3 Foam:: objectRegistry::checkOut(Foam::regIOobject&) const in "/home/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#4 Foam::regIOobject::~regIOobject() in "/home/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libOpenFOAM.so"
#5 Foam::IOList<int>::~IOList() in "/home/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libfiniteVolume.so"
#6 Foam:: processorMeshes::read() in "/home/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libreconstruct.so"
#7 Foam:: processorMeshes::readUpdate() in "/home/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/lib/libreconstruct.so"
#8
in "/home/OpenFOAM/OpenFOAM-2.1.x/platforms/linux64GccDPOpt/bin/reconstructPar"
#9 __libc_start_main in "/lib64/libc.so.6"
#10
at /usr/src/packages/BUILD/glibc-2.11.2/csu/../sysdeps/x86_64/elf/start.S:116
Speicherzugriffsfehler

Has anyone an idea whatīs wrong?

Thanks a lot

imsurokim August 22, 2012 11:40

Same problem here.
 
I tried your script, and still have the problem..
I don't know what is wrong, but few people have same problem like me.
I am running 2.1.1
Any suggestions?


Create time

Create mesh for time = 0

Time = 0.02

#0 Foam::error::printStack(Foam::Ostream&) in "/usr/local/OpenFOAM-2.1.1/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so"
#1 Foam::sigSegv::sigHandler(int) in "/usr/local/OpenFOAM-2.1.1/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so"
#2 __restore_rt at sigaction.c:0
#3 Foam::objectRegistry::checkOut(Foam::regIOobject&) const in "/usr/local/OpenFOAM-2.1.1/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so"
#4 Foam::regIOobject::~regIOobject() in "/usr/local/OpenFOAM-2.1.1/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/lib/libOpenFOAM.so"
#5 Foam::IOList<int>::~IOList() in "/usr/local/OpenFOAM-2.1.1/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/lib/libfiniteVolume.so"
#6 Foam::processorMeshes::read() in "/usr/local/OpenFOAM-2.1.1/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/lib/libreconstruct.so"
#7 Foam::processorMeshes::readUpdate() in "/usr/local/OpenFOAM-2.1.1/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/lib/libreconstruct.so"
#8 main in "/usr/local/OpenFOAM-2.1.1/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/bin/reconstructPar"
#9 __libc_start_main in "/lib64/libc.so.6"
#10 Foam::regIOobject::writeObject(Foam::IOstream::str eamFormat, Foam::IOstream::versionNumber, Foam::IOstream::compressionType) const in "/usr/local/OpenFOAM-2.1.1/OpenFOAM-2.1.1/platforms/linux64Gcc44DPOpt/bin/reconstructPar"

wyldckat August 22, 2012 16:44

Greetings Suro Kim and welcome to the forum.

What does this command output:
Code:

reconstructParMesh -time 0.02
If it outputs this message:
Code:

--> FOAM FATAL ERROR:
Your current settings specify ASCII writing with 6 digits precision.
Your merging tolerance (1e-07) is finer than this.
Please change your writeFormat to binary or increase the writePrecision
or adjust the merge tolerance (-mergeTol).

    From function reconstructParMesh
    in file reconstructParMesh.C at line 341.

FOAM exiting

Then it's because you need to change the following line in "system/controlDict" from:
Code:

writeFormat    ascii;
to:
Code:

writeFormat    binary;
Then run again:
Code:

reconstructParMesh -time 0.02
If there is no error message, then you should be able to safely run sega's script.

Best regards,
Bruno


All times are GMT -4. The time now is 09:10.