Currently closed source project I am working on.
The program can be used to solve any given set of equations by providing some / all of its input parameters. Which parameters are used as inputs or calculated by formulas can be decided by the
user. Unlike with most other calculation software, there is no predefined
flow of the calculation.
A variable can be defined by multiple functions, the solver will use the one with defined input parameters.
Solver is split into a server and a client. The server can parse text files defining functions as seen below.
It then runs as a web service and can be queried for the defined function systems, calculation results with for certain input variables etc.
The client consists of a web interface which can either be embedded in a website or an
Electron app. It automatically lists available systems and displays the input parameters. Querying the server after each input and displaying the solved system.
The following text is stored within
C :: F U :: V Q :: C L :: H f :: 1/s omega :: 1/s di :: A dt :: s PI = 3.14159265358979 C = Q / U Q = C * U U = Q / C U = L * di/dt L = U * dt / di omega = 1 / sqrt(L * C) f = omega / (2 * PI) omega = 2 * PI * f
foo :: bar syntax defines that the unit of
bar. These unit definitions are optional.
Below the unit definitions are the formulas which define how the individual variables can be calculated.
Note that e.g.
omega is defined via multiple formulas.
Showing the current UI for the above pasted input file. To the left of the UI, all available
systems are listed. Note that the UI as shown below is fully auto generated from the
electric resonance, the UI looks like this:
The input parameters are presented as labeled text boxes with their units behind them.
Setting a parameter will display the system’s solutions to the right:
PI is already defined within the
.system, its value is shown. Setting
Q did not allow for other parameters to be solved, therefore they’ll stay undefined.
Setting another parameter will yield additional results:
C could now be calculated since
U are known.
C can not be set at this point, its input field is now disabled and marked as calculated.
With some more parameters the system is fully solved:
In addition parameters can be filtered (helpful with bigger systems):