One project, six disciplines
Set the region once in SYS-101. Size the room in MECH-102, send the fan to ELEC-103 and the condensate to PLUMB-105, then send the cable to BIM-106 for the tray and the void. Every lab also runs on its own in Quick calc.
Data loop between the labs
Solid arrows carry data now. Dashed arrows are waiting for the sending lab: press its Send button, then Import in the receiving lab.
Set the rules before you size anything
Pick the region you are designing for. Voltage, frequency, earthing, design ambient and voltage drop limits flow from here into every other MEPVirtual module.
Regions
Drag to turn the globe, scroll or pinch to zoom, click a marker to load that region.
Codes in force
What to watch
Ambient correction curve
Heat in the group
Each circle is one loaded circuit. Inner cables run hotter because they can not shed heat to free air.
Working
Three-phase supply
Earthing arrangement
Reading the result
All regions side by side
Click a row to load it on the Region tab. Values are defaults; project specifications and the authority's current edition take priority.
Notes on the defaults
Cooling load, air and condensate in one pass
Room loads, outdoor air, coil process on a live psychrometric chart, supply airflow, fan power and the condensate your drain has to carry.
Where the heat comes from
Air and water
Load schedule
Psychrometric chart, sea level
Hover the chart to read any point. The moving dot follows the air: outdoor and return mix, the coil cools and dries it, the room heats and wets it again.
State points
Room airflow
Drag to orbit, shift-drag to pan, scroll to zoom, double-click to reset. Cold supply air drops from the diffusers, picks up heat and returns at high level.
How this engine works
What changed from the original script
The first draft multiplied sensible kW by 0.315 to get condensate and took fan kW as CFM × 0.0035. Neither ties to the air state. Condensate now comes from the humidity ratio drop across the coil, and fan power from airflow and pressure. Airflow is set by the sensible load, not a fixed 6 air changes.
Size the feeder the way a reviewer checks it
Motor or general load, protective device, cable with every correction factor, voltage drop, loop impedance and adiabatic check, all against the active jurisdiction.
Single line, live
Checks
Cable section
Voltage along the route
Sizes tried
The engine starts at the smallest cable that carries the current, then steps up until voltage drop, loop impedance and CPC withstand all pass.
Cable on its route
Your circuit is the highlighted cable, coloured by conductor temperature at full load. Drag to orbit, scroll to zoom, double-click to reset.
Current ratings with your factors applied
Copper multicore armoured, 3 or 4 core. Tabulated values are indicative (BS 7671 Tables 4D4A / 4E4A basis, 30 °C air, 20 °C ground). Replace them with the cable maker's data for final design.
Method
What changed from the original script
The draft divided full-load current by a derating factor and picked a breaker at 1.25 × FLC separately, so the cable was never checked against the breaker. It also had empty capacity arrays, which would not run. Now the cable is sized from the breaker rating, every correction factor is applied, and the size only stops when voltage drop, Zs and CPC checks pass.
Earth grid design to IEEE 80
Grid resistance, ground potential rise, mesh and step voltages against tolerable limits, with a live surface potential map and a 3D grid you can turn around.
Touch and step against limits
Checks
3D grid
Working
Smallest grid that passes
Same outline, depth, rods and fault. The engine adds conductors in both directions until mesh and step voltages are inside the limits.
Surface potential during the fault
Move over the map to read values. Click to place a person there.
Potential hill in 3D
Height and colour are surface potential. The white outline floats at GPR, the voltage of the grid itself. The gap under it is touch voltage, and the steep slope past the edge is where step voltage comes from.
Profile through the middle
Along the length, through the centre of the grid. The gap between GPR and the curve is the touch voltage someone would feel holding a grounded frame there.
Wenner soil test
Enter probe spacing a and the meter reading R. Apparent resistivity is ρa = 2π a R. A flat curve means fairly uniform soil. A rising or falling curve means layers, and a two-layer model would be the next step.
Rods
Method (IEEE 80-2013)
What changed from the original script
The draft put the square-root area term in the wrong place (ρ / 4√(A/π) is the Laurent plate term, not Sverak) and added it to ρ/L, so grid resistance came out wrong for any size. The touch and step limits used 157 and 116 with 0.25ρ and 1.0ρ, which mixes the body constant into the wrong slot and ignores the surface layer. It also never checked mesh or step voltage, which is the actual safety test in IEEE 80. All of that is replaced by the full method above, and the built-in IEEE 80 Example 1 runs as a self test.
Limits of this tool
Uniform soil only. Rectangular grids only. For two-layer soil, L or T shaped grids, nearby metallic structures, fences and transferred potentials, use CDEGS, ETAP or XGSLab and treat these values as a first pass. Split factor should come from a proper Sf study for the incoming lines and cable sheaths.
MEPVirtual also has E-111, the Earthing, Bonding and Lightning portal. That one teaches the whole subject with 30 modules. EARTH-104 is the focused substation grid calculator.
Pipes that drain and pipes that deliver
Condensate and sanitary drains by part-full flow, stacks by discharge units, and water supply pipes by loading units and friction loss.
Pipe section, live
Trap under suction
Run on its fall
Capacity by size
Checks
Stack in 3D
The soil stack is coloured by how loaded it is, blue when lightly used, red when at its limit. The thin pipe beside it is the cold water riser. Water falls as an annular film down the stack wall, which is why stacks are limited well below full bore. Drag to orbit.
Flow against fixtures
Qww = K√ΣDU rises with the square root, because not everything drains at once.
Checks
Horizontal drain by size
Water moving in the pipe
Pressure up the riser
Checks
Sizes compared
Method
What changed from the original script
The draft chose 20, 25 or 32 mm from fixed bands at 15 and 50 L/h with no link to slope, material or depth of flow. A 20 mm pipe at 1% carries a few hundred litres an hour, so the bands said nothing real. Now capacity is calculated, but the answer is honest: condensate pipes are sized by the trap, the fall and the risk of slime and blockage, so the spec minimum usually wins and the tool says so. Sanitary drainage and water supply were not in the draft at all and have been added.
Indicative values
DU values, stack capacities and the DIN constants here are the commonly published ones. Check them against your licensed copies of EN 12056-2 and DIN 1988-300, and against the local authority code (Dubai Municipality, ADQCC, UPC or IPC based codes, AS/NZS 3500), which can set larger minimum sizes.
Fit the services, then prove they fit
Size cable tray from a real cable list, then drop services into a ceiling void, find clashes with clearance envelopes and get the smallest move that clears them.
Tray section
Run with a bend
The bend is drawn at the radius the biggest cable needs. Drag to orbit.
Checks
Standard widths
Void in 3D
Section looking along X
Drag any service up or down to change its level. Services running along X are cut, services running along Y are seen as long bars behind. Dashed outlines are the clearance envelopes.
Clashes and the smallest fix
Services in the void
BOP is the bottom of the bare pipe, duct or tray from finished floor. Insulation is added all round. Offset is the centreline from the void edge.
Method
What changed from the original script
The draft placed boxes at fixed coordinates and called any overlap a clash, with no insulation, no clearance, no idea which service should give way and no check that the move stayed inside the void. It also had no tray sizing. Now tray width is sized from a real cable list, clashes are hard or soft, and every fix is tested before it is offered.
Related modules on MEPVirtual
The Clash Detection Lab already on the site goes deeper on crossing geometry, sloped services, offsets and BCF export for Navisworks, Revit and ACC. Use this module for quick void coordination and tray sizing, and the Clash Lab when you need slopes, fittings and a coordination register.
3D scene output for a Three.js viewport
Every service is held as one standard box: { width, height, depth, x, y, z }, centre position, metres, y up. That is exactly what new THREE.BoxGeometry(width, height, depth) and mesh.position.set(x, y, z) expect. Each element carries three boxes: bare (pipe or duct only), insulated (what the clash check uses) and envelope (insulated plus its clearance), plus a column-major matrix for a unit cube that drops straight into InstancedMesh.setMatrixAt. Clashes list both element ids, hard or soft, the gap, the required clearance, a marker point and, for hard clashes, the overlap box.
On the live site the page exposes window.MEPV_BIM.scene(), window.MEPV_BIM.subscribe(fn) and a mepv:bim-scene event on every change. The latest scene is also written to the project cache, so another page on mepvirtual.com can read it.
const scene = MEPV_BIM.scene();
for (const e of scene.elements) {
const b = e.insulated;
const geo = e.shape === 'cylinder'
? new THREE.CylinderGeometry(b.height / 2, b.height / 2, e.axis === 'x' ? b.width : b.depth, 24)
.rotateZ(e.axis === 'x' ? Math.PI / 2 : 0).rotateX(e.axis === 'z' ? Math.PI / 2 : 0)
: new THREE.BoxGeometry(b.width, b.height, b.depth);
const mesh = new THREE.Mesh(geo, new THREE.MeshStandardMaterial({ color: e.color }));
mesh.position.set(b.x, b.y, b.z);
mesh.userData = e; // id, name, discipline, envelope, ...
threeScene.add(mesh);
}Limits
Services are straight and level. Drainage falls, local offsets around a single beam and fittings are not modelled. Tray loads, bend radii and fill limits differ between makers and between specs, so check against the approved product data and the project specification.