PKR Core
Tutorial / Workflow 3 min read

Build a particle-packed structure and analyze it, start to finish

The core loop in PKR Core is short: pick a generator, set a handful of packing parameters, look at what came out, then run a property on it. This walks that loop once, end to end, with the numbers the run actually produced.

  • Build Structures
  • Inspect & Visualize
  • Analyze Properties
Cross section of a particle-packed structure showing filler particles, binder shells, and pore space.

What you can do

PKR Core generates a voxel microstructure from a reproducible recipe. Same recipe and same seed, same structure — which is what makes any later comparison meaningful.

  • Six generators: particle packing, fiber packing, platelet packing, foam-like, layered, and woven fiber.
  • A structure is a voxel grid where each voxel holds a material id; 0 is pore.
  • The same structure feeds the 3D view, the cross-section inspector, the property analyses, and every export format.

Step 1: set the packing parameters

Open the tool and switch the side panel to Generate. The panel carries the parameters you change most often: generator, grid size, voxel size, seed, volume fraction, and filler radius. Anything beyond that — binder placement, overlap, multiple filler configs — lives behind Open Parameter settings.

The Generate side panel with generator set to Particle packing, a 96 by 96 by 96 grid, voxel size 1, seed 20260902, volume fraction 45, and filler radius 6.
The Generate panel. The read-only rows underneath restate the overlap and binder fraction currently in effect, so you are not guessing what the run will use.

The run below uses a 96³ grid at 1 µm per voxel, seed 20260902, 45 % sphere filler at radius 6 voxels, 15 % overlap, and an 8 % binder placed as a one-voxel surface shell.

Step 2: look at what came out

The 3D view gives you the outside. For what is happening inside, the cross-section inspector cuts a plane through the structure and colours it by material id, which is usually the faster way to spot a packing that has gone wrong.

A cross section through the middle of the generated structure. Orange filler particles sit in teal pore space, each ringed by a thin lavender binder shell.
The z = 48 plane of the generated structure. Orange is filler, lavender is the binder shell, teal is pore. Voxels are shown unresampled, so the blocky edges are the actual grid.

This is where a recipe either looks like what you intended or does not. Overlapping particles, a binder shell that never formed, a volume fraction that quietly failed to reach target — all of it is visible in one plane.

Step 3: run a property

With a structure loaded, the Analysis menu exposes the property solvers. Each one takes the current structure, the material properties you assigned, and a direction, and each offers more than one method so you can trade accuracy against time.

PropertyMethods available
Conductivitysimple, 3d, graph-network
Diffusioneffective-medium, graph-network
Permeabilitypore-network, graph-network
Elasticityvoxel-spring-network
Invasion percolationgraph-network
CO2 adsorptiongraph-network

Metrics that do not need a solver — porosity, specific surface area, tortuosity, pore size distribution — are computed alongside the structure itself. For the run above, the voxel counts came out at 45.01 % filler, 8.00 % binder, and 46.99 % pore against a 45 % / 8 % target.

Where to go next

  • Change one parameter and rebuild — or, if you want the whole curve, hand the recipe to a Parametric Study.
  • Export the structure as .leS, OBJ, STL, VTK, or an Abaqus / Fluent mesh for another tool.
  • Import a measured stack instead of generating one; everything downstream is identical.

Try it in PKR Core.

Open PKR Core