Download Latest Version daetools-cxx-sdk-2.5.0.zip (54.2 MB)
Email in envelope

Get an email when there's a new version of DAE Tools Project

Name Modified Size InfoDownloads / Week
Parent folder
daetools-1.8.1-win32.zip 2019-03-15 156.9 MB
readme.txt 2019-03-15 7.4 kB
daetools-1.8.1-win64.zip 2019-03-15 177.0 MB
daetools-1.8.1-macos-x86_64.tar.gz 2018-08-22 207.8 MB
daetools-1.8.1-gnu_linux-x86_64.tar.gz 2018-08-22 212.9 MB
Totals: 5 Items   754.6 MB 0
                DAE Tools v1.8.1 (22 August 2018)

Supported platforms: GNU/Linux (x86_64), macOS (x86_64) and Windows (x86 and x64).

Binaries provided for GNU/Linux, macOS and Windows (python 2.7, 3.4, 3.5, 3.6 and 3.7). 

Linux binaries compiled with:
 - g++ 6.3 (libc 2.24)
 - g++ 4.9 (libc 2.19)
Windows binaries compiled with msvc++ 2015.
macOS binaries compiled with g++ 6.3 and XCode 7.3.1.

All platforms use PyQt5.

                                Installation

All platforms (GNU/Linux, macOS, Windows):

  Unpack the archive and run (may require sudo): 
  python setup.py install

Release info:
    The new version brings the support for the Open Compute Stack (OpenCS) framework
    and fully working iterative linear solvers (Sundials and Trilinos AztecOO GMRES).
                       
                                 Changelog
                            
- Open Compute Stack (OpenCS) framework:
   - Libraries:
      - OpenCS_Models
      - OpenCS_Evaluators
      - OpenCS_Simulators
   - Concepts:
      - Compute Stack (header-only C99: a postfix notation expression stack)
      - Compute Stack Machine (header-only C99: a stack machine for evaluation of a single equation)
      - Compute Stack Evaluator (C++: an interface for parallel evaluation of systems of equations)
      - Compute Stack Model (C++: model specification data structures)
      - Compute Stack Differential Equations Model (C++: an interface providing API for ODE/DAE solvers)
      - Compute Stack Simulator (csSimulator_ODE and csSimulator_DAE generic seqential/parallel simulators 
                                 based on the Compute Stack interface)
      - Model Builder: a class for creation of ODE/DAE Compute Stack models, including the
                       partitioning algorithm (re-implemented in C++) and export of input files with 
                       the model specification for sequential/parallel ODE/DAE simulations: 
		 - model_structure-[pe].bin: model variables data
		 - model_equations-[pe].bin: compute stacks and active equation set indexes
		 - sparsity_pattern-[pe].bin: the sparsity pattern (for evaluation of derivatives)
		 - partition_data-[pe].bin: inter-process communication data
		 - solver_options.json: simulation, model, ODE/DAE and linear solver options
        All input files contain a header with two int32_t items: fileType and OpenCS version
   - Examples:
      - ODE problems:
         1. The Roberts chemical kinetics problem with 3 rate equations (cvsRoberts_dns example from CVodes)
         2. Simple advection-diffusion in 2D (cvsAdvDiff_bnd example from CVodes)
         3. 2-species diurnal kinetics advection-diffusion PDE system in 2D (cvsDiurnal_kry example from CVodes)
      - DAE problems:
         1. The chemical kinetics problem with 6 non-linear diff. equations (idasAkzoNob_dns example from IDAS)
         2. A simple heat conduction problem in 2D (tutorial1 from DAE Tools)
         3. A chemically reacting system known as Brusselator PDE (idasBruss_kry_bbd_p example from IDAS)
  CMake-based compilation.
  All daetools modules now use the functionality from OpenCS (compute_stack.h is removed, OpenCS/cs_machine.h is used now). 
  Evaluator_OpenCL library removed (not required anymore) while pyEvaluator_OpenCL links to libOpenCS_Evaluators.
