[petsc-dev] tao and complex numbers

Lisandro Dalcin dalcinl at gmail.com
Sun Feb 8 13:09:18 CST 2015

>    Maybe tao.h can signal an error on complex only when used for anything BUT the tao/interface. Then you can build your part but users trying to use it will get a very helpful error message.

IOW, are you proposing to add a preprocessor define to control the
erroring of #include <tao.h> ? That should definitely work. We can
silent the error to build tao/interface and petsc4py by #defining
something, but in user code you get an #error, something like

// file: include/petsctao.h
#ifndef __TAO_H
#define __TAO_H

#if defined(PETSC_USE_COMPLEX)
#if !defined(PETSC_TAO_INTERFACE) /*or whatever name you like */
# error "TAO not supported for complex scalars"

.... rest of tao.h


This way, we build tao/interface and petsc4py sources with

#include "petsc.h"
#include "tao.h"

PS: Of course, you need to fix petsc.h to not include petsctao.h for
complex builds.

I'm fine with an approach like this one, so go ahead.

Lisandro Dalcin
Research Scientist
Computer, Electrical and Mathematical Sciences & Engineering (CEMSE)
Numerical Porous Media Center (NumPor)
King Abdullah University of Science and Technology (KAUST)

4700 King Abdullah University of Science and Technology
al-Khawarizmi Bldg (Bldg 1), Office # 4332
Thuwal 23955-6900, Kingdom of Saudi Arabia

Office Phone: +966 12 808-0459

More information about the petsc-dev mailing list