Skip to content

Rectangular Plate Analysis

Post-1.0.0rc1 development adds Tools > Rectangular Plate (Experimental). This is a separate, modal transverse-bending workspace, not a conversion of the open frame project. No additional dependencies are needed. The published rc1 wheel does not include this pilot.

Define width, height, thickness, material E/Poisson ratio and target mesh size. Choose XY, XZ or YZ and assign each boundary as Free, Simply supported or Clamped. Apply / Preview Mesh uses PyNite's RectangleMesh. Mesh Options exposes Quad/Rect family, XYZ origin, names/numbering, control lines, openings and modifiers using the same recipe editor. Supported edges are green: dashed for simply supported, solid for clamped. Width follows global X in XY/XZ and Z in YZ; height follows Y in XY/YZ and Z in XZ.

Pressure is force per geometry-length squared, with its positive global direction shown beside the controls (+Z in XY, -Y in XZ, -X in YZ). Negative pressure acts oppositely. The primary case and factor define the Plate baseline; Load Cases / Combinations… adds further uniform cases and named combinations. Pressure and edge assignments belong to the surface definition, not generated node IDs, and are reapplied when the mesh is refined.

Analyze runs in a cancellable isolated process. Results include nodal normal displacement, normal-force reaction sum and unsmoothed element-centre Mx/My/Mxy contours, plus Qx/Qy for Rect only. Quad shear is withheld pending validation. Moments are force-length per unit length (for example kN-m/m); shears are force per unit length. Displacement colouring interpolates nodal values over display triangles; it is not a higher-order displacement recovery or a deformed 3D shell view. Export CSV contains local node coordinates, signed normal displacements/reactions, selected-combination factors and snapshot identity. The plot toolbar exports images.

Save/Open uses separate .pyniteplate files with canonical inch-kip values and strict format/version validation. Version 3 adds named loading and self-weight; version 2 stores advanced mesh options. Existing version 1/2 plate files migrate without adding pressures or gravity. Undo/redo covers applied definitions, not individual keystrokes. Engineering changes clear results; Apply validates before changing the definition. Display-unit changes convert inputs/plots/CSV while retaining the current solved combination and snapshot, including unit undo/redo. This workspace has its own unsaved-change prompt, not frame autosave/recovery.

Pilot limits: one axis-aligned rectangular surface at a specified origin, up to 1,024 elements, aspect ratios up to 20, linear small-displacement elastic bending, up to 32 uniform pressure cases and 32 combinations (including the primary Plate combination). In-plane translations and the drilling rotation are explicitly restrained everywhere; this is not general membrane/shell analysis. A simply supported edge restrains normal translation; a clamped edge additionally restrains both bending rotations. Rigid transverse mechanisms are rejected; every combination must pass independent global force and moment equilibrium before any result is published. Large deflection relative to thickness is flagged but does not enable geometric nonlinearity. Opening edges are free; outer edge supports and pressure are reapplied after refinement. Pressure resultant uses net area after openings, and result coordinates remain local to the origin. Arbitrary outlines, curved surface analysis, frame/surface coupling, nodal loads, general membrane loading, varying pressure, MCP, PDF and recovery integration remain separate milestones. Do not substitute this pilot for verified engineering design or assume the listed limits certify element quality.

Cases, combinations and self-weight: the main pressure, case name and Plate factor retain the original quick workflow: Plate = factor × primary case. Open Load Cases / Combinations… to add uniform pressure cases, edit their pressures, rename them and create named combinations using per-case factors. The built-in Plate combination remains a primary-case baseline; edit its factor in the main controls. Rename propagates through combination and self-weight references. Delete an additional case only after removing those references. The dialog stages its edits: OK creates one undoable change, Cancel preserves the plate definition. It can use negative pressures/factors and zero-result combinations. An additional case can have zero manual pressure and carry weight.

Set Weight density in the main controls (force per volume, not mass density). In the loading dialog select a Self-weight case and positive multiplier. The complete weight acts in global -Y, so this transverse tool permits self-weight only for horizontal XZ plates. Positive local pressure on XZ is downward; weight contributes rho × thickness × multiplier to its selected case, then that case's combination factor applies once. Do not include the same weight in manual pressure unless intentional. Disable self-weight before changing to a vertical plane. XY/YZ transverse pressure remains supported with self-weight off; the tool rejects in-plane gravity instead of silently discarding it. Openings remove both manual pressure and weight from their missing area.

