Picture of Emil Constantinescu

Emil Constantinescu
Office #: 2151

Computational Mathematician
Mathematics and Computer Science
Argonne National Laboratory

Fellow of the Computation Institute
University of Chicago



- Time stepping
- Uncertainty
ANL Stuff

Scalable Implicit-Explicit (IMEX) Algorithms and Software for Time-Dependent Multimodel PDEs

Funding: Office of Advanced Scientific Computing Research, Office of Science, Department of Energy

Synopsis: Develop highly adaptive and robust time integration methods. We achieve flexible integration
within the solvers hierarchy (ODEs <-> nonlinear <-> linear solves), with access to a host of scalable linear/nonlinear solver algorithms and parallel data structures, as well as the ability to compose custom linear/nonlinear solver strategies as dictated by the needs of the applications and time stepping algorithms.



  • Debojyoti Ghosh* and Emil M. Constantinescu, "Semi-implicit time integration of atmospheric flows with characteristic-based flux partitioning." SIAM Journal on Scientific Computing (SISC), Submitted, 2015. [Preprint # ANL/MCS-P5417-1015].


  •  Shrirang Abhyankar, Emil M. Constantinescu,Barry Smith, Alexander J. Flueck, and Daniel A. Maldonado "Acceleration of dynamic simulations using parallel Newton-GMRES-Schwarz methods." IEEE Transactions on Smart Grid Special Issue on High Performance Computing (HPC) Applications for a More Resilient and Efficient Power Grid, Submitted, 2015.


  • Debojyoti Ghosh* and Emil M. Constantinescu, "A well-balanced conservative finite-difference algorithm for atmospheric flows." AAIA Journal, Accepted, 2015. [Preprint # ANL/MCS-P5371-0615].


  • Debojyoti Ghosh*, Emil M. Constantinescu, and Jed Brown, "Efficient implementation of non-linear compact schemes on massively-parallel platforms." SIAM Journal on Scientific Computing (SISC), Vol. 37(3), Pages C354-C383, 2015. -> Technical report version.


  • Debojyoti Ghosh* and Emil M. Constantinescu, "Nonlinear compact finite-difference schemes with semi-implicit time stepping." LCNS, Submitted, 2014.


  • Emil Constantinescu, "Estimating Global Errors in Time Stepping.", Mathematics of Computation, Submitted, 2015. [Preprint # ANL/MCS-P5077-0214]


  • Shrirang Abhyankar*, Barry Smith, and Emil M. Constantinescu, "Evaluation of overlapping restricted additive Schwarz preconditioning for parallel solution of very large power flow problems." Proceedings of the 3rd International Workshop on High Performance Computing, Networking and Analytics for the Power Grid, 2013.


  • David E. Keyes, Lois Curfman McInnes, Carol Woodward, William Gropp, Eric Myra, Michael Pernice, John Bell, Jed Brown, Alain Clo, Jeffrey Connors, Emil Constantinescu, Don Estep, Kate Evans, Charbel Farhat, Ammar Hakim, Glenn Hammond, Glen Hansen, Judith Hill, Tobin Isaac, Xiaomin Jiao, Kirk Jordan, Dinesh Kaushik, Efthimios Kaxiras, Alice Koniges, Kihwan Lee, Aaron Lott, Qiming Lu, John Magerlein, Reed Maxwell, Michael McCourt, Miriam Mehl, Roger Pawlowski, Amanda Peters Randles, Daniel Reynolds, Beatrice Rivière, Ulrich Rüde, Tim Scheibe, John Shadid, Brendan Sheehan, Mark Shephard, Andrew Siegel, Barry Smith, Xianzhu Tang, Cian Wilson, and Barbara Wohlmuth "Multiphysics Simulations: Challenges and Opportunities." International Journal of High Performance Computing Applications, 27(1): 4-83, 2013. -->> Tech Report verion:


  • Emil M. Constantinescu and Adrian Sandu, "Extrapolated multirate methods for differential equations with multiple time scales." Journal of Scientific Computing, Vol. 56(1), pp 28-44, 2013.


  • Francis X Giraldo, James F. Kelly, and Emil Constantinescu, "Implicit-explicit formulations of a three-dimensional nonhydrostatic unified model of the atmosphere (NUMA)." SIAM Journal on Scientific Computing (SISC), Vol 35(5), pp B1162-B1194, 2013. [Preprint # ANL/MCS-P2083-0512]



Results obtained with a incompressible Navier-Stokes code developed by Debojyoti Ghosh. (video)

sphere sphere
Simulation of a steady flow around a sphere with Re 100 The solutions were all obtained with 4th order central differencing of the convective terms, 2nd order central for the viscous terms Prelimiary scalability results

Optimization: GAMS | BARON

PETSc's corner:

Doxygen manual

Developer guidelines:

Start with this: https://bitbucket.org/petsc/petsc/wiki/developer-instructions-git


To add petsc-master: git remote add petsc-master git@bitbucket.org:petsc/petsc.git

To rebase:
cd petsc-dev-rehab-rk
git pull
git checkout master
git pull petsc-master master
git push
git checkout emil/ts-rk-rehab
git rebase master
git push -f

To rebase among users: git pull --rebase [to preserve any uncomitted changes]

Version control tools (GUI)


Downloading sources:

Release sources Developer's
hg clone https://emconsta@bitbucket.org/petsc/petsc-3.3

hg clone https://emconsta@bitbucket.org/petsc/buildsystem-3.3 petsc-3.3/config/BuildSystem
git clone https://bitbucket.org/petsc/petsc petsc-dev
with ssh key: git clone git@bitbucket.org:petsc/petsc.git petsc-dev

hg clone https://emconsta@bitbucket.org/petsc/petsc-dev petsc-dev

hg clone https://emconsta@bitbucket.org/petsc/buildsystem petsc-dev/config/BuildSystem

Compiling on MAC:

Optimized Debug

./configure --with-cc=gcc --with-fc=gfortran --download-mpich --with-debugging=0 --PETSC_ARCH=arch-mac-opt --with-shared-libraries --download-sundials=yes --with-mpi4py=yes --download-mpi4py=yes --PETSC_DIR=$PWD

make PETSC_DIR=$PWD PETSC_ARCH=arch-mac-opt all test

./configure --with-cc=gcc --with-fc=gfortran --download-mpich --PETSC_ARCH=arch-mac --with-shared-libraries --download-sundials=yes --with-mpi4py=yes --download-mpi4py=yes --PETSC_DIR=$PWD

make PETSC_DIR=$PWD PETSC_ARCH=arch-mac all test

Compiling on Linux:

Optimized Debug

configure --PETSC_ARCH=arch-linux2-c-opt --download-sundials=yes --with-debugging=0 --download-mpich --PETSC_DIR=$PWD

make PETSC_DIR=$PWD PETSC_ARCH=arch-linux2-c-opt all test

./configure --with-cc=gcc --with-fc=gfortran --download-mpich=1 --PETSC_ARCH=arch-linux2-c-debug --download-sundials=yes --PETSC_DIR=$PWD

make PETSC_DIR=$PWD PETSC_ARCH=arch-linux2-c-debug all test

Running examples:

In src/ts/examples/tutorials:

ex22 -ts_type arkimex -ts_adapt_type none -ts_arkimex_fully_implicit -ts_monitor_draw_solution -da_grid_x 100

ex22 -ts_type arkimex -ts_adapt_type basic -ts_arkimex_fully_implicit -ts_monitor_draw_solution -da_grid_x 200 -ts_adapt_dt_max 0.1 -ts_monitor_sp_eig -ts_monitor_lg_timestep -snes_monitor -ts_monitor -ts_adapt_monitor -ts_max_snes_failures -1 -log_summary


amplifier_dae_implicit -ksp_max_it 5000000 -ts_rtol 1e-2 -ts_adapt_type basic -ksp_rtol 1e-8 -snes_rtol 1e-8 -ts_monitor_lg_solution -ts_monitor_lg_timestep -lg_indicate_data_points 0 -ts_adapt_dt_min 1e-04 -ts_adapt_dt_max 2e-00 -ts_arkimex_type 2e -ts_adapt_basic_always_accept true -ts_adapt_monitor -ts_monitor_sp_eig -ts_max_snes_failures -1

ex31 -ts_type rk -ts_adapt_type none -ts_view -ts_adapt_monitor -ts_exact_final_time MATCHSTEP

ex31 -ts_type rk -ts_rk_type 5f -ts_adapt_type basic -ts_view -ts_monitor_lg_solution -ts_monitor_lg_timestep -lg_indicate_data_points 0 -ts_adapt_monitor -ts_exact_final_time MATCHSTEP