OneSolver Does What Wolfram Can’t

Wolfram Alpha has been “helping” students get through higher math and science classes for years. It can do almost everything from solving Laplace transforms to various differential equations. It’s a little lacking when it comes to solving circuits, though, which is where [Grant] steps in. He’s come up with a tool called OneSolver which can help anyone work out a number of electrical circuits (and a few common physics problems, too).

[Grant] has been slowly building an online database of circuit designs that has gotten up to around a hundred unique solvers. The interesting thing is that the site implements a unique algorithm where all input fields of a circuits design can also become output fields. This is unique to most other online calculators because it lets you do things that circuit simulators and commercial math packages can’t. The framework defines one system of equations, and will solve all possible combinations, and lets one quickly home in on a desired design solution.

If you’re a student or someone who constantly builds regulators or other tiny circuits (probably most of us) then give this tool a shot. [Grant] is still adding to it, so it will only get better over time. This may be the first time we’ve seen something like this here, too, but there have been other more specific pieces of software to help out with your circuit design.

31 thoughts on “OneSolver Does What Wolfram Can’t

  1. Interesting idea. It does not seem to work for me. I would like to have one list of all calculators, not 10 pages. Maybe a search function? Also the tool gives me internal server errors when starting a calculation.

    I’ll keep it in mind when needing a specialised calculator.

      1. Thanks for the input! This is my first major stress test for the site. The server was coded from scratch — guess I need to check the image caching algorithm. Must be a problem when multiple sessions are going on. Really glad I ask Hackday for some help spreading the word!

        1. Checked my web stats and the site went from zero sessions to +2000 sessions in that one day! Surprised that OneSolver was even working with that type of traffic. Going to have to figure out a way to do load testing… any tips?

          1. You can use ab (apache benchmark). There are a ton of different programs which do the same thing.

            You could use varnish or nginx to cache some of the more static requests.

            Why did you write it from scratch?

          2. When I first started — I was new to Python and new to web application design. I was already very familiar with Drupal, WordPress, and Joomla.

            I started out using Web2Py, which is an all Python framework. The fantastic documentation/textbook created by Massimo Di Pierro got me up to speed really quick .

            As I got deeper into the project, and went full AJAX and I found I was using very little of the framework and it was becoming more of an hindrance. Most web frameworks are designed for general purposes (blog, e-commerece, etc), usually static content. OneSolver had a lot of special needs.

            By going full custom I split the computation engine across multiple computers. NGINX does a round robin scheme to split the load up. Currently we have one computation node, but I tested with multiple nodes using a virtual machines.

    1. Thanks for the input. I was hoping to get most of my traffic to coming directly from Google. It has been a slow painful process to get them to index the site correctly since its all AJAX. Local site search will get added once I have a a little more traffic.

    1. OneSolver is not a circuit simulator its a solver which does ALOT MORE! Circuit simulator are very limited on what they can tell you. I wrote an article awhile ago to explain the differences. Give it a read and let me know if I need to expand on it. One of the reasons I reached out to Hackaday was so that I could get some feedback since I have been furiously coding for years.!service=wiki_get&name=technology_solver

      1. I tried to use the OneSolver website, but it was bugging out on me. So I decided I’d give it a week for it’s fad appeal to die down a bit. I gave it a 30 second wheel kick saw glitches and walked away, but I will go back and hopefully get to drive next time.

        1. How is it bugging out on you? Are you getting any error messages? Is there a specific equation you are trying to access? This information would be a big help in helping me improve the user experience. I have been using it all evening without any problems.

      1. Coil resistance [7]. I entered 0.1 for Rho1 Wire Resistivity and selected another field

        if not(variableTemp.equation in equations):
        AttributeError: ‘Variable’ object has no attribute ‘equation’

  2. I only looked at one of the simpler mechanics problems, so I don’t know how flexible this is, but this reminds me of a project I’ve wanted to work on ever since I took Thermodynamics of Propulsion.

    When I took that course it ultimately ended up feeling something like a series of logic puzzles. Given some data, and the models and assumptions discussed thus far in the course, derive the data being asked for. I liked to imagine this could be framed as a connected graph and that paths could be found through from the givens, through the models, to the outputs–while automatically filling in the blanks with appropriate assumptions based on a combination of predetermined “cost” and either derived or predetermined precision/accuracy penalties of those assumptions, thus making the system approximately as competent as a below-average engineering student (which I was).

    Haven’t even put in a second of the work to do that though.

    1. I was a teaching assistant at Univ. of Illinois (which ironically is where Wolfram is headquartered — I had no influence on the title!). My advisor would never provide us solutions for problem sets and left it to the TA’s to do it. My field of study mixes many different areas of science, units, and involves many lines of equations. The worst examples are magnetic designs.

      Traditional tools like MathCAD, Mathmatica, and Matlab — yes I used them all, were real bears to deal with. I kept asking myself, what if there was a way to solve these engineering problems systematically and with as little code as possible. The seed of OneSolver was born!

      I just added mechanics a few a month or so ago for fun. I have not create many equations for it yet and I need to expand the domains it can handle.

        1. Been toying around with using OCR in to recognize electrical symbols. Should not be too hard to replace character libraries with symbol libraries. From this data I would then form a netlist and build correlation scores. Such software could crawl the internet in search of similar schematics and crawl my own site to find related designs.

          Lately my work been more mundane, like making the site stable and scalable. That project has taken a back seat until I can find ways of making the site self sustaining. The most active development is a parts database which is sizing and recommending parts as users home in on solutions.

  3. do I understand correctly: the “novelty” compared to just “solving a system of equations” is the user interface where if 5 out of 20 variables are enough to determine the 15 others, that if the user sets 5 different fields the others are considered outputs?

    1. You are pretty close. For simplicity, lets assume you have have 15 unknown variables. To solve these 15 unknown variable you will need 15 unique linear equations. In real world design problems, known variables are mixed in too. One novelty is being able to swap known (inputs) with unknown variables (outputs). Following your example, 15 equations, 15 unknowns and 5 known variable (20 variables total). Nasty book keeping, but OneSolver will take care of it for you.

      The second novelty is that OneSolver uses characteristics about the physical domains to enforce solutions bounds. In the non linear equation for power, Pwr1 = Volt1^2/Res1, multiple solutions are possible based on signs of the variables. However, the variable for resistance, Res1, negative resistances do not exist, and are excluded automatically. Inferring range and units for a variables saves a lot of monkeying around with code and provides solutions engineers and tinkerers actually care about. The inferred characteristics for just the electrical domain are listed below.!service=wiki_get&name=domain_electrical

  4. I notice that while you are tracking issues on github, all of the available code isn’t there…

    The glory of utilizing something like github is that others can help and contribute and you can choose what pieces make it into your software. As it currently is, no one is able to help contribute because the currently uploaded code-base isn’t actually what is running.

    1. Correct, I left off the core and support utilities. I have uploaded code to demonstrate the app engine. All designs are downloadable through the Design>>Download menu which is the actual “code” behind each page.

      I originally wanted to upload the whole project then roll out pieces as they are ready through GitHUB, but as I started digging, I learned, that level of service requires paying GitHUB money. I agree that open sourcing the project is important and its going to take a lot of resources and time to organize the code it make it a fully open source. Its on the roadmap, but my biggest concern is spending all that energy and getting zero contributors. As it is, I have spent 3-4 years programming the site and still have no traffic. The primary objective is validating interest by building traffic, then start paying for GitHUB, then start the open source process.

      Anyway, these are just my thoughts. If you have counter thoughts to sway them please share! Its great to be able to discuss new directions for the site!

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.