- Changes in the MPI code generator
  - Fixed bugs:
    - Vertex weights were in a wrong format (should be flat vweights[Nvariables, Ncnstraints] array)
    - The argument recursive is set to True
  - It generates input files for compute stack simulators:
    In addition, it produces:
     - sparsity_pattern-pe.png
     - partition_graph.png
     - partition_stats.tex and partition_stats.csv (statistcs of the partition results)
   The Partition algorithm (using METIS) performs edge-cut minimisation and takes into account 
   four additional balancing constrains:
   - Ncs: number of Compute Stack items
   - Nflops: number of FLOPS for evaluation of residuals
   - Nnz: number of non-zero items in the incidence matrix
   - Nflops_j: number of FLOPS for evaluation of the Jacobian matrix

Simulation statistics:
- Added detailed statistics and timings/counts for:
  - Simulation (Initialization, SolveInitial, Integrate)
  - DAE solver (LASetup, LASolve, Residuals, Jacobian, SensitivityResiduals, Roots, 
    PreconditionerSetup, PreconditionerSolve, JacobianVectorMultiply)
  - NL solver (N iterations, error test fails)
  - LA solver (Create, Reinitialize, Setup, Solve, Jacobian)
  - Preconditioner (Create, Reinitialize, Setup, Solve, Jacobian, JacobianVectorMultiply)
- Added new function daeSimulation::PrintStats
- Added namespace call_stats with two classes TimeAndCount and TimerCounter.
  They are used to count the number of calls and the duration of specified
  functions or blocks of code.
- Added new function GetCallStats to daeSimulation_t, daeBlock_t, daeDAESolver_t,
  daeLASolver_t, daePrecondiitoner_t and adComputeStackEvaluator_t classes that returns
  a dictionary with the calls stats: std::map<std::string, call_stats::TimeAndCount>.
- GetTimeInSeconds now uses OpenMP function omp_get_wtime 
  (the old could not measure time in functions that use OpenMP functions)

Linear solver and preconditioners:
- daeIDASolver.SetLASolver now accepts the solver type and the preconditioner 
  (if Sundials gmres is used)
- New classes: 
   - daePreconditioner_t abstract base class for Sundials gmres preconditioners
   - daePreconditioner_Ifpack
   - daePreconditioner_ML 
- daetools.cfg: 
   - New section daetools.IDAS.gmres with the options for Sundials gmres linear solver
   - New option daetools.activity.printStats
- Removed daeIDALASolver_t abstract class (not required anymore).
  All functions modified to use daeLASolver_t abstract class.
- Trilinos solvers have only one attribute ParameterList 
  (separate lists for individual solvers/preconditioners are removed).
  Only ML complains about options from AztecOO solver; can be suppressed 
  by setting "ML validate parameter list" parameter to false.
- All solvers/preconditioners have functions for getting/setting solver options.
  daeLASolver_t and daePreconditioner_t abstract classes now have functions:
   GetOption_string, GetOption_bool, GetOption_int, GetOption_float,
   SetOption_string, SetOption_bool, SetOption_int, SetOption_float.
  Currently they only work in Trilinos solvers and preconditioners.
- Fixed bugs in Trilinnos_AztecOO solver (preconditioner re-compute after change in Jacobian matrix).
  Known issues:
   - Somewhat lower performance of AztecOO with native preconditioners
     (preconditioner is first destroyed and then regenerated)
- Linear solvers do not depend on IDA library and all functions (such as la_init, ..., la_free)
  moved to daeIDASolver. Changed the interface of daeIDALASolver_t (everything is in the base class).

Changes in the core detools functionality (for OpenCS support):
- New functions:
   - adNode::EstimateComputeStackFlops, adNode::GetNodeCount and adNode::SizeOf
   - daeEquationExecutionInfo::GetComputeStackInfo, daeEquationExecutionInfo::GetDiffVariableIndexes
   - daeBlock::ExportComputeStackStructs, daeBlock::GetActiveEquationSetMemory, 
     daeBlock::GetActiveEquationSetNodeCount, daeBlock::ExportComputeStackStructs
   - daeSimulation::ExportComputeStackStructs
- New classes:
   - daeBlockOfEquations_t for decoupling the DAE solver from daetools
Source: readme.txt, updated 2019-03-15