Dear Dr. Bangerth,

It seems that the package
python-pytrilinos<http://packages.debian.org/sid/python-pytrilinos>was
not installed, which has an infamous dependency problem of python<2.7
though I have python2.6. Therefore I have to switch to build trilinos
without mpi myself.

List to the end of email is the summary of building dealii with
*umfpack/petsc/trilinos
without threads or mpi
*

Some tips I realized when I tried to compare dealii default/trilinos/petsc
solvers.

1. Is it convenient for you to add an interface fpr PETScWrapper like

void PETScWrappers::SolverBase::solve ( const
SparseMatrix<http://www.dealii.org/developer/doxygen/deal.II/classTrilinosWrappers_1_1SparseMatrix.html>&
*A*,

::Vector<http://www.dealii.org/developer/doxygen/deal.II/classTrilinosWrappers_1_1Vector.html><
double <http://www.dealii.org/developer/doxygen/deal.II/classdouble.html> >
&  *x*,

const 
::Vector<http://www.dealii.org/developer/doxygen/deal.II/classTrilinosWrappers_1_1Vector.html><
double <http://www.dealii.org/developer/doxygen/deal.II/classdouble.html> >
&  *b*,

const 
PreconditionBase<http://www.dealii.org/developer/doxygen/deal.II/classTrilinosWrappers_1_1PreconditionBase.html>&
*preconditioner*
)
so that we won't have to use PETScWrapper::Vector, just like there are two
versions of TrilinosWrappers::SolveBase::solvefor, which makes life much
easier :)

2. Comparing for instance
TrilinosWrappers::SolverCG::SolverCG (
SolverControl<http://www.dealii.org/developer/doxygen/deal.II/classSolverControl.html>&
*cn*,

const 
AdditionalData<http://www.dealii.org/developer/doxygen/deal.II/structTrilinosWrappers_1_1SolverBase_1_1AdditionalData.html>&
*data* = 
AdditionalData<http://www.dealii.org/developer/doxygen/deal.II/structTrilinosWrappers_1_1SolverBase_1_1AdditionalData.html>()
)
<http://www.dealii.org/developer/doxygen/deal.II/classPETScWrappers_1_1SolverCG.html#ae11665300e3bf835733907d41488ed06>PETScWrappers::SolverCG::SolverCG
( 
SolverControl<http://www.dealii.org/developer/doxygen/deal.II/classSolverControl.html>&
*cn*,

const MPI_Comm &  *mpi_communicator* = PETSC_COMM_SELF,

const 
AdditionalData<http://www.dealii.org/developer/doxygen/deal.II/structPETScWrappers_1_1SolverCG_1_1AdditionalData.html>&
*data* = 
AdditionalData<http://www.dealii.org/developer/doxygen/deal.II/structPETScWrappers_1_1SolverCG_1_1AdditionalData.html>
() )
The AdditionalData is almost always used for SolverGMRES, but
mpi_comminicator for PETSc w/o MPI scarcely useful. To make it consistent
with TrilinosWrappers, do you think it is better to switch 2nd and 3rd
parameter so that we can skip PETSC_COMM_SELF for non-mpi PETSc build, but
instead switching library for same coding by

using PETScWrappers::SolverCG;
using TrilinosWrappers::SolverCG;

3. Trilinos/PETSc SparseMatrix/Vector/PreconditionXXX does not require
<double>, while dealii::SparseMatrix<double>, Trilinos/PETSc SolverXXX do
not require argument, while dealii::SolverXXX<Vector<double> >, is it
convenient to provide a default <T=double> <T=Vector<double> to make it
more consistent? Forgive me if I am providing wrong suggestions :)

####################################################################
*## PETSc from Installing PETSc in /usr/local*
* *
sudo mkdir /usr/local/lib/petsc
sudo chown jyin1:jyin1 /usr/local/lib/petsc
wget
http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.2-p5.tar.gz
tar xvf petsc-lite-3.2-p5.tar.gz
cd petsc-3.2-p5
#export PETSC_DIR=$PWD #only if PETSC_DIR other value
./configure --with-mpi=0 --with-fc=0 --with-cxx=0 --with-debugging=0
--with-shared-libraries --with-x=0 --CFLAGS='-O3' \
PETSC_ARCH=linux-gnu-c-opt
#make install #already install by make in current folder
*
## Trilinos, from deal.II website
*
mkdir
build
cd
build

cmake -D Trilinos_ENABLE_OPTIONAL_PACKAGES:BOOL=ON
\
      -D Trilinos_ENABLE_Sacado:BOOL=ON
\
      -D Trilinos_ENABLE_Stratimikos:BOOL=ON
\
      -D CMAKE_BUILD_TYPE:STRING=RELEASE
\
      -D CMAKE_CXX_FLAGS:STRING="-g -O3"
\
      -D CMAKE_C_FLAGS:STRING="-g -O3"
\
      -D CMAKE_FORTRAN_FLAGS:STRING="-g -O5"
\
      -D Trilinos_EXTRA_LINK_FLAGS:STRING="-lgfortran"
\
      -D CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
\
      -D Trilinos_VERBOSE_CONFIGURE:BOOL=FALSE
\
      -D TPL_ENABLE_MPI:BOOL=OFF
\
      -D CMAKE_INSTALL_PREFIX:PATH=/usr/local
\
      -D BUILD_SHARED_LIBS:BOOL=ON
..


#add #include <stddef.h> to packages/teuchos/src/Teuchos_ConfigDefs.hpp in
order to get rid of error: 'ptrdiff_t' does not name a type...
#add #ifndef _GLIBCXX_USE_C99_MATH before namespace std { ... } #endif to
packages/sacado/src/Sacado_cmath.hpp according to dealii FAQ.


make

sudo make install

*## deal.II disable-threads no mpi
*
 cd ~/svn/deal.II
./configure --with-umfpack-include=/usr/include/suitesparse
--with-umfpack-libs=/usr/lib \
--with-petsc=/usr/local/lib/petsc/petsc-3.2-p5
--with-petsc-arch=linux-gnu-c-opt \
--with-trilinos-include=/usr/local/include
--with-trilinos-libs=/usr/local/lib \
--with-blas --with-lapack \
--disable-threads \
#--enable-mpi --with-metis-include=/usr/include/metis
--with-metis-libs=/usr/lib

#--with-petsc=/usr/local/lib/petsc/petsc-3.2-p5
--with-petsc-arch=linux-gnu-c-opt
#compared to debian MPI: --with-petsc=/usr/lib/petscdir/3.1
--with-petsc-arch=linux-gnu-c-opt

make
add -L/usr/local/lib/petsc/petsc-
3.2-p5/linux-gnu-c-opt/lib to common/Make.global_options LDFLAGS #why do we
need add this again?


Jichao Yin
_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to