This project is currently dead as I want to merge with, or at least use containers from, far more established projects
This library aims to provide simple templates for creating programs to solve numerical systems. Currently, only methods used to solve differential equations are being implemented. But once things get working other problems will be added. ##Usage Users will need to define their own system subclass of the available systems classes and define the necessary fields and any inherited pure virtual functions as needed. Prepared applications might be developed later but until then the user will need to write their own applications with an instance of their defined system object.
This doesn't seem like much but what they will get for free is inherited solution methods which users can access in their applications. How this will be done hasn't yet been decided. Currently the plan is to have a null pointer of the appropriate solution subclass as a field of the system class which can be intialized used in the application.
###Example
Example system for an ideal spring connecting two equal, gravitationally attracted masses.
LATER see demo/springTest.cpp
for working version of implementation.
##License
This project is licensed using the Apache v2.0 license. Most files are marked accordingly with the Apache license. Any file not marked with the Apache license still carries the same license.
##GOALS
####Good lord
Why is y_vec
an std::vector
and not an std::array
? Get on that...
###Storage
- Rename this
Containters
- New:
twoDVec
-> (interface)selective
->sheetYSub
- (interfaces) {
packable
,printable
} ->sheetYSub
(yes multiple inheritance)
- Change
printable
tostreamable
streamable
Containers return a null terminated character stream of elements in whatever order they want.- eg
sheetYSub
would stream differently thansheetElSub
.
- eg
IO
class receives the stream and does what it wants with it.- print to file (actual or std{out,err,log}.
- re create
IO
class.
- Implement single vector storage so if we ever use only one varible we don't have one element subvectors
- Make sheetElSub.
###Methods
- Decide heirarchy for Ordered and Partial Differential Equations. (ODEs, and PDEs)
- ODE vs PDE
- Difference is in dFunc_t which is determined by the system. Implementation wise, methods are ignorant of whether the system is an ODE or PDE as that is done in the
derivative
function.
- Difference is in dFunc_t which is determined by the system. Implementation wise, methods are ignorant of whether the system is an ODE or PDE as that is done in the
- Explicit vs Implicit
- Need to pass error or tolerance arguments
- special needs for hamiltonian systems
- Need to pass error or tolerance arguments
- ODE vs PDE
- Use variants of Euler's method for testing.
- Use BOOST FOREACH with zip iterators
###Systems
- Finish Methods
- Get that demo up DONE
##Optimizations
##Possible Applications
###GUI plotter for solutions
- Have an abstract solution Graph class
- Add basic graphic classes to it, allow users to extend for more.
- Error and Performance Analysis
###Parameter space plotter
- First complicated application
- Compare with senior thesis for performance