Skip to main content

Background Material

The following background material does not necessarily need to be read through, but you should come back here and reference this material when you need it. Note that none of this needs to be installed by you; it’s all on our server.

Essential Resources

  1. What is a JSON file? - General background material on JSON files, how they’re structured, and what the basic syntax is.
  2. Math.js equation writing - This is the engine we use for writing equations (any “result”: “equation” bit in the JSON file)
    • Basic Syntax - Fairly similar to MatLab and other computer algebra languages
    • Function Reference - If you’re trying to do something fancy - like a modulo or logarithm
    • Units Reference - All units listed here are supported in our platform
You should NOT use the “math.” prefix (e.g. you would only write “gcd(6,15)”, NOT “math.gcd(6,15)”)
We’ve also added a couple additional custom units such as “pcf” (pounds per cubic foot) and other common American units.
  1. Katex symbol writing - This is the engine we use to write the pretty symbols for everything (any “symbol”: “symbol_text” bit in the JSON file), with subscripts and Greek letters and such.

Maths Processing in Calcs.com

There are a few different ways in which we solve sheets in the Calcs.com platform, described below.
We can have bugs in partialEval that are not present in a normal, foreground solve. If you’re seeing a weird failure in the member selector or in a background solve that you’re not seeing after you load the sheet in the foreground, then report it as a bug to devs!

Normal, Foreground Solve

string
Solve every single equation on the sheet. It doesn’t matter if you’re re-opening a sheet that’s already solved; we’ll still re-solve everything.
string
Any time you open a specific sheet in your web browser
string
Runs locally in your browser (except for “remote” solvers, such as FEA analyses, for which only that part gets requested from our servers).

partialEval

string
This is some magic that Rian built a long time ago which identifies which pieces of a sheet need to be re-computed and which do not. It will then ONLY re-compute those pieces that it thinks need to be re-computed.
string
For each member solve within the member selector, or some other background solves (such as a load linked downstream sheet updating).
string
Runs locally in your browser (except for “remote” solvers, such as FEA analyses, for which only that part gets requested from our servers).

Background Solving

string
Solve sheets entirely on our servers.
string
When you upload a CalcsCad file (or other import file) in. Also when load linked, downstream sheets need to update after you edit a sheet in your browser.
string
Runs entirely on our web servers.