CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   OpenFOAM Community Contributions (https://www.cfd-online.com/Forums/openfoam-community-contributions/)
-   -   [ImmersedBoundary] Immersed Boundary Method in OpenFOAM-3.1-ext (https://www.cfd-online.com/Forums/openfoam-community-contributions/141321-immersed-boundary-method-openfoam-3-1-ext.html)

miladrakhsha September 3, 2014 12:17

Immersed Boundary Method in OpenFOAM-3.1-ext
 
I am experiencing with the implementation of IBM in OpenFOAM. I am working with simpleIbFoam. It would be great if this method could be implemented in the future version of OpenFOAM ext by default as it is a very powerful method. However, I did not find the currrent implementation robust enough yet. My case terminates after a couple of iterations without any warning or any error message so I dont rally know where the problem is!!! My only gauss is that it has something to do with the "k" equation!
this is a small part of my log file:

Code:

Time = 6

DILUPBiCG:  Solving for Ux, Initial residual = 7.0369e-05, Final residual = 6.80687e-11, No Iterations 5
DILUPBiCG:  Solving for Uy, Initial residual = 0.000326453, Final residual = 2.10094e-10, No Iterations 5
DILUPBiCG:  Solving for Uz, Initial residual = 7.49995e-06, Final residual = 1.87974e-11, No Iterations 5
GAMG:  Solving for p, Initial residual = 0.0588972, Final residual = 0.00623836, No Iterations 1000
time step continuity errors : sum local = 1.84801e-06, global = -2.04249e-09, cumulative = -4.51088e-09
DILUPBiCG:  Solving for omega, Initial residual = 0.0135086, Final residual = 3.48746e-05, No Iterations 1
DILUPBiCG:  Solving for k, Initial residual = 0.0159819, Final residual = 5.767e-05, No Iterations 1
bounding k, min: -0.940922 max: 1.77288 average: 0.00776461
ExecutionTime = 198.19 s  ClockTime = 198 s

forces output:
    forces(pressure, viscous)((0.000193756 -2.15261e-05 0.000364652) (4.89027e-10 7.44523e-11 6.68369e-13))
    moment(pressure, viscous)((2.45693e-05 -3.77346e-05 -1.48994e-05) (-1.28583e-12 5.10029e-12 -2.34689e-11))

Field p min = -19.5442 max = 3.89681
Field U magnitude min = 0 max = 6.16393
forceCoeffs output:
    Cd = -0.013689
    Cl = 0.581642
    Cm = 0.059539

Time = 7

DILUPBiCG:  Solving for Ux, Initial residual = 6.97614e-05, Final residual = 9.57514e-11, No Iterations 5
DILUPBiCG:  Solving for Uy, Initial residual = 0.000280219, Final residual = 1.82e-10, No Iterations 5
DILUPBiCG:  Solving for Uz, Initial residual = 6.51344e-06, Final residual = 2.49325e-11, No Iterations 5
GAMG:  Solving for p, Initial residual = 0.0732228, Final residual = 0.00731821, No Iterations 871
time step continuity errors : sum local = 1.70086e-06, global = -2.23902e-09, cumulative = -6.7499e-09
DILUPBiCG:  Solving for omega, Initial residual = 0.00702349, Final residual = 3.47449e-05, No Iterations 1
DILUPBiCG:  Solving for k, Initial residual = 0.00908902, Final residual = 4.9913e-05, No Iterations 1
bounding k, min: -1.34002 max: 3.64086 average: 0.00851153

THAT IS IT, THIS IS THE END OF THE LOG FILE!!!!!!!!


I tried to use bounded schemes for k and omega in fvSchemes but it seems that it does not recognize bounded scheme !

I would really appreciate if somebody can help.
Thank you

----------------
Moderator note: This specific topic was later discussed here in more detail: http://www.cfd-online.com/Forums/ope...m-1-6-ext.html
The remaining thread is on the topic of porting to foam-extend 3.1

miladrakhsha September 4, 2014 21:54

Immersed Boundary Method in OpenFOAM-3.1-ext
 
Has anyone ported the Immersed Boundary Method developed by ZeljkoTukovic and Professor Jasak in OpenFOAM-1.6-ext to foam-extend-3.1 yet?

I tried to compile the source codes but it gives me an error in the middle of the process. Is it possible at all to port that source code to the new Extend project?

This is the message I received:

Code:

./Allwmake
+ wmake surfaceNormal
Making dependency list for source file surfaceNormal.C
SOURCE=surfaceNormal.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/surfaceNormal.o
g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -Xlinker --add-needed -Xlinker --no-as-needed Make/linux64GccDPOpt/surfaceNormal.o -L/home/milad/foam/foam-extend-3.1/lib/linux64GccDPOpt \
        -ltriSurface    -lmeshTools -lfoam -liberty -ldl  -lrt -lm -o /home/milad/foam/milad-3.1/applications/bin/linux64GccDPOpt/surfaceNormal
+ wmake surfaceInvertNormal
Making dependency list for source file surfaceInvertNormal.C
SOURCE=surfaceInvertNormal.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/surfaceInvertNormal.o
g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -Xlinker --add-needed -Xlinker --no-as-needed Make/linux64GccDPOpt/surfaceInvertNormal.o -L/home/milad/foam/foam-extend-3.1/lib/linux64GccDPOpt \
        -ltriSurface    -lmeshTools -lfoam -liberty -ldl  -lrt -lm -o /home/milad/foam/milad-3.1/applications/bin/linux64GccDPOpt/surfaceInvertNormal
+ wmake libso immersedBoundary
Making dependency list for source file immersedBoundaryPolyPatch/immersedBoundaryPolyPatch.C
Making dependency list for source file immersedBoundaryPointPatch/immersedBoundaryPointPatch.C
Making dependency list for source file immersedBoundaryFvPatch/immersedBoundaryFvPatch.C
Making dependency list for source file immersedBoundaryFvPatch/immersedBoundaryFvPatchLeastSquaresFit.C
Making dependency list for source file immersedBoundaryFvPatch/immersedBoundaryFvPatchTriAddressing.C
Making dependency list for source file immersedBoundaryFvPatchField/immersedBoundaryFvPatchFields.C
Making dependency list for source file immersedBoundaryFvsPatchField/immersedBoundaryFvsPatchFields.C
Making dependency list for source file immersedBoundaryAdjustPhi/immersedBoundaryAdjustPhi.C
Making dependency list for source file refineImmersedBoundaryMesh/refineImmersedBoundaryMesh.C
SOURCE=immersedBoundaryPolyPatch/immersedBoundaryPolyPatch.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/surfMesh/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/sampling/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/dynamicMesh/dynamicMesh/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/immersedBoundaryPolyPatch.o
SOURCE=immersedBoundaryPointPatch/immersedBoundaryPointPatch.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/surfMesh/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/sampling/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/dynamicMesh/dynamicMesh/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/immersedBoundaryPointPatch.o
SOURCE=immersedBoundaryFvPatch/immersedBoundaryFvPatch.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/surfMesh/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/sampling/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/dynamicMesh/dynamicMesh/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/immersedBoundaryFvPatch.o
SOURCE=immersedBoundaryFvPatch/immersedBoundaryFvPatchLeastSquaresFit.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/surfMesh/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/sampling/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/dynamicMesh/dynamicMesh/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/immersedBoundaryFvPatchLeastSquaresFit.o
SOURCE=immersedBoundaryFvPatch/immersedBoundaryFvPatchTriAddressing.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/surfMesh/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/sampling/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/dynamicMesh/dynamicMesh/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/immersedBoundaryFvPatchTriAddressing.o
SOURCE=immersedBoundaryFvPatchField/immersedBoundaryFvPatchFields.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/surfMesh/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/sampling/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/dynamicMesh/dynamicMesh/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/immersedBoundaryFvPatchFields.o
SOURCE=immersedBoundaryFvsPatchField/immersedBoundaryFvsPatchFields.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/surfMesh/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/sampling/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/dynamicMesh/dynamicMesh/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/immersedBoundaryFvsPatchFields.o
SOURCE=immersedBoundaryAdjustPhi/immersedBoundaryAdjustPhi.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/surfMesh/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/sampling/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/dynamicMesh/dynamicMesh/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/immersedBoundaryAdjustPhi.o
SOURCE=refineImmersedBoundaryMesh/refineImmersedBoundaryMesh.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/surfMesh/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/sampling/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/dynamicMesh/dynamicMesh/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/refineImmersedBoundaryMesh.o
'/home/milad/foam/milad-3.1/lib/linux64GccDPOpt/libimmersedBoundary.so' is up to date.
+ wmake libso immersedBoundaryForce
Making dependency list for source file immersedBoundaryForces.C
Making dependency list for source file immersedBoundaryForcesFunctionObject.C
SOURCE=immersedBoundaryForces.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/postProcessing/functionObjects/forces/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/surfMesh/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/sampling/lnInclude    -I../immersedBoundary/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/immersedBoundaryForces.o
SOURCE=immersedBoundaryForcesFunctionObject.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/postProcessing/functionObjects/forces/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/surfMesh/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/meshTools/lnInclude    -I/home/milad/foam/foam-extend-3.1/src/sampling/lnInclude    -I../immersedBoundary/lnInclude -IlnInclude -I. -I/home/milad/foam/foam-extend-3.1/src/foam/lnInclude -I/home/milad/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/immersedBoundaryForcesFunctionObject.o
In file included from /home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvMatrices.H:40:0,
                from /home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvPatchFields.H:33,
                from /home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/volFields.H:41,
                from /home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvMatrix.H:40,
                from ../immersedBoundary/lnInclude/immersedBoundaryFvPatchField.C:29,
                from ../immersedBoundary/lnInclude/immersedBoundaryFvPatchField.H:367,
                from ../immersedBoundary/lnInclude/immersedBoundaryFvPatchFields.H:30,
                from immersedBoundaryForces.C:29:
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvScalarMatrix.H:56:1: error: invalid use of incomplete type ‘struct Foam::fvMatrix<double>’
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvPatchField.H:75:7: error: declaration of ‘struct Foam::fvMatrix<double>’
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvScalarMatrix.H:59:9: error: incomplete type ‘Foam::fvMatrix<double>’ used in nested name specifier
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvScalarMatrix.H:59:9: error: incomplete type ‘Foam::fvMatrix<double>’ used in nested name specifier
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvScalarMatrix.H:59:35: error: template argument 1 is invalid
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvScalarMatrix.H:62:2: error: invalid type in declaration before ‘;’ token
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvScalarMatrix.H:62:2: error: invalid use of incomplete type ‘struct Foam::fvMatrix<double>’
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvPatchField.H:75:7: error: declaration of ‘struct Foam::fvMatrix<double>’
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvScalarMatrix.H:65:1: error: ‘solverPerformance’ in ‘struct Foam::lduMatrix’ does not name a type
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvScalarMatrix.H:71:1: error: ‘solverPerformance’ in ‘struct Foam::lduMatrix’ does not name a type
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvScalarMatrix.H:77:47: error: invalid use of incomplete type ‘struct Foam::fvMatrix<double>’
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvPatchField.H:75:7: error: declaration of ‘struct Foam::fvMatrix<double>’
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvScalarMatrix.H:80:43: error: invalid use of incomplete type ‘struct Foam::fvMatrix<double>’
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvPatchField.H:75:7: error: declaration of ‘struct Foam::fvMatrix<double>’
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvScalarMatrix.H:83:44: error: invalid use of incomplete type ‘struct Foam::fvMatrix<double>’
/home/milad/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvPatchField.H:75:7: error: declaration of ‘struct Foam::fvMatrix<double>’
make: *** [Make/linux64GccDPOpt/immersedBoundaryForces.o] Error 1


Mojtaba.a September 6, 2014 13:58

Quote:

Originally Posted by miladrakhsha (Post 508967)
I am experiencing with the implementation of IBM in OpenFOAM. I am working with simpleIbFoam. It would be great if this method could be implemented in the future version of OpenFOAM ext by default as it is a very powerful method. However, I did not find the currrent implementation robust enough yet. My case terminates after a couple of iterations without any warning or any error message so I dont rally know where the problem is!!! My only gauss is that it has something to do with the "k" equation!
this is a small part of my log file:
...

I would really appreciate if somebody can help.
Thank you

Dear Milad,

You have got to be more specific. These are not enough information to help :).
What problem are you solving right now?
Are all implemented tutorials running fine?
Are you using OF1.6-ext?

I just started working with this method, and tutorials are running just fine, not facing any problems yet.

Best.

miladrakhsha September 6, 2014 14:25

Dear Mojtaba,

Yes all the tutorials that were provided are running smoothly. That was all the information I had! Well but to explain it more, I am trying to see if this method can be used to simulate the flow over complex geometry such as Vortex Generators. Therefore, I used simpleIbFoam to solve my problem. In addition I used upwind schemes for k and omega to ensure boundedness of the solution.

After working a couple of days with the ext-1.6 version I would say that this problem has something to do with the desensitization schemes in ext-1.6. I found that convective schemes cannot be discretized in this version like openFoam 2.2.0 or later versions. More pacifically, "Bounded" schemes were not developed as they are today in that version. BTW, I manage to remove the bounding "k" and "omega" message by using "bounded" scheme for surface normal gradient.

Now I am trying to to see if this method can be used in parallel. According to this presentation seems like parallelization has not been implemented in this method yet. (why exactly?) Also it would be great if anybody who has successfully ported those source file to new versions of OpenFOAM could share his/her experience here.

singhfme September 11, 2014 21:51

IBM implementation in foam-extend
 
I also get similar messages during compilation of libraries, e.g.
Code:

SOURCE=immersedBoundaryForces.C ;  g++ -m64 -Dlinux64 -DWM_DP -Wall -Wextra -Wno-unused-parameter -Wold-style-cast -Wnon-virtual-dtor -O3  -DNoRepository -ftemplate-depth-200 -I/opt/foam/foam-extend-3.1/src/finiteVolume/lnInclude    -I/opt/foam/foam-extend-3.1/src/postProcessing/functionObjects/forces/lnInclude    -I/opt/foam/foam-extend-3.1/src/surfMesh/lnInclude    -I/opt/foam/foam-extend-3.1/src/triSurface/lnInclude    -I/opt/foam/foam-extend-3.1/src/meshTools/lnInclude    -I/opt/foam/foam-extend-3.1/src/sampling/lnInclude    -I../immersedBoundary/lnInclude -IlnInclude -I. -I/opt/foam/foam-extend-3.1/src/foam/lnInclude -I/opt/foam/foam-extend-3.1/src/OSspecific/POSIX/lnInclude  -fPIC -c $SOURCE -o Make/linux64GccDPOpt/immersedBoundaryForces.o
In file included from /opt/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvMatrices.H:40:0,
                from /opt/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvPatchFields.H:33,
                from /opt/foam/foam-extend-3.1/src/finiteVolume/lnInclude/volFields.H:41,
                from /opt/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvMatrix.H:40,
                from ../immersedBoundary/lnInclude/immersedBoundaryFvPatchField.C:29,
                from ../immersedBoundary/lnInclude/immersedBoundaryFvPatchField.H:367,
                from ../immersedBoundary/lnInclude/immersedBoundaryFvPatchFields.H:30,
                from immersedBoundaryForces.C:29:
/opt/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvScalarMatrix.H:56:1: error: invalid use of incomplete type ‘class Foam::fvMatrix<double>’
 );
 ^
