|
[Sponsors] |
August 31, 2012, 12:36 |
AMI speed performance
|
#1 |
Senior Member
Daniel Witte
Join Date: Nov 2011
Posts: 148
Rep Power: 15 |
Hello,
I am using the AMI feature of OF 2.1 to simulated a special mixer type application. I have my grid (using blockmesh separate on rotor and stator area and merging them) and I can view it and run pimpledymfoam on the case. After 8 ms of total time of 6 s, OpenFoam stalls on a stackoverflow. So, I decided to use smaller time steps, which works, but the performance is that slow, that calculation will take 20 years to finish for one case. This is too slow for me. I found out that the first couple 1/1000 s are calculated rather quickly, then the time steps become very small. My idea now is the following: maybe it is not good to start the rotor at nominal speed, but use a ramp or better some cos function, whereas the speed starts at zero and ends at nominal speed and having zero gradient at start and at the end of the ramp. I looked into the forum for ramp programming, but they all refer to parameters like U, p and the like, not of the angular speed. This angular speed is defined in dynamicMeshDict as "radialVelocity" parameter (kind of confusing sind an angular speed is not a radial velocity). The unit is deg/s thus I think this is the angular speed. There is no reference to "fixedvalue", as one would see it in U or the like, which I could change to "table" or "polynominal" or the like. Is there anybody who has an idea? Regards, Daniel |
|
August 31, 2012, 14:11 |
|
#2 |
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
Greetings Daniel,
I took a look at the code and the only solution seems to be that you will have to create your own rotating motion dynamic mesh function! This is only if you want to use a simple dictionary. For that you can use as basis the following folders: Code:
src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion Nonetheless, if you don't want to code such a library, you can use instead the generic "tabulated6DoFMotion", which allows most control over the 6 degrees of freedom! An example is shown in the tutorial "multiphase/interDyMFoam/ras/sloshingTank3D6DoF"; it even comes with application source code for generating the table with the 3D positions !! Have fun! Best regards, Bruno
__________________
|
|
September 3, 2012, 06:33 |
|
#3 |
Senior Member
Daniel Witte
Join Date: Nov 2011
Posts: 148
Rep Power: 15 |
Hello Bruno,
Thanks for helping out again. I looked into what you suggested. Looks doable. I Let you know when it works. Regards, Daniel |
|
September 5, 2012, 12:15 |
|
#4 |
Senior Member
Daniel Witte
Join Date: Nov 2011
Posts: 148
Rep Power: 15 |
Hello Bruno,
I did what you suggested and and created a new function, which is in a folder called "RampCosRotatingMotion" located in solidBodyMotionFunctions folder. The .C and .H files are attached. The .dep wouldnot download, but I replaced just the name to RampCosRotatingMotion. The dynamic mesh file now lokks like this: dynamicFvMesh solidBodyMotionFvMesh; motionSolverLibs ( "libfvMotionSolvers.so" ); solidBodyMotionFvMeshCoeffs { cellZone rotor; solidBodyMotionFunction RampCosRotatingMotion; RampCosRotatingMotionCoeffs { CofG (0 0 0); endrampvalue (0 0 120);// deg/s endramptime 4; // s } } The endrampvalue is the angular velocity at the specified endramptime. From thereon the velocity is constant. Do I need to recompile Openfoam to take effect? Anything else to do? Regards, Daniel |
|
September 5, 2012, 16:49 |
|
#5 |
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
Hi Daniel,
To get the library working:
Code:
libs ("libRampCosRotatingMotion.so"); By the way, a few notes on the creation of the contents of the attached file:
Have fun! Bruno
__________________
|
|
September 6, 2012, 09:06 |
|
#6 |
Senior Member
Daniel Witte
Join Date: Nov 2011
Posts: 148
Rep Power: 15 |
Hello Brun,
I did what you suggested. I copied the packed file into .../solidBodyMotionFunctions folder, unpacked it and ran make lbso within that newly created folder. I altered my controldict file as you suggested. However, I get following error message: dw@PC83U:~$ cd OpenFOAM/dw-2.1.0/run/DTB6_3_kurz_tot_ramp dw@PC83U:~/OpenFOAM/dw-2.1.0/run/DTB6_3_kurz_tot_ramp$ decomposePar /*---------------------------------------------------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.1.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ Build : 2.1.0-bd7367f93311 Exec : decomposePar Date : Sep 06 2012 Time : 13:50:58 Host : "PC83U" PID : 3050 Case : /home/dw/OpenFOAM/dw-2.1.0/run/DTB6_3_kurz_tot_ramp nProcs : 1 sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). fileModificationChecking : Monitoring run-time modified files using timeStampMaster allowSystemOperations : Disallowing user-supplied system call operations // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Time = 0 Create mesh Calculating distribution of cells Selecting decompositionMethod scotch Finished decomposition in 3.13 s Calculating original mesh data Distributing cells to processors Distributing faces to processors Distributing points to processors Constructing processor meshes Processor 0 Number of cells = 274868 Number of faces shared with processor 1 = 2584 Number of faces shared with processor 2 = 2186 Number of processor patches = 2 Number of processor faces = 4770 Number of boundary faces = 90820 Processor 1 Number of cells = 276991 Number of faces shared with processor 0 = 2584 Number of faces shared with processor 2 = 2953 Number of processor patches = 2 Number of processor faces = 5537 Number of boundary faces = 54791 Processor 2 Number of cells = 277221 Number of faces shared with processor 0 = 2186 Number of faces shared with processor 1 = 2953 Number of processor patches = 2 Number of processor faces = 5139 Number of boundary faces = 116717 Processor 3 Number of cells = 278351 Number of faces shared with processor 5 = 1405 Number of processor patches = 1 Number of processor faces = 1405 Number of boundary faces = 77092 Processor 4 Number of cells = 277194 Number of faces shared with processor 5 = 1415 Number of processor patches = 1 Number of processor faces = 1415 Number of boundary faces = 71126 Processor 5 Number of cells = 275995 Number of faces shared with processor 3 = 1405 Number of faces shared with processor 4 = 1415 Number of processor patches = 2 Number of processor faces = 2820 Number of boundary faces = 100050 Number of processor faces = 10543 Max number of cells = 278351 (0.571232% above average 276770) Max number of processor patches = 2 (20% above average 1.66667) Max number of faces between processors = 5537 (57.5548% above average 3514.33) Processor 0: field transfer Processor 1: field transfer Processor 2: field transfer Processor 3: field transfer Processor 4: field transfer Processor 5: field transfer End. dw@PC83U:~/OpenFOAM/dw-2.1.0/run/DTB6_3_kurz_tot_ramp$ mpirun -np 6 pimpleDyMFoam -parallel > log & [1] 3051 dw@PC83U:~/OpenFOAM/dw-2.1.0/run/DTB6_3_kurz_tot_ramp$ [0] [1] [1] [1] --> FOAM FATAL ERROR: [1] Unknown solidBodyMotionFunction type RampCosRotatingMotion Valid solidBodyMotionFunctions are : 7 ( SDA linearMotion multiMotion oscillatingLinearMotion oscillatingRotatingMotion rotatingMotion tabulated6DoFMotion ) [1] [1] [1] From function solidBodyMotionFunction::New( const dictionary& SBMFCoeffs, const Time& runTime) [1] in file solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C at line 52. [1] FOAM parallel run exiting [1] [2] [2] [2] --> FOAM FATAL ERROR: [2] Unknown solidBodyMotionFunction type RampCosRotatingMotion Valid solidBodyMotionFunctions are : 7 ( SDA linearMotion multiMotion oscillatingLinearMotion oscillatingRotatingMotion rotatingMotion tabulated6DoFMotion ) [2] [2] [2] From function solidBodyMotionFunction::New( const dictionary& SBMFCoeffs, const Time& runTime) [2] in file solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C at line 52. [2] FOAM parallel run exiting [2] [4] [4] [4] --> FOAM FATAL ERROR: [4] Unknown solidBodyMotionFunction type RampCosRotatingMotion Valid solidBodyMotionFunctions are : 7 ( SDA linearMotion multiMotion oscillatingLinearMotion oscillatingRotatingMotion rotatingMotion tabulated6DoFMotion ) [4] [4] [4] From function solidBodyMotionFunction::New( const dictionary& SBMFCoeffs, const Time& runTime) [4] in file solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C at line 52. [4] FOAM parallel run exiting [4] [0] [0] --> FOAM FATAL ERROR: [0] Unknown solidBodyMotionFunction type RampCosRotatingMotion Valid solidBodyMotionFunctions are : 7 ( SDA linearMotion multiMotion oscillatingLinearMotion oscillatingRotatingMotion rotatingMotion tabulated6DoFMotion ) [0] [0] [0] From function solidBodyMotionFunction::New( const dictionary& SBMFCoeffs, const Time& runTime) [0] in file solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C at line 52. [0] FOAM parallel run exiting [0] [3] [3] [3] --> FOAM FATAL ERROR: [3] Unknown solidBodyMotionFunction type RampCosRotatingMotion Valid solidBodyMotionFunctions are : 7 ( SDA linearMotion multiMotion oscillatingLinearMotion oscillatingRotatingMotion rotatingMotion tabulated6DoFMotion ) [3] [3] [3] From function solidBodyMotionFunction::New( const dictionary& SBMFCoeffs, const Time& runTime) [3] in file solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C at line 52. [3] FOAM parallel run exiting [3] [5] [5] [5] --> FOAM FATAL ERROR: [5] Unknown solidBodyMotionFunction type RampCosRotatingMotion Valid solidBodyMotionFunctions are : 7 ( SDA linearMotion multiMotion oscillatingLinearMotion oscillatingRotatingMotion rotatingMotion tabulated6DoFMotion ) [5] [5] [5] From function solidBodyMotionFunction::New( const dictionary& SBMFCoeffs, const Time& runTime) [5] in file solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C at line 52. [5] FOAM parallel run exiting [5] -------------------------------------------------------------------------- MPI_ABORT was invoked on rank 1 in communicator MPI_COMM_WORLD with errorcode 1. NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. You may or may not see output from other processes, depending on exactly when Open MPI kills them. -------------------------------------------------------------------------- -------------------------------------------------------------------------- mpirun has exited due to process rank 5 with PID 3057 on node PC83U exiting improperly. There are two reasons this could occur: 1. this process did not call "init" before exiting, but others in the job did. This can cause a job to hang indefinitely while it waits for all processes to call "init". By rule, if one process calls "init", then ALL processes must call "init" prior to termination. 2. this process called "init", but exited without calling "finalize". By rule, all processes that call "init" MUST call "finalize" prior to exiting or it will be considered an "abnormal termination" This may have caused other processes in the application to be terminated by signals sent by mpirun (as reported here). -------------------------------------------------------------------------- [PC83U:03051] 5 more processes have sent help message help-mpi-api.txt / mpi-abort [PC83U:03051] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages As you can see, the decomposePar utility worked, but the newly created function is not found. Did I something wrong? By the way, thanks for the correction of the bracket. Regards, Daniel |
|
September 6, 2012, 09:21 |
|
#7 |
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
Hi Daniel,
I forgot to mention that the attached file is meant to be unpacked in your personal area! This acts as an independent library, in the sense that it doesn't affect OpenFOAM's code directly! Try again, but on a folder of yours as normal user, not as root. If it still has problems:
Best regards, Bruno
__________________
|
|
September 6, 2012, 09:40 |
|
#8 |
Senior Member
Daniel Witte
Join Date: Nov 2011
Posts: 148
Rep Power: 15 |
Hello Bruno,
I copied the tar-file into my user folder. OpenFoam is compiled on that user level as well. This is what I got: dw@PC83U:~$ tar xf RampCosRotatingMotion.tar.gz dw@PC83U:~$ cd RampCosRotatingMotion dw@PC83U:~/RampCosRotatingMotion$ wmake libso wmakeLnInclude: linking include files to ./lnInclude Making dependency list for source file RampCosRotatingMotion.C SOURCE=RampCosRotatingMotion.C ; g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3 -DNoRepository -ftemplate-depth-100 -I/home/dw/OpenFOAM/OpenFOAM-2.1.0/src/triSurface/lnInclude -I/home/dw/OpenFOAM/OpenFOAM-2.1.0/src/meshTools/lnInclude -I/home/dw/OpenFOAM/OpenFOAM-2.1.0/src/dynamicMesh/lnInclude -I/home/dw/OpenFOAM/OpenFOAM-2.1.0/src/finiteVolume/lnInclude -I/home/dw/OpenFOAM/OpenFOAM-2.1.0/src/dynamicFvMesh/lnInclude -IlnInclude -I. -I/home/dw/OpenFOAM/OpenFOAM-2.1.0/src/OpenFOAM/lnInclude -I/home/dw/OpenFOAM/OpenFOAM-2.1.0/src/OSspecific/POSIX/lnInclude -fPIC -c $SOURCE -o Make/linux64GccDPOpt/RampCosRotatingMotion.o '/home/dw/OpenFOAM/dw-2.1.0/platforms/linux64GccDPOpt/lib/libRampCosRotatingMotion.so' is up to date. dw@PC83U:~/RampCosRotatingMotion$ ls -l $FOAM_USER_LIBBIN/libRampCosRotatingMotion.so -rwxr-xr-x 1 dw dw 30838 2012-09-06 14:28 /home/dw/OpenFOAM/dw-2.1.0/platforms/linux64GccDPOpt/lib/libRampCosRotatingMotion.so dw@PC83U:~/RampCosRotatingMotion$ cd .. dw@PC83U:~$ cd OpenFOAM/dw-2.1.0/run/DTB6_3_kurz_tot_ramp dw@PC83U:~/OpenFOAM/dw-2.1.0/run/DTB6_3_kurz_tot_ramp$ mpirun -np 6 pimpleDyMFoam -parallel > log & [1] 3643 dw@PC83U:~/OpenFOAM/dw-2.1.0/run/DTB6_3_kurz_tot_ramp$ [0] [0] [0] --> FOAM FATAL ERROR: [0] Unknown solidBodyMotionFunction type RampCosRotatingMotion Valid solidBodyMotionFunctions are : 7 ( SDA linearMotion multiMotion oscillatingLinearMotion oscillatingRotatingMotion rotatingMotion tabulated6DoFMotion ) [0] [0] [0] From function solidBodyMotionFunction::New( const dictionary& SBMFCoeffs, const Time& runTime) [0] in file solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C at line 52. [0] FOAM parallel run exiting [0] [1] [2] [2] [2] --> FOAM FATAL ERROR: [2] Unknown solidBodyMotionFunction type RampCosRotatingMotion Valid solidBodyMotionFunctions are : 7 ( SDA linearMotion multiMotion oscillatingLinearMotion oscillatingRotatingMotion rotatingMotion tabulated6DoFMotion ) [2] [2] [2] From function solidBodyMotionFunction::New( const dictionary& SBMFCoeffs, const Time& runTime) [2] in file solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C at line 52. [2] FOAM parallel run exiting [2] [4] [4] [4] --> FOAM FATAL ERROR: [4] Unknown solidBodyMotionFunction type RampCosRotatingMotion Valid solidBodyMotionFunctions are : 7 ( SDA linearMotion multiMotion oscillatingLinearMotion oscillatingRotatingMotion rotatingMotion tabulated6DoFMotion ) [4] [4] [4] From function solidBodyMotionFunction::New( const dictionary& SBMFCoeffs, const Time& runTime) [4] in file solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C at line 52. [4] FOAM parallel run exiting [4] -------------------------------------------------------------------------- MPI_ABORT was invoked on rank 2 in communicator MPI_COMM_WORLD with errorcode 1. NOTE: invoking MPI_ABORT causes Open MPI to kill all MPI processes. You may or may not see output from other processes, depending on exactly when Open MPI kills them. -------------------------------------------------------------------------- [1] [1] --> FOAM FATAL ERROR: [1] Unknown solidBodyMotionFunction type RampCosRotatingMotion Valid solidBodyMotionFunctions are : 7 ( SDA linearMotion multiMotion oscillatingLinearMotion oscillatingRotatingMotion rotatingMotion tabulated6DoFMotion ) [1] [1] [1] From function solidBodyMotionFunction::New( const dictionary& SBMFCoeffs, const Time& runTime) [1] in file solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C at line 52.[3] [3] [3] --> FOAM FATAL ERROR: [3] Unknown solidBodyMotionFunction type RampCosRotatingMotion Valid solidBodyMotionFunctions are : 7 ( SDA linearMotion multiMotion oscillatingLinearMotion oscillatingRotatingMotion rotatingMotion tabulated6DoFMotion ) [3] [3] [3] From function solidBodyMotionFunction::New( const dictionary& SBMFCoeffs, const Time& runTime) [3] in file solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C at line 52. [3] FOAM parallel run exiting [3] [1] FOAM parallel run exiting [1] [5] [5] [5] --> FOAM FATAL ERROR: [5] Unknown solidBodyMotionFunction type RampCosRotatingMotion Valid solidBodyMotionFunctions are : 7 ( SDA linearMotion multiMotion oscillatingLinearMotion oscillatingRotatingMotion rotatingMotion tabulated6DoFMotion ) [5] [5] [5] From function solidBodyMotionFunction::New( const dictionary& SBMFCoeffs, const Time& runTime) [5] in file solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C at line 52. [5] FOAM parallel run exiting [5] -------------------------------------------------------------------------- mpirun has exited due to process rank 3 with PID 3647 on node PC83U exiting improperly. There are two reasons this could occur: 1. this process did not call "init" before exiting, but others in the job did. This can cause a job to hang indefinitely while it waits for all processes to call "init". By rule, if one process calls "init", then ALL processes must call "init" prior to termination. 2. this process called "init", but exited without calling "finalize". By rule, all processes that call "init" MUST call "finalize" prior to exiting or it will be considered an "abnormal termination" This may have caused other processes in the application to be terminated by signals sent by mpirun (as reported here). -------------------------------------------------------------------------- [PC83U:03643] 5 more processes have sent help message help-mpi-api.txt / mpi-abort [PC83U:03643] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages As you can see, the error message is about the same as previously. Attached is my ControlDic and log file. Regards, Daniel |
|
September 6, 2012, 10:23 |
|
#9 |
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
I suspected as much... and I didn't detail properly this:
__________________
|
|
September 7, 2012, 05:31 |
|
#10 |
Senior Member
Daniel Witte
Join Date: Nov 2011
Posts: 148
Rep Power: 15 |
Hello Bruno,
Now it seems to work . Thanks a lot for your help. It would have taken much longer to figger out myself. For those who want to do the same: This new function means that the angular speed of the shaft is not constant, but starts with 0 at time zero to change to a constant endrampvalue at time endramptime. From thereon, it is constant. In order to describe the behavior of the angular speed between 0 and endramptime, I use a the function: endrampvalue/2 x (1 - cos(time/endramptime*pi)) This means that at time 0 and at time endramptime the gradient of the angular speed in time is 0. This is more realistic for a physical drive system and you get a smooth transition at both time = 0 and time = endramptime. In OpenFOAM the angular speed is not used, but the angular position. This is the angular speed integrated over time. It is called "Eulerangle" in the source code. This is why one get a sinus and not a cos function in the code. Bruno: I let you know if it helps, but that will take a couple days. Regards, Daniel |
|
September 10, 2012, 04:08 |
|
#11 |
Senior Member
Daniel Witte
Join Date: Nov 2011
Posts: 148
Rep Power: 15 |
Hello Bruno or whoever may help,
The ramp worked over the weekend. So far, so good. However, the acceleration of speed I had hoped for is only partial. I am now at 0.012 s after 3 days of calculation, whereas before it did a week for 0.006 s. Here some strange observation: As soon as there is a time where data is written, the time step for further calculation significantly slows down. Is this a coincidence, or does writeprecision influence how the next time step is calculated? Regards, Daniel |
|
September 10, 2012, 04:25 |
|
#12 |
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
Hi Daniel,
Mmm... OK, there are a few details to point out:
Bruno
__________________
|
|
September 18, 2012, 09:01 |
|
#13 |
Senior Member
stephane sanchi
Join Date: Mar 2009
Posts: 314
Rep Power: 18 |
Hi Daniel,
are you satisfied with your method (ramp) ? What is your maximum Courant Number reached ? Regards, Stephane. |
|
September 24, 2012, 09:02 |
|
#14 |
Senior Member
Daniel Witte
Join Date: Nov 2011
Posts: 148
Rep Power: 15 |
Hello Stephane,
The ramp method did increase the area of fast iteration from 0.006 to 0.03 s, however, again the speed thereafter was as slow as before. After 3 weeks of calculation I am now at 0.04 s. This is still a lot to go until 6 s, the ultimate time that I thought to be sufficient. I changed the setting "writeControl = adjustableRunTime" to "writeControl = RunTime". This may also have helped somewhat. Max. Courant number is around 1 to 1.2. Mean Courant number is around 0.1. One iteration step takes about 34 s, which, I think, is reasonable. The time difference between 2 iteration step is 4 x 10^-7 s. So, I think, this small change is the main problem. Using MRF solver on the same mesh, the time difference between 2 iteration steps was 0.0025 s. This corresponds to deltaT in ControlDic. Now I get a much smaller value. I do not understand why that is and still have to find out. Regards, Daniel |
|
October 4, 2012, 10:20 |
AMI high viscosity problem + AMI paraview problem
|
#15 |
Senior Member
Daniel Witte
Join Date: Nov 2011
Posts: 148
Rep Power: 15 |
Hello everybody,
It took me some time, but I finally found the error (if it is an error). One also can reproduce it in the AMI tutorial case in OF 2.1.0. (mixerVesselAMI2D) to a certain extent. I did 2 changes to that case: 1. I switched to 6 processors in decomposParDic (should not matter and indeed does not since I ran the case without problem). 2. I changed the viscosity from 1e-5 to 20 in transportProperties. My orginal model had a Cross model implemented, but the problem seems to be the viscosity value, not the model. This is what I get on the screen: dw@PC83U:~/OpenFOAM/dw-2.1.0/run/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D$ mpirun -np 6 pimpleDyMFoam -parallel > log & [1] 3766 dw@PC83U:~/OpenFOAM/dw-2.1.0/run/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D$ [2] #0 Foam::error:rintStack(Foam::Ostream&) in "/home/dw/OpenFOAM/OpenFOAM-2.1.0/platforms/linux64GccDPOpt/lib/libOpenFOAM.so" [2] #1 Foam::sigSegv::sigHandler(int) in "/home/dw/OpenFOAM/OpenFOAM-2.1.0/platforms/linux64GccDPOpt/lib/libOpenFOAM.so" [2] #2 in "/lib/x86_64-linux-gnu/libc.so.6" [2] #3 in "/home/dw/OpenFOAM/OpenFOAM-2.1.0/platforms/linux64GccDPOpt/lib/libOpenFOAM.so" [PC83U:03769] *** Process received signal *** [PC83U:03769] Signal: Segmentation fault (11) [PC83U:03769] Signal code: (-6) [PC83U:03769] Failing at address: 0x3e800000eb9 [PC83U:03769] [ 0] /lib/x86_64-linux-gnu/libc.so.6(+0x33d80) [0x7f20cf2a5d80] [PC83U:03769] [ 1] /lib/x86_64-linux-gnu/libc.so.6(gsignal+0x35) [0x7f20cf2a5d05] [PC83U:03769] [ 2] /lib/x86_64-linux-gnu/libc.so.6(+0x33d80) [0x7f20cf2a5d80] [PC83U:03769] [ 3] /home/dw/OpenFOAM/OpenFOAM-2.1.0/platforms/linux64GccDPOpt/lib/libOpenFOAM.so(+0x154ba0) [0x7f20d0103ba0] [PC83U:03769] *** End of error message *** -------------------------------------------------------------------------- mpirun noticed that process rank 1 with PID 3768 on node PC83U exited on signal 11 (Segmentation fault). -------------------------------------------------------------------------- This is not all too much information, but the log file: /*---------------------------------------------------------------------------*\ | ========= | | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / O peration | Version: 2.1.0 | | \\ / A nd | Web: www.OpenFOAM.org | | \\/ M anipulation | | \*---------------------------------------------------------------------------*/ Build : 2.1.0-bd7367f93311 Exec : pimpleDyMFoam -parallel Date : Oct 04 2012 Time : 14:30:49 Host : "PC83U" PID : 3767 Case : /home/dw/OpenFOAM/dw-2.1.0/run/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D nProcs : 6 Slaves : 5 ( "PC83U.3768" "PC83U.3769" "PC83U.3770" "PC83U.3771" "PC83U.3772" ) Pstream initialized with: floatTransfer : 0 nProcsSimpleSum : 0 commsType : nonBlocking sigFpe : Enabling floating point exception trapping (FOAM_SIGFPE). fileModificationChecking : Monitoring run-time modified files using timeStampMaster allowSystemOperations : Disallowing user-supplied system call operations // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // Create time Create mesh for time = 0 Selecting dynamicFvMesh solidBodyMotionFvMesh Selecting solid-body motion function rotatingMotion Applying solid body motion to cellZone rotor Reading field p Reading field U Reading/calculating face flux field phi AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1, 1, 1 AMI: Patch target weights min/max/average = 1, 1, 1 Selecting incompressible transport model Newtonian Selecting turbulence model type laminar Reading field rAU if present No field sources present PIMPLE: Operating solver in PISO mode Starting time loop Courant Number mean: 0 max: 0 deltaT = 0.00119048 Time = 0.00119048 solidBodyMotionFunctions::rotatingMotion::transfor mation(): Time = 0.00119048 transformation: ((0 0 0) (0.999993 (0 0 0.00373998))) AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1.00011, 1.00011, 1.00011 AMI: Patch target weights min/max/average = 1.00011, 1.00011, 1.00011 smoothSolver: Solving for Ux, Initial residual = 1, Final residual = 9.89935e-07, No Iterations 959 smoothSolver: Solving for Uy, Initial residual = 1, Final residual = 9.88893e-07, No Iterations 957 GAMG: Solving for p, Initial residual = 1, Final residual = 0.00479908, No Iterations 4 time step continuity errors : sum local = 2.22674e-05, global = -2.30088e-12, cumulative = -2.30088e-12 GAMG: Solving for p, Initial residual = 0.66542, Final residual = 4.64086e-07, No Iterations 15 time step continuity errors : sum local = 2.74341e-09, global = -1.7588e-12, cumulative = -4.05968e-12 ExecutionTime = 0.07 s ClockTime = 1 s Courant Number mean: 0.0213134 max: 0.0859294 deltaT = 0.00141156 Time = 0.00260204 solidBodyMotionFunctions::rotatingMotion::transfor mation(): Time = 0.00260204 transformation: ((0 0 0) (0.999967 (0 0 0.00817446))) AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1.0002, 1.0002, 1.0002 AMI: Patch target weights min/max/average = 1.0002, 1.0002, 1.0002 smoothSolver: Solving for Ux, Initial residual = 0.439544, Final residual = 9.8903e-07, No Iterations 909 smoothSolver: Solving for Uy, Initial residual = 0.431886, Final residual = 9.90487e-07, No Iterations 911 GAMG: Solving for p, Initial residual = 0.946645, Final residual = 0.00870339, No Iterations 4 time step continuity errors : sum local = 0.000153512, global = 4.45486e-10, cumulative = 4.41426e-10 GAMG: Solving for p, Initial residual = 0.808819, Final residual = 6.05234e-07, No Iterations 16 time step continuity errors : sum local = 1.13353e-08, global = 2.94758e-11, cumulative = 4.70902e-10 ExecutionTime = 0.12 s ClockTime = 1 s Courant Number mean: 0.0621628 max: 0.321154 deltaT = 0.0016233 Time = 0.00422534 solidBodyMotionFunctions::rotatingMotion::transfor mation(): Time = 0.00422534 transformation: ((0 0 0) (0.999912 (0 0 0.0132739))) AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1.00026, 1.00026, 1.00026 AMI: Patch target weights min/max/average = 1.00026, 1.00026, 1.00026 smoothSolver: Solving for Ux, Initial residual = 0.602385, Final residual = 9.94768e-07, No Iterations 966 smoothSolver: Solving for Uy, Initial residual = 0.573202, Final residual = 9.98762e-07, No Iterations 985 GAMG: Solving for p, Initial residual = 0.984534, Final residual = 0.00554229, No Iterations 5 time step continuity errors : sum local = 0.000431707, global = -5.72948e-09, cumulative = -5.25858e-09 GAMG: Solving for p, Initial residual = 0.819924, Final residual = 5.87123e-07, No Iterations 17 time step continuity errors : sum local = 5.13713e-08, global = -1.29828e-10, cumulative = -5.38841e-09 ExecutionTime = 0.18 s ClockTime = 1 s Courant Number mean: 0.301265 max: 2.26565 deltaT = 0.000357368 Time = 0.00458271 solidBodyMotionFunctions::rotatingMotion::transfor mation(): Time = 0.00458271 transformation: ((0 0 0) (0.999896 (0 0 0.0143965))) AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1.00026, 1.00026, 1.00026 AMI: Patch target weights min/max/average = 1.00026, 1.00026, 1.00026 smoothSolver: Solving for Ux, Initial residual = 0.751013, Final residual = 9.88153e-07, No Iterations 956 smoothSolver: Solving for Uy, Initial residual = 0.735669, Final residual = 9.87807e-07, No Iterations 989 GAMG: Solving for p, Initial residual = 0.990684, Final residual = 0.00650009, No Iterations 5 time step continuity errors : sum local = 0.000509248, global = 2.66927e-09, cumulative = -2.71913e-09 GAMG: Solving for p, Initial residual = 0.813236, Final residual = 6.65535e-07, No Iterations 17 time step continuity errors : sum local = 5.9741e-08, global = -2.34012e-11, cumulative = -2.74254e-09 ExecutionTime = 0.24 s ClockTime = 1 s Courant Number mean: 0.317377 max: 2.61718 deltaT = 6.82527e-05 Time = 0.00465096 solidBodyMotionFunctions::rotatingMotion::transfor mation(): Time = 0.00465096 transformation: ((0 0 0) (0.999893 (0 0 0.0146109))) AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1.00026, 1.00026, 1.00026 AMI: Patch target weights min/max/average = 1.00026, 1.00026, 1.00026 smoothSolver: Solving for Ux, Initial residual = 0.76333, Final residual = 9.98143e-07, No Iterations 816 smoothSolver: Solving for Uy, Initial residual = 0.745112, Final residual = 9.95495e-07, No Iterations 851 GAMG: Solving for p, Initial residual = 0.989607, Final residual = 0.00765601, No Iterations 5 time step continuity errors : sum local = 0.000490211, global = -2.72399e-09, cumulative = -5.46652e-09 GAMG: Solving for p, Initial residual = 0.808288, Final residual = 7.31555e-07, No Iterations 17 time step continuity errors : sum local = 5.452e-08, global = 3.99324e-10, cumulative = -5.0672e-09 ExecutionTime = 0.29 s ClockTime = 1 s Courant Number mean: 0.250697 max: 2.39666 deltaT = 1.42376e-05 Time = 0.0046652 solidBodyMotionFunctions::rotatingMotion::transfor mation(): Time = 0.0046652 transformation: ((0 0 0) (0.999893 (0 0 0.0146556))) AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1.00026, 1.00026, 1.00026 AMI: Patch target weights min/max/average = 1.00026, 1.00026, 1.00026 smoothSolver: Solving for Ux, Initial residual = 0.759908, Final residual = 9.85478e-07, No Iterations 484 smoothSolver: Solving for Uy, Initial residual = 0.748035, Final residual = 9.75601e-07, No Iterations 499 GAMG: Solving for p, Initial residual = 0.982752, Final residual = 0.00903248, No Iterations 5 time step continuity errors : sum local = 0.000355217, global = 9.61383e-09, cumulative = 4.54663e-09 GAMG: Solving for p, Initial residual = 0.798385, Final residual = 8.24123e-07, No Iterations 17 time step continuity errors : sum local = 3.88442e-08, global = -1.48283e-09, cumulative = 3.0638e-09 ExecutionTime = 0.33 s ClockTime = 1 s Courant Number mean: 0.131347 max: 1.50616 deltaT = 4.72633e-06 Time = 0.00466992 solidBodyMotionFunctions::rotatingMotion::transfor mation(): Time = 0.00466992 transformation: ((0 0 0) (0.999892 (0 0 0.0146705))) AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1.00026, 1.00026, 1.00026 AMI: Patch target weights min/max/average = 1.00026, 1.00026, 1.00026 smoothSolver: Solving for Ux, Initial residual = 0.746931, Final residual = 9.80699e-07, No Iterations 247 smoothSolver: Solving for Uy, Initial residual = 0.732334, Final residual = 9.78183e-07, No Iterations 249 GAMG: Solving for p, Initial residual = 0.966193, Final residual = 0.00452068, No Iterations 6 time step continuity errors : sum local = 9.99138e-05, global = -5.3034e-08, cumulative = -4.99702e-08 GAMG: Solving for p, Initial residual = 0.780619, Final residual = 9.04658e-07, No Iterations 17 time step continuity errors : sum local = 2.41156e-08, global = -1.85016e-09, cumulative = -5.18203e-08 ExecutionTime = 0.35 s ClockTime = 1 s Courant Number mean: 0.052603 max: 0.749533 deltaT = 3.15276e-06 Time = 0.00467308 solidBodyMotionFunctions::rotatingMotion::transfor mation(): Time = 0.00467308 transformation: ((0 0 0) (0.999892 (0 0 0.0146804))) AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1.00026, 1.00026, 1.00026 AMI: Patch target weights min/max/average = 1.00026, 1.00026, 1.00026 smoothSolver: Solving for Ux, Initial residual = 0.755097, Final residual = 9.77339e-07, No Iterations 186 smoothSolver: Solving for Uy, Initial residual = 0.747234, Final residual = 9.64879e-07, No Iterations 186 GAMG: Solving for p, Initial residual = 0.953089, Final residual = 0.00467884, No Iterations 6 time step continuity errors : sum local = 8.88558e-05, global = 1.14776e-07, cumulative = 6.29552e-08 GAMG: Solving for p, Initial residual = 0.766035, Final residual = 4.75245e-07, No Iterations 18 time step continuity errors : sum local = 1.81398e-08, global = 8.27909e-09, cumulative = 7.12343e-08 ExecutionTime = 0.38 s ClockTime = 1 s Courant Number mean: 0.0385493 max: 0.596893 deltaT = 2.64093e-06 Time = 0.00467572 solidBodyMotionFunctions::rotatingMotion::transfor mation(): Time = 0.00467572 transformation: ((0 0 0) (0.999892 (0 0 0.0146887))) AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1.00026, 1.00026, 1.00026 AMI: Patch target weights min/max/average = 1.00026, 1.00026, 1.00026 smoothSolver: Solving for Ux, Initial residual = 0.761018, Final residual = 9.37494e-07, No Iterations 165 smoothSolver: Solving for Uy, Initial residual = 0.758367, Final residual = 9.33205e-07, No Iterations 164 GAMG: Solving for p, Initial residual = 0.946305, Final residual = 0.004664, No Iterations 6 time step continuity errors : sum local = 8.67558e-05, global = -1.16425e-07, cumulative = -4.51907e-08 GAMG: Solving for p, Initial residual = 0.75411, Final residual = 5.03327e-07, No Iterations 18 time step continuity errors : sum local = 1.72173e-08, global = -7.20542e-09, cumulative = -5.23962e-08 ExecutionTime = 0.4 s ClockTime = 1 s Courant Number mean: 0.0348658 max: 0.555812 deltaT = 2.37568e-06 Time = 0.00467809 solidBodyMotionFunctions::rotatingMotion::transfor mation(): Time = 0.00467809 transformation: ((0 0 0) (0.999892 (0 0 0.0146961))) AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1.00027, 1.00027, 1.00027 AMI: Patch target weights min/max/average = 1.00027, 1.00027, 1.00027 smoothSolver: Solving for Ux, Initial residual = 0.763691, Final residual = 9.86891e-07, No Iterations 152 smoothSolver: Solving for Uy, Initial residual = 0.761843, Final residual = 9.28687e-07, No Iterations 152 GAMG: Solving for p, Initial residual = 0.944857, Final residual = 0.00462645, No Iterations 6 time step continuity errors : sum local = 8.56649e-05, global = 1.52025e-07, cumulative = 9.96289e-08 GAMG: Solving for p, Initial residual = 0.74314, Final residual = 5.10274e-07, No Iterations 18 time step continuity errors : sum local = 2.28576e-08, global = 1.28568e-08, cumulative = 1.12486e-07 ExecutionTime = 0.43 s ClockTime = 1 s Courant Number mean: 0.0320238 max: 0.52445 deltaT = 2.26488e-06 Time = 0.00468036 solidBodyMotionFunctions::rotatingMotion::transfor mation(): Time = 0.00468036 transformation: ((0 0 0) (0.999892 (0 0 0.0147033))) AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1.00027, 1.00027, 1.00027 AMI: Patch target weights min/max/average = 1.00027, 1.00027, 1.00027 smoothSolver: Solving for Ux, Initial residual = 0.768179, Final residual = 9.37427e-07, No Iterations 148 smoothSolver: Solving for Uy, Initial residual = 0.769832, Final residual = 9.28849e-07, No Iterations 147 GAMG: Solving for p, Initial residual = 0.946618, Final residual = 0.00445217, No Iterations 6 time step continuity errors : sum local = 8.64819e-05, global = -1.34464e-07, cumulative = -2.19782e-08 GAMG: Solving for p, Initial residual = 0.737939, Final residual = 4.94694e-07, No Iterations 18 time step continuity errors : sum local = 1.83379e-08, global = -8.23249e-09, cumulative = -3.02107e-08 ExecutionTime = 0.45 s ClockTime = 1 s Courant Number mean: 0.0319341 max: 0.531503 deltaT = 2.13062e-06 Time = 0.00468249 solidBodyMotionFunctions::rotatingMotion::transfor mation(): Time = 0.00468249 transformation: ((0 0 0) (0.999892 (0 0 0.0147099))) AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1.00027, 1.00027, 1.00027 AMI: Patch target weights min/max/average = 1.00027, 1.00027, 1.00027 smoothSolver: Solving for Ux, Initial residual = 0.76855, Final residual = 9.48595e-07, No Iterations 141 smoothSolver: Solving for Uy, Initial residual = 0.76757, Final residual = 9.92723e-07, No Iterations 140 GAMG: Solving for p, Initial residual = 0.947305, Final residual = 0.00429991, No Iterations 6 time step continuity errors : sum local = 8.32842e-05, global = 1.83223e-07, cumulative = 1.53013e-07 GAMG: Solving for p, Initial residual = 0.736467, Final residual = 4.78067e-07, No Iterations 18 time step continuity errors : sum local = 2.79401e-08, global = 1.82932e-08, cumulative = 1.71306e-07 ExecutionTime = 0.47 s ClockTime = 1 s Courant Number mean: 0.0290166 max: 0.49155 deltaT = 2.16724e-06 Time = 0.00468466 solidBodyMotionFunctions::rotatingMotion::transfor mation(): Time = 0.00468466 transformation: ((0 0 0) (0.999892 (0 0 0.0147168))) AMI: Creating addressing and weights between 96 source faces and 96 target faces AMI: Patch source weights min/max/average = 1.00027, 1.00027, 1.00027 AMI: Patch target weights min/max/average = 1.00027, 1.00027, 1.00027 smoothSolver: Solving for Ux, Initial residual = 0.774479, Final residual = 9.87718e-07, No Iterations 143 smoothSolver: Solving for Uy, Initial residual = 0.77668, Final residual = 9.24456e-07, No Iterations 143 GAMG: Solving for p, Initial residual = 0.950157, Final residual = 0.00418523, No Iterations 6 time step continuity errors : sum local = 8.74868e-05, global = -1.34313e-07, cumulative = 3.69933e-08 GAMG: Solving for p, Initial residual = 0.735541, Final residual = 9.74853e-07, No Iterations 17 time step continuity errors : sum local = 2.85132e-08, global = -7.27165e-09, cumulative = 2.97216e-08 ExecutionTime = 0.49 s ClockTime = 1 s The file is much bigger, I did cut most of it off. The program does even write the 1st time folder after 0. As can be see, as for my own case, the program reduces deltaT down to a ridicolous small value (2e-6). Then the iteration takes forever. The Co number iteration seems fine, around 0.5 as specified. Back on my own case: this I have analyzed more in detail. I found that OpenFoam calculates velocities (U file) that are 1000 times the maximal speed that theoretically can happen anywhere in the mixer (the maximal velocity is the tip speed of the rotor blades). For low viscosities, the program does fine. My question: how this can be?? If the solver iterates in U, how does it do? In MRF the solver does just fine (no viscosity problem), why AMI? Unrelated question: I cannot visualize AMI p,U or the like in ParaView, just the rotating mesh. Is this normal or some bug? Regards, Daniel |
|
October 5, 2012, 08:19 |
|
#16 | ||
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
Hi Daniel,
Quote:
I haven't tested these high-viscosity parameters, but I still suggest that you try out OpenFOAM 2.1.1 or even 2.1.x before doing more tests on 2.1.0! Quote:
Best regards, Bruno
__________________
|
|||
October 8, 2012, 11:59 |
|
#17 |
Senior Member
Daniel Witte
Join Date: Nov 2011
Posts: 148
Rep Power: 15 |
Hello Bruno,
Thanks for the tip. I got it working in 2.1.0, though not quite right: 1.) The divergence of the calculation by relaxing U in fvSolution to 0.01. This did the trick and my calculation time is reduced to 1 day (my case). The tutorial case mixerVesselAMI is also reasonable now (a couple s). My case also works for Cross model for viscosity. So far so good. 2.) The paraView by unchecking "internal fields" and all volume fields, then checking "rotor patch" (then push "apply" button). You will see the rotor patch. Then uncheck "rotor patch" and check "internal fields" and "Volume fields" (followed by "apply"). Then change to "display" and select the field you want as usual. It turns out that the stator though "turns" together with the rotor although they have been meshed independently and merged by mergeMeshes. There is a velocity field calculated. Somehing is definetly very wrong. I will now install 2.1.x and hope the best. Is this new version so much better? Regards, Daniel |
|
October 8, 2012, 13:35 |
|
#18 |
Senior Member
Kent Wardle
Join Date: Mar 2009
Location: Illinois, USA
Posts: 219
Rep Power: 21 |
||
October 8, 2012, 18:01 |
|
#19 |
Retired Super Moderator
Bruno Santos
Join Date: Mar 2009
Location: Lisbon, Portugal
Posts: 10,981
Blog Entries: 45
Rep Power: 128 |
By what I've seen in the bug reports and from the fixes made on 2.1.x, I think the bug fixes out-weight any new bugs that might have been introduced
But then again, I don't have much experience with AMI... closest I know/understand is that the tutorial "incompressible/pimpleDyMfoam/propeller" was broken some time ago and it's working again: http://www.openfoam.org/mantisbt/view.php?id=593 - I don't know when it stopped working in the first place
__________________
|
|
October 24, 2012, 08:44 |
|
#20 |
Senior Member
Daniel Witte
Join Date: Nov 2011
Posts: 148
Rep Power: 15 |
Hello again,
I think this threads can be closed since I found out the problem myself. When you use the tutorial AMI case, delete all files in polymesh folder or at least the file "cellZones" for the static mesh. The folder "set" is useless. Running BlockMesh on the rotating part will create a new "cellZones" file, but on the static part, that file will be missing. While merging the rotating with the static mesh, mergeMeshes adds the the "cellZones" of each mesh together. This is what happened to my case, increasing the number of blocks rotating that a part of the static parts did rotate too. There is no error message created and even the case may be calculated, but obviously the solution is no good. So, an existing "cellZones" file is overwritten by blockMesh if there is an existing zone, but is not removed if there is none. Thanks everybody for the help. Regards, Daniel |
|
Tags |
ami angular speed ramp |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
OpenFOAM on Amazon Elastic Compute Cloud (Amazon EC2) | piina | OpenFOAM Running, Solving & CFD | 14 | November 11, 2015 14:17 |
[Other] Problem when case with AMI | A.A. | OpenFOAM Meshing & Mesh Conversion | 1 | October 4, 2012 12:54 |
Train Speed | yeo | FLUENT | 5 | February 14, 2012 09:38 |
parallel performance on BX900 | uzawa | OpenFOAM Installation | 3 | September 5, 2011 16:52 |
Linux kernel performance enhancement | ConnClark | OpenFOAM | 0 | January 17, 2011 19:18 |