Hello,
I followed the user Guide and installed every required packages. Now I can successfully execute some examples in “showCases”, such as cavity2d, cylinder2d, multiComponent2d etc. I have to say Palabos is really amazing, fantastic!
However, I cannot implement those 3d examples. For instance, when I change into ~/showCases/cavity3d/ and type “make”, I get the error messages as follows:
=========================================================================
…
In file included from /home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/headers3D.hh:42:0,
from /home/liqian/Desktop/Palabos/palabos-v1.0r1/src/palabos3D.hh:29,
from cavity3d.cpp:33:
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh: In function ‘void plb::instantiateOuterNLDboundary(plb::MultiBlockLattice3D<T, Descriptor>&, plb::Box3D) [with T = double, Descriptor = plb::descriptors::D3Q19Descriptor]’:
cavity3d.cpp:58:66: instantiated from here
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:301:5: error: cannot allocate an object of abstract type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:50:7: note: because the following virtual functions are pure within ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’:
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/atomicBlock/dataProcessingFunctional3D.h:66:18: note: virtual void plb::BoxProcessingFunctional3D::getTypeOfModification(std::vectorplb::modif::ModifT&) const
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:303:5: error: cannot allocate an object of abstract type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:50:7: note: since type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:305:5: error: cannot allocate an object of abstract type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:50:7: note: since type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:307:5: error: cannot allocate an object of abstract type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:50:7: note: since type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:309:5: error: cannot allocate an object of abstract type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:50:7: note: since type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:311:5: error: cannot allocate an object of abstract type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:50:7: note: since type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
cavity3d.cpp:58:66: instantiated from here
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:314:5: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:66:7: note: because the following virtual functions are pure within ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’:
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/atomicBlock/dataProcessingFunctional3D.h:66:18: note: virtual void plb::BoxProcessingFunctional3D::getTypeOfModification(std::vectorplb::modif::ModifT&) const
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:316:5: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:66:7: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:318:5: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:66:7: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:320:5: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:66:7: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:322:5: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:66:7: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:324:5: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:66:7: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:326:5: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:66:7: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:328:5: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:66:7: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:330:5: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:66:7: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:332:5: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:66:7: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:334:5: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:66:7: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:336:5: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:66:7: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
cavity3d.cpp:58:66: instantiated from here
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:339:5: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:82:7: note: because the following virtual functions are pure within ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’:
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/atomicBlock/dataProcessingFunctional3D.h:66:18: note: virtual void plb::BoxProcessingFunctional3D::getTypeOfModification(std::vectorplb::modif::ModifT&) const
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:341:5: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:82:7: note: since type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:343:5: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:82:7: note: since type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:345:5: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:82:7: note: since type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:347:5: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:82:7: note: since type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:349:5: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:82:7: note: since type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:351:5: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:82:7: note: since type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:353:5: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:82:7: note: since type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
cavity3d.cpp: In function ‘void writeGifs(BlockLatticeT&, const plb::IncomprFlowParam&, plb::plint) [with BlockLatticeT = plb::MultiBlockLattice3D<double, plb::descriptors::D3Q19Descriptor>, plb::plint = long int]’:
cavity3d.cpp:158:46: instantiated from here
cavity3d.cpp:84:17: warning: unused variable ‘nz’ [-Wunused-variable]
In file included from /home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/headers3D.hh:41:0,
from /home/liqian/Desktop/Palabos/palabos-v1.0r1/src/palabos3D.hh:29,
from cavity3d.cpp:33:
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaryDynamics3D.hh: In member function ‘void plb::NLD_VelocityNeumannBoundaryDynamics3D<T, Descriptor>::edgeBoundaryCompletion(int, int, int, plb::plint, plb::plint, plb::plint, plb::BlockLattice3D<T, Descriptor>&) [with T = double, Descriptor = plb::descriptors::D3Q19Descriptor, plb::plint = long int]’:
cavity3d.cpp:189:1: instantiated from here
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaryDynamics3D.hh:889:25: warning: unused variable ‘cell’ [-Wunused-variable]
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaryDynamics3D.hh: In member function ‘void plb::NLD_VelocityBoundaryDynamics3D<T, Descriptor>::cornerBoundaryCompletion(int, int, int, plb::plint, plb::plint, plb::plint, plb::BlockLattice3D<T, Descriptor>&) [with T = double, Descriptor = plb::descriptors::D3Q19Descriptor, plb::plint = long int]’:
cavity3d.cpp:189:1: instantiated from here
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaryDynamics3D.hh:647:25: warning: unused variable ‘cell’ [-Wunused-variable]
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaryDynamics3D.hh: In constructor ‘plb::NLD_VelocityPlaneUtil3D<T, Descriptor>::NLD_VelocityPlaneUtil3D(int, int, plb::plint, plb::plint, plb::plint, plb::BlockLattice3D<T, Descriptor>&, plb::NonLocalBoundaryDynamics3D<T, Descriptor>&) [with T = double, Descriptor = plb::descriptors::D3Q19Descriptor, plb::plint = long int]’:
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaryDynamics3D.hh:866:62: instantiated from ‘void plb::NLD_VelocityNeumannBoundaryDynamics3D<T, Descriptor>::planeBoundaryCompletion(int, int, plb::plint, plb::plint, plb::plint, plb::BlockLattice3D<T, Descriptor>&) [with T = double, Descriptor = plb::descriptors::D3Q19Descriptor, plb::plint = long int]’
cavity3d.cpp:189:1: instantiated from here
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaryDynamics3D.hh:297:13: warning: unused variable ‘direction1’ [-Wunused-variable]
/home/liqian/Desktop/Palabos/palabos-v1.0r1/src/boundaryCondition/NLD_boundaryDynamics3D.hh:298:13: warning: unused variable ‘direction2’ [-Wunused-variable]
mpicxx -o /home/liqian/Desktop/Palabos/palabos-v1.0r1/src/multiBlock/staticRepartitions2D.o -c -Wall -Wnon-virtual-dtor -O3 -DPLB_MPI_PARALLEL -DPLB_USE_POSIX -I/home/liqian/Desktop/Palabos/palabos-v1.0r1/src -I/home/liqian/Desktop/Palabos/palabos-v1.0r1/externalLibraries /home/liqian/Desktop/Palabos/palabos-v1.0r1/src/multiBlock/staticRepartitions2D.cpp
scons: *** [cavity3d.o] Error 1
scons: building terminated because of errors.
make: *** [compile] Error 2
I did nothing with the original code, but just wanted to have a try and see what I could get.
Can anyone tell me how I can figure out this problem and allow myself see the correct results?
I’m looking forward to your reply. Thanks a million!
Regards,
Chancey