Placing & connecting
- Drag from the palette, or click a palette item to drop it in the middle of the view.
- Drag from a port dot to another port to create a stream. Works in either direction.
- While dragging, ports that cannot legally accept the stream are dimmed and refuse the drop.
- Recycle streams (RAS, internal nitrate recycle) are allowed and drawn dashed.
Routing the streams
- Lines run orthogonally with filleted corners, the way a P&ID is drafted.
- Hover a stream and its movable runs show a small square handle —
drag a run sideways to move it. Vertical runs slide left/right,
horizontal runs slide up/down.
- A dead-straight stream has one handle in the middle: drag it to bend the line into a detour.
- Where a horizontal run crosses a vertical one, a line hop is drawn
automatically. Tees — a line meeting another at its end — get no hop.
- Parallel runs that would land on top of each other are fanned apart.
- Double-click a stream to drop hand routing and return it to automatic.
Auto-arrange resets every stream.
Navigation
- Drag empty canvas — pan · Wheel — zoom at cursor
- Shift+drag empty canvas — rubber-band select
- F fit to view · Ctrl+0 reset zoom · T mass balance table
- B fold the block palette away · P fold the properties panel away.
Click the rail that is left behind to bring it back.
- Drag the inner edge of either side panel to resize it —
double-click that edge to return it to the default width.
Widths and folded state are remembered.
Editing
- Del delete selection · Ctrl+D duplicate
- Ctrl+Z / Ctrl+Shift+Z undo · redo
- Ctrl+A select all · Esc clear selection
- Double-click a block header to rename it. Right-click a block for more actions.
Projects
- Projects lists everything saved in this browser — open, rename,
duplicate, export or delete any of them, and start new ones.
- Work is written back to the open project as you go.
Ctrl+S saves it now,
Ctrl+Shift+S downloads it as
.json,
Ctrl+O opens the browser.
- Rename in the title bar at the top left, or from the browser — either way it
is the same project.
- Export writes a sealed
.eaqua or a PDF drawing;
Import takes either back, and still reads a plain
.json flowsheet exported by an older build.
Exporting
- Sealed · .eaqua — encrypted to the accounts you tick.
AES-256-GCM content, the key wrapped to each recipient with ECDH-ES on P-256,
the whole file signed. Somebody who is not a named recipient cannot read it,
and running this application does not help them: the decryption key lives on
the recipient's device, not in the app.
- Drawing · .pdf — a process flow diagram with ISO 10628 style
equipment symbols, a title block, an equipment schedule and, once the sheet is
solved, a full stream table. A long train is cut into bands with match lines
rather than shrunk to a strip.
- There is no plain-text export. Anything you cannot afford to lose should be
sealed to a second account as well, so there is more than one way in.
Accounts, companies and seats
- The app is sold per seat per month, per company. A company has
a hex ID like
A3F1-9C02-7B4E and a number of purchased seats.
- Anyone with that ID can create an account; they confirm their
address with a six-digit code. That gives them an account, not a seat.
- The company's administrator assigns seats under
Team & seats, up to the number purchased. A seat is what
lets someone activate a device and get a working licence.
- The developer account creates companies, appoints their
administrators, and can remove any account or company.
- Every one of those rules is applied by the server, not by
this page. With no server configured the app runs against a local backend that
enforces nothing and sends no mail — it exists so the flow works before the
backend does. The sign-in screen says which one is answering.
The landing page
- The app opens on a hub: Projects, Profile,
Licence & sharing and Settings. The
house button in the toolbar goes back to it at any time.
- Your profile — name, position, company, email — is carried
inside the signature on your licence. The application can display it but has
no way to change it; only the issuer can, by re-issuing. Your account
is your email address.
- Settings keeps the grid snap, stream numbers and whether the
app skips this page on startup.
Licences and recipients
- The padlock button opens Licensing. Sealing needs a licence;
reading a sealed file needs to be one of its recipients.
- To get one: Save activation request, send the file to your vendor,
import the
.eaqua-lic they send back. The request carries only
your two public keys.
- To seal a file to a colleague, import their
.eaqua-lic
as well — the app sees it names somebody else and files it as a recipient.
A certificate is public and can go by email.
- The private keys live in this browser profile. Clearing
site data destroys them, and any sealed file addressed only to this device
becomes permanently unreadable.
Calculating
- Calculate or Ctrl+Enter solves the whole flowsheet.
Recycle loops are torn automatically and iterated to convergence.
- Bioreactors use ASM3 (13 components, 12 processes) solved as
steady-state CSTRs. Stoichiometry is derived from COD, nitrogen and charge
conservation, so mass balances close exactly.
- RO and NF march element by element using solution–diffusion transport with
film-theory concentration polarisation. Each ion is tracked separately, so
divalents, boron and silica behave differently — which is why the feed
ion analysis matters.
- Membrane blocks draw the array or the skids under Array diagram /
Skid diagram. The panel copy is a thumbnail — click it, or the
corner button, to open it full size with the labels, the legend and the
stage-by-stage breakdown.
- Results appear on the stream labels, in the inspector for whatever is selected,
and any problem found lands in Design checks.
- Results grey out as soon as an input changes. Re-run to refresh.
Port rules
Every block declares how many streams each port accepts and which
phases it will take — see unit-library.js. A port that still needs a
connection is ringed, and every unmet requirement is listed under Design checks.