In file included from ../immersedBoundary/lnInclude/immersedBoundaryFvPatchField.H:42:0,
                from ../immersedBoundary/lnInclude/immersedBoundaryFvPatchFields.H:30,
                from immersedBoundaryForces.C:29:
/opt/foam/foam-extend-3.1/src/finiteVolume/lnInclude/fvPatchField.H:75:7: error: declaration of ‘class Foam::fvMatrix<double>’
 class fvMatrix;
      ^

How to get over this problem?

Mojtaba.a September 13, 2014 17:24

Dear Milad,

Compiling OpenFOAM 1.6-extended source code in foam-extended 3.1 is possible but it would need too much effort to do this.
Why don't you use OF 1.6?

Best.

wyldckat September 14, 2014 06:42

Greetings to all!

I've created a new branch "fe31" for building ImmersedBoundary
with foam-extend 3.1. For more instructions: http://openfoamwiki.net/index.php/Ex...oam-extend_3.1

I only did some quick testing and file adjustments in the tutorials. Please let me know if is there a tutorial which is not working properly.

Best regards,
Bruno

singhfme September 17, 2014 00:14

Immersed boundary in foam-extend 3.1
 
Thanks a lot for fe31 fork of IB toolkit. I have a small query based on icoIbFoam in fe31 and master forks. The following statements are missing from fe31 fork:
UEqn.boundaryManipulate(U.boundaryField());
// pressure field
pEqn.boundaryManipulate(p.boundaryField());
I am not sure how it will affect the velocity and pressure field solutions. Deletion of these lines is likely to affect IB modifications in the system matrix, and hence, the overall solution process.

