Design¶
xdfem2D includes member/section design to the Eurocodes, driven by the analysis results and the load combinations you choose:
- Concrete — EN 1992-1-1 (EC2): reinforcement of rectangular bar sections and membrane (Wood/Baumann) reinforcement of concrete triangles, plus punching.
- Steel — EN 1993-1-1 (EC3): cross-section resistance and member buckling of steel-section members.
- Timber — EN 1995-1-1 (EC5): ULS member checks of timber-section members.
It is a design aid, not a substitute for engineering judgement: the concrete module covers rectangular sections in bending + shear, reports the required steel areas, and flags inadequate sections — it does not detail bars, check serviceability, or design columns for biaxial bending. See Licenses & Disclaimer for the full disclaimer that applies to every result the program produces, not just design.
Slabs and grillages
The bar design above applies to plane frames and grillage beams. For a
plate slab, the Wood–Armer (W-A) design moments (m*x,bot,
m*y,bot, m*x,top, m*y,top) are reported per triangle as results — the
orthogonal-reinforcement moments an EC2 slab check consumes. See
Slabs and Grillages.
Prerequisites¶
Before running a design, the model needs:
- Concrete sections — set the section's type to Concrete (Sections sub-tab). Only elements whose section is of type Concrete are designed.
- Material strengths — the section's material must carry a characteristic
concrete strength
fckand steel strengthfyk(in its design properties). See supported classes below. - A solved model — run the analysis first (F5); design uses the element force results.
- Combinations — design is performed for the load combinations (typically the ULS combinations); define them on the Combinations sub-tab or generate them with the automatic EN 1990 combinations.
Workflow¶
Everything lives in the Design menu (next to Analysis).
| Step | Menu | What it does |
|---|---|---|
| 1 | Design → Code preferences | Sets the code editions and partial factors — γc/γs/αcc (EC2), the γM factors (EC3/EC5), and the free-end buckling options. |
| 2 | Design → Design combinations | Picks which combinations are checked (default: all available). |
| 3 | Design → Buckling lengths… | Assigns the per-member buckling-length factors K for the steel/timber member checks. See Buckling lengths. |
| 4 | Design → Concrete/Steel/Timber… | Runs the chosen design and fills the Design results table (or the coloured design view). |
The Design menu items, after the two preferences entries and Buckling lengths…, are: Concrete Members (ULS), Concrete Members (SLS), Concrete Areas (ULS), Steel Members (ULS), Timber Members (ULS) and Punching….
Each concrete element is checked at its critical sections — both ends plus the span extremes of bending moment and shear — for every selected combination. The section requiring the most steel is marked as governing (★).
Design codes¶
The default design code per material is set in File → Preferences → Design (concrete, steel, timber). The available options come from the same registry as Design → Code preferences — so concrete and timber offer their code editions (e.g. EN 1992-1-1:2004 / EN 1992-1-1:2023, EN 1995-1-1:2004 / EN 1995-1-1:2025) and steel offers EN 1993-1-1.
The code that a design run uses is recorded inside the .x2d. When you reopen
a file that was already designed, its stored code takes precedence over the
preference default, so a model keeps the code it was designed with. The active code
is shown in the results header.
Buckling lengths¶
The steel (EC3 §6.3.3) and timber (EC5) member checks need the buckling length
of each physical member — a chain of collinear bars, identified automatically —
not of each bar. The buckling length is L_cr = K × member length, per axis:
K_y (major / in-plane), K_z (minor / out-of-plane) and K_LT (lateral
torsional).
Open Design → Buckling lengths… to reveal the Buckling side panel:
- The read-only table lists the members of the current canvas selection (expanded to whole physical members), with each bar's real length and the physical member length. Selecting a row highlights that member on the canvas.
- Load from selection replaces the table with the current selection; Add from
selection unions more members in; Load modified shows every member that
already carries a
Koverride. - Enter
K_y/K_z/K_LT(use.as the decimal separator) and press Apply to selected or Apply to all — the values are written to every bar of the target members. Reset default clears the override (the member then follows the global default). OK closes the panel.
The model is 2D
Because the model is planar, xdfem2D cannot see the out-of-plane bracing. By
default K_z uses the same member length as K_y (both default to 1.0), so
the out-of-plane length equals the in-plane one unless you set K_z. Set
the per-member K_z to reflect the real out-of-plane restraint.
Free-end members (cantilevers)¶
When a physical member has a truly free end — a boundary node with nothing
attached (no support, spring, other bar, triangle or constraint) — xdfem2D treats
it as a cantilever and applies an automatic K to K_y and K_z (a free tip
is unrestrained in both planes). K_LT is left on the global default. An explicit
override you set always wins. Such members are flagged with a ⚑ in the Buckling
table.
The behaviour is controlled in Design → Code preferences, group Buckling —
free-end members (cantilevers): Auto K for a free (cantilever) end (on by
default) and K for a free end (default 2.0; set e.g. 2.2 to allow for
imperfect base fixity).
Steel members (EC3)¶
Design → Steel Members (ULS) runs the EN 1993-1-1 §6.2 (cross-section
resistance: N, M_y, M_z, V, T) and §6.3.3 (member flexural + lateral
torsional buckling) checks, once per physical member, over the selected
combinations. Members need a section whose material is Steel and a supported
shape (I, RHS/SHS, CHS). Results colour the Steel design view by utilisation
and fill the Design table; the buckling lengths come from the K factors above.
Timber members (EC5)¶
Design → Timber Members (ULS) runs the EN 1995-1-1 ULS checks (N + M_y + M_z,
V + T and the interactions, with the compression / LTB stability factors) once
per physical member. The buckling lengths are obtained exactly like steel — same
physical-member K factors. Results colour the Timber design view by ratio.
Timber beams (pitched, tapered, curved)¶
Design → Timber beams… opens the Beams panel in timber mode. Select the bars of a beam (they need not be collinear — a ridge or an arc is fine), press Assign to beam, and the design treats them as one member — or press Detect beams automatically… to have the chains of timber bars proposed (up to 45° from the horizontal, a ridge or an arc included; posts and columns are never proposed) and accept them. The list follows the beams: grouped, bottom to top and left to right, and along each beam from its left end. Draw the beam with the depth you want in each bar; nothing is generated, the design reads it:
- the depth along the beam (a taper or a step), and which edge is inclined to the grain;
- the ridge (apex) and, for an arc, its radius.
The panel shows what was read and lets you override what cannot be read: the spacing of the lateral restraints, the lamination thickness, the inner radius, the type, the inclined edge and the depth change. These parameters are design-only, so the analysis results are kept; re-run Timber Members (ULS) to apply them. The table gains the Type, Taper (§6.4.2) and Apex (§6.4.3: bending, tension perpendicular to the grain, and its interaction with shear) columns. Use enough bars along a taper: a warning appears when the depth jumps between neighbouring bars by more than the Code-preferences limit.
Below the table the elevation draws the beam as modelled, coloured by the utilisation at each position, with curves of N+M, shear, tapered edge and apex along its length. The calculation report of the member adds the geometry read from the bars and, step by step, each EN 1995-1-1 §6.4 check at the point where it governs. The apex clause (§6.4.3) applies to glued laminated timber and LVL only; for other products a warning is shown. Both code editions are implemented (EN 1995-1-1:2004 §6.4 and EN 1995-1-1:2025 §8.3.3–§8.3.4, chosen in Code preferences); the 2025 edition also notes when reinforcement against tension perpendicular to the grain is advised (optional). If you tick Apex reinforced for the beam, the unreinforced checks of the tension perpendicular to the grain and its interaction with shear do not apply (§8.3.4.2(1)); the result gives the force the reinforcement must carry (per metre of beam, and per element if you give the spacing a1). If you also give the bonded-on plane reinforcement (width, thickness, tensile and bond-line design strengths, and optionally the reinforced length and the number per element), its resistance is verified element by element (Eqs. 8.48–8.51). For screws and rods (fully threaded screws, rods with wood screw thread, bonded-in rods) give the diameter, inner diameter, steel strength; the partial factors γ_R = 1.30 and γ_M2 = 1.25 (Table 4.4) are used unless you give others: the resistance follows §11.2.2 with the reinforced length as withdrawal length. The spacing limits of §8.3.4.2(4) and the limits of Table 11.2 are reported as warnings.
Reading the results¶
The Design results panel lists one row per critical section / combination:
| Column | Meaning |
|---|---|
| Element, Combination, Location | which member, combination and section |
| Reason | why the section was checked (end, M⁺/M⁻ peak, V peak) |
| M_Ed, N_Ed, V_Ed | design action effects at that section |
| As,bot / As,top [cm²] | required tension- and compression-face steel |
| Asw/s [cm²/m] | required shear reinforcement (stirrup area per metre) |
| cot θ | strut inclination used by the variable-angle truss |
| Strut | concrete strut crushing limit VRd,max |
| Gov. | ★ marks the governing section of each element |
On the canvas you can also display the reinforcement envelopes along each member: the required longitudinal steel (As) view and the shear-reinforcement view show the maximum required steel along the span, enveloped over the selected design combinations.
Design report¶
Design → Design report… opens a Design report side panel (a tab in the left dock, like the Punching and Buckling workbenches) that produces a full, step-by-step calculation report — every partial result, the code clause, the symbolic expression and the numeric substitution — for the checks the engine actually ran. The panel is read-only with respect to the model, so it can be used on a locked model.
Controls:
- Material — lists only the design kinds present in the model: Steel members (EC3), Timber members (EC5), Concrete members (EC2) (bars / grillage), Concrete areas (EC2) (membrane / slab triangles) and Punching (EC2).
- Scope — Whole model or Current selection (defaults to the current canvas selection). Selecting a row in the summary table highlights that member / element / column / triangle on the canvas.
- Detail — Envelope (governing) gives one report per member (the governing case across the chosen combinations); Per combination gives one report per member and combination.
- Combinations — a multi-select; nothing selected means all available.
- Format — HTML (self-contained, with MathJax equations and a linked
table of contents), PDF (composed pages with typeset equations and the
section figure), Word (
.docx, equations as images, or native editable OMML when pandoc is installed) and Markdown (with a sibling assets folder for the figures).
Preview renders the HTML and opens it; Export… saves in the chosen format. Each report embeds a small cross-section drawing (rectangle for concrete/timber, and the I / RHS / SHS / CHS outline for steel profiles).
Report tools (pandoc / Ollama)¶
Editable Word equations use pandoc, and the local AI assistant uses Ollama — both optional external tools. Preferences → Dependencies shows whether each is installed, explains what it unlocks, and offers the per-OS install command (copy or run). Without them the app still works: Word equations fall back to images, and the assistant uses the remote providers you configure.
Method (EC2)¶
Flexure. Rectangular sections are designed for the dimensionless moment
μ = M_Ed / (b·d²·fcd), giving the tension steel As; when μ exceeds the
singly-reinforced limit, compression steel is added. The effective depth is
d = h − cover. Minimum and maximum steel ratios follow EC2 §9.2.1.
Shear. The concrete resistance VRd,c (EC2 §6.2.2) is checked first. When the
shear exceeds it, the variable-angle truss model (§6.2.3) is used: the strut
angle is swept from cot θ = 2.5 (θ ≈ 21.8°) down to cot θ = 1.0 (θ = 45°),
choosing the flattest strut the concrete can carry so the stirrup demand Asw/s is
minimised, while respecting the strut-crushing limit VRd,max. If the section
crushes even at θ = 45°, it is reported as inadequate in shear at the crushing
limit. The truss and VRd,c formulas are delegated to eurocodepy.
All partial safety factors come from the Code-preferences dialog:
fcd = αcc·fck/γc and fyd = fyk/γs.
Material strengths¶
Strengths are looked up from the standard class strings:
- Concrete
fck[MPa]: C12/15, C16/20, C20/25, C25/30, C30/37, C35/45, C40/50, C45/55, C50/60 (a bareC30form is also accepted). - Steel
fyk[MPa]: A400 / A500 (and the B/S400, B/S500 variants).
SAP2000 interchange¶
When you export to SAP2000, concrete materials are written as Eurocode 2-2004
design data (concrete strength, a rebar material, per-frame design procedure,
section cover and the EC2 preferences), and the load combinations are marked for
concrete design. Importing a .s2k reads this back. See
Exporting → SAP2000.
Limitations¶
- Rectangular sections only; flexure about the in-plane axis plus shear.
- ULS reinforcement only — no SLS (crack/deflection) checks and no bar detailing.
- Columns are not designed for axial + biaxial bending interaction.