Analyze solves all combinations and checks finite results plus six-component force/moment equilibrium about the recipe origin. One failed combination rejects the entire snapshot. Choose a solved combination above the contour without solving again. Plot titles name the combination and snapshot; the status shows its actual factors and normal reaction sum. Nodal CSV uses the chosen combination and includes case factors, snapshot ID/time/signature, global normal and weight case. Quad shear remains unavailable; corrected Rect shear remains separate. The separate plate tool still has no general membrane or combined face-stress inspection and is not connected to the main-model MCP server.

Local plate inspection (development after RC4): choose Inspect Results… or click a material element in the solved plot. The modeless inspector has an element-centre table and a separate numerical probe. Choose an element and enter xi/eta from -1 to +1; (0,0) is its centre. The selected element is outlined on the plot and a cross marks the probe. Pan/zoom gestures do not pick elements, and clicking inside an opening leaves the current selection unchanged. At a shared edge, choose the element explicitly to inspect either side.

Read Mx/My/Mxy as moment per unit width in the displayed local axes. Rect also shows Qx/Qy as force per unit length, recovered from its corrected displacement polynomial. Quad shows only its within-element bilinear moment recovery; its transverse shear remains unavailable. There is no averaging between elements, no new membrane or combined face-stress result, and no corner-peak certification. Moment/shear contours still show element-centre values when the probe is elsewhere.

The inspector follows the workspace's combination and display units without another solve, retaining the element and natural coordinates for the same snapshot. It prints local x/y, global XYZ including the recipe origin, and all three local unit vectors. Export Element Centres CSV… writes every centre; Export Probe CSV… writes the selected point with its xi/eta. Both include units, axes, family/recovery description, case factors, combination, snapshot, UTC analysis time and model signature. The existing toolbar CSV remains nodal. Engineering edits and a new analysis clear the table, probe and exports; display-unit changes retain the accepted snapshot. Closing the inspector clears the plot marker, and Inspect Results… reopens it.

Separate plate inspector with an off-centre Rect probe, signed resultants and snapshot identity

For example, a horizontal plate can use Dead pressure plus self-weight, a Live pressure case, and Service = 1.0 Dead + 1.0 Live or Ultimate = 1.2 Dead + 1.6 Live. The primary Plate baseline still uses Dead and its main factor alone.

Horizontal plate with named combinations and snapshot-labelled moment results

Staged plate load program with named combinations and horizontal self-weight

Version 3 retains pressure, load_case and load_factor as the primary-case inputs. additional_pressures maps other case names to signed canonical kip/in2; combinations maps additional combination names to case-factor maps (Plate is reserved). self_weight_case is an existing case or null and self_weight_factor is a positive multiplier. All four new fields are required in version 3; extra fields in legacy versions are rejected. Solved arrays are not saved in .pyniteplate files.

Regression coverage includes independent Navier square-plate deflection and mesh refinement, a zero-Poisson cantilever strip's closed-form deflection/moment, equilibrium/sign and plane invariance, clamped/cantilever support cases, mesh regeneration, persistence, units, undo, stale results and cancellation. Multi-case checks cover signed/zero superposition in all three planes for both families, self-weight against an independent Navier reference, off-centre opening first moments, old-file migrations, reference-preserving renames, cached combination selection, unit/snapshot preservation and whole-snapshot rejection after a force, moment or nonfinite failure in any combination.

Rect recovery correction after RC4: the published RC4 wheel uses PyNite's raw Rect resultants. Checks against independent mechanics found opposite bending signs and excessive twisting coefficients in PyNite 3.0/3.2 recovery. Do not rely on RC4 Rect moment/shear contours. Quad moments are preferable in that release, but Quad transverse shear also remains unverified and must not be relied on. Development 1.0.0rc5.dev0 reconstructs the Rect displacement polynomial from its solved local nodal translations/rotations and differentiates it with isotropic plate laws. This postprocessing correction does not alter stiffness, pressure loads, nodal displacements or reactions. Non-unit Rect bending modifiers are rejected during analysis: the supported engine ignores them in its bending stiffness. Such recipes can still be opened/previewed/edited; unmodified Rect remains supported.

The common local convention is Mx=-D(w,xx+nu*w,yy), My=-D(w,yy+nu*w,xx), Mxy=-D(1-nu)*w,xy and Q=-D*grad(laplacian(w)) in the thin-plate limit, with D=E*t^3/(12*(1-nu^2)). Rect centre recovery follows this polynomial law; Quad retains the DKMQ bending stiffness with transverse shear flexibility; its moment output is exposed, while raw Qx/Qy recovery is withheld. Non-square Navier checks exercise all three moment and both shear components; manufactured twist/cubic/rigid fields and two-direction zero-Poisson strip checks verify signs, units and mixed derivatives. XY/XZ/YZ, origins and signed pressure factors preserve the local resultants.