wyldckat September 20, 2014 09:09

Hi singhfme,

I only removed those lines because I found the following commit in foam-extend 3.1's git history: http://sourceforge.net/p/openfoam-ex...2e8036b5248244

More specifically:
There you'll see that the method "boundaryManipulate()" was eliminated and it was replaced with "completeAssembly()", which in turn is now always called from within "fvMatrixSolve.C".

In addition, you can see online all of the changes I made in the branch "fe31": https://github.com/wyldckat/Immersed...y/commits/fe31 - there you'll see one comment referring to the commit I've mentioned above.


But as I mentioned in the previous post, I only did the port and some basic testing, I did not go through all of the necessary validation steps.

Best regards,
Bruno

hjasak September 21, 2014 03:15

For the record: we will release the latest version of immersed boundary in foam-extend-3.2

Hrv

singhfme September 21, 2014 22:15

Quote:

Originally Posted by wyldckat (Post 511055)
Hi singhfme,

I only removed those lines because I found the following commit in foam-extend 3.1's git history: http://sourceforge.net/p/openfoam-ex...2e8036b5248244

More specifically:
There you'll see that the method "boundaryManipulate()" was eliminated and it was replaced with "completeAssembly()", which in turn is now always called from within "fvMatrixSolve.C".

In addition, you can see online all of the changes I made in the branch "fe31": https://github.com/wyldckat/Immersed...y/commits/fe31 - there you'll see one comment referring to the commit I've mentioned above.


