|
[Sponsors] |
June 1, 2013, 14:58 |
Programming questions
|
#1 |
New Member
Jim KIT
Join Date: Aug 2012
Location: Germany
Posts: 25
Rep Power: 13 |
Dear openFoamers,
I want OpenFOAM performs during the parallel simulation "reconstructPar" , so that I can look at the results without problem. I found a Function " systemCall" http://openfoamwiki.net/index.php/Ti...ect_systemCall It looks promising but It can do the commands after a time iteration or/and before the simulation is over. I studied the code (http://foam.sourceforge.net/docs/cpp/a02231.html) and i didn't find, where it asks for time? could it have to do with this command " TypeName ( "systemCall" )" have anyone any idea ,how can I extend that library to make it able to do the command after (for example) 10 iteration? thx |
|
June 1, 2013, 17:46 |
|
#2 |
Super Moderator
Tobias Holzmann
Join Date: Oct 2010
Location: Tussenhausen
Posts: 2,708
Blog Entries: 6
Rep Power: 51 |
Hi,
why don t you use paraview with decomposed case? There you can have a look at the results too! easy and good. Otherwise open a other terminal and use reconstructPar. Maybe I missunderstood you?! |
|
June 1, 2013, 18:30 |
|
#3 | |
New Member
Jim KIT
Join Date: Aug 2012
Location: Germany
Posts: 25
Rep Power: 13 |
Quote:
the idea is, during the parallel processing in a cluster the result is automatically written out . Thus the effort each time "entering the command reconstructPar" is saved. |
||
June 4, 2013, 04:47 |
|
#4 | |
New Member
Marcel Vonlanthen
Join Date: Nov 2012
Location: Zurich, Switzerland
Posts: 28
Rep Power: 13 |
Quote:
I am in the same position as you (doing stuff during the parallel run on a cluster). sysCall works really well for such operation. Here is a short example of a python script named "doStuff.py" used by the sysCall function of OpenFOAM: Code:
# import library import os import subprocess # find master processor and then do something only on this one if os.environ['OMPI_COMM_WORLD_RANK']=='0': # do something directly on the master processor, like reconstruction (not nice) proc = subprocess.Popen('reconstructPar -time 1.23', stdout=subprocess.PIPE, shell=True) (out, err) = proc.communicate() # do something directly on the master processor, like restart a reconstruction job (much clever because you can really do stuffs in parallel) proc = subprocess.Popen('qsub myReconstructionJob.sh', stdout=subprocess.PIPE, shell=True) (out, err) = proc.communicate() Code:
sysCallJobs { type systemCall; functionObjectLibs ( "libsystemCall.so" ); executeCalls 0(); endCalls 0(); writeCalls 1("./doStuff.py"); outputControl outputTime; } |
||
June 6, 2013, 12:02 |
|
#5 | ||
New Member
Jim KIT
Join Date: Aug 2012
Location: Germany
Posts: 25
Rep Power: 13 |
thanks for the answer.
I found another way to do that. It might be interesting for you. code: I've made one or two modification in the original code. Quote:
Quote:
you should now add in the controlDict of your problem writeInterval the desirable Interval. |
|||
Thread Tools | Search this Thread |
Display Modes | |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
A book for a beginner wanting to learn programming | frank | Main CFD Forum | 9 | May 12, 2014 23:15 |
Programming questions | smart | OpenFOAM Programming & Development | 35 | July 9, 2013 09:21 |
Questions for simple algorithm programming | Zhaoxiaobin211 | Main CFD Forum | 0 | January 1, 2013 10:32 |
two questions about udf programming | Vincent | FLUENT | 1 | October 5, 2008 00:24 |
Programming in C | Tony | Main CFD Forum | 5 | March 7, 2002 12:40 |