Quad shear feasibility (development): a reproducible test-only comparison uses 120 × 180 × 0.6 in plates under -1e-7 kip/in², E=3600 ksi. Compare an independent simply supported Navier solution with separate-plate and coupled slab solves, plus nu=0 cantilever strips clamped in each local direction. The coupled case retains an edge beam with E=1e-6 ksi so its directional stiffness is negligible. Meshes have 24, 96 and 384 Quads in XY/XZ/YZ, with Service, -2 Reverse and Zero combinations: 36 solves and 108 result records. Every combination must pass the unchanged independent six-component equilibrium gate. Navier shear reference truncation is checked at 160 versus 320 terms.

Three recoveries are compared at the same interior element centres: raw engine shear; Qx=Mx,x+Mxy,y, Qy=Mxy,x+My,y differentiated from each element's own bilinear moment field; and those derivatives from a quadratic least-squares fit to nine neighbouring centre moments. All require a complete 3 × 3 patch for comparison and exclude centres within 20 in of the outer boundary. The fitted candidate reduces interior vector L2 error from about 2.8% to below 0.2%; each finest-mesh component is below 0.3%. Raw shear stays near 58% vector error and the own-element derivative near 23%. Passing simple cantilever strip checks does not establish general plate-shear accuracy.

The fitted field is a research candidate, with no production output. It smooths across neighbouring elements and differs from the current unsmoothed point probe. Missing patches return no value; tests explicitly prevent bridging a hole or extrapolating to an edge. Boundary/opening recovery, irregular meshes, stiffness/material jumps, thick plates, curved shells, shear peaks and rotational frame–shell interfaces still need validation. Quad Qx/Qy remain unavailable in snapshots, probes, CSV and MCP. This study does not change the solver-method hold.

Quad shear feasibility: raw and own-element recovery fail; an interior neighbouring-moment fit converges

Reproduce the diagnostic JSON and optional figure with:

uv run --locked python -B scripts/benchmark_quad_shear.py --output /tmp/quad-shear.json --figure /tmp/quad-shear.png
uv run --locked python -B scripts/test.py test_quad_shear_validation

The report's checks_passed approves only these bounded research checks; inspect the recorded error for each method. It does not approve raw shear or enable the candidate for engineering results.

Opening benchmark: a 120 × 120 in plate, thickness 0.6 in, E=3600 ksi, nu=0.2, simply supported outer edges and a centred 40 × 40 in free opening, under -1e-7 kip/in². A separate Rayleigh–Ritz reference integrates the Kirchhoff bending energy over the outer rectangle minus the opening, using odd double-sine functions and analytic integrals. It imports neither Brecon nor PyNite. The intact-domain limit reproduces Navier. Increasing the reference from 11 × 11 to 13 × 13 modes changes the chosen deflections and patch means by less than 0.2%; conditioning and residuals are checked separately from FE comparisons. The energy formulation follows the plate-energy derivation, equations 5.9–5.11; Li et al. describe cutout-domain energy subtraction. The implementation here is a static reference, not that paper's vibration solver.

Both Quad and corrected Rect meshes use sizes 20, 10 and 5 in (32, 128 and 512 elements). Fine-mesh deflections at (40,60) and (20,60) are within 0.5% of the reference; area-weighted mean Mx/My/Mxy on the material patch [0,40] × [0,40] are within 1.5%. Successive deflection changes shrink, patch-moment error reduces, and net pressure/reaction equilibrium is checked. These are test tolerances for this thin symmetric case, not universal accuracy guarantees. No pointwise opening-corner stress, general/off-centre/multiple opening, orthotropic, thick-plate or curved-shell certification is implied.

Independent centred-opening plate refinement checks

Reproduce the numerical record and figure with:

uv run --locked python -B scripts/benchmark_plate_recovery.py --output /tmp/brecon-plate-benchmarks
uv run --locked python -B scripts/test.py test_plate_recovery

Mesh-specific checks:

uv run --locked --extra mcp python -B -m unittest discover -s tests -p '*mesh*.py' -v
uv run --locked --extra mcp python -B -m unittest discover -s tests -p '*plate*.py' -v
node tests/mesh_viewport.spec.cjs

The optional browser check uses an installed Playwright (PLAYWRIGHT_MODULE can point to it) and writes screenshots under /tmp/pynite-mesh-qa. It checks real generator geometry, nonblank desktop pixels, fit/orbit and bounded rebuilds.


Source: GUIDE.md. This manual follows the current repository; the published rc1 wheel has a smaller feature set.