But as I mentioned in the previous post, I only did the port and some basic testing, I did not go through all of the necessary validation steps.

Best regards,
Bruno

Hi Bruno,
Thanks a lot for your kind clarification. I would try some validation runs with foam-extend-3.1.
Best regards,
Krishna

singhfme September 21, 2014 22:19

Quote:

Originally Posted by hjasak (Post 511125)
For the record: we will release the latest version of immersed boundary in foam-extend-3.2

Hrv

Dear Professor Jasak,
Thanks a lot for the info. I am eagerly awaiting the new version of IBM. Any hint on possible date of release?

With best regards,
Krishna

wyldckat September 28, 2014 09:00

Quote:

Originally Posted by singhfme (Post 511212)
Thanks a lot for the info. I am eagerly awaiting the new version of IBM. Any hint on possible date of release?

Quick answer: http://www.cfd-online.com/Forums/ope...er-2014-a.html

be_inspired October 14, 2014 13:17

I have a problem with the current implementation into 1.6-ext ( i suppose the same problem will be in 3.1-ext).
It seems like when the stl has several surfaces ( maybe perpendicular between them), sometimes IB does not know how to deal with it.

http://www.cfd-online.com/Forums/ope...tml#post514322

Mi first approach, that does not work yet, is only a stl were I have the tower and the nacelle of a wind turbine. The solver does not run:
Can`t find nearest triSurface point for cell 3644, (x y z)

My second step will be to see if vortex generators can be modeled in this way ( counterrotating maybe), so please miladrakhsha keep us informed.

hua1015 November 18, 2014 00:40

Dear Bruno,
I also did some quick testing in the tutorials_HJ/sphereInChannel with OF3.1.
Everything worked well but failed in parallel.
Here is my log for decomposePar command.
Code:

Build    : 3.1
Exec    : decomposePar
Date    : Nov 18 2014
Time    : 12:43:45
Host    : r710.mfm.com
PID      : 373
CtrlDict : /home/jhpan/foam/foam-extend-3.1/etc/controlDict
Case    : /home/jhpan/foam/foam-extend-3.1/extend-bazaar/ImmersedBoundary/tutorials_HJ/sphereInChannel
nProcs  : 1
SigFpe  : Enabling floating point exception trapping (FOAM_SIGFPE).
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time
--> FOAM Warning :
    From function dlLibraryTable::open(const fileName& functionLibName)
    in file db/dlLibraryTable/dlLibraryTable.C at line 85
    could not load /home/jhpan/foam/jhpan-3.1/lib/linux64GccDPOpt/libimmersedBoundary.so: undefined symbol: _ZTIN4Foam11fileFormats18surfaceFormatsCoreE
Time = 0
Create mesh for region region0
Calculating distribution of cells
Selecting decompositionMethod simple
Finished decomposition in 0.48 s
Calculating original mesh data
Distributing cells to processors
Distributing faces to processors
Calculating processor boundary addressing
Distributing points to processors
Constructing processor meshes
--> FOAM Warning :
    From function dlLibraryTable::open(const fileName& functionLibName)
    in file db/dlLibraryTable/dlLibraryTable.C at line 85
    could not load /home/jhpan/foam/jhpan-3.1/lib/linux64GccDPOpt/libimmersedBoundary.so: undefined symbol: _ZTIN4Foam11fileFormats18surfaceFormatsCoreE
Processor 0
    Number of cells = 52394
    Number of faces shared with processor 1 = 933
    Number of faces shared with processor 2 = 4066
    Number of processor patches = 2
    Number of processor faces = 4999
    Number of boundary faces = 1747
--> FOAM Warning :
    From function dlLibraryTable::open(const fileName& functionLibName)
    in file db/dlLibraryTable/dlLibraryTable.C at line 85
    could not load /home/jhpan/foam/jhpan-3.1/lib/linux64GccDPOpt/libimmersedBoundary.so: undefined symbol: _ZTIN4Foam11fileFormats18surfaceFormatsCoreE
Processor 1
    Number of cells = 52470
    Number of faces shared with processor 0 = 933
    Number of faces shared with processor 3 = 4118
    Number of processor patches = 2
    Number of processor faces = 5051
    Number of boundary faces = 1397
--> FOAM Warning :
    From function dlLibraryTable::open(const fileName& functionLibName)
    in file db/dlLibraryTable/dlLibraryTable.C at line 85
    could not load /home/jhpan/foam/jhpan-3.1/lib/linux64GccDPOpt/libimmersedBoundary.so: undefined symbol: _ZTIN4Foam11fileFormats18surfaceFormatsCoreE
Processor 2
    Number of cells = 52470
    Number of faces shared with processor 0 = 4066
    Number of faces shared with processor 3 = 910
    Number of processor patches = 2
    Number of processor faces = 4976
    Number of boundary faces = 1770
--> FOAM Warning :
    From function dlLibraryTable::open(const fileName& functionLibName)
    in file db/dlLibraryTable/dlLibraryTable.C at line 85
    could not load /home/jhpan/foam/jhpan-3.1/lib/linux64GccDPOpt/libimmersedBoundary.so: undefined symbol: _ZTIN4Foam11fileFormats18surfaceFormatsCoreE
Processor 3
    Number of cells = 52394
    Number of faces shared with processor 1 = 4118
    Number of faces shared with processor 2 = 910
    Number of processor patches = 2
    Number of processor faces = 5028
    Number of boundary faces = 1374
Number of processor faces = 10027
Max number of processor patches = 2
Max number of faces between processors = 5051
Processor 0: field transfer
--> FOAM Warning :
    From function dlLibraryTable::open(const fileName& functionLibName)
    in file db/dlLibraryTable/dlLibraryTable.C at line 85
    could not load /home/jhpan/foam/jhpan-3.1/lib/linux64GccDPOpt/libimmersedBoundary.so: undefined symbol: _ZTIN4Foam11fileFormats18surfaceFormatsCoreE
Processor 1: field transfer
--> FOAM Warning :
    From function dlLibraryTable::open(const fileName& functionLibName)
    in file db/dlLibraryTable/dlLibraryTable.C at line 85
    could not load /home/jhpan/foam/jhpan-3.1/lib/linux64GccDPOpt/libimmersedBoundary.so: undefined symbol: _ZTIN4Foam11fileFormats18surfaceFormatsCoreE
Processor 2: field transfer
--> FOAM Warning :
    From function dlLibraryTable::open(const fileName& functionLibName)
    in file db/dlLibraryTable/dlLibraryTable.C at line 85
    could not load /home/jhpan/foam/jhpan-3.1/lib/linux64GccDPOpt/libimmersedBoundary.so: undefined symbol: _ZTIN4Foam11fileFormats18surfaceFormatsCoreE
Processor 3: field transfer
--> FOAM Warning :
    From function dlLibraryTable::open(const fileName& functionLibName)
    in file db/dlLibraryTable/dlLibraryTable.C at line 85
    could not load /home/jhpan/foam/jhpan-3.1/lib/linux64GccDPOpt/libimmersedBoundary.so: undefined symbol: _ZTIN4Foam11fileFormats18surfaceFormatsCoreE
End.

Here is the error when using icoIbFoam in parallel.
Code:

Build    : 3.1
Exec    : icoIbFoam -parallel
Date    : Nov 18 2014
Time    : 12:50:13
Host    : compute-3-16.local
PID      : 34815
CtrlDict : /home/jhpan/foam/foam-extend-3.1/etc/controlDict
Case    : /home/jhpan/foam/foam-extend-3.1/extend-bazaar/ImmersedBoundary/tutorials_HJ/sphereInChannel
nProcs  : 4
Slaves :
3
(
compute-3-16.local.34816
compute-3-16.local.34817
compute-3-16.local.34818
)
Pstream initialized with:
    floatTransfer    : 0
    nProcsSimpleSum  : 0
    commsType        : blocking
SigFpe  : Enabling floating point exception trapping (FOAM_SIGFPE).
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time
Create mesh for time = 0
Reading transportProperties
Reading field p
Reading field U
Reading/calculating face flux field phi
Create immersed boundary cell mask
Create immersed boundary face mask
Found immersed boundary patch 0 named ibSphere
[1] Number of IB cells: 0
[3] Number of IB cells: 0
External flow
[0] Number of IB cells: 100
Starting time loop
[2] Number of IB cells: 100
Time = 0.05
Courant Number mean: 0 max: 0.8 velocity magnitude: 1
[compute-3-16.local:34815] *** An error occurred in MPI_Recv
[compute-3-16.local:34815] *** on communicator MPI_COMM_WORLD
[compute-3-16.local:34815] *** MPI_ERR_TRUNCATE: message truncated
[compute-3-16.local:34815] *** MPI_ERRORS_ARE_FATAL: your MPI job will now abort
--------------------------------------------------------------------------
mpirun has exited due to process rank 3 with PID 34818 on
node compute-3-16.local 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).
--------------------------------------------------------------------------
[compute-3-16.local:34814] 3 more processes have sent help message help-mpi-errors.txt / mpi_errors_are_fatal
[compute-3-16.local:34814] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ End of output ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- Program ended at:    Tue Nov 18 12:50:16 CST 2014
- Time consumed:      0:0:5
- Mails delivered to:  jhpan@r710.mfm.com
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

If I do not include [libs ( "libimmersedBoundary.so")] in controlDict. The decomposePar command will not report any warning. But the error is the same in parallel using icoIbFoam.

Sorry for a long text. Have you any idea about these problems?
Thank you.

hjasak November 18, 2014 04:32

The parallel implementation of the Immersed Boundary Method with FOAM-Extend-3.1 runs fine and we have tutorials to prove it.

My guess is that you are looking at user error. Are you sure you are doing everything right? If not, all I can offer you would be under a support contract.

Alternatively, since you have access to the full source code so please have a look where you got out-of-order parallel comms. This would happen eg. if you have removed the ibm patch from one of the processors or generally messed with the decomposition.

Hrv

hua1015 November 18, 2014 09:34

Dear Professor Jasak,
Thank you for your quick reply.
I got the codes from https://github.com/wyldckat/ImmersedBoundary and compiled in my Ubuntu 14.04 FOAM-extend 3.1.Everything worked well but failed in parallel. So I think I am doing everything right.
I do some test to find where the problem is. I use 2 processors to output messages about immersedBoundaryFvPatchField member function and (*this) field name. Below is the log file. Crash at the first time step.
Is it possible to send me a copy tutorial that you have run it fine in parallel? Maybe the cases downloaded from https://github.com/wyldckat/ImmersedBoundary have some problem. Here is my email: panjunhua13@mails.ucas.ac.cn


here is the icoIbFoam.log for tutorials_HJ/sphereInChannel case.
Code:

Build    : 3.1-f77b4801a214
Exec    : icoIbFoam -parallel
Date    : Nov 18 2014
Time    : 21:28:49
Host    : pjh-Veriton-D832
PID      : 8320
CtrlDict : /home/pjh/foam/foam-extend-3.1/etc/controlDict
Case    : /home/pjh/foam/ImmersedBoundary/tutorials_HJ/sphereInChannel
nProcs  : 2
Slaves :
1
(
pjh-Veriton-D832.8321
)

Pstream initialized with:
    floatTransfer    : 0
    nProcsSimpleSum  : 0
    commsType        : blocking
SigFpe  : Enabling floating point exception trapping (FOAM_SIGFPE).

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

Create mesh for time = 0

Reading transportProperties

Reading field p

Reading field U

Reading/calculating face flux field phi

Create immersed boundary cell mask
Create immersed boundary face mask
Found immersed boundary patch 0 named ibSphere
[1] Number of IB cells: 0
External flow
[0] Number of IB cells: 200

Starting time loop

Time = 0.05

Courant Number mean: 0 max: 0.8 velocity magnitude: 1
[0] updateCoeffs() imposeDirichletCondition()U
[0] imposeDirichletCondition()U
[1] updateCoeffs() imposeDirichletCondition()U
[1] imposeDirichletCondition()U
[1] imposeDeadCondition()U
[0] imposeDeadCondition()U
[0] evaluate()grad(interpolate(U.component(0)))
[0] updateCoeffs() imposeNeumannCondition()grad(interpolate(U.component(0)))
[0] imposeNeumannCondition()grad(interpolate(U.component(0)))
[1] evaluate()grad(interpolate(U.component(0)))
[1] updateCoeffs() imposeNeumannCondition()grad(interpolate(U.component(0)))
[1] imposeNeumannCondition()grad(interpolate(U.component(0)))
[pjh-Veriton-D832:8321] *** An error occurred in MPI_Recv
[pjh-Veriton-D832:8321] *** on communicator MPI_COMM_WORLD
[pjh-Veriton-D832:8321] *** MPI_ERR_TRUNCATE: message truncated
[pjh-Veriton-D832:8321] *** MPI_ERRORS_ARE_FATAL: your MPI job will now abort
--------------------------------------------------------------------------
mpirun has exited due to process rank 1 with PID 8321 on
node pjh-Veriton-D832 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).
--------------------------------------------------------------------------
[pjh-Veriton-D832:08319] 1 more process has sent help message help-mpi-errors.txt / mpi_errors_are_fatal
[pjh-Veriton-D832:08319] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages


Phicau November 18, 2014 10:19

Hi Hua,

this error rings a bell to me:

Code:

[pjh-Veriton-D832:8321] *** An error occurred in MPI_Recv
[pjh-Veriton-D832:8321] *** on communicator MPI_COMM_WORLD
[pjh-Veriton-D832:8321] *** MPI_ERR_TRUNCATE: message truncated
[pjh-Veriton-D832:8321] *** MPI_ERRORS_ARE_FATAL: your MPI job will now abort

It was also triggered by a parallel boundary condition I developed. The solution was found thanks to Bernhard:

Edit $WM_PROJECT_DIR/etc/controlDict and change commsType to nonBlocking .

You should try and see if this helps with your problem.

Best,

Pablo

hua1015 November 20, 2014 02:49

Dear Higuera,
Thank you for your help.
Your method is work for me!!! But I still have some questions.
1. There 3 types about commsType : blocking; scheduled ; nonBlocking. What is the difference between them?
2. some codes like below are included in my codes
// Parallel data exchange
{
IPstream fromProc
(
Pstream::blocking,
procI,
sizeof(label)
);

fromProc >> sizes[procI];
}

we can see " Pstream::blocking". Is it conflicting when change commsType to nonBlocking?

BTW, similar problem can be solved by changing commsType to nonBlocking(or blocking) for other parallel problems. (I did some search on cfdonline)

singhfme January 26, 2015 00:37

foam-extend-3.2
 
Quote:

Originally Posted by wyldckat (Post 512222)

Has foam-extend-3.2 been released?


All times are GMT -4. The time now is 20:28.