/[ascend]/trunk/ascend/integrator/integrator.h |
Parent Directory
|
Revision Log
Links to HEAD: | (view) (download) (as text) (annotate) |
Sticky Revision: |
Refactor some more stuff from 'utilities' into 'general' with goal that 'general' never refers to 'utilities'.
Refactoring ascMalloc.h, mem.h to belong in 'general' with goal of having no references in 'general' to functions in 'utilities'.
Fixed compile for new header file locations <ascend/compiler/xxx.h> etc.
Moving libascend components from #/base/generic into #/ascend
Fixed external loading of integrators, at least on my system. Needs testing with/without fortran, sundials, etc. Changed little thing kn d1mach.c to make default behaviour correct on Linux.
DOPRI5 is running... but is it correct? Still needs lots of testing
Integrators can now be dynamically loaded. DOPRI5 has progressed but still doesn't work.
Added support for detection of boundary crossing in the IDA integrator. Cleared up some code comments and formatting.
Fixed problem with logrel instances in PyGTK GUI. Removed faulty INSTALL_DOC directory -- docs just go to INSTALL_ASCDATA for now.
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.
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.)
@!@#$#$%! working at last
Split slv_param.[ch] from slv.c and slv_common.h. Removed some lint
Implemented the DAE partitioning routine but am nowing tracking down a fiendish memory crash.
slv_get_status changed to return non-zero on failure. Tests are passing with the new IDA 'analyse' routine but still plenty of gaps.
Added obs_id lists to analyse.c. Hopefully we can remove later when we work out a better architecture for that.
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.
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.
Fixed independent variable detection (again).
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.
Adding doxygen 'addtogroup' for Solver, Compiler, Integrator.
Changed ASC_DLLSPEC(TYPE) to ASC_DLLSPEC TYPE, because it was causing havoc with doxygen and ctags.
Adding integration test in TestSteam.testdsgsat. Naming couple of anonymous structs.
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 ASC_ASSERT_RANGE (hopefully) Fixing C99isms in integrator.[ch]
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().
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.
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.
Changed integrator_set_engine to return 0 on success. Fixed Integrator::setEngine to throw range_error / IndexError on invalid selection. Test suite contains testIDA that works now (more tests yet to come)
Fixed 'testLSODE' in test.py, added 'IntegratorReporterNull' that makes no output (for testing purposes)
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'.
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).
First tentative version in 'integration reporting': Values of observed variables from the simulation are added to an Observer table after simulation completes. This is not very efficiently coded at this stage but is a start. Also some minor changes to text and comments in some base/generic files.
Monster commit! Lots of recommenting and reorganising of external relations-related stuff. Replaced a lot of ascmalloc and asccalloc calls with the new ASC_NEW* macros. Fixed (?) the problem Art is having with icons in PyGTK. Turned on -Wall in SConstruct and fixed up a stack of warnings. Removed the redundant exit(2) from after Asc_Panic calls and added __attribute__((noreturn)). Set doxygen to create callgraphs to level 2, updated doxyfile to version 1.4.7. Fixed up building of extfntest.c.
- 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 |