Parent Directory | Revision Log
Links to HEAD: | (view) (download) (as text) (annotate) |
Sticky Revision: |
Moving integrators to own directory, about to make them self-contained shared libraries.
Added stats output in DOPRI5 integrator. Typo in ida.c. Added assertions in TestDOPRI5 (current they fail). Still got problems with DOPRI5 integrator.
Workaround for a documentation bug in SUNDIALS 2.2.
Working on support for SUNDIALS 2.2.0
Added full jacobian preconditioner (ongoing). Some tweaks to dsgsat & related models.
Added plot support in Integrator output tabs. Some other minor debugging for pylab integration and idaanalyse output.
Removed ASC_IDA_NEW_ANALYSE condition from the codebase. Cleaned up some debug output.
Added support for detection of boundary crossing in the IDA integrator. Cleared up some code comments and formatting.
Reverted shm.a4c. Added shmroots.a4c which displays the two complex roots of the SHM system using the extpy 'roots' module.
Fixed mtx_write_region_mmio for non-square regions, offset so that indices always start at 1 in the output, regardless of the original location of the region.
Split linsolqr.c into smaller files (as directed in code comments for '#include "plainqr.c"', etc)
Eliminated linsol, slv0 and slv1: moved the original files to 'disused' and editing out all reference to them in solvers and related code (including some Tcl/Tk wrapper code)
Added new 'system_jacobian' function for use by IDA (maybe elsewhere?) Refactored the matrix output stuff in IDA. Fixed the index checking in idaanalyse Still a problem with checking rank of small matrices.
Another one of these big refactorings. Split out 'system' directory from 'solver' directory. This will need more work but it's a start at getting the non-solver-specific code out separately.
Fixed problem with ctrl-c Improved column alignment in text output of integration results Pared back the default method in dsgsat3.a4c
Silenced some debug output Added ability to ctrl-C IDA when running through python
Added index checking for semi-explicit DAE systems. Migrated error messages for mtx and linsolqr to the error_reporter mechanism.
Added and performed basic tests of integrator_ida_write_matrix. Generalised the write_matrix routine so that *any* requested output can be retrieved from the integrator (for the case of IDA this is y and y', but it could equally be more complicated stuff.)
silenced some debug output
Changed default IDA linsolver to 'DENSE'. Fixed support for NULL child lists in PyGTK GUI (tentatively)
Fully operational test suite again (fixed TestIntegrator.testparameters)
Removed some debug output. DSGSAT model L=10, n=47
Added bounds checking to IDA. Suppressed some debug output. TestSteam.testpeturbida is broken now.
Commented out platform-specific <fenv.h> stuff (was breaking winxp build)
Added transamp.a4c, another one of the tests from Univ. of Bari.
Fixed 'hires' test (needed to rack down the tolerances a bit) Removed newton test (until we make some changes to the solvers var list) All of TestIDADENSE passes now and will be added to the buildbot list.
Replacement integrator_ida_check_diffindex function. Fixed some errors in the old one.
Reactivating couple of previously turned-off tests (IDA)
Removed header files from test_general. We can do without them.
@!@#$#$%! working at last
Fixed TestIDA (it's not nice though)
Fixed testfixedvars1
Fixed problem with sort order of diffvars vs sindex vs IntegratorSystem::y
Reverting to 'standard' signal handling for IDA
Some disgraceful hacking to obtain SIGFPE details in ida.c. Working next to fix the proper ASCEND ascSignal implementation (which I broke at some point).
Added getParameter by name in SolverParameters. Fixed up refences to signal-related header files. Fixed up various warnings from -pedantic compilation. Identified an apparent bug with RelationCalcGradient (unsafe version). Added support for compilation of a standalone C++ program (idatest) in SCons build.
Fixed the non-incident bug. TestIDA passes now.
Identified cause of problem with testincidence, still need to fix.
Fixed a bug with TestIDA.testfixedvars1 (integrator_ida_check_partitioning)
Fixed the crash, determined that there is a problem with creation via slv_param_char. Heap space is not being used.
Implemented the DAE partitioning routine but am nowing tracking down a fiendish memory crash.
Fixed integrator_ida_check_lists.
Added integrator_ida_check_lists, it's showing up a problem
Added tests for dealing with dF/dy and dF/dy' incidence in IDA.
Added test cases for IDA incidence check. Added test for where REQUIRE specifies nonexistent file.
block_debug function outputs all vars/rels in system.
Fixed dependencies on dimen.h and fractions.h.
Cleaned up some header file dependencies
Split block partitioning stuff from slv_stdcalls.[ch] into block.[ch].
Added some more test cases for DAE problem analysis. Little bit of tidying up in the slv*.c files.
Added method integrator_debug to integrator API (outputs internal data structures from integrator). Added test cases for the diffvars code (python test.py). Suppressed a lot of 'slv_get_*_*_list is NULL' messages when destroying system. Specialised the system_build error message a little.
slv_get_status changed to return non-zero on failure. Tests are passing with the new IDA 'analyse' routine but still plenty of gaps.
Split diffvars stuff out of analyse.c. Fixed IDA to work when vars are fixed/freed after the integration system is build. There will still be problems where fixing/freeing a *derivative* causes relations to drop out.
Added obs_id lists to analyse.c. Hopefully we can remove later when we work out a better architecture for that.
analyse.c can now pick up 'chains' of derivatives and pass them to the solver.
Huge reorganisation -- all mtx and lin files moved to base/generic/linear. Required many #include statements to be changed.
Shifted everything integration-related out into a separate directory.
Got paranoid about turning off signal handling... added '#ifdef ASC_SIGNAL_TRAPS' anywhere that signal handling referenced. Signal handling is OFF by default now.
More sensible slv_param_real bounds in LSODE and IDA. Run ode_init by default for dsgsat.a4c. Fixed dependencies for swig python outputs. Fixed [X] button on Integrator dialog.
Removed the 'REX' and 'IEX' array aliases (added the solver parameter comments directly in the slv_param_* calls). Renamed Simulation::[gs]etSolverParameters to Simulation::[gs]etParameters. Added [gs]etParameter (singular) methods to SWIG wrapper. Fixed missing NULL in IDA. Fixed bug with BDF/AM wrong way round in LSODE. Removed some debug output from slv.c
Added integrator_write_matrix routine to allow integrator matrices to be written out. Modified integrator in PyGTK to output this matrix to a file in /tmp in the case where Integrator::solve fails. Fixed a bug in densematrix_write_mmio. The current implementation of integrator_write_matrix might not be quite right yet... needs some more thought.
The extent of my efforts with an improved analyse routine for IDA. All commented out but can be activated using scons IDA_NEW_ANALYSE=1.
Added scons switch IDA_NEW_ANALYSE for the new code that implements a better DAE analysis procedure. Minor tidying in list.[ch] Removed some DIEDIEDIE stuff from analyze.c. Added 'odeid' to the 'varip' structure in same. Collapsed a bunch of repetitive stuff with those fancy #defines I like so much. Flipped some return codes from functions integrator.c to return 0 on success. Added #include for sensitivity.h in lsode.c. Catch exceptions from sim.build() in do_integrate() in PyGTK GUI. Attempted to fix tcl/tk for errors from integrator_analyse as well (not tested).
Fixed some ASC_PANIC calls in atomvalue.c Removed some <!-- --> comments from list.h Added flagging of 'deriv' vars in analyse.c (no new lists are added though) Created separate doxygen module 'Analyse' (only affect C comments) Fixed return codes in slv9a.c, as well as some FPRINTFs. Cleaned up some documentation in slv_client.h. Removed var_diff, var_set_diff flag stuff. Added docstring for Integrator_getEngines in python wrapper.
Moved vector functions out of slv_common.c into mtx_vector.c Created corresponding mtx_vector.h Renamed vector_data to vec_vector and corresponding functions from slv_ to vec_* (with other minor named changed). Made necessary changes to SConstruct, Makefile.in. Done with regexxer, should have caught everything hopefully.
Changed integrator_solve to return 0 on success Changed integrator_checkstatus to return 0 on success Some flow-through changes as a result of these. Fixed problem with reporting of errors in do_method (gtkbrowser.py) Expanded error msg in integrator.cpp Fixed catching of Integrator C++ exceptions in integratorreporter.py. Removed M.checkStructuralSingularity() in TestSteam.testdsgsat -- causes crash (why?)
Fixed problem with output of scalar atol value in IDA.
Fixed a silly bug with IDACalcIC. Disabled all SPGMR tests from the python test suite. All active tests in the Python tests should now be passing (24 tests currently)
Added doxygen comments for linear routines in base/generic/solver. Fixed up missing (still unimplemented) idalinear jacobian sjex.
Added idalinear.[ch], which will expose the linsolqr solver as a linear solver for IDA. Modified ida.c to support this new linear solver under the name 'ASCEND'.
Fixing TestIDA.testdenx test case. Removing some debug output from ida.c.
Fixed bug with memory deallocation for partitioner in ida.c Silenced some debug output in ascSignal.c Fixed execution of Python test suite (CUnit tests will need more work before running via this approach)
Refactored tests into a shared library of tests and a executable of just the CUnit driver. This will allow the CUnit test suite to be executed via python unittest as part of the growing Python-based test suite. Renamed setjmp and longjmp to SETJMP and LONGJMP throughout ASCEND, to allow some debugging output to be added at each call.
Added SIGFPE handling to IDACalcIC. Added ctrl-F9 keystroke in Integrator dialog (PyGTK) Fixed bun with 'Jac->N' not available under SUNDIALS 2.3.0.
Added VAR_DIFF and VAR_DERIV flags to var_variable type. Added flagging of variables as such during integrator_analyse_dae. Cleaned out some old guff from the mtx* headers.
Added Matrix Market export routines (from math.nist.gov). Added necessary build commands for above. Work on Jacobi preconditioner for IDA (ongoing) Set integrator_analye to make a call to slv_block_partition. Not sure if that's a good idea or not. Tidied up comments in linsol.h Moved unnecessary #defines from model_reorder.h into model_reorder.c. Cleaned up codedocs in mtx*.h Added WITH_MMIO config.h flag.
Added support for preconditioner in IDA module. Not quite sure what to put inside it yet though.
Added IDA 'MAXNCF' option. Added TestIDA.testlotkaDENSE.
Trying to improve error reporting from IDACalcIC for case of idakryx example.
Trying to get idakryx example working. Better reporting of failures from IDACalcIC.
Fixed detection of libpython on Windows. Fixed TestLSODE.testlotka test.py Removed a sundials_dense.h assertion under windows.
Added simplified ASC_PANIC call that uses var-args, added throughout relation_util.c. Fixed var_filter_t stuff in djex and fvex. More assertions in integrator.c Added output of initial state from lsode.c (hoping that's a good idea?) Fixed output code from relman_diff2. Added asc_panic_nofunc for non var-arg CPPs. Disabled -O3 flag in building C++ API Added __getitem__ and __getattr__ methods in Simuluation for simplified python syntax (eg M.x instead M.sim.x) Integrator::analyse throws exceptions on error now.
Abstracted the internal integrator calls into a struct IntegratorInternals. Fixed up compile-time list of integrators. If IDA is not available, then 'INTEG_IDA' will not be defined. Added ASC_ASSERT_RANGE for assertions x in [low,high). Changed calling convention for integrator_get_engines().
Improved line/file/func reporting via Asc_Panic, using CPP var-arg macros under GCC. Added ASC_ASSERT_LT and ASC_ASSERT_EQ assertion macros. Tracking down a crash in IDA (ongoing).
Fixed a bug with initial time step in IDA (and added a checking asc_assert) Added switch to turn on and off 'IDACalcIC'. Changed 'already loaded' ASC_PROG_ERR into ASC_PROG_WARN (so that repeated 'IMPORT' doesn't cause problems) Removed unnecessary solver tricks from shm.a4c (for easier debugging of Integrator API) Widened self_test limits in zill.a4c. Some more debugging in simulation.cpp. Breaking down test.py into smaller test classes (thinking about moving it to its own directory)
Fixed IDA 'maxl' parameter.
Adding missing 'aww.*' files for Art's DAE integrator. Adding 'maxl' (Maximum Krylov dimension) option to IDA.
Added placeholder for a C version of Art's DAE solver (named 'AWW') Added support for SPBCG and SPTFQMR Krylov solvers in IDA. Attempted separation of ascpy.i and solver.i (ongoing) Fixed an error message in typedef.c Fixed typo in ivpStepN.tcl Added correctly hidden Simulation() ctor.
Added SCons tests to check SIGINT and to replace ascresetneeded (need replacement for this in Autoconf as well). Removed debugging from createinst.c Typo (text) in evaluate.c Commented out redundant code in importhandler.c Added signal handling in ExecuteCASGN. Added missing ospath_free in ModuleSearchPath. Exported InitSymbolTable, DestroySymbolTable in symtab (dubious) Moved FPRESET macro out of ascConfig.h and into ascSignal.h Added Asc_SignalHandler{Push,Pop}Default. Added ASC_RESETNEEDED and HAVE_C99FPE macros in config.h.in. Found the bug causing the SIGFPE in idakryx.a4c (raises a question about int/float division in modelling, I think) Added system_destroy call in Simulation::~Simulation (dubious).
Added ATOLVECT, RTOLVECT parameters to LSODE Fixed silly bug in testing of newton.a4c Text changes in ida.c.
Added test for C99 FPE handling Fixing mess-up of ChildByChar in arrayinst.h header. Added 'safeeval' config option to IDA. Changed 'SigHandler' to 'SigHandlerFn *' in line with other function pointer datatypes being used in ASCEND. Moved processVarStatus *after* 'Failed integrator' exception (ongoing issue).
Pruned some debug messages from integrator.c, ida.c. Improved exception messages from SolverParameter class. Added array access functions to Instanc class (ongoing). Attempting to run CUnit tests from the Python test suite (not successful, ongoing). Cleaned up some headers, license notices, doxy docs, etc. Fixed wrong #include <dmalloc.h> in ascpy.i (thanks Krishnan).
Added 'GSMODIFIED' parameter to IDA implementation. Working on getting the idadenx model to converge using the SPGMR solver.
Completed adding idadenx to test suite. Restored behaviour of mxstep to IDA.
Fixed IDA to solve the 'idadenx' problem (mxstep and mxsteps were causing problems)
Fixed bug with integrator_ida_djex, and switched to using *solvers* varlist in integrator 'visit' routine (needs checking with LSODE!)
Found bug in integrator_analyse_dae... ongoing
Fixed a bug in slv_param_char. More work on IDA ongoing.
Implemented ATOLVECT, ATOL, RTOL parameters for the IDA integrator.
Incorporated 'SolverParameters' functionality into 'Integrator', both at C level and C++/Python. This shouldn't break Tcl/Tk as default parameters will be set and used invisibly.
solve.py raises ImportError if 'browser' object is not available (right approach?) Freeing some variables in dsgsat2.a4c. Returing Py_None from extpy routine in 'browser' object not defined (eg during non-GUI unit testing) Error reporting from extpy import handler (ongoing) Timeout in versioncheck (when server unavailable) A little more tinkering with IDA.
Commented out some stream redirection stuff for simplicity. The CUnit test suite now works as expected (but without output suppression, for the moment). Some more effort on IDA (ongoing).
Added simple harmonic motion model. Fixed loop-termination bug in ida.c
Fixing up some malloc/free problems with integrator.c, removing some debug output from slv3. Working on fixing IDA for systems with inactive variables (ongoing).
Added some debug stuff to work on the on_load problem.
Added test for SUNDIALS version (2.2.1 and 2.3.0-pre are preferred) Fixed silly warning message about ignored return values from CONSOLE_DEBUG on GCC.
Removed BBOXWHINE (replaced with some one-time-only warnings for the moment) Added ExtMethodDestroyFn to allow 'user_data' associated with external methods to be destroyed. Implemented the destroy fn through to 'extpy' module. Added 'name' as an extra parameter in the user_data for extpy, to help with debug msgs. Moved 'solvernotes' to a file of its own (was part of listnotes.py) Added 'repaint' to GTK 'tools' menu (for debugging) Added 'python.h' to top of library, type files (pygtk) to stop silly warnings. Working on some diagnosing of problems as noted in Simulation::checkInstance. Removed some old comments from namio.h and others. Renamed 'blsys' to 'sys' in integrator.c. Some work on fixing up the J*v function for IDA (not yet complete). Added new 'destroyfn' parameter (as NULL) to all calls to 'CreateUserFunctionMethod'.
In instantiate.c, made new blackbox code tolerant of blackboxes that don't need initialisation. Removed some debug output. Expanded 'extfntest.py' a little bit, for ease of testing. Converted 'blackbox is experimental' warnings to one-time-only. Minor change to way that webbrowser is invoked under linux.
Added finite-difference evaluation of gradients in blackboxes. Some work on J*v evaluation with IDA.
Some success with IDA: fixed up the indexing dilemma and was able to integrate 'johnpye/thermalequilibrium.a4c' for a short time span (but through to 3000 s as with LSODE). I would blame lack of jacobian routine in the first instance. Added 'more properties' button in Properties dialog for a variable, to allow values of ode_id, ode_type etc to be queried (but not changed).
Radu Serban sent me a preview of the new version of IDA which has new header file layout. This patch updates for the new layout. Also couple of minor fixes for gcc warnings in numlist and library.cpp.
Added 'invars' and 'outvars' pointers (to var_variable pointer arrays) in ExtRelCache. This will allow the ExtRel_MapDataToMtx function to be reimplemented using solver-side pointers instead of going back to the arglist stuff in ExtCallNode.
- fixed a minor bug in the use of dimensions in samplelist and a #define misuse in ospath. - defined eolstyle unix on the trunk, as I have encountered at least 4 too many mixed-eol-style-in-one-file files in trying to rebuild today. obviously committer discipline is insufficient.
Merged changes from DAE branch (revisions 702 to 819) back into trunk. This adds the Integration API to the ASCEND solver (in base/generic). Also provides pre-alpha support for 'IDA' from the SUNDIALS suite, a DAE solver. Many other minor code clean-ups, including adoption of new 'ASC_NEW' and friends (to replace 'ascmalloc') Added some very sketchy stuff providing 'DIFF(...)' syntax, although it is anticipated that this will be removed.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, enter a numeric revision.
john.pye@anu.edu.au | ViewVC Help |
Powered by ViewVC 1.1.22 |