error when making cavity3d

Hi, all,

I encountered a problem when making cavity3d. I am wondering if anybody can figure me out of this problem.

Thank you very much.

The compiler information I used is

[cavity3d]$ mpicxx --version
c++ (GCC) 4.4.1 20090725 (Red Hat 4.4.1-2)
Copyright © 2009 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

The error message is as the following.

[cavity3d]$ make
python …/…/…/scons/scons.py -j 2 -f …/…/…/SConstruct palabosRoot=…/…/… projectFiles=“cavity3d.cpp” optimize=true debug=true profile=false MPIparallel=true SMPparallel=true usePOSIX=true serialCXX=g++ parallelCXX=mpicxx compileFlags="-Wall -Wnon-virtual-dtor" linkFlags="" optimFlags="-O3" debugFlags="-g" profileFlags="-pg" libraryPaths="" includePaths="" libraries=""
scons: Reading SConscript files …
scons: done reading SConscript files.
scons: Building targets …
mpicxx -o cavity3d.o -c -Wall -Wnon-virtual-dtor -O3 -g -DPLB_DEBUG -DPLB_MPI_PARALLEL -DPLB_SMP_PARALLEL -DPLB_USE_POSIX -I/home/paean/devel/palabos-v1.0r1/src -I/home/paean/devel/palabos-v1.0r1/externalLibraries cavity3d.cpp
mpicxx -o /home/paean/devel/palabos-v1.0r1/src/parallelism/parallelBlockCommunicator2D.o -c -Wall -Wnon-virtual-dtor -O3 -g -DPLB_DEBUG -DPLB_MPI_PARALLEL -DPLB_SMP_PARALLEL -DPLB_USE_POSIX -I/home/paean/devel/palabos-v1.0r1/src -I/home/paean/devel/palabos-v1.0r1/externalLibraries /home/paean/devel/palabos-v1.0r1/src/parallelism/parallelBlockCommunicator2D.cpp
mpicxx -o /home/paean/devel/palabos-v1.0r1/src/parallelism/parallelStatistics.o -c -Wall -Wnon-virtual-dtor -O3 -g -DPLB_DEBUG -DPLB_MPI_PARALLEL -DPLB_SMP_PARALLEL -DPLB_USE_POSIX -I/home/paean/devel/palabos-v1.0r1/src -I/home/paean/devel/palabos-v1.0r1/externalLibraries /home/paean/devel/palabos-v1.0r1/src/parallelism/parallelStatistics.cpp
mpicxx -o /home/paean/devel/palabos-v1.0r1/src/parallelism/mpiManager.o -c -Wall -Wnon-virtual-dtor -O3 -g -DPLB_DEBUG -DPLB_MPI_PARALLEL -DPLB_SMP_PARALLEL -DPLB_USE_POSIX -I/home/paean/devel/palabos-v1.0r1/src -I/home/paean/devel/palabos-v1.0r1/externalLibraries /home/paean/devel/palabos-v1.0r1/src/parallelism/mpiManager.cpp
mpicxx -o /home/paean/devel/palabos-v1.0r1/src/parallelism/parallelBlockCommunicator3D.o -c -Wall -Wnon-virtual-dtor -O3 -g -DPLB_DEBUG -DPLB_MPI_PARALLEL -DPLB_SMP_PARALLEL -DPLB_USE_POSIX -I/home/paean/devel/palabos-v1.0r1/src -I/home/paean/devel/palabos-v1.0r1/externalLibraries /home/paean/devel/palabos-v1.0r1/src/parallelism/parallelBlockCommunicator3D.cpp
mpicxx -o /home/paean/devel/palabos-v1.0r1/src/parallelism/sendRecvPool.o -c -Wall -Wnon-virtual-dtor -O3 -g -DPLB_DEBUG -DPLB_MPI_PARALLEL -DPLB_SMP_PARALLEL -DPLB_USE_POSIX -I/home/paean/devel/palabos-v1.0r1/src -I/home/paean/devel/palabos-v1.0r1/externalLibraries /home/paean/devel/palabos-v1.0r1/src/parallelism/sendRecvPool.cpp
In file included from /home/paean/devel/palabos-v1.0r1/src/boundaryCondition/headers3D.hh:43,
from /home/paean/devel/palabos-v1.0r1/src/palabos3D.hh:30,
from cavity3d.cpp:34:
/home/paean/devel/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: instantiated from here
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:301: error: cannot allocate an object of abstract type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:51: note: because the following virtual functions are pure within ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’:
/home/paean/devel/palabos-v1.0r1/src/atomicBlock/dataProcessingFunctional3D.h:66: note: virtual void plb::BoxProcessingFunctional3D::getTypeOfModification(std::vector<plb::modif::ModifT, std::allocatorplb::modif::ModifT >&) const
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:303: error: cannot allocate an object of abstract type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:51: note: since type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:305: error: cannot allocate an object of abstract type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:51: note: since type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:307: error: cannot allocate an object of abstract type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:51: note: since type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:309: error: cannot allocate an object of abstract type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:51: note: since type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:311: error: cannot allocate an object of abstract type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:51: note: since type ‘plb::ExecutePlaneNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
cavity3d.cpp:58: instantiated from here
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:314: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:67: note: because the following virtual functions are pure within ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’:
/home/paean/devel/palabos-v1.0r1/src/atomicBlock/dataProcessingFunctional3D.h:66: note: virtual void plb::BoxProcessingFunctional3D::getTypeOfModification(std::vector<plb::modif::ModifT, std::allocatorplb::modif::ModifT >&) const
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:316: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:67: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:318: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:67: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:320: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:67: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:322: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:67: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:324: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:67: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:326: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:67: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:328: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:67: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:330: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:67: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:332: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:67: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:334: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:67: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:336: error: cannot allocate an object of abstract type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:67: note: since type ‘plb::ExecuteEdgeNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
cavity3d.cpp:58: instantiated from here
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:339: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:83: note: because the following virtual functions are pure within ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’:
/home/paean/devel/palabos-v1.0r1/src/atomicBlock/dataProcessingFunctional3D.h:66: note: virtual void plb::BoxProcessingFunctional3D::getTypeOfModification(std::vector<plb::modif::ModifT, std::allocatorplb::modif::ModifT >&) const
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:341: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:83: note: since type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:343: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:83: note: since type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:345: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:83: note: since type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:347: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:83: note: since type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:349: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:83: note: since type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:351: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:83: note: since type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’ has pure virtual functions
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.hh:353: error: cannot allocate an object of abstract type ‘plb::ExecuteCornerNLD_3D<double, plb::descriptors::D3Q19Descriptor>’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaries3D.h:83: 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>]’:
cavity3d.cpp:158: instantiated from here
cavity3d.cpp:84: warning: unused variable ‘nz’
In file included from /home/paean/devel/palabos-v1.0r1/src/boundaryCondition/headers3D.hh:42,
from /home/paean/devel/palabos-v1.0r1/src/palabos3D.hh:30,
from cavity3d.cpp:34:
/home/paean/devel/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]’:
cavity3d.cpp:189: instantiated from here
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaryDynamics3D.hh:889: warning: unused variable ‘cell’
/home/paean/devel/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]’:
cavity3d.cpp:189: instantiated from here
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaryDynamics3D.hh:647: warning: unused variable ‘cell’
In file included from /home/paean/devel/palabos-v1.0r1/src/boundaryCondition/headers3D.hh:42,
from /home/paean/devel/palabos-v1.0r1/src/palabos3D.hh:30,
from cavity3d.cpp:34:
/home/paean/devel/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]’:
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaryDynamics3D.hh:866: 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]’
cavity3d.cpp:189: instantiated from here
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaryDynamics3D.hh:297: warning: unused variable ‘direction1’
/home/paean/devel/palabos-v1.0r1/src/boundaryCondition/NLD_boundaryDynamics3D.hh:298: warning: unused variable ‘direction2’
scons: *** [cavity3d.o] Error 1
scons: building terminated because of errors.
make: *** [compile] Error 2

Best Regards,
Kai

It seems have been fixed in some other post.

Sorry for not checking carefully before posting the new message.

Regards,
Kai