Documentation
Workspace materials
How to save a steel chemistry into your workspace library, who can see and edit it, and how to run a simulation against it.
The problem this solves#
You have a mill certificate for the coil your line actually runs. It is not DP600 and it is not DP780 — it is your supplier's DP600, half a point of carbon off, with the chromium they happen to use. Typing that chemistry into chat works, and it works for exactly as long as that conversation lasts.
A workspace material is that chemistry given a name and stored in your workspace, where everyone on your team can load it by name in any conversation, in any simulator, indefinitely. It sits alongside the built-in grades from the material catalog, and you use it the same way.
What is actually stored#
A workspace material is a named row in your workspace holding:
- a composition in weight percent
- the base grade it was derived from, kept for traceability
- an optional stored ASTM grain size on the material definition; an explicit flow-stress calculation accepts ASTM 6–15
- optional starting phase fractions
- optional free-text notes
- a pinned reference to the exact verified material card the chemistry is carried on, recorded by hash
The ASTM grain size is the one stored field that is genuinely per-coil rather than per-grade, and it is a real input rather than a label. Note that neither the New material dialog nor the material editor offers a field for it today — it is set through the workspace materials API, so a material created in the UI stores no grain size unless something else supplies one. It is part of the definition's scientific fingerprint, so it travels with the material into every run, and a phase flow-stress calculation uses it whenever the request does not carry its own value — with neither present, that calculation refuses with phase flow stress requires ASTM grain size or an explicit inherited value. Note that the Flow stress tab asks for its own ASTM grain size each time and starts at 10, so a stored value is a fallback for tool calls rather than something that pre-fills that field.
Alongside those, the server derives and stores a few fields you do not type: the material type, the family key, a SHA-256 definition hash over the canonical definition, and per-value composition provenance recording which numbers you supplied and which were inherited from the base card. The hash is what later loads are checked against, so any of those fields changing produces a different definition rather than a quietly altered one.
Names are unique within a workspace, so you cannot have two materials called Supplier-A DP600 in the same workspace.
The pinned card reference is the part that makes a workspace material trustworthy over time. It fixes the exact card bytes your material was built against, and the reference is verified against its recorded hashes every time the material is loaded. If the pinned card cannot be verified, loading fails with a clear error rather than quietly substituting a different card.
Saving one from chat#
The simplest route is to build the chemistry in conversation and then save it. Load a base grade with your overrides, confirm the chemistry when Phases asks (see using your own chemistry), and then save:
Save this material to my workspace as Supplier-A DP600.
While an unsaved custom material is active, the chat footer also shows the active material name and a Save to workspace for future use button next to it. When Phases produces a custom-material card in the conversation, that card carries its own Save to workspace for future use button as well.
Two things get refused, both on purpose:
- Saving a base grade under a new name. If the composition you pass is identical to the base grade's, the save is rejected with a message telling you to pass your real custom chemistry. The workspace library is for real recipes, not renamed built-ins.
- Saving without a workspace, or as a viewer. Saving requires an open workspace and a member or admin role. Without a workspace you get
No workspace context found. Open chat from a workspace before saving materials.; as a viewer you getSaving workspace materials requires a workspace member or admin role.
Saving is not a request to simulate. After a save, Phases reports the saved material and stops — it will ask which simulation you want rather than running one.
Creating one in the Material Base workbench#
Workspaces have a Material Base entry in the left sidebar, at /ws/<workspace>/materials. Its header reads Material base over the live count — around 2,059 catalog grades · N in this workspace — and it has three scopes across the top: Material, Compare and Family data.
The Material scope is a browser, not a cascading picker. It leads with a search box, and under it two facets: Alloy type (Steel, Stainless steel, Cast iron, plus Workspace materials for your own) and Family. Search matches the label, the id, the alloy type, the family and the group, and space-separated terms are ANDed. With two thousand grades in the list, typing the designation is usually faster than drilling down through the facets — and the Alloy type facet defaults to the type of whatever is currently selected, which is why the stainless grades can look absent while a steel is selected. Finding your steel covers the browser and its traps in full.
If your role can manage materials, a New material button appears in the header and under the list. It opens a dialog where you pick an optional base grade, edit the composition grid, give the material a name and add notes.
Selecting an existing material shows tabs for Composition, Simulate, and — where the flow-stress feature is enabled for your workspace — Flow stress. The Composition tab carries more than the grid: below it sits Composition transformation analysis (TTT), which shows when that composition is predicted to start and finish isothermal transformations, plus a panel placing the material against its family. Both read cached results only; where nothing is cached and your role can manage materials, a Calculate transformation map button generates one. The TTT panel is explicit that it is not a history of the material's current phase fractions — use a heat-treatment simulation to follow phase fractions along a thermal cycle.
Built-in grades are read-only here. Their composition grid is disabled and the action button reads Clone to edit rather than Open editor. Cloning opens the same New material dialog with that grade preselected as the base, its composition pre-filled as the starting point, and a suggested name made from the grade label plus (custom) — for example DP600 (custom). Change what actually differs, then save. Your own workspace materials show Open editor and take you to the full material editor page.
Who can see and use them#
Workspace materials belong to the workspace, not to the person who created them. Every member of that workspace can read them; the database policy scopes each material row to its workspace, and only members of that workspace can see it. A material saved in one workspace is invisible in another.
What you can do with them depends on your role:
| Role | Read | Create, edit, clone | Run simulations |
|---|---|---|---|
| Admin | yes | yes | yes |
| Member | yes | yes | yes |
| Viewer | yes | no | no |
Roles, invites and the difference between a personal and an organization workspace are covered in workspaces and roles.
Using one in a simulation#
Refer to it by the name you saved. Phases is instructed to check your workspace materials before falling back to built-in grades when you name a material, so this works:
Load my workspace material Supplier-A DP600 and generate a CCT diagram.
To confirm what is available:
List the materials saved in my workspace.
That calls list_materials, which returns built-in grades and your workspace materials in separate sections. Ask for the workspace ones specifically, as above — the built-in half of that answer is the whole 2,059-grade catalog and comes back as a summary rather than a list. Under the hood a workspace material is loaded by its identifier — load_material(tenant_material_id='<uuid>') — but you do not need to type that; naming it is enough.
A workspace material is found by name before any built-in grade: a bare name is resolved against this session's materials first, then your workspace, then the catalog. Naming a workspace material the same as a catalog designation therefore shadows that grade for everyone in the workspace, which is a good reason to name yours after the coil or the supplier rather than after the standard.
Loading a workspace material is direct. Unlike a freshly typed chemistry, it does not trigger the confirmation gate, because the definition and its template were already fixed when the material was created.
Once loaded, it stays as the session's active material and every subsequent simulation tool uses it. Simulation outputs — the card header, the run metadata and the figure titles — carry the material's exact saved name, so a run browsed weeks later still says Supplier-A DP600 rather than DP600 (custom). See sessions, runs and artifacts for how to find those runs again.
Editing a workspace material in chat forks it#
If you load a workspace material and then change its chemistry or its starting phase fractions in conversation, Phases does not modify the stored row. The edit produces a session-only fork: the workspace identity is dropped, any previously resolved material capabilities are cleared, and the persisted material is left exactly as it was.
That is protective — a throwaway "what if the carbon were 0.02 higher" in chat must never silently rewrite the material your colleagues are simulating against. If you want the fork to stick, save it as a new workspace material, and give it a name that says what changed.
To edit the stored material itself, use the editor in the Material Base workbench.
Limits worth knowing before you rely on this#
- Check the catalog before you create one. The built-in catalog holds 2,060 grades, so a designation you assume is missing — 42CrMo4, 16MnCr5, 100Cr6, C45, H13, 1.2344 — is usually already there, with a card authored from published transformation data. A workspace material is the right answer for your coil's analysis, not for a standard grade nobody has looked up. See finding your steel.
- A workspace material is not a new grade for every simulator. Coverage follows the material's physics, not its name. Resistance spot welding in particular runs only on the twenty grades with validated bulk electrical, thermal and mechanical properties; asking the product to weld a workspace material that maps onto none of them is refused with
This material has no validated RSW bulk-property mapping.followed by the list of grades that are supported. See the capability matrix and resistance spot welding. - Saving stores a definition, not calibrated physics. It records the chemistry and the verified card the chemistry sits on. Transformation kinetics, phase flow stress and V-Gleeble bulk flow surfaces are resolved later, when a simulator asks for them, and the simulator reports honestly when one is a fallback or unavailable. How we validate explains what that separation buys you.
- Very old workspace materials can fail closed. A legacy row created before verified immutable template definitions existed, and without the evidence needed to reconstruct one, refuses to load with
This legacy workspace material has no verified immutable template definition. Recreate or explicitly repair it before loading or simulating.The fix is to recreate it from the chemistry.
If you are deciding whether to save a chemistry at all, the trade-off is simple: a session material is fine for one investigation, and a workspace material is what you want the moment a second person, a second simulator, or a second week is involved. Reusing the resulting runs is covered in reuse and share runs.

